{"_id":"@alius/rpc","_rev":"9-9115e7314543d3ad4013283b393562d6","time":{"created":"2023-02-02T06:59:16.632Z","1.0.1":"2023-01-27T06:05:05.557Z","modified":"2023-02-05T03:46:10.489Z","1.0.2":"2023-02-01T01:33:59.786Z","1.0.3":"2023-02-01T12:03:00.898Z","1.0.4":"2023-02-01T14:37:32.368Z","1.0.5":"2023-02-02T06:59:16.903Z","1.0.6":"2023-02-05T03:46:10.412Z"},"name":"@alius/rpc","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.5":{"name":"@alius/rpc","version":"1.0.5","description":"JSON-RPC 2.0 implementation configured with OpenRPC","author":{"name":"Aleksandras Novikovas","email":"Aleksandras.Novikovas@gmail.com","url":"http://www.systemtier.com/"},"license":"MIT","type":"module","repository":{"type":"git","url":"git+https://aleksandras-novikovas@bitbucket.org/aleksandras-novikovas/rpc.git"},"exports":{".":"./index.js","./index.js":"./index.js"},"types":"./index.d.ts","scripts":{"doc":"npx jsdoc src -c $NODE_PATH/jsdoc-import/jsdoc.json -r -d web/docs","lint":"npx eslint src test","test":"npx mocha","types":"npx tsc ./src/* --declaration --allowJs --emitDeclarationOnly --esModuleInterop --outDir types"},"keywords":["rpc","jsonrpc","JSON-RPC","open-rpc","OpenRPC"],"dependencies":{"@alius/exception":"^1.0.5","@alius/utils":"^1.0.5","@apidevtools/json-schema-ref-parser":"^10.0.1","ajv":"^8.12.0","ajv-formats":"^2.1.1"},"eslintConfig":{"env":{"es2021":true,"node":true},"extends":"eslint:recommended","parserOptions":{"ecmaVersion":2022,"sourceType":"module"},"rules":{"indent":["error",2],"linebreak-style":["error","unix"],"quotes":["error","double"],"semi":["error","always"],"padded-blocks":["error",{"blocks":"never","classes":"never","switches":"never"}]}},"mocha":{"recursive":true},"gitHead":"e8dbad7b1e83844dddbc85ae3f9105e688e92dc1","bugs":{"url":"https://bitbucket.org/aleksandras-novikovas/rpc/issues"},"homepage":"https://bitbucket.org/aleksandras-novikovas/rpc#readme","_id":"@alius/rpc@1.0.5","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-yd7nkE9Mk5ljOai6+qCEJZq8xDnhJ5szC3ewBcmi/3EprqwA83TLUpQqiwHF4YG8sYJ2Qi8HweAaSkUswmERAg==","shasum":"d5f567b9e225f9483fa12d5bea005a346da9e5e8","tarball":"https://registry.npmjs.org/@alius/rpc/-/rpc-1.0.5.tgz","fileCount":17,"unpackedSize":177447,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+XTX4iiOSAtcag2EUePHQYvpfI+uL5VvogEpOm81ksAiEAicgz1HgIAYkpz01zZyu1owLzonc27ldTofrAq/DMUBY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj219EACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoEA//ccT3gK1OLeWrtQK8XfTXZuKEo4gyAlgfmtjbCGx56rLkTGyj\r\nraf+2ikUu9RWpILNREJ5ae1AewINA3JboXqXaC6VmJgQxEIK/eeCUHp3L+t6\r\nnCB7I9lfWSoU+85tIU+Zqr47rxzALHLcAWVWYyGhWoqDgkEnH83YEH93x3wf\r\nBRh43CAU3kFJGnyNl/1YmWm88AfAbaq1zr3OA/D5UiatBjJ5gWs2Li+7T8Bj\r\nMkzwKgZG0JrgwmlLQ1yyYXAywnknxP24SCysCNbMJGaH2jVUoEbE7+dXPrVf\r\nrYSxU0lGl1P0uQh2sT/VLFb1cgJsM13yScKkhOCU+v1dpHayKtft2lmPDRoF\r\nNvpZkZhJUU+Z9PTPQMByX+LVoJ59GP6Ysn7hUQW20k6d3r/DmIdoZnRUfB5J\r\nYAwsXPrpRw2hblfgrWneEgY9jW+Q5bcmlUDKmPyZLdToPwW0hzFCARZniEVj\r\njbVrsfstKQq1Wz8nvWOKgdJ6nWZnxYCqUSJjNX2VbNJ3OYg7+VhsSbfpN1v4\r\nwWc8Wv92Kd43QEfRldzNARtxsODOChFkgvJ1wkasAfU/SAMT3NsjOwxmLykU\r\nR7t8uAaRag55r9A5EvD1Ikcr3EUy2px7CflRVpzPFYkdePNfRI54yOJo1Ue4\r\nJhtmuQVORPvG3bPbzeLr7btqStY+ZtzDXr4=\r\n=UmZC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"alius","email":"Aleksandras.Novikovas@gmail.com"},"directories":{},"maintainers":[{"name":"alius","email":"Aleksandras.Novikovas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rpc_1.0.5_1675321156697_0.5806085130233385"},"_hasShrinkwrap":false},"1.0.6":{"name":"@alius/rpc","version":"1.0.6","description":"JSON-RPC 2.0 implementation configured with OpenRPC","author":{"name":"Aleksandras Novikovas","email":"Aleksandras.Novikovas@gmail.com","url":"http://www.systemtier.com/"},"license":"MIT","type":"module","repository":{"type":"git","url":"git+https://aleksandras-novikovas@bitbucket.org/aleksandras-novikovas/rpc.git"},"exports":{".":"./index.js","./index.js":"./index.js"},"types":"./index.d.ts","scripts":{"doc":"npx jsdoc src -c $NODE_PATH/jsdoc-import/jsdoc.json -r -d web/docs","lint":"npx eslint src test","test":"npx mocha","types":"npx tsc ./src/* --declaration --allowJs --emitDeclarationOnly --esModuleInterop --outDir types"},"keywords":["rpc","jsonrpc","JSON-RPC","open-rpc","OpenRPC"],"dependencies":{"@alius/exception":"^1.0.5","@alius/utils":"^1.0.5","@apidevtools/json-schema-ref-parser":"^10.0.1","ajv":"^8.12.0","ajv-formats":"^2.1.1"},"eslintConfig":{"env":{"es2021":true,"node":true},"extends":"eslint:recommended","parserOptions":{"ecmaVersion":2022,"sourceType":"module"},"rules":{"indent":["error",2],"linebreak-style":["error","unix"],"quotes":["error","double"],"semi":["error","always"],"padded-blocks":["error",{"blocks":"never","classes":"never","switches":"never"}]}},"mocha":{"recursive":true},"gitHead":"82f85f029c8a06549fa18c1e179238970b167655","bugs":{"url":"https://bitbucket.org/aleksandras-novikovas/rpc/issues"},"homepage":"https://bitbucket.org/aleksandras-novikovas/rpc#readme","_id":"@alius/rpc@1.0.6","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-qHtObf6n9F3mYGgqna35zWvhVEB8wWQfK6xhog/6wIu9iWFHvM98FBvW9hDa7SUcIy1XER1T17ifV2eLLoanFQ==","shasum":"dc25618316a4a214474f53e08d2288a9b3698cf5","tarball":"https://registry.npmjs.org/@alius/rpc/-/rpc-1.0.6.tgz","fileCount":30,"unpackedSize":191816,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDk092WXbfD1k7/Tu9dIg3JYT3XW+eeHObHf6FezGDHQIhAOgymBDXwpM4Sgy0lSfvN5XGvwXHtDGcx1HOHxAOnZkc"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3yaCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXmxAAg3Bp8K9GOz/CAOUcf+aXBqzRx28EXxj26TrAz0ejp+vusEd1\r\npsgMuEtYZpdKss3BbfbN+faIP+VeQr5f4uxKFNrOVuitCd7puEKbb7fLluyF\r\nv30IJOU+KdTjlUUOmeC1K+NXh3zyBEd6omPfm3d86YCezCio8YYMtSqGQMMh\r\n7yVqkCWb4bq6o1mTyTBkvWsnuI/EBpMIWEF0oKehnVMg5Quk/+Lt8vuJdKyA\r\nye/nmjWOH1C8n8jFgv5qxAzD4rptglwJfcZK1QW8LbJqVLutiyKmLw4dwPyC\r\nR3yTgtSNnUMAxuHqshv03jMyg+RjSqQ39o+sPfeFW6iJ4e3j+PpJTSFq4z2e\r\nII6mUQ1L5IZvyvkRwliqq7XdNcZQ5Gm3+g6ll1xr5GuYccH7ghXFybhtVGvf\r\nn084lLXtM4OMjezfl0pe/bK68S/GTPrhWeS6zoahO0T6HcEFdvQcKnRAymnI\r\nbVVIUVLjeQlykk4iD61gOIAKnXUGdxwPq/sJ29A1a+siB4cotZbGC7+cnHqW\r\nYgX/XA89+aL6RXUnApgCHjQkyGv7hj7y138ypNT+BKs51rqUftHg6CwCyQez\r\naktKi/3xG1XAk1V7roSyCkJ1KbQGTYPEx9Qf7FT5P4w2kbv6FUZfkOPRzsbb\r\nKBpgIY1r4QmQeAJPh89MeeVwFnh06htuIhA=\r\n=qTnj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"alius","email":"Aleksandras.Novikovas@gmail.com"},"directories":{},"maintainers":[{"name":"alius","email":"Aleksandras.Novikovas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rpc_1.0.6_1675568770224_0.620019617050025"},"_hasShrinkwrap":false}},"maintainers":[{"name":"alius","email":"Aleksandras.Novikovas@gmail.com"}],"description":"JSON-RPC 2.0 implementation configured with OpenRPC","homepage":"https://bitbucket.org/aleksandras-novikovas/rpc#readme","keywords":["rpc","jsonrpc","JSON-RPC","open-rpc","OpenRPC"],"repository":{"type":"git","url":"git+https://aleksandras-novikovas@bitbucket.org/aleksandras-novikovas/rpc.git"},"author":{"name":"Aleksandras Novikovas","email":"Aleksandras.Novikovas@gmail.com","url":"http://www.systemtier.com/"},"bugs":{"url":"https://bitbucket.org/aleksandras-novikovas/rpc/issues"},"license":"MIT","readme":"JSON-RPC 2.0 implementation configured with OpenRPC.\n\nThis implemetation is not tied to any specific transport.\n\n# Installation\n```\nnpm install @alius/rpc\n```\n# Usage\nCreate configuration file `config.openrpc.json`\n```json\n{\n  \"openrpc\": \"1.2.6\",\n  \"info\": {\n    \"version\": \"1.0.0\",\n    \"title\": \"Calc\"\n  },\n  \"methods\": [\n    {\n      \"name\": \"add\",\n      \"params\": [\n        {\n          \"name\": \"a\",\n          \"required\": true,\n          \"schema\": {\n            \"type\": \"number\"\n          }\n        },\n        {\n          \"name\": \"b\",\n          \"required\": true,\n          \"schema\": {\n            \"type\": \"number\"\n          }\n        },\n        {\n          \"name\": \"c\",\n          \"schema\": {\n            \"type\": \"number\"\n          }\n        }\n      ],\n      \"result\": {\n        \"name\": \"addition of provided params\",\n        \"schema\": {\n          \"type\": \"number\"\n        }\n      }\n    },\n    {\n      \"name\": \"subtract\",\n      \"params\": [\n        {\n          \"name\": \"a\",\n          \"required\": true,\n          \"schema\": {\n            \"type\": \"number\"\n          }\n        },\n        {\n          \"name\": \"b\",\n          \"required\": true,\n          \"schema\": {\n            \"type\": \"number\"\n          }\n        }\n      ],\n      \"result\": {\n        \"name\": \"subtraction of provided params\",\n        \"schema\": {\n          \"type\": \"number\"\n        }\n      }\n    }\n  ]\n}\n```\n```javascript\nimport { RPC } from \"@alius/rpc\";\n// load config\nimport config from \"./config.openrpc.json\" assert { type: \"json\" };\n\n// create and init RPC provider\n// with loaded config and provided method implementations\nconst rpc = await (new RPC(config, {\n  add: (a, b, c = 0) => a + b + c,\n  subtract: (a, b) => a - b\n})).init();\n\n// create request object\n// {\n//  jsonrpc: \"2.0\",\n//  id: 1,\n//  method: \"add\",\n//  params: {\n//    a: 1,\n//    b: 2,\n//    c: 3\n//  }\n// }\nconst req1 = RPC.request(1, \"add\", {\n  a: 1,\n  b: 2,\n  c: 3\n});\n\n// resulting response object\n// {\n//  jsonrpc: \"2.0\",\n//  id: 1,\n//  result: 6\n// }\nconst res = await rpc.execute(req1);\n\nconst req2 = RPC.request(2, \"subtract\", {\n  a: 10,\n  b: 2\n});\n\n// resulting array of reponse objects\n// [\n//  {\n//    jsonrpc: \"2.0\",\n//    id: 1,\n//    result: 6\n//  },\n//  {\n//    jsonrpc: \"2.0\",\n//    id: 2,\n//    result: 8\n//  }\n// ]\nconst multiRes = await rpc.execute([req1, req2]);\n\n```\n# API\n# RPC\n## Constructors\n### `RPC()`\nCreates new RPC provider with empty configuration.\n### `RPC(config, handlers)`\nCreates new RPC provider with provided configuration and handlers.\n### `RPC(config, handlers, options)`\nCreates new RPC provider with provided configuration, handlers and options.\n\nOptions can specify list of `preProcessors` and `postProcessors` functions. Specified pre-processor functions will be executed before handler execution. Specified post-processor functions will be executed after handler execution.\n\n## Properties\n### `initialized`\nReturns `true` if RPC provider already initialized.\n### `ajv`\nHolds Ajv validator.\n### `json`\nHolds JSON request object beeing processed.\n\n## Methods\n### `init()`\nInitializes RPC provider. Must be run once.\n### `configure(config, handlers?, options?)`\nRe-configures RPC provider with new configuration.\n### `serviceDiscover()`\nHandler for 'rpc.discover' method.\n### `putMethod(config, handler)`\nAdds new method to existing live configuration.\n### `removeMethod(name)`\nRemoves specified method from live configuration.\n### `getMethodConfig(name)`\nReturns method config.\n### `execute(json, options = {})`\nExecutes single JSON-RPC request or batch of requests.\n### `executeSingle(json, options = {})`\nExecutes single JSON-RPC request.\n## Static properties\n### `VERSION`\n\"2.0\"\n### `JSONRPC`\n\"jsonrpc\"\n### `ID`\n\"id\"\n### `METHOD`\n\"method\"\n### `PARAMS`\n\"params\"\n### `RESULT`\n\"result\"\n### `ERROR`\n\"error\"\n### `ERROR_CODE`\n\"code\"\n### `ERROR_MESSAGE`\n\"message\"\n### `ERROR_DATA`\n\"data\"\n### `ERROR_32000`\nResponse for JSON stringify error.\n### `ERROR_32010`\nResponse for Pre-processor execution error.\n### `ERROR_32020`\nResponse for Method execution error.\n### `ERROR_32030`\nResponse for Invalid result error.\n### `ERROR_32040`\nResponse for General security error.\n### `ERROR_32041`\nResponse for Credentials expired error.\n### `ERROR_32050`\nResponse for Post-processor execution error.\n### `ERROR_32600`\nResponse for Invalid request error.\n### `ERROR_32601`\nResponse for Method not found error.\n### `ERROR_32602`\nResponse for Invalid params error.\n### `ERROR_32603`\nResponse for Internal error.\n### `ERROR_32700`\nResponse for JSON parse error.\n### `SPEC_ERRORS`\nList of error objects defined in specs.\n### `IMPL_ERRORS`\nList of all error objects defined in this implementation (including spec errors).\n### `RPC_DISCOVER`\nService discovery method name as specified in OpenRPC (\"rpc.discover\").\n### `RPC_DISCOVER_SCHEMA`\nService discovery method schema as specified in OpenRPC.\n## Static methods\n### `request(id, method, params)`\nCreates JSON-RPC request object.\n### `notification(method, params)`\nCreates JSON-RPC notification object.\n### `errorResponse(error, id?)`\nCreates JSON-RPC error response object.\n### `findError(err, defaultError?, errors?)`\nFinds corresponding `JSONRPCErrorObject` among implementation defined and among additional errors (if provided).\n\n# RPCException\n## Constructors\n### `RPCException(code? = -32603, message? = \"RPCError\", cause? = null, data? = null)`\nCreates new RPC error\n","readmeFilename":"README.md"}