{"id":13818196,"url":"https://github.com/Insidexa/nestjs-rpc","last_synced_at":"2025-05-15T22:34:47.652Z","repository":{"id":35078723,"uuid":"193925989","full_name":"Insidexa/nestjs-rpc","owner":"Insidexa","description":"NestJS Json RPC package","archived":false,"fork":false,"pushed_at":"2025-05-05T18:52:16.000Z","size":250,"stargazers_count":63,"open_issues_count":20,"forks_count":12,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T23:33:48.311Z","etag":null,"topics":["json-rpc","nestjs","nodejs","rpc"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Insidexa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-26T14:56:18.000Z","updated_at":"2025-02-23T10:27:14.000Z","dependencies_parsed_at":"2023-10-01T19:43:16.177Z","dependency_job_id":"f141cea6-36d5-410d-bead-455e3f512958","html_url":"https://github.com/Insidexa/nestjs-rpc","commit_stats":{"total_commits":119,"total_committers":2,"mean_commits":59.5,"dds":"0.31932773109243695","last_synced_commit":"c7aa5f9fb42423b2a3edf04fa1b94cec7291cbe1"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Insidexa%2Fnestjs-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Insidexa%2Fnestjs-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Insidexa%2Fnestjs-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Insidexa%2Fnestjs-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Insidexa","download_url":"https://codeload.github.com/Insidexa/nestjs-rpc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254433831,"owners_count":22070533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json-rpc","nestjs","nodejs","rpc"],"created_at":"2024-08-04T07:00:35.559Z","updated_at":"2025-05-15T22:34:45.993Z","avatar_url":"https://github.com/Insidexa.png","language":"TypeScript","funding_links":[],"categories":["Integrations"],"sub_categories":[],"readme":"# NestJS JSON RPC package - [nestjs-json-rpc](https://www.npmjs.com/package/@jashkasoft/nestjs-json-rpc) npm package\n\n![Build](https://github.com/Insidexa/nestjs-rpc/workflows/Build/badge.svg)\n\nImplemented JSON RPC [specification](https://www.jsonrpc.org/specification)\n\n\n## Contents\n\n- [Install](#install)\n- [Import module](#import-module)\n- [How to use simple handler](#how-to-use-simple-handler)\n    - [Create handler](#create-simple-handler)\n    - [Add to providers](#add-simple-handler-provider)\n    - [Test with curl](#test-simple-handler-curl)\n- [How to use multiple handlers in one class](#multi-handlers-in-class)\n    - [Create handlers](#create-multiple-handlers)\n    - [Add to providers](#add-multiple-handler-provider)\n    - [Test with curl](#test-multiple-handler-curl)\n- [Decorators description](#decorators-description)\n- [Samples](#samples)\n- [Changelog](#changelog)\n\n\n### \u003ca id=\"install\"\u003e\u003c/a\u003e Install\n\n   `npm i --save @jashkasoft/nestjs-json-rpc`\n\n### \u003ca id=\"import-module\"\u003e\u003c/a\u003e Import module\n\nImport module `RpcModule` from `@jashkasoft/nestjs-json-rpc`, example  \n\n```typescript\n        JsonRpcModule.forRoot({\n            path: '/rpc', // path to RPC\n        })\n```\n\n### \u003ca id=\"how-to-use-simple-handler\"\u003e\u003c/a\u003e How to use simple handler\n\nCreate simple RPC handler\n\n#### \u003ca id=\"create-simple-handler\"\u003e\u003c/a\u003e Create handler\n\ncreate RPC handler  \n\n```typescript\nimport { RpcId, RpcPayload, RpcVersion, RpcMethod, IRpcHandler, RpcHandler } from '@jashkasoft/nestjs-json-rpc';\n\n@RpcHandler({\n    method: 'test',\n})\nexport class TestHandler implements IRpcHandler\u003cPayload\u003e {\n    public async invoke(\n        @RpcPayload() payload: Payload,\n        @RpcVersion() version: string,\n        @RpcId() id: number | string,\n        @RpcMethod() method: string\n    ) {\n        return payload;\n    }\n}\n```\n\n\n#### \u003ca id=\"add-simple-handler-provider\"\u003e\u003c/a\u003e Add to providers\n\nAdd `TestHandler` to providers array  \n\n \n#### \u003ca id=\"test-simple-handler-curl\"\u003e\u003c/a\u003e Test with cURL\n\nEvery request to RPC is POST method and response status = 200  \n\nTest with curl  \n\n```bash\ncurl -X POST \"http://localhost:3000/rpc\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\"jsonrpc\": \"2.0\", \"method\": \"test\", \"id\": 2}'\n```\n    \n    \n\n### \u003ca id=\"multi-handlers-in-class\"\u003e\u003c/a\u003e How to use multiple handlers in one class\n\nCreate multiple RPC handler in one class  \n\n#### \u003ca id=\"create-multiple-handlers\"\u003e\u003c/a\u003e Create handlers\n\nCreate RPC class handler  \n\n```typescript\nimport { RpcId, RpcPayload, RpcVersion, RpcMethod, RpcMethodHandler, RpcHandler } from '@jashkasoft/nestjs-json-rpc';\n\n@RpcHandler({\n    method: 'contact',\n})\nexport class ContactHandler {\n    @RpcMethodHandler('add')\n    public async add(\n        @RpcPayload() payload: Payload,\n        @RpcVersion() version: string,\n        @RpcId() id: number | string,\n        @RpcMethod() method: string\n    ) {\n        return payload;\n    }\n    \n    @RpcMethodHandler('delete')\n    public async delete(\n        @RpcPayload() payload: Payload,\n        @RpcVersion() version: string,\n        @RpcId() id: number | string,\n        @RpcMethod() method: string\n    ) {\n        return payload;\n    }\n}\n```\n\n\n#### \u003ca id=\"add-multiple-handler-provider\"\u003e\u003c/a\u003e Add to providers\n\nAdd `ContactHandler` to providers array  \n\n \n#### \u003ca id=\"test-multiple-handler-curl\"\u003e\u003c/a\u003e Test with cURL\n\nEvery request to RPC is POST method and response status = 200  \n\nTest with curl `contact.add`  \n\n```bash\ncurl -X POST \"http://localhost:3000/rpc\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\"jsonrpc\": \"2.0\", \"method\": \"contact.add\", \"id\": 2}'\n```\n    \n\nTest with curl `contact.delete`  \n\n```bash\ncurl -X POST \"http://localhost:3000/rpc\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\"jsonrpc\": \"2.0\", \"method\": \"contact.delete\", \"id\": 2}'\n```\n\n\n### Decorators description\n\n| field |  decorator |  description | required  | other  |\n|---|---|---|---|---|\n| `params` | `@RpcPayload()`  |  get payload ( params ) | false  | use pipes...  | \n| `jsonrpc` | `@RpcVersion()` | get rpc version  | true  | use pipes...  |  \n| `method` | `@RpcMethod()` | get rpc version  | true  | use pipes...  |  \n| `id` | `@RpcId()`  | get client operation id  | false  | if not send - response not send, RPC notification. use pipes...  |\n\n\n### Samples\nSee examples in samples folder\n\n\n### Changelog:  \n\n`7.6.0`\n - NestJS 7.3.* ( breaking change )\n - typescript 3.9.7 ( breaking change )\n - use DiscoveryModule\n\n`7.5.0`\n - add multiple RPC handlers for class\n - NestJS 7.2.*\n\n`7.4.0`\n - fix types for `JsonRpcModule` async options\n - export `JSON_RPC_OPTIONS`.  \n   You can inject rpc config:  \n   `@Inject(JSON_RPC_OPTIONS) private config: JsonRpcConfig`\n\n`7.3.2`\n - decrease bundle size\n\n`7.3.0`\n - allow response object\n - add custom headers\n\n`7.2.0`\n - add injection scopes ( REQUEST / TRANSIENT ) to JSON RPC handlers\n - add logging register handlers\n - add injection scopes sample\n\n`7.1.1`\n - add express engine example\n\n`7.1.0`\n - add support fastify adapter\n\n`7.0.0`\n - support nestjs 7.0.0\n - fix types\n - add to decorators ExecutionContext ( breaking change )\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FInsidexa%2Fnestjs-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FInsidexa%2Fnestjs-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FInsidexa%2Fnestjs-rpc/lists"}