package/package.json000644 001750 001750 0000001431 12021305432013006 0ustar00000000 000000 { "name" : "deep-freeze", "version" : "0.0.1", "description" : "recursively Object.freeze() objects and functions", "main" : "index.js", "directories" : { "example" : "example", "test" : "test" }, "devDependencies" : { "tap" : "~0.3.0" }, "scripts" : { "test" : "tap test/*.js" }, "repository" : { "type" : "git", "url" : "git://github.com/substack/deep-freeze.git" }, "homepage" : "https://github.com/substack/deep-freeze", "keywords" : [ "freeze", "deep", "object", "recursive" ], "author" : { "name" : "James Halliday", "email" : "mail@substack.net", "url" : "http://substack.net" }, "license" : "public domain" } package/LICENSE000644 001750 001750 0000000376 12021304752011540 0ustar00000000 000000 This software is released to the public domain. It is based in part on the deepFreeze function from: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/freeze https://developer.mozilla.org/en-US/docs/Project:Copyrights package/index.js000644 001750 001750 0000000524 12021305424012170 0ustar00000000 000000 module.exports = function deepFreeze (o) { Object.freeze(o); Object.getOwnPropertyNames(o).forEach(function (prop) { if (o.hasOwnProperty(prop) && o[prop] !== null && (typeof o[prop] === "object" || typeof o[prop] === "function") && !Object.isFrozen(o[prop])) { deepFreeze(o[prop]); } }); return o; }; package/example/deep.js000644 001750 001750 0000000261 12021301575013432 0ustar00000000 000000 var deepFreeze = require('../'); deepFreeze(Buffer); Buffer.x = 5; console.log(Buffer.x === undefined); Buffer.prototype.z = 3; console.log(Buffer.prototype.z === undefined); package/readme.markdown000644 001750 001750 0000001623 12021305105013521 0ustar00000000 000000 # deep-freeze recursively `Object.freeze()` objects [![build status](https://secure.travis-ci.org/substack/deep-freeze.png)](http://travis-ci.org/substack/deep-freeze) # example ``` js var deepFreeze = require('deep-freeze'); deepFreeze(Buffer); Buffer.x = 5; console.log(Buffer.x === undefined); Buffer.prototype.z = 3; console.log(Buffer.prototype.z === undefined); ``` *** ``` $ node example/deep.js true true ``` # methods ``` js var deepFreeze = require('deep-freeze') ``` ## deepFreeze(obj) Call `Object.freeze(obj)` recursively on all unfrozen properties of `obj` that are functions or objects. # license public domain Based in part on the code snippet from [the MDN wiki page on Object.freeze()](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/freeze), which [is released to the public domain](https://developer.mozilla.org/en-US/docs/Project:Copyrights). package/test/deep.js000644 001750 001750 0000000426 12021304526012760 0ustar00000000 000000 var test = require('tap').test; var deepFreeze = require('../'); test('deep freeze', function (t) { t.plan(2); deepFreeze(Buffer); Buffer.x = 5; t.equal(Buffer.x, undefined); Buffer.prototype.z = 3; t.equal(Buffer.prototype.z, undefined); }); package/.travis.yml000644 001750 001750 0000000053 12021305073012631 0ustar00000000 000000 language: node_js node_js: - 0.6 - 0.8