{"version":3,"file":"deepcopy.mjs","sources":["../node_modules/type-detect/type-detect.js","../src/buffer.mjs","../src/detector.mjs","../src/collection.mjs","../src/global.mjs","../src/copy_map.mjs","../src/copier.mjs","../src/index.mjs"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.typeDetect = factory());\n}(this, (function () { 'use strict';\n\n/* !\n * type-detect\n * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\nvar promiseExists = typeof Promise === 'function';\n\n/* eslint-disable no-undef */\nvar globalObject = typeof self === 'object' ? self : global; // eslint-disable-line id-blacklist\n\nvar symbolExists = typeof Symbol !== 'undefined';\nvar mapExists = typeof Map !== 'undefined';\nvar setExists = typeof Set !== 'undefined';\nvar weakMapExists = typeof WeakMap !== 'undefined';\nvar weakSetExists = typeof WeakSet !== 'undefined';\nvar dataViewExists = typeof DataView !== 'undefined';\nvar symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\nvar symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\nvar setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\nvar mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\nvar setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\nvar mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\nvar arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\nvar arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\nvar stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\nvar stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\nvar toStringLeftSliceLength = 8;\nvar toStringRightSliceLength = -1;\n/**\n * ### typeOf (obj)\n *\n * Uses `Object.prototype.toString` to determine the type of an object,\n * normalising behaviour across engine versions & well optimised.\n *\n * @param {Mixed} object\n * @return {String} object type\n * @api public\n */\nfunction typeDetect(obj) {\n  /* ! Speed optimisation\n   * Pre:\n   *   string literal     x 3,039,035 ops/sec ±1.62% (78 runs sampled)\n   *   boolean literal    x 1,424,138 ops/sec ±4.54% (75 runs sampled)\n   *   number literal     x 1,653,153 ops/sec ±1.91% (82 runs sampled)\n   *   undefined          x 9,978,660 ops/sec ±1.92% (75 runs sampled)\n   *   function           x 2,556,769 ops/sec ±1.73% (77 runs sampled)\n   * Post:\n   *   string literal     x 38,564,796 ops/sec ±1.15% (79 runs sampled)\n   *   boolean literal    x 31,148,940 ops/sec ±1.10% (79 runs sampled)\n   *   number literal     x 32,679,330 ops/sec ±1.90% (78 runs sampled)\n   *   undefined          x 32,363,368 ops/sec ±1.07% (82 runs sampled)\n   *   function           x 31,296,870 ops/sec ±0.96% (83 runs sampled)\n   */\n  var typeofObj = typeof obj;\n  if (typeofObj !== 'object') {\n    return typeofObj;\n  }\n\n  /* ! Speed optimisation\n   * Pre:\n   *   null               x 28,645,765 ops/sec ±1.17% (82 runs sampled)\n   * Post:\n   *   null               x 36,428,962 ops/sec ±1.37% (84 runs sampled)\n   */\n  if (obj === null) {\n    return 'null';\n  }\n\n  /* ! Spec Conformance\n   * Test: `Object.prototype.toString.call(window)``\n   *  - Node === \"[object global]\"\n   *  - Chrome === \"[object global]\"\n   *  - Firefox === \"[object Window]\"\n   *  - PhantomJS === \"[object Window]\"\n   *  - Safari === \"[object Window]\"\n   *  - IE 11 === \"[object Window]\"\n   *  - IE Edge === \"[object Window]\"\n   * Test: `Object.prototype.toString.call(this)``\n   *  - Chrome Worker === \"[object global]\"\n   *  - Firefox Worker === \"[object DedicatedWorkerGlobalScope]\"\n   *  - Safari Worker === \"[object DedicatedWorkerGlobalScope]\"\n   *  - IE 11 Worker === \"[object WorkerGlobalScope]\"\n   *  - IE Edge Worker === \"[object WorkerGlobalScope]\"\n   */\n  if (obj === globalObject) {\n    return 'global';\n  }\n\n  /* ! Speed optimisation\n   * Pre:\n   *   array literal      x 2,888,352 ops/sec ±0.67% (82 runs sampled)\n   * Post:\n   *   array literal      x 22,479,650 ops/sec ±0.96% (81 runs sampled)\n   */\n  if (\n    Array.isArray(obj) &&\n    (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))\n  ) {\n    return 'Array';\n  }\n\n  // Not caching existence of `window` and related properties due to potential\n  // for `window` to be unset before tests in quasi-browser environments.\n  if (typeof window === 'object' && window !== null) {\n    /* ! Spec Conformance\n     * (https://html.spec.whatwg.org/multipage/browsers.html#location)\n     * WhatWG HTML$7.7.3 - The `Location` interface\n     * Test: `Object.prototype.toString.call(window.location)``\n     *  - IE <=11 === \"[object Object]\"\n     *  - IE Edge <=13 === \"[object Object]\"\n     */\n    if (typeof window.location === 'object' && obj === window.location) {\n      return 'Location';\n    }\n\n    /* ! Spec Conformance\n     * (https://html.spec.whatwg.org/#document)\n     * WhatWG HTML$3.1.1 - The `Document` object\n     * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n     *       (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-26809268)\n     *       which suggests that browsers should use HTMLTableCellElement for\n     *       both TD and TH elements. WhatWG separates these.\n     *       WhatWG HTML states:\n     *         > For historical reasons, Window objects must also have a\n     *         > writable, configurable, non-enumerable property named\n     *         > HTMLDocument whose value is the Document interface object.\n     * Test: `Object.prototype.toString.call(document)``\n     *  - Chrome === \"[object HTMLDocument]\"\n     *  - Firefox === \"[object HTMLDocument]\"\n     *  - Safari === \"[object HTMLDocument]\"\n     *  - IE <=10 === \"[object Document]\"\n     *  - IE 11 === \"[object HTMLDocument]\"\n     *  - IE Edge <=13 === \"[object HTMLDocument]\"\n     */\n    if (typeof window.document === 'object' && obj === window.document) {\n      return 'Document';\n    }\n\n    if (typeof window.navigator === 'object') {\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/multipage/webappapis.html#mimetypearray)\n       * WhatWG HTML$8.6.1.5 - Plugins - Interface MimeTypeArray\n       * Test: `Object.prototype.toString.call(navigator.mimeTypes)``\n       *  - IE <=10 === \"[object MSMimeTypesCollection]\"\n       */\n      if (typeof window.navigator.mimeTypes === 'object' &&\n          obj === window.navigator.mimeTypes) {\n        return 'MimeTypeArray';\n      }\n\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n       * WhatWG HTML$8.6.1.5 - Plugins - Interface PluginArray\n       * Test: `Object.prototype.toString.call(navigator.plugins)``\n       *  - IE <=10 === \"[object MSPluginsCollection]\"\n       */\n      if (typeof window.navigator.plugins === 'object' &&\n          obj === window.navigator.plugins) {\n        return 'PluginArray';\n      }\n    }\n\n    if ((typeof window.HTMLElement === 'function' ||\n        typeof window.HTMLElement === 'object') &&\n        obj instanceof window.HTMLElement) {\n      /* ! Spec Conformance\n      * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n      * WhatWG HTML$4.4.4 - The `blockquote` element - Interface `HTMLQuoteElement`\n      * Test: `Object.prototype.toString.call(document.createElement('blockquote'))``\n      *  - IE <=10 === \"[object HTMLBlockElement]\"\n      */\n      if (obj.tagName === 'BLOCKQUOTE') {\n        return 'HTMLQuoteElement';\n      }\n\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/#htmltabledatacellelement)\n       * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableDataCellElement`\n       * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n       *       (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n       *       which suggests that browsers should use HTMLTableCellElement for\n       *       both TD and TH elements. WhatWG separates these.\n       * Test: Object.prototype.toString.call(document.createElement('td'))\n       *  - Chrome === \"[object HTMLTableCellElement]\"\n       *  - Firefox === \"[object HTMLTableCellElement]\"\n       *  - Safari === \"[object HTMLTableCellElement]\"\n       */\n      if (obj.tagName === 'TD') {\n        return 'HTMLTableDataCellElement';\n      }\n\n      /* ! Spec Conformance\n       * (https://html.spec.whatwg.org/#htmltableheadercellelement)\n       * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableHeaderCellElement`\n       * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n       *       (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n       *       which suggests that browsers should use HTMLTableCellElement for\n       *       both TD and TH elements. WhatWG separates these.\n       * Test: Object.prototype.toString.call(document.createElement('th'))\n       *  - Chrome === \"[object HTMLTableCellElement]\"\n       *  - Firefox === \"[object HTMLTableCellElement]\"\n       *  - Safari === \"[object HTMLTableCellElement]\"\n       */\n      if (obj.tagName === 'TH') {\n        return 'HTMLTableHeaderCellElement';\n      }\n    }\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   Float64Array       x 625,644 ops/sec ±1.58% (80 runs sampled)\n  *   Float32Array       x 1,279,852 ops/sec ±2.91% (77 runs sampled)\n  *   Uint32Array        x 1,178,185 ops/sec ±1.95% (83 runs sampled)\n  *   Uint16Array        x 1,008,380 ops/sec ±2.25% (80 runs sampled)\n  *   Uint8Array         x 1,128,040 ops/sec ±2.11% (81 runs sampled)\n  *   Int32Array         x 1,170,119 ops/sec ±2.88% (80 runs sampled)\n  *   Int16Array         x 1,176,348 ops/sec ±5.79% (86 runs sampled)\n  *   Int8Array          x 1,058,707 ops/sec ±4.94% (77 runs sampled)\n  *   Uint8ClampedArray  x 1,110,633 ops/sec ±4.20% (80 runs sampled)\n  * Post:\n  *   Float64Array       x 7,105,671 ops/sec ±13.47% (64 runs sampled)\n  *   Float32Array       x 5,887,912 ops/sec ±1.46% (82 runs sampled)\n  *   Uint32Array        x 6,491,661 ops/sec ±1.76% (79 runs sampled)\n  *   Uint16Array        x 6,559,795 ops/sec ±1.67% (82 runs sampled)\n  *   Uint8Array         x 6,463,966 ops/sec ±1.43% (85 runs sampled)\n  *   Int32Array         x 5,641,841 ops/sec ±3.49% (81 runs sampled)\n  *   Int16Array         x 6,583,511 ops/sec ±1.98% (80 runs sampled)\n  *   Int8Array          x 6,606,078 ops/sec ±1.74% (81 runs sampled)\n  *   Uint8ClampedArray  x 6,602,224 ops/sec ±1.77% (83 runs sampled)\n  */\n  var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n  if (typeof stringTag === 'string') {\n    return stringTag;\n  }\n\n  var objPrototype = Object.getPrototypeOf(obj);\n  /* ! Speed optimisation\n  * Pre:\n  *   regex literal      x 1,772,385 ops/sec ±1.85% (77 runs sampled)\n  *   regex constructor  x 2,143,634 ops/sec ±2.46% (78 runs sampled)\n  * Post:\n  *   regex literal      x 3,928,009 ops/sec ±0.65% (78 runs sampled)\n  *   regex constructor  x 3,931,108 ops/sec ±0.58% (84 runs sampled)\n  */\n  if (objPrototype === RegExp.prototype) {\n    return 'RegExp';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   date               x 2,130,074 ops/sec ±4.42% (68 runs sampled)\n  * Post:\n  *   date               x 3,953,779 ops/sec ±1.35% (77 runs sampled)\n  */\n  if (objPrototype === Date.prototype) {\n    return 'Date';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise.prototype-@@tostringtag)\n   * ES6$25.4.5.4 - Promise.prototype[@@toStringTag] should be \"Promise\":\n   * Test: `Object.prototype.toString.call(Promise.resolve())``\n   *  - Chrome <=47 === \"[object Object]\"\n   *  - Edge <=20 === \"[object Object]\"\n   *  - Firefox 29-Latest === \"[object Promise]\"\n   *  - Safari 7.1-Latest === \"[object Promise]\"\n   */\n  if (promiseExists && objPrototype === Promise.prototype) {\n    return 'Promise';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   set                x 2,222,186 ops/sec ±1.31% (82 runs sampled)\n  * Post:\n  *   set                x 4,545,879 ops/sec ±1.13% (83 runs sampled)\n  */\n  if (setExists && objPrototype === Set.prototype) {\n    return 'Set';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   map                x 2,396,842 ops/sec ±1.59% (81 runs sampled)\n  * Post:\n  *   map                x 4,183,945 ops/sec ±6.59% (82 runs sampled)\n  */\n  if (mapExists && objPrototype === Map.prototype) {\n    return 'Map';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   weakset            x 1,323,220 ops/sec ±2.17% (76 runs sampled)\n  * Post:\n  *   weakset            x 4,237,510 ops/sec ±2.01% (77 runs sampled)\n  */\n  if (weakSetExists && objPrototype === WeakSet.prototype) {\n    return 'WeakSet';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   weakmap            x 1,500,260 ops/sec ±2.02% (78 runs sampled)\n  * Post:\n  *   weakmap            x 3,881,384 ops/sec ±1.45% (82 runs sampled)\n  */\n  if (weakMapExists && objPrototype === WeakMap.prototype) {\n    return 'WeakMap';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-dataview.prototype-@@tostringtag)\n   * ES6$24.2.4.21 - DataView.prototype[@@toStringTag] should be \"DataView\":\n   * Test: `Object.prototype.toString.call(new DataView(new ArrayBuffer(1)))``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (dataViewExists && objPrototype === DataView.prototype) {\n    return 'DataView';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%mapiteratorprototype%-@@tostringtag)\n   * ES6$23.1.5.2.2 - %MapIteratorPrototype%[@@toStringTag] should be \"Map Iterator\":\n   * Test: `Object.prototype.toString.call(new Map().entries())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (mapExists && objPrototype === mapIteratorPrototype) {\n    return 'Map Iterator';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%setiteratorprototype%-@@tostringtag)\n   * ES6$23.2.5.2.2 - %SetIteratorPrototype%[@@toStringTag] should be \"Set Iterator\":\n   * Test: `Object.prototype.toString.call(new Set().entries())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (setExists && objPrototype === setIteratorPrototype) {\n    return 'Set Iterator';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%arrayiteratorprototype%-@@tostringtag)\n   * ES6$22.1.5.2.2 - %ArrayIteratorPrototype%[@@toStringTag] should be \"Array Iterator\":\n   * Test: `Object.prototype.toString.call([][Symbol.iterator]())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n    return 'Array Iterator';\n  }\n\n  /* ! Spec Conformance\n   * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%stringiteratorprototype%-@@tostringtag)\n   * ES6$21.1.5.2.2 - %StringIteratorPrototype%[@@toStringTag] should be \"String Iterator\":\n   * Test: `Object.prototype.toString.call(''[Symbol.iterator]())``\n   *  - Edge <=13 === \"[object Object]\"\n   */\n  if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n    return 'String Iterator';\n  }\n\n  /* ! Speed optimisation\n  * Pre:\n  *   object from null   x 2,424,320 ops/sec ±1.67% (76 runs sampled)\n  * Post:\n  *   object from null   x 5,838,000 ops/sec ±0.99% (84 runs sampled)\n  */\n  if (objPrototype === null) {\n    return 'Object';\n  }\n\n  return Object\n    .prototype\n    .toString\n    .call(obj)\n    .slice(toStringLeftSliceLength, toStringRightSliceLength);\n}\n\nreturn typeDetect;\n\n})));\n","const isBufferExists = typeof Buffer !== 'undefined';\nconst isBufferFromExists = isBufferExists && typeof Buffer.from !== 'undefined';\n\nexport const isBuffer = isBufferExists\n  ? /**\n     * is value is Buffer?\n     *\n     * @param {*} value\n     * @return {boolean}\n     */\n    function isBuffer(value) {\n      return Buffer.isBuffer(value);\n    }\n  : /**\n     * return false\n     *\n     * NOTE: for Buffer unsupported\n     *\n     * @return {boolean}\n     */\n    function isBuffer() {\n      return false;\n    };\n\nexport const copy = isBufferFromExists\n  ? /**\n     * copy Buffer\n     *\n     * @param {Buffer} value\n     * @return {Buffer}\n     */\n    function copy(value) {\n      return Buffer.from(value);\n    }\n  : isBufferExists\n  ? /**\n     * copy Buffer\n     *\n     * NOTE: for old node.js\n     *\n     * @param {Buffer} value\n     * @return {Buffer}\n     */\n    function copy(value) {\n      return new Buffer(value);\n    }\n  : /**\n     * shallow copy\n     *\n     * NOTE: for Buffer unsupported\n     *\n     * @param {*}\n     * @return {*}\n     */\n    function copy(value) {\n      return value;\n    };\n","import typeDetect from 'type-detect';\n\nimport { isBuffer } from './buffer.mjs';\n\n/**\n * detect type of value\n *\n * @param {*} value\n * @return {string}\n */\nexport function detectType(value) {\n  // NOTE: isBuffer must execute before type-detect,\n  // because type-detect returns 'Uint8Array'.\n  if (isBuffer(value)) {\n    return 'Buffer';\n  }\n\n  return typeDetect(value);\n}\n","import { detectType } from './detector.mjs';\n\n/**\n * collection types\n */\nconst collectionTypeSet = new Set([\n  'Arguments',\n  'Array',\n  'Map',\n  'Object',\n  'Set'\n]);\n\n/**\n * get value from collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {string} [type=null]\n * @return {*}\n */\nexport function get(collection, key, type = null) {\n  const valueType = type || detectType(collection);\n\n  switch (valueType) {\n    case 'Arguments':\n    case 'Array':\n    case 'Object':\n      return collection[key];\n    case 'Map':\n      return collection.get(key);\n    case 'Set':\n      // NOTE: Set.prototype.keys is alias of Set.prototype.values\n      // it means key is equals value\n      return key;\n    default:\n  }\n}\n\n/**\n * check to type string is collection\n *\n * @param {string} type\n */\nexport function isCollection(type) {\n  return collectionTypeSet.has(type);\n}\n\n/**\n * set value to collection\n *\n * @param {Array|Object|Map|Set} collection\n * @param {string|number|symbol} key\n * @param {*} value\n * @param {string} [type=null]\n * @return {Array|Object|Map|Set}\n */\nexport function set(collection, key, value, type = null) {\n  const valueType = type || detectType(collection);\n\n  switch (valueType) {\n    case 'Arguments':\n    case 'Array':\n    case 'Object':\n      collection[key] = value;\n      break;\n    case 'Map':\n      collection.set(key, value);\n      break;\n    case 'Set':\n      collection.add(value);\n      break;\n    default:\n  }\n\n  return collection;\n}\n","const freeGlobalThis =\n  typeof globalThis !== 'undefined' &&\n  globalThis !== null &&\n  globalThis.Object === Object &&\n  globalThis;\n\nconst freeGlobal =\n  typeof global !== 'undefined' &&\n  global !== null &&\n  global.Object === Object &&\n  global;\n\nconst freeSelf =\n  typeof self !== 'undefined' &&\n  self !== null &&\n  self.Object === Object &&\n  self;\n\nexport const globalObject =\n  freeGlobalThis || freeGlobal || freeSelf || Function('return this')();\n","import { copy as cloneBuffer } from './buffer.mjs';\nimport { globalObject } from './global.mjs';\n\n/**\n * copy ArrayBuffer\n *\n * @param {ArrayBuffer} value\n * @return {ArrayBuffer}\n */\nfunction copyArrayBuffer(value) {\n  return value.slice(0);\n}\n\n/**\n * copy Boolean\n *\n * @param {Boolean} value\n * @return {Boolean}\n */\nfunction copyBoolean(value) {\n  return new Boolean(value.valueOf());\n}\n\n/**\n * copy DataView\n *\n * @param {DataView} value\n * @return {DataView}\n */\nfunction copyDataView(value) {\n  // TODO: copy ArrayBuffer?\n  return new DataView(value.buffer);\n}\n\n/**\n * copy Buffer\n *\n * @param {Buffer} value\n * @return {Buffer}\n */\nfunction copyBuffer(value) {\n  return cloneBuffer(value);\n}\n\n/**\n * copy Date\n *\n * @param {Date} value\n * @return {Date}\n */\nfunction copyDate(value) {\n  return new Date(value.getTime());\n}\n\n/**\n * copy Number\n *\n * @param {Number} value\n * @return {Number}\n */\nfunction copyNumber(value) {\n  return new Number(value);\n}\n\n/**\n * copy RegExp\n *\n * @param {RegExp} value\n * @return {RegExp}\n */\nfunction copyRegExp(value) {\n  return new RegExp(value.source || '(?:)', value.flags);\n}\n\n/**\n * copy String\n *\n * @param {String} value\n * @return {String}\n */\nfunction copyString(value) {\n  return new String(value);\n}\n\n/**\n * copy TypedArray\n *\n * @param {*} value\n * @return {*}\n */\nfunction copyTypedArray(value, type) {\n  return globalObject[type].from(value);\n}\n\n/**\n * shallow copy\n *\n * @param {*} value\n * @return {*}\n */\nfunction shallowCopy(value) {\n  return value;\n}\n\n/**\n * get empty Array\n *\n * @return {Array}\n */\nfunction getEmptyArray() {\n  return [];\n}\n\n/**\n * get empty Map\n *\n * @return {Map}\n */\nfunction getEmptyMap() {\n  return new Map();\n}\n\n/**\n * get empty Object\n *\n * @return {Object}\n */\nfunction getEmptyObject() {\n  return {};\n}\n\n/**\n * get empty Set\n *\n * @return {Set}\n */\nfunction getEmptySet() {\n  return new Set();\n}\n\nexport default new Map([\n  // deep copy\n  ['ArrayBuffer', copyArrayBuffer],\n  ['Boolean', copyBoolean],\n  ['Buffer', copyBuffer],\n  ['DataView', copyDataView],\n  ['Date', copyDate],\n  ['Number', copyNumber],\n  ['RegExp', copyRegExp],\n  ['String', copyString],\n\n  // typed arrays\n  // TODO: pass bound function\n  ['Float32Array', copyTypedArray],\n  ['Float64Array', copyTypedArray],\n  ['Int16Array', copyTypedArray],\n  ['Int32Array', copyTypedArray],\n  ['Int8Array', copyTypedArray],\n  ['Uint16Array', copyTypedArray],\n  ['Uint32Array', copyTypedArray],\n  ['Uint8Array', copyTypedArray],\n  ['Uint8ClampedArray', copyTypedArray],\n\n  // shallow copy\n  ['Array Iterator', shallowCopy],\n  ['Map Iterator', shallowCopy],\n  ['Promise', shallowCopy],\n  ['Set Iterator', shallowCopy],\n  ['String Iterator', shallowCopy],\n  ['function', shallowCopy],\n  ['global', shallowCopy],\n  // NOTE: WeakMap and WeakSet cannot get entries\n  ['WeakMap', shallowCopy],\n  ['WeakSet', shallowCopy],\n\n  // primitives\n  ['boolean', shallowCopy],\n  ['null', shallowCopy],\n  ['number', shallowCopy],\n  ['string', shallowCopy],\n  ['symbol', shallowCopy],\n  ['undefined', shallowCopy],\n\n  // collections\n  // NOTE: return empty value, because recursively copy later.\n  ['Arguments', getEmptyArray],\n  ['Array', getEmptyArray],\n  ['Map', getEmptyMap],\n  ['Object', getEmptyObject],\n  ['Set', getEmptySet]\n\n  // NOTE: type-detect returns following types\n  // 'Location'\n  // 'Document'\n  // 'MimeTypeArray'\n  // 'PluginArray'\n  // 'HTMLQuoteElement'\n  // 'HTMLTableDataCellElement'\n  // 'HTMLTableHeaderCellElement'\n\n  // TODO: is type-detect never return 'object'?\n  // 'object'\n]);\n","import copyMap from './copy_map.mjs';\nimport { detectType } from './detector.mjs';\n\n/**\n * no operation\n */\nfunction noop() {}\n\n/**\n * copy value\n *\n * @param {*} value\n * @param {string} [type=null]\n * @param {Function} [customizer=noop]\n * @return {*}\n */\nexport function copy(value, type = null, customizer = noop) {\n  if (arguments.length === 2 && typeof type === 'function') {\n    customizer = type;\n    type = null;\n  }\n\n  const valueType = type || detectType(value);\n  const copyFunction = copyMap.get(valueType);\n\n  if (valueType === 'Object') {\n    const result = customizer(value, valueType);\n\n    if (result !== undefined) {\n      return result;\n    }\n  }\n\n  // NOTE: TypedArray needs pass type to argument\n  return copyFunction ? copyFunction(value, valueType) : value;\n}\n","import { detectType } from './detector.mjs';\nimport { get, isCollection, set } from './collection.mjs';\nimport { copy } from './copier.mjs';\n\n/**\n * deepcopy function\n *\n * @param {*} value\n * @param {Object|Function} [options]\n * @return {*}\n */\nexport default function deepcopy(value, options = {}) {\n  if (typeof options === 'function') {\n    options = {\n      customizer: options\n    };\n  }\n\n  const {\n    // TODO: before/after customizer\n    customizer\n    // TODO: max depth\n    // depth = Infinity,\n  } = options;\n\n  const valueType = detectType(value);\n\n  if (!isCollection(valueType)) {\n    return recursiveCopy(value, null, null, null, customizer);\n  }\n\n  const copiedValue = copy(value, valueType, customizer);\n\n  const references = new WeakMap([[value, copiedValue]]);\n  const visited = new WeakSet([value]);\n\n  return recursiveCopy(value, copiedValue, references, visited, customizer);\n}\n\n/**\n * recursively copy\n *\n * @param {*} value target value\n * @param {*} clone clone of value\n * @param {WeakMap} references visited references of clone\n * @param {WeakSet} visited visited references of value\n * @param {Function} customizer user customize function\n * @return {*}\n */\nfunction recursiveCopy(value, clone, references, visited, customizer) {\n  const type = detectType(value);\n  const copiedValue = copy(value, type);\n\n  // return if not a collection value\n  if (!isCollection(type)) {\n    return copiedValue;\n  }\n\n  let keys;\n\n  switch (type) {\n    case 'Arguments':\n    case 'Array':\n      keys = Object.keys(value);\n      break;\n    case 'Object':\n      keys = Object.keys(value);\n      keys.push(...Object.getOwnPropertySymbols(value));\n      break;\n    case 'Map':\n    case 'Set':\n      keys = value.keys();\n      break;\n    default:\n  }\n\n  // walk within collection with iterator\n  for (let collectionKey of keys) {\n    const collectionValue = get(value, collectionKey, type);\n\n    if (visited.has(collectionValue)) {\n      // for [Circular]\n      set(clone, collectionKey, references.get(collectionValue), type);\n    } else {\n      const collectionValueType = detectType(collectionValue);\n      const copiedCollectionValue = copy(collectionValue, collectionValueType);\n\n      // save reference if value is collection\n      if (isCollection(collectionValueType)) {\n        references.set(collectionValue, copiedCollectionValue);\n        visited.add(collectionValue);\n      }\n\n      set(\n        clone,\n        collectionKey,\n        recursiveCopy(\n          collectionValue,\n          copiedCollectionValue,\n          references,\n          visited,\n          customizer\n        ),\n        type\n      );\n    }\n  }\n\n  // TODO: isSealed/isFrozen/isExtensible\n\n  return clone;\n}\n"],"names":["this","global","cloneBuffer","copy"],"mappings":"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"}