@pezkuwi/rpc-provider 16.5.16 → 16.5.18

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.
Files changed (210) hide show
  1. package/build/LICENSE +201 -0
  2. package/build/README.md +68 -0
  3. package/build/bizinikiwi-connect/Health.js +259 -0
  4. package/build/bizinikiwi-connect/index.js +319 -0
  5. package/build/bundle.js +5 -0
  6. package/build/cjs/bizinikiwi-connect/Health.d.ts +7 -0
  7. package/build/cjs/bizinikiwi-connect/Health.js +264 -0
  8. package/build/cjs/bizinikiwi-connect/index.d.ts +22 -0
  9. package/build/cjs/bizinikiwi-connect/index.js +323 -0
  10. package/build/cjs/bizinikiwi-connect/types.d.ts +12 -0
  11. package/build/cjs/bizinikiwi-connect/types.js +2 -0
  12. package/build/cjs/bundle.d.ts +5 -0
  13. package/build/cjs/bundle.js +14 -0
  14. package/build/cjs/coder/error.js +53 -0
  15. package/build/cjs/coder/index.js +63 -0
  16. package/build/cjs/defaults.js +8 -0
  17. package/build/cjs/http/index.js +196 -0
  18. package/build/cjs/http/types.js +2 -0
  19. package/build/cjs/index.js +5 -0
  20. package/build/cjs/lru.js +150 -0
  21. package/build/cjs/mock/index.js +196 -0
  22. package/build/cjs/mock/mockHttp.js +17 -0
  23. package/build/cjs/mock/mockWs.js +47 -0
  24. package/build/cjs/mock/types.js +2 -0
  25. package/build/cjs/packageDetect.d.ts +1 -0
  26. package/build/cjs/packageInfo.js +4 -0
  27. package/build/cjs/types.js +2 -0
  28. package/build/cjs/ws/errors.js +41 -0
  29. package/build/cjs/ws/index.js +529 -0
  30. package/build/coder/error.d.ts +29 -0
  31. package/build/coder/error.js +50 -0
  32. package/build/coder/index.d.ts +8 -0
  33. package/build/coder/index.js +58 -0
  34. package/build/defaults.d.ts +5 -0
  35. package/build/defaults.js +6 -0
  36. package/build/http/index.d.ts +81 -0
  37. package/build/http/index.js +191 -0
  38. package/build/http/types.d.ts +7 -0
  39. package/build/http/types.js +1 -0
  40. package/build/index.d.ts +2 -0
  41. package/build/index.js +2 -0
  42. package/build/lru.d.ts +15 -0
  43. package/build/lru.js +146 -0
  44. package/build/mock/index.d.ts +35 -0
  45. package/build/mock/index.js +191 -0
  46. package/build/mock/mockHttp.d.ts +9 -0
  47. package/build/mock/mockHttp.js +12 -0
  48. package/build/mock/mockWs.d.ts +26 -0
  49. package/build/mock/mockWs.js +43 -0
  50. package/build/mock/types.d.ts +23 -0
  51. package/build/mock/types.js +1 -0
  52. package/build/package.json +344 -0
  53. package/build/packageDetect.d.ts +1 -0
  54. package/build/packageDetect.js +4 -0
  55. package/build/packageInfo.d.ts +6 -0
  56. package/build/packageInfo.js +1 -0
  57. package/build/types.d.ts +85 -0
  58. package/build/types.js +1 -0
  59. package/build/ws/errors.d.ts +1 -0
  60. package/build/ws/errors.js +38 -0
  61. package/build/ws/index.d.ts +121 -0
  62. package/build/ws/index.js +524 -0
  63. package/build-deno/README.md +66 -0
  64. package/build-deno/bizinikiwi-connect/Health.ts +323 -0
  65. package/build-deno/bizinikiwi-connect/index.ts +417 -0
  66. package/build-deno/bizinikiwi-connect/types.ts +14 -0
  67. package/build-deno/bundle.ts +6 -0
  68. package/build-deno/coder/error.ts +64 -0
  69. package/build-deno/coder/index.ts +86 -0
  70. package/build-deno/defaults.ts +8 -0
  71. package/build-deno/http/index.ts +236 -0
  72. package/build-deno/http/types.ts +9 -0
  73. package/build-deno/index.ts +4 -0
  74. package/build-deno/lru.ts +189 -0
  75. package/build-deno/mock/index.ts +257 -0
  76. package/build-deno/mock/mockHttp.ts +33 -0
  77. package/build-deno/mock/mockWs.ts +87 -0
  78. package/build-deno/mock/types.ts +34 -0
  79. package/build-deno/mod.ts +2 -0
  80. package/build-deno/packageDetect.ts +8 -0
  81. package/build-deno/packageInfo.ts +3 -0
  82. package/build-deno/types.ts +99 -0
  83. package/build-deno/ws/errors.ts +38 -0
  84. package/build-deno/ws/index.ts +650 -0
  85. package/build-tsc-cjs/packageDetect.js +6 -0
  86. package/{cjs → build-tsc-cjs}/packageInfo.js +1 -1
  87. package/{packageInfo.js → build-tsc-esm/packageInfo.js} +1 -1
  88. package/package.json +16 -16
  89. package/src/bizinikiwi-connect/Health.ts +325 -0
  90. package/src/bizinikiwi-connect/index.spec.ts +675 -0
  91. package/src/bizinikiwi-connect/index.ts +427 -0
  92. package/src/bizinikiwi-connect/types.ts +16 -0
  93. package/src/bundle.ts +8 -0
  94. package/src/coder/decodeResponse.spec.ts +70 -0
  95. package/src/coder/encodeJson.spec.ts +20 -0
  96. package/src/coder/encodeObject.spec.ts +25 -0
  97. package/src/coder/error.spec.ts +111 -0
  98. package/src/coder/error.ts +66 -0
  99. package/src/coder/index.ts +88 -0
  100. package/src/defaults.ts +10 -0
  101. package/src/http/index.spec.ts +72 -0
  102. package/src/http/index.ts +238 -0
  103. package/src/http/send.spec.ts +61 -0
  104. package/src/http/types.ts +11 -0
  105. package/src/index.ts +6 -0
  106. package/src/lru.spec.ts +74 -0
  107. package/src/lru.ts +197 -0
  108. package/src/mock/index.ts +259 -0
  109. package/src/mock/mockHttp.ts +35 -0
  110. package/src/mock/mockWs.ts +92 -0
  111. package/src/mock/on.spec.ts +43 -0
  112. package/src/mock/send.spec.ts +38 -0
  113. package/src/mock/subscribe.spec.ts +81 -0
  114. package/src/mock/types.ts +36 -0
  115. package/src/mock/unsubscribe.spec.ts +57 -0
  116. package/src/mod.ts +4 -0
  117. package/src/packageDetect.ts +12 -0
  118. package/src/packageInfo.ts +6 -0
  119. package/src/types.ts +101 -0
  120. package/src/ws/connect.spec.ts +167 -0
  121. package/src/ws/errors.ts +41 -0
  122. package/src/ws/index.spec.ts +97 -0
  123. package/src/ws/index.ts +652 -0
  124. package/src/ws/send.spec.ts +126 -0
  125. package/src/ws/state.spec.ts +20 -0
  126. package/src/ws/subscribe.spec.ts +68 -0
  127. package/src/ws/unsubscribe.spec.ts +100 -0
  128. package/tsconfig.build.json +17 -0
  129. package/tsconfig.build.tsbuildinfo +1 -0
  130. package/tsconfig.spec.json +18 -0
  131. package/tsconfig.spec.tsbuildinfo +1 -0
  132. /package/{cjs → build}/bizinikiwi-connect/Health.d.ts +0 -0
  133. /package/{cjs → build}/bizinikiwi-connect/index.d.ts +0 -0
  134. /package/{cjs → build}/bizinikiwi-connect/types.d.ts +0 -0
  135. /package/{packageDetect.d.ts → build/bizinikiwi-connect/types.js} +0 -0
  136. /package/{cjs → build}/bundle.d.ts +0 -0
  137. /package/{coder → build/cjs/coder}/error.d.ts +0 -0
  138. /package/{coder → build/cjs/coder}/index.d.ts +0 -0
  139. /package/{defaults.d.ts → build/cjs/defaults.d.ts} +0 -0
  140. /package/{http → build/cjs/http}/index.d.ts +0 -0
  141. /package/{http → build/cjs/http}/types.d.ts +0 -0
  142. /package/{index.d.ts → build/cjs/index.d.ts} +0 -0
  143. /package/{lru.d.ts → build/cjs/lru.d.ts} +0 -0
  144. /package/{mock → build/cjs/mock}/index.d.ts +0 -0
  145. /package/{mock → build/cjs/mock}/mockHttp.d.ts +0 -0
  146. /package/{mock → build/cjs/mock}/mockWs.d.ts +0 -0
  147. /package/{mock → build/cjs/mock}/types.d.ts +0 -0
  148. /package/{cjs → build/cjs}/package.json +0 -0
  149. /package/{cjs → build/cjs}/packageDetect.js +0 -0
  150. /package/{packageInfo.d.ts → build/cjs/packageInfo.d.ts} +0 -0
  151. /package/{types.d.ts → build/cjs/types.d.ts} +0 -0
  152. /package/{ws → build/cjs/ws}/errors.d.ts +0 -0
  153. /package/{ws → build/cjs/ws}/index.d.ts +0 -0
  154. /package/{bizinikiwi-connect → build-tsc/bizinikiwi-connect}/Health.d.ts +0 -0
  155. /package/{bizinikiwi-connect → build-tsc/bizinikiwi-connect}/index.d.ts +0 -0
  156. /package/{bizinikiwi-connect → build-tsc/bizinikiwi-connect}/types.d.ts +0 -0
  157. /package/{bundle.d.ts → build-tsc/bundle.d.ts} +0 -0
  158. /package/{cjs → build-tsc}/coder/error.d.ts +0 -0
  159. /package/{cjs → build-tsc}/coder/index.d.ts +0 -0
  160. /package/{cjs → build-tsc}/defaults.d.ts +0 -0
  161. /package/{cjs → build-tsc}/http/index.d.ts +0 -0
  162. /package/{cjs → build-tsc}/http/types.d.ts +0 -0
  163. /package/{cjs → build-tsc}/index.d.ts +0 -0
  164. /package/{cjs → build-tsc}/lru.d.ts +0 -0
  165. /package/{cjs → build-tsc}/mock/index.d.ts +0 -0
  166. /package/{cjs → build-tsc}/mock/mockHttp.d.ts +0 -0
  167. /package/{cjs → build-tsc}/mock/mockWs.d.ts +0 -0
  168. /package/{cjs → build-tsc}/mock/types.d.ts +0 -0
  169. /package/{cjs → build-tsc}/packageDetect.d.ts +0 -0
  170. /package/{cjs → build-tsc}/packageInfo.d.ts +0 -0
  171. /package/{cjs → build-tsc}/types.d.ts +0 -0
  172. /package/{cjs → build-tsc}/ws/errors.d.ts +0 -0
  173. /package/{cjs → build-tsc}/ws/index.d.ts +0 -0
  174. /package/{cjs → build-tsc-cjs}/bizinikiwi-connect/Health.js +0 -0
  175. /package/{cjs → build-tsc-cjs}/bizinikiwi-connect/index.js +0 -0
  176. /package/{cjs → build-tsc-cjs}/bizinikiwi-connect/types.js +0 -0
  177. /package/{cjs → build-tsc-cjs}/bundle.js +0 -0
  178. /package/{cjs → build-tsc-cjs}/coder/error.js +0 -0
  179. /package/{cjs → build-tsc-cjs}/coder/index.js +0 -0
  180. /package/{cjs → build-tsc-cjs}/defaults.js +0 -0
  181. /package/{cjs → build-tsc-cjs}/http/index.js +0 -0
  182. /package/{cjs → build-tsc-cjs}/http/types.js +0 -0
  183. /package/{cjs → build-tsc-cjs}/index.js +0 -0
  184. /package/{cjs → build-tsc-cjs}/lru.js +0 -0
  185. /package/{cjs → build-tsc-cjs}/mock/index.js +0 -0
  186. /package/{cjs → build-tsc-cjs}/mock/mockHttp.js +0 -0
  187. /package/{cjs → build-tsc-cjs}/mock/mockWs.js +0 -0
  188. /package/{cjs → build-tsc-cjs}/mock/types.js +0 -0
  189. /package/{cjs → build-tsc-cjs}/types.js +0 -0
  190. /package/{cjs → build-tsc-cjs}/ws/errors.js +0 -0
  191. /package/{cjs → build-tsc-cjs}/ws/index.js +0 -0
  192. /package/{bizinikiwi-connect → build-tsc-esm/bizinikiwi-connect}/Health.js +0 -0
  193. /package/{bizinikiwi-connect → build-tsc-esm/bizinikiwi-connect}/index.js +0 -0
  194. /package/{bizinikiwi-connect → build-tsc-esm/bizinikiwi-connect}/types.js +0 -0
  195. /package/{bundle.js → build-tsc-esm/bundle.js} +0 -0
  196. /package/{coder → build-tsc-esm/coder}/error.js +0 -0
  197. /package/{coder → build-tsc-esm/coder}/index.js +0 -0
  198. /package/{defaults.js → build-tsc-esm/defaults.js} +0 -0
  199. /package/{http → build-tsc-esm/http}/index.js +0 -0
  200. /package/{http → build-tsc-esm/http}/types.js +0 -0
  201. /package/{index.js → build-tsc-esm/index.js} +0 -0
  202. /package/{lru.js → build-tsc-esm/lru.js} +0 -0
  203. /package/{mock → build-tsc-esm/mock}/index.js +0 -0
  204. /package/{mock → build-tsc-esm/mock}/mockHttp.js +0 -0
  205. /package/{mock → build-tsc-esm/mock}/mockWs.js +0 -0
  206. /package/{mock → build-tsc-esm/mock}/types.js +0 -0
  207. /package/{packageDetect.js → build-tsc-esm/packageDetect.js} +0 -0
  208. /package/{types.js → build-tsc-esm/types.js} +0 -0
  209. /package/{ws → build-tsc-esm/ws}/errors.js +0 -0
  210. /package/{ws → build-tsc-esm/ws}/index.js +0 -0
@@ -0,0 +1,126 @@
1
+ // Copyright 2017-2025 @pezkuwi/rpc-provider authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import type { Request } from '../mock/mockWs.js';
7
+ import type { Global, Mock } from '../mock/types.js';
8
+
9
+ import { mockWs } from '../mock/mockWs.js';
10
+ import { WsProvider } from './index.js';
11
+
12
+ declare const global: Global;
13
+
14
+ const TEST_WS_URL = 'ws://localhost-send.spec.ts:9965';
15
+
16
+ let provider: WsProvider | null;
17
+ let mock: Mock;
18
+
19
+ function createMock (requests: Request[]): void {
20
+ mock = mockWs(requests, TEST_WS_URL);
21
+ }
22
+
23
+ function createWs (autoConnect = 1000): Promise<WsProvider> {
24
+ provider = new WsProvider(TEST_WS_URL, autoConnect);
25
+
26
+ return provider.isReady;
27
+ }
28
+
29
+ describe('send', (): void => {
30
+ let globalWs: typeof WebSocket;
31
+
32
+ beforeEach((): void => {
33
+ globalWs = global.WebSocket;
34
+ });
35
+
36
+ afterEach(async () => {
37
+ global.WebSocket = globalWs;
38
+
39
+ if (mock) {
40
+ await mock.done();
41
+ }
42
+
43
+ if (provider) {
44
+ await provider.disconnect();
45
+ provider = null;
46
+ }
47
+ });
48
+
49
+ it('handles internal errors', (): Promise<any> => {
50
+ createMock([{
51
+ id: 1,
52
+ method: 'test_body',
53
+ reply: {
54
+ result: 'ok'
55
+ }
56
+ }]);
57
+
58
+ return createWs().then((ws) =>
59
+ ws
60
+ .send('test_encoding', [{ error: 'send error' }])
61
+ .catch((error): void => {
62
+ // eslint-disable-next-line jest/no-conditional-expect
63
+ expect((error as Error).message).toEqual('send error');
64
+ })
65
+ );
66
+ });
67
+
68
+ it('passes the body through correctly', (): Promise<void> => {
69
+ createMock([{
70
+ id: 1,
71
+ method: 'test_body',
72
+ reply: {
73
+ result: 'ok'
74
+ }
75
+ }]);
76
+
77
+ return createWs().then((ws) =>
78
+ ws
79
+ .send('test_body', ['param'])
80
+ .then((): void => {
81
+ expect(
82
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
83
+ (mock.body as any).test_body
84
+ ).toEqual('{"id":1,"jsonrpc":"2.0","method":"test_body","params":["param"]}');
85
+ })
86
+ );
87
+ });
88
+
89
+ it('throws error when !response.ok', (): Promise<any> => {
90
+ createMock([{
91
+ error: {
92
+ code: 666,
93
+ message: 'error'
94
+ },
95
+ id: 1,
96
+ method: 'something'
97
+ }]);
98
+
99
+ return createWs().then((ws) =>
100
+ ws
101
+ .send('test_error', [])
102
+ .catch((error): void => {
103
+ // eslint-disable-next-line jest/no-conditional-expect
104
+ expect((error as Error).message).toMatch(/666: error/);
105
+ })
106
+ );
107
+ });
108
+
109
+ it('adds subscriptions', (): Promise<void> => {
110
+ createMock([{
111
+ id: 1,
112
+ method: 'test_sub',
113
+ reply: {
114
+ result: 1
115
+ }
116
+ }]);
117
+
118
+ return createWs().then((ws) =>
119
+ ws
120
+ .send('test_sub', [])
121
+ .then((id): void => {
122
+ expect(id).toEqual(1);
123
+ })
124
+ );
125
+ });
126
+ });
@@ -0,0 +1,20 @@
1
+ // Copyright 2017-2025 @pezkuwi/rpc-provider authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import { WsProvider } from './index.js';
7
+
8
+ describe('state', (): void => {
9
+ it('requires an ws:// prefixed endpoint', (): void => {
10
+ expect(
11
+ () => new WsProvider('http://', 0)
12
+ ).toThrow(/with 'ws/);
13
+ });
14
+
15
+ it('allows wss:// endpoints', (): void => {
16
+ expect(
17
+ () => new WsProvider('wss://', 0)
18
+ ).not.toThrow();
19
+ });
20
+ });
@@ -0,0 +1,68 @@
1
+ // Copyright 2017-2025 @pezkuwi/rpc-provider authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import type { Request } from '../mock/mockWs.js';
7
+ import type { Global, Mock } from './../mock/types.js';
8
+
9
+ import { mockWs } from '../mock/mockWs.js';
10
+ import { WsProvider } from './index.js';
11
+
12
+ declare const global: Global;
13
+
14
+ const TEST_WS_URL = 'ws://localhost-subscribe.test.ts:9933';
15
+
16
+ let provider: WsProvider | null;
17
+ let mock: Mock;
18
+
19
+ function createMock (requests: Request[]): void {
20
+ mock = mockWs(requests, TEST_WS_URL);
21
+ }
22
+
23
+ function createWs (autoConnect = 1000): Promise<WsProvider> {
24
+ provider = new WsProvider(TEST_WS_URL, autoConnect);
25
+
26
+ return provider.isReady;
27
+ }
28
+
29
+ describe('subscribe', (): void => {
30
+ let globalWs: typeof WebSocket;
31
+
32
+ beforeEach((): void => {
33
+ globalWs = global.WebSocket;
34
+ });
35
+
36
+ afterEach(async () => {
37
+ global.WebSocket = globalWs;
38
+
39
+ if (mock) {
40
+ await mock.done();
41
+ }
42
+
43
+ if (provider) {
44
+ await provider.disconnect();
45
+ provider = null;
46
+ }
47
+ });
48
+
49
+ it('adds subscriptions', (): Promise<void> => {
50
+ createMock([{
51
+ id: 1,
52
+ method: 'test_sub',
53
+ reply: {
54
+ result: 1
55
+ }
56
+ }]);
57
+
58
+ return createWs().then((ws) =>
59
+ ws
60
+ .subscribe('type', 'test_sub', [], (cb): void => {
61
+ expect(cb).toEqual(expect.anything());
62
+ })
63
+ .then((id): void => {
64
+ expect(id).toEqual(1);
65
+ })
66
+ );
67
+ });
68
+ });
@@ -0,0 +1,100 @@
1
+ // Copyright 2017-2025 @pezkuwi/rpc-provider authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import type { Request } from '../mock/mockWs.js';
7
+ import type { Global, Mock } from './../mock/types.js';
8
+
9
+ import { mockWs } from '../mock/mockWs.js';
10
+ import { WsProvider } from './index.js';
11
+
12
+ declare const global: Global;
13
+
14
+ const TEST_WS_URL = 'ws://localhost-unsubscribe.test.ts:9933';
15
+
16
+ let provider: WsProvider | null;
17
+ let mock: Mock;
18
+
19
+ function createMock (requests: Request[]): void {
20
+ mock = mockWs(requests, TEST_WS_URL);
21
+ }
22
+
23
+ function createWs (autoConnect = 1000): Promise<WsProvider> {
24
+ provider = new WsProvider(TEST_WS_URL, autoConnect);
25
+
26
+ return provider.isReady;
27
+ }
28
+
29
+ describe('subscribe', (): void => {
30
+ let globalWs: typeof WebSocket;
31
+
32
+ beforeEach((): void => {
33
+ globalWs = global.WebSocket;
34
+ });
35
+
36
+ afterEach(async () => {
37
+ global.WebSocket = globalWs;
38
+
39
+ if (mock) {
40
+ await mock.done();
41
+ }
42
+
43
+ if (provider) {
44
+ await provider.disconnect();
45
+ provider = null;
46
+ }
47
+ });
48
+
49
+ it('removes subscriptions', async (): Promise<void> => {
50
+ createMock([
51
+ {
52
+ id: 1,
53
+ method: 'subscribe_test',
54
+ reply: {
55
+ result: 1
56
+ }
57
+ },
58
+ {
59
+ id: 2,
60
+ method: 'unsubscribe_test',
61
+ reply: {
62
+ result: true
63
+ }
64
+ }
65
+ ]);
66
+
67
+ await createWs().then((ws) =>
68
+ ws
69
+ .subscribe('test', 'subscribe_test', [], (cb): void => {
70
+ expect(cb).toEqual(expect.anything());
71
+ })
72
+ .then((id): Promise<boolean> => {
73
+ return ws.unsubscribe('test', 'subscribe_test', id);
74
+ })
75
+ );
76
+ });
77
+
78
+ it('fails when sub not found', (): Promise<void> => {
79
+ createMock([{
80
+ id: 1,
81
+ method: 'subscribe_test',
82
+ reply: {
83
+ result: 1
84
+ }
85
+ }]);
86
+
87
+ return createWs().then((ws) =>
88
+ ws
89
+ .subscribe('test', 'subscribe_test', [], (cb): void => {
90
+ expect(cb).toEqual(expect.anything());
91
+ })
92
+ .then((): Promise<boolean> => {
93
+ return ws.unsubscribe('test', 'subscribe_test', 111);
94
+ })
95
+ .then((result): void => {
96
+ expect(result).toBe(false);
97
+ })
98
+ );
99
+ });
100
+ });
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "baseUrl": "..",
5
+ "outDir": "./build",
6
+ "rootDir": "./src",
7
+ "resolveJsonModule": true
8
+ },
9
+ "exclude": [
10
+ "**/*.spec.ts",
11
+ "**/mod.ts"
12
+ ],
13
+ "references": [
14
+ { "path": "../types/tsconfig.build.json" },
15
+ { "path": "../types-support/tsconfig.build.json" }
16
+ ]
17
+ }