{"version":3,"file":"clone.cjs","sources":["../../../src/types/clone/clone.ts"],"sourcesContent":["import { VALUE_TYPES } from '../data';\nimport { typeOf } from '../typeOf';\nimport type { InstanceClone } from '../types';\nimport { cloneArrayDeep } from './cloneArrayDeep';\nimport { cloneObjectDeep } from './cloneObjectDeep';\nimport { cloneShallow } from './cloneShallow';\n\n/**\n * Recursively (deep) clones native types, like Object, Array, RegExp, Date, Map, Set, Symbol, Error as well as primitives.\n */\nexport function clone<T>(\n  value: T,\n  instanceClone: InstanceClone<T> = false,\n): T {\n  const type = typeOf(value);\n\n  switch (type) {\n    case VALUE_TYPES.object: {\n      return cloneObjectDeep(value, instanceClone);\n    }\n\n    case VALUE_TYPES.array:\n    case VALUE_TYPES.int8array:\n    case VALUE_TYPES.uint8array:\n    case VALUE_TYPES.uint8clampedarray:\n    case VALUE_TYPES.int16array:\n    case VALUE_TYPES.uint16array:\n    case VALUE_TYPES.int32array:\n    case VALUE_TYPES.uint32array:\n    case VALUE_TYPES.float32array:\n    case VALUE_TYPES.float64array:\n    case VALUE_TYPES.bigint64array:\n    case VALUE_TYPES.biguint64array: {\n      return cloneArrayDeep(value, instanceClone);\n    }\n\n    default: {\n      return cloneShallow(value);\n    }\n  }\n}\n"],"names":["typeOf","VALUE_TYPES","cloneObjectDeep","cloneArrayDeep","cloneShallow"],"mappings":";;;;;;;;AAOA;;AAEG;SACa,KAAK,CACnB,KAAQ,EACR,gBAAkC,KAAK,EAAA;AAEvC,IAAA,MAAM,IAAI,GAAGA,aAAM,CAAC,KAAK,CAAC,CAAC;IAE3B,QAAQ,IAAI;AACV,QAAA,KAAKC,gBAAW,CAAC,MAAM,EAAE;AACvB,YAAA,OAAOC,+BAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SAC9C;QAED,KAAKD,gBAAW,CAAC,KAAK,CAAC;QACvB,KAAKA,gBAAW,CAAC,SAAS,CAAC;QAC3B,KAAKA,gBAAW,CAAC,UAAU,CAAC;QAC5B,KAAKA,gBAAW,CAAC,iBAAiB,CAAC;QACnC,KAAKA,gBAAW,CAAC,UAAU,CAAC;QAC5B,KAAKA,gBAAW,CAAC,WAAW,CAAC;QAC7B,KAAKA,gBAAW,CAAC,UAAU,CAAC;QAC5B,KAAKA,gBAAW,CAAC,WAAW,CAAC;QAC7B,KAAKA,gBAAW,CAAC,YAAY,CAAC;QAC9B,KAAKA,gBAAW,CAAC,YAAY,CAAC;QAC9B,KAAKA,gBAAW,CAAC,aAAa,CAAC;AAC/B,QAAA,KAAKA,gBAAW,CAAC,cAAc,EAAE;AAC/B,YAAA,OAAOE,6BAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SAC7C;QAED,SAAS;AACP,YAAA,OAAOC,yBAAY,CAAC,KAAK,CAAC,CAAC;SAC5B;KACF;AACH;;;;"}