@rc-ex/ws 1.2.1 → 1.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/lib/esm/exceptions/ClosedException.d.ts +4 -0
- package/lib/esm/exceptions/ClosedException.js +7 -0
- package/lib/esm/exceptions/ClosedException.js.map +1 -0
- package/lib/esm/exceptions/ConnectionException.d.ts +7 -0
- package/lib/esm/exceptions/ConnectionException.js +13 -0
- package/lib/esm/exceptions/ConnectionException.js.map +1 -0
- package/lib/esm/exceptions/TimeoutException.d.ts +4 -0
- package/lib/esm/exceptions/TimeoutException.js +7 -0
- package/lib/esm/exceptions/TimeoutException.js.map +1 -0
- package/lib/esm/index.d.ts +44 -0
- package/lib/{index.js → esm/index.js} +62 -63
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/rest.d.ts +3 -0
- package/lib/{rest.js → esm/rest.js} +10 -17
- package/lib/esm/rest.js.map +1 -0
- package/lib/esm/subscription.d.ts +20 -0
- package/lib/{subscription.js → esm/subscription.js} +9 -9
- package/lib/esm/subscription.js.map +1 -0
- package/lib/esm/types.d.ts +61 -0
- package/lib/esm/types.js +2 -0
- package/lib/esm/types.js.map +1 -0
- package/lib/esm/utils.d.ts +8 -0
- package/lib/{utils.js → esm/utils.js} +5 -10
- package/lib/esm/utils.js.map +1 -0
- package/lib/exceptions/ClosedException.cjs +26 -0
- package/lib/exceptions/ClosedException.js.map +1 -1
- package/lib/exceptions/ConnectionException.cjs +35 -0
- package/lib/exceptions/ConnectionException.d.ts +1 -1
- package/lib/exceptions/ConnectionException.js.map +1 -1
- package/lib/exceptions/TimeoutException.cjs +26 -0
- package/lib/exceptions/TimeoutException.js.map +1 -1
- package/lib/index.cjs +515 -0
- package/lib/index.d.ts +5 -5
- package/lib/index.js.map +1 -1
- package/lib/rest.cjs +104 -0
- package/lib/rest.d.ts +2 -2
- package/lib/rest.js.map +1 -1
- package/lib/subscription.cjs +178 -0
- package/lib/subscription.d.ts +3 -3
- package/lib/subscription.js.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/utils.cjs +116 -0
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js.map +1 -1
- package/package.json +10 -5
- package/src/exceptions/ConnectionException.ts +2 -2
- package/src/index.ts +15 -12
- package/src/rest.ts +4 -4
- package/src/subscription.ts +9 -5
- package/src/types.ts +1 -1
- package/src/utils.ts +3 -3
- package/tsconfig.json +0 -3
- package/lib/exceptions/ClosedException.js +0 -9
- package/lib/exceptions/ConnectionException.js +0 -16
- package/lib/exceptions/TimeoutException.js +0 -9
- /package/lib/{types.js → types.cjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
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,IAAI,2BAA2B,CAAC,CAAC;IAChD,CAAC;CACF;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Utils from "../utils.js";
|
|
2
|
+
class ConnectionException extends Error {
|
|
3
|
+
wsgEvent;
|
|
4
|
+
wsgError;
|
|
5
|
+
constructor(wsgEvent) {
|
|
6
|
+
const [, wsgError] = Utils.splitWsgData(wsgEvent.data);
|
|
7
|
+
super(JSON.stringify(wsgError, null, 2));
|
|
8
|
+
this.wsgEvent = wsgEvent;
|
|
9
|
+
this.wsgError = wsgError;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export default ConnectionException;
|
|
13
|
+
//# sourceMappingURL=ConnectionException.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionException.js","sourceRoot":"","sources":["../../../src/exceptions/ConnectionException.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,mBAAoB,SAAQ,KAAK;IAC9B,QAAQ,CAAW;IAEnB,QAAQ,CAAW;IAE1B,YAAmB,QAAkB;QACnC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAwB,KAAK,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,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
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,IAAI,uDAAuD,CAAC,CAAC;IAC5E,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type RingCentral from "@rc-ex/core";
|
|
2
|
+
import SdkExtension from "@rc-ex/core/lib/esm/SdkExtension.js";
|
|
3
|
+
import WS from "isomorphic-ws";
|
|
4
|
+
import { EventEmitter } from "events";
|
|
5
|
+
import type SubscriptionInfo from "@rc-ex/core/lib/esm/definitions/SubscriptionInfo.js";
|
|
6
|
+
import { request } from "./rest.js";
|
|
7
|
+
import type { ConnectionDetails, WebSocketOptions, Wsc, WsToken } from "./types.js";
|
|
8
|
+
import Subscription from "./subscription.js";
|
|
9
|
+
export declare enum Events {
|
|
10
|
+
autoRecoverSuccess = "autoRecoverSuccess",
|
|
11
|
+
autoRecoverFailed = "autoRecoverFailed",
|
|
12
|
+
autoRecoverError = "autoRecoverError",
|
|
13
|
+
newWebSocketObject = "newWebSocketObject",
|
|
14
|
+
newWsc = "newWsc",
|
|
15
|
+
connectionReady = "connectionReady"
|
|
16
|
+
}
|
|
17
|
+
declare class WebSocketExtension extends SdkExtension {
|
|
18
|
+
eventEmitter: EventEmitter<[never]>;
|
|
19
|
+
options: WebSocketOptions;
|
|
20
|
+
rc: RingCentral;
|
|
21
|
+
wsToken?: WsToken;
|
|
22
|
+
wsTokenExpiresAt: number;
|
|
23
|
+
ws: WS;
|
|
24
|
+
connectionDetails: ConnectionDetails;
|
|
25
|
+
wsc?: Wsc;
|
|
26
|
+
subscription?: Subscription;
|
|
27
|
+
intervalHandle?: NodeJS.Timeout;
|
|
28
|
+
recoverTimestamp?: number;
|
|
29
|
+
pingServerHandle?: NodeJS.Timeout;
|
|
30
|
+
_recoverPromise?: Promise<void>;
|
|
31
|
+
_connectPromise?: Promise<void>;
|
|
32
|
+
request: typeof request;
|
|
33
|
+
constructor(options?: WebSocketOptions);
|
|
34
|
+
disable(): void;
|
|
35
|
+
install(rc: RingCentral): Promise<void>;
|
|
36
|
+
recover(): Promise<void>;
|
|
37
|
+
_recover(): Promise<void>;
|
|
38
|
+
pingServer(): Promise<void>;
|
|
39
|
+
connect(recoverSession?: boolean): Promise<void>;
|
|
40
|
+
_connect(recoverSession?: boolean): Promise<void>;
|
|
41
|
+
revoke(keepInterval?: boolean): Promise<void>;
|
|
42
|
+
subscribe(eventFilters: string[], callback: (event: {}) => void, cache?: SubscriptionInfo | undefined | null): Promise<Subscription>;
|
|
43
|
+
}
|
|
44
|
+
export default WebSocketExtension;
|
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const wait_for_async_1 = __importDefault(require("wait-for-async"));
|
|
12
|
-
const RestException_1 = __importDefault(require("@rc-ex/core/lib/RestException"));
|
|
13
|
-
const rest_1 = require("./rest");
|
|
14
|
-
const subscription_1 = __importDefault(require("./subscription"));
|
|
15
|
-
const ConnectionException_1 = __importDefault(require("./exceptions/ConnectionException"));
|
|
16
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
1
|
+
import SdkExtension from "@rc-ex/core/lib/esm/SdkExtension.js";
|
|
2
|
+
import WS from "isomorphic-ws";
|
|
3
|
+
import hyperid from "hyperid";
|
|
4
|
+
import { EventEmitter } from "events";
|
|
5
|
+
import waitFor from "wait-for-async";
|
|
6
|
+
import RestException from "@rc-ex/core/lib/esm/RestException.js";
|
|
7
|
+
import { request } from "./rest.js";
|
|
8
|
+
import Subscription from "./subscription.js";
|
|
9
|
+
import ConnectionException from "./exceptions/ConnectionException.js";
|
|
10
|
+
import Utils from "./utils.js";
|
|
17
11
|
const CONNECTING = 0;
|
|
18
12
|
const OPEN = 1;
|
|
19
|
-
const uuid = (
|
|
20
|
-
var Events;
|
|
13
|
+
const uuid = hyperid();
|
|
14
|
+
export var Events;
|
|
21
15
|
(function (Events) {
|
|
22
16
|
Events["autoRecoverSuccess"] = "autoRecoverSuccess";
|
|
23
17
|
Events["autoRecoverFailed"] = "autoRecoverFailed";
|
|
@@ -25,26 +19,37 @@ var Events;
|
|
|
25
19
|
Events["newWebSocketObject"] = "newWebSocketObject";
|
|
26
20
|
Events["newWsc"] = "newWsc";
|
|
27
21
|
Events["connectionReady"] = "connectionReady";
|
|
28
|
-
})(Events || (
|
|
29
|
-
class WebSocketExtension extends
|
|
22
|
+
})(Events || (Events = {}));
|
|
23
|
+
class WebSocketExtension extends SdkExtension {
|
|
24
|
+
eventEmitter = new EventEmitter();
|
|
25
|
+
options;
|
|
26
|
+
rc;
|
|
27
|
+
wsToken;
|
|
28
|
+
wsTokenExpiresAt = 0;
|
|
29
|
+
ws;
|
|
30
|
+
connectionDetails;
|
|
31
|
+
wsc;
|
|
32
|
+
subscription;
|
|
33
|
+
// for auto recover
|
|
34
|
+
intervalHandle;
|
|
35
|
+
recoverTimestamp;
|
|
36
|
+
pingServerHandle;
|
|
37
|
+
_recoverPromise;
|
|
38
|
+
_connectPromise;
|
|
39
|
+
request = request; // request method was moved to another file to keep this file short
|
|
30
40
|
constructor(options = {}) {
|
|
31
|
-
var _a, _b, _c, _d, _e;
|
|
32
|
-
var _f, _g, _h, _j, _k;
|
|
33
41
|
super();
|
|
34
|
-
this.eventEmitter = new events_1.EventEmitter();
|
|
35
|
-
this.wsTokenExpiresAt = 0;
|
|
36
|
-
this.request = rest_1.request; // request method was moved to another file to keep this file short
|
|
37
42
|
this.options = options;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
this.options.restOverWebSocket ??= false;
|
|
44
|
+
this.options.debugMode ??= false;
|
|
45
|
+
this.options.autoRecover ??= {
|
|
41
46
|
enabled: true,
|
|
42
|
-
}
|
|
43
|
-
|
|
47
|
+
};
|
|
48
|
+
this.options.autoRecover.checkInterval ??= (retriesAttempted) => {
|
|
44
49
|
const interval = 2000 + 2000 * retriesAttempted;
|
|
45
50
|
return Math.min(8000, interval);
|
|
46
|
-
}
|
|
47
|
-
|
|
51
|
+
};
|
|
52
|
+
this.options.autoRecover.pingServerInterval ??= 60000;
|
|
48
53
|
}
|
|
49
54
|
disable() {
|
|
50
55
|
super.disable();
|
|
@@ -57,14 +62,13 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
57
62
|
if (this.options.restOverWebSocket) {
|
|
58
63
|
const request = rc.request.bind(rc);
|
|
59
64
|
rc.request = async (method, endpoint, content, queryParams, config) => {
|
|
60
|
-
var _a, _b, _c;
|
|
61
65
|
if (!this.enabled || !this.options.restOverWebSocket) {
|
|
62
66
|
return request(method, endpoint, content, queryParams, config);
|
|
63
67
|
}
|
|
64
68
|
if (
|
|
65
69
|
// the following cannot be done with WebSocket
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
config?.headers?.getContentType?.toString()?.includes("multipart/form-data") ||
|
|
71
|
+
config?.responseType === "arraybuffer" ||
|
|
68
72
|
endpoint.startsWith("/restapi/oauth/") // token, revoke, wstoken
|
|
69
73
|
) {
|
|
70
74
|
return request(method, endpoint, content, queryParams, config);
|
|
@@ -90,7 +94,7 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
90
94
|
await connectMethod();
|
|
91
95
|
}
|
|
92
96
|
catch (e) {
|
|
93
|
-
if (e instanceof
|
|
97
|
+
if (e instanceof RestException) {
|
|
94
98
|
throw e; // such as InsufficientPermissions
|
|
95
99
|
}
|
|
96
100
|
if (this.options.debugMode) {
|
|
@@ -100,18 +104,17 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
100
104
|
let retriesAttempted = 0;
|
|
101
105
|
let checking = false;
|
|
102
106
|
const check = async () => {
|
|
103
|
-
var _a, _b, _c;
|
|
104
107
|
if (!this.enabled) {
|
|
105
108
|
return;
|
|
106
109
|
}
|
|
107
|
-
if (
|
|
110
|
+
if (this.options.autoRecover?.enabled !== true) {
|
|
108
111
|
return;
|
|
109
112
|
}
|
|
110
113
|
if (checking) {
|
|
111
114
|
return;
|
|
112
115
|
}
|
|
113
116
|
checking = true;
|
|
114
|
-
if (
|
|
117
|
+
if (this.ws?.readyState !== OPEN && this.ws?.readyState !== CONNECTING) {
|
|
115
118
|
clearInterval(this.intervalHandle);
|
|
116
119
|
try {
|
|
117
120
|
await this.recover();
|
|
@@ -124,7 +127,7 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
124
127
|
: Events.autoRecoverFailed, this.ws);
|
|
125
128
|
}
|
|
126
129
|
catch (e) {
|
|
127
|
-
if (e instanceof
|
|
130
|
+
if (e instanceof RestException) {
|
|
128
131
|
throw e; // such as InsufficientPermissions
|
|
129
132
|
}
|
|
130
133
|
retriesAttempted += 1;
|
|
@@ -139,15 +142,15 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
139
142
|
};
|
|
140
143
|
this.intervalHandle = setInterval(check, this.options.autoRecover.checkInterval(retriesAttempted));
|
|
141
144
|
// browser only code start
|
|
142
|
-
if (typeof window !== "undefined" &&
|
|
143
|
-
window.addEventListener
|
|
144
|
-
|
|
145
|
+
if (typeof globalThis.window !== "undefined" &&
|
|
146
|
+
globalThis.window.addEventListener) {
|
|
147
|
+
globalThis.window.addEventListener("offline", () => {
|
|
145
148
|
if (this.pingServerHandle) {
|
|
146
149
|
clearTimeout(this.pingServerHandle);
|
|
147
150
|
}
|
|
148
|
-
|
|
151
|
+
this.ws?.close();
|
|
149
152
|
});
|
|
150
|
-
window.addEventListener("online", () => {
|
|
153
|
+
globalThis.window.addEventListener("online", () => {
|
|
151
154
|
check();
|
|
152
155
|
});
|
|
153
156
|
}
|
|
@@ -167,8 +170,7 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
167
170
|
return undefined;
|
|
168
171
|
}
|
|
169
172
|
async _recover() {
|
|
170
|
-
|
|
171
|
-
if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === OPEN || ((_b = this.ws) === null || _b === void 0 ? void 0 : _b.readyState) === CONNECTING) {
|
|
173
|
+
if (this.ws?.readyState === OPEN || this.ws?.readyState === CONNECTING) {
|
|
172
174
|
return;
|
|
173
175
|
}
|
|
174
176
|
if (!this.wsc || !this.wsc.token) {
|
|
@@ -196,11 +198,10 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
196
198
|
this.enable();
|
|
197
199
|
}
|
|
198
200
|
async pingServer() {
|
|
199
|
-
|
|
200
|
-
if (((_a = this.options.autoRecover) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
|
|
201
|
+
if (this.options.autoRecover?.enabled !== true) {
|
|
201
202
|
return;
|
|
202
203
|
}
|
|
203
|
-
if (
|
|
204
|
+
if (this.ws?.readyState !== OPEN) {
|
|
204
205
|
return;
|
|
205
206
|
}
|
|
206
207
|
try {
|
|
@@ -229,7 +230,6 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
229
230
|
return undefined;
|
|
230
231
|
}
|
|
231
232
|
async _connect(recoverSession = false) {
|
|
232
|
-
var _a;
|
|
233
233
|
if (!this.wsToken || Date.now() > this.wsTokenExpiresAt) {
|
|
234
234
|
const r = await this.rc.post("/restapi/oauth/wstoken");
|
|
235
235
|
this.wsToken = r.data;
|
|
@@ -240,20 +240,20 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
240
240
|
if (recoverSession && this.wsc) {
|
|
241
241
|
wsUri += `&wsc=${this.wsc.token}`;
|
|
242
242
|
}
|
|
243
|
-
this.ws = new
|
|
243
|
+
this.ws = new WS(wsUri);
|
|
244
244
|
this.eventEmitter.emit(Events.newWebSocketObject, this.ws);
|
|
245
245
|
// override send method to wait for connecting
|
|
246
246
|
const send = this.ws.send.bind(this.ws);
|
|
247
247
|
this.ws.send = async (s) => {
|
|
248
248
|
if (this.ws.readyState === CONNECTING) {
|
|
249
|
-
await (
|
|
249
|
+
await waitFor({
|
|
250
250
|
interval: 100,
|
|
251
251
|
condition: () => this.ws.readyState !== CONNECTING,
|
|
252
252
|
});
|
|
253
253
|
}
|
|
254
254
|
await send(s);
|
|
255
255
|
};
|
|
256
|
-
if (
|
|
256
|
+
if (this.options.autoRecover?.enabled) {
|
|
257
257
|
this.ws.addEventListener("message", () => {
|
|
258
258
|
if (this.pingServerHandle) {
|
|
259
259
|
clearTimeout(this.pingServerHandle);
|
|
@@ -263,12 +263,12 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
263
263
|
}
|
|
264
264
|
// debug mode to print all WebSocket traffic
|
|
265
265
|
if (this.options.debugMode) {
|
|
266
|
-
|
|
266
|
+
Utils.debugWebSocket(this.ws);
|
|
267
267
|
}
|
|
268
268
|
// listen for new wsc data
|
|
269
269
|
this.ws.addEventListener("message", (mEvent) => {
|
|
270
270
|
const event = mEvent;
|
|
271
|
-
const [meta, body] =
|
|
271
|
+
const [meta, body] = Utils.splitWsgData(event.data);
|
|
272
272
|
if (meta.wsc &&
|
|
273
273
|
(!this.wsc ||
|
|
274
274
|
(meta.type === "ConnectionDetails" && body.recoveryState) ||
|
|
@@ -278,9 +278,9 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
278
278
|
}
|
|
279
279
|
});
|
|
280
280
|
// get initial ConnectionDetails data
|
|
281
|
-
const [meta, body, event] = await
|
|
281
|
+
const [meta, body, event] = await Utils.waitForWebSocketMessage(this.ws, (meta) => meta.type === "ConnectionDetails" || meta.type === "Error");
|
|
282
282
|
if (meta.type === "Error") {
|
|
283
|
-
throw new
|
|
283
|
+
throw new ConnectionException(event);
|
|
284
284
|
}
|
|
285
285
|
this.connectionDetails = body;
|
|
286
286
|
// fired when ws connection is ready for creating subscription
|
|
@@ -297,8 +297,7 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
297
297
|
}
|
|
298
298
|
// keepInterval means we do not clear the interval
|
|
299
299
|
async revoke(keepInterval = false) {
|
|
300
|
-
|
|
301
|
-
await ((_a = this.subscription) === null || _a === void 0 ? void 0 : _a.revoke());
|
|
300
|
+
await this.subscription?.revoke();
|
|
302
301
|
this.subscription = undefined;
|
|
303
302
|
if (!keepInterval && this.intervalHandle) {
|
|
304
303
|
clearInterval(this.intervalHandle);
|
|
@@ -306,14 +305,14 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
306
305
|
if (this.pingServerHandle) {
|
|
307
306
|
clearTimeout(this.pingServerHandle);
|
|
308
307
|
}
|
|
309
|
-
|
|
308
|
+
this.ws?.close();
|
|
310
309
|
this.wsc = undefined;
|
|
311
310
|
this.wsToken = undefined;
|
|
312
311
|
this.wsTokenExpiresAt = 0;
|
|
313
312
|
this.disable();
|
|
314
313
|
}
|
|
315
314
|
async subscribe(eventFilters, callback, cache = undefined) {
|
|
316
|
-
const subscription = new
|
|
315
|
+
const subscription = new Subscription(this, eventFilters, callback);
|
|
317
316
|
if (cache === undefined || cache === null) {
|
|
318
317
|
await subscription.subscribe();
|
|
319
318
|
}
|
|
@@ -325,5 +324,5 @@ class WebSocketExtension extends SdkExtension_1.default {
|
|
|
325
324
|
return subscription;
|
|
326
325
|
}
|
|
327
326
|
}
|
|
328
|
-
|
|
327
|
+
export default WebSocketExtension;
|
|
329
328
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RestMethod, RestRequestConfig, RestResponse } from "@rc-ex/core/lib/esm/types.js";
|
|
2
|
+
import type { WebSocketExtensionInterface } from "./types.js";
|
|
3
|
+
export declare function request<T>(this: WebSocketExtensionInterface, method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig): Promise<RestResponse<T>>;
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.request = request;
|
|
7
|
-
const RestException_1 = __importDefault(require("@rc-ex/core/lib/RestException"));
|
|
8
|
-
const hyperid_1 = __importDefault(require("hyperid"));
|
|
9
|
-
const http_status_codes_1 = require("http-status-codes");
|
|
10
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
1
|
+
import RestException from "@rc-ex/core/lib/esm/RestException.js";
|
|
2
|
+
import hyperid from "hyperid";
|
|
3
|
+
import { getReasonPhrase } from "http-status-codes";
|
|
4
|
+
import Utils from "./utils.js";
|
|
11
5
|
const version = "0.16";
|
|
12
|
-
const uuid = (
|
|
13
|
-
async function request(method, endpoint, content, queryParams, config) {
|
|
14
|
-
var _a;
|
|
6
|
+
const uuid = hyperid();
|
|
7
|
+
export async function request(method, endpoint, content, queryParams, config) {
|
|
15
8
|
const newConfig = {
|
|
16
9
|
method,
|
|
17
|
-
baseURL:
|
|
10
|
+
baseURL: this.wsToken?.uri,
|
|
18
11
|
url: endpoint,
|
|
19
12
|
data: content,
|
|
20
13
|
params: queryParams,
|
|
@@ -39,17 +32,17 @@ async function request(method, endpoint, content, queryParams, config) {
|
|
|
39
32
|
requestBody.push(newConfig.data);
|
|
40
33
|
}
|
|
41
34
|
await this.ws.send(JSON.stringify(requestBody));
|
|
42
|
-
const [meta, body] = await
|
|
35
|
+
const [meta, body] = await Utils.waitForWebSocketMessage(this.ws, (_meta) => _meta.messageId === messageId);
|
|
43
36
|
const response = {
|
|
44
37
|
data: body,
|
|
45
38
|
status: meta.status,
|
|
46
|
-
statusText:
|
|
39
|
+
statusText: getReasonPhrase(meta.status),
|
|
47
40
|
headers: meta.headers,
|
|
48
41
|
config: newConfig,
|
|
49
42
|
};
|
|
50
43
|
if (meta.type === "ClientRequest" && meta.status >= 200 && meta.status < 300) {
|
|
51
44
|
return response;
|
|
52
45
|
}
|
|
53
|
-
throw new
|
|
46
|
+
throw new RestException(response);
|
|
54
47
|
}
|
|
55
48
|
//# sourceMappingURL=rest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/rest.ts"],"names":[],"mappings":"AAKA,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,MAAM,YAAY,CAAC;AAG/B,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,OAAO,CAE3B,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B;IAE1B,MAAM,SAAS,GAAsB;QACnC,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,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,IACtC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,UAChB,8BAA8B,OAAO,EAAE;KACjC,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,KAAK,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,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,SAAgB;KACzB,CAAC;IACF,IACE,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EACxE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type CreateSubscriptionRequest from "@rc-ex/core/lib/esm/definitions/CreateSubscriptionRequest.js";
|
|
2
|
+
import type SubscriptionInfo from "@rc-ex/core/lib/esm/definitions/SubscriptionInfo.js";
|
|
3
|
+
import type { MessageEvent } from "ws";
|
|
4
|
+
import type { WebSocketExtensionInterface } from "./types.js";
|
|
5
|
+
declare class Subscription {
|
|
6
|
+
subscriptionInfo?: SubscriptionInfo;
|
|
7
|
+
wse: WebSocketExtensionInterface;
|
|
8
|
+
eventFilters: string[];
|
|
9
|
+
eventListener: (event: MessageEvent) => void;
|
|
10
|
+
timeout?: NodeJS.Timeout;
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
constructor(wse: WebSocketExtensionInterface, eventFilters: string[], callback: (event: {}) => void);
|
|
13
|
+
setupWsEventListener(): void;
|
|
14
|
+
get requestBody(): CreateSubscriptionRequest;
|
|
15
|
+
subscribe(): Promise<void>;
|
|
16
|
+
refresh(): Promise<void>;
|
|
17
|
+
revoke(): Promise<void>;
|
|
18
|
+
remove(): void;
|
|
19
|
+
}
|
|
20
|
+
export default Subscription;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
1
|
+
import Utils from "./utils.js";
|
|
7
2
|
class Subscription {
|
|
3
|
+
subscriptionInfo;
|
|
4
|
+
wse;
|
|
5
|
+
eventFilters;
|
|
6
|
+
eventListener;
|
|
7
|
+
timeout;
|
|
8
|
+
enabled = true;
|
|
8
9
|
constructor(wse, eventFilters, callback) {
|
|
9
|
-
this.enabled = true;
|
|
10
10
|
this.wse = wse;
|
|
11
11
|
this.eventFilters = eventFilters;
|
|
12
12
|
this.eventListener = (mEvent) => {
|
|
13
13
|
const event = mEvent;
|
|
14
|
-
const [meta, body] =
|
|
14
|
+
const [meta, body] = Utils
|
|
15
15
|
.splitWsgData(event.data);
|
|
16
16
|
if (this.enabled && meta.type === "ServerNotification" &&
|
|
17
17
|
body.subscriptionId === this.subscriptionInfo.id) {
|
|
@@ -87,5 +87,5 @@ class Subscription {
|
|
|
87
87
|
this.wse.subscription = undefined;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
export default Subscription;
|
|
91
91
|
//# sourceMappingURL=subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/subscription.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type RingCentral from "@rc-ex/core";
|
|
2
|
+
import type { RestMethod, RestRequestConfig, RestResponse } from "@rc-ex/core/lib/esm/types.js";
|
|
3
|
+
import type WS from "isomorphic-ws";
|
|
4
|
+
export interface WsToken {
|
|
5
|
+
uri: string;
|
|
6
|
+
ws_access_token: string;
|
|
7
|
+
expires_in: number;
|
|
8
|
+
}
|
|
9
|
+
export type CheckInterval = (retriesAttempted: number) => number;
|
|
10
|
+
export interface WebSocketOptions {
|
|
11
|
+
restOverWebSocket?: boolean;
|
|
12
|
+
debugMode?: boolean;
|
|
13
|
+
autoRecover?: {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
checkInterval?: CheckInterval;
|
|
16
|
+
pingServerInterval?: number;
|
|
17
|
+
};
|
|
18
|
+
wscToken?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface WsgEvent {
|
|
21
|
+
data: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Wsc {
|
|
24
|
+
token: string;
|
|
25
|
+
sequence: number;
|
|
26
|
+
}
|
|
27
|
+
export interface WsgMeta {
|
|
28
|
+
type: "ClientRequest" | "ServerNotification" | "Error" | "ConnectionDetails" | "Heartbeat";
|
|
29
|
+
messageId: string;
|
|
30
|
+
status: number;
|
|
31
|
+
headers: {
|
|
32
|
+
[key: string]: string;
|
|
33
|
+
};
|
|
34
|
+
wsc?: Wsc;
|
|
35
|
+
}
|
|
36
|
+
export interface WsgError {
|
|
37
|
+
errorCode: string;
|
|
38
|
+
message: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ConnectionDetails {
|
|
41
|
+
creationTime: string;
|
|
42
|
+
maxConnectionsPerSession: number;
|
|
43
|
+
recoveryBufferSize: number;
|
|
44
|
+
recoveryTimeout: number;
|
|
45
|
+
idleTimeout: number;
|
|
46
|
+
absoluteTimeout: number;
|
|
47
|
+
maxActiveRequests: number;
|
|
48
|
+
recoveryState?: "Successful" | "Failed";
|
|
49
|
+
recoveryErrorCode?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface WebSocketExtensionInterface {
|
|
52
|
+
options: WebSocketOptions;
|
|
53
|
+
subscription?: SubscriptionInterface;
|
|
54
|
+
ws: WS;
|
|
55
|
+
wsToken?: WsToken;
|
|
56
|
+
rc: RingCentral;
|
|
57
|
+
request: <T>(method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig) => Promise<RestResponse<T>>;
|
|
58
|
+
}
|
|
59
|
+
export interface SubscriptionInterface {
|
|
60
|
+
eventFilters: string[];
|
|
61
|
+
}
|
package/lib/esm/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type WS from "isomorphic-ws";
|
|
2
|
+
import type { WsgEvent, WsgMeta } from "./types.js";
|
|
3
|
+
declare class Utils {
|
|
4
|
+
static splitWsgData(wsgData: string): [WsgMeta, any];
|
|
5
|
+
static debugWebSocket(_ws: WS): void;
|
|
6
|
+
static waitForWebSocketMessage(ws: WS, matchCondition: (meta: WsgMeta) => boolean, timeout?: number): Promise<[WsgMeta, any, WsgEvent]>;
|
|
7
|
+
}
|
|
8
|
+
export default Utils;
|