{"_id":"clones","_rev":"2740330","name":"clones","description":"should deep clone everything even global objects, functions, circularities, ...","dist-tags":{"latest":"1.2.0"},"maintainers":[{"name":"npm:commenthol","email":""}],"time":{"modified":"2022-01-28T15:57:13.000Z","created":"2017-02-18T12:50:57.554Z","1.2.0":"2019-01-01T20:43:32.762Z","1.1.0":"2017-03-04T06:59:54.999Z","1.0.1":"2017-02-19T21:09:39.949Z","1.0.0":"2017-02-18T12:50:57.554Z"},"users":{},"author":{"name":"commenthol","email":"commenthol@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/commenthol/clones.git"},"versions":{"1.2.0":{"name":"clones","version":"1.2.0","description":"should deep clone everything even global objects, functions, circularities, ...","keywords":["circular","clone","deep-clone","global"],"bugs":{"url":"https://github.com/commenthol/clones/issues"},"repository":{"type":"git","url":"git+https://github.com/commenthol/clones.git"},"license":"MIT","author":{"name":"commenthol","email":"commenthol@gmail.com"},"main":"lib","jsnext:main":"src","directories":{"test":"test"},"scripts":{"all":"npm run clean && npm run lint && npm run transpile && npm test","clean":"rimraf lib","coverage":"nyc -r html -r text npm test","karma":"karma start","lint":"eslint --fix \"**/*.js\"","prepublishOnly":"npm run all","test":"mocha","transpile":"babel -d lib src","zuul":"zuul --no-coverage --local 3000 -- test/*.js"},"dependencies":{},"devDependencies":{"@babel/cli":"^7.2.3","@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","babel-loader":"^8.0.4","eslint":"^5.11.1","eslint-config-standard":"^12.0.0","eslint-plugin-import":"^2.14.0","eslint-plugin-node":"^8.0.0","eslint-plugin-promise":"^4.0.1","eslint-plugin-standard":"^4.0.0","karma":"^3.1.4","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"~0.0.32","karma-webpack":"^3.0.5","mocha":"^5.2.0","nyc":"^13.1.0","rimraf":"^2.5.4","webpack":"^4.28.3","zuul":"^3.11.1"},"engines":{"node":">=4.0.0"},"gitHead":"dd9d357948c949bd10a818d1f36e64b4d89c35b4","homepage":"https://github.com/commenthol/clones#readme","_id":"clones@1.2.0","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"b34c872045446a9f264ccceb7731bca05c529b71","size":4802,"noattachment":false,"key":"/clones/-/clones-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/clones/download/clones-1.2.0.tgz"},"maintainers":[{"name":"npm:commenthol","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clones_1.2.0_1546375412613_0.48791962789012855"},"_hasShrinkwrap":false,"publish_time":1546375412762,"_cnpm_publish_time":1546375412762},"1.1.0":{"name":"clones","version":"1.1.0","description":"should deep clone everything even global objects, functions, circularities, ...","author":{"name":"commenthol","email":"commenthol@gmail.com"},"license":"MIT","main":"lib","jsnext:main":"src","repository":{"type":"git","url":"https://github.com/commenthol/clones.git"},"bugs":{"url":"https://github.com/commenthol/clones/issues"},"keywords":["deep-clone","clone","circular","global"],"engines":{"node":">=4.0.0"},"directories":{"test":"test"},"scripts":{"test":"mocha","karma":"karma start","zuul":"zuul --no-coverage --local 3000 -- test/*.js","lint":"eslint '**/*.js'","transpile":"babel -d lib src","clean":"rimraf lib","dist":"npm run clean && npm run lint && npm run transpile && npm test"},"dependencies":{},"devDependencies":{"babel-core":"^6.23.1","babel-loader":"^6.3.1","babel-preset-es2015":"^6.22.0","karma":"^1.4.1","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"0.0.26","karma-webpack":"^2.0.2","mocha":"^3.2.0","rimraf":"^2.5.4","webpack":"^2.2.1","zuul":"^3.11.1"},"babel":{"presets":["es2015"]},"gitHead":"4ff5a360b0e0f5375d8d0801fe6756c38f6684bd","_id":"clones@1.1.0","_shasum":"87e904132d6140c5c0b72006c08c0d05bd7b63b3","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.0","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"87e904132d6140c5c0b72006c08c0d05bd7b63b3","size":4671,"noattachment":false,"key":"/clones/-/clones-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/clones/download/clones-1.1.0.tgz"},"maintainers":[{"name":"npm:commenthol","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/clones-1.1.0.tgz_1488610793285_0.09598119091242552"},"publish_time":1488610794999,"_cnpm_publish_time":1488610794999,"_hasShrinkwrap":false},"1.0.1":{"name":"clones","version":"1.0.1","description":"should deep clone everything even global objects, functions, circularities, ...","author":{"name":"commenthol","email":"commenthol@gmail.com"},"license":"MIT","main":"lib","jsnext:main":"src","repository":{"type":"git","url":"https://github.com/commenthol/clones.git"},"bugs":{"url":"https://github.com/commenthol/clones/issues"},"keywords":["deep-clone","clone","circular","global"],"engines":{"node":">=4.0.0"},"directories":{"test":"test"},"scripts":{"test":"mocha","karma":"karma start","zuul":"zuul --no-coverage --local 3000 -- test/*.js","lint":"eslint '**/*.js'","transpile":"babel -d lib src","clean":"rimraf lib","dist":"npm run clean && npm run lint && npm run transpile && npm test"},"dependencies":{},"devDependencies":{"babel-core":"^6.23.1","babel-loader":"^6.3.1","babel-preset-es2015":"^6.22.0","karma":"^1.4.1","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"0.0.26","karma-webpack":"^2.0.2","mocha":"^3.2.0","rimraf":"^2.5.4","webpack":"^2.2.1","zuul":"^3.11.1"},"babel":{"presets":["es2015"]},"gitHead":"c5b7e336e7e626271f8338276125ed899fc59145","_id":"clones@1.0.1","_shasum":"2c9ba98e0d8200e192c3b9987bfebe26fe9207f3","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.3","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"2c9ba98e0d8200e192c3b9987bfebe26fe9207f3","size":4140,"noattachment":false,"key":"/clones/-/clones-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/clones/download/clones-1.0.1.tgz"},"maintainers":[{"name":"npm:commenthol","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/clones-1.0.1.tgz_1487538577923_0.17899220227263868"},"publish_time":1487538579949,"_cnpm_publish_time":1487538579949,"_hasShrinkwrap":false},"1.0.0":{"name":"clones","version":"1.0.0","description":"should deep clone everything even global objects, functions, circularities, ...","author":{"name":"commenthol","email":"commenthol@gmail.com"},"license":"MIT","main":"lib","jsnext:main":"src","repository":{"type":"git","url":"https://github.com/commenthol/clones.git"},"bugs":{"url":"https://github.com/commenthol/clones/issues"},"keywords":["deep-clone","clone","circular","global"],"engines":{"node":">=4.0.0"},"directories":{"test":"test"},"scripts":{"test":"mocha","karma":"karma start","zuul":"zuul --no-coverage --local 3000 -- test/*.js","lint":"eslint '**/*.js'","transpile":"babel -d lib src","clean":"rimraf lib","dist":"npm run clean && npm run lint && npm run transpile && npm test"},"dependencies":{},"devDependencies":{"babel-core":"^6.23.1","babel-loader":"^6.3.1","babel-preset-es2015":"^6.22.0","karma":"^1.4.1","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.0.0","karma-mocha":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-spec-reporter":"0.0.26","karma-webpack":"^2.0.2","mocha":"^3.2.0","rimraf":"^2.5.4","webpack":"^2.2.1","zuul":"^3.11.1"},"babel":{"presets":["es2015"]},"gitHead":"a28af6f99c5aefc77a9e0605c73137b1fdbe336b","_id":"clones@1.0.0","_shasum":"32cc534baca27b1faeb8a1c0b3bad224d397fbed","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"commenthol","email":"commenthol@gmail.com"},"dist":{"shasum":"32cc534baca27b1faeb8a1c0b3bad224d397fbed","size":3924,"noattachment":false,"key":"/clones/-/clones-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/clones/download/clones-1.0.0.tgz"},"maintainers":[{"name":"npm:commenthol","email":""}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/clones-1.0.0.tgz_1487422256899_0.16788870841264725"},"publish_time":1487422257554,"_cnpm_publish_time":1487422257554,"_hasShrinkwrap":false}},"readme":"# clones\n\n[![NPM version](https://badge.fury.io/js/clones.svg)](https://www.npmjs.com/package/clones/)\n\n> should deep clone everything even global objects, functions, circularities, ...\n\nCompanion for [safer-eval](https://github.com/commenthol/safer-eval).\n\nRuns on node and in modern browsers:\n\n|                | Versions |\n| ---            | ---      |\n| **node**       | ~~0.12~~, 4, 6, 8, 10, 11  |\n| **Chrome**     | 55, 56, 71 |\n| **Firefox**    | 45, 51, 64 |\n| **Edge**       | 14, 16   |\n| **IE**         | ~~11~~   |\n| **Safari**     | 10       |\n| **iOS Safari** | 10       |\n\n## Installation\n\n```\nnpm i -S clones\n```\n\n## Usage\n\n```js\nconst clones = require('clones')\nconst dest = clones(source, [bind])\n```\n\n**Parameters**\n\n**Parameters**\n\n**source**: `Object`, clone source\n\n**bind**: `Object`, bind functions to this context\n\n**Returns**: `Any`, deep clone of `source`\n\n**Example**:\n```js\nconst clones = require('clones')\n\nvar source = {\n  obj: {a: {b: 1}},\n  arr: [true, 1, {c: 'dee'}],\n  fn: function () { return this.number + 12 }\n}\n// adding circularity\nsource.obj.a.e = source.obj.a\n\n// do the cloning (with binding a context)\nvar dest = clones(source, {number: 30})\n// => { obj: { a: { b: 1, e: [Circular] }, d: 2017-02-17T21:57:44.576Z },\n//      arr: [ true, 1, { c: 'dee' } ],\n//      fn: [Function: fn] }\n\n// checks\nassert.ok(dest !== source)                      // has different reference\nassert.ok(dest.obj !== source.obj)              // has different reference\nassert.ok(dest.obj.a !== source.obj.a)          // has different reference\nassert.ok(dest.obj.a.e !== source.obj.a.e)      // different references for circularities\nassert.equal(dest.obj.d.toISOString(),\n  source.obj.d.toISOString())                   // has same content\nassert.ok(dest.fn !== source.fn)                // has different function reference\nsource.fn = source.fn.bind({number: 29})        // bind `this` for `source`\nassert.equal(dest.fn(), source.fn() + 1)        // returning the same result\n```\n\n### Clone prototypes or classes\n\n```js\nconst clones = require('clones')\n// clone built in `Array`\nconst C = clones.classes(Array)\n\nlet c = new C(1,2,3)\n// => [1, 2, 3]\nc.reverse()\n// => [3, 2, 1]\n```\n\n## License\n\n[MIT](./LICENSE)\n","_attachments":{},"homepage":"https://github.com/commenthol/clones#readme","bugs":{"url":"https://github.com/commenthol/clones/issues"},"license":"MIT"}