https://github.com/exodusmovement/proxy-freeze
A simple way to freeze JavaScript objects and know of attempted modifications
https://github.com/exodusmovement/proxy-freeze
Last synced: about 1 year ago
JSON representation
A simple way to freeze JavaScript objects and know of attempted modifications
- Host: GitHub
- URL: https://github.com/exodusmovement/proxy-freeze
- Owner: ExodusMovement
- License: mit
- Archived: true
- Created: 2016-11-25T11:52:49.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-02-01T12:36:11.000Z (over 3 years ago)
- Last Synced: 2025-03-27T14:26:00.648Z (about 1 year ago)
- Language: JavaScript
- Size: 5.86 KB
- Stars: 5
- Watchers: 14
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
proxy-freeze
=============
[![npm][npm-image]][npm-url]
[![travis][travis-image]][travis-url]
[![standard][standard-image]][standard-url]
[npm-image]: https://img.shields.io/npm/v/proxy-freeze.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/proxy-freeze
[travis-image]: https://img.shields.io/travis/jprichardson/proxy-freeze.svg?style=flat-square
[travis-url]: https://travis-ci.org/jprichardson/proxy-freeze
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: http://npm.im/standard
A simple way to freeze JavaScript objects and know of attempted modifications.
Why?
----
Why not just use [Object.freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) and [Object.isFrozen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen)?
If you use `Object.freeze` and later set a property on that object, it silently fails unless in `strict` mode. Also, using this technique gives you the ability to listen for warnings on the `warning` event.
Install
-------
npm install --save proxy-freeze
Usage
-----
### proxyFreeze(target, options)
- **target**: can be either an `object` or constructor `function`
- **options**
- **addProxyIdentifier**: `boolean`, adds a symbol getter that detects Proxies created via this method. Defaults to `false`.
- **preventRefreeze**: `boolean`, uses symbol added via `addProxyIdentifier` to identify frozen Proxies and doesn't re-freeze them. Defaults to `false`.
```js
const obj = {
name: 'jp'
}
const obj2 = proxyFreeze(obj)
obj2.name = 'bob'
process.once('warning', (warning) => {
console.warn(warning.name) // => ProxyFreezeWarning
console.warn(warning.message) // => Trying to set value of property (name) of frozen object.
console.warn(warning.stack)
})
```
License
-------
[MIT](LICENSE.md)