@superblocksteam/shared 0.9147.0 → 0.9148.0
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/socket/socket.d.ts +22 -3
- package/dist/socket/socket.d.ts.map +1 -1
- package/dist/socket/socket.js +49 -19
- package/dist/socket/socket.js.map +1 -1
- package/dist/socket/socketWithClientAuth.d.ts +22 -2
- package/dist/socket/socketWithClientAuth.d.ts.map +1 -1
- package/dist/socket/socketWithClientAuth.js +10 -6
- package/dist/socket/socketWithClientAuth.js.map +1 -1
- package/dist/socket/tracedSocket.d.ts +9 -3
- package/dist/socket/tracedSocket.d.ts.map +1 -1
- package/dist/socket/tracedSocket.js +4 -4
- package/dist/socket/tracedSocket.js.map +1 -1
- package/dist-esm/socket/socket.d.ts +22 -3
- package/dist-esm/socket/socket.d.ts.map +1 -1
- package/dist-esm/socket/socket.js +48 -18
- package/dist-esm/socket/socket.js.map +1 -1
- package/dist-esm/socket/socketWithClientAuth.d.ts +22 -2
- package/dist-esm/socket/socketWithClientAuth.d.ts.map +1 -1
- package/dist-esm/socket/socketWithClientAuth.js +8 -4
- package/dist-esm/socket/socketWithClientAuth.js.map +1 -1
- package/dist-esm/socket/tracedSocket.d.ts +9 -3
- package/dist-esm/socket/tracedSocket.d.ts.map +1 -1
- package/dist-esm/socket/tracedSocket.js +4 -4
- package/dist-esm/socket/tracedSocket.js.map +1 -1
- package/package.json +1 -1
- package/src/socket/socket.ts +63 -20
- package/src/socket/socketWithClientAuth.ts +21 -5
- package/src/socket/tracedSocket.ts +8 -5
package/dist/socket/socket.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export interface SocketError {
|
|
|
21
21
|
message: string;
|
|
22
22
|
code: number;
|
|
23
23
|
}
|
|
24
|
+
export declare const INTENTIONAL_CLOSE_CODE = 4001;
|
|
24
25
|
/**
|
|
25
26
|
* ISocket is a class that wraps a WebSocket connection and provides a simple interface for sending and receiving messages.
|
|
26
27
|
* ISocket is initialized by both server and client and request/response is called symmetrically.
|
|
@@ -44,10 +45,28 @@ export declare class ISocket<ImplementedMethods, CallableMethods, RequestContext
|
|
|
44
45
|
private connectionTimeout;
|
|
45
46
|
protected logger: {
|
|
46
47
|
error: (message?: string) => void;
|
|
48
|
+
info: (message?: string) => void;
|
|
49
|
+
warn: (message?: string) => void;
|
|
47
50
|
};
|
|
48
51
|
private timeouts?;
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
private isClosed;
|
|
53
|
+
constructor(ws: WebSocket, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], options: {
|
|
54
|
+
/**
|
|
55
|
+
* This callback is called when the WebSocket connection is closed,
|
|
56
|
+
* either with a close handshake or immediately if the connection is dropped
|
|
57
|
+
*
|
|
58
|
+
* If code is INTENTIONAL_CLOSE_CODE, it was closed due to an internal timeout.
|
|
59
|
+
* Otherwise, the other side closed the connection.
|
|
60
|
+
*
|
|
61
|
+
* @param event - The WebSocket.CloseEvent object.
|
|
62
|
+
*/
|
|
63
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
64
|
+
timeouts?: SocketTimeouts;
|
|
65
|
+
logger?: {
|
|
66
|
+
error: (message?: string) => void;
|
|
67
|
+
info: (message?: string) => void;
|
|
68
|
+
warn: (message?: string) => void;
|
|
69
|
+
};
|
|
51
70
|
});
|
|
52
71
|
protected handleMessage(message: SocketMessage): Promise<void>;
|
|
53
72
|
protected callHandler<Params, Result, CallableMethods, RequestContext extends RequestContextBase>(handler: MethodHandler<Params, Result, CallableMethods, RequestContext>, params: Params, ctx: RequestContext, client: ISocketClient<CallableMethods>, next: () => Promise<Result>): Promise<Result>;
|
|
@@ -59,7 +78,7 @@ export declare class ISocket<ImplementedMethods, CallableMethods, RequestContext
|
|
|
59
78
|
private handleConnectionTimeout;
|
|
60
79
|
private resetNoResponseTimeout;
|
|
61
80
|
private handleNoResponseTimeout;
|
|
62
|
-
close(): void;
|
|
81
|
+
close(reason?: string): void;
|
|
63
82
|
}
|
|
64
83
|
export declare function createISocketClient<CallableMethods, ImplementedMethods, RequestContext extends RequestContextBase>(socket: ISocket<ImplementedMethods, CallableMethods, RequestContext>): ISocketClient<CallableMethods>;
|
|
65
84
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,UAAU,aAAa,CAAC,OAAO,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc,CAAC,OAAO,GAAG,OAAO;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,cAAc,GAAG,OAAO,EAAE,eAAe,GAAG,OAAO;IAChF,OAAO,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/socket/socket.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createISocketClient = exports.ISocket = void 0;
|
|
3
|
+
exports.createISocketClient = exports.ISocket = exports.INTENTIONAL_CLOSE_CODE = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
|
+
// Codes in the 4000s are left available by IETF
|
|
6
|
+
// https://datatracker.ietf.org/doc/html/rfc6455#section-7.4.2
|
|
7
|
+
exports.INTENTIONAL_CLOSE_CODE = 4001;
|
|
5
8
|
/**
|
|
6
9
|
* ISocket is a class that wraps a WebSocket connection and provides a simple interface for sending and receiving messages.
|
|
7
10
|
* ISocket is initialized by both server and client and request/response is called symmetrically.
|
|
@@ -16,23 +19,50 @@ const types_1 = require("./types");
|
|
|
16
19
|
* It is expected that timeouts should be relatively sorted in the order of connection timeout > request timeout > no response timeout.
|
|
17
20
|
*/
|
|
18
21
|
class ISocket {
|
|
19
|
-
constructor(ws, requestHandlers, globalMiddlewares,
|
|
22
|
+
constructor(ws, requestHandlers, globalMiddlewares, options) {
|
|
20
23
|
this.responseHandler = new Map();
|
|
24
|
+
this.isClosed = false;
|
|
21
25
|
this.ws = ws;
|
|
22
26
|
this.requestHandlers = requestHandlers;
|
|
23
27
|
this.globalMiddlewares = globalMiddlewares;
|
|
24
28
|
this.nxtRequestId = 0;
|
|
25
|
-
this.logger = logger ?? {
|
|
26
|
-
|
|
29
|
+
this.logger = this.logger ?? {
|
|
30
|
+
error: console.error,
|
|
31
|
+
warn: console.warn,
|
|
32
|
+
info: console.info
|
|
33
|
+
};
|
|
34
|
+
this.timeouts = options.timeouts;
|
|
27
35
|
// reset connection timeout in each message received. It means connection still active
|
|
28
36
|
this.resetConnectionTimeout();
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
this.ws.addEventListener('message', (event) => {
|
|
38
|
+
try {
|
|
39
|
+
const eventData = JSON.parse(event.data.toString());
|
|
40
|
+
void this.handleMessage(eventData);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.logger.error(`Error parsing message: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
this.ws.addEventListener('close', (event) => {
|
|
47
|
+
this.isClosed = true;
|
|
48
|
+
if (event.code !== exports.INTENTIONAL_CLOSE_CODE) {
|
|
49
|
+
// Reject any pending responses that happen after the close handshake,
|
|
50
|
+
// which shouldn't be possible
|
|
51
|
+
this.responseHandler.forEach((handler, key) => {
|
|
52
|
+
clearTimeout(handler.timeout);
|
|
53
|
+
this.logger.error(`Rejecting pending requestId ${key} due to connection close`);
|
|
54
|
+
handler.reject({ code: 8, message: 'Connection closed' });
|
|
55
|
+
});
|
|
56
|
+
this.responseHandler.clear();
|
|
57
|
+
}
|
|
58
|
+
options.onClose(event);
|
|
33
59
|
});
|
|
34
60
|
}
|
|
35
61
|
async handleMessage(message) {
|
|
62
|
+
if (this.isClosed) {
|
|
63
|
+
this.logger.error('Connection closed, ignoring message');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
36
66
|
this.resetConnectionTimeout();
|
|
37
67
|
if (message.request) {
|
|
38
68
|
// Split the method string into parts
|
|
@@ -118,6 +148,11 @@ class ISocket {
|
|
|
118
148
|
return handler(params, ctx, client, next);
|
|
119
149
|
}
|
|
120
150
|
request(method, params, authorization) {
|
|
151
|
+
if (this.isClosed) {
|
|
152
|
+
// Sockets normally will silently accept requests after the close handshake,
|
|
153
|
+
// but we want to reject them to avoid confusion
|
|
154
|
+
return Promise.reject(new types_1.SocketErrorException(10, 'Connection closed'));
|
|
155
|
+
}
|
|
121
156
|
return new Promise((resolve, reject) => {
|
|
122
157
|
const requestId = ++this.nxtRequestId;
|
|
123
158
|
this.responseHandler.set(requestId, {
|
|
@@ -166,8 +201,7 @@ class ISocket {
|
|
|
166
201
|
}
|
|
167
202
|
handleConnectionTimeout() {
|
|
168
203
|
return () => {
|
|
169
|
-
this.
|
|
170
|
-
this.close();
|
|
204
|
+
this.close('Connection timeout');
|
|
171
205
|
};
|
|
172
206
|
}
|
|
173
207
|
resetNoResponseTimeout(requestId) {
|
|
@@ -193,14 +227,10 @@ class ISocket {
|
|
|
193
227
|
reject({ code: 7, message });
|
|
194
228
|
};
|
|
195
229
|
}
|
|
196
|
-
close() {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
this.logger.error(`Rejecting pending requestId ${key} due to connection close`);
|
|
201
|
-
handler.reject({ code: 8, message: 'Connection closed' });
|
|
202
|
-
});
|
|
203
|
-
this.ws.close();
|
|
230
|
+
close(reason) {
|
|
231
|
+
// Starts close handshake without clearing in-progress requests
|
|
232
|
+
// see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close
|
|
233
|
+
this.ws.close(exports.INTENTIONAL_CLOSE_CODE, reason);
|
|
204
234
|
}
|
|
205
235
|
}
|
|
206
236
|
exports.ISocket = ISocket;
|
|
@@ -235,7 +265,7 @@ path) {
|
|
|
235
265
|
}
|
|
236
266
|
function createISocketClient(socket) {
|
|
237
267
|
return {
|
|
238
|
-
close: () => socket.close(),
|
|
268
|
+
close: (reason) => socket.close(reason),
|
|
239
269
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
240
270
|
call: createIsocketProxy(socket, undefined)
|
|
241
271
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":";;;AACA,mCAQiB;AA2BjB;;;;;;;;;;;;GAYG;AACH,MAAa,OAAO;
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":";;;AACA,mCAQiB;AA2BjB,gDAAgD;AAChD,8DAA8D;AACjD,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAa,OAAO;IAgBlB,YACE,EAAa,EACb,eAAoF,EACpF,iBAAuE,EACvE,OAaC;QA7Bc,oBAAe,GAAG,IAAI,GAAG,EAGvC,CAAC;QAOI,aAAQ,GAAG,KAAK,CAAC;QAqBvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,sFAAsF;QACtF,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAA6B,EAAE,EAAE;YACpE,IAAI;gBACF,MAAM,SAAS,GAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnE,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;aACpC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAA2B,EAAE,EAAE;YAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,KAAK,CAAC,IAAI,KAAK,8BAAsB,EAAE;gBACzC,sEAAsE;gBACtE,8BAA8B;gBAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;oBAC5C,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,0BAA0B,CAAC,CAAC;oBAChF,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;aAC9B;YACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,OAAsB;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,OAAO;SACR;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,qCAAqC;YACrC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,QAAQ,EAAE;oBACb,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE;wBAC3C,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,kBAAkB,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;qBACpD,CAAC,CAAC;iBACJ;aACF;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE;oBAC3C,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,gBAAgB;iBAC1B,CAAC,CAAC;aACJ;YACD,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,QAAQ,CAAwE,CAAC;YAC3H,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;aAC3D;YACD,MAAM,MAAM,GAAG;gBACb,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;gBAC9B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;aACZ,CAAC;YACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACxC,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,MAAM,cAAc,GAAG,CAAC,GAAW,EAA4B,EAAE;gBAC/D,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,OAAO,KAAK,IAAI,EAAE;oBAChB,IAAI,gBAAgB,EAAE;wBACpB,MAAM,IAAI,4BAAoB,CAAC,CAAC,EAAE,+CAA+C,CAAC,CAAC;qBACpF;oBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAiF,CAAC;oBAC9G,IAAI,CAAC,OAAO,EAAE;wBACZ,MAAM,IAAI,4BAAoB,CAAC,CAAC,EAAE,gDAAgD,CAAC,CAAC;qBACrF;oBACD,IAAI,SAAS,EAAE;wBACb,MAAM,IAAI,4BAAoB,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;qBACvE;oBACD,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrF,CAAC,CAAC;YACJ,CAAC,CAAC;YACF,IAAI,QAAiB,CAAC;YACtB,IAAI;gBACF,sCAAsC;gBACtC,QAAQ,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,WAAW,GACf,KAAK,YAAY,4BAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAChI,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aAClE;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3C,gBAAgB,GAAG,IAAI,CAAC;SACzB;aAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;YAClD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,EAAE;gBACpB,OAAO;aACR;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC1B,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAChD;YACD,8DAA8D;YAC9D,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAc,CAAC,CAAC;YACzD,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAClD;aAAM;YACL,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBAC3B,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,oBAAoB;aAC9B,CAAC,CAAC;SACJ;IACH,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,OAAuE,EACvE,MAAc,EACd,GAAmB,EACnB,MAAsC,EACtC,IAA2B;QAE3B,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEM,OAAO,CAAiB,MAAc,EAAE,MAAc,EAAE,aAAsB;QACnF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,4EAA4E;YAC5E,gDAAgD;YAChD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4BAAoB,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;SAC1E;QACD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE;gBAClC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAgB,CAAC;gBAC9C,MAAM,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9C,CAAC,CAAC;YACH,IAAI,MAAM,GAAkB,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,CAAC;YACrH,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAES,cAAc,CAAC,OAAsB;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,OAAO,CAAS,SAAiB,EAAE,MAAc;QACzD,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE;gBACR,OAAO,EAAE,MAAM;gBACf,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,IAAI;aACZ;SACF,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAES,YAAY,CAAC,SAAiB,EAAE,KAAkB,EAAE,SAAiB;QAC7E,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;gBACb,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,KAAK;aACb;SACF,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,EAAE;YAC9C,OAAO;SACR;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACtC;QACD,yCAAyC;QACzC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAAC,CAAC;IACxH,CAAC;IAEO,uBAAuB;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,SAAiB;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,EAAE;YAC9C,OAAO;SACR;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO;SACR;QACD,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC;QAClD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,IAAI,eAAe,CAAC,OAAO,EAAE;YAC3B,YAAY,CAAC,iBAAiB,CAAC,CAAC;SACjC;QACD,yCAAyC;QACzC,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAAC,CAAC;IAC/H,CAAC;IAEO,uBAAuB,CAAC,MAAoC;QAClE,OAAO,GAAG,EAAE;YACV,MAAM,OAAO,GAAG,2BAA2B,IAAI,CAAC,QAAQ,EAAE,0BAA0B,UAAU,CAAC;YAC/F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAe;QAC1B,+DAA+D;QAC/D,uEAAuE;QACvE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,8BAAsB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;CACF;AAtQD,0BAsQC;AAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;IACrC,oBAAoB;AACtB,CAAC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CACzB,MAAoE;AACpE,uEAAuE;AACvE,IAAwB;IAExB,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE;QAC5B,GAAG,CAAC,OAAO,EAAE,IAAY;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,uHAAuH;YACvH,+DAA+D;YAC/D,0DAA0D;YAC1D,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,OAAO,SAAS,CAAC;aAClB;YACD,OAAO,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAe;YACtC,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;aACpD;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1E,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CACjC,MAAoE;IAEpE,OAAO;QACL,KAAK,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAChD,8DAA8D;QAC9D,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAQ;KACnD,CAAC;AACJ,CAAC;AARD,kDAQC"}
|
|
@@ -5,8 +5,28 @@ import { GenericMiddleware, ISocketClient, MethodHandlers, RequestContextBase, S
|
|
|
5
5
|
export declare class ISocketWithClientAuth<ImplementedMethods, CallableMethods, RequestContext extends RequestContextBase> extends TracedSocket<ImplementedMethods, CallableMethods, RequestContext> {
|
|
6
6
|
private readonly authorization?;
|
|
7
7
|
private hasSentAuth;
|
|
8
|
-
constructor(ws: WebSocket, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer,
|
|
8
|
+
constructor(ws: WebSocket, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
|
|
9
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
10
|
+
timeouts?: SocketTimeouts;
|
|
11
|
+
logger?: {
|
|
12
|
+
error: (message?: string) => void;
|
|
13
|
+
info: (message?: string) => void;
|
|
14
|
+
warn: (message?: string) => void;
|
|
15
|
+
};
|
|
16
|
+
});
|
|
9
17
|
request<Params, Result>(method: string, params: Params): Promise<Result>;
|
|
10
18
|
}
|
|
11
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new socket for a set of operations, without any retry behavior
|
|
21
|
+
* If the requests fail, the promise will reject.
|
|
22
|
+
*/
|
|
23
|
+
export declare function connectSingleUseISocket<CallableMethods, ImplementedMethods, RequestContext extends RequestContextBase = RequestContextBase>(wsUrl: string, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
|
|
24
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
25
|
+
timeouts?: SocketTimeouts;
|
|
26
|
+
logger?: {
|
|
27
|
+
error: (message?: string) => void;
|
|
28
|
+
info: (message?: string) => void;
|
|
29
|
+
warn: (message?: string) => void;
|
|
30
|
+
};
|
|
31
|
+
}): Promise<ISocketClient<CallableMethods>>;
|
|
12
32
|
//# sourceMappingURL=socketWithClientAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketWithClientAuth.d.ts","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM/G,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,YAAY,CACrI,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"socketWithClientAuth.d.ts","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM/G,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,YAAY,CACrI,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;QAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KACpH;IAOG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAO/E;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,eAAe,EACf,kBAAkB,EAClB,cAAc,SAAS,kBAAkB,GAAG,kBAAkB,EAE9D,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACpH,GACA,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAIzC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.connectSingleUseISocket = exports.ISocketWithClientAuth = void 0;
|
|
4
4
|
const socket_1 = require("./socket");
|
|
5
5
|
const tracedSocket_1 = require("./tracedSocket");
|
|
6
6
|
const util_1 = require("./util");
|
|
@@ -8,8 +8,8 @@ const util_1 = require("./util");
|
|
|
8
8
|
// this is useful for client-side sockets that need to authenticate
|
|
9
9
|
// TODO(george): if we start using this for long-lived connections, we should add a way to refresh the token
|
|
10
10
|
class ISocketWithClientAuth extends tracedSocket_1.TracedSocket {
|
|
11
|
-
constructor(ws, authorization, requestHandlers, globalMiddlewares, tracer,
|
|
12
|
-
super(ws, requestHandlers, globalMiddlewares, tracer,
|
|
11
|
+
constructor(ws, authorization, requestHandlers, globalMiddlewares, tracer, options) {
|
|
12
|
+
super(ws, requestHandlers, globalMiddlewares, tracer, options);
|
|
13
13
|
this.hasSentAuth = false;
|
|
14
14
|
this.authorization = authorization;
|
|
15
15
|
}
|
|
@@ -23,10 +23,14 @@ class ISocketWithClientAuth extends tracedSocket_1.TracedSocket {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
exports.ISocketWithClientAuth = ISocketWithClientAuth;
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new socket for a set of operations, without any retry behavior
|
|
28
|
+
* If the requests fail, the promise will reject.
|
|
29
|
+
*/
|
|
30
|
+
async function connectSingleUseISocket(wsUrl, authorization, requestHandlers, globalMiddlewares, tracer, options) {
|
|
27
31
|
const ws = await (0, util_1.connectWebSocket)(wsUrl);
|
|
28
|
-
const isocket = new ISocketWithClientAuth(ws, authorization, requestHandlers, globalMiddlewares, tracer,
|
|
32
|
+
const isocket = new ISocketWithClientAuth(ws, authorization, requestHandlers, globalMiddlewares, tracer, options);
|
|
29
33
|
return (0, socket_1.createISocketClient)(isocket);
|
|
30
34
|
}
|
|
31
|
-
exports.
|
|
35
|
+
exports.connectSingleUseISocket = connectSingleUseISocket;
|
|
32
36
|
//# sourceMappingURL=socketWithClientAuth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketWithClientAuth.js","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":";;;AAEA,qCAA+C;AAC/C,iDAA8C;AAE9C,iCAA0C;AAE1C,sEAAsE;AACtE,mEAAmE;AACnE,4GAA4G;AAC5G,MAAa,qBAAsG,SAAQ,2BAI1H;IAIC,YACE,EAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"socketWithClientAuth.js","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":";;;AAEA,qCAA+C;AAC/C,iDAA8C;AAE9C,iCAA0C;AAE1C,sEAAsE;AACtE,mEAAmE;AACnE,4GAA4G;AAC5G,MAAa,qBAAsG,SAAQ,2BAI1H;IAIC,YACE,EAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;QAED,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAdzD,gBAAW,GAAG,KAAK,CAAC;QAe1B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO,CAAiB,MAAc,EAAE,MAAc;QAC1D,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAiB,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAhCD,sDAgCC;AAED;;;GAGG;AACI,KAAK,UAAU,uBAAuB,CAK3C,KAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;IAED,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAgB,EAAC,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClH,OAAO,IAAA,4BAAmB,EAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAnBD,0DAmBC"}
|
|
@@ -28,8 +28,14 @@ export declare class TracedSocket<ImplementedMethods, CallableMethods, RequestCo
|
|
|
28
28
|
private middlewareSpanByReqId;
|
|
29
29
|
private lastActiveSpan;
|
|
30
30
|
private tracer;
|
|
31
|
-
constructor(ws: WebSocket, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer,
|
|
32
|
-
|
|
31
|
+
constructor(ws: WebSocket, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
|
|
32
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
33
|
+
timeouts?: SocketTimeouts;
|
|
34
|
+
logger?: {
|
|
35
|
+
error: (message?: string) => void;
|
|
36
|
+
info: (message?: string) => void;
|
|
37
|
+
warn: (message?: string) => void;
|
|
38
|
+
};
|
|
33
39
|
});
|
|
34
40
|
protected callHandler<Params, Result, CallableMethods, RequestContext extends RequestContextBase>(handler: MethodHandler<Params, Result, CallableMethods, RequestContext>, params: Params, ctx: RequestContext, client: ISocketClient<CallableMethods>, next: () => Promise<Result>): Promise<Result>;
|
|
35
41
|
protected handleMessage(message: SocketMessage): Promise<void>;
|
|
@@ -38,6 +44,6 @@ export declare class TracedSocket<ImplementedMethods, CallableMethods, RequestCo
|
|
|
38
44
|
protected respond<Result>(requestId: number, result: Result): void;
|
|
39
45
|
protected respondError(requestId: number, error: SocketError, exception?: Error): void;
|
|
40
46
|
private addEvent;
|
|
41
|
-
close(): void;
|
|
47
|
+
close(reason?: string): void;
|
|
42
48
|
}
|
|
43
49
|
//# sourceMappingURL=tracedSocket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracedSocket.d.ts","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,MAAM,EAEP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,SAAS,MAAM,eAAe,CAAC;AAUtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmC9H,qBAAa,YAAY,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,OAAO,CACvH,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,MAAM,CAAS;gBAGrB,EAAE,EAAE,SAAS,EACb,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"tracedSocket.d.ts","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,MAAM,EAEP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,SAAS,MAAM,eAAe,CAAC;AAUtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmC9H,qBAAa,YAAY,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,OAAO,CACvH,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,MAAM,CAAS;gBAGrB,EAAE,EAAE,SAAS,EACb,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;QAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KACpH;cAMa,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,EACpG,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EACvE,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC;cAkCF,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC7D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASvG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAK/D,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlE,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI;IAStF,OAAO,CAAC,QAAQ;IAQT,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAQpC"}
|
|
@@ -38,8 +38,8 @@ function setHttpStatusFromError(span, error) {
|
|
|
38
38
|
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
|
|
39
39
|
}
|
|
40
40
|
class TracedSocket extends socket_1.ISocket {
|
|
41
|
-
constructor(ws, requestHandlers, globalMiddlewares, tracer,
|
|
42
|
-
super(ws, requestHandlers, globalMiddlewares,
|
|
41
|
+
constructor(ws, requestHandlers, globalMiddlewares, tracer, options) {
|
|
42
|
+
super(ws, requestHandlers, globalMiddlewares, options);
|
|
43
43
|
/**
|
|
44
44
|
* The TracedSocket class extends the ISocket class to add tracing capabilities for each connection. It manages
|
|
45
45
|
* spans for handler calls to provide detailed tracing information.
|
|
@@ -154,13 +154,13 @@ class TracedSocket extends socket_1.ISocket {
|
|
|
154
154
|
this.lastActiveSpan.addEvent(eventName, attributes, new Date());
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
close() {
|
|
157
|
+
close(reason) {
|
|
158
158
|
for (const span of this.activeSpanByRequestId.values()) {
|
|
159
159
|
span.end();
|
|
160
160
|
}
|
|
161
161
|
this.activeSpanByRequestId = new Map();
|
|
162
162
|
this.lastActiveSpan = undefined;
|
|
163
|
-
super.close();
|
|
163
|
+
super.close(reason);
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
exports.TracedSocket = TracedSocket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracedSocket.js","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":";;;AAAA,4CAW4B;AAC5B,8EAAqH;AAErH,oDAQ0B;AAC1B,qCAA+D;AAG/D,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAQ,GAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AACzG,CAAC;AAED,+IAA+I;AAC/I,MAAM,OAAO,GAAG,CAAC,MAAwC,EAAE,IAAU,EAAE,EAAE;IACvE,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;iBAC3B,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7E,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;SACf;KACF;IAAC,OAAO,KAAK,EAAE;QACd,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAAC,IAAU,EAAE,KAAY;IACtD,6DAA6D;IAC7D,IAAI,CAAC,YAAY,CAAC,wCAAwB,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAa,YAA6F,SAAQ,gBAIjH;IA2BC,YACE,EAAa,EACb,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"tracedSocket.js","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export interface SocketError {
|
|
|
21
21
|
message: string;
|
|
22
22
|
code: number;
|
|
23
23
|
}
|
|
24
|
+
export declare const INTENTIONAL_CLOSE_CODE = 4001;
|
|
24
25
|
/**
|
|
25
26
|
* ISocket is a class that wraps a WebSocket connection and provides a simple interface for sending and receiving messages.
|
|
26
27
|
* ISocket is initialized by both server and client and request/response is called symmetrically.
|
|
@@ -44,10 +45,28 @@ export declare class ISocket<ImplementedMethods, CallableMethods, RequestContext
|
|
|
44
45
|
private connectionTimeout;
|
|
45
46
|
protected logger: {
|
|
46
47
|
error: (message?: string) => void;
|
|
48
|
+
info: (message?: string) => void;
|
|
49
|
+
warn: (message?: string) => void;
|
|
47
50
|
};
|
|
48
51
|
private timeouts?;
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
private isClosed;
|
|
53
|
+
constructor(ws: WebSocket, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], options: {
|
|
54
|
+
/**
|
|
55
|
+
* This callback is called when the WebSocket connection is closed,
|
|
56
|
+
* either with a close handshake or immediately if the connection is dropped
|
|
57
|
+
*
|
|
58
|
+
* If code is INTENTIONAL_CLOSE_CODE, it was closed due to an internal timeout.
|
|
59
|
+
* Otherwise, the other side closed the connection.
|
|
60
|
+
*
|
|
61
|
+
* @param event - The WebSocket.CloseEvent object.
|
|
62
|
+
*/
|
|
63
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
64
|
+
timeouts?: SocketTimeouts;
|
|
65
|
+
logger?: {
|
|
66
|
+
error: (message?: string) => void;
|
|
67
|
+
info: (message?: string) => void;
|
|
68
|
+
warn: (message?: string) => void;
|
|
69
|
+
};
|
|
51
70
|
});
|
|
52
71
|
protected handleMessage(message: SocketMessage): Promise<void>;
|
|
53
72
|
protected callHandler<Params, Result, CallableMethods, RequestContext extends RequestContextBase>(handler: MethodHandler<Params, Result, CallableMethods, RequestContext>, params: Params, ctx: RequestContext, client: ISocketClient<CallableMethods>, next: () => Promise<Result>): Promise<Result>;
|
|
@@ -59,7 +78,7 @@ export declare class ISocket<ImplementedMethods, CallableMethods, RequestContext
|
|
|
59
78
|
private handleConnectionTimeout;
|
|
60
79
|
private resetNoResponseTimeout;
|
|
61
80
|
private handleNoResponseTimeout;
|
|
62
|
-
close(): void;
|
|
81
|
+
close(reason?: string): void;
|
|
63
82
|
}
|
|
64
83
|
export declare function createISocketClient<CallableMethods, ImplementedMethods, RequestContext extends RequestContextBase>(socket: ISocket<ImplementedMethods, CallableMethods, RequestContext>): ISocketClient<CallableMethods>;
|
|
65
84
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,UAAU,aAAa,CAAC,OAAO,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc,CAAC,OAAO,GAAG,OAAO;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,cAAc,GAAG,OAAO,EAAE,eAAe,GAAG,OAAO;IAChF,OAAO,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { SocketErrorException } from './types';
|
|
2
|
+
// Codes in the 4000s are left available by IETF
|
|
3
|
+
// https://datatracker.ietf.org/doc/html/rfc6455#section-7.4.2
|
|
4
|
+
export const INTENTIONAL_CLOSE_CODE = 4001;
|
|
2
5
|
/**
|
|
3
6
|
* ISocket is a class that wraps a WebSocket connection and provides a simple interface for sending and receiving messages.
|
|
4
7
|
* ISocket is initialized by both server and client and request/response is called symmetrically.
|
|
@@ -13,23 +16,50 @@ import { SocketErrorException } from './types';
|
|
|
13
16
|
* It is expected that timeouts should be relatively sorted in the order of connection timeout > request timeout > no response timeout.
|
|
14
17
|
*/
|
|
15
18
|
export class ISocket {
|
|
16
|
-
constructor(ws, requestHandlers, globalMiddlewares,
|
|
19
|
+
constructor(ws, requestHandlers, globalMiddlewares, options) {
|
|
17
20
|
this.responseHandler = new Map();
|
|
21
|
+
this.isClosed = false;
|
|
18
22
|
this.ws = ws;
|
|
19
23
|
this.requestHandlers = requestHandlers;
|
|
20
24
|
this.globalMiddlewares = globalMiddlewares;
|
|
21
25
|
this.nxtRequestId = 0;
|
|
22
|
-
this.logger = logger ?? {
|
|
23
|
-
|
|
26
|
+
this.logger = this.logger ?? {
|
|
27
|
+
error: console.error,
|
|
28
|
+
warn: console.warn,
|
|
29
|
+
info: console.info
|
|
30
|
+
};
|
|
31
|
+
this.timeouts = options.timeouts;
|
|
24
32
|
// reset connection timeout in each message received. It means connection still active
|
|
25
33
|
this.resetConnectionTimeout();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
this.ws.addEventListener('message', (event) => {
|
|
35
|
+
try {
|
|
36
|
+
const eventData = JSON.parse(event.data.toString());
|
|
37
|
+
void this.handleMessage(eventData);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
this.logger.error(`Error parsing message: ${error}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
this.ws.addEventListener('close', (event) => {
|
|
44
|
+
this.isClosed = true;
|
|
45
|
+
if (event.code !== INTENTIONAL_CLOSE_CODE) {
|
|
46
|
+
// Reject any pending responses that happen after the close handshake,
|
|
47
|
+
// which shouldn't be possible
|
|
48
|
+
this.responseHandler.forEach((handler, key) => {
|
|
49
|
+
clearTimeout(handler.timeout);
|
|
50
|
+
this.logger.error(`Rejecting pending requestId ${key} due to connection close`);
|
|
51
|
+
handler.reject({ code: 8, message: 'Connection closed' });
|
|
52
|
+
});
|
|
53
|
+
this.responseHandler.clear();
|
|
54
|
+
}
|
|
55
|
+
options.onClose(event);
|
|
30
56
|
});
|
|
31
57
|
}
|
|
32
58
|
async handleMessage(message) {
|
|
59
|
+
if (this.isClosed) {
|
|
60
|
+
this.logger.error('Connection closed, ignoring message');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
33
63
|
this.resetConnectionTimeout();
|
|
34
64
|
if (message.request) {
|
|
35
65
|
// Split the method string into parts
|
|
@@ -115,6 +145,11 @@ export class ISocket {
|
|
|
115
145
|
return handler(params, ctx, client, next);
|
|
116
146
|
}
|
|
117
147
|
request(method, params, authorization) {
|
|
148
|
+
if (this.isClosed) {
|
|
149
|
+
// Sockets normally will silently accept requests after the close handshake,
|
|
150
|
+
// but we want to reject them to avoid confusion
|
|
151
|
+
return Promise.reject(new SocketErrorException(10, 'Connection closed'));
|
|
152
|
+
}
|
|
118
153
|
return new Promise((resolve, reject) => {
|
|
119
154
|
const requestId = ++this.nxtRequestId;
|
|
120
155
|
this.responseHandler.set(requestId, {
|
|
@@ -163,8 +198,7 @@ export class ISocket {
|
|
|
163
198
|
}
|
|
164
199
|
handleConnectionTimeout() {
|
|
165
200
|
return () => {
|
|
166
|
-
this.
|
|
167
|
-
this.close();
|
|
201
|
+
this.close('Connection timeout');
|
|
168
202
|
};
|
|
169
203
|
}
|
|
170
204
|
resetNoResponseTimeout(requestId) {
|
|
@@ -190,14 +224,10 @@ export class ISocket {
|
|
|
190
224
|
reject({ code: 7, message });
|
|
191
225
|
};
|
|
192
226
|
}
|
|
193
|
-
close() {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
this.logger.error(`Rejecting pending requestId ${key} due to connection close`);
|
|
198
|
-
handler.reject({ code: 8, message: 'Connection closed' });
|
|
199
|
-
});
|
|
200
|
-
this.ws.close();
|
|
227
|
+
close(reason) {
|
|
228
|
+
// Starts close handshake without clearing in-progress requests
|
|
229
|
+
// see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close
|
|
230
|
+
this.ws.close(INTENTIONAL_CLOSE_CODE, reason);
|
|
201
231
|
}
|
|
202
232
|
}
|
|
203
233
|
const proxyTarget = Object.freeze(() => {
|
|
@@ -231,7 +261,7 @@ path) {
|
|
|
231
261
|
}
|
|
232
262
|
export function createISocketClient(socket) {
|
|
233
263
|
return {
|
|
234
|
-
close: () => socket.close(),
|
|
264
|
+
close: (reason) => socket.close(reason),
|
|
235
265
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
236
266
|
call: createIsocketProxy(socket, undefined)
|
|
237
267
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AACA,OAAO,EAML,oBAAoB,EAErB,MAAM,SAAS,CAAC;AA2BjB;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,OAAO;
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,28 @@ import { GenericMiddleware, ISocketClient, MethodHandlers, RequestContextBase, S
|
|
|
5
5
|
export declare class ISocketWithClientAuth<ImplementedMethods, CallableMethods, RequestContext extends RequestContextBase> extends TracedSocket<ImplementedMethods, CallableMethods, RequestContext> {
|
|
6
6
|
private readonly authorization?;
|
|
7
7
|
private hasSentAuth;
|
|
8
|
-
constructor(ws: WebSocket, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer,
|
|
8
|
+
constructor(ws: WebSocket, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
|
|
9
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
10
|
+
timeouts?: SocketTimeouts;
|
|
11
|
+
logger?: {
|
|
12
|
+
error: (message?: string) => void;
|
|
13
|
+
info: (message?: string) => void;
|
|
14
|
+
warn: (message?: string) => void;
|
|
15
|
+
};
|
|
16
|
+
});
|
|
9
17
|
request<Params, Result>(method: string, params: Params): Promise<Result>;
|
|
10
18
|
}
|
|
11
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new socket for a set of operations, without any retry behavior
|
|
21
|
+
* If the requests fail, the promise will reject.
|
|
22
|
+
*/
|
|
23
|
+
export declare function connectSingleUseISocket<CallableMethods, ImplementedMethods, RequestContext extends RequestContextBase = RequestContextBase>(wsUrl: string, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
|
|
24
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
25
|
+
timeouts?: SocketTimeouts;
|
|
26
|
+
logger?: {
|
|
27
|
+
error: (message?: string) => void;
|
|
28
|
+
info: (message?: string) => void;
|
|
29
|
+
warn: (message?: string) => void;
|
|
30
|
+
};
|
|
31
|
+
}): Promise<ISocketClient<CallableMethods>>;
|
|
12
32
|
//# sourceMappingURL=socketWithClientAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketWithClientAuth.d.ts","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM/G,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,YAAY,CACrI,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"socketWithClientAuth.d.ts","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM/G,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,YAAY,CACrI,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;QAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KACpH;IAOG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAO/E;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,eAAe,EACf,kBAAkB,EAClB,cAAc,SAAS,kBAAkB,GAAG,kBAAkB,EAE9D,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACpH,GACA,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAIzC"}
|
|
@@ -5,8 +5,8 @@ import { connectWebSocket } from './util';
|
|
|
5
5
|
// this is useful for client-side sockets that need to authenticate
|
|
6
6
|
// TODO(george): if we start using this for long-lived connections, we should add a way to refresh the token
|
|
7
7
|
export class ISocketWithClientAuth extends TracedSocket {
|
|
8
|
-
constructor(ws, authorization, requestHandlers, globalMiddlewares, tracer,
|
|
9
|
-
super(ws, requestHandlers, globalMiddlewares, tracer,
|
|
8
|
+
constructor(ws, authorization, requestHandlers, globalMiddlewares, tracer, options) {
|
|
9
|
+
super(ws, requestHandlers, globalMiddlewares, tracer, options);
|
|
10
10
|
this.hasSentAuth = false;
|
|
11
11
|
this.authorization = authorization;
|
|
12
12
|
}
|
|
@@ -19,9 +19,13 @@ export class ISocketWithClientAuth extends TracedSocket {
|
|
|
19
19
|
return result;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new socket for a set of operations, without any retry behavior
|
|
24
|
+
* If the requests fail, the promise will reject.
|
|
25
|
+
*/
|
|
26
|
+
export async function connectSingleUseISocket(wsUrl, authorization, requestHandlers, globalMiddlewares, tracer, options) {
|
|
23
27
|
const ws = await connectWebSocket(wsUrl);
|
|
24
|
-
const isocket = new ISocketWithClientAuth(ws, authorization, requestHandlers, globalMiddlewares, tracer,
|
|
28
|
+
const isocket = new ISocketWithClientAuth(ws, authorization, requestHandlers, globalMiddlewares, tracer, options);
|
|
25
29
|
return createISocketClient(isocket);
|
|
26
30
|
}
|
|
27
31
|
//# sourceMappingURL=socketWithClientAuth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketWithClientAuth.js","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,sEAAsE;AACtE,mEAAmE;AACnE,4GAA4G;AAC5G,MAAM,OAAO,qBAAsG,SAAQ,YAI1H;IAIC,YACE,EAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"socketWithClientAuth.js","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,sEAAsE;AACtE,mEAAmE;AACnE,4GAA4G;AAC5G,MAAM,OAAO,qBAAsG,SAAQ,YAI1H;IAIC,YACE,EAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;QAED,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAdzD,gBAAW,GAAG,KAAK,CAAC;QAe1B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO,CAAiB,MAAc,EAAE,MAAc;QAC1D,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAiB,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAK3C,KAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;IAED,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClH,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -28,8 +28,14 @@ export declare class TracedSocket<ImplementedMethods, CallableMethods, RequestCo
|
|
|
28
28
|
private middlewareSpanByReqId;
|
|
29
29
|
private lastActiveSpan;
|
|
30
30
|
private tracer;
|
|
31
|
-
constructor(ws: WebSocket, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer,
|
|
32
|
-
|
|
31
|
+
constructor(ws: WebSocket, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
|
|
32
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
33
|
+
timeouts?: SocketTimeouts;
|
|
34
|
+
logger?: {
|
|
35
|
+
error: (message?: string) => void;
|
|
36
|
+
info: (message?: string) => void;
|
|
37
|
+
warn: (message?: string) => void;
|
|
38
|
+
};
|
|
33
39
|
});
|
|
34
40
|
protected callHandler<Params, Result, CallableMethods, RequestContext extends RequestContextBase>(handler: MethodHandler<Params, Result, CallableMethods, RequestContext>, params: Params, ctx: RequestContext, client: ISocketClient<CallableMethods>, next: () => Promise<Result>): Promise<Result>;
|
|
35
41
|
protected handleMessage(message: SocketMessage): Promise<void>;
|
|
@@ -38,6 +44,6 @@ export declare class TracedSocket<ImplementedMethods, CallableMethods, RequestCo
|
|
|
38
44
|
protected respond<Result>(requestId: number, result: Result): void;
|
|
39
45
|
protected respondError(requestId: number, error: SocketError, exception?: Error): void;
|
|
40
46
|
private addEvent;
|
|
41
|
-
close(): void;
|
|
47
|
+
close(reason?: string): void;
|
|
42
48
|
}
|
|
43
49
|
//# sourceMappingURL=tracedSocket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracedSocket.d.ts","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,MAAM,EAEP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,SAAS,MAAM,eAAe,CAAC;AAUtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmC9H,qBAAa,YAAY,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,OAAO,CACvH,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,MAAM,CAAS;gBAGrB,EAAE,EAAE,SAAS,EACb,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"tracedSocket.d.ts","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,MAAM,EAEP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,SAAS,MAAM,eAAe,CAAC;AAUtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmC9H,qBAAa,YAAY,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,OAAO,CACvH,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,qBAAqB,CAA2B;IACxD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,MAAM,CAAS;gBAGrB,EAAE,EAAE,SAAS,EACb,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;QAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KACpH;cAMa,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,EACpG,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EACvE,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC;cAkCF,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC7D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASvG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAK/D,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlE,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI;IAStF,OAAO,CAAC,QAAQ;IAQT,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAQpC"}
|
|
@@ -35,8 +35,8 @@ function setHttpStatusFromError(span, error) {
|
|
|
35
35
|
span.setStatus({ code: SpanStatusCode.ERROR, message: error.message });
|
|
36
36
|
}
|
|
37
37
|
export class TracedSocket extends ISocket {
|
|
38
|
-
constructor(ws, requestHandlers, globalMiddlewares, tracer,
|
|
39
|
-
super(ws, requestHandlers, globalMiddlewares,
|
|
38
|
+
constructor(ws, requestHandlers, globalMiddlewares, tracer, options) {
|
|
39
|
+
super(ws, requestHandlers, globalMiddlewares, options);
|
|
40
40
|
/**
|
|
41
41
|
* The TracedSocket class extends the ISocket class to add tracing capabilities for each connection. It manages
|
|
42
42
|
* spans for handler calls to provide detailed tracing information.
|
|
@@ -151,13 +151,13 @@ export class TracedSocket extends ISocket {
|
|
|
151
151
|
this.lastActiveSpan.addEvent(eventName, attributes, new Date());
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
close() {
|
|
154
|
+
close(reason) {
|
|
155
155
|
for (const span of this.activeSpanByRequestId.values()) {
|
|
156
156
|
span.end();
|
|
157
157
|
}
|
|
158
158
|
this.activeSpanByRequestId = new Map();
|
|
159
159
|
this.lastActiveSpan = undefined;
|
|
160
|
-
super.close();
|
|
160
|
+
super.close(reason);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
//# sourceMappingURL=tracedSocket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracedSocket.js","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAEZ,QAAQ,EACR,cAAc,EAEd,OAAO,IAAI,OAAO,EAClB,WAAW,EAEX,KAAK,EACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAErH,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAA8B,MAAM,UAAU,CAAC;AAG/D,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAQ,GAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AACzG,CAAC;AAED,+IAA+I;AAC/I,MAAM,OAAO,GAAG,CAAC,MAAwC,EAAE,IAAU,EAAE,EAAE;IACvE,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;iBAC3B,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7E,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;SACf;KACF;IAAC,OAAO,KAAK,EAAE;QACd,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAAC,IAAU,EAAE,KAAY;IACtD,6DAA6D;IAC7D,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,OAAO,YAA6F,SAAQ,OAIjH;IA2BC,YACE,EAAa,EACb,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"tracedSocket.js","sourceRoot":"","sources":["../../src/socket/tracedSocket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/socket/socket.ts
CHANGED
|
@@ -34,6 +34,10 @@ export interface SocketError {
|
|
|
34
34
|
code: number;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
// Codes in the 4000s are left available by IETF
|
|
38
|
+
// https://datatracker.ietf.org/doc/html/rfc6455#section-7.4.2
|
|
39
|
+
export const INTENTIONAL_CLOSE_CODE = 4001;
|
|
40
|
+
|
|
37
41
|
/**
|
|
38
42
|
* ISocket is a class that wraps a WebSocket connection and provides a simple interface for sending and receiving messages.
|
|
39
43
|
* ISocket is initialized by both server and client and request/response is called symmetrically.
|
|
@@ -59,33 +63,72 @@ export class ISocket<ImplementedMethods, CallableMethods, RequestContext extends
|
|
|
59
63
|
protected nxtRequestId: number;
|
|
60
64
|
private connectionTimeout: NodeJS.Timeout;
|
|
61
65
|
// pino library not available in shared
|
|
62
|
-
protected logger: { error: (message?: string) => void };
|
|
66
|
+
protected logger: { error: (message?: string) => void; info: (message?: string) => void; warn: (message?: string) => void };
|
|
63
67
|
private timeouts?: SocketTimeouts;
|
|
68
|
+
private isClosed = false;
|
|
64
69
|
|
|
65
70
|
constructor(
|
|
66
71
|
ws: WebSocket,
|
|
67
72
|
requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>,
|
|
68
73
|
globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[],
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
options: {
|
|
75
|
+
/**
|
|
76
|
+
* This callback is called when the WebSocket connection is closed,
|
|
77
|
+
* either with a close handshake or immediately if the connection is dropped
|
|
78
|
+
*
|
|
79
|
+
* If code is INTENTIONAL_CLOSE_CODE, it was closed due to an internal timeout.
|
|
80
|
+
* Otherwise, the other side closed the connection.
|
|
81
|
+
*
|
|
82
|
+
* @param event - The WebSocket.CloseEvent object.
|
|
83
|
+
*/
|
|
84
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
85
|
+
timeouts?: SocketTimeouts;
|
|
86
|
+
logger?: { error: (message?: string) => void; info: (message?: string) => void; warn: (message?: string) => void };
|
|
87
|
+
}
|
|
71
88
|
) {
|
|
72
89
|
this.ws = ws;
|
|
73
90
|
this.requestHandlers = requestHandlers;
|
|
74
91
|
this.globalMiddlewares = globalMiddlewares;
|
|
75
92
|
this.nxtRequestId = 0;
|
|
76
|
-
this.logger = logger ?? {
|
|
77
|
-
|
|
93
|
+
this.logger = this.logger ?? {
|
|
94
|
+
error: console.error,
|
|
95
|
+
warn: console.warn,
|
|
96
|
+
info: console.info
|
|
97
|
+
};
|
|
98
|
+
this.timeouts = options.timeouts;
|
|
78
99
|
// reset connection timeout in each message received. It means connection still active
|
|
79
100
|
this.resetConnectionTimeout();
|
|
101
|
+
this.ws.addEventListener('message', (event: WebSocket.MessageEvent) => {
|
|
102
|
+
try {
|
|
103
|
+
const eventData: SocketMessage = JSON.parse(event.data.toString());
|
|
104
|
+
void this.handleMessage(eventData);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
this.logger.error(`Error parsing message: ${error}`);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
80
109
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
110
|
+
this.ws.addEventListener('close', (event: WebSocket.CloseEvent) => {
|
|
111
|
+
this.isClosed = true;
|
|
112
|
+
|
|
113
|
+
if (event.code !== INTENTIONAL_CLOSE_CODE) {
|
|
114
|
+
// Reject any pending responses that happen after the close handshake,
|
|
115
|
+
// which shouldn't be possible
|
|
116
|
+
this.responseHandler.forEach((handler, key) => {
|
|
117
|
+
clearTimeout(handler.timeout);
|
|
118
|
+
this.logger.error(`Rejecting pending requestId ${key} due to connection close`);
|
|
119
|
+
handler.reject({ code: 8, message: 'Connection closed' });
|
|
120
|
+
});
|
|
121
|
+
this.responseHandler.clear();
|
|
122
|
+
}
|
|
123
|
+
options.onClose(event);
|
|
85
124
|
});
|
|
86
125
|
}
|
|
87
126
|
|
|
88
127
|
protected async handleMessage(message: SocketMessage): Promise<void> {
|
|
128
|
+
if (this.isClosed) {
|
|
129
|
+
this.logger.error('Connection closed, ignoring message');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
89
132
|
this.resetConnectionTimeout();
|
|
90
133
|
if (message.request) {
|
|
91
134
|
// Split the method string into parts
|
|
@@ -178,6 +221,11 @@ export class ISocket<ImplementedMethods, CallableMethods, RequestContext extends
|
|
|
178
221
|
}
|
|
179
222
|
|
|
180
223
|
public request<Params, Result>(method: string, params: Params, authorization?: string): Promise<Result> {
|
|
224
|
+
if (this.isClosed) {
|
|
225
|
+
// Sockets normally will silently accept requests after the close handshake,
|
|
226
|
+
// but we want to reject them to avoid confusion
|
|
227
|
+
return Promise.reject(new SocketErrorException(10, 'Connection closed'));
|
|
228
|
+
}
|
|
181
229
|
return new Promise<Result>((resolve, reject) => {
|
|
182
230
|
const requestId = ++this.nxtRequestId;
|
|
183
231
|
this.responseHandler.set(requestId, {
|
|
@@ -231,8 +279,7 @@ export class ISocket<ImplementedMethods, CallableMethods, RequestContext extends
|
|
|
231
279
|
|
|
232
280
|
private handleConnectionTimeout() {
|
|
233
281
|
return () => {
|
|
234
|
-
this.
|
|
235
|
-
this.close();
|
|
282
|
+
this.close('Connection timeout');
|
|
236
283
|
};
|
|
237
284
|
}
|
|
238
285
|
|
|
@@ -261,14 +308,10 @@ export class ISocket<ImplementedMethods, CallableMethods, RequestContext extends
|
|
|
261
308
|
};
|
|
262
309
|
}
|
|
263
310
|
|
|
264
|
-
public close(): void {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
this.logger.error(`Rejecting pending requestId ${key} due to connection close`);
|
|
269
|
-
handler.reject({ code: 8, message: 'Connection closed' });
|
|
270
|
-
});
|
|
271
|
-
this.ws.close();
|
|
311
|
+
public close(reason?: string): void {
|
|
312
|
+
// Starts close handshake without clearing in-progress requests
|
|
313
|
+
// see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close
|
|
314
|
+
this.ws.close(INTENTIONAL_CLOSE_CODE, reason);
|
|
272
315
|
}
|
|
273
316
|
}
|
|
274
317
|
|
|
@@ -310,7 +353,7 @@ export function createISocketClient<CallableMethods, ImplementedMethods, Request
|
|
|
310
353
|
socket: ISocket<ImplementedMethods, CallableMethods, RequestContext>
|
|
311
354
|
): ISocketClient<CallableMethods> {
|
|
312
355
|
return {
|
|
313
|
-
close: () => socket.close(),
|
|
356
|
+
close: (reason?: string) => socket.close(reason),
|
|
314
357
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
315
358
|
call: createIsocketProxy(socket, undefined) as any
|
|
316
359
|
};
|
|
@@ -22,9 +22,13 @@ export class ISocketWithClientAuth<ImplementedMethods, CallableMethods, RequestC
|
|
|
22
22
|
requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>,
|
|
23
23
|
globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[],
|
|
24
24
|
tracer: Tracer,
|
|
25
|
-
|
|
25
|
+
options: {
|
|
26
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
27
|
+
timeouts?: SocketTimeouts;
|
|
28
|
+
logger?: { error: (message?: string) => void; info: (message?: string) => void; warn: (message?: string) => void };
|
|
29
|
+
}
|
|
26
30
|
) {
|
|
27
|
-
super(ws, requestHandlers, globalMiddlewares, tracer,
|
|
31
|
+
super(ws, requestHandlers, globalMiddlewares, tracer, options);
|
|
28
32
|
this.authorization = authorization;
|
|
29
33
|
}
|
|
30
34
|
|
|
@@ -38,15 +42,27 @@ export class ISocketWithClientAuth<ImplementedMethods, CallableMethods, RequestC
|
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Creates a new socket for a set of operations, without any retry behavior
|
|
47
|
+
* If the requests fail, the promise will reject.
|
|
48
|
+
*/
|
|
49
|
+
export async function connectSingleUseISocket<
|
|
50
|
+
CallableMethods,
|
|
51
|
+
ImplementedMethods,
|
|
52
|
+
RequestContext extends RequestContextBase = RequestContextBase
|
|
53
|
+
>(
|
|
42
54
|
wsUrl: string,
|
|
43
55
|
authorization: string | undefined,
|
|
44
56
|
requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>,
|
|
45
57
|
globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[],
|
|
46
58
|
tracer: Tracer,
|
|
47
|
-
|
|
59
|
+
options: {
|
|
60
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
61
|
+
timeouts?: SocketTimeouts;
|
|
62
|
+
logger?: { error: (message?: string) => void; info: (message?: string) => void; warn: (message?: string) => void };
|
|
63
|
+
}
|
|
48
64
|
): Promise<ISocketClient<CallableMethods>> {
|
|
49
65
|
const ws = await connectWebSocket(wsUrl);
|
|
50
|
-
const isocket = new ISocketWithClientAuth(ws, authorization, requestHandlers, globalMiddlewares, tracer,
|
|
66
|
+
const isocket = new ISocketWithClientAuth(ws, authorization, requestHandlers, globalMiddlewares, tracer, options);
|
|
51
67
|
return createISocketClient(isocket);
|
|
52
68
|
}
|
|
@@ -93,10 +93,13 @@ export class TracedSocket<ImplementedMethods, CallableMethods, RequestContext ex
|
|
|
93
93
|
requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>,
|
|
94
94
|
globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[],
|
|
95
95
|
tracer: Tracer,
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
options: {
|
|
97
|
+
onClose: (event: WebSocket.CloseEvent) => void;
|
|
98
|
+
timeouts?: SocketTimeouts;
|
|
99
|
+
logger?: { error: (message?: string) => void; info: (message?: string) => void; warn: (message?: string) => void };
|
|
100
|
+
}
|
|
98
101
|
) {
|
|
99
|
-
super(ws, requestHandlers, globalMiddlewares,
|
|
102
|
+
super(ws, requestHandlers, globalMiddlewares, options);
|
|
100
103
|
this.tracer = tracer;
|
|
101
104
|
}
|
|
102
105
|
|
|
@@ -213,12 +216,12 @@ export class TracedSocket<ImplementedMethods, CallableMethods, RequestContext ex
|
|
|
213
216
|
}
|
|
214
217
|
}
|
|
215
218
|
|
|
216
|
-
public close(): void {
|
|
219
|
+
public close(reason?: string): void {
|
|
217
220
|
for (const span of this.activeSpanByRequestId.values()) {
|
|
218
221
|
span.end();
|
|
219
222
|
}
|
|
220
223
|
this.activeSpanByRequestId = new Map();
|
|
221
224
|
this.lastActiveSpan = undefined;
|
|
222
|
-
super.close();
|
|
225
|
+
super.close(reason);
|
|
223
226
|
}
|
|
224
227
|
}
|