velocious 1.0.337 → 1.0.338
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/build/src/frontend-models/base.js +2 -2
- package/build/src/http-client/websocket-channel.d.ts +9 -1
- package/build/src/http-client/websocket-channel.d.ts.map +1 -1
- package/build/src/http-client/websocket-channel.js +13 -2
- package/build/src/http-client/websocket-client.d.ts +50 -9
- package/build/src/http-client/websocket-client.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.js +139 -30
- package/package.json +2 -1
|
@@ -13,16 +13,18 @@ export default class VelociousWebsocketClientSubscription {
|
|
|
13
13
|
* @param {string} args.subscriptionId
|
|
14
14
|
* @param {string} args.channelType
|
|
15
15
|
* @param {Record<string, any>} [args.params]
|
|
16
|
+
* @param {string} [args.lastEventId]
|
|
16
17
|
* @param {(body: any) => void} [args.onMessage]
|
|
17
18
|
* @param {() => void} [args.onDisconnect]
|
|
18
19
|
* @param {() => void} [args.onResume]
|
|
19
20
|
* @param {(reason: string) => void} [args.onClose]
|
|
20
21
|
*/
|
|
21
|
-
constructor({ client, subscriptionId, channelType, params, onMessage, onDisconnect, onResume, onClose }: {
|
|
22
|
+
constructor({ client, subscriptionId, channelType, params, lastEventId, onMessage, onDisconnect, onResume, onClose }: {
|
|
22
23
|
client: import("./websocket-client.js").default;
|
|
23
24
|
subscriptionId: string;
|
|
24
25
|
channelType: string;
|
|
25
26
|
params?: Record<string, any> | undefined;
|
|
27
|
+
lastEventId?: string | undefined;
|
|
26
28
|
onMessage?: ((body: any) => void) | undefined;
|
|
27
29
|
onDisconnect?: (() => void) | undefined;
|
|
28
30
|
onResume?: (() => void) | undefined;
|
|
@@ -32,11 +34,13 @@ export default class VelociousWebsocketClientSubscription {
|
|
|
32
34
|
subscriptionId: string;
|
|
33
35
|
channelType: string;
|
|
34
36
|
params: Record<string, any>;
|
|
37
|
+
lastEventId: string | undefined;
|
|
35
38
|
_onMessage: ((body: any) => void) | undefined;
|
|
36
39
|
_onDisconnect: (() => void) | undefined;
|
|
37
40
|
_onResume: (() => void) | undefined;
|
|
38
41
|
_onClose: ((reason: string) => void) | undefined;
|
|
39
42
|
_subscribed: boolean;
|
|
43
|
+
_subscribeSent: boolean;
|
|
40
44
|
_closed: boolean;
|
|
41
45
|
/** @type {Promise<void>} */
|
|
42
46
|
ready: Promise<void>;
|
|
@@ -44,6 +48,10 @@ export default class VelociousWebsocketClientSubscription {
|
|
|
44
48
|
_rejectReady: (reason?: any) => void;
|
|
45
49
|
/** @returns {void} */
|
|
46
50
|
_handleSubscribed(): void;
|
|
51
|
+
/** @returns {void} */
|
|
52
|
+
_markSubscribeSent(): void;
|
|
53
|
+
/** @returns {boolean} */
|
|
54
|
+
_needsSubscribe(): boolean;
|
|
47
55
|
/**
|
|
48
56
|
* @param {any} body
|
|
49
57
|
* @returns {void}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-channel.d.ts","sourceRoot":"","sources":["../../../src/http-client/websocket-channel.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH;IACE
|
|
1
|
+
{"version":3,"file":"websocket-channel.d.ts","sourceRoot":"","sources":["../../../src/http-client/websocket-channel.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH;IACE;;;;;;;;;;;OAWG;IACH,sHAVG;QAAsD,MAAM,EAApD,OAAO,uBAAuB,EAAE,OAAO;QAC1B,cAAc,EAA3B,MAAM;QACO,WAAW,EAAxB,MAAM;QACqB,MAAM;QACnB,WAAW;QACE,SAAS,WAA7B,GAAG,KAAK,IAAI;QACD,YAAY,UAAxB,IAAI;QACQ,QAAQ,UAApB,IAAI;QACsB,OAAO,aAA9B,MAAM,KAAK,IAAI;KAAgB,EAqBlD;IAlBC,gDAAoB;IACpB,uBAAoC;IACpC,oBAA8B;IAC9B,4BAA0B;IAC1B,gCAA8B;IAC9B,oBAXgB,GAAG,KAAK,IAAI,cAWD;IAC3B,sBAXe,IAAI,cAWc;IACjC,kBAXe,IAAI,cAWM;IACzB,oBAXkB,MAAM,KAAK,IAAI,cAWV;IACvB,qBAAwB;IACxB,wBAA2B;IAC3B,iBAAoB;IAEpB,4BAA4B;IAC5B,OADW,OAAO,CAAC,IAAI,CAAC,CAItB;IAFA,yDAA4B;IAC5B,qCAA0B;IAI9B,sBAAsB;IACtB,qBADc,IAAI,CAKjB;IAED,sBAAsB;IACtB,sBADc,IAAI,CAGjB;IAED,yBAAyB;IACzB,mBADc,OAAO,CAGpB;IAED;;;OAGG;IACH,qBAHW,GAAG,GACD,IAAI,CAKhB;IAED,sBAAsB;IACtB,uBADc,IAAI,CAIjB;IAED,sBAAsB;IACtB,kBADc,IAAI,CAIjB;IAED;;;OAGG;IACH,sBAHW,MAAM,GACJ,IAAI,CAahB;IAED,sBAAsB;IACtB,SADc,IAAI,CAcjB;IAED,yBAAyB;IACzB,YADc,OAAO,CACa;IAElC,yBAAyB;IACzB,gBADc,OAAO,CACsC;CAC5D"}
|
|
@@ -14,21 +14,24 @@ export default class VelociousWebsocketClientSubscription {
|
|
|
14
14
|
* @param {string} args.subscriptionId
|
|
15
15
|
* @param {string} args.channelType
|
|
16
16
|
* @param {Record<string, any>} [args.params]
|
|
17
|
+
* @param {string} [args.lastEventId]
|
|
17
18
|
* @param {(body: any) => void} [args.onMessage]
|
|
18
19
|
* @param {() => void} [args.onDisconnect]
|
|
19
20
|
* @param {() => void} [args.onResume]
|
|
20
21
|
* @param {(reason: string) => void} [args.onClose]
|
|
21
22
|
*/
|
|
22
|
-
constructor({ client, subscriptionId, channelType, params, onMessage, onDisconnect, onResume, onClose }) {
|
|
23
|
+
constructor({ client, subscriptionId, channelType, params, lastEventId, onMessage, onDisconnect, onResume, onClose }) {
|
|
23
24
|
this.client = client;
|
|
24
25
|
this.subscriptionId = subscriptionId;
|
|
25
26
|
this.channelType = channelType;
|
|
26
27
|
this.params = params || {};
|
|
28
|
+
this.lastEventId = lastEventId;
|
|
27
29
|
this._onMessage = onMessage;
|
|
28
30
|
this._onDisconnect = onDisconnect;
|
|
29
31
|
this._onResume = onResume;
|
|
30
32
|
this._onClose = onClose;
|
|
31
33
|
this._subscribed = false;
|
|
34
|
+
this._subscribeSent = false;
|
|
32
35
|
this._closed = false;
|
|
33
36
|
/** @type {Promise<void>} */
|
|
34
37
|
this.ready = new Promise((resolve, reject) => {
|
|
@@ -43,6 +46,14 @@ export default class VelociousWebsocketClientSubscription {
|
|
|
43
46
|
this._subscribed = true;
|
|
44
47
|
this._resolveReady?.();
|
|
45
48
|
}
|
|
49
|
+
/** @returns {void} */
|
|
50
|
+
_markSubscribeSent() {
|
|
51
|
+
this._subscribeSent = true;
|
|
52
|
+
}
|
|
53
|
+
/** @returns {boolean} */
|
|
54
|
+
_needsSubscribe() {
|
|
55
|
+
return !this._closed && !this._subscribeSent;
|
|
56
|
+
}
|
|
46
57
|
/**
|
|
47
58
|
* @param {any} body
|
|
48
59
|
* @returns {void}
|
|
@@ -101,4 +112,4 @@ export default class VelociousWebsocketClientSubscription {
|
|
|
101
112
|
/** @returns {boolean} */
|
|
102
113
|
isSubscribed() { return this._subscribed && !this._closed; }
|
|
103
114
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWNoYW5uZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1jbGllbnQvd2Vic29ja2V0LWNoYW5uZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFvQztJQUN2RDs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQVksRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBQztRQUNoSCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUE7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUE7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFFcEIsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUE7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUE7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU07UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7SUFDNUIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixlQUFlO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsSUFBSTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTTtRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixtQkFBbUI7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU07UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU07UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFNO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBRW5CLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN6QixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsK0NBQStDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN6RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFNO1FBRXhCLElBQUksQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBQyxDQUFDLENBQUE7WUFDOUYsQ0FBQztRQUNILENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxpRUFBaUU7UUFDbkUsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDO0lBRWxDLHlCQUF5QjtJQUN6QixZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7Q0FDNUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBDbGllbnQtc2lkZSBoYW5kbGUgZm9yIGEgY2hhbm5lbCBzdWJzY3JpcHRpb24gb3BlbmVkIHZpYVxuICogYFZlbG9jaW91c1dlYnNvY2tldENsaWVudC5zdWJzY3JpYmVDaGFubmVsKClgLiBNaXJyb3JzIHRoZSBzZXJ2ZXInc1xuICogc3Vic2NyaXB0aW9uIGxpZmVjeWNsZSDigJQgYHN1YnNjcmliZWRgIChyZXNvbHZlcyBgcmVhZHlgKSAvIGBvbk1lc3NhZ2VgIC9cbiAqIGBvbkNsb3NlYC5cbiAqXG4gKiBTZWUgYGRvY3Mvd2Vic29ja2V0LWNoYW5uZWxzLm1kYCBmb3IgdGhlIHdpcmUgcHJvdG9jb2wuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c1dlYnNvY2tldENsaWVudFN1YnNjcmlwdGlvbiB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vd2Vic29ja2V0LWNsaWVudC5qc1wiKS5kZWZhdWx0fSBhcmdzLmNsaWVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zdWJzY3JpcHRpb25JZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsVHlwZVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFthcmdzLnBhcmFtc11cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmxhc3RFdmVudElkXVxuICAgKiBAcGFyYW0geyhib2R5OiBhbnkpID0+IHZvaWR9IFthcmdzLm9uTWVzc2FnZV1cbiAgICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbYXJncy5vbkRpc2Nvbm5lY3RdXG4gICAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gW2FyZ3Mub25SZXN1bWVdXG4gICAqIEBwYXJhbSB7KHJlYXNvbjogc3RyaW5nKSA9PiB2b2lkfSBbYXJncy5vbkNsb3NlXVxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NsaWVudCwgc3Vic2NyaXB0aW9uSWQsIGNoYW5uZWxUeXBlLCBwYXJhbXMsIGxhc3RFdmVudElkLCBvbk1lc3NhZ2UsIG9uRGlzY29ubmVjdCwgb25SZXN1bWUsIG9uQ2xvc2V9KSB7XG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnRcbiAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gc3Vic2NyaXB0aW9uSWRcbiAgICB0aGlzLmNoYW5uZWxUeXBlID0gY2hhbm5lbFR5cGVcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcyB8fCB7fVxuICAgIHRoaXMubGFzdEV2ZW50SWQgPSBsYXN0RXZlbnRJZFxuICAgIHRoaXMuX29uTWVzc2FnZSA9IG9uTWVzc2FnZVxuICAgIHRoaXMuX29uRGlzY29ubmVjdCA9IG9uRGlzY29ubmVjdFxuICAgIHRoaXMuX29uUmVzdW1lID0gb25SZXN1bWVcbiAgICB0aGlzLl9vbkNsb3NlID0gb25DbG9zZVxuICAgIHRoaXMuX3N1YnNjcmliZWQgPSBmYWxzZVxuICAgIHRoaXMuX3N1YnNjcmliZVNlbnQgPSBmYWxzZVxuICAgIHRoaXMuX2Nsb3NlZCA9IGZhbHNlXG5cbiAgICAvKiogQHR5cGUge1Byb21pc2U8dm9pZD59ICovXG4gICAgdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3Jlc29sdmVSZWFkeSA9IHJlc29sdmVcbiAgICAgIHRoaXMuX3JlamVjdFJlYWR5ID0gcmVqZWN0XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgX2hhbmRsZVN1YnNjcmliZWQoKSB7XG4gICAgaWYgKHRoaXMuX2Nsb3NlZCB8fCB0aGlzLl9zdWJzY3JpYmVkKSByZXR1cm5cbiAgICB0aGlzLl9zdWJzY3JpYmVkID0gdHJ1ZVxuICAgIHRoaXMuX3Jlc29sdmVSZWFkeT8uKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgX21hcmtTdWJzY3JpYmVTZW50KCkge1xuICAgIHRoaXMuX3N1YnNjcmliZVNlbnQgPSB0cnVlXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIF9uZWVkc1N1YnNjcmliZSgpIHtcbiAgICByZXR1cm4gIXRoaXMuX2Nsb3NlZCAmJiAhdGhpcy5fc3Vic2NyaWJlU2VudFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSBib2R5XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgX2hhbmRsZU1lc3NhZ2UoYm9keSkge1xuICAgIGlmICh0aGlzLl9jbG9zZWQpIHJldHVyblxuICAgIHRoaXMuX29uTWVzc2FnZT8uKGJvZHkpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIF9oYW5kbGVEaXNjb25uZWN0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX2Nsb3NlZCkgcmV0dXJuXG4gICAgdGhpcy5fb25EaXNjb25uZWN0Py4oKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBfaGFuZGxlUmVzdW1lZCgpIHtcbiAgICBpZiAodGhpcy5fY2xvc2VkKSByZXR1cm5cbiAgICB0aGlzLl9vblJlc3VtZT8uKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgX2hhbmRsZUNsb3NlZChyZWFzb24pIHtcbiAgICBpZiAodGhpcy5fY2xvc2VkKSByZXR1cm5cbiAgICB0aGlzLl9jbG9zZWQgPSB0cnVlXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fb25DbG9zZT8uKHJlYXNvbilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKCF0aGlzLl9zdWJzY3JpYmVkKSB7XG4gICAgICAgIHRoaXMuX3JlamVjdFJlYWR5Py4obmV3IEVycm9yKGBTdWJzY3JpcHRpb24gY2xvc2VkIGJlZm9yZSBhY2tub3dsZWRnZW1lbnQ6ICR7cmVhc29ufWApKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuX2Nsb3NlZCkgcmV0dXJuXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuY2xpZW50LmlzT3BlbigpKSB7XG4gICAgICAgIHRoaXMuY2xpZW50Ll9zZW5kTWVzc2FnZSh7dHlwZTogXCJjaGFubmVsLXVuc3Vic2NyaWJlXCIsIHN1YnNjcmlwdGlvbklkOiB0aGlzLnN1YnNjcmlwdGlvbklkfSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNvY2tldCBhbHJlYWR5IGdvbmU7IHNlcnZlciB3aWxsIGNsZWFuIHVwIG9uIHNlc3Npb24gdGVhcmRvd24uXG4gICAgfVxuXG4gICAgdGhpcy5jbGllbnQuX3JlbW92ZUNoYW5uZWxTdWJzY3JpcHRpb24odGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICB0aGlzLl9oYW5kbGVDbG9zZWQoXCJjbGllbnRfdW5zdWJzY3JpYmVcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaXNDbG9zZWQoKSB7IHJldHVybiB0aGlzLl9jbG9zZWQgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaXNTdWJzY3JpYmVkKCkgeyByZXR1cm4gdGhpcy5fc3Vic2NyaWJlZCAmJiAhdGhpcy5fY2xvc2VkIH1cbn1cbiJdfQ==
|
|
@@ -7,13 +7,20 @@ export default class VelociousWebsocketClient {
|
|
|
7
7
|
* @param {object} [args] - Options object.
|
|
8
8
|
* @param {boolean} [args.autoReconnect] - Enable auto-reconnect with exponential backoff.
|
|
9
9
|
* @param {boolean} [args.debug] - Whether debug.
|
|
10
|
+
* @param {{getIsOnline?: () => boolean | Promise<boolean>, subscribe?: (callback: (isOnline: boolean) => void) => (() => void) | {remove: () => void}}} [args.networkMonitor] - Optional online-state adapter. When provided, auto-reconnect can wait for the network to report online before reconnecting, and open sockets are closed when the monitor reports offline.
|
|
10
11
|
* @param {number[]} [args.reconnectDelays] - Backoff delays in ms (default: [1000, 2000, 4000, 8000, 15000]).
|
|
11
12
|
* @param {{get: () => string | null | undefined | Promise<string | null | undefined>, set: (sessionId: string) => void | Promise<void>, clear: () => void | Promise<void>}} [args.sessionStore] - Optional sessionId persistence hook. When provided, the client writes every `session-established` / `session-resumed` id via `store.set(id)` and clears it on `session-gone`. Before the first `connect()`, the client reads any persisted id via `store.get()` and attempts resumption. Apps should back this by whatever persistence layer survives page reloads (localStorage, a cookie, SQLite, etc.).
|
|
12
13
|
* @param {string} [args.url] Full websocket URL (default: ws://127.0.0.1:3006/websocket)
|
|
13
14
|
*/
|
|
14
|
-
constructor({ autoReconnect, debug, reconnectDelays, sessionStore, url }?: {
|
|
15
|
+
constructor({ autoReconnect, debug, networkMonitor, reconnectDelays, sessionStore, url }?: {
|
|
15
16
|
autoReconnect?: boolean | undefined;
|
|
16
17
|
debug?: boolean | undefined;
|
|
18
|
+
networkMonitor?: {
|
|
19
|
+
getIsOnline?: () => boolean | Promise<boolean>;
|
|
20
|
+
subscribe?: (callback: (isOnline: boolean) => void) => (() => void) | {
|
|
21
|
+
remove: () => void;
|
|
22
|
+
};
|
|
23
|
+
} | undefined;
|
|
17
24
|
reconnectDelays?: number[] | undefined;
|
|
18
25
|
sessionStore?: {
|
|
19
26
|
get: () => string | null | undefined | Promise<string | null | undefined>;
|
|
@@ -46,6 +53,8 @@ export default class VelociousWebsocketClient {
|
|
|
46
53
|
disconnectedSince: number | null;
|
|
47
54
|
/** @type {number} */
|
|
48
55
|
reconnectAttempt: number;
|
|
56
|
+
/** @type {number} */
|
|
57
|
+
connectionAttempts: number;
|
|
49
58
|
/** @type {number[]} */
|
|
50
59
|
reconnectDelays: number[];
|
|
51
60
|
/** @type {ReturnType<typeof setTimeout> | null} */
|
|
@@ -74,6 +83,19 @@ export default class VelociousWebsocketClient {
|
|
|
74
83
|
} | undefined;
|
|
75
84
|
/** @type {boolean} - true once the sessionStore has been consulted for a restored id. */
|
|
76
85
|
_sessionStoreRestored: boolean;
|
|
86
|
+
/** @type {{getIsOnline?: () => boolean | Promise<boolean>, subscribe?: (callback: (isOnline: boolean) => void) => (() => void) | {remove: () => void}} | undefined} */
|
|
87
|
+
_networkMonitor: {
|
|
88
|
+
getIsOnline?: () => boolean | Promise<boolean>;
|
|
89
|
+
subscribe?: (callback: (isOnline: boolean) => void) => (() => void) | {
|
|
90
|
+
remove: () => void;
|
|
91
|
+
};
|
|
92
|
+
} | undefined;
|
|
93
|
+
/** @type {null | (() => void) | {remove: () => void}} */
|
|
94
|
+
_networkMonitorSubscription: null | (() => void) | {
|
|
95
|
+
remove: () => void;
|
|
96
|
+
};
|
|
97
|
+
/** @type {boolean} */
|
|
98
|
+
_waitingForOnline: boolean;
|
|
77
99
|
/** @returns {boolean} */
|
|
78
100
|
isOpen(): boolean;
|
|
79
101
|
/**
|
|
@@ -103,8 +125,9 @@ export default class VelociousWebsocketClient {
|
|
|
103
125
|
*/
|
|
104
126
|
_removeConnection(connectionId: string): void;
|
|
105
127
|
/**
|
|
106
|
-
* Subscribes to a named WebsocketChannel.
|
|
107
|
-
*
|
|
128
|
+
* Subscribes to a named WebsocketChannel. If the socket is not yet
|
|
129
|
+
* open, the subscription is queued and sent once a connection is
|
|
130
|
+
* established.
|
|
108
131
|
*
|
|
109
132
|
* @param {string} channelType - Name the server registered the channel under.
|
|
110
133
|
* @param {{params?: Record<string, any>, lastEventId?: string, onMessage?: (body: any) => void, onDisconnect?: () => void, onResume?: () => void, onClose?: (reason: string) => void}} [options]
|
|
@@ -123,6 +146,21 @@ export default class VelociousWebsocketClient {
|
|
|
123
146
|
* @returns {void}
|
|
124
147
|
*/
|
|
125
148
|
_removeChannelSubscription(subscriptionId: string): void;
|
|
149
|
+
/**
|
|
150
|
+
* @param {VelociousWebsocketClientSubscription} subscription
|
|
151
|
+
* @returns {void}
|
|
152
|
+
*/
|
|
153
|
+
_sendChannelSubscribe(subscription: VelociousWebsocketClientSubscription): void;
|
|
154
|
+
/** @returns {void} */
|
|
155
|
+
_sendPendingChannelSubscriptions(): void;
|
|
156
|
+
/** @returns {Promise<boolean>} */
|
|
157
|
+
_isOnline(): Promise<boolean>;
|
|
158
|
+
/** @returns {Promise<boolean>} */
|
|
159
|
+
_shouldWaitForOnline(): Promise<boolean>;
|
|
160
|
+
/** @returns {void} */
|
|
161
|
+
_ensureNetworkMonitorSubscription(): void;
|
|
162
|
+
/** @returns {void} */
|
|
163
|
+
_teardownNetworkMonitorSubscription(): void;
|
|
126
164
|
/**
|
|
127
165
|
* Sets a global metadata value that is sent to the server.
|
|
128
166
|
* For WebSocket connections, a metadata update message is sent immediately.
|
|
@@ -135,16 +173,19 @@ export default class VelociousWebsocketClient {
|
|
|
135
173
|
getMetadata(): Record<string, any>;
|
|
136
174
|
/**
|
|
137
175
|
* Ensure a websocket connection is open.
|
|
176
|
+
* Auto-reconnect and online gating are enabled by default.
|
|
177
|
+
* Pass `autoReconnect: false` or `waitForOnline: false` only when a caller
|
|
178
|
+
* explicitly needs lower-level behavior.
|
|
179
|
+
* @param {{autoReconnect?: boolean, waitForOnline?: boolean, resetReconnectState?: boolean}} [options]
|
|
138
180
|
* @returns {Promise<void>} - Resolves when complete.
|
|
139
181
|
*/
|
|
140
|
-
connect(
|
|
182
|
+
connect({ autoReconnect, waitForOnline, resetReconnectState }?: {
|
|
183
|
+
autoReconnect?: boolean;
|
|
184
|
+
waitForOnline?: boolean;
|
|
185
|
+
resetReconnectState?: boolean;
|
|
186
|
+
}): Promise<void>;
|
|
141
187
|
connectPromise: Promise<any> | undefined;
|
|
142
188
|
socket: WebSocket | undefined;
|
|
143
|
-
/**
|
|
144
|
-
* Connect and enable auto-reconnect. Resets reconnect state.
|
|
145
|
-
* @returns {Promise<void>} - Resolves when connected.
|
|
146
|
-
*/
|
|
147
|
-
connectWithReconnect(): Promise<void>;
|
|
148
189
|
/**
|
|
149
190
|
* Close the websocket and clear pending state.
|
|
150
191
|
* @returns {Promise<void>} - Resolves when complete.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../../src/http-client/websocket-client.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH;IAQE
|
|
1
|
+
{"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../../src/http-client/websocket-client.js"],"names":[],"mappings":"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"}
|