UNPKG

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
/** * @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};