@nmtjs/ws-client 0.17.0-beta.6 → 0.17.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import { once } from '@nmtjs/common';
2
- import { ConnectionType } from '@nmtjs/protocol';
2
+ import { ConnectionType, ErrorCode } from '@nmtjs/protocol';
3
+ import { ProtocolError } from '@nmtjs/protocol/client';
4
+ // WebSocket.OPEN without touching the global: a custom implementation may be injected
5
+ const WS_OPEN = 1;
3
6
  export class WsTransportClient {
4
7
  format;
5
8
  protocol;
@@ -83,11 +86,18 @@ export class WsTransportClient {
83
86
  return closing;
84
87
  }
85
88
  async send(message, options) {
86
- if (this.webSocket === null)
87
- throw new Error('WebSocket is not connected');
89
+ if (this.webSocket === null) {
90
+ throw new ProtocolError(ErrorCode.ConnectionError, 'WebSocket is not connected');
91
+ }
88
92
  await this.connecting;
93
+ // the close handler may null the socket, or a concurrent disconnect may
94
+ // start closing it, while this send is suspended on the await
95
+ const webSocket = this.webSocket;
96
+ if (webSocket === null || webSocket.readyState !== WS_OPEN) {
97
+ throw new ProtocolError(ErrorCode.ConnectionError, 'WebSocket is not open');
98
+ }
89
99
  if (!options.signal?.aborted)
90
- this.webSocket.send(message);
100
+ webSocket.send(message);
91
101
  }
92
102
  }
93
103
  export const WsTransportFactory = (params, options) => new WsTransportClient(params.format, params.protocol, options);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAiBhD,MAAM,OAAO,iBAAiB;IAQP,MAAM;IACN,QAAQ;IACjB,OAAO;IATnB,IAAI,GAAiC,cAAc,CAAC,aAAa,CAAA;IAEvD,SAAS,GAAqB,IAAI,CAAA;IAClC,UAAU,GAAyB,IAAI,CAAA;IACvC,eAAe,GAAG,KAAK,CAAA;IAEjC,YACqB,MAAwB,EACxB,QAAyB,EAClC,OAAiC;sBAFxB,MAAM;wBACN,QAAQ;uBACjB,OAAO;QAEjB,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAA8B;QAC1C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;QAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,EACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CACjB,CAAA;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAA;QAEnE,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;QACtC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAC7D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;YAC/B,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEjC,EAAE,CAAC,UAAU,GAAG,aAAa,CAAA;QAE7B,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI,cAAc,GAAG,KAAK,CAAA;YAC1B,IAAI,MAAM,GAAG,KAAK,CAAA;YAElB,MAAM,aAAa,GAAG,CAAC,EAAc,EAAE,EAAE;gBACvC,IAAI,cAAc;oBAAE,OAAM;gBAC1B,cAAc,GAAG,IAAI,CAAA;gBACrB,EAAE,EAAE,CAAA;YACN,CAAC,CAAA;YAED,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC/B,MAAM,GAAG,IAAI,CAAA;gBACb,aAAa,CAAC,GAAG,EAAE;oBACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;oBACtB,MAAM,CAAC,SAAS,EAAE,CAAA;oBAClB,OAAO,EAAE,CAAA;gBACX,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvC,MAAM,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAmB,CAAC,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrC,aAAa,CAAC,GAAG,EAAE;oBACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;oBACtB,MAAM,CACJ,IAAI,KAAK,CAAC,iBAAiB,EAAE;wBAC3B,KAAK,EAAG,KAAoB,CAAC,KAAK;qBACnC,CAAC,CACH,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrC,MAAM,MAAM,GACV,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;oBAC/C,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,QAAQ,CAAA;gBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBAEtB,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,aAAa,CAAC,GAAG,EAAE;wBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAA;oBACtD,CAAC,CAAC,CAAA;oBACF,OAAM;gBACR,CAAC;gBAED,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QAEnB,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE,OAAM;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,SAAU,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACrC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAwB,EAAE,OAA6B;QAChE,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC1E,MAAM,IAAI,CAAC,UAAU,CAAA;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,OAAc,CAAC,CAAA;IACpE,CAAC;CACF;AAOD,MAAM,CAAC,MAAM,kBAAkB,GAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACxE,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -10,16 +10,16 @@
10
10
  }
11
11
  },
12
12
  "dependencies": {
13
- "@nmtjs/client": "0.17.0-beta.6",
14
- "@nmtjs/common": "0.17.0-beta.6"
13
+ "@nmtjs/client": "0.17.0-beta.8",
14
+ "@nmtjs/common": "0.17.0-beta.8"
15
15
  },
16
16
  "devDependencies": {
17
- "@nmtjs/protocol": "0.17.0-beta.6"
17
+ "@nmtjs/protocol": "0.17.0-beta.8"
18
18
  },
19
19
  "peerDependencies": {
20
- "@nmtjs/client": "0.17.0-beta.6",
21
- "@nmtjs/common": "0.17.0-beta.6",
22
- "@nmtjs/protocol": "0.17.0-beta.6"
20
+ "@nmtjs/common": "0.17.0-beta.8",
21
+ "@nmtjs/protocol": "0.17.0-beta.8",
22
+ "@nmtjs/client": "0.17.0-beta.8"
23
23
  },
24
24
  "files": [
25
25
  "dist",
@@ -27,7 +27,7 @@
27
27
  "LICENSE.md",
28
28
  "README.md"
29
29
  ],
30
- "version": "0.17.0-beta.6",
30
+ "version": "0.17.0-beta.8",
31
31
  "repository": {
32
32
  "type": "git",
33
33
  "url": "https://github.com/neematajs/neemata"
package/src/index.ts CHANGED
@@ -7,7 +7,11 @@ import type {
7
7
  import type { ProtocolVersion } from '@nmtjs/protocol'
8
8
  import type { BaseClientFormat } from '@nmtjs/protocol/client'
9
9
  import { once } from '@nmtjs/common'
10
- import { ConnectionType } from '@nmtjs/protocol'
10
+ import { ConnectionType, ErrorCode } from '@nmtjs/protocol'
11
+ import { ProtocolError } from '@nmtjs/protocol/client'
12
+
13
+ // WebSocket.OPEN without touching the global: a custom implementation may be injected
14
+ const WS_OPEN = 1
11
15
 
12
16
  export type WsClientTransportOptions = {
13
17
  /**
@@ -126,9 +130,23 @@ export class WsTransportClient implements BidirectionalTransport {
126
130
  }
127
131
 
128
132
  async send(message: ArrayBufferView, options: TransportSendOptions) {
129
- if (this.webSocket === null) throw new Error('WebSocket is not connected')
133
+ if (this.webSocket === null) {
134
+ throw new ProtocolError(
135
+ ErrorCode.ConnectionError,
136
+ 'WebSocket is not connected',
137
+ )
138
+ }
130
139
  await this.connecting
131
- if (!options.signal?.aborted) this.webSocket!.send(message as any)
140
+ // the close handler may null the socket, or a concurrent disconnect may
141
+ // start closing it, while this send is suspended on the await
142
+ const webSocket = this.webSocket
143
+ if (webSocket === null || webSocket.readyState !== WS_OPEN) {
144
+ throw new ProtocolError(
145
+ ErrorCode.ConnectionError,
146
+ 'WebSocket is not open',
147
+ )
148
+ }
149
+ if (!options.signal?.aborted) webSocket.send(message as any)
132
150
  }
133
151
  }
134
152