You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

object-hash-strict

Package Overview
Dependencies
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.1.2 to 1.2.0

20

lib/index.js

@@ -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 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc