websocket-ts 1.1.0 → 2.1.1
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/LICENSE +21 -21
- package/README.md +211 -138
- package/package.json +46 -33
- package/src/backoff/backoff.ts +26 -18
- package/src/backoff/constantbackoff.ts +38 -20
- package/src/backoff/exponentialbackoff.ts +78 -38
- package/src/backoff/linearbackoff.ts +88 -37
- package/src/index.ts +23 -9
- package/src/queue/array_queue.ts +41 -0
- package/src/queue/queue.ts +46 -0
- package/src/queue/ring_queue.ts +69 -0
- package/src/websocket.ts +487 -162
- package/src/websocket_buffer.ts +18 -0
- package/src/websocket_builder.ts +274 -0
- package/src/websocket_event.ts +88 -0
- package/src/websocket_options.ts +23 -0
- package/src/websocket_retry_options.ts +22 -0
- package/{tsconfig.json → tsconfig.cjs.json} +71 -71
- package/tsconfig.esm.json +71 -0
- package/jest.config.js +0 -8
- package/lib/backoff/backoff.d.ts +0 -18
- package/lib/backoff/backoff.d.ts.map +0 -1
- package/lib/backoff/backoff.js +0 -3
- package/lib/backoff/backoff.js.map +0 -1
- package/lib/backoff/constantbackoff.d.ts +0 -11
- package/lib/backoff/constantbackoff.d.ts.map +0 -1
- package/lib/backoff/constantbackoff.js +0 -20
- package/lib/backoff/constantbackoff.js.map +0 -1
- package/lib/backoff/exponentialbackoff.d.ts +0 -22
- package/lib/backoff/exponentialbackoff.d.ts.map +0 -1
- package/lib/backoff/exponentialbackoff.js +0 -35
- package/lib/backoff/exponentialbackoff.js.map +0 -1
- package/lib/backoff/linearbackoff.d.ts +0 -19
- package/lib/backoff/linearbackoff.d.ts.map +0 -1
- package/lib/backoff/linearbackoff.js +0 -34
- package/lib/backoff/linearbackoff.js.map +0 -1
- package/lib/buffer/buffer.d.ts +0 -41
- package/lib/buffer/buffer.d.ts.map +0 -1
- package/lib/buffer/buffer.js +0 -3
- package/lib/buffer/buffer.js.map +0 -1
- package/lib/buffer/lrubuffer.d.ts +0 -24
- package/lib/buffer/lrubuffer.d.ts.map +0 -1
- package/lib/buffer/lrubuffer.js +0 -76
- package/lib/buffer/lrubuffer.js.map +0 -1
- package/lib/buffer/timebuffer.d.ts +0 -25
- package/lib/buffer/timebuffer.d.ts.map +0 -1
- package/lib/buffer/timebuffer.js +0 -92
- package/lib/buffer/timebuffer.js.map +0 -1
- package/lib/index.d.ts +0 -10
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -22
- package/lib/index.js.map +0 -1
- package/lib/websocket.d.ts +0 -47
- package/lib/websocket.d.ts.map +0 -1
- package/lib/websocket.js +0 -120
- package/lib/websocket.js.map +0 -1
- package/lib/websocketBuilder.d.ts +0 -32
- package/lib/websocketBuilder.d.ts.map +0 -1
- package/lib/websocketBuilder.js +0 -68
- package/lib/websocketBuilder.js.map +0 -1
- package/lib/wsbuilder.d.ts +0 -29
- package/lib/wsbuilder.d.ts.map +0 -1
- package/lib/wsbuilder.js +0 -88
- package/lib/wsbuilder.js.map +0 -1
- package/src/buffer/buffer.ts +0 -45
- package/src/buffer/lrubuffer.ts +0 -80
- package/src/buffer/timebuffer.ts +0 -105
- package/src/websocketBuilder.ts +0 -98
- package/test/backoff/constantbackoff.test.ts +0 -21
- package/test/backoff/exponentialbackoff.test.ts +0 -13
- package/test/backoff/linearbackoff.test.ts +0 -32
- package/test/buffer/common.ts +0 -10
- package/test/buffer/lrubuffer.test.ts +0 -128
- package/test/buffer/timebuffer.test.ts +0 -115
- package/test/websocket.test.ts +0 -341
- package/test/websocketBuilder.test.ts +0 -36
package/lib/websocket.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Websocket = exports.WebsocketEvents = void 0;
|
|
4
|
-
var WebsocketEvents;
|
|
5
|
-
(function (WebsocketEvents) {
|
|
6
|
-
WebsocketEvents["open"] = "open";
|
|
7
|
-
WebsocketEvents["close"] = "close";
|
|
8
|
-
WebsocketEvents["error"] = "error";
|
|
9
|
-
WebsocketEvents["message"] = "message";
|
|
10
|
-
WebsocketEvents["retry"] = "retry";
|
|
11
|
-
})(WebsocketEvents = exports.WebsocketEvents || (exports.WebsocketEvents = {}));
|
|
12
|
-
var Websocket = /** @class */ (function () {
|
|
13
|
-
function Websocket(url, protocols, buffer, backoff) {
|
|
14
|
-
var _this = this;
|
|
15
|
-
this.eventListeners = { open: [], close: [], error: [], message: [], retry: [] };
|
|
16
|
-
this.closedByUser = false;
|
|
17
|
-
this.retries = 0;
|
|
18
|
-
this.handleOpenEvent = function (ev) { return _this.handleEvent(WebsocketEvents.open, ev); };
|
|
19
|
-
this.handleCloseEvent = function (ev) { return _this.handleEvent(WebsocketEvents.close, ev); };
|
|
20
|
-
this.handleErrorEvent = function (ev) { return _this.handleEvent(WebsocketEvents.error, ev); };
|
|
21
|
-
this.handleMessageEvent = function (ev) { return _this.handleEvent(WebsocketEvents.message, ev); };
|
|
22
|
-
this.url = url;
|
|
23
|
-
this.protocols = protocols;
|
|
24
|
-
this.buffer = buffer;
|
|
25
|
-
this.backoff = backoff;
|
|
26
|
-
this.tryConnect();
|
|
27
|
-
}
|
|
28
|
-
Object.defineProperty(Websocket.prototype, "underlyingWebsocket", {
|
|
29
|
-
get: function () {
|
|
30
|
-
return this.websocket;
|
|
31
|
-
},
|
|
32
|
-
enumerable: false,
|
|
33
|
-
configurable: true
|
|
34
|
-
});
|
|
35
|
-
Websocket.prototype.send = function (data) {
|
|
36
|
-
var _a;
|
|
37
|
-
if (this.closedByUser)
|
|
38
|
-
return;
|
|
39
|
-
if (this.websocket === undefined || this.websocket.readyState !== this.websocket.OPEN)
|
|
40
|
-
(_a = this.buffer) === null || _a === void 0 ? void 0 : _a.write([data]);
|
|
41
|
-
else
|
|
42
|
-
this.websocket.send(data);
|
|
43
|
-
};
|
|
44
|
-
Websocket.prototype.close = function (code, reason) {
|
|
45
|
-
var _a;
|
|
46
|
-
this.closedByUser = true;
|
|
47
|
-
(_a = this.websocket) === null || _a === void 0 ? void 0 : _a.close(code, reason);
|
|
48
|
-
};
|
|
49
|
-
Websocket.prototype.addEventListener = function (type, listener, options) {
|
|
50
|
-
var eventListener = { listener: listener, options: options };
|
|
51
|
-
var eventListeners = this.eventListeners[type];
|
|
52
|
-
eventListeners.push(eventListener);
|
|
53
|
-
};
|
|
54
|
-
Websocket.prototype.removeEventListener = function (type, listener, options) {
|
|
55
|
-
this.eventListeners[type] =
|
|
56
|
-
this.eventListeners[type]
|
|
57
|
-
.filter(function (l) {
|
|
58
|
-
return l.listener !== listener && (l.options === undefined || l.options !== options);
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
Websocket.prototype.dispatchEvent = function (type, ev) {
|
|
62
|
-
var _this = this;
|
|
63
|
-
var listeners = this.eventListeners[type];
|
|
64
|
-
var onceListeners = [];
|
|
65
|
-
listeners.forEach(function (l) {
|
|
66
|
-
l.listener(_this, ev); // call listener
|
|
67
|
-
if (l.options !== undefined && l.options.once)
|
|
68
|
-
onceListeners.push(l);
|
|
69
|
-
});
|
|
70
|
-
onceListeners.forEach(function (l) { return _this.removeEventListener(type, l.listener, l.options); }); // remove 'once'-listeners
|
|
71
|
-
};
|
|
72
|
-
Websocket.prototype.tryConnect = function () {
|
|
73
|
-
if (this.websocket !== undefined) { // remove all event-listeners from broken socket
|
|
74
|
-
this.websocket.removeEventListener(WebsocketEvents.open, this.handleOpenEvent);
|
|
75
|
-
this.websocket.removeEventListener(WebsocketEvents.close, this.handleCloseEvent);
|
|
76
|
-
this.websocket.removeEventListener(WebsocketEvents.error, this.handleErrorEvent);
|
|
77
|
-
this.websocket.removeEventListener(WebsocketEvents.message, this.handleMessageEvent);
|
|
78
|
-
this.websocket.close();
|
|
79
|
-
}
|
|
80
|
-
this.websocket = new WebSocket(this.url, this.protocols); // create new socket and attach handlers
|
|
81
|
-
this.websocket.addEventListener(WebsocketEvents.open, this.handleOpenEvent);
|
|
82
|
-
this.websocket.addEventListener(WebsocketEvents.close, this.handleCloseEvent);
|
|
83
|
-
this.websocket.addEventListener(WebsocketEvents.error, this.handleErrorEvent);
|
|
84
|
-
this.websocket.addEventListener(WebsocketEvents.message, this.handleMessageEvent);
|
|
85
|
-
};
|
|
86
|
-
Websocket.prototype.handleEvent = function (type, ev) {
|
|
87
|
-
var _a, _b, _c;
|
|
88
|
-
switch (type) {
|
|
89
|
-
case WebsocketEvents.close:
|
|
90
|
-
if (!this.closedByUser) // failed to connect or connection lost, try to reconnect
|
|
91
|
-
this.reconnect();
|
|
92
|
-
break;
|
|
93
|
-
case WebsocketEvents.open:
|
|
94
|
-
this.retries = 0;
|
|
95
|
-
(_a = this.backoff) === null || _a === void 0 ? void 0 : _a.reset(); // reset backoff
|
|
96
|
-
(_b = this.buffer) === null || _b === void 0 ? void 0 : _b.forEach(this.send.bind(this)); // send all buffered messages
|
|
97
|
-
(_c = this.buffer) === null || _c === void 0 ? void 0 : _c.clear();
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
this.dispatchEvent(type, ev); // forward to all listeners
|
|
101
|
-
};
|
|
102
|
-
Websocket.prototype.reconnect = function () {
|
|
103
|
-
var _this = this;
|
|
104
|
-
if (this.backoff === undefined) // no backoff, we're done
|
|
105
|
-
return;
|
|
106
|
-
var backoff = this.backoff.next();
|
|
107
|
-
setTimeout(function () {
|
|
108
|
-
_this.dispatchEvent(WebsocketEvents.retry, new CustomEvent(WebsocketEvents.retry, {
|
|
109
|
-
detail: {
|
|
110
|
-
retries: ++_this.retries,
|
|
111
|
-
backoff: backoff
|
|
112
|
-
}
|
|
113
|
-
}));
|
|
114
|
-
_this.tryConnect();
|
|
115
|
-
}, backoff);
|
|
116
|
-
};
|
|
117
|
-
return Websocket;
|
|
118
|
-
}());
|
|
119
|
-
exports.Websocket = Websocket;
|
|
120
|
-
//# sourceMappingURL=websocket.js.map
|
package/lib/websocket.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Backoff } from "./backoff/backoff";
|
|
2
|
-
import { Buffer } from "./buffer/buffer";
|
|
3
|
-
import { RetryEventDetails, Websocket } from "./websocket";
|
|
4
|
-
/**
|
|
5
|
-
* Used to build Websocket-instances.
|
|
6
|
-
*/
|
|
7
|
-
export declare class WebsocketBuilder {
|
|
8
|
-
private readonly url;
|
|
9
|
-
private ws;
|
|
10
|
-
private protocols?;
|
|
11
|
-
private backoff?;
|
|
12
|
-
private buffer?;
|
|
13
|
-
private onOpenListeners;
|
|
14
|
-
private onCloseListeners;
|
|
15
|
-
private onErrorListeners;
|
|
16
|
-
private onMessageListeners;
|
|
17
|
-
private onRetryListeners;
|
|
18
|
-
constructor(url: string);
|
|
19
|
-
withProtocols(p: string | string[]): WebsocketBuilder;
|
|
20
|
-
withBackoff(backoff: Backoff): WebsocketBuilder;
|
|
21
|
-
withBuffer(buffer: Buffer<any>): WebsocketBuilder;
|
|
22
|
-
onOpen(listener: (instance: Websocket, ev: Event) => any, options?: boolean | EventListenerOptions): WebsocketBuilder;
|
|
23
|
-
onClose(listener: (instance: Websocket, ev: CloseEvent) => any, options?: boolean | EventListenerOptions): WebsocketBuilder;
|
|
24
|
-
onError(listener: (instance: Websocket, ev: Event) => any, options?: boolean | EventListenerOptions): WebsocketBuilder;
|
|
25
|
-
onMessage(listener: (instance: Websocket, ev: MessageEvent) => any, options?: boolean | EventListenerOptions): WebsocketBuilder;
|
|
26
|
-
onRetry(listener: (instance: Websocket, ev: CustomEvent<RetryEventDetails>) => any, options?: boolean | EventListenerOptions): WebsocketBuilder;
|
|
27
|
-
/**
|
|
28
|
-
* Multiple calls to build() will always return the same websocket-instance.
|
|
29
|
-
*/
|
|
30
|
-
build(): Websocket;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=websocketBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocketBuilder.d.ts","sourceRoot":"","sources":["../src/websocketBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,iBAAiB,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAC,CAAoB;IACtC,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAC,CAA4D;IAC3E,OAAO,CAAC,eAAe,CAGb;IACV,OAAO,CAAC,gBAAgB,CAGd;IACV,OAAO,CAAC,gBAAgB,CAGd;IACV,OAAO,CAAC,kBAAkB,CAGhB;IACV,OAAO,CAAC,gBAAgB,CAGd;gBAEE,GAAG,EAAE,MAAM;IAIhB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,gBAAgB;IAKrD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB;IAK/C,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB;IAKjD,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,gBAAgB;IAKlE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,KAAK,GAAG,EACtD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,gBAAgB;IAKnE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,EACjD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,gBAAgB;IAKnE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,GAAG,EACxD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,gBAAgB;IAKrE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,CAAC,iBAAiB,CAAC,KAAK,GAAG,EAC1E,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,gBAAgB;IAK1E;;OAEG;IACI,KAAK,IAAI,SAAS;CAW5B"}
|
package/lib/websocketBuilder.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebsocketBuilder = void 0;
|
|
4
|
-
var websocket_1 = require("./websocket");
|
|
5
|
-
/**
|
|
6
|
-
* Used to build Websocket-instances.
|
|
7
|
-
*/
|
|
8
|
-
var WebsocketBuilder = /** @class */ (function () {
|
|
9
|
-
function WebsocketBuilder(url) {
|
|
10
|
-
this.ws = null;
|
|
11
|
-
this.onOpenListeners = [];
|
|
12
|
-
this.onCloseListeners = [];
|
|
13
|
-
this.onErrorListeners = [];
|
|
14
|
-
this.onMessageListeners = [];
|
|
15
|
-
this.onRetryListeners = [];
|
|
16
|
-
this.url = url;
|
|
17
|
-
}
|
|
18
|
-
WebsocketBuilder.prototype.withProtocols = function (p) {
|
|
19
|
-
this.protocols = p;
|
|
20
|
-
return this;
|
|
21
|
-
};
|
|
22
|
-
WebsocketBuilder.prototype.withBackoff = function (backoff) {
|
|
23
|
-
this.backoff = backoff;
|
|
24
|
-
return this;
|
|
25
|
-
};
|
|
26
|
-
WebsocketBuilder.prototype.withBuffer = function (buffer) {
|
|
27
|
-
this.buffer = buffer;
|
|
28
|
-
return this;
|
|
29
|
-
};
|
|
30
|
-
WebsocketBuilder.prototype.onOpen = function (listener, options) {
|
|
31
|
-
this.onOpenListeners.push({ listener: listener, options: options });
|
|
32
|
-
return this;
|
|
33
|
-
};
|
|
34
|
-
WebsocketBuilder.prototype.onClose = function (listener, options) {
|
|
35
|
-
this.onCloseListeners.push({ listener: listener, options: options });
|
|
36
|
-
return this;
|
|
37
|
-
};
|
|
38
|
-
WebsocketBuilder.prototype.onError = function (listener, options) {
|
|
39
|
-
this.onErrorListeners.push({ listener: listener, options: options });
|
|
40
|
-
return this;
|
|
41
|
-
};
|
|
42
|
-
WebsocketBuilder.prototype.onMessage = function (listener, options) {
|
|
43
|
-
this.onMessageListeners.push({ listener: listener, options: options });
|
|
44
|
-
return this;
|
|
45
|
-
};
|
|
46
|
-
WebsocketBuilder.prototype.onRetry = function (listener, options) {
|
|
47
|
-
this.onRetryListeners.push({ listener: listener, options: options });
|
|
48
|
-
return this;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Multiple calls to build() will always return the same websocket-instance.
|
|
52
|
-
*/
|
|
53
|
-
WebsocketBuilder.prototype.build = function () {
|
|
54
|
-
var _this = this;
|
|
55
|
-
if (this.ws !== null)
|
|
56
|
-
return this.ws;
|
|
57
|
-
this.ws = new websocket_1.Websocket(this.url, this.protocols, this.buffer, this.backoff);
|
|
58
|
-
this.onOpenListeners.forEach(function (h) { var _a; return (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.addEventListener(websocket_1.WebsocketEvents.open, h.listener, h.options); });
|
|
59
|
-
this.onCloseListeners.forEach(function (h) { var _a; return (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.addEventListener(websocket_1.WebsocketEvents.close, h.listener, h.options); });
|
|
60
|
-
this.onErrorListeners.forEach(function (h) { var _a; return (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.addEventListener(websocket_1.WebsocketEvents.error, h.listener, h.options); });
|
|
61
|
-
this.onMessageListeners.forEach(function (h) { var _a; return (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.addEventListener(websocket_1.WebsocketEvents.message, h.listener, h.options); });
|
|
62
|
-
this.onRetryListeners.forEach(function (h) { var _a; return (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.addEventListener(websocket_1.WebsocketEvents.retry, h.listener, h.options); });
|
|
63
|
-
return this.ws;
|
|
64
|
-
};
|
|
65
|
-
return WebsocketBuilder;
|
|
66
|
-
}());
|
|
67
|
-
exports.WebsocketBuilder = WebsocketBuilder;
|
|
68
|
-
//# sourceMappingURL=websocketBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocketBuilder.js","sourceRoot":"","sources":["../src/websocketBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/wsbuilder.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Backoff } from "./backoff/backoff";
|
|
2
|
-
import { Buffer } from "./buffer/buffer";
|
|
3
|
-
import { RetryEventDetails, Websocket } from "./websocket";
|
|
4
|
-
export declare class WsBuilder {
|
|
5
|
-
private readonly url;
|
|
6
|
-
private protocols?;
|
|
7
|
-
private backoff?;
|
|
8
|
-
private buffer?;
|
|
9
|
-
private onOpenChain?;
|
|
10
|
-
private onCloseChain?;
|
|
11
|
-
private onErrorChain?;
|
|
12
|
-
private onMessageChain?;
|
|
13
|
-
private onRetryChain?;
|
|
14
|
-
private ws?;
|
|
15
|
-
constructor(url: string);
|
|
16
|
-
withProtocols(p: string | string[]): WsBuilder;
|
|
17
|
-
withBackoff(backoff: Backoff): WsBuilder;
|
|
18
|
-
withBuffer(buffer: Buffer<any>): WsBuilder;
|
|
19
|
-
onOpen(fn: (instance: Websocket, ev: Event) => any): WsBuilder;
|
|
20
|
-
onClose(fn: (instance: Websocket, ev: CloseEvent) => any): WsBuilder;
|
|
21
|
-
onError(fn: (instance: Websocket, ev: Event) => any): WsBuilder;
|
|
22
|
-
onMessage(fn: (instance: Websocket, ev: MessageEvent) => any): WsBuilder;
|
|
23
|
-
onRetry(fn: (instance: Websocket, ev: CustomEvent<RetryEventDetails>) => any): WsBuilder;
|
|
24
|
-
/**
|
|
25
|
-
* Multiple calls to build() will always return the same websocket-instance.
|
|
26
|
-
*/
|
|
27
|
-
build(): Websocket;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=wsbuilder.d.ts.map
|
package/lib/wsbuilder.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wsbuilder.d.ts","sourceRoot":"","sources":["../src/wsbuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,iBAAiB,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAE1E,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAA2D;IAC1E,OAAO,CAAC,WAAW,CAAC,CAA0C;IAC9D,OAAO,CAAC,YAAY,CAAC,CAA+C;IACpE,OAAO,CAAC,YAAY,CAAC,CAA0C;IAC/D,OAAO,CAAC,cAAc,CAAC,CAAiD;IACxE,OAAO,CAAC,YAAY,CAAC,CAAmE;IACxF,OAAO,CAAC,EAAE,CAAC,CAAY;gBAEX,GAAG,EAAE,MAAM;IAIhB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAK9C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAKxC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAK1C,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,GAAG,SAAS;IAU9D,OAAO,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,KAAK,GAAG,GAAG,SAAS;IAUpE,OAAO,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,GAAG,SAAS;IAU/D,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,GAAG,GAAG,SAAS;IAUxE,OAAO,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,CAAC,iBAAiB,CAAC,KAAK,GAAG,GAAG,SAAS;IAU/F;;OAEG;IACI,KAAK,IAAI,SAAS;CAgB5B"}
|
package/lib/wsbuilder.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WsBuilder = void 0;
|
|
4
|
-
var websocket_1 = require("./websocket");
|
|
5
|
-
var WsBuilder = /** @class */ (function () {
|
|
6
|
-
function WsBuilder(url) {
|
|
7
|
-
this.url = url;
|
|
8
|
-
}
|
|
9
|
-
WsBuilder.prototype.withProtocols = function (p) {
|
|
10
|
-
this.protocols = p;
|
|
11
|
-
return this;
|
|
12
|
-
};
|
|
13
|
-
WsBuilder.prototype.withBackoff = function (backoff) {
|
|
14
|
-
this.backoff = backoff;
|
|
15
|
-
return this;
|
|
16
|
-
};
|
|
17
|
-
WsBuilder.prototype.withBuffer = function (buffer) {
|
|
18
|
-
this.buffer = buffer;
|
|
19
|
-
return this;
|
|
20
|
-
};
|
|
21
|
-
WsBuilder.prototype.onOpen = function (fn) {
|
|
22
|
-
var onOpen = this.onOpenChain;
|
|
23
|
-
this.onOpenChain = function (instance, ev2) {
|
|
24
|
-
fn(instance, ev2);
|
|
25
|
-
if (onOpen !== undefined)
|
|
26
|
-
onOpen(instance, ev2);
|
|
27
|
-
};
|
|
28
|
-
return this;
|
|
29
|
-
};
|
|
30
|
-
WsBuilder.prototype.onClose = function (fn) {
|
|
31
|
-
var onClose = this.onCloseChain;
|
|
32
|
-
this.onCloseChain = function (instance, ev2) {
|
|
33
|
-
fn(instance, ev2);
|
|
34
|
-
if (onClose !== undefined)
|
|
35
|
-
onClose(instance, ev2);
|
|
36
|
-
};
|
|
37
|
-
return this;
|
|
38
|
-
};
|
|
39
|
-
WsBuilder.prototype.onError = function (fn) {
|
|
40
|
-
var onError = this.onErrorChain;
|
|
41
|
-
this.onErrorChain = function (instance, ev2) {
|
|
42
|
-
fn(instance, ev2);
|
|
43
|
-
if (onError !== undefined)
|
|
44
|
-
onError(instance, ev2);
|
|
45
|
-
};
|
|
46
|
-
return this;
|
|
47
|
-
};
|
|
48
|
-
WsBuilder.prototype.onMessage = function (fn) {
|
|
49
|
-
var onMessage = this.onMessageChain;
|
|
50
|
-
this.onMessageChain = function (instance, ev2) {
|
|
51
|
-
fn(instance, ev2);
|
|
52
|
-
if (onMessage !== undefined)
|
|
53
|
-
onMessage(instance, ev2);
|
|
54
|
-
};
|
|
55
|
-
return this;
|
|
56
|
-
};
|
|
57
|
-
WsBuilder.prototype.onRetry = function (fn) {
|
|
58
|
-
var onRetry = this.onRetryChain;
|
|
59
|
-
this.onRetryChain = function (instance, ev2) {
|
|
60
|
-
fn(instance, ev2);
|
|
61
|
-
if (onRetry !== undefined)
|
|
62
|
-
onRetry(instance, ev2);
|
|
63
|
-
};
|
|
64
|
-
return this;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* Multiple calls to build() will always return the same websocket-instance.
|
|
68
|
-
*/
|
|
69
|
-
WsBuilder.prototype.build = function () {
|
|
70
|
-
if (this.ws !== undefined)
|
|
71
|
-
return this.ws;
|
|
72
|
-
this.ws = new websocket_1.Websocket(this.url, this.protocols, this.buffer, this.backoff);
|
|
73
|
-
if (this.onOpenChain !== undefined)
|
|
74
|
-
this.ws.addEventListener(websocket_1.WebsocketEvents.open, this.onOpenChain);
|
|
75
|
-
if (this.onCloseChain !== undefined)
|
|
76
|
-
this.ws.addEventListener(websocket_1.WebsocketEvents.close, this.onCloseChain);
|
|
77
|
-
if (this.onErrorChain !== undefined)
|
|
78
|
-
this.ws.addEventListener(websocket_1.WebsocketEvents.error, this.onErrorChain);
|
|
79
|
-
if (this.onMessageChain !== undefined)
|
|
80
|
-
this.ws.addEventListener(websocket_1.WebsocketEvents.message, this.onMessageChain);
|
|
81
|
-
if (this.onRetryChain !== undefined)
|
|
82
|
-
this.ws.addEventListener(websocket_1.WebsocketEvents.retry, this.onRetryChain);
|
|
83
|
-
return this.ws;
|
|
84
|
-
};
|
|
85
|
-
return WsBuilder;
|
|
86
|
-
}());
|
|
87
|
-
exports.WsBuilder = WsBuilder;
|
|
88
|
-
//# sourceMappingURL=wsbuilder.js.map
|
package/lib/wsbuilder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wsbuilder.js","sourceRoot":"","sources":["../src/wsbuilder.ts"],"names":[],"mappings":"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"}
|
package/src/buffer/buffer.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Temporary container for generic elements.
|
|
3
|
-
*/
|
|
4
|
-
export interface Buffer<E> {
|
|
5
|
-
/**
|
|
6
|
-
* Length of the buffer, the count of elements
|
|
7
|
-
* that can be read from the buffer.
|
|
8
|
-
* @return the length of the buffer
|
|
9
|
-
*/
|
|
10
|
-
len(): number
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Capacity of the buffer, the total amount of
|
|
14
|
-
* elements the buffer can contain.
|
|
15
|
-
* @return the capacity of the buffer
|
|
16
|
-
*/
|
|
17
|
-
cap(): number
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Reads elements from the buffer.
|
|
21
|
-
* @param es array to read into from the buffer
|
|
22
|
-
* @return the count of elements that were read
|
|
23
|
-
*/
|
|
24
|
-
read(es: E[]): number
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Writes elements to the buffer.
|
|
28
|
-
* @param es array to write to the buffer
|
|
29
|
-
* @return the count of elements that were written
|
|
30
|
-
*/
|
|
31
|
-
write(es: E[]): number
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Applies a function to every element in the buffer.
|
|
35
|
-
* @param fn the function to apply to every element
|
|
36
|
-
* @return: the count of elements that were used
|
|
37
|
-
*/
|
|
38
|
-
forEach(fn: (e: E) => any): number
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Clears the buffer. This effectively removes all
|
|
42
|
-
* items in the buffer.
|
|
43
|
-
*/
|
|
44
|
-
clear(): void
|
|
45
|
-
}
|
package/src/buffer/lrubuffer.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import {Buffer} from "./buffer";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* LRUBuffer is a buffer that keeps the last n elements. When it is
|
|
5
|
-
* full and written to, the oldest element in the buffer will be
|
|
6
|
-
* replaced. When reading from the LRUBuffer, elements are returned
|
|
7
|
-
* in FIFO-order (queue).
|
|
8
|
-
*
|
|
9
|
-
* LRUBuffer has linear space- and time-requirements. Internally
|
|
10
|
-
* an array is used as a circular-buffer. All memory is allocated
|
|
11
|
-
* on initialization.
|
|
12
|
-
*/
|
|
13
|
-
export class LRUBuffer<E> implements Buffer<E> {
|
|
14
|
-
private readonly buffer: E[];
|
|
15
|
-
private writePtr: number = 0;
|
|
16
|
-
private wrapped: boolean = false;
|
|
17
|
-
|
|
18
|
-
constructor(len: number) {
|
|
19
|
-
this.buffer = Array<E>(len);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
len(): number {
|
|
23
|
-
return this.wrapped ? this.buffer.length : this.writePtr;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
cap(): number {
|
|
27
|
-
return this.buffer.length;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
read(es: E[]): number {
|
|
31
|
-
if (es === null || es === undefined || es.length === 0 || this.buffer.length === 0)
|
|
32
|
-
return 0;
|
|
33
|
-
if (this.writePtr === 0 && !this.wrapped)
|
|
34
|
-
return 0;
|
|
35
|
-
const first = this.wrapped ? this.writePtr : 0;
|
|
36
|
-
const last = (first - 1) < 0 ?
|
|
37
|
-
this.buffer.length - 1 :
|
|
38
|
-
first - 1;
|
|
39
|
-
for (let i = 0; i < es.length; i++) {
|
|
40
|
-
let r = (first + i) % this.buffer.length;
|
|
41
|
-
es[i] = this.buffer[r];
|
|
42
|
-
if (r === last)
|
|
43
|
-
return i + 1;
|
|
44
|
-
}
|
|
45
|
-
return es.length;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
write(es: E[]): number {
|
|
49
|
-
if (es === null || es === undefined || es.length === 0 || this.buffer.length === 0)
|
|
50
|
-
return 0;
|
|
51
|
-
const start = es.length > this.buffer.length ? es.length - this.buffer.length : 0;
|
|
52
|
-
for (let i = 0; i < es.length - start; i++) {
|
|
53
|
-
this.buffer[this.writePtr] = es[start + i];
|
|
54
|
-
this.writePtr = (this.writePtr + 1) % this.buffer.length;
|
|
55
|
-
if (this.writePtr === 0)
|
|
56
|
-
this.wrapped = true;
|
|
57
|
-
}
|
|
58
|
-
return es.length;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
forEach(fn: (e: E) => any): number {
|
|
62
|
-
if (this.writePtr === 0 && !this.wrapped)
|
|
63
|
-
return 0;
|
|
64
|
-
let cur = this.wrapped ? this.writePtr : 0;
|
|
65
|
-
const last = this.wrapped ? (cur - 1) < 0 ? this.buffer.length - 1 : cur - 1 : this.writePtr - 1;
|
|
66
|
-
const len = this.len();
|
|
67
|
-
while (true) {
|
|
68
|
-
fn(this.buffer[cur]);
|
|
69
|
-
if (cur === last)
|
|
70
|
-
break;
|
|
71
|
-
cur = (cur + 1) % this.buffer.length;
|
|
72
|
-
}
|
|
73
|
-
return len;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
clear(): void {
|
|
77
|
-
this.writePtr = 0;
|
|
78
|
-
this.wrapped = false;
|
|
79
|
-
}
|
|
80
|
-
}
|
package/src/buffer/timebuffer.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import {Buffer} from "./buffer";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* TimeBuffer keeps the elements that were written to the buffer
|
|
5
|
-
* within maxAge milliseconds. For example, to keep items in the
|
|
6
|
-
* buffer that are less than a minute old, create the buffer with
|
|
7
|
-
* maxAge equal to 60.000.
|
|
8
|
-
*
|
|
9
|
-
* When reading from the TimeBuffer, elements will be returned
|
|
10
|
-
* in FIFO-order (queue).
|
|
11
|
-
*/
|
|
12
|
-
export class TimeBuffer<E> implements Buffer<E> {
|
|
13
|
-
private readonly maxAge: number;
|
|
14
|
-
private tail?: elementWithTimestamp<E>;
|
|
15
|
-
private head?: elementWithTimestamp<E>;
|
|
16
|
-
|
|
17
|
-
constructor(maxAge: number) {
|
|
18
|
-
this.maxAge = maxAge;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
cap(): number {
|
|
22
|
-
return Number.POSITIVE_INFINITY;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
len(): number {
|
|
26
|
-
this.forwardTail();
|
|
27
|
-
let cur = this.tail;
|
|
28
|
-
let i = 0;
|
|
29
|
-
while (cur !== undefined) {
|
|
30
|
-
i++;
|
|
31
|
-
cur = cur.n;
|
|
32
|
-
}
|
|
33
|
-
return i;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
read(es: E[]): number {
|
|
37
|
-
this.forwardTail();
|
|
38
|
-
if (es.length === 0)
|
|
39
|
-
return 0;
|
|
40
|
-
let cur = this.tail;
|
|
41
|
-
let i = 0;
|
|
42
|
-
while (cur !== undefined) {
|
|
43
|
-
es[i++] = cur.e;
|
|
44
|
-
if (i === es.length)
|
|
45
|
-
break;
|
|
46
|
-
cur = cur.n;
|
|
47
|
-
}
|
|
48
|
-
return i;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
write(es: E[]): number {
|
|
52
|
-
for (let i = 0; i < es.length; i++)
|
|
53
|
-
this.putElement(es[i]);
|
|
54
|
-
return es.length;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
forEach(fn: (e: E) => any): number {
|
|
58
|
-
this.forwardTail();
|
|
59
|
-
let cur = this.tail;
|
|
60
|
-
let i = 0;
|
|
61
|
-
while (cur !== undefined) {
|
|
62
|
-
fn(cur.e);
|
|
63
|
-
i++;
|
|
64
|
-
cur = cur.n;
|
|
65
|
-
}
|
|
66
|
-
return i;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private putElement(e: E) {
|
|
70
|
-
const newElement = {e, t: Date.now(), n: undefined} as elementWithTimestamp<E>;
|
|
71
|
-
if (this.tail === undefined)
|
|
72
|
-
this.tail = newElement;
|
|
73
|
-
if (this.head === undefined)
|
|
74
|
-
this.head = newElement
|
|
75
|
-
else {
|
|
76
|
-
this.head.n = newElement;
|
|
77
|
-
this.head = newElement;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
private forwardTail() {
|
|
82
|
-
if (this.tail === undefined)
|
|
83
|
-
return;
|
|
84
|
-
const d = Date.now();
|
|
85
|
-
while (d - this.tail.t > this.maxAge) {
|
|
86
|
-
if (this.tail === this.head) {
|
|
87
|
-
this.tail = undefined;
|
|
88
|
-
this.head = undefined;
|
|
89
|
-
} else
|
|
90
|
-
this.tail = this.tail.n;
|
|
91
|
-
if (this.tail === undefined)
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
clear(): void {
|
|
97
|
-
// TODO
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
type elementWithTimestamp<E> = {
|
|
102
|
-
e: E,
|
|
103
|
-
t: number,
|
|
104
|
-
n?: elementWithTimestamp<E>
|
|
105
|
-
}
|