{"_id":"abstract-extension","_rev":"4-72fa789affc8a0e5b4082008b0de4c59","name":"abstract-extension","dist-tags":{"latest":"3.1.1"},"versions":{"3.0.0":{"name":"abstract-extension","version":"3.0.0","description":"Small abstraction to help build out user defined extension messages in an RPC system","main":"index.js","dependencies":{"codecs":"^2.0.0"},"devDependencies":{"standard":"^14.3.1","tape":"^4.11.0"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/abstract-extension.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/abstract-extension/issues"},"homepage":"https://github.com/mafintosh/abstract-extension","gitHead":"281bcffbe71c645f7ec4252e2c4f06b14f305e0d","_id":"abstract-extension@3.0.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-HyYIe53NzOPmvPZ/GUjdbF4B/R9xj+bt0wqd9CLsr3Z8vPHY64WEvjbuxDigKDvzfm0y+ugwyX/n2CvpP9Lnfw==","shasum":"9054726844c177df5edb2a23eabe659073c47dbf","tarball":"https://registry.npmjs.org/abstract-extension/-/abstract-extension-3.0.0.tgz","fileCount":5,"unpackedSize":8608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdo122CRA9TVsSAnZWagAAcUQQAIHUENHhsiuwo5OXP5BU\nOYYWJlJO8xDuwgMxPOWf4X11+qhQ4RZlFAuF9OgMupSFrQTgOD9zRWJ+PXL8\n67CprcLFjBR0Qs0TsIoV+x3ZQ/gLpgg6JGPIDhbVPigumpleiDf55pHOmFkA\nyK65zu2HEeqKhk2vtumNE+IgBHnEQkbo3rhYC/kyna6ifT7p1FjAubceaFx+\n5Zvig9ioTTCNO4VNtUF/publu7DzoV79SBXLFfclsgNopXrenx/ZSEGioNg3\nCC3aahSZCA2a7PsCrFoZa7z22ceIOSKfQaGLG8NjpeQ0S66DLzkjbtSF2Wqs\ntYdHYIwqJYpqgf5lCdC6Ht2+nhRsZZ/cM3LrOWPtN3nghTv17oeWFpxf8ZMe\n4HK00TgOOc2UJUmgLSlqYvmU/SsghMANW0jz5Y0OPPsAoNFHhD5W2jphN2Zw\ndB+SyOcXUV/cUWSGKJjHqQj1v8WLG2FVrzBlcL5RVFE2jR/ArVVWwJKKz3wf\nr2nXjRgoFJddUVhNhNuMljy7BMzu6OEWRPdFYmHegDuw0dOJvsbFg1xwRGL/\nE2jpFZ/RqWPJpRijeO3b8UN9GZzrx9JUWhbGrDY/z4dHAQbCW7HcaBI8svqt\nuUOGHsGFIjGzYqvsb7mK0tdgVxVsItzEPwFiQP9poofDwQ6MEGasro4mx3pV\nxMIM\r\n=WPvp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcVzX+NHmnhE2nRNiPP2a4E7+6RCMTtWe/+ooloMoQOAiB3PCduodnvB0iBSrVKT7PxAz/jD6cxF/C8BgzWtg9JBg=="}]},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abstract-extension_3.0.0_1570987445412_0.9344729055192393"},"_hasShrinkwrap":false},"3.0.1":{"name":"abstract-extension","version":"3.0.1","description":"Small abstraction to help build out user defined extension messages in an RPC system","main":"index.js","dependencies":{"codecs":"^2.0.0"},"devDependencies":{"standard":"^14.3.1","tape":"^4.11.0"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/abstract-extension.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/abstract-extension/issues"},"homepage":"https://github.com/mafintosh/abstract-extension","gitHead":"a4df8a59029e055be611d95bab79b149de90a79e","_id":"abstract-extension@3.0.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-5EQdWgjJo81nR6fK8DeyXzxGQRInxfSxYgLFaP81DaUGix3IAfiz6VtzwXqMjp+qXeYnlGPn/vSSlz13SejbrA==","shasum":"5b1961dbf9dc89fab367a861376a7a0a98693413","tarball":"https://registry.npmjs.org/abstract-extension/-/abstract-extension-3.0.1.tgz","fileCount":5,"unpackedSize":8618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdo14tCRA9TVsSAnZWagAABr4P/Rd+bHByKioYtRIIQcnf\n01Tityj8cwoDQWYW3NyBanSy3kRtNbsgGUZCoAFvMB8U6869BMNuwFfiPKit\niaaVAcj3nOSlhh9DBmO1Gwj4bRNYlfbD4XBn199hbNsR2AOG9hJlXeE7mJ2W\nfQQvvfR+hyBX2lix39EnxAzPQdKTJJ9W7RiOWfG1jUUBaQxs1+anlvmmcL8r\n3dk+2XraIu7EmWEmhn3ZufRuinZIANiiVsEUmX0i3TQ2L/Phz5k7dLSvs2Zb\n5PUvZAgK11vYdpMNgewJm/1Smy9acoGArV+qEq1YSN+uNOEKaHxJ/eLUC/pL\nOBAihnkF/RAGNZ5VjrPcaFL/vf+qRHshx5dCCgxcDlLB+twYrgg4JhDti/5d\nGfO9yVnLpTtmsxyrIjlP36XyacSGHknv3vRkpue6JBIFi4vYV6ZqcJUq49eK\nd/Yre8yNFwNFyEon6MWzpLRZ9RMaPWqBi0cTmcO8d9+Sn4MfxTXfKfpJF1Ao\nilM4YaWv+a17AD73lNYQlvtsyFhay70gWi2YFLQRPZkWY//RZHXdqt59NNlK\n6DIOzPx3ADRpG1+D6dccyVVTaX+omh77A/pPbQJceS5EW/akuMbzGJSvEFN1\nU23jQuK1W6Sna1aL7nlBZJvtG8TTR9MIttJRPM/y3nyQWaPJ7oT/7q7Fcx6l\nPrt9\r\n=hfX+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGy3K/pO0bZAHa/ls7QEC++/HPn22Yuah69VRdzzolRwAiEAivVBLxfjYfEEA774khm2RcWd5BgTjUAJkGXuwW/D/K8="}]},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abstract-extension_3.0.1_1570987564782_0.520353881997593"},"_hasShrinkwrap":false},"3.1.0":{"name":"abstract-extension","version":"3.1.0","description":"Small abstraction to help build out user defined extension messages in an RPC system","main":"index.js","dependencies":{"codecs":"^2.0.0"},"devDependencies":{"standard":"^14.3.1","tape":"^4.11.0"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/abstract-extension.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/abstract-extension/issues"},"homepage":"https://github.com/mafintosh/abstract-extension","gitHead":"fab8ba9c091ab9d7c1af121043085cd2ce8036a9","_id":"abstract-extension@3.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.1","dist":{"integrity":"sha512-IhhwBFoP2l4xm0gp/YGzOfkie28OCT0X3OG4k9Zari/cM92QUU1tluUIBdhVrGXF8KrFGd8x9snuz152j6yi6A==","shasum":"104da6e40765216d60688e31ee17fed6f4ed2196","tarball":"https://registry.npmjs.org/abstract-extension/-/abstract-extension-3.1.0.tgz","fileCount":5,"unpackedSize":9032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3SHACRA9TVsSAnZWagAAWS4P/j25V+O18y0nwA5iM4XG\nZx/7dE+fmgDfNY2OGfTKPA6R4t+DsEm9sSiA8okZVyml8Xn8jfp6gUFc2/+n\njb7lBkECG9P1xpN5lqA30B2n/0QsnuyxWB2hheuGQCVAGIYK4sDflLh2gxym\ng/ei0w3xFparOD9t89tvXXraXCWyq/SygGhr+AszGyM/2JDFpNEFYLMAABeN\ndDfpk0Uq3ER1MSDFtFkGlVxPWONRhHPwdd+ltSpGT4HKbZ2CU7YbLB2R8Cc7\ndKuWOnSuWrBgrYSPYFLQmXzrNrE/exHebAhvm8nkW5y3k7pWGBOGmoAWiKp+\nVEPudagZB6nTQI0EH+7HPKypU1GDra8Jmnb2RSTSt/Nf3cSNOXdGanEvDhua\nDpqzrznOBrCVChFPsCgfRKAGcVY8Ve8JSnujpZBs90S+7E6Tt2TSbwMaHA6l\nYCRAwpG8kV1dnIOSnWl4LHiSP8wzVtMX5QykJ+OwtrGcVJzhQ2+x4HKPkEW1\nADgDU0Uij3Sw/szVhe5s+4DSPnGwVc4Mg8KhEIS/gLD8ghAgc1qYCuvqDwQh\nspwwKd7C8VACujZDQqm/9mEnSU9eflwfvrnlfslzPhnj3laWZbPqTA57LHO6\nTCO+L1MlglJ/yhwAeqEaIvuKAJ3cIEcJ7JP7mRstj1D4mvWqhu6V/isvaPQL\ntYTl\r\n=lU57\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSf/MkOx1kzHiNbQsT75hUSo6QmhpVvOps1B0k0V1QogIgAh14Y/wKJ9OVSbkahRDnInoCaAndrG/jAt6Dlho35ZM="}]},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abstract-extension_3.1.0_1574773184354_0.43591839516460906"},"_hasShrinkwrap":false},"3.1.1":{"name":"abstract-extension","version":"3.1.1","description":"Small abstraction to help build out user defined extension messages in an RPC system","main":"index.js","dependencies":{"codecs":"^2.0.0"},"devDependencies":{"standard":"^14.3.1","tape":"^4.11.0"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/abstract-extension.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/abstract-extension/issues"},"homepage":"https://github.com/mafintosh/abstract-extension","gitHead":"dc0eab15ff053f8fcac83a3686ffd12cde891df9","_id":"abstract-extension@3.1.1","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-qmUIqQEh6ZZBKN6JfysKgCEBqI4qVexE6/N/MUJjqtQhhuGR8a16GKnK6SGFKv/n1cAlbYxLDXbtyhkxSnVYRQ==","shasum":"2c215ef08197c94b791746792889dfd350c07a8b","tarball":"https://registry.npmjs.org/abstract-extension/-/abstract-extension-3.1.1.tgz","fileCount":5,"unpackedSize":9097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5427CRA9TVsSAnZWagAANs8P/3toiOYhzW2h7ngGVXuL\ngzA9CM89/1LFO8q1p5puI5WR4pIlYK52G+n0uvCT05MgQTLfomEltIqiHFpM\nA9+7zG9l2bQU07hx/QtBYuJvDWejdT++nP4iEu+0KLgaqVPQ3CQUjAgDuvkE\nInNK6A7vJ3IgdEOHa+9fUmn9A5xO2Fs5pJbA/3jbVi1BAmHRTcEEIRP84Czu\nwmNJJJMTeWnFHcwcQbFtDE9gVlGEy0toJElXQ69+WdXiTZgJIu6F+AeAYQG+\nfAipKEDck0IOji9ZmumeP7UmJZLVUXZHVNhI91ZuLEXLj8CG5lA8BitOelmK\n63OhLdppkgPKBU166MvAO1SXM3Qe4o6wiD7mg7Kg4UZ639BqCKPjExRF7u1y\nZbJvhdwN2XOD98QY+YjjAXxUpAevrrMzL0KuoxxZuLBLnHcyg8SoB3aYRlGT\nIjo3g2+WbwqpvAR9Aui5vRqB952WW7sbrrbi5fFfDkwDHMqWpg1bF/7ANF2v\nfhSRuPmU/aH5+f6BpmFtRRJzraxuL2XKWttJM+l3y+CXQFbCB8VL2sWl50Hy\n/EXn2difTby2qDQf586frkaS/sLYSQSEYoKsu7zLbLfPr14gXahA9wCwOrXC\n/kUPkKC0iksZT6R2AmUfsaA9/uzBmX/mcx6PlGyTIlmeMgos8wprHbzRANln\nMcCv\r\n=mFSt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMpBcSpVNUcwDnbnvjFa6Bq9cxilub9ypQKhAWnIXGzQIhAJhv930/IfsrbJTEIRloQ8+3hYqQePsqMpe3OcX2sVzW"}]},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abstract-extension_3.1.1_1592233403046_0.6033786273418056"},"_hasShrinkwrap":false}},"time":{"created":"2019-10-13T17:24:05.412Z","3.0.0":"2019-10-13T17:24:05.509Z","modified":"2022-04-11T12:26:39.789Z","3.0.1":"2019-10-13T17:26:04.889Z","3.1.0":"2019-11-26T12:59:44.451Z","3.1.1":"2020-06-15T15:03:23.144Z"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"description":"Small abstraction to help build out user defined extension messages in an RPC system","homepage":"https://github.com/mafintosh/abstract-extension","repository":{"type":"git","url":"git+https://github.com/mafintosh/abstract-extension.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"bugs":{"url":"https://github.com/mafintosh/abstract-extension/issues"},"license":"MIT","readme":"# abstract-extension\n\nSmall abstraction to help build out user defined extension messages in an RPC system.\n\n```\nnpm install abstract-extension\n```\n\nSee [hypercore](https://github.com/mafintosh/hypercore) and [hypercore-protocol](https://github.com/mafintosh/hypercore-protocol)\nfor a full example on how to use this\n\n## API\n\n#### `const AbstractExtension = require('abstract-extension')`\n\nImports the AbstractExtension class. You should extend this and add the functionality you need.\n\n#### `abstractExtension.destroy()`\n\nDetroy an extension instance. Removes the message from the local pairing instance.\n\n#### `abstractExtension.id`\n\nThe local id of the message. Send this over the wire instead of the message name after exchanging the initial message names.\n\n#### `const bool = abstractExtension.remoteSupports()`\n\nTrue if the remote also supports this message. Note that nothing bad will having from sending a message the remote does not support.\n\n#### `const buffer = abstractExtension.encode(message)`\n\nEncode a message to a buffer based on the message encoding.\n\n#### `const local = AbstractExtension.createLocal(handlers)`\n\nCreate a local message pairing instance.\n\nWhenever the messages are updated `local.onextensionupdate()` will be called if provided.\n\n#### `const msg = local.add(name, handlers)`\n\nAdd a new message. `name` should be the string name of a message.\n\n* `handlers.encoding` is an optional encoding for the message payload. Can be either `json`, `utf-8`, `binary` or any abstract encoding.\n* `handlers.onmessage(message, context)` is called when a message has been received and pairing.\n* `handlers.onerror(error, context)` is called when a message fails to decode.\n\n#### `const list = local.names()`\n\nReturns a sorted list of message names. You need to pass this to another remote pairing instance somehow.\n\n#### `const remote = local.remote()`\n\nCall this to setup remote pairing.\n\n#### `remote.update(localNames)`\n\nPass the names of another instance to setup the pairing\n\n#### `remote.onmessage(id, message, [context])`\n\nPair the remote id with the corresponding local message and call the onmessage handler.\nOptionally pass a context object that is simply passed along to the `message.onmessage` function\n\n## License\n\nMIT\n","readmeFilename":"README.md"}