object-hash-strict
Advanced tools
Comparing version 1.1.2 to 1.2.0
@@ -0,1 +1,5 @@ | ||
const assert = require('assert'); | ||
const get = require('lodash.get'); | ||
const objectHash = require('object-hash'); | ||
@@ -6,16 +10,18 @@ | ||
const INVALID = [undefined]; | ||
const scanner = objectScan(['**'], { | ||
const scanner = (obj, allowedUndefined) => objectScan(['**'], { | ||
filterFn: (key, value) => { | ||
if (INVALID.includes(value)) { | ||
if (INVALID.includes(value) && !allowedUndefined.includes(key)) { | ||
throw new Error(`Bad value "${value}" for key "${key}" detected`); | ||
} | ||
} | ||
}); | ||
})(obj); | ||
const validateObject = obj => { | ||
scanner(obj); | ||
const validateObject = (obj, allowedUndefined) => { | ||
assert(Array.isArray(allowedUndefined), 'Invalid Option Provided'); | ||
scanner(obj, allowedUndefined); | ||
return obj; | ||
}; | ||
const wrap = fn => (object, ...args) => fn(validateObject(object), ...args); | ||
const wrap = fn => (object, ...args) => fn(validateObject(object, get(args[0], 'allowedUndefined', [])), ...args); | ||
@@ -25,2 +31,2 @@ module.exports = Object.entries(objectHash).reduce((p, [k, v]) => Object.assign(p, { | ||
}), wrap(objectHash)); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJvYmplY3RIYXNoIiwicmVxdWlyZSIsIm9iamVjdFNjYW4iLCJJTlZBTElEIiwidW5kZWZpbmVkIiwic2Nhbm5lciIsImZpbHRlckZuIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsIkVycm9yIiwidmFsaWRhdGVPYmplY3QiLCJvYmoiLCJ3cmFwIiwiZm4iLCJvYmplY3QiLCJhcmdzIiwibW9kdWxlIiwiZXhwb3J0cyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJwIiwiayIsInYiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFVBQVUsR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUExQjs7QUFFQSxNQUFNRSxPQUFPLEdBQUcsQ0FBQ0MsU0FBRCxDQUFoQjtBQUNBLE1BQU1DLE9BQU8sR0FBR0gsVUFBVSxDQUFDLENBQUMsSUFBRCxDQUFELEVBQVM7QUFDakNJLEVBQUFBLFFBQVEsRUFBRSxDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FBZ0I7QUFDeEIsUUFBSUwsT0FBTyxDQUFDTSxRQUFSLENBQWlCRCxLQUFqQixDQUFKLEVBQTZCO0FBQzNCLFlBQU0sSUFBSUUsS0FBSixDQUFXLGNBQWFGLEtBQU0sY0FBYUQsR0FBSSxZQUEvQyxDQUFOO0FBQ0Q7QUFDRjtBQUxnQyxDQUFULENBQTFCOztBQVFBLE1BQU1JLGNBQWMsR0FBSUMsR0FBRCxJQUFTO0FBQzlCUCxFQUFBQSxPQUFPLENBQUNPLEdBQUQsQ0FBUDtBQUNBLFNBQU9BLEdBQVA7QUFDRCxDQUhEOztBQUtBLE1BQU1DLElBQUksR0FBSUMsRUFBRCxJQUFRLENBQUNDLE1BQUQsRUFBUyxHQUFHQyxJQUFaLEtBQXFCRixFQUFFLENBQUNILGNBQWMsQ0FBQ0ksTUFBRCxDQUFmLEVBQXlCLEdBQUdDLElBQTVCLENBQTVDOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLE1BQU0sQ0FDcEJDLE9BRGMsQ0FDTnBCLFVBRE0sRUFFZHFCLE1BRmMsQ0FHYixDQUFDQyxDQUFELEVBQUksQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLENBQUosS0FBZUwsTUFBTSxDQUFDTSxNQUFQLENBQWNILENBQWQsRUFBaUI7QUFBRSxHQUFDQyxDQUFELEdBQUtWLElBQUksQ0FBQ1csQ0FBRDtBQUFYLENBQWpCLENBSEYsRUFJYlgsSUFBSSxDQUFDYixVQUFELENBSlMsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBvYmplY3RIYXNoID0gcmVxdWlyZSgnb2JqZWN0LWhhc2gnKTtcbmNvbnN0IG9iamVjdFNjYW4gPSByZXF1aXJlKCdvYmplY3Qtc2NhbicpO1xuXG5jb25zdCBJTlZBTElEID0gW3VuZGVmaW5lZF07XG5jb25zdCBzY2FubmVyID0gb2JqZWN0U2NhbihbJyoqJ10sIHtcbiAgZmlsdGVyRm46IChrZXksIHZhbHVlKSA9PiB7XG4gICAgaWYgKElOVkFMSUQuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCB2YWx1ZSBcIiR7dmFsdWV9XCIgZm9yIGtleSBcIiR7a2V5fVwiIGRldGVjdGVkYCk7XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgdmFsaWRhdGVPYmplY3QgPSAob2JqKSA9PiB7XG4gIHNjYW5uZXIob2JqKTtcbiAgcmV0dXJuIG9iajtcbn07XG5cbmNvbnN0IHdyYXAgPSAoZm4pID0+IChvYmplY3QsIC4uLmFyZ3MpID0+IGZuKHZhbGlkYXRlT2JqZWN0KG9iamVjdCksIC4uLmFyZ3MpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdFxuICAuZW50cmllcyhvYmplY3RIYXNoKVxuICAucmVkdWNlKFxuICAgIChwLCBbaywgdl0pID0+IE9iamVjdC5hc3NpZ24ocCwgeyBba106IHdyYXAodikgfSksXG4gICAgd3JhcChvYmplY3RIYXNoKVxuICApO1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJhc3NlcnQiLCJyZXF1aXJlIiwiZ2V0Iiwib2JqZWN0SGFzaCIsIm9iamVjdFNjYW4iLCJJTlZBTElEIiwidW5kZWZpbmVkIiwic2Nhbm5lciIsIm9iaiIsImFsbG93ZWRVbmRlZmluZWQiLCJmaWx0ZXJGbiIsImtleSIsInZhbHVlIiwiaW5jbHVkZXMiLCJFcnJvciIsInZhbGlkYXRlT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5Iiwid3JhcCIsImZuIiwib2JqZWN0IiwiYXJncyIsIm1vZHVsZSIsImV4cG9ydHMiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwicCIsImsiLCJ2IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBQ0EsTUFBTUUsVUFBVSxHQUFHRixPQUFPLENBQUMsYUFBRCxDQUExQjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1JLE9BQU8sR0FBRyxDQUFDQyxTQUFELENBQWhCOztBQUNBLE1BQU1DLE9BQU8sR0FBRyxDQUFDQyxHQUFELEVBQU1DLGdCQUFOLEtBQTJCTCxVQUFVLENBQUMsQ0FBQyxJQUFELENBQUQsRUFBUztBQUM1RE0sRUFBQUEsUUFBUSxFQUFFLENBQUNDLEdBQUQsRUFBTUMsS0FBTixLQUFnQjtBQUN4QixRQUFJUCxPQUFPLENBQUNRLFFBQVIsQ0FBaUJELEtBQWpCLEtBQTJCLENBQUNILGdCQUFnQixDQUFDSSxRQUFqQixDQUEwQkYsR0FBMUIsQ0FBaEMsRUFBZ0U7QUFDOUQsWUFBTSxJQUFJRyxLQUFKLENBQVcsY0FBYUYsS0FBTSxjQUFhRCxHQUFJLFlBQS9DLENBQU47QUFDRDtBQUNGO0FBTDJELENBQVQsQ0FBVixDQU14Q0gsR0FOd0MsQ0FBM0M7O0FBUUEsTUFBTU8sY0FBYyxHQUFHLENBQUNQLEdBQUQsRUFBTUMsZ0JBQU4sS0FBMkI7QUFDaERULEVBQUFBLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQ0MsT0FBTixDQUFjUixnQkFBZCxDQUFELEVBQWtDLHlCQUFsQyxDQUFOO0FBQ0FGLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNQyxnQkFBTixDQUFQO0FBQ0EsU0FBT0QsR0FBUDtBQUNELENBSkQ7O0FBTUEsTUFBTVUsSUFBSSxHQUFJQyxFQUFELElBQVEsQ0FBQ0MsTUFBRCxFQUFTLEdBQUdDLElBQVosS0FBcUJGLEVBQUUsQ0FBQ0osY0FBYyxDQUFDSyxNQUFELEVBQVNsQixHQUFHLENBQUNtQixJQUFJLENBQUMsQ0FBRCxDQUFMLEVBQVUsa0JBQVYsRUFBOEIsRUFBOUIsQ0FBWixDQUFmLEVBQStELEdBQUdBLElBQWxFLENBQTVDOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLE1BQU0sQ0FDcEJDLE9BRGMsQ0FDTnRCLFVBRE0sRUFFZHVCLE1BRmMsQ0FHYixDQUFDQyxDQUFELEVBQUksQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLENBQUosS0FBZUwsTUFBTSxDQUFDTSxNQUFQLENBQWNILENBQWQsRUFBaUI7QUFBRSxHQUFDQyxDQUFELEdBQUtWLElBQUksQ0FBQ1csQ0FBRDtBQUFYLENBQWpCLENBSEYsRUFJYlgsSUFBSSxDQUFDZixVQUFELENBSlMsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ2xvZGFzaC5nZXQnKTtcbmNvbnN0IG9iamVjdEhhc2ggPSByZXF1aXJlKCdvYmplY3QtaGFzaCcpO1xuY29uc3Qgb2JqZWN0U2NhbiA9IHJlcXVpcmUoJ29iamVjdC1zY2FuJyk7XG5cbmNvbnN0IElOVkFMSUQgPSBbdW5kZWZpbmVkXTtcbmNvbnN0IHNjYW5uZXIgPSAob2JqLCBhbGxvd2VkVW5kZWZpbmVkKSA9PiBvYmplY3RTY2FuKFsnKionXSwge1xuICBmaWx0ZXJGbjogKGtleSwgdmFsdWUpID0+IHtcbiAgICBpZiAoSU5WQUxJRC5pbmNsdWRlcyh2YWx1ZSkgJiYgIWFsbG93ZWRVbmRlZmluZWQuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgdmFsdWUgXCIke3ZhbHVlfVwiIGZvciBrZXkgXCIke2tleX1cIiBkZXRlY3RlZGApO1xuICAgIH1cbiAgfVxufSkob2JqKTtcblxuY29uc3QgdmFsaWRhdGVPYmplY3QgPSAob2JqLCBhbGxvd2VkVW5kZWZpbmVkKSA9PiB7XG4gIGFzc2VydChBcnJheS5pc0FycmF5KGFsbG93ZWRVbmRlZmluZWQpLCAnSW52YWxpZCBPcHRpb24gUHJvdmlkZWQnKTtcbiAgc2Nhbm5lcihvYmosIGFsbG93ZWRVbmRlZmluZWQpO1xuICByZXR1cm4gb2JqO1xufTtcblxuY29uc3Qgd3JhcCA9IChmbikgPT4gKG9iamVjdCwgLi4uYXJncykgPT4gZm4odmFsaWRhdGVPYmplY3Qob2JqZWN0LCBnZXQoYXJnc1swXSwgJ2FsbG93ZWRVbmRlZmluZWQnLCBbXSkpLCAuLi5hcmdzKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3RcbiAgLmVudHJpZXMob2JqZWN0SGFzaClcbiAgLnJlZHVjZShcbiAgICAocCwgW2ssIHZdKSA9PiBPYmplY3QuYXNzaWduKHAsIHsgW2tdOiB3cmFwKHYpIH0pLFxuICAgIHdyYXAob2JqZWN0SGFzaClcbiAgKTtcbiJdfQ== |
{ | ||
"name": "object-hash-strict", | ||
"version": "1.1.2", | ||
"version": "1.2.0", | ||
"description": "Wrapper around object-hash that restricts allowed values", | ||
@@ -103,2 +103,3 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"lodash.get": "4.4.2", | ||
"object-hash": "1.3.1", | ||
@@ -105,0 +106,0 @@ "object-scan": "10.0.10" |
@@ -24,2 +24,13 @@ # object-hash-strict | ||
## Additional Options | ||
The following options can be provided on top of the existing `object-hash` options. | ||
### allowedUndefined | ||
Type: `Array`<br> | ||
Default: `[]` | ||
Provide list of keys that are allowed to be undefined. | ||
## How it's different from object-hash | ||
@@ -26,0 +37,0 @@ |
10024
21
41
3
+ Addedlodash.get@4.4.2
+ Addedlodash.get@4.4.2(transitive)