diff options
author | Minteck <contact@minteck.org> | 2022-06-04 08:51:19 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-06-04 08:51:19 +0200 |
commit | b22f6770c8bd084d66950655203c61dd701b3d90 (patch) | |
tree | 873d7fb19584ec2709b95cc1ca05a1fc7cfd0fc4 /node_modules/dot-prop/index.js | |
parent | 383285ecd5292bf9a825e05904955b937de84cc9 (diff) | |
download | equestriadb-b22f6770c8bd084d66950655203c61dd701b3d90.tar.gz equestriadb-b22f6770c8bd084d66950655203c61dd701b3d90.tar.bz2 equestriadb-b22f6770c8bd084d66950655203c61dd701b3d90.zip |
Remove node_modules
Diffstat (limited to 'node_modules/dot-prop/index.js')
-rw-r--r-- | node_modules/dot-prop/index.js | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/node_modules/dot-prop/index.js b/node_modules/dot-prop/index.js deleted file mode 100644 index a90f599..0000000 --- a/node_modules/dot-prop/index.js +++ /dev/null @@ -1,142 +0,0 @@ -'use strict'; -const isObj = require('is-obj'); - -const disallowedKeys = [ - '__proto__', - 'prototype', - 'constructor' -]; - -const isValidPath = pathSegments => !pathSegments.some(segment => disallowedKeys.includes(segment)); - -function getPathSegments(path) { - const pathArray = path.split('.'); - const parts = []; - - for (let i = 0; i < pathArray.length; i++) { - let p = pathArray[i]; - - while (p[p.length - 1] === '\\' && pathArray[i + 1] !== undefined) { - p = p.slice(0, -1) + '.'; - p += pathArray[++i]; - } - - parts.push(p); - } - - if (!isValidPath(parts)) { - return []; - } - - return parts; -} - -module.exports = { - get(object, path, value) { - if (!isObj(object) || typeof path !== 'string') { - return value === undefined ? object : value; - } - - const pathArray = getPathSegments(path); - if (pathArray.length === 0) { - return; - } - - for (let i = 0; i < pathArray.length; i++) { - if (!Object.prototype.propertyIsEnumerable.call(object, pathArray[i])) { - return value; - } - - object = object[pathArray[i]]; - - if (object === undefined || object === null) { - // `object` is either `undefined` or `null` so we want to stop the loop, and - // if this is not the last bit of the path, and - // if it did't return `undefined` - // it would return `null` if `object` is `null` - // but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null` - if (i !== pathArray.length - 1) { - return value; - } - - break; - } - } - - return object; - }, - - set(object, path, value) { - if (!isObj(object) || typeof path !== 'string') { - return object; - } - - const root = object; - const pathArray = getPathSegments(path); - - for (let i = 0; i < pathArray.length; i++) { - const p = pathArray[i]; - - if (!isObj(object[p])) { - object[p] = {}; - } - - if (i === pathArray.length - 1) { - object[p] = value; - } - - object = object[p]; - } - - return root; - }, - - delete(object, path) { - if (!isObj(object) || typeof path !== 'string') { - return false; - } - - const pathArray = getPathSegments(path); - - for (let i = 0; i < pathArray.length; i++) { - const p = pathArray[i]; - - if (i === pathArray.length - 1) { - delete object[p]; - return true; - } - - object = object[p]; - - if (!isObj(object)) { - return false; - } - } - }, - - has(object, path) { - if (!isObj(object) || typeof path !== 'string') { - return false; - } - - const pathArray = getPathSegments(path); - if (pathArray.length === 0) { - return false; - } - - // eslint-disable-next-line unicorn/no-for-loop - for (let i = 0; i < pathArray.length; i++) { - if (isObj(object)) { - if (!(pathArray[i] in object)) { - return false; - } - - object = object[pathArray[i]]; - } else { - return false; - } - } - - return true; - } -}; |