{"_id":"@d-fischer/klona","_rev":"5-d9b12776351f839073c57fd682c8da2b","name":"@d-fischer/klona","dist-tags":{"latest":"1.1.5"},"versions":{"1.1.2":{"name":"@d-fischer/klona","version":"1.1.2","repository":{"type":"git","url":"git+https://github.com/d-fischer/klona.git"},"description":"A tiny (366B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!","module":"dist/klona.mjs","unpkg":"dist/klona.min.js","main":"dist/klona.js","types":"klona.d.ts","license":"MIT","author":{"name":"Daniel Fischer","email":"daniel@d-fischer.dev"},"engines":{"node":">= 8"},"scripts":{"build":"bundt","pretest":"npm run build","test":"tape -r esm test/*.js | tap-spec"},"keywords":["clone","copy","deep","extend","recursive","object"],"devDependencies":{"@d-fischer/bundt":"^1.0.1","esm":"3.2.25","tap-spec":"5.0.0","tape":"4.13.0"},"gitHead":"c8df67636d5c4096b78f313bf62166d359bebf7c","bugs":{"url":"https://github.com/d-fischer/klona/issues"},"homepage":"https://github.com/d-fischer/klona#readme","_id":"@d-fischer/klona@1.1.2","_nodeVersion":"13.8.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-yfZFt0SEFJoHI18eGdocoX2F2bX4jkJzauAc85MXJn+wRjKiaGGweNo/XKmPTm+LSfX9LXog5MFtTh1TwXsqWw==","shasum":"1fee1f3813edb710caae63304d05d97cbbc06f8b","tarball":"https://registry.npmjs.org/@d-fischer/klona/-/klona-1.1.2.tgz","fileCount":7,"unpackedSize":8477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepI4NCRA9TVsSAnZWagAAX54QAJx2cCOzCZoSa5rHQTiv\n9OY4unwd0QeixIaB6g+t7nsy5dg8iKYqQlqn5ziFFsgYcbc6KICaPutNtSZC\nccS8kt/qK0swx7J/ItRhd0f0YRihACQSHgveB0zCDt55xczX3SQwTooGu4EU\nTF5OSUX3mzRJDExh3J6+VPjUGaltJt2XjGYJEIt1wxSLmw112Nia3xbBsg6A\nejQXhijAuJX1qRkAPnCc7PLHS8gxt1HpZpNWnBdEDHh7wD7InB8iASoKPE9l\neYZ2uzVGNRudvYJspxEQJecbr100qeuvEQjZ5tKkfwRjGp3wJC3yxQLwcjls\nPOm3wKyWNs32A2qWSNqSOmylR0mJFi+0MxihqaQhoQ+skA4xO0tsaVD5iiEy\n5fGMOmtdN7/DzXMmLLZCJcDhO8rQokBaxMhOmZmsD5SwSCqZMH95LmLqBo7J\nqbujywnXEeQ23engKnp3oX9sOZ6otX98q3i7GafI990sZKZ59qSMqNdb6rb/\nVhSOjZovZHcclF+J0CHEeYH6DpCVKEiv57pJw4dBHWX3o0zfwsDkcTBCFjMk\n5Inh10q6x297AkyZXbSZLYFj+mk2Kggch4CttOAOWhNFzT0AWpmaBVFO/2eS\nyoxUOCC2Tl4eFmbRnANfpUU2ufEbsfAMFAp9jC1DaJkPXKTNlnE7+pYQlW+1\nvl5x\r\n=BEcf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD26JNBqfwQLeEFflQoQ9Co/r0Nvfh2zFnMEXWdvK+VBQIgB1PQ9ACzlpYwB9Rq80O6Xoy3dUdcmrZoNgUZLpjNfT0="}]},"maintainers":[{"name":"d-fischer","email":"daniel@d-fischer.dev"}],"_npmUser":{"name":"d-fischer","email":"daniel@d-fischer.dev"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/klona_1.1.2_1587842572928_0.20862797088862006"},"_hasShrinkwrap":false,"deprecated":"This fork is now unmaintained, please use the original \"klona\" package"},"1.1.3":{"name":"@d-fischer/klona","version":"1.1.3","repository":{"type":"git","url":"git+https://github.com/d-fischer/klona.git"},"description":"A tiny (366B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!","module":"dist/klona.mjs","unpkg":"dist/klona.min.js","main":"dist/klona.js","types":"klona.d.ts","license":"MIT","author":{"name":"Daniel Fischer","email":"daniel@d-fischer.dev"},"engines":{"node":">= 8"},"scripts":{"build":"bundt","pretest":"npm run build","test":"tape -r esm test/*.js | tap-spec"},"keywords":["clone","copy","deep","extend","recursive","object"],"devDependencies":{"@d-fischer/bundt":"^1.0.2","esm":"3.2.25","tap-spec":"5.0.0","tape":"4.13.0"},"gitHead":"720cdcff7a1c0ed9a0dfff4ab2604cd886086691","bugs":{"url":"https://github.com/d-fischer/klona/issues"},"homepage":"https://github.com/d-fischer/klona#readme","_id":"@d-fischer/klona@1.1.3","_nodeVersion":"13.8.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-JKPqirh8i6K6xnAMsjd+nhCWJvjnh4W/9r4Bk0+H0/pGmimH/rtWfufrIXEL2/+TG1QgWLnJ27PEWDyNZVu+vw==","shasum":"b7abaa41346f8b28d90a41aab0d4adacdd05bf5b","tarball":"https://registry.npmjs.org/@d-fischer/klona/-/klona-1.1.3.tgz","fileCount":7,"unpackedSize":8484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepglMCRA9TVsSAnZWagAAHPcP/1m9IeWKlz5auJmiXHdF\n/Jps30OcVG4onJGD4lxweC9WcfYkrFTETErHOIaOtrInQufLcZtcjCLMbAIZ\n7qbGZD+kQsmso6q9DENsRpYv6UBMKtVzcXNa5U+Biks4cxUbR4VW0grxxtAG\nYsWAcJoEKC5zXgDh5bMWWU/8cbnr0CeIsE6Am8MQdQFv6fMC/sWEtX5W0XI2\nNFKgWA7cJT/TwStg1L/xU053tw61hn6sNdveWdOg44yYOF4oihiasNhdDh0S\nMmJga3nnyAgeCGNkewZf3EU1NuvAVH+WTwwFhGoPkjEPyCtxDJD7dRHLIIjY\ni1dq4Ey1jEwDcE4gX3o6/ScCXK771z4YXv5ntyfrZE4QQ8NEZ65EXO0PhLvg\nejAxdQ7o0lfcmYOJolr8KZ1P1XcASoz/GZ9GC6HMJRFwZ+13r7QMSo5dlweh\nUN5eCSNJxgiLDoKYcxoQTzxeO1obsauw+kqQM6+fWuGHRxq2lCpaM/Zk3r28\nDTGn5hJPMCkXOobo7ZteOGnzOuadssFT0s25IQYKITvrj0pbgzgHAzE7diUc\n5W0ClgxL1bD+ZnoQeKyL0y+RWmS7qJPNiOOLeVaBL5FW5whoat5ONYviOW+C\n5R6fRTI4FQtx0F8j8Gw3zdf2EDsKBMVb9sZYmpn/Pf9/WBAQQspq8nOUGtwj\nfLA/\r\n=t4lF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNrRc2ZK3fgEfXDrof0yrpcWRnBOYzm+1hoL7ReDw1TAiEA8/pCyln+N81kamGPdJ4FIV0wLKRD04Iw3fo67N+utvc="}]},"maintainers":[{"name":"d-fischer","email":"daniel@d-fischer.dev"}],"_npmUser":{"name":"d-fischer","email":"daniel@d-fischer.dev"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/klona_1.1.3_1587939660210_0.13650698910626957"},"_hasShrinkwrap":false,"deprecated":"This fork is now unmaintained, please use the original \"klona\" package"},"1.1.4":{"name":"@d-fischer/klona","version":"1.1.4","repository":{"type":"git","url":"git+https://github.com/d-fischer/klona.git"},"description":"A tiny (366B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!","main":"dist/klona.js","module":"dist/klona.mjs","exports":{".":{"require":"./dist/klona.js","import":"./dist/klona.mjs"}},"unpkg":"dist/klona.min.js","types":"klona.d.ts","license":"MIT","author":{"name":"Daniel Fischer","email":"daniel@d-fischer.dev"},"engines":{"node":">= 8"},"scripts":{"build":"bundt","pretest":"npm run build","test":"tape -r esm test/*.js | tap-spec"},"keywords":["clone","copy","deep","extend","recursive","object"],"devDependencies":{"@d-fischer/bundt":"^1.0.2","esm":"3.2.25","tap-spec":"5.0.0","tape":"4.13.0"},"gitHead":"35229f8ba71af180f63923c0c5b37f69a1c362ae","bugs":{"url":"https://github.com/d-fischer/klona/issues"},"homepage":"https://github.com/d-fischer/klona#readme","_id":"@d-fischer/klona@1.1.4","_nodeVersion":"13.8.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-NtfmReF4MwtWRkp4P9kl11nPzBODlNaB0X6Eg/DXKiIToMjCJ90InF4MOYbwGQANSIAHmTmocYur+teeLlOUsg==","shasum":"a3e5bc95db0c76cea7b8cc6f6653dc53d92b9fb8","tarball":"https://registry.npmjs.org/@d-fischer/klona/-/klona-1.1.4.tgz","fileCount":7,"unpackedSize":8592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepgpQCRA9TVsSAnZWagAAFhUQAJ2EHO7NuNcT+MklkW1H\nZk0/hgGtmGA3tPXh7rqIOdVZDNU1SJXzndHIXz/8cUbPpmKOs9O8B/KdjATo\nuf7qH6QPyeDGeg9WpfYKSf0fy1/9G3JLGO1OfkM+5nX3/PeXGmOhGsIS6iJP\nf16VjHX9oPxJ3XKgL/YwFBHwE8voMl2A8/gBwwEVIig+q8UE+iWddE834T4f\nGfIB4n+J0GUrxBmnS2N4A2oBd0SJnPdE86waZ0U9R1mCGxk18B7XZHo1ftHj\nCE+eh7PZNBN8POoGpIazAkf6cPABSXJi/ymyI3yvodyk13Zs0w+6VcsCrKKr\nlC6bXD5yFqFkWlNG0ziz8ZuX5pEflVt4AHREjSGN2zCDcqu4HnNzbED9bQWS\nQQGo3DK+JCzPiOEeCUsxzQnYxPHZ8OHfr2uetWHnBrjLrGRXx1aMe3Z0d1P4\nRuhhG1sNVJ33qhsrq0haBl7KgIdy0G6ENx9ckoHMKTr3DOF3ST7BonDJiOYt\neAQA+6gwvmwyLLa/mclGPW37Sp6/dsdwrilo6gpxdyvzb646sE4O29olqhCQ\nXjuKYMLqLOQppOezP7YuOrKgkqLyehZktIjq5arbpIqXHBQjQqgwWUP8FgPh\nv9N1GP/twVjgPfhebzIa0qvEuULi72euDAQNc6ADY3LvkMc23EHzwIgi/rID\neyKo\r\n=QtQs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDTxqCGOApjTxyHfulSU/WHV072MncORA2u07Ssl7bCCAiAyAlKk7nyxs5FxdkljhhGkc6yjTXl7Emgdt5tHp+tbUA=="}]},"maintainers":[{"name":"d-fischer","email":"daniel@d-fischer.dev"}],"_npmUser":{"name":"d-fischer","email":"daniel@d-fischer.dev"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/klona_1.1.4_1587939920149_0.4507242505617284"},"_hasShrinkwrap":false,"deprecated":"This fork is now unmaintained, please use the original \"klona\" package"},"1.1.5":{"name":"@d-fischer/klona","version":"1.1.5","repository":{"type":"git","url":"git+https://github.com/d-fischer/klona.git"},"description":"A tiny (366B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!","main":"dist/klona.js","module":"dist/klona.mjs","exports":{".":{"require":"./dist/klona.js","import":"./dist/klona.mjs"}},"unpkg":"dist/klona.min.js","types":"klona.d.ts","license":"MIT","author":{"name":"Daniel Fischer","email":"daniel@d-fischer.dev"},"engines":{"node":">= 8"},"scripts":{"build":"bundt","pretest":"npm run build","test":"tape -r esm test/*.js | tap-spec"},"keywords":["clone","copy","deep","extend","recursive","object"],"devDependencies":{"@d-fischer/bundt":"^1.0.3","esm":"3.2.25","tap-spec":"5.0.0","tape":"4.13.0"},"gitHead":"101308d8b70c6a6a46a0ec416479dd7c334aec83","bugs":{"url":"https://github.com/d-fischer/klona/issues"},"homepage":"https://github.com/d-fischer/klona#readme","_id":"@d-fischer/klona@1.1.5","_nodeVersion":"14.0.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-fdXM0iXtYcGbIxpWpUYsUi7cAMw8jXbJ75OJDFuScL/TXrrtMlZ9JOLpsZFVMzgeBOTpHLefG5KydsZEAzj95Q==","shasum":"f273072fcac6f1078d2ff52e24e1d34c329eca4f","tarball":"https://registry.npmjs.org/@d-fischer/klona/-/klona-1.1.5.tgz","fileCount":7,"unpackedSize":8672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqiGDCRA9TVsSAnZWagAAmtsP/3S5BcUZfm5F/XCMOoPy\nqaUxjdqy6IDqtVFdv0ZyC/e8Ug7uQIxguWNWRFm0dYpV5tszMygDQGsNVo+n\nkiUu5Jcksx/wOeqgBMsQ34BPtGTsuICbGBp/h7XDYKVLmBcxWMmvH7v3xXcx\nlJlc1qoEeJswPNo8pC0aZCGNZSFKBVXWBkvr4YUhvU5Wd8J1lC9YCD7SAEA8\n5wHXWonnxktm3hpM3wfIDIVf3GAzzFDECG5vV2l1JR/8LCsaWWAFunrG1hAS\nsyn2cL7A/bpafFhmX7Hz+mEUaEgs4w216eEDYxT6loS0lbGFSLBCtTpPveqg\nSDx2qGSN7/ZqnMSrdE22S9J6rZJkMD2AKoW8tVNDT7meMoIjSccDTzR2nYjW\nERoPuMcEbVC1Y1RVoKi4XzbVhPqycam9vCsXfW1IZmTZSckrKlVlKURkW8wU\nLiSXedNZidRFaoP/S4P8wTL1OBH3oTVaSEyi3LnJqD25Pf3Pjw5wN5qaKi7J\nzd/JhWwKUvGX1K0pM7CxzPb40sRAbHjzGPh4f53/c9DylvUKaj2rpVDJItj/\nra+cf4EgCFHRnhPfTNrIjPDEOVEJWZ+oqew6oIW5Vyh7CN5azHyIHTbwRONv\n9Ge1SAOz+ltUm7PzbPY3GGr4N88lfhHkitJ2BgIQiRGDLHrA+GpnoP52aJ6a\nk/ui\r\n=pL/N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2EC4N9ZHcawaQ7PuFdJ/k7C4Du505xIq7+8wQUVBXMAiEAkxcv1lDJO0aZZiDHZsT2bxWDlvD6gfmbOhKH+zcVcaA="}]},"maintainers":[{"name":"d-fischer","email":"daniel@d-fischer.dev"}],"_npmUser":{"name":"d-fischer","email":"daniel@d-fischer.dev"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/klona_1.1.5_1588208003227_0.3832597731082874"},"_hasShrinkwrap":false,"deprecated":"This fork is now unmaintained, please use the original \"klona\" package"}},"time":{"created":"2020-04-25T19:22:52.893Z","1.1.2":"2020-04-25T19:22:53.060Z","modified":"2022-04-05T02:28:21.496Z","1.1.3":"2020-04-26T22:21:00.404Z","1.1.4":"2020-04-26T22:25:20.280Z","1.1.5":"2020-04-30T00:53:23.376Z"},"maintainers":[{"name":"d-fischer","email":"daniel@d-fischer.dev"}],"description":"A tiny (366B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!","homepage":"https://github.com/d-fischer/klona#readme","keywords":["clone","copy","deep","extend","recursive","object"],"repository":{"type":"git","url":"git+https://github.com/d-fischer/klona.git"},"author":{"name":"Daniel Fischer","email":"daniel@d-fischer.dev"},"bugs":{"url":"https://github.com/d-fischer/klona/issues"},"license":"MIT","readme":"<div align=\"center\">\n  <img src=\"logo.png\" alt=\"klona\" height=\"100\" />\n</div>\n\n<div align=\"center\">\n  <a href=\"https://npmjs.org/package/klona\">\n    <img src=\"https://badgen.now.sh/npm/v/klona\" alt=\"version\" />\n  </a>\n  <a href=\"https://github.com/lukeed/klona/actions\">\n    <img src=\"https://badgen.net/github/status/lukeed/klona\" alt=\"status\" />\n  </a>\n  <a href=\"https://npmjs.org/package/klona\">\n    <img src=\"https://badgen.now.sh/npm/dm/klona\" alt=\"downloads\" />\n  </a>\n  <a href=\"https://codecov.io/gh/lukeed/klona\">\n    <img src=\"https://codecov.io/gh/lukeed/klona/branch/master/graph/badge.svg?token=8ej0WeKqz7\" alt=\"codecov\" />\n  </a>\n</div>\n\n<div align=\"center\">A tiny (366B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!</div>\n\n\n## Features\n\n* Super tiny and [performant](#benchmarks)\n* Deep clone / recursive copies\n* Safely handles complex data types<br>\n    _Array, Date, Map, Object, RegExp, Set, TypedArray_\n\nUnlike a \"shallow copy\" (eg, `Object.assign`), a \"deep clone\" recursively traverses a source input and copies its _values_ &mdash; instead of _references_ to its values &mdash; into a new instance of that input. The result is a structurally equivalent clone that operates independently of the original source and controls its own values.\n\nAdditionally, this module is delivered as:\n\n* **ES Module**: [`dist/klona.mjs`](https://unpkg.com/klona/dist/klona.mjs)\n* **CommonJS**: [`dist/klona.js`](https://unpkg.com/klona/dist/klona.js)\n* **UMD**: [`dist/klona.min.js`](https://unpkg.com/klona)\n\n> **Why \"klona\"?** It's \"clone\" in Swedish.<br>\n> **What's with the sheep?** [Dolly](https://en.wikipedia.org/wiki/Dolly_(sheep)).\n\n\n## Install\n\n```\n$ npm install --save klona\n```\n\n\n## Usage\n\n```js\nimport klona from 'klona';\n\nconst input = {\n  foo: 1,\n  bar: {\n    baz: 2,\n    bat: {\n      hello: 'world'\n    }\n  }\n};\n\nconst output = klona(input);\n\n// exact copy of original\nassert.deepStrictEqual(input, output);\n\n// applying deep updates...\noutput.bar.bat.hola = 'mundo';\noutput.bar.baz = 99;\n\n// ...doesn't affect source!\nconsole.log(\n  JSON.stringify(input, null, 2)\n);\n// {\n//   \"foo\": 1,\n//   \"bar\": {\n//     \"baz\": 2,\n//     \"bat\": {\n//       \"hello\": \"world\"\n//     }\n//   }\n// }\n```\n\n\n## API\n\n### klona(input)\nReturns: `typeof input`\n\nReturns a deep copy/clone of the input.\n\n\n## Benchmarks\n\n> via Node.js v10.13.0\n\n```\nValidation:\n  ✘ JSON.stringify (FAILED @ \"initial copy\")\n  ✘ fast-clone (FAILED @ \"initial copy\")\n  ✔ lodash\n  ✔ clone-deep\n  ✘ deep-copy (FAILED @ \"initial copy\")\n  ✔ depcopy\n  ✔ klona\n\nBenchmark:\n  JSON.stringify   x  37,803 ops/sec ±0.68% (89 runs sampled)\n  fast-clone       x  24,210 ops/sec ±0.81% (91 runs sampled)\n  lodash           x  40,563 ops/sec ±1.10% (94 runs sampled)\n  clone-deep       x  85,020 ops/sec ±0.17% (95 runs sampled)\n  deep-copy        x 116,139 ops/sec ±0.29% (96 runs sampled)\n  depcopy          x  24,392 ops/sec ±0.71% (96 runs sampled)\n  klona            x 274,496 ops/sec ±0.15% (99 runs sampled)\n```\n\n\n## Related\n\n* [dlv](https://github.com/developit/dlv) – safely **read** from deep properties in 120 bytes\n* [dset](https://github.com/lukeed/dset) – safely **write** into deep properties in 160 bytes\n* [dequal](https://github.com/lukeed/dequal) – safely check for deep equality in 247 bytes\n\n\n## License\n\nMIT © [Luke Edwards](https://lukeed.com)\n","readmeFilename":"readme.md"}