UNPKG

ast-loose-compare

Version:

Compare anything: AST, objects, arrays and strings

11 lines (9 loc) 1.27 kB
/** * @name ast-loose-compare * @fileoverview Compare anything: AST, objects, arrays and strings * @version 4.1.3 * @author Roy Revelt * @license MIT * {@link https://codsen.com/os/ast-loose-compare/} */ import{empty as r}from"ast-contains-only-empty-space";import{isPlainObject as p}from"codsen-utils";var c="4.1.3";var m=c;function a(t,e,s){function u(o){return o!=null}let n,i;if(s===void 0){if(!u(t)||!u(e))return}else if(!u(t)||!u(e))return!1;if(s=s||!0,typeof t!=typeof e)return!!(r(t)&&r(e));if(Array.isArray(t)&&Array.isArray(e))if(e.length){for(n=0,i=e.length;n<i;n++)if(Array.isArray(e[n])||p(e[n])){if(s=a(t[n],e[n],s),!s)return!1}else if(e[n]!==t[n])return!!(r(e[n])&&r(t[n]))}else return!!(e.length===0&&t.length===0||r(e)&&r(t));else if(p(t)&&p(e))if(Object.keys(e).length){let o=Object.keys(e);for(n=0,i=o.length;n<i;n++)if(Array.isArray(e[o[n]])||p(e[o[n]])||typeof e[o[n]]=="string"){if(s=a(t[o[n]],e[o[n]],s),!s)return!1}else if(e[o[n]]!==t[o[n]]&&(!r(e[o[n]])||!r(t[o[n]])))return!1}else return!!(Object.keys(e).length===0&&Object.keys(t).length===0||r(e)&&r(t));else if(typeof t=="string"&&typeof e=="string"){if(t!==e)return!!(r(e)&&r(t))}else return!!(r(e)&&r(t));return s}function k(t,e){return a(t,e)}export{k as looseCompare,m as version};