ast-get-values-by-key
Version:
Extract values and paths from AST by keys OR set them by keys
35 lines (33 loc) • 8.18 kB
JavaScript
/**
* @name ast-get-values-by-key
* @fileoverview Extract values and paths from AST by keys OR set them by keys
* @version 5.1.0
* @author Roy Revelt
* @license MIT
* {@link https://codsen.com/os/ast-get-values-by-key/}
*/
;var astGetValuesByKey=(()=>{var U=Object.create,$=Object.freeze,g=Object.defineProperty,J=Object.defineProperties,W=Object.getOwnPropertyDescriptor,q=Object.getOwnPropertyDescriptors,z=Object.getOwnPropertyNames,C=Object.getOwnPropertySymbols,Z=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var E=(e,r,s)=>r in e?g(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s,h=(e,r)=>{for(var s in r||(r={}))B.call(r,s)&&E(e,s,r[s]);if(C)for(var s of C(r))G.call(r,s)&&E(e,s,r[s]);return e},b=(e,r)=>J(e,q(r));var X=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Y=(e,r)=>{for(var s in r)g(e,s,{get:r[s],enumerable:!0})},D=(e,r,s,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of z(r))!B.call(e,l)&&l!==s&&g(e,l,{get:()=>r[l],enumerable:!(c=W(r,l))||c.enumerable});return e};var x=(e,r,s)=>(s=e!=null?U(Z(e)):{},D(r||!e||!e.__esModule?g(s,"default",{value:e,enumerable:!0}):s,e)),ee=e=>D(g({},"__esModule",{value:!0}),e);var A=(e,r)=>$(g(e,"raw",{value:$(r||e.slice())}));var w=X((le,_)=>{"use strict";_.exports=te;function m(e){return e instanceof Buffer?Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function te(e){if(e=e||{},e.circles)return re(e);let r=new Map;if(r.set(Date,o=>new Date(o)),r.set(Map,(o,a)=>new Map(c(Array.from(o),a))),r.set(Set,(o,a)=>new Set(c(Array.from(o),a))),e.constructorHandlers)for(let o of e.constructorHandlers)r.set(o[0],o[1]);let s=null;return e.proto?f:l;function c(o,a){let t=Object.keys(o),n=new Array(t.length);for(let u=0;u<t.length;u++){let i=t[u],p=o[i];typeof p!="object"||p===null?n[i]=p:p.constructor!==Object&&(s=r.get(p.constructor))?n[i]=s(p,a):ArrayBuffer.isView(p)?n[i]=m(p):n[i]=a(p)}return n}function l(o){if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return c(o,l);if(o.constructor!==Object&&(s=r.get(o.constructor)))return s(o,l);let a={};for(let t in o){if(Object.hasOwnProperty.call(o,t)===!1)continue;let n=o[t];typeof n!="object"||n===null?a[t]=n:n.constructor!==Object&&(s=r.get(n.constructor))?a[t]=s(n,l):ArrayBuffer.isView(n)?a[t]=m(n):a[t]=l(n)}return a}function f(o){if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return c(o,f);if(o.constructor!==Object&&(s=r.get(o.constructor)))return s(o,f);let a={};for(let t in o){let n=o[t];typeof n!="object"||n===null?a[t]=n:n.constructor!==Object&&(s=r.get(n.constructor))?a[t]=s(n,f):ArrayBuffer.isView(n)?a[t]=m(n):a[t]=f(n)}return a}}function re(e){let r=[],s=[],c=new Map;if(c.set(Date,t=>new Date(t)),c.set(Map,(t,n)=>new Map(f(Array.from(t),n))),c.set(Set,(t,n)=>new Set(f(Array.from(t),n))),e.constructorHandlers)for(let t of e.constructorHandlers)c.set(t[0],t[1]);let l=null;return e.proto?a:o;function f(t,n){let u=Object.keys(t),i=new Array(u.length);for(let p=0;p<u.length;p++){let d=u[p],y=t[d];if(typeof y!="object"||y===null)i[d]=y;else if(y.constructor!==Object&&(l=c.get(y.constructor)))i[d]=l(y,n);else if(ArrayBuffer.isView(y))i[d]=m(y);else{let O=r.indexOf(y);O!==-1?i[d]=s[O]:i[d]=n(y)}}return i}function o(t){if(typeof t!="object"||t===null)return t;if(Array.isArray(t))return f(t,o);if(t.constructor!==Object&&(l=c.get(t.constructor)))return l(t,o);let n={};r.push(t),s.push(n);for(let u in t){if(Object.hasOwnProperty.call(t,u)===!1)continue;let i=t[u];if(typeof i!="object"||i===null)n[u]=i;else if(i.constructor!==Object&&(l=c.get(i.constructor)))n[u]=l(i,o);else if(ArrayBuffer.isView(i))n[u]=m(i);else{let p=r.indexOf(i);p!==-1?n[u]=s[p]:n[u]=o(i)}}return r.pop(),s.pop(),n}function a(t){if(typeof t!="object"||t===null)return t;if(Array.isArray(t))return f(t,a);if(t.constructor!==Object&&(l=c.get(t.constructor)))return l(t,a);let n={};r.push(t),s.push(n);for(let u in t){let i=t[u];if(typeof i!="object"||i===null)n[u]=i;else if(i.constructor!==Object&&(l=c.get(i.constructor)))n[u]=l(i,a);else if(ArrayBuffer.isView(i))n[u]=m(i);else{let p=r.indexOf(i);p!==-1?n[u]=s[p]:n[u]=a(i)}}return r.pop(),s.pop(),n}}});var ae={};Y(ae,{getByKey:()=>ue,version:()=>oe});var T=x(w(),1);var P=x(w(),1);var fe=(0,P.default)();function N(e){if(e==null||typeof e!="object")return!1;let r=Object.getPrototypeOf(e);return r!==null&&r!==Object.prototype&&Object.getPrototypeOf(r)!==null?!1:!(Symbol.iterator in e)&&!(Symbol.toStringTag in e)}function v(e){if(e.includes(".")){let r=e.lastIndexOf(".");if(!e.slice(0,r).includes("."))return e.slice(0,r);for(let s=r-1;s--;)if(e[s]===".")return e.slice(s+1,r)}return null}var S=(0,T.default)();function M(e,r){let s={now:!1};function c(l,f,o,a){let t=S(l),n,u=h({depth:-1,path:""},o);if(u.depth+=1,Array.isArray(t))for(let i=0,p=t.length;i<p&&!a.now;i++){let d=u.path?"".concat(u.path,".").concat(i):"".concat(i);t[i]!==void 0?(u.parent=S(t),u.parentType="array",u.parentKey=v(d),n=c(f(t[i],void 0,b(h({},u),{path:d}),a),f,b(h({},u),{path:d}),a),Number.isNaN(n)&&i<t.length?(t.splice(i,1),i-=1):t[i]=n):t.splice(i,1)}else if(N(t))for(let i in t){if(a.now&&i!=null)break;let p=u.path?"".concat(u.path,".").concat(i):i;u.depth===0&&i!=null&&(u.topmostKey=i),u.parent=S(t),u.parentType="object",u.parentKey=v(p),n=c(f(i,t[i],b(h({},u),{path:p}),a),f,b(h({},u),{path:p}),a),Number.isNaN(n)?delete t[i]:t[i]=n}return t}return c(e,r,{},s)}function j(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var k=new Map,R=(e,r)=>{if(!Array.isArray(e))switch(typeof e){case"string":{e=[e];break}case"undefined":{e=[];break}default:throw new TypeError("Expected '".concat(r,"' to be a string or an array, but got a type of '").concat(typeof e,"'"))}return e.filter(s=>{if(typeof s!="string"){if(s===void 0)return!1;throw new TypeError("Expected '".concat(r,"' to be an array of strings, but found a type of '").concat(typeof s,"' in the array"))}return!0})},I,L,F,ne=(e,r)=>{r=h({caseSensitive:!1},r);let s="s"+(r.caseSensitive?"":"i"),c=e+"|"+s;if(k.has(c))return k.get(c);let l=e[0]==="!";l&&(e=e.slice(1)),e=e.replaceAll(String.raw(I||(I=A(["*"],["\\*"]))),"__ESCAPED_STAR__").replaceAll("\\\\","__ESCAPED_BACKSLASH__").replaceAll(/\\(.)/g,"$1"),e=j(e).replaceAll(String.raw(L||(L=A(["*"],["\\*"]))),".*"),e=e.replaceAll("__ESCAPED_STAR__",String.raw(F||(F=A(["*"],["\\*"])))).replaceAll("__ESCAPED_BACKSLASH__","\\\\");let f=new RegExp("^".concat(e,"$"),s);return f.negated=l,k.set(c,f),f},se=(e,r,s,c)=>{if(e=R(e,"inputs"),r=R(r,"patterns"),r.length===0)return[];r=r.map(t=>ne(t,s));let l=r.filter(t=>t.negated),f=r.filter(t=>!t.negated),{allPatterns:o}=s||{},a=[];if(o&&c&&l.length>1&&f.length===0){for(let t of e)for(let n of l)if(n.test(t))return[];return e.slice(0,1)}for(let t of e){let n=!1;for(let u of l)if(u.test(t)){n=!0;break}if(!n){if(f.length===0)a.push(t);else if(o){let u=Array.from({length:f.length},()=>!1);for(let[i,p]of f.entries())p.test(t)&&(u[i]=!0);u.every(Boolean)&&a.push(t)}else{let u=!1;for(let i of f)if(i.test(t)){u=!0;break}u&&a.push(t)}if(c&&a.length>0)break}}return a};function H(e,r,s){return se(e,r,s,!0).length>0}var Q=x(w(),1);var K="5.1.0";var V=(0,Q.default)(),oe=K;function ue(e,r,s){let c;s!==void 0&&(c=Array.isArray(s)?V(s):[V(s)]);let l=[],f=M(e,(o,a,t)=>{let n=a!==void 0?a:o;if(a!==void 0&&H(o,r,{caseSensitive:!0})){if(c===void 0)l.push({val:a,path:t.path});else if(c.length)return c.shift()}return n});return c===void 0?l:f}return ee(ae);})();
/**
* @name codsen-utils
* @fileoverview Various utility functions
* @version 1.7.0
* @author Roy Revelt
* @license MIT
* {@link https://codsen.com/os/codsen-utils/}
*/
/**
* @name ast-monkey-util
* @fileoverview Utility library of AST helper functions
* @version 3.1.0
* @author Roy Revelt
* @license MIT
* {@link https://codsen.com/os/ast-monkey-util/}
*/
/**
* @name ast-monkey-traverse
* @fileoverview Utility library to traverse AST
* @version 4.1.0
* @author Roy Revelt
* @license MIT
* {@link https://codsen.com/os/ast-monkey-traverse/}
*/