extra-native-websocket 0.2.0 → 0.3.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/README.md CHANGED
@@ -17,6 +17,8 @@ class WebSocketError extends CustomError {
17
17
 
18
18
  ### ExtraNativeWebSocket
19
19
  ```ts
20
+ import { Emitter } from '@blackglory/structures'
21
+
20
22
  enum BinaryType {
21
23
  Blob
22
24
  , ArrayBuffer
@@ -29,7 +31,12 @@ enum State {
29
31
  , Closing
30
32
  }
31
33
 
32
- class ExtraNativeWebSocket {
34
+ class ExtraNativeWebSocket extends Emitter<{
35
+ message: [event: MessageEvent]
36
+ close: [event: CloseEvent]
37
+ error: [event: Event]
38
+ open: [event: Event]
39
+ }> {
33
40
  constructor(createWebSocket: () => WebSocket)
34
41
 
35
42
  getState(): State
@@ -42,16 +49,6 @@ class ExtraNativeWebSocket {
42
49
  connect(): Promise<void>
43
50
  close(code?: number, reason?: string): Promise<void>
44
51
  send(data: unknown): void
45
-
46
- addEventListener(event: 'message', listener: (event: MessageEvent) => void): void
47
- addEventListener(event: 'close', listener: (event: CloseEvent) => void): void
48
- addEventListener(event: 'error', listener: (event: Event) => void): void
49
- addEventListener(event: 'open', listener: (event: Event) => void): void
50
-
51
- removeEventListener(event: 'message', listener: (event: MessageEvent) => void): void
52
- removeEventListener(event: 'close', listener: (event: CloseEvent) => void): void
53
- removeEventListener(event: 'error', listener: (event: Event) => void): void
54
- removeEventListener(event: 'open', listener: (event: Event) => void): void
55
52
  }
56
53
  ```
57
54
 
@@ -59,3 +56,16 @@ class ExtraNativeWebSocket {
59
56
  ```ts
60
57
  function autoReconnect(ws: ExtraNativeWebSocket, timeout?: number): () => void
61
58
  ```
59
+
60
+ ### autoReconnectWithExponentialBackOff
61
+ ```ts
62
+ function autoReonnectWithExponentialBackOff(
63
+ ws: ExtraWebSocket
64
+ , options: {
65
+ baseTimeout: number
66
+ maxTimeout?: number
67
+ factor?: number = 2
68
+ jitter?: boolean = true
69
+ }
70
+ ): () => void
71
+ ```
@@ -1,4 +1,4 @@
1
- import { Queue } from '@blackglory/structures';
1
+ import { Queue, Emitter } from '@blackglory/structures';
2
2
  export declare enum BinaryType {
3
3
  Blob = 0,
4
4
  ArrayBuffer = 1
@@ -9,24 +9,20 @@ export declare enum State {
9
9
  Connected = 2,
10
10
  Closing = 3
11
11
  }
12
- export declare class ExtraNativeWebSocket {
12
+ export declare class ExtraNativeWebSocket extends Emitter<{
13
+ message: [event: MessageEvent];
14
+ close: [event: CloseEvent];
15
+ error: [event: Event];
16
+ open: [event: Event];
17
+ }> {
13
18
  private createWebSocket;
14
19
  private instance?;
15
- private eventListeners;
16
20
  private binaryType;
17
21
  protected unsentMessages: Queue<string | ArrayBufferLike | ArrayBufferView | Blob>;
18
22
  constructor(createWebSocket: () => WebSocket);
19
23
  getState(): State;
20
24
  getBinaryType(): BinaryType;
21
25
  setBinaryType(val: BinaryType): void;
22
- addEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
23
- addEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
24
- addEventListener(event: 'error', listener: (event: Event) => void): void;
25
- addEventListener(event: 'open', listener: (event: Event) => void): void;
26
- removeEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
27
- removeEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
28
- removeEventListener(event: 'error', listener: (event: Event) => void): void;
29
- removeEventListener(event: 'open', listener: (event: Event) => void): void;
30
26
  connect(): Promise<void>;
31
27
  close(code?: number, reason?: string): Promise<void>;
32
28
  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
@@ -23,10 +23,10 @@ var ReadyState;
23
23
  ReadyState[ReadyState["CLOSING"] = 2] = "CLOSING";
24
24
  ReadyState[ReadyState["CLOSED"] = 3] = "CLOSED";
25
25
  })(ReadyState || (ReadyState = {}));
26
- class ExtraNativeWebSocket {
26
+ class ExtraNativeWebSocket extends structures_1.Emitter {
27
27
  constructor(createWebSocket) {
28
+ super();
28
29
  this.createWebSocket = createWebSocket;
29
- this.eventListeners = new Map();
30
30
  this.binaryType = BinaryType.Blob;
31
31
  this.unsentMessages = new structures_1.Queue();
32
32
  }
@@ -61,38 +61,16 @@ class ExtraNativeWebSocket {
61
61
  }
62
62
  }
63
63
  }
64
- addEventListener(event, listener) {
65
- var _a;
66
- if (!this.eventListeners.has(event)) {
67
- this.eventListeners.set(event, new Set());
68
- }
69
- const listeners = this.eventListeners.get(event);
70
- listeners.add(listener);
71
- (_a = this.instance) === null || _a === void 0 ? void 0 : _a.addEventListener(event, listener);
72
- }
73
- removeEventListener(event, listener) {
74
- var _a;
75
- if (!this.eventListeners.has(event)) {
76
- this.eventListeners.set(event, new Set());
77
- }
78
- const listeners = this.eventListeners.get(event);
79
- listeners.delete(listener);
80
- if (listeners.size === 0) {
81
- this.eventListeners.delete(event);
82
- }
83
- (_a = this.instance) === null || _a === void 0 ? void 0 : _a.removeEventListener(event, listener);
84
- }
85
64
  connect() {
86
65
  return new Promise((resolve, reject) => {
87
66
  (0, prelude_1.assert)(this.getState() === State.Closed, 'WebSocket is not closed');
88
67
  const self = this;
89
68
  const ws = this.instance = this.createWebSocket();
90
69
  ws.addEventListener('error', errorListener, { once: true });
91
- for (const [event, listeners] of this.eventListeners) {
92
- for (const listener of listeners) {
93
- ws.addEventListener(event, listener);
94
- }
95
- }
70
+ ws.addEventListener('open', event => this.emit('open', event));
71
+ ws.addEventListener('close', event => this.emit('close', event));
72
+ ws.addEventListener('message', event => this.emit('message', event));
73
+ ws.addEventListener('error', event => this.emit('error', event));
96
74
  this.setBinaryType(this.binaryType);
97
75
  ws.addEventListener('open', openListener, { once: true });
98
76
  function errorListener(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ExtraNativeWebSocket } from "../extra-native-websocket";
2
+ export declare function autoReconnectWithExponentialBackOff(ws: ExtraNativeWebSocket, { baseTimeout, maxTimeout, factor, jitter }: {
3
+ baseTimeout: number;
4
+ maxTimeout?: number;
5
+ factor?: number;
6
+ jitter?: boolean;
7
+ }): () => void;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.autoReconnectWithExponentialBackOff = void 0;
13
+ const extra_native_websocket_1 = require("../extra-native-websocket");
14
+ const extra_timers_1 = require("extra-timers");
15
+ const prelude_1 = require("@blackglory/prelude");
16
+ const extra_promise_1 = require("extra-promise");
17
+ const wait_for_1 = require("@blackglory/wait-for");
18
+ function autoReconnectWithExponentialBackOff(ws, { baseTimeout, maxTimeout = Infinity, factor = 2, jitter = true }) {
19
+ const controller = new AbortController();
20
+ const removeErrorListener = ws.on('error', prelude_1.pass);
21
+ let removeCloseListener = ws.on('close', closeListener);
22
+ return () => {
23
+ controller.abort();
24
+ removeCloseListener();
25
+ removeErrorListener();
26
+ };
27
+ function closeListener() {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ removeCloseListener();
30
+ let retries = 0;
31
+ while (true) {
32
+ if (controller.signal.aborted)
33
+ return;
34
+ yield (0, extra_promise_1.delay)((0, extra_timers_1.calculateExponentialBackoffTimeout)({
35
+ retries,
36
+ baseTimeout,
37
+ maxTimeout,
38
+ factor,
39
+ jitter
40
+ }));
41
+ if (controller.signal.aborted)
42
+ return;
43
+ try {
44
+ yield (0, wait_for_1.waitForFunction)(() => ws.getState() === extra_native_websocket_1.State.Closed);
45
+ yield ws.connect();
46
+ if (controller.signal.aborted)
47
+ return;
48
+ removeCloseListener = ws.on('close', closeListener);
49
+ break;
50
+ }
51
+ catch (_a) {
52
+ retries++;
53
+ (0, prelude_1.pass)();
54
+ }
55
+ }
56
+ });
57
+ }
58
+ }
59
+ exports.autoReconnectWithExponentialBackOff = autoReconnectWithExponentialBackOff;
60
+ //# sourceMappingURL=auto-reconnect-with-exponential-back-off.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-reconnect-with-exponential-back-off.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect-with-exponential-back-off.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAyE;AACzE,+CAAiE;AACjE,iDAA0C;AAC1C,iDAAqC;AACrC,mDAAsD;AAEtD,SAAgB,mCAAmC,CACjD,EAAwB,EACxB,EACE,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAGxC,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,cAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,SAAe,aAAa;;YAC1B,mBAAmB,EAAE,CAAA;YAErB,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,OAAO,IAAI,EAAE;gBACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,MAAM,IAAA,qBAAK,EAAC,IAAA,iDAAkC,EAAC;oBAC7C,OAAO;oBACP,WAAW;oBACX,UAAU;oBACV,MAAM;oBACN,MAAM;iBACP,CAAC,CAAC,CAAA;gBACH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,IAAI;oBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;oBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;oBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;wBAAE,OAAM;oBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;oBACnD,MAAK;iBACN;gBAAC,WAAM;oBACN,OAAO,EAAE,CAAA;oBACT,IAAA,cAAI,GAAE,CAAA;iBACP;aACF;QACH,CAAC;KAAA;AACH,CAAC;AAvDD,kFAuDC"}
@@ -10,26 +10,39 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.autoReconnect = void 0;
13
+ const extra_native_websocket_1 = require("../extra-native-websocket");
13
14
  const extra_promise_1 = require("extra-promise");
14
- const prelude_1 = require("@blackglory/prelude");
15
15
  const extra_abort_1 = require("extra-abort");
16
- function autoReconnect(ws, timeout) {
16
+ const prelude_1 = require("@blackglory/prelude");
17
+ const wait_for_1 = require("@blackglory/wait-for");
18
+ function autoReconnect(ws, timeout = 0) {
17
19
  const controller = new extra_abort_1.AbortController();
18
- ws.addEventListener('close', listener);
20
+ let removeCloseListener = ws.on('close', closeListener);
19
21
  return () => {
20
22
  controller.abort();
21
- ws.removeEventListener('close', listener);
23
+ removeCloseListener();
22
24
  };
23
- function listener() {
25
+ function closeListener() {
24
26
  return __awaiter(this, void 0, void 0, function* () {
25
- if (controller.signal.aborted)
26
- return;
27
- if ((0, prelude_1.isntUndefined)(timeout)) {
27
+ removeCloseListener();
28
+ while (true) {
29
+ if (controller.signal.aborted)
30
+ return;
28
31
  yield (0, extra_promise_1.delay)(timeout);
29
32
  if (controller.signal.aborted)
30
33
  return;
34
+ try {
35
+ yield (0, wait_for_1.waitForFunction)(() => ws.getState() === extra_native_websocket_1.State.Closed);
36
+ yield ws.connect();
37
+ if (controller.signal.aborted)
38
+ return;
39
+ removeCloseListener = ws.on('close', closeListener);
40
+ break;
41
+ }
42
+ catch (_a) {
43
+ (0, prelude_1.pass)();
44
+ }
31
45
  }
32
- yield ws.connect();
33
46
  });
34
47
  }
35
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iDAAqC;AACrC,iDAAmD;AACnD,6CAA6C;AAE7C,SAAgB,aAAa,CAAC,EAAwB,EAAE,OAAgB;IACtE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACtC,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,SAAe,QAAQ;;YACrB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,EAAE;gBAC1B,MAAM,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAA;gBACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;aACtC;YAED,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;QACpB,CAAC;KAAA;AACH,CAAC;AAnBD,sCAmBC"}
1
+ {"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAyE;AACzE,iDAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAC1C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,EAAwB,EAAE,UAAkB,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,SAAe,aAAa;;YAC1B,mBAAmB,EAAE,CAAA;YAErB,OAAO,IAAI,EAAE;gBACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,MAAM,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAA;gBACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,IAAI;oBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;oBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;oBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;wBAAE,OAAM;oBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;oBACnD,MAAK;iBACN;gBAAC,WAAM;oBACN,IAAA,cAAI,GAAE,CAAA;iBACP;aACF;QACH,CAAC;KAAA;AACH,CAAC;AA/BD,sCA+BC"}
@@ -1 +1,2 @@
1
1
  export * from './auto-reconnect';
2
+ export * from './auto-reconnect-with-exponential-back-off';
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./auto-reconnect"), exports);
18
+ __exportStar(require("./auto-reconnect-with-exponential-back-off"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,6EAA0D"}
@@ -1,4 +1,4 @@
1
- import { Queue } from '@blackglory/structures';
1
+ import { Queue, Emitter } from '@blackglory/structures';
2
2
  export declare enum BinaryType {
3
3
  Blob = 0,
4
4
  ArrayBuffer = 1
@@ -9,24 +9,20 @@ export declare enum State {
9
9
  Connected = 2,
10
10
  Closing = 3
11
11
  }
12
- export declare class ExtraNativeWebSocket {
12
+ export declare class ExtraNativeWebSocket extends Emitter<{
13
+ message: [event: MessageEvent];
14
+ close: [event: CloseEvent];
15
+ error: [event: Event];
16
+ open: [event: Event];
17
+ }> {
13
18
  private createWebSocket;
14
19
  private instance?;
15
- private eventListeners;
16
20
  private binaryType;
17
21
  protected unsentMessages: Queue<string | ArrayBufferLike | ArrayBufferView | Blob>;
18
22
  constructor(createWebSocket: () => WebSocket);
19
23
  getState(): State;
20
24
  getBinaryType(): BinaryType;
21
25
  setBinaryType(val: BinaryType): void;
22
- addEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
23
- addEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
24
- addEventListener(event: 'error', listener: (event: Event) => void): void;
25
- addEventListener(event: 'open', listener: (event: Event) => void): void;
26
- removeEventListener(event: 'message', listener: (event: MessageEvent) => void): void;
27
- removeEventListener(event: 'close', listener: (event: CloseEvent) => void): void;
28
- removeEventListener(event: 'error', listener: (event: Event) => void): void;
29
- removeEventListener(event: 'open', listener: (event: Event) => void): void;
30
26
  connect(): Promise<void>;
31
27
  close(code?: number, reason?: string): Promise<void>;
32
28
  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
@@ -23,10 +23,10 @@ var ReadyState;
23
23
  ReadyState[ReadyState["CLOSING"] = 2] = "CLOSING";
24
24
  ReadyState[ReadyState["CLOSED"] = 3] = "CLOSED";
25
25
  })(ReadyState || (ReadyState = {}));
26
- class ExtraNativeWebSocket {
26
+ class ExtraNativeWebSocket extends structures_1.Emitter {
27
27
  constructor(createWebSocket) {
28
+ super();
28
29
  this.createWebSocket = createWebSocket;
29
- this.eventListeners = new Map();
30
30
  this.binaryType = BinaryType.Blob;
31
31
  this.unsentMessages = new structures_1.Queue();
32
32
  }
@@ -61,38 +61,16 @@ class ExtraNativeWebSocket {
61
61
  }
62
62
  }
63
63
  }
64
- addEventListener(event, listener) {
65
- var _a;
66
- if (!this.eventListeners.has(event)) {
67
- this.eventListeners.set(event, new Set());
68
- }
69
- const listeners = this.eventListeners.get(event);
70
- listeners.add(listener);
71
- (_a = this.instance) === null || _a === void 0 ? void 0 : _a.addEventListener(event, listener);
72
- }
73
- removeEventListener(event, listener) {
74
- var _a;
75
- if (!this.eventListeners.has(event)) {
76
- this.eventListeners.set(event, new Set());
77
- }
78
- const listeners = this.eventListeners.get(event);
79
- listeners.delete(listener);
80
- if (listeners.size === 0) {
81
- this.eventListeners.delete(event);
82
- }
83
- (_a = this.instance) === null || _a === void 0 ? void 0 : _a.removeEventListener(event, listener);
84
- }
85
64
  connect() {
86
65
  return new Promise((resolve, reject) => {
87
66
  (0, prelude_1.assert)(this.getState() === State.Closed, 'WebSocket is not closed');
88
67
  const self = this;
89
68
  const ws = this.instance = this.createWebSocket();
90
69
  ws.addEventListener('error', errorListener, { once: true });
91
- for (const [event, listeners] of this.eventListeners) {
92
- for (const listener of listeners) {
93
- ws.addEventListener(event, listener);
94
- }
95
- }
70
+ ws.addEventListener('open', event => this.emit('open', event));
71
+ ws.addEventListener('close', event => this.emit('close', event));
72
+ ws.addEventListener('message', event => this.emit('message', event));
73
+ ws.addEventListener('error', event => this.emit('error', event));
96
74
  this.setBinaryType(this.binaryType);
97
75
  ws.addEventListener('open', openListener, { once: true });
98
76
  function errorListener(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,uDAAkD;AAClD,uDAA8C;AAE9C,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2CAAI,CAAA;IACJ,yDAAW,CAAA;AACb,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAED,IAAY,KAKX;AALD,WAAY,KAAK;IACf,qCAAM,CAAA;IACN,6CAAU,CAAA;IACV,2CAAS,CAAA;IACT,uCAAO,CAAA;AACT,CAAC,EALW,KAAK,GAAL,aAAK,KAAL,aAAK,QAKhB;AAED,IAAK,UAKJ;AALD,WAAK,UAAU;IACb,uDAAc,CAAA;IACd,2CAAQ,CAAA;IACR,iDAAW,CAAA;IACX,+CAAU,CAAA;AACZ,CAAC,EALI,UAAU,KAAV,UAAU,QAKd;AAED,MAAa,oBAAoB;IAM/B,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAJ5C,mBAAc,GAA+B,IAAI,GAAG,EAAE,CAAA;QACtD,eAAU,GAAe,UAAU,CAAC,IAAI,CAAA;QACtC,mBAAc,GAAG,IAAI,kBAAK,EAAqD,CAAA;IAElC,CAAC;IAExD,QAAQ;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAChC,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,CAAA;gBACnD,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,SAAS,CAAA;gBAC5C,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAA;gBAC7C,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,CAAA;gBAC3C,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;aAC1C;SACF;aAAM;YACL,OAAO,KAAK,CAAC,MAAM,CAAA;SACpB;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,aAAa,CAAC,GAAe;QAC3B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAA;QAErB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,QAAQ,GAAG,EAAE;gBACX,KAAK,UAAU,CAAC,IAAI;oBAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAA;oBACjC,MAAK;gBACP,KAAK,UAAU,CAAC,WAAW;oBACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAA;oBACxC,MAAK;gBACP,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;aAChD;SACF;IACH,CAAC;IAMD,gBAAgB,CAAC,KAAa,EAAE,QAAkB;;QAChD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;SAC1C;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QACjD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEvB,MAAA,IAAI,CAAC,QAAQ,0CAAE,gBAAgB,CAAC,KAAY,EAAE,QAAe,CAAC,CAAA;IAChE,CAAC;IAMD,mBAAmB,CAAC,KAAa,EAAE,QAAkB;;QACnD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;SAC1C;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QACjD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SAClC;QAED,MAAA,IAAI,CAAC,QAAQ,0CAAE,mBAAmB,CAAC,KAAY,EAAE,QAAe,CAAC,CAAA;IACnE,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAA;YAEnE,MAAM,IAAI,GAAG,IAAI,CAAA;YACjB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;YAEjD,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,EAAE,CAAC,gBAAgB,CAAC,KAAY,EAAE,QAAe,CAAC,CAAA;iBACnD;aACF;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAEnC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAEzD,SAAS,aAAa,CAAC,KAAY;gBACjC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7D,CAAC;YAED,SAAS,aAAa,CAAC,KAAiB;gBACtC,MAAM,CAAC,IAAI,gCAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YACtD,CAAC;YAED,SAAS,YAAY,CAAC,KAAY;gBAChC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBAC9C,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBAC9C,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG;oBACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAG,CAAC,CAAA;iBAC1C;gBACD,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAa,EAAE,MAAe;QAClC,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACjC,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAA;YAEjD,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACvB,KAAK,KAAK,CAAC,MAAM;oBACf,OAAO,EAAE,CAAA;oBACT,MAAK;gBACP,KAAK,KAAK,CAAC,OAAO;oBAChB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;oBACxE,MAAK;gBACP;oBACE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;oBACxE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aACpC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,IAAuD;QAC1D,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,SAAS,EAAE;YACvC,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC1B;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;SAClC;IACH,CAAC;CACF;AA5ID,oDA4IC"}
1
+ {"version":3,"file":"extra-native-websocket.js","sourceRoot":"","sources":["../../src/extra-native-websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ExtraNativeWebSocket } from "../extra-native-websocket";
2
+ export declare function autoReconnectWithExponentialBackOff(ws: ExtraNativeWebSocket, { baseTimeout, maxTimeout, factor, jitter }: {
3
+ baseTimeout: number;
4
+ maxTimeout?: number;
5
+ factor?: number;
6
+ jitter?: boolean;
7
+ }): () => void;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.autoReconnectWithExponentialBackOff = void 0;
4
+ const extra_native_websocket_1 = require("../extra-native-websocket");
5
+ const extra_timers_1 = require("extra-timers");
6
+ const prelude_1 = require("@blackglory/prelude");
7
+ const extra_promise_1 = require("extra-promise");
8
+ const wait_for_1 = require("@blackglory/wait-for");
9
+ function autoReconnectWithExponentialBackOff(ws, { baseTimeout, maxTimeout = Infinity, factor = 2, jitter = true }) {
10
+ const controller = new AbortController();
11
+ const removeErrorListener = ws.on('error', prelude_1.pass);
12
+ let removeCloseListener = ws.on('close', closeListener);
13
+ return () => {
14
+ controller.abort();
15
+ removeCloseListener();
16
+ removeErrorListener();
17
+ };
18
+ async function closeListener() {
19
+ removeCloseListener();
20
+ let retries = 0;
21
+ while (true) {
22
+ if (controller.signal.aborted)
23
+ return;
24
+ await (0, extra_promise_1.delay)((0, extra_timers_1.calculateExponentialBackoffTimeout)({
25
+ retries,
26
+ baseTimeout,
27
+ maxTimeout,
28
+ factor,
29
+ jitter
30
+ }));
31
+ if (controller.signal.aborted)
32
+ return;
33
+ try {
34
+ await (0, wait_for_1.waitForFunction)(() => ws.getState() === extra_native_websocket_1.State.Closed);
35
+ await ws.connect();
36
+ if (controller.signal.aborted)
37
+ return;
38
+ removeCloseListener = ws.on('close', closeListener);
39
+ break;
40
+ }
41
+ catch (_a) {
42
+ retries++;
43
+ (0, prelude_1.pass)();
44
+ }
45
+ }
46
+ }
47
+ }
48
+ exports.autoReconnectWithExponentialBackOff = autoReconnectWithExponentialBackOff;
49
+ //# sourceMappingURL=auto-reconnect-with-exponential-back-off.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-reconnect-with-exponential-back-off.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect-with-exponential-back-off.ts"],"names":[],"mappings":";;;AAAA,sEAAyE;AACzE,+CAAiE;AACjE,iDAA0C;AAC1C,iDAAqC;AACrC,mDAAsD;AAEtD,SAAgB,mCAAmC,CACjD,EAAwB,EACxB,EACE,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAGxC,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,cAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,mBAAmB,EAAE,CAAA;QAErB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE;YACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,IAAA,qBAAK,EAAC,IAAA,iDAAkC,EAAC;gBAC7C,OAAO;gBACP,WAAW;gBACX,UAAU;gBACV,MAAM;gBACN,MAAM;aACP,CAAC,CAAC,CAAA;YACH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI;gBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;gBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACnD,MAAK;aACN;YAAC,WAAM;gBACN,OAAO,EAAE,CAAA;gBACT,IAAA,cAAI,GAAE,CAAA;aACP;SACF;IACH,CAAC;AACH,CAAC;AAvDD,kFAuDC"}
@@ -1,25 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.autoReconnect = void 0;
4
+ const extra_native_websocket_1 = require("../extra-native-websocket");
4
5
  const extra_promise_1 = require("extra-promise");
5
- const prelude_1 = require("@blackglory/prelude");
6
6
  const extra_abort_1 = require("extra-abort");
7
- function autoReconnect(ws, timeout) {
7
+ const prelude_1 = require("@blackglory/prelude");
8
+ const wait_for_1 = require("@blackglory/wait-for");
9
+ function autoReconnect(ws, timeout = 0) {
8
10
  const controller = new extra_abort_1.AbortController();
9
- ws.addEventListener('close', listener);
11
+ let removeCloseListener = ws.on('close', closeListener);
10
12
  return () => {
11
13
  controller.abort();
12
- ws.removeEventListener('close', listener);
14
+ removeCloseListener();
13
15
  };
14
- async function listener() {
15
- if (controller.signal.aborted)
16
- return;
17
- if ((0, prelude_1.isntUndefined)(timeout)) {
16
+ async function closeListener() {
17
+ removeCloseListener();
18
+ while (true) {
19
+ if (controller.signal.aborted)
20
+ return;
18
21
  await (0, extra_promise_1.delay)(timeout);
19
22
  if (controller.signal.aborted)
20
23
  return;
24
+ try {
25
+ await (0, wait_for_1.waitForFunction)(() => ws.getState() === extra_native_websocket_1.State.Closed);
26
+ await ws.connect();
27
+ if (controller.signal.aborted)
28
+ return;
29
+ removeCloseListener = ws.on('close', closeListener);
30
+ break;
31
+ }
32
+ catch (_a) {
33
+ (0, prelude_1.pass)();
34
+ }
21
35
  }
22
- await ws.connect();
23
36
  }
24
37
  }
25
38
  exports.autoReconnect = autoReconnect;
@@ -1 +1 @@
1
- {"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;AACA,iDAAqC;AACrC,iDAAmD;AACnD,6CAA6C;AAE7C,SAAgB,aAAa,CAAC,EAAwB,EAAE,OAAgB;IACtE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACtC,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,KAAK,UAAU,QAAQ;QACrB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,OAAM;QAErC,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,EAAE;YAC1B,MAAM,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAA;YACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;SACtC;QAED,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;IACpB,CAAC;AACH,CAAC;AAnBD,sCAmBC"}
1
+ {"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../../src/utils/auto-reconnect.ts"],"names":[],"mappings":";;;AAAA,sEAAyE;AACzE,iDAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAC1C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,EAAwB,EAAE,UAAkB,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,6BAAe,EAAE,CAAA;IAExC,IAAI,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,mBAAmB,EAAE,CAAA;QAErB,OAAO,IAAI,EAAE;YACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAA;YACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI;gBACF,MAAM,IAAA,0BAAe,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,8BAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;gBAClB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBAErC,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACnD,MAAK;aACN;YAAC,WAAM;gBACN,IAAA,cAAI,GAAE,CAAA;aACP;SACF;IACH,CAAC;AACH,CAAC;AA/BD,sCA+BC"}
@@ -1 +1,2 @@
1
1
  export * from './auto-reconnect';
2
+ export * from './auto-reconnect-with-exponential-back-off';
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./auto-reconnect"), exports);
18
+ __exportStar(require("./auto-reconnect-with-exponential-back-off"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,6EAA0D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extra-native-websocket",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -34,31 +34,32 @@
34
34
  }
35
35
  },
36
36
  "devDependencies": {
37
- "@commitlint/cli": "^17.0.1",
38
- "@commitlint/config-conventional": "^17.0.0",
37
+ "@commitlint/cli": "^17.0.2",
38
+ "@commitlint/config-conventional": "^17.0.2",
39
39
  "@types/jest": "^27.5.1",
40
40
  "@types/ws": "^8.5.3",
41
- "@typescript-eslint/eslint-plugin": "^5.27.0",
42
- "@typescript-eslint/parser": "^5.27.0",
43
- "eslint": "^8.16.0",
41
+ "@typescript-eslint/eslint-plugin": "^5.27.1",
42
+ "@typescript-eslint/parser": "^5.27.1",
43
+ "eslint": "^8.17.0",
44
44
  "husky": "4",
45
- "jest": "^28.1.0",
46
- "jest-environment-jsdom": "^28.1.0",
45
+ "jest": "^28.1.1",
46
+ "jest-environment-jsdom": "^28.1.1",
47
47
  "npm-run-all": "^4.1.5",
48
48
  "return-style": "^1.0.0",
49
49
  "rimraf": "^3.0.2",
50
50
  "standard-version": "^9.5.0",
51
- "ts-jest": "^28.0.3",
51
+ "ts-jest": "^28.0.4",
52
52
  "ts-patch": "^2.0.1",
53
53
  "tslib": "^2.4.0",
54
- "typescript": "^4.7.2",
54
+ "typescript": "^4.7.3",
55
55
  "typescript-transform-paths": "^3.3.1",
56
56
  "ws": "^8.7.0"
57
57
  },
58
58
  "dependencies": {
59
59
  "@blackglory/errors": "^2.2.1",
60
60
  "@blackglory/prelude": "^0.1.1",
61
- "@blackglory/structures": "^0.5.1",
61
+ "@blackglory/structures": "^0.6.0",
62
+ "@blackglory/wait-for": "^0.5.0",
62
63
  "extra-abort": "^0.1.2",
63
64
  "extra-promise": "^2.0.0"
64
65
  }