@wishcore/wish-rpc 0.6.15 → 0.6.16

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.
@@ -67,4 +67,5 @@ export interface RequestMap {
67
67
  }
68
68
  export * from './rpc-client';
69
69
  export * from './rpc-server';
70
+ export * from './rpc-protocol';
70
71
  export * from './method-registry';
@@ -12,5 +12,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./rpc-client"), exports);
14
14
  __exportStar(require("./rpc-server"), exports);
15
+ __exportStar(require("./rpc-protocol"), exports);
15
16
  __exportStar(require("./method-registry"), exports);
16
17
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,59 @@
1
+ import { ResponseMessage } from './index';
2
+ export declare class Client {
3
+ private write;
4
+ private requests;
5
+ private id;
6
+ private mtu;
7
+ constructor(write: (msg: ResponseMessage) => void, opts?: {
8
+ mtu: number;
9
+ });
10
+ destroy(): void;
11
+ messageReceived(msg: any): void;
12
+ /**
13
+ * @deprecated Use request() without callback instead - it now returns a Promise
14
+ */
15
+ requestAsync(op: string, args: any[]): Promise<any>;
16
+ /**
17
+ * Make an RPC request.
18
+ *
19
+ * Without callback: Returns a Promise that resolves with the response.
20
+ * With callback: Returns request ID for streaming/signal subscriptions.
21
+ *
22
+ * @example
23
+ * // Promise style (recommended for one-shot requests)
24
+ * const result = await client.request('method', [arg1, arg2]);
25
+ *
26
+ * // Callback style (for streaming responses or signals)
27
+ * client.request('signals', [], (err, data, end) => {
28
+ * if (data) console.log('Signal:', data);
29
+ * });
30
+ */
31
+ request(op: string, args: any[]): Promise<any>;
32
+ request(op: string, args: any[], cb: (err: any, data: any, end?: boolean) => any): number;
33
+ private requestWithCallback;
34
+ /**
35
+ * Subscribe to signals from the server.
36
+ *
37
+ * @param event - Signal event name to filter (e.g., 'document.changed'), or null for all signals
38
+ * @param callback - Called when a matching signal is received
39
+ * @param endpoint - RPC endpoint to subscribe to (default: 'signals')
40
+ * @returns Unsubscribe function
41
+ *
42
+ * @example
43
+ * // Subscribe to specific signal
44
+ * const unsub = client.subscribe('document.changed', (data) => {
45
+ * console.log('Document changed:', data);
46
+ * });
47
+ *
48
+ * // Subscribe to all signals
49
+ * const unsub = client.subscribe(null, (event, data) => {
50
+ * console.log('Signal:', event, data);
51
+ * });
52
+ *
53
+ * // Unsubscribe when done
54
+ * unsub();
55
+ */
56
+ subscribe(event: string | null, callback: (eventOrData: any, data?: any) => void, endpoint?: string): () => void;
57
+ send(id: number, data: any): void;
58
+ end(id: number): void;
59
+ }
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Client = void 0;
13
+ class Client {
14
+ constructor(write, opts) {
15
+ this.write = write;
16
+ this.requests = {};
17
+ this.id = 0;
18
+ this.mtu = 65535;
19
+ if (opts && opts.mtu) {
20
+ this.mtu = opts.mtu;
21
+ }
22
+ }
23
+ destroy() {
24
+ // Reject all pending requests with disconnect error
25
+ if (this.requests) {
26
+ for (const id of Object.keys(this.requests)) {
27
+ const request = this.requests[id];
28
+ if (request && typeof request.cb === 'function' && !request.canceled) {
29
+ request.cb.call(request.context, { code: 'DISCONNECTED', msg: 'Connection closed' }, null, true);
30
+ }
31
+ }
32
+ }
33
+ this.requests = null;
34
+ this.write = null;
35
+ this.id = 0;
36
+ }
37
+ messageReceived(msg) {
38
+ //console.log("RpcClient received message", msg);
39
+ const end = !!(msg.err || msg.ack || msg.fin);
40
+ const id = msg.ack || msg.err || msg.sig || msg.fin;
41
+ const request = this.requests[id];
42
+ let retval;
43
+ if (request && typeof request.cb === 'function') {
44
+ let err;
45
+ if (msg.fin) {
46
+ // This request closed gracefully
47
+ request.cb.call(request.context, null, null, true);
48
+ }
49
+ else {
50
+ if (request.canceled) {
51
+ console.log('This request is canceled. Not calling the callback.');
52
+ }
53
+ else {
54
+ // all is good, call the callback function
55
+ err = msg.err ? msg.data : null;
56
+ retval = request.cb.call(request.context, err, msg.data, end);
57
+ }
58
+ }
59
+ }
60
+ if (end) {
61
+ //console.log("deleting this request", id);
62
+ delete this.requests[id];
63
+ }
64
+ return retval;
65
+ }
66
+ /**
67
+ * @deprecated Use request() without callback instead - it now returns a Promise
68
+ */
69
+ requestAsync(op, args) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ return this.request(op, args);
72
+ });
73
+ }
74
+ request(op, args, cb) {
75
+ // Promise mode when no callback provided
76
+ if (!cb) {
77
+ return new Promise((resolve, reject) => {
78
+ this.requestWithCallback(op, args, (err, data) => {
79
+ if (err) {
80
+ reject(data);
81
+ }
82
+ else {
83
+ resolve(data);
84
+ }
85
+ });
86
+ });
87
+ }
88
+ // Callback mode
89
+ return this.requestWithCallback(op, args, cb);
90
+ }
91
+ requestWithCallback(op, args, cb) {
92
+ this.id++;
93
+ const msg = { op };
94
+ if (Array.isArray(args)) {
95
+ msg.args = args;
96
+ }
97
+ msg.id = this.id;
98
+ this.requests[msg.id] = {
99
+ cb,
100
+ context: {
101
+ id: msg.id,
102
+ cancel: () => {
103
+ setTimeout(((id) => {
104
+ return () => {
105
+ if (this.requests[id]) {
106
+ console.log('rpc-client.js: timeout, the request has not been removed while it was canceled', id, this.requests[id]);
107
+ }
108
+ };
109
+ })(msg.id), 1500);
110
+ this.requests[msg.id].canceled = true;
111
+ this.write({ end: msg.id });
112
+ },
113
+ emit: (data) => {
114
+ return this.write({ sig: msg.id, data: data });
115
+ }
116
+ }
117
+ };
118
+ this.write(msg);
119
+ return msg.id;
120
+ }
121
+ /**
122
+ * Subscribe to signals from the server.
123
+ *
124
+ * @param event - Signal event name to filter (e.g., 'document.changed'), or null for all signals
125
+ * @param callback - Called when a matching signal is received
126
+ * @param endpoint - RPC endpoint to subscribe to (default: 'signals')
127
+ * @returns Unsubscribe function
128
+ *
129
+ * @example
130
+ * // Subscribe to specific signal
131
+ * const unsub = client.subscribe('document.changed', (data) => {
132
+ * console.log('Document changed:', data);
133
+ * });
134
+ *
135
+ * // Subscribe to all signals
136
+ * const unsub = client.subscribe(null, (event, data) => {
137
+ * console.log('Signal:', event, data);
138
+ * });
139
+ *
140
+ * // Unsubscribe when done
141
+ * unsub();
142
+ */
143
+ subscribe(event, callback, endpoint = 'signals') {
144
+ const requestId = this.request(endpoint, [], (err, signalData, end) => {
145
+ if (err || end)
146
+ return;
147
+ if (!signalData || !Array.isArray(signalData))
148
+ return;
149
+ const [signalEvent, ...args] = signalData;
150
+ if (event === null) {
151
+ // Pass all signals: callback(event, data)
152
+ callback(signalEvent, args.length === 1 ? args[0] : args);
153
+ }
154
+ else if (signalEvent === event) {
155
+ // Pass only matching signals: callback(data)
156
+ callback(args.length === 1 ? args[0] : args);
157
+ }
158
+ });
159
+ // Return unsubscribe function
160
+ return () => {
161
+ if (this.requests && this.requests[requestId]) {
162
+ this.requests[requestId].canceled = true;
163
+ this.write({ end: requestId });
164
+ delete this.requests[requestId];
165
+ }
166
+ };
167
+ }
168
+ send(id, data) {
169
+ this.write({ push: id, data });
170
+ }
171
+ end(id) {
172
+ this.write({ end: id });
173
+ }
174
+ }
175
+ exports.Client = Client;
176
+ //# sourceMappingURL=rpc-client.js.map
@@ -0,0 +1,35 @@
1
+ import { Server } from './rpc-server';
2
+ import { EndpointConfig, EndpointHandler } from './index';
3
+ /**
4
+ * Base class for P2P protocol handlers.
5
+ *
6
+ * Subclass to define endpoints and peer lifecycle:
7
+ *
8
+ * ```typescript
9
+ * class NotesProtocol extends Protocol {
10
+ * constructor() {
11
+ * super();
12
+ * this.endpoint('list', { doc: 'List notes' }, async (req, res) => {
13
+ * res.send(myNotes);
14
+ * });
15
+ * }
16
+ *
17
+ * online(peer: Peer, client: Client) {
18
+ * console.log('Peer online:', peer.toString());
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * Generic parameters allow typed peer/client when re-exported from wish-sdk:
24
+ * - P = Peer type (defaults to any for wish-rpc standalone use)
25
+ * - C = Client type (defaults to any for wish-rpc standalone use)
26
+ */
27
+ export declare class Protocol<P = any, C = any> {
28
+ server: Server<EndpointConfig>;
29
+ /** Register an RPC endpoint */
30
+ endpoint(name: string, config: EndpointConfig, handler: EndpointHandler): void;
31
+ /** Called when a peer comes online */
32
+ online(peer: P, client: C): void;
33
+ /** Called when a peer goes offline */
34
+ offline(peer: P): void;
35
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Protocol = void 0;
4
+ const rpc_server_1 = require("./rpc-server");
5
+ /**
6
+ * Base class for P2P protocol handlers.
7
+ *
8
+ * Subclass to define endpoints and peer lifecycle:
9
+ *
10
+ * ```typescript
11
+ * class NotesProtocol extends Protocol {
12
+ * constructor() {
13
+ * super();
14
+ * this.endpoint('list', { doc: 'List notes' }, async (req, res) => {
15
+ * res.send(myNotes);
16
+ * });
17
+ * }
18
+ *
19
+ * online(peer: Peer, client: Client) {
20
+ * console.log('Peer online:', peer.toString());
21
+ * }
22
+ * }
23
+ * ```
24
+ *
25
+ * Generic parameters allow typed peer/client when re-exported from wish-sdk:
26
+ * - P = Peer type (defaults to any for wish-rpc standalone use)
27
+ * - C = Client type (defaults to any for wish-rpc standalone use)
28
+ */
29
+ class Protocol {
30
+ constructor() {
31
+ this.server = new rpc_server_1.Server();
32
+ }
33
+ /** Register an RPC endpoint */
34
+ endpoint(name, config, handler) {
35
+ this.server.endpoint(name, config, handler);
36
+ }
37
+ /** Called when a peer comes online */
38
+ online(peer, client) { }
39
+ /** Called when a peer goes offline */
40
+ offline(peer) { }
41
+ }
42
+ exports.Protocol = Protocol;
43
+ //# sourceMappingURL=rpc-protocol.js.map
@@ -249,12 +249,16 @@ class Server {
249
249
  }
250
250
  }
251
251
  emit(op, data) {
252
+ let clientCount = 0;
253
+ let matchCount = 0;
252
254
  for (const client in this.requests) {
253
255
  if (this.requests[client]) {
256
+ clientCount++;
254
257
  for (const id in this.requests[client]) {
255
258
  if (this.requests[client][id].op === op) {
259
+ matchCount++;
256
260
  const { send } = this.requests[client][id];
257
- send({ sig: id, data });
261
+ send({ sig: Number(id), data });
258
262
  }
259
263
  }
260
264
  }
@@ -368,12 +372,19 @@ class Server {
368
372
  const reqCtx = {};
369
373
  const method = this.registry.getMethod(msg.op);
370
374
  if (method) {
371
- method.call(reqCtx, { args: msg.args }, {
375
+ const result = method.call(reqCtx, { args: msg.args }, {
372
376
  send: () => { debug('Trying to send response to event (' + msg.op + '). Dropping.'); },
373
377
  emit: () => { debug('Trying to emit response to event (' + msg.op + '). Dropping.'); },
374
378
  error: () => { debug('Trying to respond with error to event (' + msg.op + '). Dropping.'); },
375
379
  close: () => { debug('Trying to close event (' + msg.op + '). Dropping.'); }
376
380
  }, context);
381
+ // Catch rejections from async event handlers
382
+ if (result && typeof result.catch === 'function') {
383
+ result.catch((e) => {
384
+ var _a;
385
+ console.log('Async RPC event handler failed:', msg.op, ((_a = e) === null || _a === void 0 ? void 0 : _a.stack) || e);
386
+ });
387
+ }
377
388
  }
378
389
  }
379
390
  /**
@@ -408,7 +419,16 @@ class Server {
408
419
  try {
409
420
  const method = this.registry.getMethod(msg.op);
410
421
  if (method) {
411
- method.call(reqCtx, { args: msg.args }, this.createRegularResponseHandlers(msg.id, respond, reqCtx, clientId), context);
422
+ const result = method.call(reqCtx, { args: msg.args }, this.createRegularResponseHandlers(msg.id, respond, reqCtx, clientId), context);
423
+ // Catch rejections from async handlers
424
+ if (result && typeof result.catch === 'function') {
425
+ result.catch((e) => {
426
+ var _a, _b;
427
+ console.log('Async RPC method failed:', msg.op, ((_a = e) === null || _a === void 0 ? void 0 : _a.stack) || e);
428
+ (_b = this.requests[clientId]) === null || _b === void 0 ? true : delete _b[msg.id];
429
+ respond({ err: msg.id, data: { msg: 'rpc failed during execution of ' + msg.op, code: 578 } });
430
+ });
431
+ }
412
432
  }
413
433
  }
414
434
  catch (e) {
package/package.json CHANGED
@@ -1,13 +1,18 @@
1
1
  {
2
2
  "name": "@wishcore/wish-rpc",
3
3
  "author": "André Kaustell <andre.kaustell@wishtech.fi>",
4
- "description": "An RPC implementation for Node.js, initally developed for the Wish project.",
5
- "version": "0.6.15",
6
- "main": "dist/src/index.js",
4
+ "description": "An RPC implementation for Node.js, initially developed for the Wish project.",
5
+ "version": "0.6.16",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist/**/*.js",
10
+ "dist/**/*.d.ts"
11
+ ],
7
12
  "license": "Apache-2.0",
8
13
  "repository": {
9
14
  "type": "git",
10
- "url": "git+ssh://wish.cto.fi:/git/wish-rpc#master"
15
+ "url": "https://git.wishtech.fi/wish-rpc"
11
16
  },
12
17
  "scripts": {
13
18
  "build": "tsc",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AA+EA,+CAA6B;AAC7B,+CAA6B;AAC7B,oDAAkC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"method-registry.js","sourceRoot":"","sources":["../../src/method-registry.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { ResponseMessage } from './index';
2
- export declare class Client {
3
- private write;
4
- private requests;
5
- private id;
6
- private mtu;
7
- constructor(write: (msg: ResponseMessage) => void, opts?: {
8
- mtu: number;
9
- });
10
- destroy(): void;
11
- messageReceived(msg: any): void;
12
- requestAsync(op: string, args: any[]): Promise<any>;
13
- request(op: string, args: any[], cb?: any): number;
14
- send(id: number, data: any): void;
15
- end(id: number): void;
16
- }
@@ -1,109 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Client = void 0;
13
- class Client {
14
- constructor(write, opts) {
15
- this.write = write;
16
- this.requests = {};
17
- this.id = 0;
18
- this.mtu = 65535;
19
- if (opts && opts.mtu) {
20
- this.mtu = opts.mtu;
21
- }
22
- }
23
- destroy() {
24
- this.requests = null;
25
- this.write = null;
26
- }
27
- messageReceived(msg) {
28
- //console.log("RpcClient received message", msg);
29
- const end = !!(msg.err || msg.ack || msg.fin);
30
- const id = msg.ack || msg.err || msg.sig || msg.fin;
31
- const request = this.requests[id];
32
- let retval;
33
- if (request && typeof request.cb === 'function') {
34
- let err;
35
- if (msg.fin) {
36
- // This request closed gracefully
37
- request.cb.call(request.context, null, null, true);
38
- }
39
- else {
40
- if (request.canceled) {
41
- console.log('This request is canceled. Not calling the callback.');
42
- }
43
- else {
44
- // all is good, call the callback function
45
- err = msg.err ? msg.data : null;
46
- retval = request.cb.call(request.context, err, msg.data, end);
47
- }
48
- }
49
- }
50
- if (end) {
51
- //console.log("deleting this request", id);
52
- delete this.requests[id];
53
- }
54
- return retval;
55
- }
56
- requestAsync(op, args) {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- return new Promise((resolve, reject) => {
59
- this.request(op, args, (err, data) => {
60
- if (err) {
61
- return reject(data);
62
- }
63
- resolve(data);
64
- });
65
- });
66
- });
67
- }
68
- request(op, args, cb) {
69
- this.id++;
70
- const msg = { op };
71
- if (Array.isArray(args)) {
72
- msg.args = args;
73
- }
74
- if (cb) {
75
- //console.log("we have a cb.", cb, new Error().stack);
76
- msg.id = this.id;
77
- this.requests[msg.id] = {
78
- cb,
79
- context: {
80
- id: msg.id,
81
- cancel: () => {
82
- setTimeout(((id) => {
83
- return () => {
84
- if (this.requests[id]) {
85
- console.log('rpc-client.js: timeout, the request has not been removed while it was canceled', id, this.requests[id]);
86
- }
87
- };
88
- })(msg.id), 1500);
89
- this.requests[msg.id].canceled = true;
90
- this.write({ end: msg.id });
91
- },
92
- emit: (data) => {
93
- return this.write({ sig: msg.id, data: data });
94
- }
95
- }
96
- };
97
- }
98
- this.write(msg);
99
- return msg.id || null;
100
- }
101
- send(id, data) {
102
- this.write({ push: id, data });
103
- }
104
- end(id) {
105
- this.write({ end: id });
106
- }
107
- }
108
- exports.Client = Client;
109
- //# sourceMappingURL=rpc-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../src/rpc-client.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-server.js","sourceRoot":"","sources":["../../src/rpc-server.ts"],"names":[],"mappings":"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"}
File without changes