{"_id":"rfdc","_rev":"3341795","name":"rfdc","description":"Really Fast Deep Clone","dist-tags":{"latest":"1.4.1"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"time":{"modified":"2024-07-10T08:35:39.000Z","created":"2018-05-19T05:31:58.976Z","1.4.1":"2024-06-12T10:18:29.594Z","1.4.0":"2024-06-12T09:45:38.208Z","1.3.1":"2024-01-19T15:37:32.269Z","1.3.0":"2021-03-14T19:11:21.973Z","1.2.0":"2021-01-15T20:28:43.780Z","1.1.4":"2019-05-12T18:23:23.130Z","1.1.3":"2019-05-12T18:03:58.454Z","1.1.2":"2018-05-20T11:46:53.119Z","1.1.1":"2018-05-20T11:27:42.463Z","1.0.4":"2018-05-19T21:18:14.405Z","1.0.3":"2018-05-19T20:11:43.799Z","1.0.2":"2018-05-19T05:45:14.860Z","1.0.1":"2018-05-19T05:36:28.379Z","1.0.0":"2018-05-19T05:31:58.976Z"},"users":{},"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"versions":{"1.4.1":{"name":"rfdc","version":"1.4.1","description":"Really Fast Deep Clone","main":"index.js","exports":{".":"./index.js","./default":"./default.js"},"scripts":{"test":"tap -R min test && npm run lint","bench":"node benchmark","lint":"standard --fix","cov":"tap --100 test","cov-ui":"tap --coverage-report=html test","ci":"standard && tap --100 --coverage-report=text-lcov test | codecov --pipe"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"clone-deep":"^4.0.1","codecov":"^3.4.0","deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","fastest-json-copy":"^1.0.1","lodash.clonedeep":"^4.5.0","nano-copy":"^0.1.0","plain-object-clone":"^1.1.0","ramda":"^0.27.1","standard":"^17.0.0","tap":"^12.0.1","tsd":"^0.7.4"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","_id":"rfdc@1.4.1","gitHead":"29ea53f8ccc618495b40cfafba475952b62be847","types":"./index.d.ts","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"shasum":"778f76c4fb731d93414e8f925fbecf64cce7f6ca","size":6828,"noattachment":false,"key":"/rfdc/-/rfdc-1.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.4.1.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.4.1_1718187509456_0.774259961489056"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-06-12T10:18:29.594Z","publish_time":1718187509594,"_source_registry_name":"default","_cnpm_publish_time":1718187509594},"1.4.0":{"name":"rfdc","version":"1.4.0","keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","_id":"rfdc@1.4.0","maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"homepage":"https://github.com/davidmarkclements/rfdc#readme","bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"dist":{"shasum":"ef196295b6c86ffd3fb58186a4b980a981794c75","size":6749,"noattachment":false,"key":"/rfdc/-/rfdc-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.4.0.tgz"},"main":"index.js","types":"./index.d.ts","exports":{".":"./index.js","./default":"./default.js"},"gitHead":"228fc35b43842273bc65d3d04484262d51506c50","scripts":{"ci":"standard && tap --100 --coverage-report=text-lcov test | codecov --pipe","cov":"tap --100 test","lint":"standard --fix","test":"tap -R min test && npm run lint","bench":"node benchmark","cov-ui":"tap --coverage-report=html test"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"repository":{"url":"git+https://github.com/davidmarkclements/rfdc.git","type":"git"},"_npmVersion":"10.5.2","description":"Really Fast Deep Clone","directories":{"test":"test"},"_nodeVersion":"20.13.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tap":"^12.0.1","tsd":"^0.7.4","ramda":"^0.27.1","codecov":"^3.4.0","standard":"^17.0.0","deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","nano-copy":"^0.1.0","clone-deep":"^4.0.1","lodash.clonedeep":"^4.5.0","fastest-json-copy":"^1.0.1","plain-object-clone":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/rfdc_1.4.0_1718185538055_0.6308387738957875","host":"s3://npm-registry-packages"},"_cnpmcore_publish_time":"2024-06-12T09:45:38.208Z","publish_time":1718185538208,"_source_registry_name":"default","_cnpm_publish_time":1718185538208},"1.3.1":{"name":"rfdc","version":"1.3.1","description":"Really Fast Deep Clone","main":"index.js","exports":{".":"./index.js","./default":"./default.js"},"scripts":{"test":"tap -R min test && npm run lint","bench":"node benchmark","lint":"standard --fix","cov":"tap --100 test","cov-ui":"tap --coverage-report=html test","ci":"standard && tap --100 --coverage-report=text-lcov test | codecov --pipe"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"clone-deep":"^4.0.1","codecov":"^3.4.0","deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","fastest-json-copy":"^1.0.1","lodash.clonedeep":"^4.5.0","nano-copy":"^0.1.0","plain-object-clone":"^1.1.0","ramda":"^0.27.1","standard":"^11.0.1","tap":"^12.0.1","tsd":"^0.7.4"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","_id":"rfdc@1.3.1","gitHead":"590831d40aecbe9459362d25696bd3a7edbf88c9","types":"./index.d.ts","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"shasum":"2b6d4df52dffe8bb346992a10ea9451f24373a8f","size":6180,"noattachment":false,"key":"/rfdc/-/rfdc-1.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.3.1.tgz"},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.3.1_1705678652057_0.48647757676741277"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-01-19T15:37:32.269Z","publish_time":1705678652269,"_source_registry_name":"default","_cnpm_publish_time":1705678652269},"1.3.0":{"name":"rfdc","version":"1.3.0","description":"Really Fast Deep Clone","main":"index.js","exports":{".":"./index.js","./default":"./default.js"},"scripts":{"test":"tap -R min test && npm run lint && tsd","bench":"node benchmark","lint":"standard --fix","cov":"tap --100 test","cov-ui":"tap --coverage-report=html test","ci":"standard && tap --100 --coverage-report=text-lcov test | codecov --pipe"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"clone-deep":"^4.0.1","codecov":"^3.4.0","deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1","tsd":"^0.7.4"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"8a6b767318340ccfc04219d162b93ec1c500551e","_id":"rfdc@1.3.0","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"shasum":"d0b7c441ab2720d05dc4cf26e01c89631d9da08b","size":5686,"noattachment":false,"key":"/rfdc/-/rfdc-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.3.0.tgz"},"_npmUser":{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.3.0_1615749081818_0.21937444413362917"},"_hasShrinkwrap":false,"publish_time":1615749081973,"_cnpm_publish_time":1615749081973},"1.2.0":{"name":"rfdc","version":"1.2.0","description":"Really Fast Deep Clone","main":"index.js","exports":{".":"./index.js","./default":"./default.js"},"scripts":{"test":"tap -R min test && npm run lint && tsd","bench":"node benchmark","lint":"standard --fix","cov":"tap --100 test","cov-ui":"tap --coverage-report=html test","ci":"standard && tap --100 --coverage-report=text-lcov test | codecov --pipe"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"clone-deep":"^4.0.1","codecov":"^3.4.0","deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1","tsd":"^0.7.4"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"a6cb5f00551119e58c72e14881e8b2d8dd519b2e","_id":"rfdc@1.2.0","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"shasum":"9e9894258f48f284b43c3143c68070a4f373b949","size":5458,"noattachment":false,"key":"/rfdc/-/rfdc-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.2.0.tgz"},"_npmUser":{"name":"davidmarkclements","email":"david.mark.clements@gmail.com"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.2.0_1610742523653_0.579256980611941"},"_hasShrinkwrap":false,"publish_time":1610742523780,"_cnpm_publish_time":1610742523780},"1.1.4":{"name":"rfdc","version":"1.1.4","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test && npm run lint","bench":"node benchmark","lint":"standard --fix","cov":"tap --100 test","cov-ui":"tap --coverage-report=html test","ci":"standard && tap --100 --coverage-report=text-lcov test | codecov --pipe"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"codecov":"^3.4.0","deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"a9fa9599a86ad7949beaf740c150138614d1f5ae","_id":"rfdc@1.1.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2","size":4132,"noattachment":false,"key":"/rfdc/-/rfdc-1.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.1.4.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.1.4_1557685402938_0.4647920556027163"},"_hasShrinkwrap":false,"publish_time":1557685403130,"_cnpm_publish_time":1557685403130},"1.1.3":{"name":"rfdc","version":"1.1.3","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","lint":"standard","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"fcdbe60815ebcc06760c3de7b74d185dc67a6c88","_id":"rfdc@1.1.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"87d00c9bb445bf9706384068750570102fd5aa7e","size":3923,"noattachment":false,"key":"/rfdc/-/rfdc-1.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.1.3.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.1.3_1557684238367_0.5134786019009996"},"_hasShrinkwrap":false,"publish_time":1557684238454,"_cnpm_publish_time":1557684238454},"1.1.2":{"name":"rfdc","version":"1.1.2","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","lint":"standard","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"4d913ed2fcacfee041456515b828a49cacd2a4ff","_id":"rfdc@1.1.2","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"e6e72d74f5dc39de8f538f65e00c36c18018e349","size":3174,"noattachment":false,"key":"/rfdc/-/rfdc-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.1.2.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.1.2_1526816812927_0.3385372245394702"},"_hasShrinkwrap":false,"publish_time":1526816813119,"_cnpm_publish_time":1526816813119},"1.1.1":{"name":"rfdc","version":"1.1.1","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","lint":"standard","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"0ea2720d02025f450b136eeae7f21044bff5e9d5","_id":"rfdc@1.1.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"e555f1f266a5e5e54cd8c309d1bf71cd7ac1bb9e","size":3136,"noattachment":false,"key":"/rfdc/-/rfdc-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.1.1.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.1.1_1526815662304_0.6572021421361587"},"_hasShrinkwrap":false,"publish_time":1526815662463,"_cnpm_publish_time":1526815662463},"1.0.4":{"name":"rfdc","version":"1.0.4","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","lint":"standard","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"deep-copy":"^1.4.2","fast-copy":"^1.2.1","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"28cd512ef50e2734ebc1872e67477145334e8125","_id":"rfdc@1.0.4","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"1b3ce470f5037ee5078485d09edb0d1b80226356","size":2674,"noattachment":false,"key":"/rfdc/-/rfdc-1.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.0.4.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.0.4_1526764694164_0.41357166533770995"},"_hasShrinkwrap":false,"publish_time":1526764694405,"_cnpm_publish_time":1526764694405},"1.0.3":{"name":"rfdc","version":"1.0.3","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","lint":"standard","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"deep-copy":"^1.4.2","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"e4c75104d16a1641114ecf899dcc80ba1f134014","_id":"rfdc@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"a3b24c785e7dc3aaca553fbf490bc5efc58e4f7d","size":2243,"noattachment":false,"key":"/rfdc/-/rfdc-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.0.3.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.0.3_1526760703746_0.4909728118757537"},"_hasShrinkwrap":false,"publish_time":1526760703799,"_cnpm_publish_time":1526760703799},"1.0.2":{"name":"rfdc","version":"1.0.2","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","lint":"standard","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"deep-copy":"^1.4.2","fastbench":"^1.0.1","lodash.clonedeep":"^4.5.0","standard":"^11.0.1","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"aef44a201624292bf3cf3e17f1107c4ab6ce691e","_id":"rfdc@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"9da484a2106adf48f9a859ffb6a56bf35d37fbc5","size":2243,"noattachment":false,"key":"/rfdc/-/rfdc-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.0.2.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.0.2_1526708714766_0.6161212732483565"},"_hasShrinkwrap":false,"publish_time":1526708714860,"_cnpm_publish_time":1526708714860},"1.0.1":{"name":"rfdc","version":"1.0.1","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"fastbench":"^1.0.1","deep-copy":"^1.4.2","lodash.clonedeep":"^4.5.0","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"b79d00e63b73b03297bacea450bb183d09fff911","_id":"rfdc@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"db644f2c6477c69263c984521a53ed77f7c7677b","size":2240,"noattachment":false,"key":"/rfdc/-/rfdc-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.0.1.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.0.1_1526708188298_0.20613230057056553"},"_hasShrinkwrap":false,"publish_time":1526708188379,"_cnpm_publish_time":1526708188379},"1.0.0":{"name":"rfdc","version":"1.0.0","description":"Really Fast Deep Clone","main":"index.js","scripts":{"test":"tap -R min test","bench":"node benchmark","cov":"tap --cov test","cov-ui":"tap --coverage-report=html test"},"keywords":["object","obj","properties","clone","copy","deep","recursive","key","keys","values","prop","deep-clone","deepclone","deep-copy","deepcopy","fast","performance","performant","fastclone","fastcopy","fast-clone","fast-deep-clone","fast-copy","fast-deep-copy"],"author":{"name":"David Mark Clements","email":"david.clements@nearform.com"},"license":"MIT","devDependencies":{"fastbench":"^1.0.1","deep-copy":"^1.4.2","lodash.clonedeep":"^4.5.0","tap":"^12.0.1"},"directories":{"test":"test"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/davidmarkclements/rfdc.git"},"bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"homepage":"https://github.com/davidmarkclements/rfdc#readme","gitHead":"7d7f6568c3d4207b5da5388aa533e6badd0711ce","_id":"rfdc@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},"dist":{"shasum":"80afd20d3a459e4581cf3a3ce285d4295a631f90","size":2241,"noattachment":false,"key":"/rfdc/-/rfdc-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/rfdc/download/rfdc-1.0.0.tgz"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"matteo.collina","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rfdc_1.0.0_1526707918910_0.3656732139099521"},"_hasShrinkwrap":false,"publish_time":1526707918976,"_cnpm_publish_time":1526707918976}},"readme":"# rfdc\n\nReally Fast Deep Clone\n\n\n[![build status](https://img.shields.io/travis/davidmarkclements/rfdc.svg)](https://travis-ci.org/davidmarkclements/rfdc)\n[![coverage](https://img.shields.io/codecov/c/github/davidmarkclements/rfdc.svg)](https://codecov.io/gh/davidmarkclements/rfdc)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/)\n\n\n## Usage\n\n```js\nconst clone = require('rfdc')()\nclone({a: 1, b: {c: 2}}) // => {a: 1, b: {c: 2}}\n```\n\n## API\n\n### `require('rfdc')(opts = { proto: false, circles: false, constructorHandlers: [] }) => clone(obj) => obj2`\n\n#### `proto` option\n\nCopy prototype properties as well as own properties into the new object.\n\nIt's marginally faster to allow enumerable properties on the prototype\nto be copied into the cloned object (not onto it's prototype, directly onto the object).\n\nTo explain by way of code:\n\n```js\nrequire('rfdc')({ proto: false })(Object.create({a: 1})) // => {}\nrequire('rfdc')({ proto: true })(Object.create({a: 1})) // => {a: 1}\n```\n\nSetting `proto` to `true` will provide an additional 2% performance boost.\n\n#### `circles` option\n\nKeeping track of circular references will slow down performance with an\nadditional 25% overhead. Even if an object doesn't have any circular references,\nthe tracking overhead is the cost. By default if an object with a circular\nreference is passed to `rfdc`, it will throw (similar to how `JSON.stringify` \\\nwould throw).\n\nUse the `circles` option to detect and preserve circular references in the\nobject. If performance is important, try removing the circular reference from\nthe object (set to `undefined`) and then add it back manually after cloning\ninstead of using this option.\n\n#### `constructorHandlers` option\n\nSometimes consumers may want to add custom clone behaviour for particular classes\n(for example `RegExp` or `ObjectId`, which aren't supported out-of-the-box).\n\nThis can be done by passing `constructorHandlers`, which takes an array of tuples,\nwhere the first item is the class to match, and the second item is a function that\ntakes the input and returns a cloned output:\n\n```js\nconst clone = require('rfdc')({\n  constructorHandlers: [\n    [RegExp, (o) => new RegExp(o)],\n  ]\n})\n\nclone({r: /foo/}) // => {r: /foo/}\n```\n\n**NOTE**: For performance reasons, the handlers will only match an instance of the\n*exact* class (not a subclass). Subclasses will need to be added separately if they\nalso need special clone behaviour.\n\n### `default` import\nIt is also possible to directly import the clone function with all options set\nto their default:\n\n```js\nconst clone = require(\"rfdc/default\")\nclone({a: 1, b: {c: 2}}) // => {a: 1, b: {c: 2}}\n```\n\n### Types\n\n`rfdc` clones all JSON types:\n\n* `Object`\n* `Array`\n* `Number`\n* `String`\n* `null`\n\nWith additional support for:\n\n* `Date` (copied)\n* `undefined` (copied)\n* `Buffer` (copied)\n* `TypedArray` (copied)\n* `Map` (copied)\n* `Set` (copied)\n* `Function` (referenced)\n* `AsyncFunction` (referenced)\n* `GeneratorFunction` (referenced)\n* `arguments` (copied to a normal object)\n\nAll other types have output values that match the output\nof `JSON.parse(JSON.stringify(o))`.\n\nFor instance:\n\n```js\nconst rfdc = require('rfdc')()\nconst err = Error()\nerr.code = 1\nJSON.parse(JSON.stringify(e)) // {code: 1}\nrfdc(e) // {code: 1}\n\nJSON.parse(JSON.stringify({rx: /foo/})) // {rx: {}}\nrfdc({rx: /foo/}) // {rx: {}}\n```\n\n## Benchmarks\n\n```sh\nnpm run bench\n```\n\n```\nbenchDeepCopy*100: 671.675ms\nbenchLodashCloneDeep*100: 1.574s\nbenchCloneDeep*100: 936.792ms\nbenchFastCopy*100: 822.668ms\nbenchFastestJsonCopy*100: 363.898ms // See note below\nbenchPlainObjectClone*100: 556.635ms\nbenchNanoCopy*100: 770.234ms\nbenchRamdaClone*100: 2.695s\nbenchJsonParseJsonStringify*100: 2.290s // JSON.parse(JSON.stringify(obj))\nbenchRfdc*100: 412.818ms\nbenchRfdcProto*100: 424.076ms\nbenchRfdcCircles*100: 443.357ms\nbenchRfdcCirclesProto*100: 465.053ms\n```\n\nIt is true that [fastest-json-copy](https://www.npmjs.com/package/fastest-json-copy) may be faster, BUT it has such huge limitations that it is rarely useful. For example, it treats things like `Date` and `Map` instances the same as empty `{}`. It can't handle circular references. [plain-object-clone](https://www.npmjs.com/package/plain-object-clone) is also really limited in capability.\n\n## Tests\n\n```sh\nnpm test\n```\n\n```\n169 passing (342.514ms)\n```\n\n### Coverage\n\n```sh\nnpm run cov\n```\n\n```\n----------|----------|----------|----------|----------|-------------------|\nFile      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\nAll files |      100 |      100 |      100 |      100 |                   |\n index.js |      100 |      100 |      100 |      100 |                   |\n----------|----------|----------|----------|----------|-------------------|\n```\n\n### `__proto__` own property copying\n\n`rfdc` works the same way as `Object.assign` when it comes to copying `['__proto__']` (e.g. when\nan object has an own property key called '__proto__'). It results in the target object \nprototype object being set per the value of the `['__proto__']` own property.\n\nFor detailed write-up on how a way to handle this security-wise see https://www.fastify.io/docs/latest/Guides/Prototype-Poisoning/.\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/davidmarkclements/rfdc#readme","bugs":{"url":"https://github.com/davidmarkclements/rfdc/issues"},"license":"MIT"}