object-delete-key
Advanced tools
Comparing version 3.0.5 to 3.0.6
/** | ||
* @name object-delete-key | ||
* @fileoverview Delete keys from all arrays or plain objects, nested within anything, by key or by value or by both, and clean up afterwards. Accepts wildcards. | ||
* @version 3.0.5 | ||
* @version 3.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -15,69 +15,55 @@ * @license MIT | ||
var version$1 = "3.0.5"; | ||
var version$1 = "3.0.6"; | ||
const version = version$1; | ||
function deleteKey(originalInput, originalOpts) { | ||
function existy(x) { | ||
return x != null; | ||
} | ||
if (!existy(originalInput)) { | ||
throw new Error("object-delete-key/deleteKey(): [THROW_ID_01] Please provide the first argument, something to work upon."); | ||
} | ||
const defaults = { | ||
key: null, | ||
val: undefined, | ||
cleanup: true, | ||
only: "any" | ||
}; | ||
const opts = { ...defaults, | ||
...originalOpts | ||
}; | ||
opts.only = arrObjOrBoth(opts.only, { | ||
msg: "object-delete-key/deleteKey(): [THROW_ID_03]", | ||
optsVarName: "opts.only" | ||
}); | ||
if (!existy(opts.key) && !existy(opts.val)) { | ||
throw new Error("object-delete-key/deleteKey(): [THROW_ID_04] Please provide at least a key or a value."); | ||
} | ||
let input = clone(originalInput); | ||
if (opts.cleanup) { | ||
let findings = find(input, { | ||
key: opts.key, | ||
val: opts.val, | ||
only: opts.only | ||
function existy(x) { | ||
return x != null; | ||
} | ||
if (!existy(originalInput)) { | ||
throw new Error("object-delete-key/deleteKey(): [THROW_ID_01] Please provide the first argument, something to work upon."); | ||
} | ||
const defaults = { | ||
key: null, | ||
val: undefined, | ||
cleanup: true, | ||
only: "any", | ||
}; | ||
const opts = { ...defaults, ...originalOpts }; | ||
opts.only = arrObjOrBoth(opts.only, { | ||
msg: "object-delete-key/deleteKey(): [THROW_ID_03]", | ||
optsVarName: "opts.only", | ||
}); | ||
let currentIndex; | ||
let nodeToDelete; | ||
while (Array.isArray(findings) && findings.length) { | ||
nodeToDelete = findings[0].index; | ||
for (let i = 1, len = findings[0].path.length; i < len; i++) { | ||
currentIndex = findings[0].path[len - 1 - i]; | ||
if (isEmpty(del(get(input, { | ||
index: currentIndex | ||
}), { | ||
key: opts.key, | ||
val: opts.val, | ||
only: opts.only | ||
}))) { | ||
nodeToDelete = currentIndex; | ||
if (!existy(opts.key) && !existy(opts.val)) { | ||
throw new Error("object-delete-key/deleteKey(): [THROW_ID_04] Please provide at least a key or a value."); | ||
} | ||
let input = clone(originalInput); | ||
if (opts.cleanup) { | ||
let findings = find(input, { | ||
key: opts.key, | ||
val: opts.val, | ||
only: opts.only, | ||
}); | ||
let currentIndex; | ||
let nodeToDelete; | ||
while (Array.isArray(findings) && findings.length) { | ||
nodeToDelete = findings[0].index; | ||
for (let i = 1, len = findings[0].path.length; i < len; i++) { | ||
currentIndex = findings[0].path[len - 1 - i]; | ||
if (isEmpty(del(get(input, { index: currentIndex }), { | ||
key: opts.key, | ||
val: opts.val, | ||
only: opts.only, | ||
}))) { | ||
nodeToDelete = currentIndex; | ||
} | ||
} | ||
input = drop(input, { index: nodeToDelete }); | ||
findings = find(input, { key: opts.key, val: opts.val, only: opts.only }); | ||
} | ||
} | ||
input = drop(input, { | ||
index: nodeToDelete | ||
}); | ||
findings = find(input, { | ||
key: opts.key, | ||
val: opts.val, | ||
only: opts.only | ||
}); | ||
return input; | ||
} | ||
return input; | ||
} | ||
return del(input, { | ||
key: opts.key, | ||
val: opts.val, | ||
only: opts.only | ||
}); | ||
return del(input, { key: opts.key, val: opts.val, only: opts.only }); | ||
} | ||
export { deleteKey, version }; |
/** | ||
* @name object-delete-key | ||
* @fileoverview Delete keys from all arrays or plain objects, nested within anything, by key or by value or by both, and clean up afterwards. Accepts wildcards. | ||
* @version 3.0.5 | ||
* @version 3.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -14,3 +14,3 @@ * @license MIT | ||
* @fileoverview Validate and normalise user choice: array, object or both? | ||
* @version 4.0.5 | ||
* @version 4.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -23,3 +23,3 @@ * @license MIT | ||
* @fileoverview Utility library of AST helper functions | ||
* @version 2.0.5 | ||
* @version 2.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -32,3 +32,3 @@ * @license MIT | ||
* @fileoverview Utility library to traverse AST | ||
* @version 3.0.5 | ||
* @version 3.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -41,3 +41,3 @@ * @license MIT | ||
* @fileoverview Put non-empty strings into arrays, turn empty-ones into empty arrays. Bypass everything else. | ||
* @version 4.0.5 | ||
* @version 4.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -50,3 +50,3 @@ * @license MIT | ||
* @fileoverview Validate options object | ||
* @version 7.0.5 | ||
* @version 7.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -59,3 +59,3 @@ * @license MIT | ||
* @fileoverview Does AST contain only empty space? | ||
* @version 3.0.5 | ||
* @version 3.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -68,3 +68,3 @@ * @license MIT | ||
* @fileoverview Compare anything: AST, objects, arrays, strings and nested thereof | ||
* @version 3.0.5 | ||
* @version 3.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -77,3 +77,3 @@ * @license MIT | ||
* @fileoverview Traverse and edit AST | ||
* @version 8.0.5 | ||
* @version 8.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
@@ -86,6 +86,6 @@ * @license MIT | ||
* @fileoverview Find out, is nested array/object/string/AST tree is empty | ||
* @version 3.0.5 | ||
* @version 3.0.6 | ||
* @author Roy Revelt, Codsen Ltd | ||
* @license MIT | ||
* {@link https://codsen.com/os/ast-is-empty/} | ||
*/function at(e){let t,r,n=!0;if(Array.isArray(e)){if(0===e.length)return!0;for(t=0,r=e.length;t<r;t++){if(n=at(e[t]),null===n)return null;if(!n)return!1}}else if(Y(e)){if(0===Object.keys(e).length)return!0;for(t=0,r=Object.keys(e).length;t<r;t++){if(n=at(e[Object.keys(e)[t]]),null===n)return null;if(!n)return!1}}else{if("string"!=typeof e)return null;if(0!==e.length)return!1}return n}e.deleteKey=function(e,t){function r(e){return null!=e}if(!r(e))throw new Error("object-delete-key/deleteKey(): [THROW_ID_01] Please provide the first argument, something to work upon.");const n={...{key:null,val:void 0,cleanup:!0,only:"any"},...t};if(n.only=M(n.only,{msg:"object-delete-key/deleteKey(): [THROW_ID_03]",optsVarName:"opts.only"}),!r(n.key)&&!r(n.val))throw new Error("object-delete-key/deleteKey(): [THROW_ID_04] Please provide at least a key or a value.");let o=B(e);if(n.cleanup){let e,t,r=rt(o,{key:n.key,val:n.val,only:n.only});for(;Array.isArray(r)&&r.length;){t=r[0].index;for(let i=1,a=r[0].path.length;i<a;i++)e=r[0].path[a-1-i],at(it(nt(o,{index:e}),{key:n.key,val:n.val,only:n.only}))&&(t=e);o=ot(o,{index:t}),r=rt(o,{key:n.key,val:n.val,only:n.only})}return o}return it(o,{key:n.key,val:n.val,only:n.only})},e.version="3.0.5",Object.defineProperty(e,"__esModule",{value:!0})})); | ||
*/function at(e){let t,r,n=!0;if(Array.isArray(e)){if(0===e.length)return!0;for(t=0,r=e.length;t<r;t++){if(n=at(e[t]),null===n)return null;if(!n)return!1}}else if(Y(e)){if(0===Object.keys(e).length)return!0;for(t=0,r=Object.keys(e).length;t<r;t++){if(n=at(e[Object.keys(e)[t]]),null===n)return null;if(!n)return!1}}else{if("string"!=typeof e)return null;if(0!==e.length)return!1}return n}e.deleteKey=function(e,t){function r(e){return null!=e}if(!r(e))throw new Error("object-delete-key/deleteKey(): [THROW_ID_01] Please provide the first argument, something to work upon.");const n={...{key:null,val:void 0,cleanup:!0,only:"any"},...t};if(n.only=M(n.only,{msg:"object-delete-key/deleteKey(): [THROW_ID_03]",optsVarName:"opts.only"}),!r(n.key)&&!r(n.val))throw new Error("object-delete-key/deleteKey(): [THROW_ID_04] Please provide at least a key or a value.");let o=B(e);if(n.cleanup){let e,t,r=rt(o,{key:n.key,val:n.val,only:n.only});for(;Array.isArray(r)&&r.length;){t=r[0].index;for(let i=1,a=r[0].path.length;i<a;i++)e=r[0].path[a-1-i],at(it(nt(o,{index:e}),{key:n.key,val:n.val,only:n.only}))&&(t=e);o=ot(o,{index:t}),r=rt(o,{key:n.key,val:n.val,only:n.only})}return o}return it(o,{key:n.key,val:n.val,only:n.only})},e.version="3.0.6",Object.defineProperty(e,"__esModule",{value:!0})})); |
{ | ||
"name": "object-delete-key", | ||
"version": "3.0.5", | ||
"version": "3.0.6", | ||
"description": "Delete keys from all arrays or plain objects, nested within anything, by key or by value or by both, and clean up afterwards. Accepts wildcards.", | ||
@@ -43,9 +43,8 @@ "keywords": [ | ||
"build": "rollup -c", | ||
"ci_test": "npm run build && npm run format && tap --no-only --reporter=silent --output-file=testStats.md && npm run clean_cov", | ||
"clean_cov": "../../scripts/leaveCoverageTotalOnly.js", | ||
"build:esbuild": "node '../../scripts/esbuild.js'", | ||
"build:esbuild:dev": "cross-env MODE=dev node '../../scripts/esbuild.js'", | ||
"ci_test": "npm run build && npm run format && tap --no-only --reporter=silent", | ||
"clean_types": "../../scripts/cleanTypes.js", | ||
"dev": "rollup -c --dev", | ||
"devunittest": "npm run dev && tap --only -R 'base'", | ||
"esbuild": "node '../../scripts/esbuild.js'", | ||
"esbuild_dev": "cross-env MODE=dev node '../../scripts/esbuild.js'", | ||
"format": "npm run lect && npm run prettier && npm run lint", | ||
@@ -59,13 +58,10 @@ "lect": "lect", | ||
"pretest": "npm run build", | ||
"test": "npm run lint && npm run unittest && npm run test:examples && npm run clean_cov && npm run format", | ||
"test": "npm run test:ci && npm run perf", | ||
"test:ci": "npm run unittest && npm run test:examples && npm run format", | ||
"test:examples": "../../scripts/test-examples.js && npm run lect && npm run prettier", | ||
"tsc": "tsc", | ||
"unittest": "tap --no-only --output-file=testStats.md --reporter=terse && tsc -p tsconfig.json --noEmit && npm run clean_cov && npm run perf" | ||
"unittest": "tap --no-only --reporter=terse && tsc -p tsconfig.json --noEmit" | ||
}, | ||
"tap": { | ||
"check-coverage": false, | ||
"coverage-report": [ | ||
"json-summary", | ||
"text" | ||
], | ||
"node-arg": [ | ||
@@ -93,7 +89,7 @@ "--no-warnings", | ||
"dependencies": { | ||
"@babel/runtime": "^7.16.0", | ||
"ast-is-empty": "^3.0.5", | ||
"ast-monkey": "^8.0.5", | ||
"@babel/runtime": "^7.16.3", | ||
"ast-is-empty": "^3.0.6", | ||
"ast-monkey": "^8.0.6", | ||
"lodash.clonedeep": "^4.5.0", | ||
"util-array-object-or-both": "^4.0.5" | ||
"util-array-object-or-both": "^4.0.6" | ||
}, | ||
@@ -109,4 +105,4 @@ "devDependencies": { | ||
"@babel/plugin-proposal-optional-chaining": "^7.16.0", | ||
"@babel/plugin-transform-runtime": "^7.16.0", | ||
"@babel/preset-env": "^7.16.0", | ||
"@babel/plugin-transform-runtime": "^7.16.4", | ||
"@babel/preset-env": "^7.16.4", | ||
"@babel/preset-typescript": "^7.16.0", | ||
@@ -122,11 +118,11 @@ "@babel/register": "^7.16.0", | ||
"@types/lodash.clonedeep": "^4.5.6", | ||
"@types/node": "^16.11.6", | ||
"@types/node": "^16.11.9", | ||
"@types/tap": "^15.0.5", | ||
"@typescript-eslint/eslint-plugin": "^5.3.0", | ||
"@typescript-eslint/parser": "^5.3.0", | ||
"@typescript-eslint/eslint-plugin": "^5.4.0", | ||
"@typescript-eslint/parser": "^5.4.0", | ||
"core-js": "^3.19.1", | ||
"cross-env": "^7.0.3", | ||
"eslint": "^8.2.0", | ||
"lect": "^0.18.5", | ||
"rollup": "^2.59.0", | ||
"eslint": "^8.3.0", | ||
"lect": "^0.18.6", | ||
"rollup": "^2.60.0", | ||
"rollup-plugin-ascii": "^0.0.3", | ||
@@ -137,9 +133,9 @@ "rollup-plugin-banner": "^0.2.1", | ||
"rollup-plugin-terser": "^7.0.2", | ||
"tap": "^15.0.10", | ||
"tap": "^15.1.2", | ||
"tslib": "^2.3.1", | ||
"typescript": "^4.4.4" | ||
"typescript": "^4.5.2" | ||
}, | ||
"engines": { | ||
"node": ">=12" | ||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0" | ||
} | ||
} |
60692
416
Updated@babel/runtime@^7.16.3
Updatedast-is-empty@^3.0.6
Updatedast-monkey@^8.0.6