{"_id":"replicator","_rev":"10-1cf66028196848683b3c0939d28f1cef","name":"replicator","description":"Advanced JavaScript objects serialization.","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"replicator","version":"1.0.0","description":"Advanced JavaScript objects serialization.","main":"index.js","scripts":{"test":"eslint index.js test && mocha","publish-please":"publish-please","prepublish":"publish-please guard"},"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/inikulin/replicator/issues"},"files":["index.js"],"homepage":"https://github.com/inikulin/replicator#readme","devDependencies":{"eslint":"^2.9.0","mocha":"^2.4.5","publish-please":"^2.1.0"},"gitHead":"b7663076406cb3eedb47e6ef4515430025661d18","_id":"replicator@1.0.0","_shasum":"997029042b7eac6077ffd46d08cbe35de2270b76","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"inikulin","email":"ifaaan@gmail.com"},"dist":{"shasum":"997029042b7eac6077ffd46d08cbe35de2270b76","tarball":"https://registry.npmjs.org/replicator/-/replicator-1.0.0.tgz","integrity":"sha512-QstpSDmqiYqhKgELnRWR0juress1BK7PSdfJ83NXAHhEgLOAnl6+IIj9gihvKMJL8KRbpspJWuNj7rtfORozVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDNM29Q8l230hwaV5e68QrYzMTUb432n8xsQsmwjL7JmAiA8DjUKIuq0k8SpcDtpykry9xd+m7fd+jqydu/mvroITA=="}]},"maintainers":[{"name":"inikulin","email":"ifaaan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/replicator-1.0.0.tgz_1464098816867_0.6407243532594293"},"directories":{}},"1.0.1":{"name":"replicator","version":"1.0.1","description":"Advanced JavaScript objects serialization.","main":"index.js","scripts":{"test":"eslint index.js test && mocha","publish-please":"publish-please","prepublish":"publish-please guard"},"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/inikulin/replicator/issues"},"files":["index.js"],"homepage":"https://github.com/inikulin/replicator#readme","devDependencies":{"eslint":"^2.9.0","mocha":"^2.4.5","publish-please":"^2.1.0"},"gitHead":"08d091478e91bb0c7cf1588178f56c7c323374cc","_id":"replicator@1.0.1","_shasum":"8b382b4ebb871cdbb98e2306ff352ae409d484a9","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.4.1","_npmUser":{"name":"inikulin","email":"ifaaan@gmail.com"},"dist":{"shasum":"8b382b4ebb871cdbb98e2306ff352ae409d484a9","tarball":"https://registry.npmjs.org/replicator/-/replicator-1.0.1.tgz","integrity":"sha512-BwkUVdSQ08mGLa1OoP8thQ0zTUcxplGNZ1p0rsaSEL7xc4N3v5kkR/WFLjikkdjQPjp+67p24QOerWwIj2oN4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDX3wVTIlHUo2Zg5haMNFmZ3iXz+e95kbxbmLSGZERgfwIgf3Gau6/vMmzS8teV/TnBz+B/dp0TVC4Xld0/sY5mj7I="}]},"maintainers":[{"name":"inikulin","email":"ifaaan@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/replicator-1.0.1.tgz_1468230082535_0.7023291902150959"},"directories":{}},"1.0.2":{"name":"replicator","version":"1.0.2","description":"Advanced JavaScript objects serialization.","main":"index.js","scripts":{"test":"eslint index.js test && mocha","publish-please":"publish-please","prepublish":"publish-please guard"},"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/inikulin/replicator/issues"},"files":["index.js"],"homepage":"https://github.com/inikulin/replicator#readme","devDependencies":{"eslint":"^2.9.0","mocha":"^2.4.5","publish-please":"^2.1.0"},"gitHead":"bc375052ce12e7d5925adebeb0b681c5104b7f3e","_id":"replicator@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"inikulin","email":"ifaaan@gmail.com"},"dist":{"integrity":"sha512-y2yeUd+NDfSk6SHELNJfMwglmjDYxw65VKgDYMEYGLdJVnqz/sER0mFJbHrawqKfQoVRJ5vN3pSouL9ZLUVd8w==","shasum":"f21812f28f3b853a34795a7d52814581df652fe1","tarball":"https://registry.npmjs.org/replicator/-/replicator-1.0.2.tgz","fileCount":4,"unpackedSize":21725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa45TPCRA9TVsSAnZWagAAkf0P/R3fk3cENM1Te4qCJ8pH\nMZkuqMAqTBZkUv2ya3SCcGNzakdG8AVbB7dHNXX1KeYyn2HR4TGmcj4kTcYV\nGy81J4j825p0ggONR5yDCKvyR6DDjhuokhAQ+tqg6pVFwLi4LT87knDcZJXo\nTjElQcPIRjWklDP+At6mseJvHV7XT7FizoW52z/dVFvT8p6HHPMP1GbkW9e4\nZ/3qe1qMuTex/FUOmkjtmXFMlposAswxvpE9Qcv31at7ktIBy+AmjZJsMRAn\n2Ox02ctZQaK9QS/x3+Xaj/vJR8ezJLEpYFCNPgTv5K24CCd/1BUDf+trjqh4\nHqXDzsyUBn8buJhp5Xx6/Em5VIOszBtMDeXKYymNXw7AlYpbvB39No1XolRh\ncjusEgObrXD1xAoJgjTrtsBPoegJvPKpZc8ffPJzizHuTb3fhO89Mmgk3TpR\nIYzdXxCfeEswxmzunG74N31F1Dwe6eJMZN7vQ+QXmGAs3ambpMCPQfw0QrZI\nCRkRWupGPSS21BhNUQmaTpt5ltMieQPOFxm9yWxWQIHkPVUI3+3p6lAwHykf\nb40JmEurk0r/C9OwZ8nPedi62zwpUupIjlcgtjyTKDIuiPj7xJM0oTj7cEO4\nMSRdhyrj63cNdgepSZxUZomdIJ3g9UWDn3AQLaJlXCHEoKxLK5w5N7ewTbsC\ns+S3\r\n=OmR5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOTnMZJ2cBrBpiPBx+k2/pFA16mfKqSZguQEhyLaNXKQIgUQcd/cWu+ijbadnDABc2gXnj+UZjrkBhI0elAsl8EaQ="}]},"maintainers":[{"name":"amoskovkin","email":"alexander.moskovkin@devexpress.com"},{"name":"inikulin","email":"ifaaan@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/replicator_1.0.2_1524864205408_0.5413511931373594"},"_hasShrinkwrap":false},"1.0.3":{"name":"replicator","version":"1.0.3","description":"Advanced JavaScript objects serialization.","main":"index.js","scripts":{"test":"eslint index.js test && mocha","publish-please":"publish-please","prepublish":"publish-please guard"},"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/inikulin/replicator/issues"},"homepage":"https://github.com/inikulin/replicator#readme","devDependencies":{"eslint":"^2.9.0","mocha":"^5.2.0","publish-please":"^5.4.3"},"gitHead":"563f73eefa5555b15a3eb94be6ee6c64f92b34fc","_id":"replicator@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"belym.a.2105","email":"belym.a.2105@gmail.com"},"dist":{"integrity":"sha512-WsKsraaM0x0QHy5CtzdgFXUxyowoBhyNkmPqmZShW6h+rOWnyT6Od3zRdTX9r616rAA6kDC9MKQGnSM/CJKfVQ==","shasum":"c0b3ea31e749015bae5d52273f2ae35d541b87ef","tarball":"https://registry.npmjs.org/replicator/-/replicator-1.0.3.tgz","fileCount":4,"unpackedSize":22612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF5N2CRA9TVsSAnZWagAA3wEP/1/5bdgPnY7sqCmRnWtp\nZA49DqjmvDWnjmodrRgueRwahzdoLTYSG8cYXXVv6l63UoKdSQaS7MzGzLCX\nuSzJtnAAqoeub+zAASrsGJWs5U7KptO39VtAj11ZZJ1a+gd+uFbe0C4qHXQf\nOkAo5nA9fbjlzuhBGpN/1Xz4OKxi7S+5rP6BYid/m7JnsXiXNlBvFMULih2b\n1zgg2RMQ9cRNt5A4cXTzJlTVH5RguVA9NKqkrATx2xThL92a9BU1kvCXnXK+\naFj3oqt99FsjWbwoe41huh2O0bimnaeWa55m6+Q+9tMkdNVaO/vD8AZ7cMnh\nN8+VVmtlM6bJqmGVLmxaiHszvhETlySVQIcInSbTKsA9rcmupnoSQlXEcoD+\nKIAnWR1GGli3E5UCYZSZ8BRwaCRTAmriHy2xmi8UkcvBpQwZ/uzZtS7zjnuv\n/6/L7pUpPyaoHWAueaY8oup0zAOitzDn8Fi9FZ4oGqyW1Hk/F38kPSFliCuG\nf+xS1xonF3LdiXmzgwxcGRqoW096gj5LDX2Xy+IC5nxpphddJ5vZZ+EUQdMy\nJ2p0cD1c+AD0y7jD5CJhFtOnHKKSw4H0kSCmkLph+HOCi46IMGh4+7iyDPzv\nGjKzwT+8AgB8k6SlyYgipVchXS/p5NYLhFYRbGf451/B+9uhZS8K2ipp9VOT\nW9xi\r\n=sH+G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMgabbyQvqAmXfgfn7CJ8j1FCwJe3szLvR45VFB900lAiA2pabBvpYFUK5baOpIxMiuEaReWM380N66Mqul8E796g=="}]},"maintainers":[{"name":"amoskovkin","email":"alexander.moskovkin@devexpress.com"},{"name":"inikulin","email":"ifaaan@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/replicator_1.0.3_1545048949779_0.003553090082782262"},"_hasShrinkwrap":false},"1.0.4":{"name":"replicator","version":"1.0.4","description":"Advanced JavaScript objects serialization.","main":"index.js","scripts":{"test":"eslint index.js test && mocha","publish-please":"publish-please","prepublish":"publish-please guard"},"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/inikulin/replicator/issues"},"homepage":"https://github.com/inikulin/replicator#readme","devDependencies":{"eslint":"^2.9.0","mocha":"^5.2.0","publish-please":"^5.4.3"},"gitHead":"849bb8c7c19fec4be0c3db339e88f93ffce2d665","_id":"replicator@1.0.4","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-+sT0wnQLY7ny7RMXDsxxuGoWPMXmxrPPY9ebV0VIgi1I/8mBoWiKNzi7yA5Qb+dg61+jwAkNGGyF4WxHozFdpw==","shasum":"07abd2b4bc772d5baae3c807d49097dcfb572193","tarball":"https://registry.npmjs.org/replicator/-/replicator-1.0.4.tgz","fileCount":4,"unpackedSize":22139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgom0vCRA9TVsSAnZWagAAiRsQAImMN9k/m4vcKScf+6/q\nXSVieJegLClj1ePRdNKUi8fm5khaFmmxnNi+3Yl8Fffhk+oPYMWQjvx30QCS\nG1co2UX0hwLj4aO4Z1TMirZiDCr+hTcpyd7ui8f2GDnT4qslXrNC4UZzOsr/\nGTKk4vRxwNUiQe9X68kEQCDZ0/nAfsoS07vO9PClkHCV8MY1GWOX3VdGN1Ze\nLjQv7+Bscr30OiLxidTRcEMvX7LZuL9cU7f4PlrUTEQ7qBgqhf3G8tNccLPs\nKqN4MkkGhsV4TrzERCajUvlcdz3ZUJD5D+b5PCT2uH9yopizDFFx7/DhR9NU\npRSfmmL8rjJB5mxjGLM+JxpXlxr8Q6BQA2X09UtHXYtghZG/ZWLCQKq7G43F\nx9Yvr1bicWt3Pgw4tEHp5PkncdsoY98B+RidrfJEU2w3cUT55Ga9BeXH+nvO\n2Cu3Zf4n2d7fdrCOKb94bOCTzX/+Qm/RUMyuBWN4wxqFC9pizIMLTwIzcuA4\nNQRNNXwelR7lQmF3tcKtSovYjAEwrbrvKIoEDLUsUJ3FxAsjBvHOP2n1A9Mu\nmTPo5Vrk/BDloV6uBc96RLWlRD8hqpnB0dGpoRGC/isqAPCwByOF/XBzBylU\n2RLCFVfsqiDuchtRinSTKLQ0XjcvMJsyjoM2DPouVZZcGXAM5SsKUW+1qKwj\n3hbv\r\n=NNsw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKA7CHKkoSJLAITNntOh/xLfsMAzRQ+0Y8M2JTHe3HmQIgdoh7IBU1mX8wKytWtNuKCXDBNam3pHhoR6E1g1smqXw="}]},"_npmUser":{"name":"belym.a.2105","email":"belym.a.2105@gmail.com"},"directories":{},"maintainers":[{"name":"inikulin","email":"ifaaan@gmail.com"},{"name":"amoskovkin","email":"henry71rus@gmail.com"},{"name":"belym.a.2105","email":"belym.a.2105@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/replicator_1.0.4_1621257519242_0.3146935498455048"},"_hasShrinkwrap":false},"1.0.5":{"name":"replicator","version":"1.0.5","description":"Advanced JavaScript objects serialization.","main":"index.js","scripts":{"test":"eslint index.js test && mocha","publish-please":"publish-please","prepublish":"publish-please guard"},"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/inikulin/replicator/issues"},"homepage":"https://github.com/inikulin/replicator#readme","devDependencies":{"eslint":"^2.9.0","mocha":"^8.4.0","publish-please":"^5.4.3"},"gitHead":"c0ebc6e7c307ff1789ff531abdd925e2cf565c16","_id":"replicator@1.0.5","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-saxS4y7NFkLMa92BR4bPHR41GD+f/qoDAwD2xZmN+MpDXgibkxwLO2qk7dCHYtskSkd/bWS8Jy6kC5MZUkg1tw==","shasum":"f1e56df7e276a62afe80c2248b8ac03896f4708f","tarball":"https://registry.npmjs.org/replicator/-/replicator-1.0.5.tgz","fileCount":4,"unpackedSize":22978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1nrCRA9TVsSAnZWagAAVKwP/iG6PVICzyxtzYtwm9xm\nmCMgfFlJRdBs/W5gYnSDvyP6/+RbBWPejErJwxadWHViF22A4KO2qCWh6teV\nLMm9FjKe1okLOFP8j68uKz1loEi2REVnFlALOKoQrbikeLfRX7WQp8PhmxgL\nCevGXBIdmIDL2QEkJXUetfG1I3S+0DzW1/bGidms5vC2xowVNMPeLO9tGoEq\n0koDn4fmF11fXUmAG8dzyvwP8elMMmp4LxOvRC1Ot8LKm0JIMoAUgeEpSJk1\nbF6+dzzkLnP600olmkA+uwQ2YUuY02bFR1klEnGIWQ40mwKQCGPan/IcVSW7\nioUHnTYeQ6BIWjisvTLF+MjlJI05e1f00VF+/A2IRXYBSKSsqKEufzIevqzH\nneo355Q2DbvtZgHV06pqqAe9UIvYjmbQLIw8ugAP65erv6/5zxQs5atxUEud\nL4zAwtOw0KmzFqvzx962yMurOQ/pmgf+ecdXeB7BM6AddEJetwUd8u9Hvqeh\nZpF83AROAkvYBiQyAdU2SUWtkJ0XNEvf3NW0ILzaH7WvxE4Usawt6cyUGjW4\n1hEr4jLTe7dIcGioR2SrbM4RSa1Ab5tEa8LPq+NNfIxJokH6qO/e/uid4Jo2\np3CmQV8DGuK4ihmnDezYYBihs6NQfq35FiaMOQ7jwJQ8BZmG5PecevrLWvgw\nvzbB\r\n=B7L+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFJC0sYwmhIztJ17hTWzie0iUwv9KEtB9YWNP9JyM/OgIhAIURd287qZWuIbJ4ldt7XJeK5iH199YGPbonyG/5kKTR"}]},"_npmUser":{"name":"belym.a.2105","email":"belym.a.2105@gmail.com"},"directories":{},"maintainers":[{"name":"inikulin","email":"ifaaan@gmail.com"},{"name":"amoskovkin","email":"henry71rus@gmail.com"},{"name":"belym.a.2105","email":"belym.a.2105@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/replicator_1.0.5_1621842410589_0.030243448736596346"},"_hasShrinkwrap":false}},"readme":"<p align=\"center\">\n    <a href=\"https://github.com/inikulin/replicator\">\n        <img src=\"https://raw.github.com/inikulin/replicator/master/media/logo.png\" alt=\"replicator\" />\n    </a>\n</p>\n<p align=\"center\">\n<i>Advanced JavaScript objects serialization</i>\n</p>\n<p align=\"center\">\n  <a href=\"https://github.com/inikulin/replicator/commits/master\"><img alt=\"GitHub branch checks state\" src=\"https://img.shields.io/github/checks-status/inikulin/replicator/master?label=tests\"></a>\n  <a href=\"https://www.npmjs.com/package/replicator\"><img alt=\"NPM Version\" src=\"https://img.shields.io/npm/v/replicator.svg\"></a>\n</p>\n\n- Can serialize circular references\n- In addition to JSON-serializable types can serialize:\n  - `undefined`\n  - `NaN`\n  - `Date`\n  - `RegExp`\n  - `Error`<sup>[1](#note1)</sup>\n  - `Map`<sup>[2](#note2)</sup>\n  - `Set`<sup>[3](#note3)</sup>\n  - `ArrayBuffer`<sup>[3](#note3)</sup>\n  - Typed arrays<sup>[3](#note3)</sup>\n- [Can be extended with custom type transforms](#adding-custom-types-support)\n- [Can use any target serializer under the hood](#changing-serialization-format) (JSON, BSON, protobuf, etc.)\n\n----\n<a name=\"note1\">1</a>: If decoding target platform doesn't support encoded error type, it will fallback to `Error` constructor.<br>\n<a name=\"note2\">2</a>: If decoding target platform doesn't support `Map`, it will be decoded as array of `[key, value]`.<br>\n<a name=\"note3\">3</a>: If decoding target platform doesn't support `Set`, `ArrayBuffer` or typed arrays, they will be decoded as array. <br>\n\n## Install\n```shell\nnpm install replicator\n```\n\n## Usage\n```js\nconst Replicator = require('replicator');\n\nconst replicator = new Replicator();\n\nconst a = {};\na.b = a;\n\nconst str = replicator.encode({\n    key1: new Set([1, 2, 3]),\n    key2: /\\s+/ig,\n    key3: a\n});\n\nconst obj = replicator.decode(str);\n```\n\n\n## Adding custom types support\nYou can extend `replicator` with custom type transform which will describe how to serialize/deserialize objects. You can\nadd transforms using `.addTransforms(transforms)` method. And remove them using `.removeTransforms(transforms)` method.\nBoth methods are chainable and accept single transform or array of transforms. You should add transforms to both encoding\nand decoding instances of `replicator`.\n\nLet's create transform which will encode `NodeList` of elements and decode it as array of objects with `tagName` property:\n```js\nconst Replicator = require('replicator');\n\nconst replicator = new Replicator();\n\nreplicator.addTransforms([\n    {\n        type: 'NodeList',\n\n        shouldTransform (type, val) {\n            return typeof NodeList === 'function' && val instanceof NodeList;\n        },\n\n        toSerializable (nodeList) {\n            // We should transform NodeList to primitive serializable object.\n            // It's an array of HTMLElement in our case.\n            // Note that it's not required to transform each element in\n            // NodeList. We can add HTMLElement transform which\n            // will transform NodeList items and individual elements as well.\n            return Array.prototype.slice.call(nodeList);\n        },\n\n        fromSerializable (val){\n            // Now we should describe how to restore NodeList from serializable object.\n            // In our case we just need an array so we'll return it as is.\n            // If you want to restore it as NodeList you can create document fragment, append\n            // array contents to it and return result of `fragment.querySelectorAll('*')` .\n            return val;\n        }\n    },\n\n    {\n        type: 'Element',\n\n        shouldTransform (type, val){\n            return typeof HTMLElement === 'function' && val instanceof HTMLElement;\n        },\n\n        toSerializable (element) {\n            return element.tagName;\n        },\n\n        fromSerializable (val) {\n            return { tagName: val };\n        }\n    }\n]);\n\nvar str = replicator.encode(document.querySelectorAll('div'));\n\nconsole.log(replicator.decode(str));\n// > [ { tagName: 'div'}, { tagName: 'div'}, { tagName: 'div'}]\n```\n\nBuilt-in types support implemented using transforms, so you can take a look on `replicator` source code for more examples.\n\n## Changing serialization format\nBy default `replicator` uses JSON under the hood. But you can use any serializer by passing serializer adapter to `Replicator`\nconstructor. E.g., let's use [BSON](https://www.npmjs.com/package/bson) as serializer:\n```js\nconst Replicator = require('replicator');\nconst BSON       = require('bson');\n\nconst replicator = new Replicator({\n    serialize (val) {\n        return BSON.serialize(val, false, true, false);\n    },\n\n    deserialize: BSON.deserialize\n});\n\nreplicator.encode(['yo', 42]);\n// > <Buffer>\n```\n\n## Author\n[Ivan Nikulin](https://github.com/inikulin) (ifaaan@gmail.com)\n","maintainers":[{"name":"inikulin","email":"ifaaan@gmail.com"},{"name":"amoskovkin","email":"henry71rus@gmail.com"},{"name":"belym.a.2105","email":"belym.a.2105@gmail.com"}],"time":{"modified":"2022-06-26T11:22:49.277Z","created":"2016-05-24T14:06:59.265Z","1.0.0":"2016-05-24T14:06:59.265Z","1.0.1":"2016-07-11T09:41:24.913Z","1.0.2":"2018-04-27T21:23:25.478Z","1.0.3":"2018-12-17T12:15:49.909Z","1.0.4":"2021-05-17T13:18:39.372Z","1.0.5":"2021-05-24T07:46:50.709Z"},"homepage":"https://github.com/inikulin/replicator#readme","keywords":["JSON","serialization","deserialization","circular","circularJSON","structured-clone","structured","clone"],"repository":{"type":"git","url":"git+https://github.com/inikulin/replicator.git"},"author":{"name":"Ivan Nikulin","url":"ifaaan@gmail.com"},"bugs":{"url":"https://github.com/inikulin/replicator/issues"},"license":"MIT","readmeFilename":"README.md"}