object-delete-key
Version:
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.
11 lines (9 loc) • 1.4 kB
JavaScript
/**
* @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 4.0.30
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/object-delete-key/}
*/
import{find as u,get as m,drop as b,del as a}from"ast-monkey";import{isEmpty as v}from"ast-is-empty";import $ from"rfdc";import{arrObjOrBoth as f}from"util-array-object-or-both";var d="4.0.30";var g=$(),I=d,O={key:null,val:void 0,cleanup:!0,only:"any"};function w(i,y){function n(t){return t!=null}if(!n(i))throw new Error("object-delete-key/deleteKey(): [THROW_ID_01] Please provide the first argument, something to work upon.");let e={...O,...y};if(e.only=f(e.only,{msg:"object-delete-key/deleteKey(): [THROW_ID_03]",optsVarName:"resolvedOpts.only"}),!n(e.key)&&!n(e.val))throw new Error("object-delete-key/deleteKey(): [THROW_ID_04] Please provide at least a key or a value.");let l=g(i);if(e.cleanup){let t=u(l,{key:e.key,val:e.val,only:e.only}),o,r;for(;Array.isArray(t)&&t.length;){r=t[0].index;for(let s=1,p=t[0].path.length;s<p;s++)o=t[0].path[p-1-s],v(a(m(l,{index:o}),{key:e.key,val:e.val,only:e.only}))&&(r=o);l=b(l,{index:r}),t=u(l,{key:e.key,val:e.val,only:e.only})}return l}return a(l,{key:e.key,val:e.val,only:e.only})}export{O as defaults,w as deleteKey,I as version};