deepcopy.mjs.map 38 KB

1
  1. {"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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"}