extra-native-websocket 0.5.1 → 0.5.2

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.
@@ -2,6 +2,7 @@ import { assert } from '@blackglory/prelude';
2
2
  import { WebSocketError } from './websocket-error.js';
3
3
  import { Queue, Emitter } from '@blackglory/structures';
4
4
  import { SyncDestructor } from 'extra-defer';
5
+ import { assertNever } from 'assert-never';
5
6
  export var BinaryType;
6
7
  (function (BinaryType) {
7
8
  BinaryType[BinaryType["Blob"] = 0] = "Blob";
@@ -49,13 +50,15 @@ export class ExtraNativeWebSocket extends Emitter {
49
50
  this.binaryType = val;
50
51
  if (this.instance) {
51
52
  switch (val) {
52
- case BinaryType.Blob:
53
+ case BinaryType.Blob: {
53
54
  this.instance.binaryType = 'blob';
54
55
  break;
55
- case BinaryType.ArrayBuffer:
56
+ }
57
+ case BinaryType.ArrayBuffer: {
56
58
  this.instance.binaryType = 'arraybuffer';
57
59
  break;
58
- default: throw new Error('Unknown binary type');
60
+ }
61
+ default: assertNever(val, 'Unknown binary type');
59
62
  }
60
63
  }
61
64
  }
@@ -99,12 +102,16 @@ export class ExtraNativeWebSocket extends Emitter {
99
102
  assert(signal);
100
103
  destructor.execute();
101
104
  ws.close();
105
+ if (self.instance === ws)
106
+ self.instance = undefined;
102
107
  reject(signal.reason);
103
108
  }
104
109
  function errorListener(event) {
105
110
  ws.addEventListener('close', closeListener, { once: true });
106
111
  function closeListener(event) {
107
112
  destructor.execute();
113
+ if (self.instance === ws)
114
+ self.instance = undefined;
108
115
  reject(new WebSocketError(event.code, event.reason));
109
116
  }
110
117
  }
@@ -119,17 +126,28 @@ export class ExtraNativeWebSocket extends Emitter {
119
126
  }
120
127
  close(code, reason) {
121
128
  return new Promise(resolve => {
122
- assert(this.instance, 'WebSocket is not created');
129
+ const self = this;
130
+ const ws = this.instance;
131
+ if (!ws)
132
+ return resolve();
123
133
  switch (this.getState()) {
124
- case State.Closed:
134
+ case State.Closed: {
125
135
  resolve();
126
136
  break;
127
- case State.Closing:
128
- this.instance.addEventListener('close', () => resolve(), { once: true });
137
+ }
138
+ case State.Closing: {
139
+ ws.addEventListener('close', closeListener, { once: true });
129
140
  break;
130
- default:
131
- this.instance.addEventListener('close', () => resolve(), { once: true });
132
- this.instance.close(code, reason);
141
+ }
142
+ default: {
143
+ ws.addEventListener('close', closeListener, { once: true });
144
+ ws.close(code, reason);
145
+ }
146
+ }
147
+ function closeListener() {
148
+ if (self.instance === ws)
149
+ self.instance = undefined;
150
+ resolve();
133
151
  }
134
152
  });
135
153
  }
@@ -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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"}
@@ -40,7 +40,6 @@ export function autoReconnectWithExponentialBackOff(ws, { baseInterval, maxInter
40
40
  }
41
41
  catch (_a) {
42
42
  retries++;
43
- pass();
44
43
  }
45
44
  }
46
45
  }
@@ -1 +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,OAAO,EAAwB,KAAK,EAAE,qCAAsC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9E,MAAM,UAAU,mCAAmC,CACjD,EAAwB,EACxB,EACE,YAAY,EACZ,WAAW,GAAG,QAAQ,EACtB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd,EACD,cAAuB;IAEvB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAExC,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEzD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAElB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,KAAK,CAAC,kCAAkC,CAAC;gBAC7C,OAAO;gBACP,WAAW,EAAE,YAAY;gBACzB,UAAU,EAAE,WAAW;gBACvB,MAAM;gBACN,MAAM;aACP,CAAC,CAAC,CAAA;YACH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,CACd,gBAAgB,CAAC;oBACf,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC;oBAC/C,UAAU,CAAC,MAAM;iBAClB,CAAC,CACH,CAAA;gBAED,mBAAmB,EAAE,CAAA;gBACrB,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACrD,MAAK;YACP,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,EAAE,CAAA;gBACT,IAAI,EAAE,CAAA;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
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,OAAO,EAAwB,KAAK,EAAE,qCAAsC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9E,MAAM,UAAU,mCAAmC,CACjD,EAAwB,EACxB,EACE,YAAY,EACZ,WAAW,GAAG,QAAQ,EACtB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,EAMd,EACD,cAAuB;IAEvB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAExC,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEzD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAElB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,KAAK,CAAC,kCAAkC,CAAC;gBAC7C,OAAO;gBACP,WAAW,EAAE,YAAY;gBACzB,UAAU,EAAE,WAAW;gBACvB,MAAM;gBACN,MAAM;aACP,CAAC,CAAC,CAAA;YACH,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,CACd,gBAAgB,CAAC;oBACf,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC;oBAC/C,UAAU,CAAC,MAAM;iBAClB,CAAC,CACH,CAAA;gBAED,mBAAmB,EAAE,CAAA;gBACrB,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBAErD,MAAK;YACP,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../src/utils/auto-reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,EAAE,qCAAsC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,UAAU,aAAa,CAC3B,EAAwB,EACxB,oBAA4B,CAAC,EAC7B,cAAuB;IAEvB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAExC,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEzD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAElB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;YAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,CACd,gBAAgB,CAAC;oBACf,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC;oBAC/C,UAAU,CAAC,MAAM;iBAClB,CAAC,CACH,CAAA;gBAED,mBAAmB,EAAE,CAAA;gBACrB,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBACrD,MAAK;YACP,CAAC;YAAC,WAAM,CAAC;gBACP,IAAI,EAAE,CAAA;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"auto-reconnect.js","sourceRoot":"","sources":["../../src/utils/auto-reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,EAAE,qCAAsC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,UAAU,aAAa,CAC3B,EAAwB,EACxB,oBAA4B,CAAC,EAC7B,cAAuB;IAEvB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAExC,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAChD,IAAI,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAEzD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAElB,mBAAmB,EAAE,CAAA;QACrB,mBAAmB,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,KAAK,UAAU,aAAa;QAC1B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAA;YAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAErC,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,OAAO,CACd,gBAAgB,CAAC;oBACf,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC;oBAC/C,UAAU,CAAC,MAAM;iBAClB,CAAC,CACH,CAAA;gBAED,mBAAmB,EAAE,CAAA;gBACrB,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;gBAErD,MAAK;YACP,CAAC;YAAC,WAAM,CAAC;gBACP,IAAI,EAAE,CAAA;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extra-native-websocket",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -60,6 +60,7 @@
60
60
  "@blackglory/prelude": "^0.4.0",
61
61
  "@blackglory/structures": "^0.14.10",
62
62
  "@blackglory/wait-for": "^0.8.1",
63
+ "assert-never": "^1.4.0",
63
64
  "extra-abort": "^0.4.0",
64
65
  "extra-defer": "^0.3.1",
65
66
  "extra-promise": "^7.0.0"
@@ -2,6 +2,7 @@ import { assert } from '@blackglory/prelude'
2
2
  import { WebSocketError } from './websocket-error.js'
3
3
  import { Queue, Emitter } from '@blackglory/structures'
4
4
  import { SyncDestructor } from 'extra-defer'
5
+ import { assertNever } from 'assert-never'
5
6
 
6
7
  export enum BinaryType {
7
8
  Blob
@@ -61,13 +62,17 @@ export class ExtraNativeWebSocket extends Emitter<{
61
62
 
62
63
  if (this.instance) {
63
64
  switch (val) {
64
- case BinaryType.Blob:
65
+ case BinaryType.Blob: {
65
66
  this.instance.binaryType = 'blob'
67
+
66
68
  break
67
- case BinaryType.ArrayBuffer:
69
+ }
70
+ case BinaryType.ArrayBuffer: {
68
71
  this.instance.binaryType = 'arraybuffer'
72
+
69
73
  break
70
- default: throw new Error('Unknown binary type')
74
+ }
75
+ default: assertNever(val, 'Unknown binary type')
71
76
  }
72
77
  }
73
78
  }
@@ -121,6 +126,8 @@ export class ExtraNativeWebSocket extends Emitter<{
121
126
  destructor.execute()
122
127
  ws.close()
123
128
 
129
+ if (self.instance === ws) self.instance = undefined
130
+
124
131
  reject(signal.reason)
125
132
  }
126
133
 
@@ -130,6 +137,8 @@ export class ExtraNativeWebSocket extends Emitter<{
130
137
  function closeListener(event: CloseEvent): void {
131
138
  destructor.execute()
132
139
 
140
+ if (self.instance === ws) self.instance = undefined
141
+
133
142
  reject(new WebSocketError(event.code, event.reason))
134
143
  }
135
144
  }
@@ -147,18 +156,32 @@ export class ExtraNativeWebSocket extends Emitter<{
147
156
 
148
157
  close(code?: number, reason?: string): Promise<void> {
149
158
  return new Promise<void>(resolve => {
150
- assert(this.instance, 'WebSocket is not created')
159
+ const self = this
160
+
161
+ const ws = this.instance
162
+ if (!ws) return resolve()
151
163
 
152
164
  switch (this.getState()) {
153
- case State.Closed:
165
+ case State.Closed: {
154
166
  resolve()
167
+
155
168
  break
156
- case State.Closing:
157
- this.instance.addEventListener('close', () => resolve(), { once: true })
169
+ }
170
+ case State.Closing: {
171
+ ws.addEventListener('close', closeListener, { once: true })
172
+
158
173
  break
159
- default:
160
- this.instance.addEventListener('close', () => resolve(), { once: true })
161
- this.instance.close(code, reason)
174
+ }
175
+ default: {
176
+ ws.addEventListener('close', closeListener, { once: true })
177
+ ws.close(code, reason)
178
+ }
179
+ }
180
+
181
+ function closeListener(): void {
182
+ if (self.instance === ws) self.instance = undefined
183
+
184
+ resolve()
162
185
  }
163
186
  })
164
187
  }
@@ -58,10 +58,10 @@ export function autoReconnectWithExponentialBackOff(
58
58
 
59
59
  removeCloseListener()
60
60
  removeCloseListener = ws.once('close', closeListener)
61
+
61
62
  break
62
63
  } catch {
63
64
  retries++
64
- pass()
65
65
  }
66
66
  }
67
67
  }
@@ -40,6 +40,7 @@ export function autoReconnect(
40
40
 
41
41
  removeCloseListener()
42
42
  removeCloseListener = ws.once('close', closeListener)
43
+
43
44
  break
44
45
  } catch {
45
46
  pass()