{"_id":"abstract-extension","_rev":"480981","name":"abstract-extension","description":"Small abstraction to help build out user defined extension messages in an RPC system","dist-tags":{"latest":"3.1.1"},"maintainers":[{"name":"mafintosh","email":""}],"time":{"modified":"2021-08-05T09:36:57.000Z","created":"2019-10-13T17:24:05.509Z","3.1.1":"2020-06-15T15:03:23.144Z","3.1.0":"2019-11-26T12:59:44.451Z","3.0.1":"2019-10-13T17:26:04.889Z","3.0.0":"2019-10-13T17:24:05.509Z"},"users":{},"author":{"name":"Mathias Buus","url":"@mafintosh"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/abstract-extension.git"},"versions":{"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":{"shasum":"2c215ef08197c94b791746792889dfd350c07a8b","size":3403,"noattachment":false,"key":"/abstract-extension/-/abstract-extension-3.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/abstract-extension/download/abstract-extension-3.1.1.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_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,"publish_time":1592233403144,"_cnpm_publish_time":1592233403144},"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":{"shasum":"104da6e40765216d60688e31ee17fed6f4ed2196","size":3377,"noattachment":false,"key":"/abstract-extension/-/abstract-extension-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/abstract-extension/download/abstract-extension-3.1.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_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,"publish_time":1574773184451,"_cnpm_publish_time":1574773184451},"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":{"shasum":"5b1961dbf9dc89fab367a861376a7a0a98693413","size":3281,"noattachment":false,"key":"/abstract-extension/-/abstract-extension-3.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/abstract-extension/download/abstract-extension-3.0.1.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_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,"publish_time":1570987564889,"_cnpm_publish_time":1570987564889},"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":{"shasum":"9054726844c177df5edb2a23eabe659073c47dbf","size":3281,"noattachment":false,"key":"/abstract-extension/-/abstract-extension-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/abstract-extension/download/abstract-extension-3.0.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_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,"publish_time":1570987445509,"_cnpm_publish_time":1570987445509}},"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","_attachments":{},"homepage":"https://github.com/mafintosh/abstract-extension","bugs":{"url":"https://github.com/mafintosh/abstract-extension/issues"},"license":"MIT"}