{"version":3,"file":"_isUniqueItems.mjs","names":[],"sources":["../../src/internal/_isUniqueItems.ts"],"sourcesContent":["export const _isUniqueItems = (elements: any[]): boolean => {\n  for (let i = 0; i < elements.length; i++)\n    for (let j = i + 1; j < elements.length; j++)\n      if (equals(new WeakMap())(elements[i], elements[j])) return false;\n  return true;\n};\n\nconst equals = (visited: WeakMap<object, WeakMap<object, boolean>>) => {\n  const next = (a: any, b: any): boolean => {\n    if (a === b) return true;\n    if (\n      a === null ||\n      b === null ||\n      typeof a !== \"object\" ||\n      typeof b !== \"object\"\n    )\n      return false;\n\n    const previous: boolean | undefined = visited.get(a)?.get(b);\n    if (previous !== undefined) return previous;\n    const pairs: WeakMap<object, boolean> =\n      visited.get(a) ?? new WeakMap<object, boolean>();\n    visited.set(a, pairs);\n    pairs.set(b, true);\n\n    const result: boolean = compare(a, b);\n    pairs.set(b, result);\n    return result;\n  };\n\n  const compare = (a: object, b: object): boolean => {\n    if (Array.isArray(a)) {\n      if (!Array.isArray(b) || a.length !== b.length) return false;\n      for (let i = 0; i < a.length; i++) {\n        const aHas: boolean = Object.hasOwn(a, i);\n        if (aHas !== Object.hasOwn(b, i) || (aHas && !next(a[i], b[i])))\n          return false;\n      }\n      return true;\n    }\n    if (Array.isArray(b)) return false;\n\n    if (a instanceof Set) {\n      if (!(b instanceof Set) || a.size !== b.size) return false;\n      const unmatched: any[] = [...b];\n      for (const value of a) {\n        const index: number = unmatched.findIndex((candidate) =>\n          next(value, candidate),\n        );\n        if (index === -1) return false;\n        unmatched.splice(index, 1);\n      }\n      return true;\n    }\n    if (a instanceof Map) {\n      if (!(b instanceof Map) || a.size !== b.size) return false;\n      const unmatched: [any, any][] = [...b];\n      for (const [key, value] of a) {\n        const index: number = unmatched.findIndex(\n          ([candidateKey, candidateValue]) =>\n            next(key, candidateKey) && next(value, candidateValue),\n        );\n        if (index === -1) return false;\n        unmatched.splice(index, 1);\n      }\n      return true;\n    }\n\n    if (a instanceof Boolean)\n      return b instanceof Boolean && a.valueOf() === b.valueOf();\n    if (Object.prototype.toString.call(a) === \"[object BigInt]\")\n      return (\n        Object.prototype.toString.call(b) === \"[object BigInt]\" &&\n        a.valueOf() === b.valueOf()\n      );\n    if (Object.prototype.toString.call(a) === \"[object Symbol]\")\n      return (\n        Object.prototype.toString.call(b) === \"[object Symbol]\" &&\n        a.valueOf() === b.valueOf()\n      );\n    if (a instanceof Number)\n      return b instanceof Number && a.valueOf() === b.valueOf();\n    if (a instanceof String)\n      return b instanceof String && a.valueOf() === b.valueOf();\n    if (a instanceof Date)\n      return b instanceof Date && a.getTime() === b.getTime();\n    if (a instanceof RegExp)\n      return (\n        b instanceof RegExp && a.source === b.source && a.flags === b.flags\n      );\n\n    if (typeof File !== \"undefined\" && a instanceof File)\n      return (\n        b instanceof File &&\n        a.name === b.name &&\n        a.size === b.size &&\n        a.type === b.type &&\n        a.lastModified === b.lastModified\n      );\n    if (typeof Blob !== \"undefined\" && a instanceof Blob)\n      return b instanceof Blob && a.size === b.size && a.type === b.type;\n\n    if (a instanceof DataView) {\n      if (!(b instanceof DataView) || a.byteLength !== b.byteLength)\n        return false;\n      return bytes(a.buffer, a.byteOffset, a.byteLength).every(\n        (value, index) =>\n          value === bytes(b.buffer, b.byteOffset, b.byteLength)[index],\n      );\n    }\n    if (ArrayBuffer.isView(a)) {\n      if (\n        !ArrayBuffer.isView(b) ||\n        b instanceof DataView ||\n        Object.getPrototypeOf(a) !== Object.getPrototypeOf(b) ||\n        a.byteLength !== b.byteLength\n      )\n        return false;\n      const x: Uint8Array = bytes(a.buffer, a.byteOffset, a.byteLength);\n      const y: Uint8Array = bytes(b.buffer, b.byteOffset, b.byteLength);\n      return x.every((value, index) => value === y[index]);\n    }\n    if (a instanceof ArrayBuffer)\n      return (\n        b instanceof ArrayBuffer &&\n        a.byteLength === b.byteLength &&\n        bytes(a).every((value, index) => value === bytes(b)[index])\n      );\n    if (\n      typeof SharedArrayBuffer !== \"undefined\" &&\n      a instanceof SharedArrayBuffer\n    )\n      return (\n        b instanceof SharedArrayBuffer &&\n        a.byteLength === b.byteLength &&\n        bytes(a).every((value, index) => value === bytes(b)[index])\n      );\n\n    const keys: PropertyKey[] = Reflect.ownKeys(a).filter((key) =>\n      Object.prototype.propertyIsEnumerable.call(a, key),\n    );\n    return (\n      keys.length ===\n        Reflect.ownKeys(b).filter((key) =>\n          Object.prototype.propertyIsEnumerable.call(b, key),\n        ).length &&\n      keys.every(\n        (key) =>\n          Object.prototype.propertyIsEnumerable.call(b, key) &&\n          next((a as any)[key], (b as any)[key]),\n      )\n    );\n  };\n  return next;\n};\n\nconst bytes = (\n  buffer: ArrayBufferLike,\n  byteOffset: number = 0,\n  byteLength: number = buffer.byteLength,\n): Uint8Array => new Uint8Array(buffer, byteOffset, byteLength);\n"],"mappings":"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"}