@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.
- package/dist/{src/index.d.ts → index.d.ts} +1 -0
- package/dist/{src/index.js → index.js} +1 -0
- package/dist/rpc-client.d.ts +59 -0
- package/dist/rpc-client.js +176 -0
- package/dist/rpc-protocol.d.ts +35 -0
- package/dist/rpc-protocol.js +43 -0
- package/dist/{src/rpc-server.js → rpc-server.js} +23 -3
- package/package.json +9 -4
- package/dist/src/index.js.map +0 -1
- package/dist/src/method-registry.js.map +0 -1
- package/dist/src/rpc-client.d.ts +0 -16
- package/dist/src/rpc-client.js +0 -109
- package/dist/src/rpc-client.js.map +0 -1
- package/dist/src/rpc-server.js.map +0 -1
- /package/dist/{src/method-registry.d.ts → method-registry.d.ts} +0 -0
- /package/dist/{src/method-registry.js → method-registry.js} +0 -0
- /package/dist/{src/rpc-server.d.ts → rpc-server.d.ts} +0 -0
|
@@ -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,
|
|
5
|
-
"version": "0.6.
|
|
6
|
-
"main": "dist/
|
|
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
|
|
15
|
+
"url": "https://git.wishtech.fi/wish-rpc"
|
|
11
16
|
},
|
|
12
17
|
"scripts": {
|
|
13
18
|
"build": "tsc",
|
package/dist/src/index.js.map
DELETED
|
@@ -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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"}
|
package/dist/src/rpc-client.d.ts
DELETED
|
@@ -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
|
-
}
|
package/dist/src/rpc-client.js
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|