@rc-ex/ws 1.1.3 → 1.1.5

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
@@ -4,14 +4,12 @@ WebSocket Extension adds support for WebSocket protocol.
4
4
 
5
5
  Please read this article: [Create WebSocket subscriptions using RingCentral JavaScript SDKs](https://medium.com/@tylerlong/create-websocket-subscriptions-using-ringcentral-javascript-sdks-1204ce5843b8).
6
6
 
7
-
8
7
  ## Install
9
8
 
10
9
  ```
11
10
  yarn add @rc-ex/ws
12
11
  ```
13
12
 
14
-
15
13
  ## Usage
16
14
 
17
15
  ```ts
@@ -55,7 +53,6 @@ If you need to create multiple subscriptions, you need to create multiple `WebSo
55
53
 
56
54
  `WebSocketExtension` constructor requires `WebSocketOptions` as parameter:
57
55
 
58
-
59
56
  ```ts
60
57
  type WebSocketOptions = {
61
58
  restOverWebSocket?: boolean;
@@ -64,7 +61,6 @@ type WebSocketOptions = {
64
61
  };
65
62
  ```
66
63
 
67
-
68
64
  ### restOverWebSocket
69
65
 
70
66
  `restOverWebSocket` indicates whether to make Rest API call over WebSocket protocol.
@@ -79,7 +75,6 @@ Please note that, not all Rest API calls can be done over WebSocket protocol. Th
79
75
 
80
76
  If `restOverWebSocket` is true and an Rest API call cannot be done over WebSocket, it will be done over HTTPS instead.
81
77
 
82
-
83
78
  ### debugMode
84
79
 
85
80
  `debugMode` indicates whether to enable debug mode.
@@ -88,7 +83,6 @@ Default value is false.
88
83
 
89
84
  If enabled, WebSocket incoming message and outgoing message will be printed using `console.debug`.
90
85
 
91
-
92
86
  ### autoRecover
93
87
 
94
88
  `autoRecover` indicates whether to auto recover when WebSocket connection is lost.
@@ -97,11 +91,10 @@ Default value is true.
97
91
 
98
92
  If disabled, you need to manually invoke `await webSocketExtension.recover()` whenever WebSocket connection is lost.
99
93
 
100
-
101
94
  ## Access WebSocket object
102
95
 
103
96
  ```ts
104
- webSocketExtension.ws
97
+ webSocketExtension.ws;
105
98
  ```
106
99
 
107
100
  gives you the WebSocket object. But if the network is unstable and `autoRecover` is enabled, sometimes a new WebSocket connection will be created to replace the current one.
@@ -120,7 +113,6 @@ webSocketExtension.eventEmitter.on(Events.autoRecoverFailed, ws => {
120
113
  });
121
114
  ```
122
115
 
123
-
124
116
  ## Session Recovery
125
117
 
126
118
  ### Auto recover
@@ -128,39 +120,37 @@ webSocketExtension.eventEmitter.on(Events.autoRecoverFailed, ws => {
128
120
  By default auto recover is enabled. You can subscribe to auto recover events:
129
121
 
130
122
  ```ts
131
- webSocketExtension.eventEmitter.on(Events.autoRecoverSuccess, ws => {
123
+ webSocketExtension.eventEmitter.on(Events.autoRecoverSuccess, (ws) => {
132
124
  console.log(`auto recover success: ${ws}`);
133
125
  });
134
- webSocketExtension.eventEmitter.on(Events.autoRecoverFailed, ws => {
126
+ webSocketExtension.eventEmitter.on(Events.autoRecoverFailed, (ws) => {
135
127
  console.log(`auto recover failed: ${ws}`);
136
128
  });
137
- webSocketExtension.eventEmitter.on(Events.autoRecoverError, error => {
129
+ webSocketExtension.eventEmitter.on(Events.autoRecoverError, (error) => {
138
130
  console.log(`auto recover error: ${error}`);
139
131
  });
140
132
  ```
141
133
 
142
134
  - Note #1: `autoRecoverError` means cannot connect to WebSocket server at all. There will be more tries. So `autoRecoverError` does NOT mean auto recover gives up trying.
143
- - This is most likely caused by local network issue, or in rare cases remote WebSocket server is down.
144
- - This means a local exception or error.
135
+ - This is most likely caused by local network issue, or in rare cases remote WebSocket server is down.
136
+ - This means a local exception or error.
145
137
  - Note #2: `autoRecoverFailed` means connection to WebSocket server has been restored, but existing subscriptions haven't. The SDK automatically created new subscriptions for you.
146
- - Notifications during WebSocket disconnection are all lost.
147
- - It could mean `recoveryTimeout` and client side gives up recovery but creates brand new connection instead.
148
- - It could mean a message from WebSocket server with `"recoveryState": "Failed"`
138
+ - Notifications during WebSocket disconnection are all lost.
139
+ - It could mean `recoveryTimeout` and client side gives up recovery but creates brand new connection instead.
140
+ - It could mean a message from WebSocket server with `"recoveryState": "Failed"`
149
141
  - Note #3: `autoRecoverSuccess` means connection to WebSocket server has been restored, and existing subscriptions have been restored too. And server side keeps your notification messages in a buffer and it will send you the messages soon.
150
- - There is a `recoveryBufferSize` setting on server side. If there are too many messages queued before session recover success, oldest messages will be discarded.
151
-
142
+ - There is a `recoveryBufferSize` setting on server side. If there are too many messages queued before session recover success, oldest messages will be discarded.
152
143
 
153
144
  ### Manual recover
154
145
 
155
146
  In case of network outage and the WebSocket connection is lost, you can restore the session by:
156
147
 
157
148
  ```ts
158
- await webSocketExtension.recover()
149
+ await webSocketExtension.recover();
159
150
  ```
160
151
 
161
152
  Command above will create a new WebSocket connection and make sure that subscriptions are recovered.
162
153
 
163
-
164
154
  ## How to recover after page refresh?
165
155
 
166
156
  When you refresh page, you lost everything currently in the page's memory.
@@ -1 +1 @@
1
- {"version":3,"file":"ClosedException.js","sourceRoot":"","sources":["../../src/exceptions/ClosedException.ts"],"names":[],"mappings":";;AAAA,MAAM,eAAgB,SAAQ,KAAK;IACjC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,2BAA2B,CAAC,CAAC;IAChD,CAAC;CACF;AAED,kBAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ClosedException.js","sourceRoot":"","sources":["../../src/exceptions/ClosedException.ts"],"names":[],"mappings":";;AAAA,MAAM,eAAgB,SAAQ,KAAK;IACjC,YAAmB,OAAgB;QACjC,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,2BAA2B,CAAC,CAAC;IAChD,CAAC;CACF;AAED,kBAAe,eAAe,CAAC"}
@@ -1,4 +1,4 @@
1
- import { WsgError, WsgEvent } from '../types';
1
+ import type { WsgError, WsgEvent } from '../types';
2
2
  declare class ConnectionException extends Error {
3
3
  wsgEvent: WsgEvent;
4
4
  wsgError: WsgError;
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionException.js","sourceRoot":"","sources":["../../src/exceptions/ConnectionException.ts"],"names":[],"mappings":";;;;;AACA,qDAA6B;AAE7B,MAAM,mBAAoB,SAAQ,KAAK;IAKrC,YAAY,QAAkB;QAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAwB,eAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"ConnectionException.js","sourceRoot":"","sources":["../../src/exceptions/ConnectionException.ts"],"names":[],"mappings":";;;;;AACA,qDAA6B;AAE7B,MAAM,mBAAoB,SAAQ,KAAK;IAKrC,YAAmB,QAAkB;QACnC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAwB,eAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeoutException.js","sourceRoot":"","sources":["../../src/exceptions/TimeoutException.ts"],"names":[],"mappings":";;AAAA,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,uDAAuD,CAAC,CAAC;IAC5E,CAAC;CACF;AAED,kBAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"TimeoutException.js","sourceRoot":"","sources":["../../src/exceptions/TimeoutException.ts"],"names":[],"mappings":";;AAAA,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YAAmB,OAAgB;QACjC,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,uDAAuD,CAAC,CAAC;IAC5E,CAAC;CACF;AAED,kBAAe,gBAAgB,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="ws" />
3
3
  /// <reference types="node" />
4
- import RingCentral from '@rc-ex/core';
4
+ import type RingCentral from '@rc-ex/core';
5
5
  import SdkExtension from '@rc-ex/core/lib/SdkExtension';
6
6
  import WS from 'isomorphic-ws';
7
7
  import { EventEmitter } from 'events';
8
- import SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
8
+ import type SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
9
9
  import { request } from './rest';
10
- import { WsToken, ConnectionDetails, WebSocketOptions, Wsc } from './types';
10
+ import type { WsToken, ConnectionDetails, WebSocketOptions, Wsc } from './types';
11
11
  import Subscription from './subscription';
12
12
  export declare enum Events {
13
13
  autoRecoverSuccess = "autoRecoverSuccess",
@@ -30,15 +30,15 @@ declare class WebSocketExtension extends SdkExtension {
30
30
  intervalHandle?: NodeJS.Timeout;
31
31
  recoverTimestamp?: number;
32
32
  pingServerHandle?: NodeJS.Timeout;
33
+ _recoverPromise?: Promise<void>;
34
+ _connectPromise?: Promise<void>;
33
35
  request: typeof request;
34
36
  constructor(options?: WebSocketOptions);
35
37
  disable(): void;
36
38
  install(rc: RingCentral): Promise<void>;
37
- _recoverPromise?: Promise<void>;
38
39
  recover(): Promise<void>;
39
40
  _recover(): Promise<void>;
40
41
  pingServer(): Promise<void>;
41
- _connectPromise?: Promise<void>;
42
42
  connect(recoverSession?: boolean): Promise<void>;
43
43
  _connect(recoverSession?: boolean): Promise<void>;
44
44
  revoke(keepInterval?: boolean): Promise<void>;
package/lib/index.js CHANGED
@@ -44,7 +44,7 @@ class WebSocketExtension extends SdkExtension_1.default {
44
44
  const interval = 2000 + 2000 * retriesAttempted;
45
45
  return Math.min(8000, interval);
46
46
  });
47
- (_e = (_k = this.options.autoRecover).pingServerInterval) !== null && _e !== void 0 ? _e : (_k.pingServerInterval = 30000);
47
+ (_e = (_k = this.options.autoRecover).pingServerInterval) !== null && _e !== void 0 ? _e : (_k.pingServerInterval = 60000);
48
48
  }
49
49
  disable() {
50
50
  super.disable();
@@ -63,9 +63,9 @@ class WebSocketExtension extends SdkExtension_1.default {
63
63
  }
64
64
  if (
65
65
  // the following cannot be done with WebSocket
66
- ((_c = ((_b = (_a = config === null || config === void 0 ? void 0 : config.headers) === null || _a === void 0 ? void 0 : _a.getContentType) === null || _b === void 0 ? void 0 : _b.toString())) === null || _c === void 0 ? void 0 : _c.includes('multipart/form-data'))
67
- || (config === null || config === void 0 ? void 0 : config.responseType) === 'arraybuffer'
68
- || endpoint.startsWith('/restapi/oauth/') // token, revoke, wstoken
66
+ ((_c = (_b = (_a = config === null || config === void 0 ? void 0 : config.headers) === null || _a === void 0 ? void 0 : _a.getContentType) === null || _b === void 0 ? void 0 : _b.toString()) === null || _c === void 0 ? void 0 : _c.includes('multipart/form-data')) ||
67
+ (config === null || config === void 0 ? void 0 : config.responseType) === 'arraybuffer' ||
68
+ endpoint.startsWith('/restapi/oauth/') // token, revoke, wstoken
69
69
  ) {
70
70
  return request(method, endpoint, content, queryParams, config);
71
71
  }
@@ -178,9 +178,8 @@ class WebSocketExtension extends SdkExtension_1.default {
178
178
  if (this.recoverTimestamp === undefined) {
179
179
  this.recoverTimestamp = Date.now();
180
180
  }
181
- if (this.connectionDetails !== undefined
182
- && Date.now() - this.recoverTimestamp
183
- > this.connectionDetails.recoveryTimeout * 1000) {
181
+ if (this.connectionDetails !== undefined &&
182
+ Date.now() - this.recoverTimestamp > this.connectionDetails.recoveryTimeout * 1000) {
184
183
  if (this.options.debugMode) {
185
184
  console.debug('connect to WSG but do not recover');
186
185
  }
@@ -204,19 +203,12 @@ class WebSocketExtension extends SdkExtension_1.default {
204
203
  return;
205
204
  }
206
205
  try {
207
- if (this.ws.ping) {
208
- // node.js
209
- this.ws.ping();
210
- }
211
- else {
212
- // browser
213
- await this.ws.send(JSON.stringify([
214
- {
215
- type: 'Heartbeat',
216
- messageId: uuid(),
217
- },
218
- ]));
219
- }
206
+ await this.ws.send(JSON.stringify([
207
+ {
208
+ type: 'Heartbeat',
209
+ messageId: uuid(),
210
+ },
211
+ ]));
220
212
  }
221
213
  catch (e) {
222
214
  this.ws.close(); // Explicitly mark WS as closed
@@ -241,7 +233,7 @@ class WebSocketExtension extends SdkExtension_1.default {
241
233
  const r = await this.rc.post('/restapi/oauth/wstoken');
242
234
  this.wsToken = r.data;
243
235
  // `expires_in` default value is 600 seconds. That's why we `* 0.8`
244
- this.wsTokenExpiresAt = Date.now() + (this.wsToken.expires_in * 0.8) * 1000;
236
+ this.wsTokenExpiresAt = Date.now() + this.wsToken.expires_in * 0.8 * 1000;
245
237
  }
246
238
  let wsUri = `${this.wsToken.uri}?access_token=${this.wsToken.ws_access_token}`;
247
239
  if (recoverSession && this.wsc) {
@@ -276,10 +268,10 @@ class WebSocketExtension extends SdkExtension_1.default {
276
268
  this.ws.addEventListener('message', (mEvent) => {
277
269
  const event = mEvent;
278
270
  const [meta, body] = utils_1.default.splitWsgData(event.data);
279
- if (meta.wsc
280
- && (!this.wsc
281
- || (meta.type === 'ConnectionDetails' && body.recoveryState)
282
- || this.wsc.sequence < meta.wsc.sequence)) {
271
+ if (meta.wsc &&
272
+ (!this.wsc ||
273
+ (meta.type === 'ConnectionDetails' && body.recoveryState) ||
274
+ this.wsc.sequence < meta.wsc.sequence)) {
283
275
  this.wsc = meta.wsc;
284
276
  this.eventEmitter.emit(Events.newWsc, this.wsc);
285
277
  }
@@ -296,8 +288,7 @@ class WebSocketExtension extends SdkExtension_1.default {
296
288
  if (this.subscription && this.subscription.enabled) {
297
289
  // because we have a new ws object
298
290
  this.subscription.setupWsEventListener();
299
- if (!recoverSession
300
- || this.connectionDetails.recoveryState === 'Failed') {
291
+ if (!recoverSession || this.connectionDetails.recoveryState === 'Failed') {
301
292
  // create new subscription if don't recover existing one
302
293
  await this.subscription.subscribe();
303
294
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAGA,gFAAwD;AAExD,kEAA+B;AAC/B,sDAA8B;AAC9B,mCAAsC;AACtC,oEAAqC;AACrC,kFAA0D;AAG1D,iCAAiC;AAEjC,kEAA0C;AAC1C,2FAAmE;AACnE,oDAA4B;AAE5B,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,GAAG,CAAC,CAAC;AAEf,MAAM,IAAI,GAAG,IAAA,iBAAO,GAAE,CAAC;AAEvB,IAAY,MAOX;AAPD,WAAY,MAAM;IAChB,mDAAyC,CAAA;IACzC,iDAAuC,CAAA;IACvC,+CAAqC,CAAA;IACrC,mDAAyC,CAAA;IACzC,2BAAiB,CAAA;IACjB,6CAAmC,CAAA;AACrC,CAAC,EAPW,MAAM,sBAAN,MAAM,QAOjB;AAED,MAAM,kBAAmB,SAAQ,sBAAY;IAgC3C,YAAmB,UAA4B,EAAE;;;QAC/C,KAAK,EAAE,CAAC;QAhCH,iBAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;QAQlC,qBAAgB,GAAG,CAAC,CAAC;QAqBrB,YAAO,GAAG,cAAO,CAAC,CAAC,mEAAmE;QAI3F,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,YAAA,IAAI,CAAC,OAAO,EAAC,iBAAiB,uCAAjB,iBAAiB,GAAK,KAAK,EAAC;QACzC,YAAA,IAAI,CAAC,OAAO,EAAC,SAAS,uCAAT,SAAS,GAAK,KAAK,EAAC;QACjC,YAAA,IAAI,CAAC,OAAO,EAAC,WAAW,uCAAX,WAAW,GAAK;YAC3B,OAAO,EAAE,IAAI;SACd,EAAC;QACF,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAC,aAAa,uCAAb,aAAa,GAAK,CAAC,gBAAgB,EAAE,EAAE;YAC9D,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC;YAChD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,EAAC;QACF,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAC,kBAAkB,uCAAlB,kBAAkB,GAAK,KAAK,EAAC;IACxD,CAAC;IAEM,OAAO;QACZ,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QACpC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EAAe;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,EAAE,CAAC,OAAO,GAAG,KAAK,EAChB,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B,EAEA,EAAE;;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBACrD,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBACjE,CAAC;gBACD;gBACE,8CAA8C;gBAC9C,CAAA,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,cAAc,0CAAE,QAAQ,EAAE,0CAAE,QAAQ,CAAC,qBAAqB,CAAC;oBAC5E,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAK,aAAa;oBACtC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,yBAAyB;kBAChE,CAAC;oBACD,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACzE,CAAC,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,GAAG;gBACT,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,CAAC;aACZ,CAAC;YACF,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,aAAa,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,uBAAa,EAAE,CAAC;gBAC/B,MAAM,CAAC,CAAC,CAAC,kCAAkC;YAC7C,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;;YACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,0CAAE,OAAO,MAAK,IAAI,EAAE,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,IAAI,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,UAAU,EAAE,CAAC;gBACvE,aAAa,CAAC,IAAI,CAAC,cAAe,CAAC,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;oBACrB,gBAAgB,GAAG,CAAC,CAAC;oBACrB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;wBAC3B,OAAO,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;oBAC7F,CAAC;oBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,iBAAiB,CAAC,aAAa,KAAK,YAAY;wBACnD,CAAC,CAAC,MAAM,CAAC,kBAAkB;wBAC3B,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAC5B,IAAI,CAAC,EAAE,CACR,CAAC;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,YAAY,uBAAa,EAAE,CAAC;wBAC/B,MAAM,CAAC,CAAC,CAAC,kCAAkC;oBAC7C,CAAC;oBACD,gBAAgB,IAAI,CAAC,CAAC;oBACtB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;wBAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,aAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACvG,CAAC;YACD,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,aAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAErG,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;;gBACtC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACrC,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,CAAC;QACL,CAAC;QACD,wBAAwB;IAC1B,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,QAAQ;;QACnB,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,IAAI,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,UAAU,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC;YAC/D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrC,CAAC;QACD,IACE,IAAI,CAAC,iBAAiB,KAAK,SAAS;YACpC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,EAClF,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC;QACjE,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B;QACzD,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,UAAU;;QACrB,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,0CAAE,OAAO,MAAK,IAAI,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,IAAI,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAChB,IAAI,CAAC,SAAS,CAAC;gBACb;oBACE,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,EAAE;iBAClB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,+BAA+B;QAClD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,cAAwB;QAC3C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,cAAc,GAAG,KAAK;;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAe,CAAC;YACjC,mEAAmE;YACnE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;QAC5E,CAAC;QACD,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,OAAQ,CAAC,GAAG,iBAAiB,IAAI,CAAC,OAAQ,CAAC,eAAe,EAAE,CAAC;QACjF,IAAI,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,KAAK,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,uBAAE,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAE3D,8CAA8C;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;YACjC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,IAAA,wBAAO,EAAC;oBACZ,QAAQ,EAAE,GAAG;oBACb,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU;iBACnD,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,0CAAE,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;gBACvC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,kBAAkB,CAAC,CAAC;YAC5G,CAAC,CAAC,CAAC;QACL,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,eAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,MAAoB,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,MAAkB,CAAC;YACjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,IACE,IAAI,CAAC,GAAG;gBACR,CAAC,CAAC,IAAI,CAAC,GAAG;oBACR,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,aAAa,CAAC;oBACzD,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EACxC,CAAC;gBACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,eAAK,CAAC,uBAAuB,CAC7D,IAAI,CAAC,EAAE,EACP,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CACrE,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,6BAAmB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,8DAA8D;QAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAExD,qDAAqD;QACrD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACnD,kCAAkC;YAClC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACzE,wDAAwD;gBACxD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kDAAkD;IAC3C,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK;;QACtC,MAAM,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,MAAM,EAAE,CAAA,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,YAAsB,EACtB,QAA6B,EAC7B,QAA6C,SAAS;QAEtD,MAAM,YAAY,GAAG,IAAI,sBAAY,CAAC,IAAmC,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnG,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACtC,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,kBAAe,kBAAkB,CAAC"}
package/lib/rest.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
2
- import { WebSocketExtensionInterface } from './types';
1
+ import type { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
2
+ import type { WebSocketExtensionInterface } from './types';
3
3
  export declare function request<T>(this: WebSocketExtensionInterface, method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig): Promise<RestResponse<T>>;
package/lib/rest.js CHANGED
@@ -10,6 +10,7 @@ const http_status_codes_1 = require("http-status-codes");
10
10
  const utils_1 = __importDefault(require("./utils"));
11
11
  const version = '0.16';
12
12
  const uuid = (0, hyperid_1.default)();
13
+ // eslint-disable-next-line max-params
13
14
  async function request(method, endpoint, content, queryParams, config) {
14
15
  var _a;
15
16
  const newConfig = {
@@ -47,9 +48,7 @@ async function request(method, endpoint, content, queryParams, config) {
47
48
  headers: meta.headers,
48
49
  config: newConfig,
49
50
  };
50
- if (meta.type === 'ClientRequest'
51
- && meta.status >= 200
52
- && meta.status < 300) {
51
+ if (meta.type === 'ClientRequest' && meta.status >= 200 && meta.status < 300) {
53
52
  return response;
54
53
  }
55
54
  throw new RestException_1.default(response);
package/lib/rest.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":";;;;;;AAKA,kFAA0D;AAC1D,sDAA8B;AAC9B,yDAAoD;AAEpD,oDAA4B;AAK5B,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAM,IAAI,GAAG,IAAA,iBAAO,GAAE,CAAC;AAEhB,KAAK,UAAU,OAAO,CAE3B,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B;;IAE1B,MAAM,SAAS,GAAsB;QACnC,MAAM;QACN,OAAO,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG;QAC1B,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,WAAW;QACnB,GAAG,MAAM;KACV,CAAC;IACF,SAAS,CAAC,OAAO,GAAG;QAClB,GAAG,SAAS,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,UAAU,8BAA8B,OAAO,EAAE;KACrG,CAAC;IACT,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG;QAClB;YACE,IAAI,EAAE,eAAe;YACrB,SAAS;YACT,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,IAAI,EAAE,SAAS,CAAC,GAAG;YACnB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;SACxB;KACF,CAAC;IACF,IAAI,SAAS,CAAC,IAAI,EAAE;QAClB,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAClC;IACD,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,eAAK,CAAC,uBAAuB,CACtD,IAAI,CAAC,EAAE,EACP,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CACzC,CAAC;IACF,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,IAAS;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAA,mCAAe,EAAC,IAAI,CAAC,MAAM,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,SAAgB;KACzB,CAAC;IACF,IACE,IAAI,CAAC,IAAI,KAAK,eAAe;WAC1B,IAAI,CAAC,MAAM,IAAI,GAAG;WAClB,IAAI,CAAC,MAAM,GAAG,GAAG,EACpB;QACA,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,IAAI,uBAAa,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAtDD,0BAsDC"}
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":";;;;;;AACA,kFAA0D;AAC1D,sDAA8B;AAC9B,yDAAoD;AAEpD,oDAA4B;AAG5B,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAM,IAAI,GAAG,IAAA,iBAAO,GAAE,CAAC;AAEvB,sCAAsC;AAC/B,KAAK,UAAU,OAAO,CAE3B,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B;;IAE1B,MAAM,SAAS,GAAsB;QACnC,MAAM;QACN,OAAO,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG;QAC1B,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,WAAW;QACnB,GAAG,MAAM;KACV,CAAC;IACF,SAAS,CAAC,OAAO,GAAG;QAClB,GAAG,SAAS,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,UAAU,8BAA8B,OAAO,EAAE;KACrG,CAAC;IACT,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG;QAClB;YACE,IAAI,EAAE,eAAe;YACrB,SAAS;YACT,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,IAAI,EAAE,SAAS,CAAC,GAAG;YACnB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;SACxB;KACF,CAAC;IACF,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,eAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,IAAS;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAA,mCAAe,EAAC,IAAI,CAAC,MAAM,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,SAAgB;KACzB,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC7E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,uBAAa,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AA/CD,0BA+CC"}
@@ -1,9 +1,10 @@
1
1
  /// <reference types="node" />
2
- import CreateSubscriptionRequest from '@rc-ex/core/lib/definitions/CreateSubscriptionRequest';
3
- import SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
4
- import { MessageEvent } from 'ws';
5
- import { WebSocketExtensionInterface } from './types';
2
+ import type CreateSubscriptionRequest from '@rc-ex/core/lib/definitions/CreateSubscriptionRequest';
3
+ import type SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
4
+ import type { MessageEvent } from 'ws';
5
+ import type { WebSocketExtensionInterface } from './types';
6
6
  declare class Subscription {
7
+ subscriptionInfo?: SubscriptionInfo;
7
8
  wse: WebSocketExtensionInterface;
8
9
  eventFilters: string[];
9
10
  eventListener: (event: MessageEvent) => void;
@@ -12,7 +13,6 @@ declare class Subscription {
12
13
  constructor(wse: WebSocketExtensionInterface, eventFilters: string[], callback: (event: {}) => void);
13
14
  setupWsEventListener(): void;
14
15
  get requestBody(): CreateSubscriptionRequest;
15
- subscriptionInfo?: SubscriptionInfo;
16
16
  subscribe(): Promise<void>;
17
17
  refresh(): Promise<void>;
18
18
  revoke(): Promise<void>;
@@ -12,9 +12,7 @@ class Subscription {
12
12
  this.eventListener = (mEvent) => {
13
13
  const event = mEvent;
14
14
  const [meta, body] = utils_1.default.splitWsgData(event.data);
15
- if (this.enabled
16
- && meta.type === 'ServerNotification'
17
- && body.subscriptionId === this.subscriptionInfo.id) {
15
+ if (this.enabled && meta.type === 'ServerNotification' && body.subscriptionId === this.subscriptionInfo.id) {
18
16
  callback(body);
19
17
  }
20
18
  };
@@ -25,7 +23,7 @@ class Subscription {
25
23
  }
26
24
  get requestBody() {
27
25
  return {
28
- deliveryMode: { transportType: 'WebSocket' },
26
+ deliveryMode: { transportType: 'WebSocket' }, // because WebSocket is not in spec
29
27
  eventFilters: this.eventFilters,
30
28
  };
31
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /// <reference types="ws" />
2
- import RingCentral from '@rc-ex/core';
3
- import { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
4
- import WS from 'isomorphic-ws';
5
- export type WsToken = {
2
+ import type RingCentral from '@rc-ex/core';
3
+ import type { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
4
+ import type WS from 'isomorphic-ws';
5
+ export interface WsToken {
6
6
  uri: string;
7
7
  ws_access_token: string;
8
8
  expires_in: number;
9
- };
9
+ }
10
10
  export type CheckInterval = (retriesAttempted: number) => number;
11
- export type WebSocketOptions = {
11
+ export interface WebSocketOptions {
12
12
  restOverWebSocket?: boolean;
13
13
  debugMode?: boolean;
14
14
  autoRecover?: {
@@ -17,15 +17,15 @@ export type WebSocketOptions = {
17
17
  pingServerInterval?: number;
18
18
  };
19
19
  wscToken?: string;
20
- };
21
- export type WsgEvent = {
20
+ }
21
+ export interface WsgEvent {
22
22
  data: string;
23
- };
24
- export type Wsc = {
23
+ }
24
+ export interface Wsc {
25
25
  token: string;
26
26
  sequence: number;
27
- };
28
- export type WsgMeta = {
27
+ }
28
+ export interface WsgMeta {
29
29
  type: 'ClientRequest' | 'ServerNotification' | 'Error' | 'ConnectionDetails' | 'Heartbeat';
30
30
  messageId: string;
31
31
  status: number;
@@ -33,12 +33,12 @@ export type WsgMeta = {
33
33
  [key: string]: string;
34
34
  };
35
35
  wsc?: Wsc;
36
- };
37
- export type WsgError = {
36
+ }
37
+ export interface WsgError {
38
38
  errorCode: string;
39
39
  message: string;
40
- };
41
- export type ConnectionDetails = {
40
+ }
41
+ export interface ConnectionDetails {
42
42
  creationTime: string;
43
43
  maxConnectionsPerSession: number;
44
44
  recoveryBufferSize: number;
@@ -48,14 +48,15 @@ export type ConnectionDetails = {
48
48
  maxActiveRequests: number;
49
49
  recoveryState?: 'Successful' | 'Failed';
50
50
  recoveryErrorCode?: string;
51
- };
51
+ }
52
52
  export interface WebSocketExtensionInterface {
53
53
  options: WebSocketOptions;
54
54
  subscription?: SubscriptionInterface;
55
55
  ws: WS;
56
56
  wsToken?: WsToken;
57
57
  rc: RingCentral;
58
- request<T>(method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig): Promise<RestResponse<T>>;
58
+ request: <T>(method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig) => Promise<RestResponse<T>>;
59
59
  }
60
60
  export interface SubscriptionInterface {
61
+ eventFilters: string[];
61
62
  }
package/lib/utils.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="ws" />
2
- import WS from 'isomorphic-ws';
3
- import { WsgMeta, WsgEvent } from './types';
2
+ import type WS from 'isomorphic-ws';
3
+ import type { WsgMeta, WsgEvent } from './types';
4
4
  declare class Utils {
5
5
  static splitWsgData(wsgData: string): [WsgMeta, any];
6
6
  static debugWebSocket(_ws: WS): void;
package/lib/utils.js CHANGED
@@ -10,10 +10,7 @@ class Utils {
10
10
  static splitWsgData(wsgData) {
11
11
  if (wsgData.includes(',--Boundary')) {
12
12
  const index = wsgData.indexOf(',--Boundary');
13
- return [
14
- JSON.parse(wsgData.substring(1, index)),
15
- wsgData.substring(index + 1, wsgData.length - 1),
16
- ];
13
+ return [JSON.parse(wsgData.substring(1, index)), wsgData.substring(index + 1, wsgData.length - 1)];
17
14
  }
18
15
  return JSON.parse(wsgData);
19
16
  }
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;AAIA,mFAA2D;AAC3D,qFAA6D;AAE7D,MAAM,KAAK;IACT,8DAA8D;IAC9D,MAAM,CAAC,YAAY,CAAC,OAAe;QACjC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7C,OAAO;gBACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;aACjD,CAAC;SACH;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAO;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC;QACf,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,KAAK,CACX;EACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;OACnC,CACA,CAAC;QACJ,CAAC,CAAC;QACF,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,MAAoB,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,MAAkB,CAAC;YACjC,OAAO,CAAC,KAAK,CACX;EACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;OAC1C,CACA,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACpC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,uBAAuB,CAC5B,EAAM,EACN,cAA0C,EAC1C,OAAO,GAAG,KAAK;QAEf,8DAA8D;QAC9D,OAAO,IAAI,OAAO,CAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;gBACnC,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,MAAM,EAAE;oBAC/B,aAAa,CAAC,WAAW,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,yBAAe,EAAE,CAAC,CAAC;iBAC/B;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,mEAAmE;gBACnE,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3C,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,0BAAgB,EAAE,CAAC,CAAC;YACjC,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,CAAC,MAAoB,EAAE,EAAE;gBACvC,MAAM,KAAK,GAAG,MAAkB,CAAC;gBACjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;oBACxB,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC3C,aAAa,CAAC,WAAW,CAAC,CAAC;oBAC3B,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5B,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;iBAC9B;YACH,CAAC,CAAC;YACF,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,kBAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-ex/ws",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "WebSocket extension for ringcentral-extensible project",
5
5
  "author": "Tyler Liu <tyler.liu@ringcentral.com>",
6
6
  "homepage": "https://github.com/ringcentral/ringcentral-extensible/tree/master/packages/extensions/ws",
@@ -18,15 +18,15 @@
18
18
  "access": "public"
19
19
  },
20
20
  "dependencies": {
21
- "@types/ws": "^8.5.5",
22
- "http-status-codes": "^2.2.0",
21
+ "@types/ws": "^8.5.10",
22
+ "http-status-codes": "^2.3.0",
23
23
  "hyperid": "^3.1.1",
24
24
  "isomorphic-ws": "^5.0.0",
25
25
  "wait-for-async": "^0.6.1",
26
- "ws": "^8.14.1"
26
+ "ws": "^8.16.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@rc-ex/core": "^1.3.3"
29
+ "@rc-ex/core": "^1.3.5"
30
30
  },
31
- "gitHead": "408a3d674a4f2f68ba6aba42f4210800442b062b"
31
+ "gitHead": "7b3b72e4d70ce3d45f21325d8bd31ded3d287626"
32
32
  }
@@ -1,5 +1,5 @@
1
1
  class ClosedException extends Error {
2
- constructor(message?: string) {
2
+ public constructor(message?: string) {
3
3
  super(message ?? 'WebSocket has been closed');
4
4
  }
5
5
  }
@@ -1,12 +1,12 @@
1
- import { WsgError, WsgEvent, WsgMeta } from '../types';
1
+ import type { WsgError, WsgEvent, WsgMeta } from '../types';
2
2
  import Utils from '../utils';
3
3
 
4
4
  class ConnectionException extends Error {
5
- wsgEvent: WsgEvent;
5
+ public wsgEvent: WsgEvent;
6
6
 
7
- wsgError: WsgError;
7
+ public wsgError: WsgError;
8
8
 
9
- constructor(wsgEvent: WsgEvent) {
9
+ public constructor(wsgEvent: WsgEvent) {
10
10
  const [, wsgError]: [WsgMeta, WsgError] = Utils.splitWsgData(wsgEvent.data);
11
11
  super(JSON.stringify(wsgError, null, 2));
12
12
  this.wsgEvent = wsgEvent;
@@ -1,5 +1,5 @@
1
1
  class TimeoutException extends Error {
2
- constructor(message?: string) {
2
+ public constructor(message?: string) {
3
3
  super(message ?? 'Failed to receive expected WebSocket message in time.');
4
4
  }
5
5
  }
package/src/index.ts CHANGED
@@ -1,27 +1,17 @@
1
1
  /* eslint-disable no-console */
2
- import RingCentral from '@rc-ex/core';
3
- import {
4
- RestMethod,
5
- RestRequestConfig,
6
- RestResponse,
7
- } from '@rc-ex/core/lib/types';
2
+ import type RingCentral from '@rc-ex/core';
3
+ import type { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
8
4
  import SdkExtension from '@rc-ex/core/lib/SdkExtension';
9
- import WS, { MessageEvent } from 'isomorphic-ws';
5
+ import type { MessageEvent } from 'isomorphic-ws';
6
+ import WS from 'isomorphic-ws';
10
7
  import hyperid from 'hyperid';
11
8
  import { EventEmitter } from 'events';
12
9
  import waitFor from 'wait-for-async';
13
10
  import RestException from '@rc-ex/core/lib/RestException';
14
- import SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
11
+ import type SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
15
12
 
16
13
  import { request } from './rest';
17
- import {
18
- WsToken,
19
- ConnectionDetails,
20
- WebSocketOptions,
21
- WsgEvent,
22
- Wsc,
23
- WebSocketExtensionInterface,
24
- } from './types';
14
+ import type { WsToken, ConnectionDetails, WebSocketOptions, WsgEvent, Wsc, WebSocketExtensionInterface } from './types';
25
15
  import Subscription from './subscription';
26
16
  import ConnectionException from './exceptions/ConnectionException';
27
17
  import Utils from './utils';
@@ -41,34 +31,38 @@ export enum Events {
41
31
  }
42
32
 
43
33
  class WebSocketExtension extends SdkExtension {
44
- eventEmitter = new EventEmitter();
34
+ public eventEmitter = new EventEmitter();
45
35
 
46
- options: WebSocketOptions;
36
+ public options: WebSocketOptions;
47
37
 
48
- rc!: RingCentral;
38
+ public rc!: RingCentral;
49
39
 
50
- wsToken?: WsToken;
40
+ public wsToken?: WsToken;
51
41
 
52
- wsTokenExpiresAt = 0;
42
+ public wsTokenExpiresAt = 0;
53
43
 
54
- ws!: WS;
44
+ public ws!: WS;
55
45
 
56
- connectionDetails!: ConnectionDetails;
46
+ public connectionDetails!: ConnectionDetails;
57
47
 
58
- wsc?: Wsc;
48
+ public wsc?: Wsc;
59
49
 
60
- subscription?: Subscription;
50
+ public subscription?: Subscription;
61
51
 
62
52
  // for auto recover
63
- intervalHandle?: NodeJS.Timeout;
53
+ public intervalHandle?: NodeJS.Timeout;
64
54
 
65
- recoverTimestamp?: number;
55
+ public recoverTimestamp?: number;
66
56
 
67
- pingServerHandle?: NodeJS.Timeout;
57
+ public pingServerHandle?: NodeJS.Timeout;
68
58
 
69
- request = request; // request method was moved to another file to keep this file short
59
+ public _recoverPromise?: Promise<void>;
70
60
 
71
- constructor(options: WebSocketOptions = {}) {
61
+ public _connectPromise?: Promise<void>;
62
+
63
+ public request = request; // request method was moved to another file to keep this file short
64
+
65
+ public constructor(options: WebSocketOptions = {}) {
72
66
  super();
73
67
  this.options = options;
74
68
  this.options.restOverWebSocket ??= false;
@@ -80,17 +74,17 @@ class WebSocketExtension extends SdkExtension {
80
74
  const interval = 2000 + 2000 * retriesAttempted;
81
75
  return Math.min(8000, interval);
82
76
  };
83
- this.options.autoRecover.pingServerInterval ??= 30000;
77
+ this.options.autoRecover.pingServerInterval ??= 60000;
84
78
  }
85
79
 
86
- disable() {
80
+ public disable() {
87
81
  super.disable();
88
82
  if (this.subscription) {
89
83
  this.subscription.enabled = false;
90
84
  }
91
85
  }
92
86
 
93
- async install(rc: RingCentral) {
87
+ public async install(rc: RingCentral) {
94
88
  this.rc = rc;
95
89
  if (this.options.restOverWebSocket) {
96
90
  const request = rc.request.bind(rc);
@@ -100,19 +94,18 @@ class WebSocketExtension extends SdkExtension {
100
94
  content?: {},
101
95
  queryParams?: {},
102
96
  config?: RestRequestConfig,
97
+ // eslint-disable-next-line max-params
103
98
  ): Promise<RestResponse<T>> => {
104
99
  if (!this.enabled || !this.options.restOverWebSocket) {
105
- return request<T>(method, endpoint, content, queryParams, config);
100
+ return request(method, endpoint, content, queryParams, config);
106
101
  }
107
102
  if (
108
103
  // the following cannot be done with WebSocket
109
- (config?.headers?.getContentType?.toString())?.includes(
110
- 'multipart/form-data',
111
- )
112
- || config?.responseType === 'arraybuffer'
113
- || endpoint.startsWith('/restapi/oauth/') // token, revoke, wstoken
104
+ config?.headers?.getContentType?.toString()?.includes('multipart/form-data') ||
105
+ config?.responseType === 'arraybuffer' ||
106
+ endpoint.startsWith('/restapi/oauth/') // token, revoke, wstoken
114
107
  ) {
115
- return request<T>(method, endpoint, content, queryParams, config);
108
+ return request(method, endpoint, content, queryParams, config);
116
109
  }
117
110
  return this.request<T>(method, endpoint, content, queryParams, config);
118
111
  };
@@ -163,9 +156,7 @@ class WebSocketExtension extends SdkExtension {
163
156
  await this.recover();
164
157
  retriesAttempted = 0;
165
158
  if (this.options.debugMode) {
166
- console.debug(
167
- `Auto recover done, recoveryState: ${this.connectionDetails.recoveryState}`,
168
- );
159
+ console.debug(`Auto recover done, recoveryState: ${this.connectionDetails.recoveryState}`);
169
160
  }
170
161
  this.eventEmitter.emit(
171
162
  this.connectionDetails.recoveryState === 'Successful'
@@ -183,17 +174,11 @@ class WebSocketExtension extends SdkExtension {
183
174
  }
184
175
  this.eventEmitter.emit(Events.autoRecoverError, e);
185
176
  }
186
- this.intervalHandle = setInterval(
187
- check,
188
- this.options.autoRecover!.checkInterval!(retriesAttempted),
189
- );
177
+ this.intervalHandle = setInterval(check, this.options.autoRecover!.checkInterval!(retriesAttempted));
190
178
  }
191
179
  checking = false;
192
180
  };
193
- this.intervalHandle = setInterval(
194
- check,
195
- this.options.autoRecover!.checkInterval!(retriesAttempted),
196
- );
181
+ this.intervalHandle = setInterval(check, this.options.autoRecover!.checkInterval!(retriesAttempted));
197
182
 
198
183
  // browser only code start
199
184
  if (typeof window !== 'undefined' && window.addEventListener) {
@@ -210,9 +195,7 @@ class WebSocketExtension extends SdkExtension {
210
195
  // browser only code end
211
196
  }
212
197
 
213
- _recoverPromise?: Promise<void>;
214
-
215
- async recover() {
198
+ public async recover() {
216
199
  if (this._recoverPromise) {
217
200
  return this._recoverPromise;
218
201
  }
@@ -225,7 +208,7 @@ class WebSocketExtension extends SdkExtension {
225
208
  return undefined;
226
209
  }
227
210
 
228
- async _recover() {
211
+ public async _recover() {
229
212
  if (this.ws?.readyState === OPEN || this.ws?.readyState === CONNECTING) {
230
213
  return;
231
214
  }
@@ -237,9 +220,8 @@ class WebSocketExtension extends SdkExtension {
237
220
  this.recoverTimestamp = Date.now();
238
221
  }
239
222
  if (
240
- this.connectionDetails !== undefined
241
- && Date.now() - this.recoverTimestamp
242
- > this.connectionDetails.recoveryTimeout * 1000
223
+ this.connectionDetails !== undefined &&
224
+ Date.now() - this.recoverTimestamp > this.connectionDetails.recoveryTimeout * 1000
243
225
  ) {
244
226
  if (this.options.debugMode) {
245
227
  console.debug('connect to WSG but do not recover');
@@ -255,7 +237,7 @@ class WebSocketExtension extends SdkExtension {
255
237
  this.enable();
256
238
  }
257
239
 
258
- async pingServer() {
240
+ public async pingServer() {
259
241
  if (this.options.autoRecover?.enabled !== true) {
260
242
  return;
261
243
  }
@@ -263,28 +245,20 @@ class WebSocketExtension extends SdkExtension {
263
245
  return;
264
246
  }
265
247
  try {
266
- if (this.ws.ping) {
267
- // node.js
268
- this.ws.ping();
269
- } else {
270
- // browser
271
- await this.ws.send(
272
- JSON.stringify([
273
- {
274
- type: 'Heartbeat',
275
- messageId: uuid(),
276
- },
277
- ]),
278
- );
279
- }
248
+ await this.ws.send(
249
+ JSON.stringify([
250
+ {
251
+ type: 'Heartbeat',
252
+ messageId: uuid(),
253
+ },
254
+ ]),
255
+ );
280
256
  } catch (e) {
281
257
  this.ws.close(); // Explicitly mark WS as closed
282
258
  }
283
259
  }
284
260
 
285
- _connectPromise?: Promise<void>;
286
-
287
- async connect(recoverSession?: boolean) {
261
+ public async connect(recoverSession?: boolean) {
288
262
  if (this._connectPromise) {
289
263
  return this._connectPromise;
290
264
  }
@@ -297,12 +271,12 @@ class WebSocketExtension extends SdkExtension {
297
271
  return undefined;
298
272
  }
299
273
 
300
- async _connect(recoverSession = false) {
274
+ public async _connect(recoverSession = false) {
301
275
  if (!this.wsToken || Date.now() > this.wsTokenExpiresAt) {
302
276
  const r = await this.rc.post('/restapi/oauth/wstoken');
303
277
  this.wsToken = r.data as WsToken;
304
278
  // `expires_in` default value is 600 seconds. That's why we `* 0.8`
305
- this.wsTokenExpiresAt = Date.now() + (this.wsToken.expires_in * 0.8) * 1000;
279
+ this.wsTokenExpiresAt = Date.now() + this.wsToken.expires_in * 0.8 * 1000;
306
280
  }
307
281
  let wsUri = `${this.wsToken!.uri}?access_token=${this.wsToken!.ws_access_token}`;
308
282
  if (recoverSession && this.wsc) {
@@ -328,10 +302,7 @@ class WebSocketExtension extends SdkExtension {
328
302
  if (this.pingServerHandle) {
329
303
  clearTimeout(this.pingServerHandle);
330
304
  }
331
- this.pingServerHandle = setTimeout(
332
- () => this.pingServer(),
333
- this.options.autoRecover!.pingServerInterval,
334
- );
305
+ this.pingServerHandle = setTimeout(() => this.pingServer(), this.options.autoRecover!.pingServerInterval);
335
306
  });
336
307
  }
337
308
 
@@ -345,10 +316,10 @@ class WebSocketExtension extends SdkExtension {
345
316
  const event = mEvent as WsgEvent;
346
317
  const [meta, body] = Utils.splitWsgData(event.data);
347
318
  if (
348
- meta.wsc
349
- && (!this.wsc
350
- || (meta.type === 'ConnectionDetails' && body.recoveryState)
351
- || this.wsc.sequence < meta.wsc.sequence)
319
+ meta.wsc &&
320
+ (!this.wsc ||
321
+ (meta.type === 'ConnectionDetails' && body.recoveryState) ||
322
+ this.wsc.sequence < meta.wsc.sequence)
352
323
  ) {
353
324
  this.wsc = meta.wsc;
354
325
  this.eventEmitter.emit(Events.newWsc, this.wsc);
@@ -372,10 +343,7 @@ class WebSocketExtension extends SdkExtension {
372
343
  if (this.subscription && this.subscription.enabled) {
373
344
  // because we have a new ws object
374
345
  this.subscription.setupWsEventListener();
375
- if (
376
- !recoverSession
377
- || this.connectionDetails.recoveryState === 'Failed'
378
- ) {
346
+ if (!recoverSession || this.connectionDetails.recoveryState === 'Failed') {
379
347
  // create new subscription if don't recover existing one
380
348
  await this.subscription.subscribe();
381
349
  }
@@ -383,7 +351,7 @@ class WebSocketExtension extends SdkExtension {
383
351
  }
384
352
 
385
353
  // keepInterval means we do not clear the interval
386
- async revoke(keepInterval = false) {
354
+ public async revoke(keepInterval = false) {
387
355
  await this.subscription?.revoke();
388
356
  this.subscription = undefined;
389
357
  if (!keepInterval && this.intervalHandle) {
@@ -399,7 +367,7 @@ class WebSocketExtension extends SdkExtension {
399
367
  this.disable();
400
368
  }
401
369
 
402
- async subscribe(
370
+ public async subscribe(
403
371
  eventFilters: string[],
404
372
  callback: (event: {}) => void,
405
373
  cache: SubscriptionInfo | undefined | null = undefined,
package/src/rest.ts CHANGED
@@ -1,21 +1,16 @@
1
- import {
2
- RestMethod,
3
- RestRequestConfig,
4
- RestResponse,
5
- } from '@rc-ex/core/lib/types';
1
+ import type { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
6
2
  import RestException from '@rc-ex/core/lib/RestException';
7
3
  import hyperid from 'hyperid';
8
4
  import { getReasonPhrase } from 'http-status-codes';
9
5
 
10
6
  import Utils from './utils';
11
- import {
12
- WebSocketExtensionInterface,
13
- } from './types';
7
+ import type { WebSocketExtensionInterface } from './types';
14
8
 
15
9
  const version = '0.16';
16
10
 
17
11
  const uuid = hyperid();
18
12
 
13
+ // eslint-disable-next-line max-params
19
14
  export async function request<T>(
20
15
  this: WebSocketExtensionInterface,
21
16
  method: RestMethod,
@@ -51,10 +46,7 @@ export async function request<T>(
51
46
  requestBody.push(newConfig.data);
52
47
  }
53
48
  await this.ws.send(JSON.stringify(requestBody));
54
- const [meta, body] = await Utils.waitForWebSocketMessage(
55
- this.ws,
56
- (_meta) => _meta.messageId === messageId,
57
- );
49
+ const [meta, body] = await Utils.waitForWebSocketMessage(this.ws, (_meta) => _meta.messageId === messageId);
58
50
  const response: RestResponse = {
59
51
  data: body as T,
60
52
  status: meta.status,
@@ -62,11 +54,7 @@ export async function request<T>(
62
54
  headers: meta.headers,
63
55
  config: newConfig as any,
64
56
  };
65
- if (
66
- meta.type === 'ClientRequest'
67
- && meta.status >= 200
68
- && meta.status < 300
69
- ) {
57
+ if (meta.type === 'ClientRequest' && meta.status >= 200 && meta.status < 300) {
70
58
  return response;
71
59
  }
72
60
  throw new RestException(response);
@@ -1,68 +1,56 @@
1
1
  /* eslint-disable no-console */
2
- import CreateSubscriptionRequest from '@rc-ex/core/lib/definitions/CreateSubscriptionRequest';
3
- import SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
4
- import { RestResponse } from '@rc-ex/core/lib/types';
5
- import { MessageEvent } from 'ws';
2
+ import type CreateSubscriptionRequest from '@rc-ex/core/lib/definitions/CreateSubscriptionRequest';
3
+ import type SubscriptionInfo from '@rc-ex/core/lib/definitions/SubscriptionInfo';
4
+ import type { RestResponse } from '@rc-ex/core/lib/types';
5
+ import type { MessageEvent } from 'ws';
6
6
 
7
- import { WsgEvent, WsgMeta, WebSocketExtensionInterface } from './types';
7
+ import type { WsgEvent, WsgMeta, WebSocketExtensionInterface } from './types';
8
8
  import Utils from './utils';
9
9
 
10
10
  class Subscription {
11
- wse: WebSocketExtensionInterface;
11
+ public subscriptionInfo?: SubscriptionInfo;
12
12
 
13
- eventFilters: string[];
13
+ public wse: WebSocketExtensionInterface;
14
14
 
15
- eventListener: (event: MessageEvent) => void;
15
+ public eventFilters: string[];
16
16
 
17
- timeout?: NodeJS.Timeout;
17
+ public eventListener: (event: MessageEvent) => void;
18
18
 
19
- enabled = true;
19
+ public timeout?: NodeJS.Timeout;
20
20
 
21
- constructor(
22
- wse: WebSocketExtensionInterface,
23
- eventFilters: string[],
24
- callback: (event: {}) => void,
25
- ) {
21
+ public enabled = true;
22
+
23
+ public constructor(wse: WebSocketExtensionInterface, eventFilters: string[], callback: (event: {}) => void) {
26
24
  this.wse = wse;
27
25
  this.eventFilters = eventFilters;
28
26
  this.eventListener = (mEvent: MessageEvent) => {
29
27
  const event = mEvent as WsgEvent;
30
28
  const [meta, body]: [WsgMeta, { subscriptionId: string }] = Utils.splitWsgData(event.data);
31
- if (
32
- this.enabled
33
- && meta.type === 'ServerNotification'
34
- && body.subscriptionId === this.subscriptionInfo!.id
35
- ) {
29
+ if (this.enabled && meta.type === 'ServerNotification' && body.subscriptionId === this.subscriptionInfo!.id) {
36
30
  callback(body);
37
31
  }
38
32
  };
39
33
  this.setupWsEventListener();
40
34
  }
41
35
 
42
- setupWsEventListener() {
36
+ public setupWsEventListener() {
43
37
  this.wse.ws.addEventListener('message', this.eventListener);
44
38
  }
45
39
 
46
- get requestBody(): CreateSubscriptionRequest {
40
+ public get requestBody(): CreateSubscriptionRequest {
47
41
  return {
48
42
  deliveryMode: { transportType: 'WebSocket' as any }, // because WebSocket is not in spec
49
43
  eventFilters: this.eventFilters,
50
44
  };
51
45
  }
52
46
 
53
- subscriptionInfo?: SubscriptionInfo;
54
-
55
- async subscribe() {
47
+ public async subscribe() {
56
48
  this.subscriptionInfo = (
57
- await this.wse.request<SubscriptionInfo>(
58
- 'POST',
59
- '/restapi/v1.0/subscription',
60
- this.requestBody,
61
- )
49
+ await this.wse.request<SubscriptionInfo>('POST', '/restapi/v1.0/subscription', this.requestBody)
62
50
  ).data;
63
51
  }
64
52
 
65
- async refresh() {
53
+ public async refresh() {
66
54
  if (!this.subscriptionInfo) {
67
55
  return;
68
56
  }
@@ -83,24 +71,18 @@ class Subscription {
83
71
  }
84
72
  }
85
73
 
86
- async revoke() {
74
+ public async revoke() {
87
75
  if (!this.subscriptionInfo) {
88
76
  return;
89
77
  }
90
78
  try {
91
- await this.wse.request<SubscriptionInfo>(
92
- 'DELETE',
93
- `/restapi/v1.0/subscription/${this.subscriptionInfo!.id}`,
94
- );
79
+ await this.wse.request<SubscriptionInfo>('DELETE', `/restapi/v1.0/subscription/${this.subscriptionInfo!.id}`);
95
80
  } catch (e) {
96
81
  const re = e as { response: RestResponse };
97
82
  if (re.response && re.response.status === 404) {
98
83
  // ignore
99
84
  if (this.wse.options.debugMode) {
100
- console.debug(
101
- `Subscription ${this.subscriptionInfo!.id
102
- } doesn't exist on server side`,
103
- );
85
+ console.debug(`Subscription ${this.subscriptionInfo!.id} doesn't exist on server side`);
104
86
  }
105
87
  } else if (re.response && re.response.status === 401) {
106
88
  // ignore
@@ -114,7 +96,7 @@ class Subscription {
114
96
  this.remove();
115
97
  }
116
98
 
117
- remove() {
99
+ public remove() {
118
100
  if (this.timeout) {
119
101
  global.clearTimeout(this.timeout);
120
102
  this.timeout = undefined;
package/src/types.ts CHANGED
@@ -1,15 +1,15 @@
1
- import RingCentral from '@rc-ex/core';
2
- import { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
3
- import WS from 'isomorphic-ws';
1
+ import type RingCentral from '@rc-ex/core';
2
+ import type { RestMethod, RestRequestConfig, RestResponse } from '@rc-ex/core/lib/types';
3
+ import type WS from 'isomorphic-ws';
4
4
 
5
- export type WsToken = {
5
+ export interface WsToken {
6
6
  uri: string;
7
7
  ws_access_token: string;
8
8
  expires_in: number;
9
- };
9
+ }
10
10
 
11
11
  export type CheckInterval = (retriesAttempted: number) => number;
12
- export type WebSocketOptions = {
12
+ export interface WebSocketOptions {
13
13
  restOverWebSocket?: boolean;
14
14
  debugMode?: boolean;
15
15
  autoRecover?: {
@@ -18,38 +18,33 @@ export type WebSocketOptions = {
18
18
  pingServerInterval?: number;
19
19
  };
20
20
  wscToken?: string;
21
- };
21
+ }
22
22
 
23
- export type WsgEvent = {
23
+ export interface WsgEvent {
24
24
  data: string;
25
- };
25
+ }
26
26
 
27
- export type Wsc = {
27
+ export interface Wsc {
28
28
  token: string;
29
29
  sequence: number;
30
- };
30
+ }
31
31
 
32
- export type WsgMeta = {
33
- type:
34
- | 'ClientRequest'
35
- | 'ServerNotification'
36
- | 'Error'
37
- | 'ConnectionDetails'
38
- | 'Heartbeat';
32
+ export interface WsgMeta {
33
+ type: 'ClientRequest' | 'ServerNotification' | 'Error' | 'ConnectionDetails' | 'Heartbeat';
39
34
  messageId: string;
40
35
  status: number;
41
36
  headers: {
42
37
  [key: string]: string;
43
38
  };
44
39
  wsc?: Wsc;
45
- };
40
+ }
46
41
 
47
- export type WsgError = {
42
+ export interface WsgError {
48
43
  errorCode: string;
49
44
  message: string;
50
- };
45
+ }
51
46
 
52
- export type ConnectionDetails = {
47
+ export interface ConnectionDetails {
53
48
  creationTime: string;
54
49
  maxConnectionsPerSession: number;
55
50
  recoveryBufferSize: number;
@@ -59,7 +54,7 @@ export type ConnectionDetails = {
59
54
  maxActiveRequests: number;
60
55
  recoveryState?: 'Successful' | 'Failed';
61
56
  recoveryErrorCode?: string;
62
- };
57
+ }
63
58
 
64
59
  export interface WebSocketExtensionInterface {
65
60
  options: WebSocketOptions;
@@ -67,14 +62,15 @@ export interface WebSocketExtensionInterface {
67
62
  ws: WS;
68
63
  wsToken?: WsToken;
69
64
  rc: RingCentral;
70
- request<T>(
65
+ request: <T>(
71
66
  method: RestMethod,
72
67
  endpoint: string,
73
68
  content?: {},
74
69
  queryParams?: {},
75
70
  config?: RestRequestConfig,
76
- ): Promise<RestResponse<T>>;
71
+ ) => Promise<RestResponse<T>>;
77
72
  }
78
73
 
79
74
  export interface SubscriptionInterface {
75
+ eventFilters: string[];
80
76
  }
package/src/utils.ts CHANGED
@@ -1,24 +1,22 @@
1
1
  /* eslint-disable no-console */
2
- import WS, { MessageEvent } from 'isomorphic-ws';
2
+ import type { MessageEvent } from 'isomorphic-ws';
3
+ import type WS from 'isomorphic-ws';
3
4
 
4
- import { WsgMeta, WsgEvent } from './types';
5
+ import type { WsgMeta, WsgEvent } from './types';
5
6
  import ClosedException from './exceptions/ClosedException';
6
7
  import TimeoutException from './exceptions/TimeoutException';
7
8
 
8
9
  class Utils {
9
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- static splitWsgData(wsgData: string): [WsgMeta, any] {
11
+ public static splitWsgData(wsgData: string): [WsgMeta, any] {
11
12
  if (wsgData.includes(',--Boundary')) {
12
13
  const index = wsgData.indexOf(',--Boundary');
13
- return [
14
- JSON.parse(wsgData.substring(1, index)),
15
- wsgData.substring(index + 1, wsgData.length - 1),
16
- ];
14
+ return [JSON.parse(wsgData.substring(1, index)), wsgData.substring(index + 1, wsgData.length - 1)];
17
15
  }
18
16
  return JSON.parse(wsgData);
19
17
  }
20
18
 
21
- static debugWebSocket(_ws: WS) {
19
+ public static debugWebSocket(_ws: WS) {
22
20
  const ws = _ws;
23
21
  const send = ws.send.bind(ws);
24
22
  ws.send = async (str: string) => {
@@ -48,11 +46,7 @@ ${JSON.stringify(JSON.parse(event.data), null, 2)}
48
46
  });
49
47
  }
50
48
 
51
- static waitForWebSocketMessage(
52
- ws: WS,
53
- matchCondition: (meta: WsgMeta) => boolean,
54
- timeout = 60000,
55
- ) {
49
+ public static waitForWebSocketMessage(ws: WS, matchCondition: (meta: WsgMeta) => boolean, timeout = 60000) {
56
50
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
51
  return new Promise<[WsgMeta, any, WsgEvent]>((resolve, reject) => {
58
52
  const checkHandle = setInterval(() => {