{"version":3,"file":"index.cjs","sources":["../../../src/utils.ts","../../../src/copier.ts","../../../src/options.ts","../../../src/index.ts"],"sourcesContent":["export interface Cache {\n  has: (value: any) => boolean;\n  set: (key: any, value: any) => void;\n  get: (key: any) => any;\n}\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toStringFunction = Function.prototype.toString;\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toStringObject = Object.prototype.toString;\n\n/**\n * Get an empty version of the object with the same prototype it has.\n */\nexport function getCleanClone(prototype: any): any {\n  if (!prototype) {\n    return Object.create(null);\n  }\n\n  const Constructor = prototype.constructor;\n\n  if (Constructor === Object) {\n    return prototype === Object.prototype ? {} : Object.create(prototype as object | null);\n  }\n\n  if (Constructor && ~toStringFunction.call(Constructor).indexOf('[native code]')) {\n    try {\n      return new Constructor();\n    } catch {\n      // Ignore\n    }\n  }\n\n  return Object.create(prototype as object | null);\n}\n\n/**\n * Get the tag of the value passed, so that the correct copier can be used.\n */\nexport function getTag(value: any): string {\n  const stringTag = value[Symbol.toStringTag];\n\n  if (stringTag) {\n    return stringTag;\n  }\n\n  const type = toStringObject.call(value);\n\n  return type.substring(8, type.length - 1);\n}\n","import { getCleanClone } from './utils.js';\nimport type { Cache } from './utils.ts';\n\nexport type InternalCopier<Value> = (value: Value, state: State) => Value;\n\nexport interface State {\n  Constructor: any;\n  cache: Cache;\n  copier: InternalCopier<any>;\n  prototype: any;\n}\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { hasOwnProperty, propertyIsEnumerable } = Object.prototype;\n\nfunction copyOwnDescriptor<Value extends object>(\n  original: Value,\n  clone: Value,\n  property: string | symbol,\n  state: State,\n): void {\n  const ownDescriptor = Object.getOwnPropertyDescriptor(original, property) || {\n    configurable: true,\n    enumerable: true,\n    value: original[property as keyof Value],\n    writable: true,\n  };\n  const descriptor =\n    ownDescriptor.get || ownDescriptor.set\n      ? ownDescriptor\n      : {\n          configurable: ownDescriptor.configurable,\n          enumerable: ownDescriptor.enumerable,\n          value: state.copier(ownDescriptor.value, state),\n          writable: ownDescriptor.writable,\n        };\n\n  try {\n    Object.defineProperty(clone, property, descriptor);\n  } catch {\n    // The above can fail on node in extreme edge cases, so fall back to the loose assignment.\n    clone[property as keyof Value] = descriptor.get ? descriptor.get() : descriptor.value;\n  }\n}\n\n/**\n * Striclty copy all properties contained on the object.\n */\nfunction copyOwnPropertiesStrict<Value extends object>(value: Value, clone: Value, state: State): Value {\n  const names = Object.getOwnPropertyNames(value);\n\n  for (let index = 0; index < names.length; ++index) {\n    copyOwnDescriptor(value, clone, names[index]!, state);\n  }\n\n  const symbols = Object.getOwnPropertySymbols(value);\n\n  for (let index = 0; index < symbols.length; ++index) {\n    copyOwnDescriptor(value, clone, symbols[index]!, state);\n  }\n\n  return clone;\n}\n\n/**\n * Deeply copy the indexed values in the array.\n */\nexport function copyArrayLoose(array: any[], state: State) {\n  const clone = new state.Constructor();\n\n  // set in the cache immediately to be able to reuse the object recursively\n  state.cache.set(array, clone);\n\n  for (let index = 0; index < array.length; ++index) {\n    clone[index] = state.copier(array[index], state);\n  }\n\n  return clone;\n}\n\n/**\n * Deeply copy the indexed values in the array, as well as any custom properties.\n */\nexport function copyArrayStrict<Value extends any[]>(array: Value, state: State) {\n  const clone = new state.Constructor() as Value;\n\n  // set in the cache immediately to be able to reuse the object recursively\n  state.cache.set(array, clone);\n\n  return copyOwnPropertiesStrict(array, clone, state);\n}\n\n/**\n * Copy the contents of the ArrayBuffer.\n */\nexport function copyArrayBuffer<Value extends ArrayBufferLike>(arrayBuffer: Value, _state: State): Value {\n  return arrayBuffer.slice(0) as Value;\n}\n\n/**\n * Create a new Blob with the contents of the original.\n */\nexport function copyBlob<Value extends Blob>(blob: Value, _state: State): Value {\n  return blob.slice(0, blob.size, blob.type) as Value;\n}\n\n/**\n * Create a new DataView with the contents of the original.\n */\nexport function copyDataView<Value extends DataView>(dataView: Value, state: State): Value {\n  return new state.Constructor(copyArrayBuffer(dataView.buffer, state));\n}\n\n/**\n * Create a new Date based on the time of the original.\n */\nexport function copyDate<Value extends Date>(date: Value, state: State): Value {\n  return new state.Constructor(date.getTime());\n}\n\n/**\n * Deeply copy the keys and values of the original.\n */\nexport function copyMapLoose<Value extends Map<any, any>>(map: Value, state: State): Value {\n  const clone = new state.Constructor() as Value;\n\n  // set in the cache immediately to be able to reuse the object recursively\n  state.cache.set(map, clone);\n\n  map.forEach((value, key) => {\n    clone.set(key, state.copier(value, state));\n  });\n\n  return clone;\n}\n\n/**\n * Deeply copy the keys and values of the original, as well as any custom properties.\n */\nexport function copyMapStrict<Value extends Map<any, any>>(map: Value, state: State) {\n  return copyOwnPropertiesStrict(map, copyMapLoose(map, state), state);\n}\n\n/**\n * Deeply copy the properties (keys and symbols) and values of the original.\n */\nexport function copyObjectLoose<Value extends Record<string, any>>(object: Value, state: State): Value {\n  const clone = getCleanClone(state.prototype);\n\n  // set in the cache immediately to be able to reuse the object recursively\n  state.cache.set(object, clone);\n\n  for (const key in object) {\n    if (hasOwnProperty.call(object, key)) {\n      clone[key] = state.copier(object[key], state);\n    }\n  }\n\n  const symbols = Object.getOwnPropertySymbols(object);\n\n  for (let index = 0; index < symbols.length; ++index) {\n    const symbol = symbols[index]!;\n\n    if (propertyIsEnumerable.call(object, symbol)) {\n      clone[symbol] = state.copier((object as any)[symbol], state);\n    }\n  }\n\n  return clone;\n}\n\n/**\n * Deeply copy the properties (keys and symbols) and values of the original, as well\n * as any hidden or non-enumerable properties.\n */\nexport function copyObjectStrict<Value extends Record<string, any>>(object: Value, state: State): Value {\n  const clone = getCleanClone(state.prototype);\n\n  // set in the cache immediately to be able to reuse the object recursively\n  state.cache.set(object, clone);\n\n  return copyOwnPropertiesStrict(object, clone, state);\n}\n\n/**\n * Create a new primitive wrapper from the value of the original.\n */\nexport function copyPrimitiveWrapper<\n  // Specifically use the object constructor types\n  // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n  Value extends Boolean | Number | String,\n>(primitiveObject: Value, state: State): Value {\n  return new state.Constructor(primitiveObject.valueOf());\n}\n\n/**\n * Create a new RegExp based on the value and flags of the original.\n */\nexport function copyRegExp<Value extends RegExp>(regExp: Value, state: State): Value {\n  const clone = new state.Constructor(regExp.source, regExp.flags) as Value;\n\n  clone.lastIndex = regExp.lastIndex;\n\n  return clone;\n}\n\n/**\n * Return the original value (an identity function).\n *\n * @note\n * THis is used for objects that cannot be copied, such as WeakMap.\n */\nexport function copySelf<Value>(value: Value, _state: State): Value {\n  return value;\n}\n\n/**\n * Deeply copy the values of the original.\n */\nexport function copySetLoose<Value extends Set<any>>(set: Value, state: State): Value {\n  const clone = new state.Constructor() as Value;\n\n  // set in the cache immediately to be able to reuse the object recursively\n  state.cache.set(set, clone);\n\n  set.forEach((value) => {\n    clone.add(state.copier(value, state));\n  });\n\n  return clone;\n}\n\n/**\n * Deeply copy the values of the original, as well as any custom properties.\n */\nexport function copySetStrict<Value extends Set<any>>(set: Value, state: State): Value {\n  return copyOwnPropertiesStrict(set, copySetLoose(set, state), state);\n}\n","import {\n  copyArrayBuffer,\n  copyArrayLoose,\n  copyArrayStrict,\n  copyBlob,\n  copyDataView,\n  copyDate,\n  copyMapLoose,\n  copyMapStrict,\n  copyObjectLoose,\n  copyObjectStrict,\n  copyPrimitiveWrapper,\n  copyRegExp,\n  copySelf,\n  copySetLoose,\n  copySetStrict,\n} from './copier.js';\nimport type { InternalCopier } from './copier.ts';\nimport type { Cache } from './utils.ts';\n\nexport interface CopierMethods {\n  array?: InternalCopier<any[]>;\n  arrayBuffer?: InternalCopier<ArrayBuffer>;\n  asyncGenerator?: InternalCopier<AsyncGenerator>;\n  blob?: InternalCopier<Blob>;\n  dataView?: InternalCopier<DataView>;\n  date?: InternalCopier<Date>;\n  error?: InternalCopier<Error>;\n  generator?: InternalCopier<Generator>;\n  map?: InternalCopier<Map<any, any>>;\n  object?: InternalCopier<Record<string, any>>;\n  regExp?: InternalCopier<RegExp>;\n  set?: InternalCopier<Set<any>>;\n}\n\ninterface Copiers {\n  [key: string]: InternalCopier<any> | undefined;\n\n  Arguments: InternalCopier<Record<string, any>>;\n  Array: InternalCopier<any[]>;\n  ArrayBuffer: InternalCopier<ArrayBuffer>;\n  AsyncGenerator: InternalCopier<AsyncGenerator>;\n  Blob: InternalCopier<Blob>;\n  // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n  Boolean: InternalCopier<Boolean>;\n  DataView: InternalCopier<DataView>;\n  Date: InternalCopier<Date>;\n  Error: InternalCopier<Error>;\n  Float32Array: InternalCopier<ArrayBuffer>;\n  Float64Array: InternalCopier<ArrayBuffer>;\n  Generator: InternalCopier<Generator>;\n\n  Int8Array: InternalCopier<ArrayBuffer>;\n  Int16Array: InternalCopier<ArrayBuffer>;\n  Int32Array: InternalCopier<ArrayBuffer>;\n  Map: InternalCopier<Map<any, any>>;\n  // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n  Number: InternalCopier<Number>;\n  Object: InternalCopier<Record<string, any>>;\n  Promise: InternalCopier<Promise<any>>;\n  RegExp: InternalCopier<RegExp>;\n  Set: InternalCopier<Set<any>>;\n  // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n  String: InternalCopier<String>;\n  WeakMap: InternalCopier<WeakMap<any, any>>;\n  WeakSet: InternalCopier<WeakSet<any>>;\n  Uint8Array: InternalCopier<ArrayBuffer>;\n  Uint8ClampedArray: InternalCopier<ArrayBuffer>;\n  Uint16Array: InternalCopier<ArrayBuffer>;\n  Uint32Array: InternalCopier<ArrayBuffer>;\n  Uint64Array: InternalCopier<ArrayBuffer>;\n}\n\nexport interface CreateCopierOptions {\n  createCache?: () => Cache;\n  methods?: CopierMethods;\n  strict?: boolean;\n}\n\nexport interface RequiredCreateCopierOptions extends Omit<Required<CreateCopierOptions>, 'methods'> {\n  copiers: Copiers;\n  methods: Required<CopierMethods>;\n}\n\nexport function createDefaultCache(): Cache {\n  return new WeakMap();\n}\n\nexport function getOptions({\n  createCache: createCacheOverride,\n  methods: methodsOverride,\n  strict,\n}: CreateCopierOptions): RequiredCreateCopierOptions {\n  const defaultMethods = {\n    array: strict ? copyArrayStrict : copyArrayLoose,\n    arrayBuffer: copyArrayBuffer,\n    asyncGenerator: copySelf,\n    blob: copyBlob,\n    dataView: copyDataView,\n    date: copyDate,\n    error: copySelf,\n    generator: copySelf,\n    map: strict ? copyMapStrict : copyMapLoose,\n    object: strict ? copyObjectStrict : copyObjectLoose,\n    regExp: copyRegExp,\n    set: strict ? copySetStrict : copySetLoose,\n  };\n\n  const methods = methodsOverride ? Object.assign(defaultMethods, methodsOverride) : defaultMethods;\n  const copiers = getTagSpecificCopiers(methods);\n  const createCache = createCacheOverride || createDefaultCache;\n\n  // Extra safety check to ensure that object and array copiers are always provided,\n  // avoiding runtime errors.\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (!copiers.Object || !copiers.Array) {\n    throw new Error('An object and array copier must be provided.');\n  }\n\n  return { createCache, copiers, methods, strict: Boolean(strict) };\n}\n\n/**\n * Get the copiers used for each specific object tag.\n */\nexport function getTagSpecificCopiers(methods: Required<CopierMethods>): Copiers {\n  return {\n    Arguments: methods.object,\n    Array: methods.array,\n    ArrayBuffer: methods.arrayBuffer,\n    AsyncGenerator: methods.asyncGenerator,\n    Blob: methods.blob,\n    Boolean: copyPrimitiveWrapper,\n    DataView: methods.dataView,\n    Date: methods.date,\n    Error: methods.error,\n    Float32Array: methods.arrayBuffer,\n    Float64Array: methods.arrayBuffer,\n    Generator: methods.generator,\n    Int8Array: methods.arrayBuffer,\n    Int16Array: methods.arrayBuffer,\n    Int32Array: methods.arrayBuffer,\n    Map: methods.map,\n    Number: copyPrimitiveWrapper,\n    Object: methods.object,\n    Promise: copySelf,\n    RegExp: methods.regExp,\n    Set: methods.set,\n    String: copyPrimitiveWrapper,\n    WeakMap: copySelf,\n    WeakSet: copySelf,\n    Uint8Array: methods.arrayBuffer,\n    Uint8ClampedArray: methods.arrayBuffer,\n    Uint16Array: methods.arrayBuffer,\n    Uint32Array: methods.arrayBuffer,\n    Uint64Array: methods.arrayBuffer,\n  };\n}\n","import type { State } from './copier.ts';\nimport { getOptions } from './options.js';\nimport type { CreateCopierOptions } from './options.ts';\nimport { getTag } from './utils.js';\n\nexport type { State } from './copier.ts';\nexport type { CreateCopierOptions } from './options.ts';\n\n/**\n * Create a custom copier based on custom options for any of the following:\n *   - `createCache` method to create a cache for copied objects\n *   - custom copier `methods` for specific object types\n *   - `strict` mode to copy all properties with their descriptors\n */\nexport function createCopier(options: CreateCopierOptions = {}) {\n  const { createCache, copiers } = getOptions(options);\n  const { Array: copyArray, Object: copyObject } = copiers;\n\n  function copier(value: any, state: State): any {\n    state.prototype = state.Constructor = undefined;\n\n    if (!value || typeof value !== 'object') {\n      return value;\n    }\n\n    if (state.cache.has(value)) {\n      return state.cache.get(value);\n    }\n\n    state.prototype = Object.getPrototypeOf(value);\n    // Using logical AND for speed, since optional chaining transforms to\n    // a local variable usage.\n    // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n    state.Constructor = state.prototype && state.prototype.constructor;\n\n    // plain objects\n    if (!state.Constructor || state.Constructor === Object) {\n      return copyObject(value as Record<string, any>, state);\n    }\n\n    // arrays\n    if (Array.isArray(value)) {\n      return copyArray(value, state);\n    }\n\n    const tagSpecificCopier = copiers[getTag(value)];\n\n    if (tagSpecificCopier) {\n      return tagSpecificCopier(value, state);\n    }\n\n    return typeof value.then === 'function' ? value : copyObject(value as Record<string, any>, state);\n  }\n\n  return function copy<Value>(value: Value): Value {\n    return copier(value, {\n      Constructor: undefined,\n      cache: createCache(),\n      copier,\n      prototype: undefined,\n    });\n  };\n}\n\n/**\n * Copy an value deeply as much as possible, where strict recreation of object properties\n * are maintained. All properties (including non-enumerable ones) are copied with their\n * original property descriptors on both objects and arrays.\n */\nexport const copyStrict = createCopier({ strict: true });\n\n/**\n * Copy an value deeply as much as possible.\n */\nexport const copy = createCopier();\n"],"names":[],"mappings":"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"}