ast-loose-compare
Version:
Compare anything: AST, objects, arrays and strings
43 lines (41 loc) • 7.36 kB
JavaScript
/**
* @name ast-loose-compare
* @fileoverview Compare anything: AST, objects, arrays and strings
* @version 4.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ast-loose-compare/}
*/
;var astLooseCompare=(()=>{var J=Object.create;var w=Object.defineProperty,P=Object.defineProperties,M=Object.getOwnPropertyDescriptor,T=Object.getOwnPropertyDescriptors,L=Object.getOwnPropertyNames,S=Object.getOwnPropertySymbols,R=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var V=(r,e,s)=>e in r?w(r,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[e]=s,A=(r,e)=>{for(var s in e||(e={}))B.call(e,s)&&V(r,s,e[s]);if(S)for(var s of S(e))F.call(e,s)&&V(r,s,e[s]);return r},x=(r,e)=>P(r,T(e));var H=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),K=(r,e)=>{for(var s in e)w(r,s,{get:e[s],enumerable:!0})},D=(r,e,s,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let u of L(e))!B.call(r,u)&&u!==s&&w(r,u,{get:()=>e[u],enumerable:!(l=M(e,u))||l.enumerable});return r};var j=(r,e,s)=>(s=r!=null?J(R(r)):{},D(e||!r||!r.__esModule?w(s,"default",{value:r,enumerable:!0}):s,r)),Q=r=>D(w({},"__esModule",{value:!0}),r);var b=H((Y,U)=>{"use strict";U.exports=q;function g(r){return r instanceof Buffer?Buffer.from(r):new r.constructor(r.buffer.slice(),r.byteOffset,r.length)}function q(r){if(r=r||{},r.circles)return W(r);let e=new Map;if(e.set(Date,n=>new Date(n)),e.set(Map,(n,c)=>new Map(l(Array.from(n),c))),e.set(Set,(n,c)=>new Set(l(Array.from(n),c))),r.constructorHandlers)for(let n of r.constructorHandlers)e.set(n[0],n[1]);let s=null;return r.proto?p:u;function l(n,c){let t=Object.keys(n),i=new Array(t.length);for(let a=0;a<t.length;a++){let o=t[a],f=n[o];typeof f!="object"||f===null?i[o]=f:f.constructor!==Object&&(s=e.get(f.constructor))?i[o]=s(f,c):ArrayBuffer.isView(f)?i[o]=g(f):i[o]=c(f)}return i}function u(n){if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return l(n,u);if(n.constructor!==Object&&(s=e.get(n.constructor)))return s(n,u);let c={};for(let t in n){if(Object.hasOwnProperty.call(n,t)===!1)continue;let i=n[t];typeof i!="object"||i===null?c[t]=i:i.constructor!==Object&&(s=e.get(i.constructor))?c[t]=s(i,u):ArrayBuffer.isView(i)?c[t]=g(i):c[t]=u(i)}return c}function p(n){if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return l(n,p);if(n.constructor!==Object&&(s=e.get(n.constructor)))return s(n,p);let c={};for(let t in n){let i=n[t];typeof i!="object"||i===null?c[t]=i:i.constructor!==Object&&(s=e.get(i.constructor))?c[t]=s(i,p):ArrayBuffer.isView(i)?c[t]=g(i):c[t]=p(i)}return c}}function W(r){let e=[],s=[],l=new Map;if(l.set(Date,t=>new Date(t)),l.set(Map,(t,i)=>new Map(p(Array.from(t),i))),l.set(Set,(t,i)=>new Set(p(Array.from(t),i))),r.constructorHandlers)for(let t of r.constructorHandlers)l.set(t[0],t[1]);let u=null;return r.proto?c:n;function p(t,i){let a=Object.keys(t),o=new Array(a.length);for(let f=0;f<a.length;f++){let y=a[f],h=t[y];if(typeof h!="object"||h===null)o[y]=h;else if(h.constructor!==Object&&(u=l.get(h.constructor)))o[y]=u(h,i);else if(ArrayBuffer.isView(h))o[y]=g(h);else{let $=e.indexOf(h);$!==-1?o[y]=s[$]:o[y]=i(h)}}return o}function n(t){if(typeof t!="object"||t===null)return t;if(Array.isArray(t))return p(t,n);if(t.constructor!==Object&&(u=l.get(t.constructor)))return u(t,n);let i={};e.push(t),s.push(i);for(let a in t){if(Object.hasOwnProperty.call(t,a)===!1)continue;let o=t[a];if(typeof o!="object"||o===null)i[a]=o;else if(o.constructor!==Object&&(u=l.get(o.constructor)))i[a]=u(o,n);else if(ArrayBuffer.isView(o))i[a]=g(o);else{let f=e.indexOf(o);f!==-1?i[a]=s[f]:i[a]=n(o)}}return e.pop(),s.pop(),i}function c(t){if(typeof t!="object"||t===null)return t;if(Array.isArray(t))return p(t,c);if(t.constructor!==Object&&(u=l.get(t.constructor)))return u(t,c);let i={};e.push(t),s.push(i);for(let a in t){let o=t[a];if(typeof o!="object"||o===null)i[a]=o;else if(o.constructor!==Object&&(u=l.get(o.constructor)))i[a]=u(o,c);else if(ArrayBuffer.isView(o))i[a]=g(o);else{let f=e.indexOf(o);f!==-1?i[a]=s[f]:i[a]=c(o)}}return e.pop(),s.pop(),i}}});var G={};K(G,{looseCompare:()=>z,version:()=>_});var O=j(b(),1);var N=j(b(),1);var ee=(0,N.default)();function m(r){if(r==null||typeof r!="object")return!1;let e=Object.getPrototypeOf(r);return e!==null&&e!==Object.prototype&&Object.getPrototypeOf(e)!==null?!1:!(Symbol.iterator in r)&&!(Symbol.toStringTag in r)}function k(r){if(r.includes(".")){let e=r.lastIndexOf(".");if(!r.slice(0,e).includes("."))return r.slice(0,e);for(let s=e-1;s--;)if(r[s]===".")return r.slice(s+1,e)}return null}var v=(0,O.default)();function E(r,e){let s={now:!1};function l(u,p,n,c){let t=v(u),i,a=A({depth:-1,path:""},n);if(a.depth+=1,Array.isArray(t))for(let o=0,f=t.length;o<f&&!c.now;o++){let y=a.path?`${a.path}.${o}`:`${o}`;t[o]!==void 0?(a.parent=v(t),a.parentType="array",a.parentKey=k(y),i=l(p(t[o],void 0,x(A({},a),{path:y}),c),p,x(A({},a),{path:y}),c),Number.isNaN(i)&&o<t.length?(t.splice(o,1),o-=1):t[o]=i):t.splice(o,1)}else if(m(t))for(let o in t){if(c.now&&o!=null)break;let f=a.path?`${a.path}.${o}`:o;a.depth===0&&o!=null&&(a.topmostKey=o),a.parent=v(t),a.parentType="object",a.parentKey=k(f),i=l(p(o,t[o],x(A({},a),{path:f}),c),p,x(A({},a),{path:f}),c),Number.isNaN(i)?delete t[o]:t[o]=i}return t}return l(r,e,{},s)}function d(r){if(typeof r=="string")return!r.trim();if(!["object","string"].includes(typeof r)||!r)return!1;let e=!0;return r=E(r,(s,l,u,p)=>{let n=l!==void 0?l:s;return typeof n=="string"&&n.trim()&&(e=!1,p.now=!0),n}),e}var I="4.0.20";var _=I;function C(r,e,s){function l(n){return n!=null}let u,p;if(s===void 0){if(!l(r)||!l(e))return}else if(!l(r)||!l(e))return!1;if(s=s||!0,typeof r!=typeof e)return!!(d(r)&&d(e));if(Array.isArray(r)&&Array.isArray(e))if(e.length){for(u=0,p=e.length;u<p;u++)if(Array.isArray(e[u])||m(e[u])){if(s=C(r[u],e[u],s),!s)return!1}else if(e[u]!==r[u])return!!(d(e[u])&&d(r[u]))}else return!!(e.length===0&&r.length===0||d(e)&&d(r));else if(m(r)&&m(e))if(Object.keys(e).length){let n=Object.keys(e);for(u=0,p=n.length;u<p;u++)if(Array.isArray(e[n[u]])||m(e[n[u]])||typeof e[n[u]]=="string"){if(s=C(r[n[u]],e[n[u]],s),!s)return!1}else if(e[n[u]]!==r[n[u]]&&(!d(e[n[u]])||!d(r[n[u]])))return!1}else return!!(Object.keys(e).length===0&&Object.keys(r).length===0||d(e)&&d(r));else if(typeof r=="string"&&typeof e=="string"){if(r!==e)return!!(d(e)&&d(r))}else return!!(d(e)&&d(r));return s}function z(r,e){return C(r,e)}return Q(G);})();
/**
* @name codsen-utils
* @fileoverview Various utility functions
* @version 1.6.8
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/codsen-utils/}
*/
/**
* @name ast-monkey-util
* @fileoverview Utility library of AST helper functions
* @version 3.0.10
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ast-monkey-util/}
*/
/**
* @name ast-monkey-traverse
* @fileoverview Utility library to traverse AST
* @version 4.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ast-monkey-traverse/}
*/
/**
* @name ast-contains-only-empty-space
* @fileoverview Does AST contain only empty space?
* @version 4.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ast-contains-only-empty-space/}
*/