UNPKG

ast-monkey

Version:
11 lines (9 loc) 5.12 kB
/** * @name ast-monkey * @fileoverview Traverse and edit AST * @version 9.1.3 * @author Roy Revelt * @license MIT * {@link https://codsen.com/os/ast-monkey/} */ import{arrObjOrBoth as O}from"util-array-object-or-both";import{checkTypesMini as c}from"check-types-mini";import{traverse as x}from"ast-monkey-traverse";import{isStr as u,isPlainObject as m}from"codsen-utils";import{compare as $}from"ast-compare";var h="9.1.3";var E=h;function r(t){return t!=null}function p(t,n){return typeof t!=typeof n?!1:!!$(t,n,{matchStrictly:!0,useWildcards:!0})}function d(t,n){let e={...n},s={count:0,gatherPath:[],finding:null},g=[],y=!1,f=!1;r(e.key)&&e.val===void 0&&(y=!0),!r(e.key)&&e.val!==void 0&&(f=!0);let a=t;return e.mode==="arrayFirstOnly"&&Array.isArray(a)&&a.length&&(a=[a[0]]),a=x(a,(o,i,l)=>{let v;if(s.count+=1,s.gatherPath.length=l.depth,s.gatherPath.push(s.count),e.mode==="get")s.count===e.index&&(l.parentType==="object"?(s.finding={},s.finding[o]=i):s.finding=o);else if(e.mode==="find"||e.mode==="del")if((e.only==="any"||e.only==="array"&&l.parentType==="array"||e.only==="object"&&l.parentType!=="array")&&(y&&p(o,e.key)||f&&p(i,e.val)||!y&&!f&&p(o,e.key)&&p(i,e.val)))if(e.mode==="find")v={index:s.count,key:o,val:i,path:[...s.gatherPath]},g.push(v);else return NaN;else return l.parentType==="object"?i:o;return e.mode==="set"&&s.count===e.index?e.val:e.mode==="drop"&&s.count===e.index?NaN:e.mode==="arrayFirstOnly"?l.parentType==="object"&&Array.isArray(i)?[i[0]]:r(o)&&Array.isArray(o)?[o[0]]:l.parentType==="object"?i:o:l.parentType==="object"?i:o}),e.mode==="get"?s.finding:e.mode==="find"?g:a}function R(t,n){if(!r(t))throw new Error("ast-monkey/main.js/find(): [THROW_ID_02] Please provide the input");if(!m(n)||n.key===void 0&&n.val===void 0)throw new Error("ast-monkey/main.js/find(): [THROW_ID_03] Please provide resolvedOpts.key or resolvedOpts.val");let e={...n};return c(e,null,{schema:{key:["null","string"],val:"any",only:["undefined","null","string"]},msg:"ast-monkey/get(): [THROW_ID_04*]"}),u(e.only)&&e.only.length?e.only=O(e.only,{optsVarName:"resolvedOpts.only",msg:"ast-monkey/find(): [THROW_ID_05*]"}):e.only="any",d(t,{...e,mode:"find"})}function V(t,n){if(!r(t))throw new Error("ast-monkey/main.js/get(): [THROW_ID_06] Please provide the input");if(!m(n))throw new Error("ast-monkey/main.js/get(): [THROW_ID_07] Please provide the resolvedOpts");if(!r(n.index))throw new Error("ast-monkey/main.js/get(): [THROW_ID_08] Please provide resolvedOpts.index");let e={...n};if(u(e.index)&&/^\d+$/.test(e.index))e.index=+e.index;else if(!Number.isInteger(e.index))throw new Error(`ast-monkey/main.js/get(): [THROW_ID_11] resolvedOpts.index must be a natural number. It was given as: ${e.index} (type ${typeof e.index})`);return d(t,{...e,mode:"get"})}function J(t,n){if(!r(t))throw new Error("ast-monkey/main.js/set(): [THROW_ID_12] Please provide the input");if(!m(n))throw new Error("ast-monkey/main.js/set(): [THROW_ID_13] Please provide the input");if(!r(n.key)&&n.val===void 0)throw new Error("ast-monkey/main.js/set(): [THROW_ID_14] Please provide resolvedOpts.val");if(!r(n.index))throw new Error("ast-monkey/main.js/set(): [THROW_ID_15] Please provide resolvedOpts.index");let e={...n};if(u(e.index)&&/^\d+$/.test(e.index))e.index=+e.index;else if(!Number.isInteger(e.index))throw new Error(`ast-monkey/main.js/set(): [THROW_ID_17] resolvedOpts.index must be a natural number. It was given as: ${e.index}`);return r(e.key)&&e.val===void 0&&(e.val=e.key),c(e,null,{schema:{key:[null,"string"],val:"any",index:"number"},msg:"ast-monkey/set(): [THROW_ID_18*]"}),d(t,{...e,mode:"set"})}function W(t,n){if(!r(t))throw new Error("ast-monkey/main.js/drop(): [THROW_ID_19] Please provide the input");if(!m(n))throw new Error("ast-monkey/main.js/drop(): [THROW_ID_20] Please provide the input");if(!r(n.index))throw new Error("ast-monkey/main.js/drop(): [THROW_ID_21] Please provide resolvedOpts.index");let e={...n};if(u(e.index)&&/^\d+$/.test(e.index))e.index=+e.index;else if(!Number.isInteger(e.index))throw new Error(`ast-monkey/main.js/drop(): [THROW_ID_23] resolvedOpts.index must be a natural number. It was given as: ${e.index}`);return d(t,{...e,mode:"drop"})}function H(t,n){if(!r(t))throw new Error("ast-monkey/main.js/del(): [THROW_ID_26] Please provide the input");if(!m(n))throw new Error("ast-monkey/main.js/del(): [THROW_ID_27] Please provide the resolvedOpts object");if(!r(n.key)&&n.val===void 0)throw new Error("ast-monkey/main.js/del(): [THROW_ID_28] Please provide resolvedOpts.key or resolvedOpts.val");let e={...n};return c(e,null,{schema:{key:[null,"string"],val:"any",only:["undefined","null","string"]},msg:"ast-monkey/drop(): [THROW_ID_29*]"}),u(e.only)&&e.only.length?e.only=O(e.only,{msg:"ast-monkey/del(): [THROW_ID_30*]",optsVarName:"resolvedOpts.only"}):e.only="any",d(t,{...e,mode:"del"})}function P(t){if(!r(t))throw new Error("ast-monkey/main.js/arrayFirstOnly(): [THROW_ID_31] Please provide the input");return d(t,{mode:"arrayFirstOnly"})}export{P as arrayFirstOnly,H as del,W as drop,R as find,V as get,J as set,x as traverse,E as version};