definitely
Advanced tools
Comparing version 1.0.5 to 1.0.6
@@ -1,2 +0,2 @@ | ||
'use strict';Object.defineProperty(exports,'__esModule',{value:true});exports.default=function(obj){return new Proxy(obj,{get:function get(target,key){if(!(key in target)){var err=new Error('attempted to access nonexistent property `'+key+'`');err.stack=err.stack.replace(/(\n\s*at[^\n]*){2}/,'');throw err}return target[key]}})}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlZmluaXRlbHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6InNGQUFlLFNBQUEsR0FBRyxTQUFJLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBRSxDQUNuQyxHQUFHLGNBQUMsTUFBTSxDQUFFLEdBQUcsQ0FBRSxDQUNmLEdBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFBLEFBQUMsQ0FBRSxDQUNwQixJQUFNLEdBQUcsQ0FBRyxJQUFJLEtBQUssOENBQStDLEdBQUcsS0FBSyxDQUFBLEFBQzVFLEdBQUcsQ0FBQyxLQUFLLENBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUUsRUFBRSxDQUFDLENBQUEsQUFDdkQsTUFBTSxHQUFHLENBQUEsQUFDVixBQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLEFBQ25CLENBQ0YsQ0FBQyxDQUFBIiwiZmlsZSI6ImRlZmluaXRlbHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBvYmogPT4gbmV3IFByb3h5KG9iaiwge1xuICBnZXQodGFyZ2V0LCBrZXkpIHtcbiAgICBpZiAoIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBhdHRlbXB0ZWQgdG8gYWNjZXNzIG5vbmV4aXN0ZW50IHByb3BlcnR5IFxcYCR7a2V5fVxcYGApXG4gICAgICBlcnIuc3RhY2sgPSBlcnIuc3RhY2sucmVwbGFjZSgvKFxcblxccyphdFteXFxuXSopezJ9LywgJycpXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldFtrZXldXG4gIH1cbn0pXG4iXX0= | ||
'use strict';Object.defineProperty(exports,'__esModule',{value:true});exports.default=function(obj){var _ref=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];var _ref$whitelist=_ref.whitelist;var whitelist=_ref$whitelist===undefined?[]:_ref$whitelist;var whiteset={};for(var i=0;i<whitelist.length;i++){whiteset[whitelist[i]]=null}if(typeof Proxy==='undefined')return obj;return new Proxy(obj,{get:function get(target,key){if(!(key in target||key in whiteset)){var err=new Error('attempted to access nonexistent property `'+key+'`');err.stack=err.stack.replace(/(\n\s*at[^\n]*){2}/,'');throw err}return target[key]}})}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlZmluaXRlbHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6InNGQUFlLFNBQ2IsR0FBRyxDQUlBLHdEQURDLEVBQUUsc0NBREosU0FBUyxLQUFULFNBQVMsNEJBQUcsRUFBRSxnQkFJaEIsSUFBTSxRQUFRLENBQUcsRUFBRSxDQUFBLEFBQ25CLElBQUssSUFBSSxDQUFDLENBQUcsQ0FBQyxDQUFFLENBQUMsQ0FBRyxTQUFTLENBQUMsTUFBTSxDQUFFLENBQUMsRUFBRSxFQUN2QyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUcsSUFBSSxDQUFBLEFBRS9CLEdBQUksT0FBTyxLQUFLLEdBQUssV0FBVyxDQUM5QixPQUFPLEdBQUcsQ0FBQSxBQUVaLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFFLENBQ3BCLEdBQUcsY0FBQyxNQUFNLENBQUUsR0FBRyxDQUFFLENBQ2YsR0FBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLEVBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQSxBQUFDLENBQUUsQ0FDdkMsSUFBTSxHQUFHLENBQUcsSUFBSSxLQUFLLDhDQUErQyxHQUFHLEtBQUssQ0FBQSxBQUM1RSxHQUFHLENBQUMsS0FBSyxDQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFFLEVBQUUsQ0FBQyxDQUFBLEFBQ3ZELE1BQU0sR0FBRyxDQUFBLEFBQ1YsQUFDRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQSxBQUNuQixDQUNGLENBQUMsQ0FBQSxBQUNIIiwiZmlsZSI6ImRlZmluaXRlbHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCAoXG4gIG9iaixcbiAge1xuICAgIHdoaXRlbGlzdCA9IFtdXG4gIH0gPSB7fVxuKSA9PiB7XG5cbiAgY29uc3Qgd2hpdGVzZXQgPSB7fVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHdoaXRlbGlzdC5sZW5ndGg7IGkrKylcbiAgICB3aGl0ZXNldFt3aGl0ZWxpc3RbaV1dID0gbnVsbFxuXG4gIGlmICh0eXBlb2YgUHJveHkgPT09ICd1bmRlZmluZWQnKVxuICAgIHJldHVybiBvYmpcblxuICByZXR1cm4gbmV3IFByb3h5KG9iaiwge1xuICAgIGdldCh0YXJnZXQsIGtleSkge1xuICAgICAgaWYgKCEoa2V5IGluIHRhcmdldCB8fCBrZXkgaW4gd2hpdGVzZXQpKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgYXR0ZW1wdGVkIHRvIGFjY2VzcyBub25leGlzdGVudCBwcm9wZXJ0eSBcXGAke2tleX1cXGBgKVxuICAgICAgICBlcnIuc3RhY2sgPSBlcnIuc3RhY2sucmVwbGFjZSgvKFxcblxccyphdFteXFxuXSopezJ9LywgJycpXG4gICAgICAgIHRocm93IGVyclxuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldFtrZXldXG4gICAgfVxuICB9KVxufVxuIl19 |
{ | ||
"name": "definitely", | ||
"version": "1.0.5", | ||
"version": "1.0.6", | ||
"description": "Disallow undefined property access in JavaScript", | ||
@@ -5,0 +5,0 @@ "main": "definitely.js", |
@@ -1,10 +0,25 @@ | ||
export default obj => new Proxy(obj, { | ||
get(target, key) { | ||
if (!(key in target)) { | ||
const err = new Error(`attempted to access nonexistent property \`${key}\``) | ||
err.stack = err.stack.replace(/(\n\s*at[^\n]*){2}/, '') | ||
throw err | ||
export default ( | ||
obj, | ||
{ | ||
whitelist = [] | ||
} = {} | ||
) => { | ||
const whiteset = {} | ||
for (let i = 0; i < whitelist.length; i++) | ||
whiteset[whitelist[i]] = null | ||
if (typeof Proxy === 'undefined') | ||
return obj | ||
return new Proxy(obj, { | ||
get(target, key) { | ||
if (!(key in target || key in whiteset)) { | ||
const err = new Error(`attempted to access nonexistent property \`${key}\``) | ||
err.stack = err.stack.replace(/(\n\s*at[^\n]*){2}/, '') | ||
throw err | ||
} | ||
return target[key] | ||
} | ||
return target[key] | ||
} | ||
}) | ||
}) | ||
} |
@@ -5,4 +5,2 @@ import { expect } from 'chai' | ||
global.Proxy = require('harmony-proxy') | ||
describe('definitely', () => { | ||
@@ -16,2 +14,10 @@ const obj = { | ||
before(() => { | ||
global.Proxy = require('harmony-proxy') | ||
}) | ||
after(() => { | ||
delete global.Proxy | ||
}) | ||
it('allows valid property access', () => { | ||
@@ -33,2 +39,13 @@ for (const key in obj) | ||
}) | ||
it('allows invalid properties that are whitelisted', () => { | ||
const key = 'blip' | ||
expect(definitely(obj, { whitelist: [key] })[key]).to.equal(undefined) | ||
}) | ||
}) | ||
describe('definitely without Proxy', () => { | ||
it('is a noop', () => { | ||
expect(definitely({}).meh).to.equal(undefined) | ||
}) | ||
}) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8053
73