@asyncswap/jsonrpc 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @asyncswap/jsonrpc
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 7e8300c: changes api for jsonrpc contruction
8
+
9
+ ### Patch Changes
10
+
11
+ - 43de065: update docs
12
+ - 7126afa: add `otherHeaders` to inializedClient calls
13
+
3
14
  ## 0.3.1
4
15
 
5
16
  ### Patch Changes
package/README.md CHANGED
@@ -41,12 +41,10 @@ console.log("JSON-RPC running on http://localhost:4444")
41
41
  ### RPC Client
42
42
 
43
43
  ```ts
44
- import { initializeRpcClient } from "@asyncswap/jsonrpc";
44
+
45
+ import { JsonRpcClient } from "@asyncswap/jsonrpc";
45
46
  const url = "http://localhost:4444";
46
- const client = initializeRpcClient(url);
47
- const result = await client.call(
48
- "ping",
49
- []
50
- );
51
- console.log(result)
47
+ const client = new JsonRpcClient(url);
48
+ const result = await client.call("ping", []);
49
+ console.log(result);
52
50
  ```
package/dist/client.d.ts CHANGED
@@ -1,9 +1,15 @@
1
1
  export declare class JsonRpcClient {
2
- private send;
2
+ private url;
3
3
  private id;
4
- constructor(send: (req: JsonRpcRequest<unknown>) => Promise<JsonRpcResponse<unknown, number>>);
5
- call<Method = string, Result = unknown, E = unknown>(method: Method, params?: unknown[]): Promise<Result | E>;
4
+ constructor(url: string);
5
+ call<Method = string, Result = unknown, E = unknown>(method: Method, params?: unknown[], headers?: Record<string, string>): Promise<Result | E>;
6
+ buildRequest<Method>(method: Method, params?: unknown[]): {
7
+ jsonrpc: "2.0";
8
+ method: Method;
9
+ params: unknown[];
10
+ id: number;
11
+ };
12
+ private request;
6
13
  notify<Method = string>(method: Method, params?: unknown[]): Promise<JsonRpcResponse<unknown, number>>;
7
14
  }
8
- export declare function initializeRpcClient(url: string, jwtToken?: string, timeout?: number): JsonRpcClient;
9
15
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IAIxB,OAAO,CAAC,IAAI;IAHb,OAAO,CAAC,EAAE,CAAK;gBAGN,IAAI,EAAE,CACb,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,KACxB,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAGzC,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EACxD,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IActB,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;CAQ1D;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,MAAa,GACpB,aAAa,CA2Bf"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IAGb,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,EAAE,CAAK;gBAEK,GAAG,EAAE,MAAM;IAEzB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EACxD,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,EAAO,EACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAatB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO;;;;;;YAS7C,OAAO;IA4BrB,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;CAQ1D"}
package/dist/client.js CHANGED
@@ -1,43 +1,35 @@
1
1
  export class JsonRpcClient {
2
- send;
2
+ url;
3
3
  id = 0;
4
- constructor(send) {
5
- this.send = send;
4
+ constructor(url) {
5
+ this.url = url;
6
6
  }
7
- async call(method, params) {
8
- const request = {
9
- jsonrpc: "2.0",
10
- method,
11
- params,
12
- id: ++this.id,
13
- };
14
- const response = await this.send(request);
7
+ async call(method, params = [], headers) {
8
+ const request = this.buildRequest(method, params);
9
+ const response = await this.request(request, headers);
10
+ ++this.id;
15
11
  if ("error" in response) {
16
12
  return response.error;
17
13
  }
18
14
  return response.result;
19
15
  }
20
- notify(method, params) {
21
- const request = {
16
+ buildRequest(method, params = []) {
17
+ return {
22
18
  jsonrpc: "2.0",
23
19
  method,
24
20
  params,
21
+ id: this.id,
25
22
  };
26
- return this.send(request);
27
23
  }
28
- }
29
- export function initializeRpcClient(url, jwtToken, timeout = 5000) {
30
- const client = new JsonRpcClient(async (req) => {
24
+ async request(req, customHeaders, timeout = 5000) {
31
25
  const controller = new AbortController();
32
26
  const timeoutId = setTimeout(() => controller.abort(), timeout);
33
27
  try {
34
28
  const headers = {
35
29
  "Content-Type": "application/json",
30
+ ...(customHeaders ?? {}),
36
31
  };
37
- if (jwtToken) {
38
- headers["Authorization"] = `Bearer ${jwtToken}`;
39
- }
40
- const res = await fetch(url, {
32
+ const res = await fetch(this.url, {
41
33
  method: "POST",
42
34
  headers,
43
35
  body: JSON.stringify(req),
@@ -51,7 +43,14 @@ export function initializeRpcClient(url, jwtToken, timeout = 5000) {
51
43
  }
52
44
  throw err;
53
45
  }
54
- });
55
- return client;
46
+ }
47
+ notify(method, params) {
48
+ const request = {
49
+ jsonrpc: "2.0",
50
+ method,
51
+ params,
52
+ };
53
+ return this.request(request);
54
+ }
56
55
  }
57
56
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAa;IAIhB;IAHD,EAAE,GAAG,CAAC,CAAC;IAEf,YACS,IAEsC;QAFtC,SAAI,GAAJ,IAAI,CAEkC;IAC3C,CAAC;IAEL,KAAK,CAAC,IAAI,CACT,MAAc,EACd,MAAkB;QAElB,MAAM,OAAO,GAA2B;YACvC,OAAO,EAAE,KAAK;YACd,MAAM;YACN,MAAM;YACN,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;SACb,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC,KAAU,CAAC;QAC5B,CAAC;QACD,OAAO,QAAQ,CAAC,MAAgB,CAAC;IAClC,CAAC;IAED,MAAM,CAAkB,MAAc,EAAE,MAAkB;QACzD,MAAM,OAAO,GAA2B;YACvC,OAAO,EAAE,KAAK;YACd,MAAM;YACN,MAAM;SACN,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;CACD;AAED,MAAM,UAAU,mBAAmB,CAClC,GAAW,EACX,QAAiB,EACjB,UAAkB,IAAI;IAEtB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,GAA4B,EAAE,EAAE;QACvE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC;YACJ,MAAM,OAAO,GAA2B;gBACvC,cAAc,EAAE,kBAAkB;aAClC,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,QAAQ,EAAE,CAAC;YACjD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC5B,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;aACzB,CAAC,CAAC;YAEH,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAa;IAGL;IAFZ,EAAE,GAAG,CAAC,CAAC;IAEf,YAAoB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAI,CAAC;IAEpC,KAAK,CAAC,IAAI,CACT,MAAc,EACd,SAAoB,EAAE,EACtB,OAAgC;QAEhC,MAAM,OAAO,GAA2B,IAAI,CAAC,YAAY,CACxD,MAAM,EACN,MAAM,CACN,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,EAAE,IAAI,CAAC,EAAE,CAAC;QACV,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC,KAAU,CAAC;QAC5B,CAAC;QACD,OAAO,QAAQ,CAAC,MAAgB,CAAC;IAClC,CAAC;IAED,YAAY,CAAS,MAAc,EAAE,SAAoB,EAAE;QAC1D,OAAO;YACN,OAAO,EAAE,KAAc;YACvB,MAAM;YACN,MAAM;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;SACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACpB,GAA4B,EAC5B,aAAsC,EACtC,UAAkB,IAAI;QAEtB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC;YACJ,MAAM,OAAO,GAA2B;gBACvC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;aACxB,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;aACzB,CAAC,CAAC;YAEH,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED,MAAM,CAAkB,MAAc,EAAE,MAAkB;QACzD,MAAM,OAAO,GAA2B;YACvC,OAAO,EAAE,KAAK;YACd,MAAM;YACN,MAAM;SACN,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACD"}
package/example.ts CHANGED
@@ -22,9 +22,9 @@ Bun.serve({
22
22
 
23
23
  console.log("JSON-RPC running on http://localhost:4444");
24
24
 
25
- import { initializeRpcClient } from "./src";
25
+ import { JsonRpcClient } from "./src";
26
26
 
27
27
  const url = "http://localhost:4444";
28
- const client = initializeRpcClient(url);
28
+ const client = new JsonRpcClient(url);
29
29
  const result = await client.call("ping", []);
30
30
  console.log(result);
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@asyncswap/jsonrpc",
3
3
  "description": "A minimal jsonrpc spec implementation.",
4
4
  "author": "Meek Msaki",
5
- "version": "0.3.1",
5
+ "version": "0.4.1",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.mjs",
package/src/client.ts CHANGED
@@ -1,55 +1,47 @@
1
1
  export class JsonRpcClient {
2
2
  private id = 0;
3
3
 
4
- constructor(
5
- private send: (
6
- req: JsonRpcRequest<unknown>,
7
- ) => Promise<JsonRpcResponse<unknown, number>>,
8
- ) { }
4
+ constructor(private url: string) { }
9
5
 
10
6
  async call<Method = string, Result = unknown, E = unknown>(
11
7
  method: Method,
12
- params?: unknown[],
8
+ params: unknown[] = [],
9
+ headers?: Record<string, string>,
13
10
  ): Promise<Result | E> {
14
- const request: JsonRpcRequest<Method> = {
15
- jsonrpc: "2.0",
11
+ const request: JsonRpcRequest<Method> = this.buildRequest<Method>(
16
12
  method,
17
13
  params,
18
- id: ++this.id,
19
- };
20
- const response = await this.send(request);
14
+ );
15
+ const response = await this.request(request, headers);
16
+ ++this.id;
21
17
  if ("error" in response) {
22
18
  return response.error as E;
23
19
  }
24
20
  return response.result as Result;
25
21
  }
26
22
 
27
- notify<Method = string>(method: Method, params?: unknown[]) {
28
- const request: JsonRpcRequest<Method> = {
29
- jsonrpc: "2.0",
23
+ buildRequest<Method>(method: Method, params: unknown[] = []) {
24
+ return {
25
+ jsonrpc: "2.0" as const,
30
26
  method,
31
27
  params,
28
+ id: this.id,
32
29
  };
33
- return this.send(request);
34
30
  }
35
- }
36
31
 
37
- export function initializeRpcClient(
38
- url: string,
39
- jwtToken?: string,
40
- timeout: number = 5000,
41
- ): JsonRpcClient {
42
- const client = new JsonRpcClient(async (req: JsonRpcRequest<unknown>) => {
32
+ private async request(
33
+ req: JsonRpcRequest<unknown>,
34
+ customHeaders?: Record<string, string>,
35
+ timeout: number = 5000,
36
+ ) {
43
37
  const controller = new AbortController();
44
38
  const timeoutId = setTimeout(() => controller.abort(), timeout);
45
39
  try {
46
40
  const headers: Record<string, string> = {
47
41
  "Content-Type": "application/json",
42
+ ...(customHeaders ?? {}),
48
43
  };
49
- if (jwtToken) {
50
- headers["Authorization"] = `Bearer ${jwtToken}`;
51
- }
52
- const res = await fetch(url, {
44
+ const res = await fetch(this.url, {
53
45
  method: "POST",
54
46
  headers,
55
47
  body: JSON.stringify(req),
@@ -63,6 +55,14 @@ export function initializeRpcClient(
63
55
  }
64
56
  throw err;
65
57
  }
66
- });
67
- return client;
58
+ }
59
+
60
+ notify<Method = string>(method: Method, params?: unknown[]) {
61
+ const request: JsonRpcRequest<Method> = {
62
+ jsonrpc: "2.0",
63
+ method,
64
+ params,
65
+ };
66
+ return this.request(request);
67
+ }
68
68
  }