{"version":3,"file":"createDeepEqual.mjs","sources":["../../../../../../js-utils/src/createDeepEqual.ts"],"sourcesContent":["type DeepEqualOpts = {\n  KEYS_TO_EXCLUDE?: string[];\n};\n\nexport const createDeepEqual = ({ KEYS_TO_EXCLUDE = [] }: DeepEqualOpts = {}) => {\n  // If comparing functions, this may need some work. Not sure the\n  // best path for this: compare instance (what it currently does),\n  // stringify and compare, etc.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const deepEqual = (a: any, b: any): boolean => {\n    // Ensures type is the same\n    if (typeof a !== typeof b) return false;\n    // arrays, null, and objects all have type 'object'\n    if (a === null || b === null) return a === b;\n    if (typeof a === 'object') {\n      if (Object.keys(a).length !== Object.keys(b).length || Object.keys(a).some((k) => !(k in b))) return false;\n      return Object.entries(a)\n        .filter(([k]) => !KEYS_TO_EXCLUDE.includes(k))\n        .every(([k, v]) => deepEqual(v, b[k]));\n    }\n    // boolean, string, number, undefined\n    return a === b;\n  };\n\n  return deepEqual;\n};\n"],"names":["createDeepEqual","KEYS_TO_EXCLUDE","deepEqual","a","b","Object","keys","length","some","k","entries","filter","includes","every","v"],"mappings":"AAIO,MAAMA,kBAAkB,CAAC,EAAEC,kBAAkB,EAAE,EAAiB,GAAG,EAAE,GAAA;;;;;IAK1E,MAAMC,SAAAA,GAAY,CAACC,CAAAA,EAAQC,CAAAA,GAAAA;;AAEzB,QAAA,IAAI,OAAOD,CAAAA,KAAM,OAAOC,CAAAA,EAAG,OAAO,KAAA;;AAElC,QAAA,IAAID,CAAAA,KAAM,IAAA,IAAQC,CAAAA,KAAM,IAAA,EAAM,OAAOD,CAAAA,KAAMC,CAAAA;QAC3C,IAAI,OAAOD,MAAM,QAAA,EAAU;YACzB,IAAIE,MAAAA,CAAOC,IAAI,CAACH,CAAAA,CAAAA,CAAGI,MAAM,KAAKF,MAAAA,CAAOC,IAAI,CAACF,CAAAA,CAAAA,CAAGG,MAAM,IAAIF,OAAOC,IAAI,CAACH,CAAAA,CAAAA,CAAGK,IAAI,CAAC,CAACC,CAAAA,GAAM,EAAEA,CAAAA,IAAKL,CAAAA,CAAAA,CAAAA,EAAK,OAAO,KAAA;YACrG,OAAOC,MAAAA,CAAOK,OAAO,CAACP,CAAAA,CAAAA,CACnBQ,MAAM,CAAC,CAAC,CAACF,CAAAA,CAAE,GAAK,CAACR,eAAAA,CAAgBW,QAAQ,CAACH,CAAAA,CAAAA,CAAAA,CAC1CI,KAAK,CAAC,CAAC,CAACJ,CAAAA,EAAGK,CAAAA,CAAE,GAAKZ,SAAAA,CAAUY,CAAAA,EAAGV,CAAC,CAACK,CAAAA,CAAE,CAAA,CAAA;AACxC,QAAA;;AAEA,QAAA,OAAON,CAAAA,KAAMC,CAAAA;AACf,IAAA,CAAA;IAEA,OAAOF,SAAAA;AACT;;;;"}