@orderly.network/net 2.8.10-alpha.0 → 2.8.11-alpha.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/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +19 -33
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -7,7 +7,7 @@ declare global {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
declare const _default: "2.8.
|
|
10
|
+
declare const _default: "2.8.11-alpha.0";
|
|
11
11
|
|
|
12
12
|
declare function get<R>(url: string, options?: RequestInit, formatter?: (data: any) => R): Promise<R>;
|
|
13
13
|
declare function post(url: string, data: any, options?: Omit<RequestInit, "method">): Promise<any>;
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ declare global {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
declare const _default: "2.8.
|
|
10
|
+
declare const _default: "2.8.11-alpha.0";
|
|
11
11
|
|
|
12
12
|
declare function get<R>(url: string, options?: RequestInit, formatter?: (data: any) => R): Promise<R>;
|
|
13
13
|
declare function post(url: string, data: any, options?: Omit<RequestInit, "method">): Promise<any>;
|
package/dist/index.js
CHANGED
|
@@ -65,8 +65,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
65
65
|
};
|
|
66
66
|
|
|
67
67
|
// src/index.ts
|
|
68
|
-
var
|
|
69
|
-
__export(
|
|
68
|
+
var index_exports = {};
|
|
69
|
+
__export(index_exports, {
|
|
70
70
|
WS: () => WS,
|
|
71
71
|
WebSocketEvent: () => WebSocketEvent,
|
|
72
72
|
__ORDERLY_API_URL_KEY__: () => __ORDERLY_API_URL_KEY__,
|
|
@@ -77,14 +77,14 @@ __export(src_exports, {
|
|
|
77
77
|
put: () => put,
|
|
78
78
|
version: () => version_default
|
|
79
79
|
});
|
|
80
|
-
module.exports = __toCommonJS(
|
|
80
|
+
module.exports = __toCommonJS(index_exports);
|
|
81
81
|
|
|
82
82
|
// src/version.ts
|
|
83
83
|
if (typeof window !== "undefined") {
|
|
84
84
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
85
|
-
window.__ORDERLY_VERSION__["@orderly.network/net"] = "2.8.
|
|
85
|
+
window.__ORDERLY_VERSION__["@orderly.network/net"] = "2.8.11-alpha.0";
|
|
86
86
|
}
|
|
87
|
-
var version_default = "2.8.
|
|
87
|
+
var version_default = "2.8.11-alpha.0";
|
|
88
88
|
|
|
89
89
|
// src/errors/apiError.ts
|
|
90
90
|
var ApiError = class extends Error {
|
|
@@ -246,8 +246,7 @@ var WS = class extends import_eventemitter3.default {
|
|
|
246
246
|
if (typeof message !== "string") {
|
|
247
247
|
message = JSON.stringify(message);
|
|
248
248
|
}
|
|
249
|
-
if (typeof message === "undefined")
|
|
250
|
-
return;
|
|
249
|
+
if (typeof message === "undefined") return;
|
|
251
250
|
if (((_a = this._publicSocket) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
252
251
|
(_b = this._publicSocket) == null ? void 0 : _b.send(message);
|
|
253
252
|
} else {
|
|
@@ -296,10 +295,8 @@ var WS = class extends import_eventemitter3.default {
|
|
|
296
295
|
checkSocketStatus() {
|
|
297
296
|
var _a, _b, _c, _d;
|
|
298
297
|
const now = Date.now();
|
|
299
|
-
if (document.visibilityState !== "visible")
|
|
300
|
-
|
|
301
|
-
if (!navigator.onLine)
|
|
302
|
-
return;
|
|
298
|
+
if (document.visibilityState !== "visible") return;
|
|
299
|
+
if (!navigator.onLine) return;
|
|
303
300
|
if (!this.publicIsReconnecting) {
|
|
304
301
|
if (((_a = this._publicSocket) == null ? void 0 : _a.readyState) === WebSocket.CLOSED) {
|
|
305
302
|
this.reconnectPublic();
|
|
@@ -459,10 +456,8 @@ var WS = class extends import_eventemitter3.default {
|
|
|
459
456
|
setTimeout(() => this.checkSocketStatus(), 0);
|
|
460
457
|
}
|
|
461
458
|
onPrivateClose(event) {
|
|
462
|
-
if (event.code === 3887)
|
|
463
|
-
|
|
464
|
-
if (this.privateIsReconnecting)
|
|
465
|
-
return;
|
|
459
|
+
if (event.code === 3887) return;
|
|
460
|
+
if (this.privateIsReconnecting) return;
|
|
466
461
|
this._eventPrivateHandlers.forEach((value, key) => {
|
|
467
462
|
value.callback.forEach((cb) => {
|
|
468
463
|
this._pendingPrivateSubscribe.push([value.params, cb, value.isOnce]);
|
|
@@ -484,8 +479,7 @@ var WS = class extends import_eventemitter3.default {
|
|
|
484
479
|
if (((_a = this._publicSocket) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
485
480
|
(_b = this._publicSocket) == null ? void 0 : _b.close(3888);
|
|
486
481
|
} else {
|
|
487
|
-
if (this._publicRetryCount > CONNECT_LIMIT)
|
|
488
|
-
return;
|
|
482
|
+
if (this._publicRetryCount > CONNECT_LIMIT) return;
|
|
489
483
|
setTimeout(() => {
|
|
490
484
|
this.reconnectPublic();
|
|
491
485
|
}, this._publicRetryCount * 1e3);
|
|
@@ -503,8 +497,7 @@ var WS = class extends import_eventemitter3.default {
|
|
|
503
497
|
if (((_a = this.privateSocket) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
504
498
|
this.privateSocket.close(3888);
|
|
505
499
|
} else {
|
|
506
|
-
if (this._privateRetryCount > CONNECT_LIMIT)
|
|
507
|
-
return;
|
|
500
|
+
if (this._privateRetryCount > CONNECT_LIMIT) return;
|
|
508
501
|
setTimeout(() => {
|
|
509
502
|
this.reconnectPrivate();
|
|
510
503
|
}, this._privateRetryCount * 1e3);
|
|
@@ -530,8 +523,7 @@ var WS = class extends import_eventemitter3.default {
|
|
|
530
523
|
authenticate(accountId) {
|
|
531
524
|
return __async(this, null, function* () {
|
|
532
525
|
var _a, _b;
|
|
533
|
-
if (this.authenticated)
|
|
534
|
-
return;
|
|
526
|
+
if (this.authenticated) return;
|
|
535
527
|
if (!this.privateSocket) {
|
|
536
528
|
console.error("private ws not connected");
|
|
537
529
|
return;
|
|
@@ -672,8 +664,7 @@ var WS = class extends import_eventemitter3.default {
|
|
|
672
664
|
const index = handler.callback.findIndex(
|
|
673
665
|
(cb) => cb.onMessage === parmas.onMessage
|
|
674
666
|
);
|
|
675
|
-
if (index === -1)
|
|
676
|
-
return;
|
|
667
|
+
if (index === -1) return;
|
|
677
668
|
handler.callback.splice(index, 1);
|
|
678
669
|
}
|
|
679
670
|
}
|
|
@@ -701,11 +692,9 @@ var WS = class extends import_eventemitter3.default {
|
|
|
701
692
|
return [__spreadProps(__spreadValues({}, subscribeMessage), { onMessage }), onUnsubscribe];
|
|
702
693
|
}
|
|
703
694
|
reconnectPublic() {
|
|
704
|
-
if (this.publicIsReconnecting)
|
|
705
|
-
return;
|
|
695
|
+
if (this.publicIsReconnecting) return;
|
|
706
696
|
this.publicIsReconnecting = true;
|
|
707
|
-
if (typeof window === "undefined")
|
|
708
|
-
return;
|
|
697
|
+
if (typeof window === "undefined") return;
|
|
709
698
|
window.setTimeout(() => {
|
|
710
699
|
this._publicRetryCount++;
|
|
711
700
|
this.createPublicSC(this.options);
|
|
@@ -717,13 +706,10 @@ var WS = class extends import_eventemitter3.default {
|
|
|
717
706
|
}, this.reconnectInterval);
|
|
718
707
|
}
|
|
719
708
|
reconnectPrivate() {
|
|
720
|
-
if (!this.options.accountId)
|
|
721
|
-
|
|
722
|
-
if (this.privateIsReconnecting)
|
|
723
|
-
return;
|
|
709
|
+
if (!this.options.accountId) return;
|
|
710
|
+
if (this.privateIsReconnecting) return;
|
|
724
711
|
this.privateIsReconnecting = true;
|
|
725
|
-
if (typeof window === "undefined")
|
|
726
|
-
return;
|
|
712
|
+
if (typeof window === "undefined") return;
|
|
727
713
|
window.setTimeout(() => {
|
|
728
714
|
this._privateRetryCount++;
|
|
729
715
|
this.createPrivateSC(this.options);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/version.ts","../src/errors/apiError.ts","../src/fetch/index.ts","../src/constants.ts","../src/ws/ws.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts"],"sourcesContent":["export { default as version } from \"./version\";\nexport { get, post, del, put, mutate } from \"./fetch\";\n\nexport { __ORDERLY_API_URL_KEY__ } from \"./constants\";\n\nexport { WS, WebSocketEvent } from \"./ws/ws\";\n","declare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/net\"] = \"2.8.10-alpha.0\";\n}\n\nexport default \"2.8.10-alpha.0\";\n","export class ApiError extends Error {\n constructor(message: string, private readonly code: number) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"../errors/apiError\";\n\nasync function request(url: string, options: RequestInit) {\n //\n if (!url.startsWith(\"http\")) {\n throw new Error(\"url must start with http(s)\");\n }\n // const urlInstance = new URL(url);\n const response = await fetch(url, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers, options.method),\n });\n\n if (response.ok) {\n const res = await response.json();\n return res;\n // if (res.success) {\n // return res;\n // } else {\n // throw new Error(res.message);\n // }\n } else {\n // console.log(response.status);\n try {\n const errorMsg = await response.json();\n if (response.status === 400) {\n throw new ApiError(\n errorMsg.message || errorMsg.code || response.statusText,\n errorMsg.code,\n );\n }\n // TODO: throw error code\n throw new Error(errorMsg.message || errorMsg.code || response.statusText);\n } catch (e) {\n throw e;\n }\n }\n\n // throw new Error(response.statusText);\n}\n\nfunction _createHeaders(\n headers: HeadersInit = {},\n method?: string,\n): HeadersInit {\n //\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n if (method !== \"DELETE\") {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\n } else {\n _headers.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\n }\n }\n\n return _headers;\n}\n\nasync function get<R>(\n url: string,\n options?: RequestInit,\n formatter?: (data: any) => R,\n): Promise<R> {\n const res = await request(url, {\n method: \"GET\",\n ...options,\n });\n\n if (res.success) {\n if (typeof formatter === \"function\") {\n return formatter(res.data);\n }\n // Return the required data based on the returned data structure\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] as unknown as R;\n }\n return res.data;\n }\n throw new Error(res.message);\n}\nasync function post(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function put(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"PUT\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function del(\n url: string,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"DELETE\",\n ...options,\n });\n\n return res;\n}\n\nasync function mutate(url: string, init: RequestInit) {\n const res = await request(url, init);\n\n return res;\n}\n\nexport { get, post, del, put, mutate, request };\n","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import EventEmitter from \"eventemitter3\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n privateUrl: string;\n publicUrl?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\nexport enum WebSocketEvent {\n OPEN = \"open\",\n CLOSE = \"close\",\n ERROR = \"error\",\n MESSAGE = \"message\",\n CONNECTING = \"connecting\",\n RECONNECTING = \"reconnecting\",\n}\n\nexport type MessageParams = {\n event: string;\n topic: string;\n\n onMessage?: (message: any) => any;\n\n params?: any;\n // [key: string]: any;\n};\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => any;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: MessageParams;\n isPrivate?: boolean;\n isOnce?: boolean;\n callback: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\nconst COMMON_ID = \"OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY\";\n\nconst TIME_OUT = 1000 * 60 * 2;\nconst CONNECT_LIMIT = 5;\n\nexport class WS extends EventEmitter {\n private _publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private _eventContainer: Map<string, Set<(message: any) => void>> = new Map();\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n // all message handlers\n private _eventHandlers: Map<string, Topics> = new Map();\n private _eventPrivateHandlers: Map<string, Topics> = new Map();\n\n private _publicHeartbeatTime?: number;\n private _privateHeartbeatTime?: number;\n\n private _publicRetryCount: number = 0;\n private _privateRetryCount: number = 0;\n\n constructor(private options: WSOptions) {\n super();\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n\n this.bindEvents();\n }\n\n private bindEvents() {\n if (typeof document !== \"undefined\") {\n document.addEventListener?.(\n \"visibilitychange\",\n this.onVisibilityChange.bind(this),\n );\n }\n\n if (typeof window !== \"undefined\") {\n window.addEventListener?.(\n \"online\",\n this.onNetworkStatusChange.bind(this),\n );\n // window.addEventListener?.(\"offline\", (e) => {\n // // console.log(\"👀👀👀👀👀👀👀👀👀\", \"offline\");\n // this.emit(\"offline\", e);\n // });\n }\n }\n\n private onVisibilityChange() {\n if (document.visibilityState === \"visible\") {\n this.checkSocketStatus();\n }\n // else {\n // this.publicSocket.close();\n // this.privateSocket?.close();\n // }\n }\n\n private onNetworkStatusChange() {\n if (navigator.onLine) {\n this.checkSocketStatus();\n }\n }\n\n /**\n * Determine the current connection status,\n * 1. If it is disconnected, reconnect\n * 2. If no message is received for too long, disconnect and reconnect actively\n * 3. When returning from the background and the network status changes, the following process is followed\n */\n private checkSocketStatus() {\n const now = Date.now();\n\n //\n // \"👀👀 checkNetworkStatus 👀👀\",\n // this._publicHeartbeatTime,\n // this._privateHeartbeatTime,\n // now,\n // this.publicSocket.readyState,\n // this.privateSocket?.readyState\n // );\n\n // check the last time\n // If the view is not visible, do not process it\n if (document.visibilityState !== \"visible\") return;\n // If the network is not available, do not process it\n if (!navigator.onLine) return;\n\n // public\n if (!this.publicIsReconnecting) {\n if (this._publicSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPublic();\n } else {\n if (now - this._publicHeartbeatTime! > TIME_OUT) {\n //unsubscribe all public topic\n this._publicSocket?.close(3888);\n }\n }\n }\n\n if (!this.privateIsReconnecting) {\n // private\n if (this.privateSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPrivate();\n } else {\n if (\n this._privateHeartbeatTime &&\n now - this._privateHeartbeatTime! > TIME_OUT\n ) {\n // unsubscribe all private topic\n this.privateSocket?.close(3888);\n }\n }\n }\n }\n\n public openPrivate(accountId: string) {\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n return;\n }\n this.createPrivateSC({\n ...this.options,\n accountId,\n });\n }\n\n public closePrivate(code?: number, reason?: string) {\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n return;\n }\n\n this.authenticated = false;\n\n this._pendingPrivateSubscribe = [];\n\n this._eventPrivateHandlers.clear();\n\n this.privateSocket?.close(code, reason);\n }\n\n private createPublicSC(options: WSOptions) {\n if (!options.publicUrl) {\n return;\n }\n\n if (\n this._publicSocket &&\n this._publicSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this._publicSocket = new WebSocket(\n `${options.publicUrl}/ws/stream/${COMMON_ID}`,\n );\n this._publicSocket.onopen = this.onOpen.bind(this);\n // this.publicSocket.onmessage = this.onPublicMessage.bind(this);\n this._publicSocket.addEventListener(\n \"message\",\n this.onPublicMessage.bind(this),\n );\n this._publicSocket.addEventListener(\"close\", this.onPublicClose.bind(this));\n this._publicSocket.addEventListener(\"error\", this.onPublicError.bind(this));\n // this.publicSocket.onclose = this.onPublicClose.bind(this);\n // this.publicSocket.onerror = this.onPublicError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n if (\n this.privateSocket &&\n this.privateSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this.options = options;\n\n this.privateSocket = new WebSocket(\n `${this.options.privateUrl}/v2/ws/private/stream/${options.accountId}`,\n );\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onPrivateMessage.bind(this);\n this.privateSocket.onclose = this.onPrivateClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n //\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb, isOnce]) => {\n this.subscribe(params, cb, isOnce);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: false,\n isReconnect: this._publicRetryCount > 0,\n });\n\n this._publicRetryCount = 0;\n }\n\n private onPrivateOpen(event: Event) {\n // auth\n this.authenticate(this.options.accountId!)\n .then(() => {\n this.privateIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: true,\n isReconnect: this._privateRetryCount > 0,\n });\n\n this._privateRetryCount = 0;\n })\n .catch((e) => {\n console.log(\"ws authenticate failed\", e);\n });\n }\n\n private onMessage(\n event: MessageEvent,\n socket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n try {\n const message = JSON.parse(event.data);\n\n const commoneHandler = messageHandlers.get(message.event);\n\n if (message.event === \"auth\" && message.success) {\n this.authenticated = true;\n this.handlePendingPrivateTopic();\n return;\n }\n\n if (commoneHandler) {\n commoneHandler.handle(message, socket);\n } else {\n const topicKey = this.getTopicKeyFromMessage(message);\n\n const eventhandler = handlerMap.get(topicKey);\n //\n if (eventhandler?.callback) {\n // console.log(\"👀👀👀👀👀👀👀👀👀\", topicKey, eventhandler?.callback);\n eventhandler.callback.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n\n if (data) {\n cb.onMessage(data);\n }\n });\n }\n\n // emit event\n this._eventContainer.forEach((_, key) => {\n const reg = new RegExp(key);\n if (reg.test(topicKey)) {\n this.emit(key, message);\n }\n });\n }\n\n //\n } catch (e) {}\n\n // You can process the received message here\n }\n\n private onPublicMessage(event: MessageEvent) {\n this.onMessage(event, this._publicSocket, this._eventHandlers);\n // update last message time for public\n this._publicHeartbeatTime = Date.now();\n }\n\n private onPrivateMessage(event: MessageEvent) {\n this.onMessage(event, this.privateSocket!, this._eventPrivateHandlers);\n // update last message time for private\n this._privateHeartbeatTime = Date.now();\n }\n\n private handlePendingPrivateTopic() {\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.privateSubscribe(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n }\n\n private onPublicClose(event: CloseEvent) {\n // move handler to pending\n this._eventHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPublicSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventHandlers.delete(key);\n });\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: false,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPrivateClose(event: CloseEvent) {\n if (event.code === 3887) return;\n if (this.privateIsReconnecting) return;\n this._eventPrivateHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPrivateSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventPrivateHandlers.delete(key);\n });\n this.authenticated = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: true,\n event,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPublicError(event: Event) {\n console.error(\"public WebSocket error:\", event);\n this.publicIsReconnecting = false;\n\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.close(3888);\n } else {\n // retry connect\n if (this._publicRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPublic();\n // this._publicRetryCount++;\n }, this._publicRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventHandlers);\n this.emit(\"status:change\", {\n type: WebSocketEvent.ERROR,\n isPrivate: false,\n });\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n this.privateIsReconnecting = false;\n\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n this.privateSocket.close(3888);\n } else {\n // retry connect\n if (this._privateRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPrivate();\n // this._privateRetryCount++;\n }, this._privateRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventPrivateHandlers);\n this.emit(\"status:change\", { type: WebSocketEvent.ERROR, isPrivate: true });\n }\n\n private errorBoardscast(error: any, eventHandlers: Map<string, Topics>) {\n eventHandlers.forEach((value) => {\n value.callback.forEach((cb) => {\n cb.onError?.(error);\n });\n });\n }\n\n send = (message: any) => {\n if (typeof message !== \"string\") {\n message = JSON.stringify(message);\n }\n if (typeof message === \"undefined\") return;\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.send(message);\n //\n } else {\n console.warn(\"WebSocket connection is not open. Cannot send message.\");\n }\n };\n\n close() {\n this._publicSocket?.close();\n this.privateSocket?.close();\n }\n\n set accountId(accountId: string) {}\n\n private async authenticate(accountId: string) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n if (this.privateSocket.readyState !== WebSocket.OPEN) {\n return;\n }\n\n const message = await this.options.onSigntureRequest?.(accountId);\n\n this.privateSocket.send(\n JSON.stringify({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n }),\n );\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n privateSubscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n );\n\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n this._pendingPrivateSubscribe.push([params, callback]);\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventPrivateHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventPrivateHandlers.set(topic, {\n params,\n callback: [callbacks],\n });\n this.privateSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n subscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n once?: boolean,\n id?: string,\n ): unsubscribe | undefined {\n if (!this._publicSocket) {\n return;\n }\n\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n (callback as WSMessageHandler).onMessage,\n );\n\n //\n\n if (this._publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, callback, once, id]);\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n return;\n }\n\n const topic = this.getTopicKeyFromParams(subscribeMessage);\n // const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventHandlers.set(topic, {\n params,\n isOnce: once,\n callback: [callbacks],\n });\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n if (once) {\n handler.callback = [callbacks];\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n }\n\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n }\n\n private getTopicKeyFromParams(params: any): string {\n let topic;\n\n if (params.topic) {\n topic = params.topic;\n } else {\n const eventName = params.event;\n topic = params.event;\n\n if (params.id) {\n topic += `_${params.id}`;\n }\n }\n\n return topic;\n }\n\n private getTopicKeyFromMessage(message: any): string {\n let topic;\n if (message.topic) {\n topic = message.topic;\n } else {\n if (message.event) {\n topic = `${message.event}`;\n\n if (message.id) {\n topic += `_${message.id}`;\n }\n }\n }\n\n return topic;\n }\n\n // sendPublicMessage(){\n // if(this.publicSocket.readyState !== )\n // }\n\n onceSubscribe(\n params: any,\n callback: Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n this.subscribe(params, callback, true);\n }\n\n private unsubscribe(\n parmas: MessageParams,\n webSocket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n const topic = parmas.topic || parmas.event;\n const handler = handlerMap.get(topic);\n\n // console.log(\"unsubscribe\", topic);\n\n if (!!handler && Array.isArray(handler?.callback)) {\n if (handler!.callback.length === 1) {\n const unsubscribeMessage = handler!.callback[0].onUnsubscribe(topic);\n\n //\n webSocket.send(JSON.stringify(unsubscribeMessage));\n handlerMap.delete(topic);\n //post unsubscribe message\n } else {\n const index = handler.callback.findIndex(\n (cb) => cb.onMessage === parmas.onMessage,\n );\n\n // console.log(index, handler.callback.length);\n\n if (index === -1) return;\n\n handler.callback.splice(index, 1);\n\n // handlerMap.set(topic, {\n // ...handler,\n // callback: handler.callback.splice(index, 1),\n // });\n }\n }\n }\n\n private unsubscribePrivate(parmas: MessageParams) {\n this.unsubscribe(parmas, this.privateSocket!, this._eventPrivateHandlers);\n }\n\n private unsubscribePublic(parmas: MessageParams) {\n this.unsubscribe(parmas, this._publicSocket, this._eventHandlers);\n }\n\n private generateMessage(\n params: any,\n onUnsubscribe?: (event: string) => any,\n onMessage?: (message: any) => any,\n ): [MessageParams, (event: string) => any] {\n let subscribeMessage;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n } else {\n subscribeMessage = params;\n }\n\n if (typeof onUnsubscribe !== \"function\") {\n if (typeof params === \"string\") {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params });\n } else {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params.topic });\n }\n }\n\n return [{ ...subscribeMessage, onMessage }, onUnsubscribe];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._publicRetryCount++;\n this.createPublicSC(this.options);\n // this.emit(\"reconnect:public\", { count: this._publicRetryCount });\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: false,\n count: this._publicRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n private reconnectPrivate() {\n if (!this.options.accountId) return;\n if (this.privateIsReconnecting) return;\n this.privateIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._privateRetryCount++;\n this.createPrivateSC(this.options);\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: true,\n count: this._privateRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n // get publicSocket(): WebSocket {\n // return this._publicSocket;\n // }\n\n get client(): {\n public: WebSocket;\n private?: WebSocket;\n } {\n return {\n public: this._publicSocket,\n private: this.privateSocket,\n };\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\n\nexport default class BaseHandler implements MessageHandler {\n handle(message: any, webSocket: WebSocket) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, webSocket: WebSocket) {\n webSocket.send(JSON.stringify({ event: \"pong\", ts: Date.now() }));\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\nimport PingHandler from \"./ping\";\n\nexport type MessageType =\n | \"ping\"\n | \"pong\"\n | \"subscribe\"\n | \"unsubscribe\"\n | \"authenticate\"\n | \"message\"\n | \"error\"\n | \"auth\"\n | \"close\";\n\nexport const messageHandlers = new Map<MessageType, MessageHandler>([\n [\"ping\", new PingHandler()],\n]);\n"],"mappings":"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","names":["WebSocketEvent","EventEmitter"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/version.ts","../src/errors/apiError.ts","../src/fetch/index.ts","../src/constants.ts","../src/ws/ws.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts"],"sourcesContent":["export { default as version } from \"./version\";\nexport { get, post, del, put, mutate } from \"./fetch\";\n\nexport { __ORDERLY_API_URL_KEY__ } from \"./constants\";\n\nexport { WS, WebSocketEvent } from \"./ws/ws\";\n","declare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/net\"] = \"2.8.11-alpha.0\";\n}\n\nexport default \"2.8.11-alpha.0\";\n","export class ApiError extends Error {\n constructor(message: string, private readonly code: number) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"../errors/apiError\";\n\nasync function request(url: string, options: RequestInit) {\n //\n if (!url.startsWith(\"http\")) {\n throw new Error(\"url must start with http(s)\");\n }\n // const urlInstance = new URL(url);\n const response = await fetch(url, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers, options.method),\n });\n\n if (response.ok) {\n const res = await response.json();\n return res;\n // if (res.success) {\n // return res;\n // } else {\n // throw new Error(res.message);\n // }\n } else {\n // console.log(response.status);\n try {\n const errorMsg = await response.json();\n if (response.status === 400) {\n throw new ApiError(\n errorMsg.message || errorMsg.code || response.statusText,\n errorMsg.code,\n );\n }\n // TODO: throw error code\n throw new Error(errorMsg.message || errorMsg.code || response.statusText);\n } catch (e) {\n throw e;\n }\n }\n\n // throw new Error(response.statusText);\n}\n\nfunction _createHeaders(\n headers: HeadersInit = {},\n method?: string,\n): HeadersInit {\n //\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n if (method !== \"DELETE\") {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\n } else {\n _headers.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\n }\n }\n\n return _headers;\n}\n\nasync function get<R>(\n url: string,\n options?: RequestInit,\n formatter?: (data: any) => R,\n): Promise<R> {\n const res = await request(url, {\n method: \"GET\",\n ...options,\n });\n\n if (res.success) {\n if (typeof formatter === \"function\") {\n return formatter(res.data);\n }\n // Return the required data based on the returned data structure\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] as unknown as R;\n }\n return res.data;\n }\n throw new Error(res.message);\n}\nasync function post(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function put(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"PUT\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function del(\n url: string,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"DELETE\",\n ...options,\n });\n\n return res;\n}\n\nasync function mutate(url: string, init: RequestInit) {\n const res = await request(url, init);\n\n return res;\n}\n\nexport { get, post, del, put, mutate, request };\n","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import EventEmitter from \"eventemitter3\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n privateUrl: string;\n publicUrl?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\nexport enum WebSocketEvent {\n OPEN = \"open\",\n CLOSE = \"close\",\n ERROR = \"error\",\n MESSAGE = \"message\",\n CONNECTING = \"connecting\",\n RECONNECTING = \"reconnecting\",\n}\n\nexport type MessageParams = {\n event: string;\n topic: string;\n\n onMessage?: (message: any) => any;\n\n params?: any;\n // [key: string]: any;\n};\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => any;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: MessageParams;\n isPrivate?: boolean;\n isOnce?: boolean;\n callback: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\nconst COMMON_ID = \"OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY\";\n\nconst TIME_OUT = 1000 * 60 * 2;\nconst CONNECT_LIMIT = 5;\n\nexport class WS extends EventEmitter {\n private _publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private _eventContainer: Map<string, Set<(message: any) => void>> = new Map();\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n // all message handlers\n private _eventHandlers: Map<string, Topics> = new Map();\n private _eventPrivateHandlers: Map<string, Topics> = new Map();\n\n private _publicHeartbeatTime?: number;\n private _privateHeartbeatTime?: number;\n\n private _publicRetryCount: number = 0;\n private _privateRetryCount: number = 0;\n\n constructor(private options: WSOptions) {\n super();\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n\n this.bindEvents();\n }\n\n private bindEvents() {\n if (typeof document !== \"undefined\") {\n document.addEventListener?.(\n \"visibilitychange\",\n this.onVisibilityChange.bind(this),\n );\n }\n\n if (typeof window !== \"undefined\") {\n window.addEventListener?.(\n \"online\",\n this.onNetworkStatusChange.bind(this),\n );\n // window.addEventListener?.(\"offline\", (e) => {\n // // console.log(\"👀👀👀👀👀👀👀👀👀\", \"offline\");\n // this.emit(\"offline\", e);\n // });\n }\n }\n\n private onVisibilityChange() {\n if (document.visibilityState === \"visible\") {\n this.checkSocketStatus();\n }\n // else {\n // this.publicSocket.close();\n // this.privateSocket?.close();\n // }\n }\n\n private onNetworkStatusChange() {\n if (navigator.onLine) {\n this.checkSocketStatus();\n }\n }\n\n /**\n * Determine the current connection status,\n * 1. If it is disconnected, reconnect\n * 2. If no message is received for too long, disconnect and reconnect actively\n * 3. When returning from the background and the network status changes, the following process is followed\n */\n private checkSocketStatus() {\n const now = Date.now();\n\n //\n // \"👀👀 checkNetworkStatus 👀👀\",\n // this._publicHeartbeatTime,\n // this._privateHeartbeatTime,\n // now,\n // this.publicSocket.readyState,\n // this.privateSocket?.readyState\n // );\n\n // check the last time\n // If the view is not visible, do not process it\n if (document.visibilityState !== \"visible\") return;\n // If the network is not available, do not process it\n if (!navigator.onLine) return;\n\n // public\n if (!this.publicIsReconnecting) {\n if (this._publicSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPublic();\n } else {\n if (now - this._publicHeartbeatTime! > TIME_OUT) {\n //unsubscribe all public topic\n this._publicSocket?.close(3888);\n }\n }\n }\n\n if (!this.privateIsReconnecting) {\n // private\n if (this.privateSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPrivate();\n } else {\n if (\n this._privateHeartbeatTime &&\n now - this._privateHeartbeatTime! > TIME_OUT\n ) {\n // unsubscribe all private topic\n this.privateSocket?.close(3888);\n }\n }\n }\n }\n\n public openPrivate(accountId: string) {\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n return;\n }\n this.createPrivateSC({\n ...this.options,\n accountId,\n });\n }\n\n public closePrivate(code?: number, reason?: string) {\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n return;\n }\n\n this.authenticated = false;\n\n this._pendingPrivateSubscribe = [];\n\n this._eventPrivateHandlers.clear();\n\n this.privateSocket?.close(code, reason);\n }\n\n private createPublicSC(options: WSOptions) {\n if (!options.publicUrl) {\n return;\n }\n\n if (\n this._publicSocket &&\n this._publicSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this._publicSocket = new WebSocket(\n `${options.publicUrl}/ws/stream/${COMMON_ID}`,\n );\n this._publicSocket.onopen = this.onOpen.bind(this);\n // this.publicSocket.onmessage = this.onPublicMessage.bind(this);\n this._publicSocket.addEventListener(\n \"message\",\n this.onPublicMessage.bind(this),\n );\n this._publicSocket.addEventListener(\"close\", this.onPublicClose.bind(this));\n this._publicSocket.addEventListener(\"error\", this.onPublicError.bind(this));\n // this.publicSocket.onclose = this.onPublicClose.bind(this);\n // this.publicSocket.onerror = this.onPublicError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n if (\n this.privateSocket &&\n this.privateSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this.options = options;\n\n this.privateSocket = new WebSocket(\n `${this.options.privateUrl}/v2/ws/private/stream/${options.accountId}`,\n );\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onPrivateMessage.bind(this);\n this.privateSocket.onclose = this.onPrivateClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n //\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb, isOnce]) => {\n this.subscribe(params, cb, isOnce);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: false,\n isReconnect: this._publicRetryCount > 0,\n });\n\n this._publicRetryCount = 0;\n }\n\n private onPrivateOpen(event: Event) {\n // auth\n this.authenticate(this.options.accountId!)\n .then(() => {\n this.privateIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: true,\n isReconnect: this._privateRetryCount > 0,\n });\n\n this._privateRetryCount = 0;\n })\n .catch((e) => {\n console.log(\"ws authenticate failed\", e);\n });\n }\n\n private onMessage(\n event: MessageEvent,\n socket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n try {\n const message = JSON.parse(event.data);\n\n const commoneHandler = messageHandlers.get(message.event);\n\n if (message.event === \"auth\" && message.success) {\n this.authenticated = true;\n this.handlePendingPrivateTopic();\n return;\n }\n\n if (commoneHandler) {\n commoneHandler.handle(message, socket);\n } else {\n const topicKey = this.getTopicKeyFromMessage(message);\n\n const eventhandler = handlerMap.get(topicKey);\n //\n if (eventhandler?.callback) {\n // console.log(\"👀👀👀👀👀👀👀👀👀\", topicKey, eventhandler?.callback);\n eventhandler.callback.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n\n if (data) {\n cb.onMessage(data);\n }\n });\n }\n\n // emit event\n this._eventContainer.forEach((_, key) => {\n const reg = new RegExp(key);\n if (reg.test(topicKey)) {\n this.emit(key, message);\n }\n });\n }\n\n //\n } catch (e) {}\n\n // You can process the received message here\n }\n\n private onPublicMessage(event: MessageEvent) {\n this.onMessage(event, this._publicSocket, this._eventHandlers);\n // update last message time for public\n this._publicHeartbeatTime = Date.now();\n }\n\n private onPrivateMessage(event: MessageEvent) {\n this.onMessage(event, this.privateSocket!, this._eventPrivateHandlers);\n // update last message time for private\n this._privateHeartbeatTime = Date.now();\n }\n\n private handlePendingPrivateTopic() {\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.privateSubscribe(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n }\n\n private onPublicClose(event: CloseEvent) {\n // move handler to pending\n this._eventHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPublicSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventHandlers.delete(key);\n });\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: false,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPrivateClose(event: CloseEvent) {\n if (event.code === 3887) return;\n if (this.privateIsReconnecting) return;\n this._eventPrivateHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPrivateSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventPrivateHandlers.delete(key);\n });\n this.authenticated = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: true,\n event,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPublicError(event: Event) {\n console.error(\"public WebSocket error:\", event);\n this.publicIsReconnecting = false;\n\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.close(3888);\n } else {\n // retry connect\n if (this._publicRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPublic();\n // this._publicRetryCount++;\n }, this._publicRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventHandlers);\n this.emit(\"status:change\", {\n type: WebSocketEvent.ERROR,\n isPrivate: false,\n });\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n this.privateIsReconnecting = false;\n\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n this.privateSocket.close(3888);\n } else {\n // retry connect\n if (this._privateRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPrivate();\n // this._privateRetryCount++;\n }, this._privateRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventPrivateHandlers);\n this.emit(\"status:change\", { type: WebSocketEvent.ERROR, isPrivate: true });\n }\n\n private errorBoardscast(error: any, eventHandlers: Map<string, Topics>) {\n eventHandlers.forEach((value) => {\n value.callback.forEach((cb) => {\n cb.onError?.(error);\n });\n });\n }\n\n send = (message: any) => {\n if (typeof message !== \"string\") {\n message = JSON.stringify(message);\n }\n if (typeof message === \"undefined\") return;\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.send(message);\n //\n } else {\n console.warn(\"WebSocket connection is not open. Cannot send message.\");\n }\n };\n\n close() {\n this._publicSocket?.close();\n this.privateSocket?.close();\n }\n\n set accountId(accountId: string) {}\n\n private async authenticate(accountId: string) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n if (this.privateSocket.readyState !== WebSocket.OPEN) {\n return;\n }\n\n const message = await this.options.onSigntureRequest?.(accountId);\n\n this.privateSocket.send(\n JSON.stringify({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n }),\n );\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n privateSubscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n );\n\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n this._pendingPrivateSubscribe.push([params, callback]);\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventPrivateHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventPrivateHandlers.set(topic, {\n params,\n callback: [callbacks],\n });\n this.privateSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n subscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n once?: boolean,\n id?: string,\n ): unsubscribe | undefined {\n if (!this._publicSocket) {\n return;\n }\n\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n (callback as WSMessageHandler).onMessage,\n );\n\n //\n\n if (this._publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, callback, once, id]);\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n return;\n }\n\n const topic = this.getTopicKeyFromParams(subscribeMessage);\n // const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventHandlers.set(topic, {\n params,\n isOnce: once,\n callback: [callbacks],\n });\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n if (once) {\n handler.callback = [callbacks];\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n }\n\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n }\n\n private getTopicKeyFromParams(params: any): string {\n let topic;\n\n if (params.topic) {\n topic = params.topic;\n } else {\n const eventName = params.event;\n topic = params.event;\n\n if (params.id) {\n topic += `_${params.id}`;\n }\n }\n\n return topic;\n }\n\n private getTopicKeyFromMessage(message: any): string {\n let topic;\n if (message.topic) {\n topic = message.topic;\n } else {\n if (message.event) {\n topic = `${message.event}`;\n\n if (message.id) {\n topic += `_${message.id}`;\n }\n }\n }\n\n return topic;\n }\n\n // sendPublicMessage(){\n // if(this.publicSocket.readyState !== )\n // }\n\n onceSubscribe(\n params: any,\n callback: Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n this.subscribe(params, callback, true);\n }\n\n private unsubscribe(\n parmas: MessageParams,\n webSocket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n const topic = parmas.topic || parmas.event;\n const handler = handlerMap.get(topic);\n\n // console.log(\"unsubscribe\", topic);\n\n if (!!handler && Array.isArray(handler?.callback)) {\n if (handler!.callback.length === 1) {\n const unsubscribeMessage = handler!.callback[0].onUnsubscribe(topic);\n\n //\n webSocket.send(JSON.stringify(unsubscribeMessage));\n handlerMap.delete(topic);\n //post unsubscribe message\n } else {\n const index = handler.callback.findIndex(\n (cb) => cb.onMessage === parmas.onMessage,\n );\n\n // console.log(index, handler.callback.length);\n\n if (index === -1) return;\n\n handler.callback.splice(index, 1);\n\n // handlerMap.set(topic, {\n // ...handler,\n // callback: handler.callback.splice(index, 1),\n // });\n }\n }\n }\n\n private unsubscribePrivate(parmas: MessageParams) {\n this.unsubscribe(parmas, this.privateSocket!, this._eventPrivateHandlers);\n }\n\n private unsubscribePublic(parmas: MessageParams) {\n this.unsubscribe(parmas, this._publicSocket, this._eventHandlers);\n }\n\n private generateMessage(\n params: any,\n onUnsubscribe?: (event: string) => any,\n onMessage?: (message: any) => any,\n ): [MessageParams, (event: string) => any] {\n let subscribeMessage;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n } else {\n subscribeMessage = params;\n }\n\n if (typeof onUnsubscribe !== \"function\") {\n if (typeof params === \"string\") {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params });\n } else {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params.topic });\n }\n }\n\n return [{ ...subscribeMessage, onMessage }, onUnsubscribe];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._publicRetryCount++;\n this.createPublicSC(this.options);\n // this.emit(\"reconnect:public\", { count: this._publicRetryCount });\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: false,\n count: this._publicRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n private reconnectPrivate() {\n if (!this.options.accountId) return;\n if (this.privateIsReconnecting) return;\n this.privateIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._privateRetryCount++;\n this.createPrivateSC(this.options);\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: true,\n count: this._privateRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n // get publicSocket(): WebSocket {\n // return this._publicSocket;\n // }\n\n get client(): {\n public: WebSocket;\n private?: WebSocket;\n } {\n return {\n public: this._publicSocket,\n private: this.privateSocket,\n };\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\n\nexport default class BaseHandler implements MessageHandler {\n handle(message: any, webSocket: WebSocket) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, webSocket: WebSocket) {\n webSocket.send(JSON.stringify({ event: \"pong\", ts: Date.now() }));\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\nimport PingHandler from \"./ping\";\n\nexport type MessageType =\n | \"ping\"\n | \"pong\"\n | \"subscribe\"\n | \"unsubscribe\"\n | \"authenticate\"\n | \"message\"\n | \"error\"\n | \"auth\"\n | \"close\";\n\nexport const messageHandlers = new Map<MessageType, MessageHandler>([\n [\"ping\", new PingHandler()],\n]);\n"],"mappings":"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","names":["WebSocketEvent","EventEmitter"]}
|
package/dist/index.mjs
CHANGED
|
@@ -41,9 +41,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
41
41
|
// src/version.ts
|
|
42
42
|
if (typeof window !== "undefined") {
|
|
43
43
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
44
|
-
window.__ORDERLY_VERSION__["@orderly.network/net"] = "2.8.
|
|
44
|
+
window.__ORDERLY_VERSION__["@orderly.network/net"] = "2.8.11-alpha.0";
|
|
45
45
|
}
|
|
46
|
-
var version_default = "2.8.
|
|
46
|
+
var version_default = "2.8.11-alpha.0";
|
|
47
47
|
|
|
48
48
|
// src/errors/apiError.ts
|
|
49
49
|
var ApiError = class extends Error {
|
|
@@ -205,8 +205,7 @@ var WS = class extends EventEmitter {
|
|
|
205
205
|
if (typeof message !== "string") {
|
|
206
206
|
message = JSON.stringify(message);
|
|
207
207
|
}
|
|
208
|
-
if (typeof message === "undefined")
|
|
209
|
-
return;
|
|
208
|
+
if (typeof message === "undefined") return;
|
|
210
209
|
if (((_a = this._publicSocket) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
211
210
|
(_b = this._publicSocket) == null ? void 0 : _b.send(message);
|
|
212
211
|
} else {
|
|
@@ -255,10 +254,8 @@ var WS = class extends EventEmitter {
|
|
|
255
254
|
checkSocketStatus() {
|
|
256
255
|
var _a, _b, _c, _d;
|
|
257
256
|
const now = Date.now();
|
|
258
|
-
if (document.visibilityState !== "visible")
|
|
259
|
-
|
|
260
|
-
if (!navigator.onLine)
|
|
261
|
-
return;
|
|
257
|
+
if (document.visibilityState !== "visible") return;
|
|
258
|
+
if (!navigator.onLine) return;
|
|
262
259
|
if (!this.publicIsReconnecting) {
|
|
263
260
|
if (((_a = this._publicSocket) == null ? void 0 : _a.readyState) === WebSocket.CLOSED) {
|
|
264
261
|
this.reconnectPublic();
|
|
@@ -418,10 +415,8 @@ var WS = class extends EventEmitter {
|
|
|
418
415
|
setTimeout(() => this.checkSocketStatus(), 0);
|
|
419
416
|
}
|
|
420
417
|
onPrivateClose(event) {
|
|
421
|
-
if (event.code === 3887)
|
|
422
|
-
|
|
423
|
-
if (this.privateIsReconnecting)
|
|
424
|
-
return;
|
|
418
|
+
if (event.code === 3887) return;
|
|
419
|
+
if (this.privateIsReconnecting) return;
|
|
425
420
|
this._eventPrivateHandlers.forEach((value, key) => {
|
|
426
421
|
value.callback.forEach((cb) => {
|
|
427
422
|
this._pendingPrivateSubscribe.push([value.params, cb, value.isOnce]);
|
|
@@ -443,8 +438,7 @@ var WS = class extends EventEmitter {
|
|
|
443
438
|
if (((_a = this._publicSocket) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
444
439
|
(_b = this._publicSocket) == null ? void 0 : _b.close(3888);
|
|
445
440
|
} else {
|
|
446
|
-
if (this._publicRetryCount > CONNECT_LIMIT)
|
|
447
|
-
return;
|
|
441
|
+
if (this._publicRetryCount > CONNECT_LIMIT) return;
|
|
448
442
|
setTimeout(() => {
|
|
449
443
|
this.reconnectPublic();
|
|
450
444
|
}, this._publicRetryCount * 1e3);
|
|
@@ -462,8 +456,7 @@ var WS = class extends EventEmitter {
|
|
|
462
456
|
if (((_a = this.privateSocket) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
463
457
|
this.privateSocket.close(3888);
|
|
464
458
|
} else {
|
|
465
|
-
if (this._privateRetryCount > CONNECT_LIMIT)
|
|
466
|
-
return;
|
|
459
|
+
if (this._privateRetryCount > CONNECT_LIMIT) return;
|
|
467
460
|
setTimeout(() => {
|
|
468
461
|
this.reconnectPrivate();
|
|
469
462
|
}, this._privateRetryCount * 1e3);
|
|
@@ -489,8 +482,7 @@ var WS = class extends EventEmitter {
|
|
|
489
482
|
authenticate(accountId) {
|
|
490
483
|
return __async(this, null, function* () {
|
|
491
484
|
var _a, _b;
|
|
492
|
-
if (this.authenticated)
|
|
493
|
-
return;
|
|
485
|
+
if (this.authenticated) return;
|
|
494
486
|
if (!this.privateSocket) {
|
|
495
487
|
console.error("private ws not connected");
|
|
496
488
|
return;
|
|
@@ -631,8 +623,7 @@ var WS = class extends EventEmitter {
|
|
|
631
623
|
const index = handler.callback.findIndex(
|
|
632
624
|
(cb) => cb.onMessage === parmas.onMessage
|
|
633
625
|
);
|
|
634
|
-
if (index === -1)
|
|
635
|
-
return;
|
|
626
|
+
if (index === -1) return;
|
|
636
627
|
handler.callback.splice(index, 1);
|
|
637
628
|
}
|
|
638
629
|
}
|
|
@@ -660,11 +651,9 @@ var WS = class extends EventEmitter {
|
|
|
660
651
|
return [__spreadProps(__spreadValues({}, subscribeMessage), { onMessage }), onUnsubscribe];
|
|
661
652
|
}
|
|
662
653
|
reconnectPublic() {
|
|
663
|
-
if (this.publicIsReconnecting)
|
|
664
|
-
return;
|
|
654
|
+
if (this.publicIsReconnecting) return;
|
|
665
655
|
this.publicIsReconnecting = true;
|
|
666
|
-
if (typeof window === "undefined")
|
|
667
|
-
return;
|
|
656
|
+
if (typeof window === "undefined") return;
|
|
668
657
|
window.setTimeout(() => {
|
|
669
658
|
this._publicRetryCount++;
|
|
670
659
|
this.createPublicSC(this.options);
|
|
@@ -676,13 +665,10 @@ var WS = class extends EventEmitter {
|
|
|
676
665
|
}, this.reconnectInterval);
|
|
677
666
|
}
|
|
678
667
|
reconnectPrivate() {
|
|
679
|
-
if (!this.options.accountId)
|
|
680
|
-
|
|
681
|
-
if (this.privateIsReconnecting)
|
|
682
|
-
return;
|
|
668
|
+
if (!this.options.accountId) return;
|
|
669
|
+
if (this.privateIsReconnecting) return;
|
|
683
670
|
this.privateIsReconnecting = true;
|
|
684
|
-
if (typeof window === "undefined")
|
|
685
|
-
return;
|
|
671
|
+
if (typeof window === "undefined") return;
|
|
686
672
|
window.setTimeout(() => {
|
|
687
673
|
this._privateRetryCount++;
|
|
688
674
|
this.createPrivateSC(this.options);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts","../src/errors/apiError.ts","../src/fetch/index.ts","../src/constants.ts","../src/ws/ws.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts"],"sourcesContent":["declare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/net\"] = \"2.8.10-alpha.0\";\n}\n\nexport default \"2.8.10-alpha.0\";\n","export class ApiError extends Error {\n constructor(message: string, private readonly code: number) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"../errors/apiError\";\n\nasync function request(url: string, options: RequestInit) {\n //\n if (!url.startsWith(\"http\")) {\n throw new Error(\"url must start with http(s)\");\n }\n // const urlInstance = new URL(url);\n const response = await fetch(url, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers, options.method),\n });\n\n if (response.ok) {\n const res = await response.json();\n return res;\n // if (res.success) {\n // return res;\n // } else {\n // throw new Error(res.message);\n // }\n } else {\n // console.log(response.status);\n try {\n const errorMsg = await response.json();\n if (response.status === 400) {\n throw new ApiError(\n errorMsg.message || errorMsg.code || response.statusText,\n errorMsg.code,\n );\n }\n // TODO: throw error code\n throw new Error(errorMsg.message || errorMsg.code || response.statusText);\n } catch (e) {\n throw e;\n }\n }\n\n // throw new Error(response.statusText);\n}\n\nfunction _createHeaders(\n headers: HeadersInit = {},\n method?: string,\n): HeadersInit {\n //\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n if (method !== \"DELETE\") {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\n } else {\n _headers.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\n }\n }\n\n return _headers;\n}\n\nasync function get<R>(\n url: string,\n options?: RequestInit,\n formatter?: (data: any) => R,\n): Promise<R> {\n const res = await request(url, {\n method: \"GET\",\n ...options,\n });\n\n if (res.success) {\n if (typeof formatter === \"function\") {\n return formatter(res.data);\n }\n // Return the required data based on the returned data structure\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] as unknown as R;\n }\n return res.data;\n }\n throw new Error(res.message);\n}\nasync function post(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function put(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"PUT\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function del(\n url: string,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"DELETE\",\n ...options,\n });\n\n return res;\n}\n\nasync function mutate(url: string, init: RequestInit) {\n const res = await request(url, init);\n\n return res;\n}\n\nexport { get, post, del, put, mutate, request };\n","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import EventEmitter from \"eventemitter3\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n privateUrl: string;\n publicUrl?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\nexport enum WebSocketEvent {\n OPEN = \"open\",\n CLOSE = \"close\",\n ERROR = \"error\",\n MESSAGE = \"message\",\n CONNECTING = \"connecting\",\n RECONNECTING = \"reconnecting\",\n}\n\nexport type MessageParams = {\n event: string;\n topic: string;\n\n onMessage?: (message: any) => any;\n\n params?: any;\n // [key: string]: any;\n};\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => any;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: MessageParams;\n isPrivate?: boolean;\n isOnce?: boolean;\n callback: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\nconst COMMON_ID = \"OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY\";\n\nconst TIME_OUT = 1000 * 60 * 2;\nconst CONNECT_LIMIT = 5;\n\nexport class WS extends EventEmitter {\n private _publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private _eventContainer: Map<string, Set<(message: any) => void>> = new Map();\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n // all message handlers\n private _eventHandlers: Map<string, Topics> = new Map();\n private _eventPrivateHandlers: Map<string, Topics> = new Map();\n\n private _publicHeartbeatTime?: number;\n private _privateHeartbeatTime?: number;\n\n private _publicRetryCount: number = 0;\n private _privateRetryCount: number = 0;\n\n constructor(private options: WSOptions) {\n super();\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n\n this.bindEvents();\n }\n\n private bindEvents() {\n if (typeof document !== \"undefined\") {\n document.addEventListener?.(\n \"visibilitychange\",\n this.onVisibilityChange.bind(this),\n );\n }\n\n if (typeof window !== \"undefined\") {\n window.addEventListener?.(\n \"online\",\n this.onNetworkStatusChange.bind(this),\n );\n // window.addEventListener?.(\"offline\", (e) => {\n // // console.log(\"👀👀👀👀👀👀👀👀👀\", \"offline\");\n // this.emit(\"offline\", e);\n // });\n }\n }\n\n private onVisibilityChange() {\n if (document.visibilityState === \"visible\") {\n this.checkSocketStatus();\n }\n // else {\n // this.publicSocket.close();\n // this.privateSocket?.close();\n // }\n }\n\n private onNetworkStatusChange() {\n if (navigator.onLine) {\n this.checkSocketStatus();\n }\n }\n\n /**\n * Determine the current connection status,\n * 1. If it is disconnected, reconnect\n * 2. If no message is received for too long, disconnect and reconnect actively\n * 3. When returning from the background and the network status changes, the following process is followed\n */\n private checkSocketStatus() {\n const now = Date.now();\n\n //\n // \"👀👀 checkNetworkStatus 👀👀\",\n // this._publicHeartbeatTime,\n // this._privateHeartbeatTime,\n // now,\n // this.publicSocket.readyState,\n // this.privateSocket?.readyState\n // );\n\n // check the last time\n // If the view is not visible, do not process it\n if (document.visibilityState !== \"visible\") return;\n // If the network is not available, do not process it\n if (!navigator.onLine) return;\n\n // public\n if (!this.publicIsReconnecting) {\n if (this._publicSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPublic();\n } else {\n if (now - this._publicHeartbeatTime! > TIME_OUT) {\n //unsubscribe all public topic\n this._publicSocket?.close(3888);\n }\n }\n }\n\n if (!this.privateIsReconnecting) {\n // private\n if (this.privateSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPrivate();\n } else {\n if (\n this._privateHeartbeatTime &&\n now - this._privateHeartbeatTime! > TIME_OUT\n ) {\n // unsubscribe all private topic\n this.privateSocket?.close(3888);\n }\n }\n }\n }\n\n public openPrivate(accountId: string) {\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n return;\n }\n this.createPrivateSC({\n ...this.options,\n accountId,\n });\n }\n\n public closePrivate(code?: number, reason?: string) {\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n return;\n }\n\n this.authenticated = false;\n\n this._pendingPrivateSubscribe = [];\n\n this._eventPrivateHandlers.clear();\n\n this.privateSocket?.close(code, reason);\n }\n\n private createPublicSC(options: WSOptions) {\n if (!options.publicUrl) {\n return;\n }\n\n if (\n this._publicSocket &&\n this._publicSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this._publicSocket = new WebSocket(\n `${options.publicUrl}/ws/stream/${COMMON_ID}`,\n );\n this._publicSocket.onopen = this.onOpen.bind(this);\n // this.publicSocket.onmessage = this.onPublicMessage.bind(this);\n this._publicSocket.addEventListener(\n \"message\",\n this.onPublicMessage.bind(this),\n );\n this._publicSocket.addEventListener(\"close\", this.onPublicClose.bind(this));\n this._publicSocket.addEventListener(\"error\", this.onPublicError.bind(this));\n // this.publicSocket.onclose = this.onPublicClose.bind(this);\n // this.publicSocket.onerror = this.onPublicError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n if (\n this.privateSocket &&\n this.privateSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this.options = options;\n\n this.privateSocket = new WebSocket(\n `${this.options.privateUrl}/v2/ws/private/stream/${options.accountId}`,\n );\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onPrivateMessage.bind(this);\n this.privateSocket.onclose = this.onPrivateClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n //\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb, isOnce]) => {\n this.subscribe(params, cb, isOnce);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: false,\n isReconnect: this._publicRetryCount > 0,\n });\n\n this._publicRetryCount = 0;\n }\n\n private onPrivateOpen(event: Event) {\n // auth\n this.authenticate(this.options.accountId!)\n .then(() => {\n this.privateIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: true,\n isReconnect: this._privateRetryCount > 0,\n });\n\n this._privateRetryCount = 0;\n })\n .catch((e) => {\n console.log(\"ws authenticate failed\", e);\n });\n }\n\n private onMessage(\n event: MessageEvent,\n socket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n try {\n const message = JSON.parse(event.data);\n\n const commoneHandler = messageHandlers.get(message.event);\n\n if (message.event === \"auth\" && message.success) {\n this.authenticated = true;\n this.handlePendingPrivateTopic();\n return;\n }\n\n if (commoneHandler) {\n commoneHandler.handle(message, socket);\n } else {\n const topicKey = this.getTopicKeyFromMessage(message);\n\n const eventhandler = handlerMap.get(topicKey);\n //\n if (eventhandler?.callback) {\n // console.log(\"👀👀👀👀👀👀👀👀👀\", topicKey, eventhandler?.callback);\n eventhandler.callback.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n\n if (data) {\n cb.onMessage(data);\n }\n });\n }\n\n // emit event\n this._eventContainer.forEach((_, key) => {\n const reg = new RegExp(key);\n if (reg.test(topicKey)) {\n this.emit(key, message);\n }\n });\n }\n\n //\n } catch (e) {}\n\n // You can process the received message here\n }\n\n private onPublicMessage(event: MessageEvent) {\n this.onMessage(event, this._publicSocket, this._eventHandlers);\n // update last message time for public\n this._publicHeartbeatTime = Date.now();\n }\n\n private onPrivateMessage(event: MessageEvent) {\n this.onMessage(event, this.privateSocket!, this._eventPrivateHandlers);\n // update last message time for private\n this._privateHeartbeatTime = Date.now();\n }\n\n private handlePendingPrivateTopic() {\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.privateSubscribe(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n }\n\n private onPublicClose(event: CloseEvent) {\n // move handler to pending\n this._eventHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPublicSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventHandlers.delete(key);\n });\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: false,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPrivateClose(event: CloseEvent) {\n if (event.code === 3887) return;\n if (this.privateIsReconnecting) return;\n this._eventPrivateHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPrivateSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventPrivateHandlers.delete(key);\n });\n this.authenticated = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: true,\n event,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPublicError(event: Event) {\n console.error(\"public WebSocket error:\", event);\n this.publicIsReconnecting = false;\n\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.close(3888);\n } else {\n // retry connect\n if (this._publicRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPublic();\n // this._publicRetryCount++;\n }, this._publicRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventHandlers);\n this.emit(\"status:change\", {\n type: WebSocketEvent.ERROR,\n isPrivate: false,\n });\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n this.privateIsReconnecting = false;\n\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n this.privateSocket.close(3888);\n } else {\n // retry connect\n if (this._privateRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPrivate();\n // this._privateRetryCount++;\n }, this._privateRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventPrivateHandlers);\n this.emit(\"status:change\", { type: WebSocketEvent.ERROR, isPrivate: true });\n }\n\n private errorBoardscast(error: any, eventHandlers: Map<string, Topics>) {\n eventHandlers.forEach((value) => {\n value.callback.forEach((cb) => {\n cb.onError?.(error);\n });\n });\n }\n\n send = (message: any) => {\n if (typeof message !== \"string\") {\n message = JSON.stringify(message);\n }\n if (typeof message === \"undefined\") return;\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.send(message);\n //\n } else {\n console.warn(\"WebSocket connection is not open. Cannot send message.\");\n }\n };\n\n close() {\n this._publicSocket?.close();\n this.privateSocket?.close();\n }\n\n set accountId(accountId: string) {}\n\n private async authenticate(accountId: string) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n if (this.privateSocket.readyState !== WebSocket.OPEN) {\n return;\n }\n\n const message = await this.options.onSigntureRequest?.(accountId);\n\n this.privateSocket.send(\n JSON.stringify({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n }),\n );\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n privateSubscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n );\n\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n this._pendingPrivateSubscribe.push([params, callback]);\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventPrivateHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventPrivateHandlers.set(topic, {\n params,\n callback: [callbacks],\n });\n this.privateSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n subscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n once?: boolean,\n id?: string,\n ): unsubscribe | undefined {\n if (!this._publicSocket) {\n return;\n }\n\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n (callback as WSMessageHandler).onMessage,\n );\n\n //\n\n if (this._publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, callback, once, id]);\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n return;\n }\n\n const topic = this.getTopicKeyFromParams(subscribeMessage);\n // const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventHandlers.set(topic, {\n params,\n isOnce: once,\n callback: [callbacks],\n });\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n if (once) {\n handler.callback = [callbacks];\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n }\n\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n }\n\n private getTopicKeyFromParams(params: any): string {\n let topic;\n\n if (params.topic) {\n topic = params.topic;\n } else {\n const eventName = params.event;\n topic = params.event;\n\n if (params.id) {\n topic += `_${params.id}`;\n }\n }\n\n return topic;\n }\n\n private getTopicKeyFromMessage(message: any): string {\n let topic;\n if (message.topic) {\n topic = message.topic;\n } else {\n if (message.event) {\n topic = `${message.event}`;\n\n if (message.id) {\n topic += `_${message.id}`;\n }\n }\n }\n\n return topic;\n }\n\n // sendPublicMessage(){\n // if(this.publicSocket.readyState !== )\n // }\n\n onceSubscribe(\n params: any,\n callback: Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n this.subscribe(params, callback, true);\n }\n\n private unsubscribe(\n parmas: MessageParams,\n webSocket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n const topic = parmas.topic || parmas.event;\n const handler = handlerMap.get(topic);\n\n // console.log(\"unsubscribe\", topic);\n\n if (!!handler && Array.isArray(handler?.callback)) {\n if (handler!.callback.length === 1) {\n const unsubscribeMessage = handler!.callback[0].onUnsubscribe(topic);\n\n //\n webSocket.send(JSON.stringify(unsubscribeMessage));\n handlerMap.delete(topic);\n //post unsubscribe message\n } else {\n const index = handler.callback.findIndex(\n (cb) => cb.onMessage === parmas.onMessage,\n );\n\n // console.log(index, handler.callback.length);\n\n if (index === -1) return;\n\n handler.callback.splice(index, 1);\n\n // handlerMap.set(topic, {\n // ...handler,\n // callback: handler.callback.splice(index, 1),\n // });\n }\n }\n }\n\n private unsubscribePrivate(parmas: MessageParams) {\n this.unsubscribe(parmas, this.privateSocket!, this._eventPrivateHandlers);\n }\n\n private unsubscribePublic(parmas: MessageParams) {\n this.unsubscribe(parmas, this._publicSocket, this._eventHandlers);\n }\n\n private generateMessage(\n params: any,\n onUnsubscribe?: (event: string) => any,\n onMessage?: (message: any) => any,\n ): [MessageParams, (event: string) => any] {\n let subscribeMessage;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n } else {\n subscribeMessage = params;\n }\n\n if (typeof onUnsubscribe !== \"function\") {\n if (typeof params === \"string\") {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params });\n } else {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params.topic });\n }\n }\n\n return [{ ...subscribeMessage, onMessage }, onUnsubscribe];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._publicRetryCount++;\n this.createPublicSC(this.options);\n // this.emit(\"reconnect:public\", { count: this._publicRetryCount });\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: false,\n count: this._publicRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n private reconnectPrivate() {\n if (!this.options.accountId) return;\n if (this.privateIsReconnecting) return;\n this.privateIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._privateRetryCount++;\n this.createPrivateSC(this.options);\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: true,\n count: this._privateRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n // get publicSocket(): WebSocket {\n // return this._publicSocket;\n // }\n\n get client(): {\n public: WebSocket;\n private?: WebSocket;\n } {\n return {\n public: this._publicSocket,\n private: this.privateSocket,\n };\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\n\nexport default class BaseHandler implements MessageHandler {\n handle(message: any, webSocket: WebSocket) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, webSocket: WebSocket) {\n webSocket.send(JSON.stringify({ event: \"pong\", ts: Date.now() }));\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\nimport PingHandler from \"./ping\";\n\nexport type MessageType =\n | \"ping\"\n | \"pong\"\n | \"subscribe\"\n | \"unsubscribe\"\n | \"authenticate\"\n | \"message\"\n | \"error\"\n | \"auth\"\n | \"close\";\n\nexport const messageHandlers = new Map<MessageType, MessageHandler>([\n [\"ping\", new PingHandler()],\n]);\n"],"mappings":"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","names":["WebSocketEvent"]}
|
|
1
|
+
{"version":3,"sources":["../src/version.ts","../src/errors/apiError.ts","../src/fetch/index.ts","../src/constants.ts","../src/ws/ws.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts"],"sourcesContent":["declare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/net\"] = \"2.8.11-alpha.0\";\n}\n\nexport default \"2.8.11-alpha.0\";\n","export class ApiError extends Error {\n constructor(message: string, private readonly code: number) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"../errors/apiError\";\n\nasync function request(url: string, options: RequestInit) {\n //\n if (!url.startsWith(\"http\")) {\n throw new Error(\"url must start with http(s)\");\n }\n // const urlInstance = new URL(url);\n const response = await fetch(url, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers, options.method),\n });\n\n if (response.ok) {\n const res = await response.json();\n return res;\n // if (res.success) {\n // return res;\n // } else {\n // throw new Error(res.message);\n // }\n } else {\n // console.log(response.status);\n try {\n const errorMsg = await response.json();\n if (response.status === 400) {\n throw new ApiError(\n errorMsg.message || errorMsg.code || response.statusText,\n errorMsg.code,\n );\n }\n // TODO: throw error code\n throw new Error(errorMsg.message || errorMsg.code || response.statusText);\n } catch (e) {\n throw e;\n }\n }\n\n // throw new Error(response.statusText);\n}\n\nfunction _createHeaders(\n headers: HeadersInit = {},\n method?: string,\n): HeadersInit {\n //\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n if (method !== \"DELETE\") {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\n } else {\n _headers.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\n }\n }\n\n return _headers;\n}\n\nasync function get<R>(\n url: string,\n options?: RequestInit,\n formatter?: (data: any) => R,\n): Promise<R> {\n const res = await request(url, {\n method: \"GET\",\n ...options,\n });\n\n if (res.success) {\n if (typeof formatter === \"function\") {\n return formatter(res.data);\n }\n // Return the required data based on the returned data structure\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] as unknown as R;\n }\n return res.data;\n }\n throw new Error(res.message);\n}\nasync function post(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function put(\n url: string,\n data: any,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"PUT\",\n body: JSON.stringify(data),\n ...options,\n });\n\n return res;\n}\n\nasync function del(\n url: string,\n options?: Omit<RequestInit, \"method\">,\n): Promise<any> {\n const res = await request(url, {\n method: \"DELETE\",\n ...options,\n });\n\n return res;\n}\n\nasync function mutate(url: string, init: RequestInit) {\n const res = await request(url, init);\n\n return res;\n}\n\nexport { get, post, del, put, mutate, request };\n","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import EventEmitter from \"eventemitter3\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n privateUrl: string;\n publicUrl?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\nexport enum WebSocketEvent {\n OPEN = \"open\",\n CLOSE = \"close\",\n ERROR = \"error\",\n MESSAGE = \"message\",\n CONNECTING = \"connecting\",\n RECONNECTING = \"reconnecting\",\n}\n\nexport type MessageParams = {\n event: string;\n topic: string;\n\n onMessage?: (message: any) => any;\n\n params?: any;\n // [key: string]: any;\n};\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => any;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: MessageParams;\n isPrivate?: boolean;\n isOnce?: boolean;\n callback: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\nconst COMMON_ID = \"OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY\";\n\nconst TIME_OUT = 1000 * 60 * 2;\nconst CONNECT_LIMIT = 5;\n\nexport class WS extends EventEmitter {\n private _publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private _eventContainer: Map<string, Set<(message: any) => void>> = new Map();\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n // all message handlers\n private _eventHandlers: Map<string, Topics> = new Map();\n private _eventPrivateHandlers: Map<string, Topics> = new Map();\n\n private _publicHeartbeatTime?: number;\n private _privateHeartbeatTime?: number;\n\n private _publicRetryCount: number = 0;\n private _privateRetryCount: number = 0;\n\n constructor(private options: WSOptions) {\n super();\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n\n this.bindEvents();\n }\n\n private bindEvents() {\n if (typeof document !== \"undefined\") {\n document.addEventListener?.(\n \"visibilitychange\",\n this.onVisibilityChange.bind(this),\n );\n }\n\n if (typeof window !== \"undefined\") {\n window.addEventListener?.(\n \"online\",\n this.onNetworkStatusChange.bind(this),\n );\n // window.addEventListener?.(\"offline\", (e) => {\n // // console.log(\"👀👀👀👀👀👀👀👀👀\", \"offline\");\n // this.emit(\"offline\", e);\n // });\n }\n }\n\n private onVisibilityChange() {\n if (document.visibilityState === \"visible\") {\n this.checkSocketStatus();\n }\n // else {\n // this.publicSocket.close();\n // this.privateSocket?.close();\n // }\n }\n\n private onNetworkStatusChange() {\n if (navigator.onLine) {\n this.checkSocketStatus();\n }\n }\n\n /**\n * Determine the current connection status,\n * 1. If it is disconnected, reconnect\n * 2. If no message is received for too long, disconnect and reconnect actively\n * 3. When returning from the background and the network status changes, the following process is followed\n */\n private checkSocketStatus() {\n const now = Date.now();\n\n //\n // \"👀👀 checkNetworkStatus 👀👀\",\n // this._publicHeartbeatTime,\n // this._privateHeartbeatTime,\n // now,\n // this.publicSocket.readyState,\n // this.privateSocket?.readyState\n // );\n\n // check the last time\n // If the view is not visible, do not process it\n if (document.visibilityState !== \"visible\") return;\n // If the network is not available, do not process it\n if (!navigator.onLine) return;\n\n // public\n if (!this.publicIsReconnecting) {\n if (this._publicSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPublic();\n } else {\n if (now - this._publicHeartbeatTime! > TIME_OUT) {\n //unsubscribe all public topic\n this._publicSocket?.close(3888);\n }\n }\n }\n\n if (!this.privateIsReconnecting) {\n // private\n if (this.privateSocket?.readyState === WebSocket.CLOSED) {\n this.reconnectPrivate();\n } else {\n if (\n this._privateHeartbeatTime &&\n now - this._privateHeartbeatTime! > TIME_OUT\n ) {\n // unsubscribe all private topic\n this.privateSocket?.close(3888);\n }\n }\n }\n }\n\n public openPrivate(accountId: string) {\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n return;\n }\n this.createPrivateSC({\n ...this.options,\n accountId,\n });\n }\n\n public closePrivate(code?: number, reason?: string) {\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n return;\n }\n\n this.authenticated = false;\n\n this._pendingPrivateSubscribe = [];\n\n this._eventPrivateHandlers.clear();\n\n this.privateSocket?.close(code, reason);\n }\n\n private createPublicSC(options: WSOptions) {\n if (!options.publicUrl) {\n return;\n }\n\n if (\n this._publicSocket &&\n this._publicSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this._publicSocket = new WebSocket(\n `${options.publicUrl}/ws/stream/${COMMON_ID}`,\n );\n this._publicSocket.onopen = this.onOpen.bind(this);\n // this.publicSocket.onmessage = this.onPublicMessage.bind(this);\n this._publicSocket.addEventListener(\n \"message\",\n this.onPublicMessage.bind(this),\n );\n this._publicSocket.addEventListener(\"close\", this.onPublicClose.bind(this));\n this._publicSocket.addEventListener(\"error\", this.onPublicError.bind(this));\n // this.publicSocket.onclose = this.onPublicClose.bind(this);\n // this.publicSocket.onerror = this.onPublicError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n if (\n this.privateSocket &&\n this.privateSocket.readyState === WebSocket.OPEN\n ) {\n return;\n }\n\n this.options = options;\n\n this.privateSocket = new WebSocket(\n `${this.options.privateUrl}/v2/ws/private/stream/${options.accountId}`,\n );\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onPrivateMessage.bind(this);\n this.privateSocket.onclose = this.onPrivateClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n //\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb, isOnce]) => {\n this.subscribe(params, cb, isOnce);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: false,\n isReconnect: this._publicRetryCount > 0,\n });\n\n this._publicRetryCount = 0;\n }\n\n private onPrivateOpen(event: Event) {\n // auth\n this.authenticate(this.options.accountId!)\n .then(() => {\n this.privateIsReconnecting = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.OPEN,\n isPrivate: true,\n isReconnect: this._privateRetryCount > 0,\n });\n\n this._privateRetryCount = 0;\n })\n .catch((e) => {\n console.log(\"ws authenticate failed\", e);\n });\n }\n\n private onMessage(\n event: MessageEvent,\n socket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n try {\n const message = JSON.parse(event.data);\n\n const commoneHandler = messageHandlers.get(message.event);\n\n if (message.event === \"auth\" && message.success) {\n this.authenticated = true;\n this.handlePendingPrivateTopic();\n return;\n }\n\n if (commoneHandler) {\n commoneHandler.handle(message, socket);\n } else {\n const topicKey = this.getTopicKeyFromMessage(message);\n\n const eventhandler = handlerMap.get(topicKey);\n //\n if (eventhandler?.callback) {\n // console.log(\"👀👀👀👀👀👀👀👀👀\", topicKey, eventhandler?.callback);\n eventhandler.callback.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n\n if (data) {\n cb.onMessage(data);\n }\n });\n }\n\n // emit event\n this._eventContainer.forEach((_, key) => {\n const reg = new RegExp(key);\n if (reg.test(topicKey)) {\n this.emit(key, message);\n }\n });\n }\n\n //\n } catch (e) {}\n\n // You can process the received message here\n }\n\n private onPublicMessage(event: MessageEvent) {\n this.onMessage(event, this._publicSocket, this._eventHandlers);\n // update last message time for public\n this._publicHeartbeatTime = Date.now();\n }\n\n private onPrivateMessage(event: MessageEvent) {\n this.onMessage(event, this.privateSocket!, this._eventPrivateHandlers);\n // update last message time for private\n this._privateHeartbeatTime = Date.now();\n }\n\n private handlePendingPrivateTopic() {\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.privateSubscribe(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n }\n\n private onPublicClose(event: CloseEvent) {\n // move handler to pending\n this._eventHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPublicSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventHandlers.delete(key);\n });\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: false,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPrivateClose(event: CloseEvent) {\n if (event.code === 3887) return;\n if (this.privateIsReconnecting) return;\n this._eventPrivateHandlers.forEach((value, key) => {\n value.callback.forEach((cb) => {\n this._pendingPrivateSubscribe.push([value.params, cb, value.isOnce]);\n });\n\n this._eventPrivateHandlers.delete(key);\n });\n this.authenticated = false;\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.CLOSE,\n isPrivate: true,\n event,\n });\n\n setTimeout(() => this.checkSocketStatus(), 0);\n }\n\n private onPublicError(event: Event) {\n console.error(\"public WebSocket error:\", event);\n this.publicIsReconnecting = false;\n\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.close(3888);\n } else {\n // retry connect\n if (this._publicRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPublic();\n // this._publicRetryCount++;\n }, this._publicRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventHandlers);\n this.emit(\"status:change\", {\n type: WebSocketEvent.ERROR,\n isPrivate: false,\n });\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n this.privateIsReconnecting = false;\n\n if (this.privateSocket?.readyState === WebSocket.OPEN) {\n this.privateSocket.close(3888);\n } else {\n // retry connect\n if (this._privateRetryCount > CONNECT_LIMIT) return;\n setTimeout(() => {\n // this.createPublicSC(this.options);\n this.reconnectPrivate();\n // this._privateRetryCount++;\n }, this._privateRetryCount * 1000);\n }\n\n this.errorBoardscast(event, this._eventPrivateHandlers);\n this.emit(\"status:change\", { type: WebSocketEvent.ERROR, isPrivate: true });\n }\n\n private errorBoardscast(error: any, eventHandlers: Map<string, Topics>) {\n eventHandlers.forEach((value) => {\n value.callback.forEach((cb) => {\n cb.onError?.(error);\n });\n });\n }\n\n send = (message: any) => {\n if (typeof message !== \"string\") {\n message = JSON.stringify(message);\n }\n if (typeof message === \"undefined\") return;\n if (this._publicSocket?.readyState === WebSocket.OPEN) {\n this._publicSocket?.send(message);\n //\n } else {\n console.warn(\"WebSocket connection is not open. Cannot send message.\");\n }\n };\n\n close() {\n this._publicSocket?.close();\n this.privateSocket?.close();\n }\n\n set accountId(accountId: string) {}\n\n private async authenticate(accountId: string) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n if (this.privateSocket.readyState !== WebSocket.OPEN) {\n return;\n }\n\n const message = await this.options.onSigntureRequest?.(accountId);\n\n this.privateSocket.send(\n JSON.stringify({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n }),\n );\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n privateSubscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n );\n\n if (this.privateSocket?.readyState !== WebSocket.OPEN) {\n this._pendingPrivateSubscribe.push([params, callback]);\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventPrivateHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventPrivateHandlers.set(topic, {\n params,\n callback: [callbacks],\n });\n this.privateSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n\n return () => {\n this.unsubscribePrivate(subscribeMessage);\n };\n }\n\n subscribe(\n params: any,\n callback: WSMessageHandler | Omit<WSMessageHandler, \"onUnsubscribe\">,\n once?: boolean,\n id?: string,\n ): unsubscribe | undefined {\n if (!this._publicSocket) {\n return;\n }\n\n const [subscribeMessage, onUnsubscribe] = this.generateMessage(\n params,\n (callback as WSMessageHandler).onUnsubscribe,\n (callback as WSMessageHandler).onMessage,\n );\n\n //\n\n if (this._publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, callback, once, id]);\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n return;\n }\n\n const topic = this.getTopicKeyFromParams(subscribeMessage);\n // const topic = subscribeMessage.topic || subscribeMessage.event;\n\n const handler = this._eventHandlers.get(topic);\n const callbacks = {\n ...callback,\n onUnsubscribe,\n };\n\n if (!handler) {\n this._eventHandlers.set(topic, {\n params,\n isOnce: once,\n callback: [callbacks],\n });\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n if (once) {\n handler.callback = [callbacks];\n this._publicSocket.send(JSON.stringify(subscribeMessage));\n } else {\n handler.callback.push(callbacks);\n }\n }\n\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n if (!once) {\n return () => {\n this.unsubscribePublic(subscribeMessage);\n };\n }\n }\n\n private getTopicKeyFromParams(params: any): string {\n let topic;\n\n if (params.topic) {\n topic = params.topic;\n } else {\n const eventName = params.event;\n topic = params.event;\n\n if (params.id) {\n topic += `_${params.id}`;\n }\n }\n\n return topic;\n }\n\n private getTopicKeyFromMessage(message: any): string {\n let topic;\n if (message.topic) {\n topic = message.topic;\n } else {\n if (message.event) {\n topic = `${message.event}`;\n\n if (message.id) {\n topic += `_${message.id}`;\n }\n }\n }\n\n return topic;\n }\n\n // sendPublicMessage(){\n // if(this.publicSocket.readyState !== )\n // }\n\n onceSubscribe(\n params: any,\n callback: Omit<WSMessageHandler, \"onUnsubscribe\">,\n ) {\n this.subscribe(params, callback, true);\n }\n\n private unsubscribe(\n parmas: MessageParams,\n webSocket: WebSocket,\n handlerMap: Map<string, Topics>,\n ) {\n const topic = parmas.topic || parmas.event;\n const handler = handlerMap.get(topic);\n\n // console.log(\"unsubscribe\", topic);\n\n if (!!handler && Array.isArray(handler?.callback)) {\n if (handler!.callback.length === 1) {\n const unsubscribeMessage = handler!.callback[0].onUnsubscribe(topic);\n\n //\n webSocket.send(JSON.stringify(unsubscribeMessage));\n handlerMap.delete(topic);\n //post unsubscribe message\n } else {\n const index = handler.callback.findIndex(\n (cb) => cb.onMessage === parmas.onMessage,\n );\n\n // console.log(index, handler.callback.length);\n\n if (index === -1) return;\n\n handler.callback.splice(index, 1);\n\n // handlerMap.set(topic, {\n // ...handler,\n // callback: handler.callback.splice(index, 1),\n // });\n }\n }\n }\n\n private unsubscribePrivate(parmas: MessageParams) {\n this.unsubscribe(parmas, this.privateSocket!, this._eventPrivateHandlers);\n }\n\n private unsubscribePublic(parmas: MessageParams) {\n this.unsubscribe(parmas, this._publicSocket, this._eventHandlers);\n }\n\n private generateMessage(\n params: any,\n onUnsubscribe?: (event: string) => any,\n onMessage?: (message: any) => any,\n ): [MessageParams, (event: string) => any] {\n let subscribeMessage;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n } else {\n subscribeMessage = params;\n }\n\n if (typeof onUnsubscribe !== \"function\") {\n if (typeof params === \"string\") {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params });\n } else {\n onUnsubscribe = () => ({ event: \"unsubscribe\", topic: params.topic });\n }\n }\n\n return [{ ...subscribeMessage, onMessage }, onUnsubscribe];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._publicRetryCount++;\n this.createPublicSC(this.options);\n // this.emit(\"reconnect:public\", { count: this._publicRetryCount });\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: false,\n count: this._publicRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n private reconnectPrivate() {\n if (!this.options.accountId) return;\n if (this.privateIsReconnecting) return;\n this.privateIsReconnecting = true;\n\n if (typeof window === \"undefined\") return;\n window.setTimeout(() => {\n this._privateRetryCount++;\n this.createPrivateSC(this.options);\n\n this.emit(\"status:change\", {\n type: WebSocketEvent.RECONNECTING,\n isPrivate: true,\n count: this._privateRetryCount,\n });\n }, this.reconnectInterval);\n }\n\n // get publicSocket(): WebSocket {\n // return this._publicSocket;\n // }\n\n get client(): {\n public: WebSocket;\n private?: WebSocket;\n } {\n return {\n public: this._publicSocket,\n private: this.privateSocket,\n };\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\n\nexport default class BaseHandler implements MessageHandler {\n handle(message: any, webSocket: WebSocket) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, webSocket: WebSocket) {\n webSocket.send(JSON.stringify({ event: \"pong\", ts: Date.now() }));\n }\n}\n","import { MessageHandler } from \"../../types/ws\";\nimport PingHandler from \"./ping\";\n\nexport type MessageType =\n | \"ping\"\n | \"pong\"\n | \"subscribe\"\n | \"unsubscribe\"\n | \"authenticate\"\n | \"message\"\n | \"error\"\n | \"auth\"\n | \"close\";\n\nexport const messageHandlers = new Map<MessageType, MessageHandler>([\n [\"ping\", new PingHandler()],\n]);\n"],"mappings":"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","names":["WebSocketEvent"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orderly.network/net",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.11-alpha.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"@types/jest": "^29.5.3",
|
|
18
18
|
"babel-jest": "^29.6.1",
|
|
19
19
|
"jest": "^29.6.1",
|
|
20
|
-
"tsup": "^
|
|
20
|
+
"tsup": "^8.5.1",
|
|
21
21
|
"typedoc": "^0.26.5",
|
|
22
22
|
"typescript": "^5.1.6",
|
|
23
|
-
"tsconfig": "0.11.
|
|
23
|
+
"tsconfig": "0.11.11-alpha.0"
|
|
24
24
|
},
|
|
25
25
|
"publishConfig": {
|
|
26
26
|
"access": "public"
|