@orderly.network/net 1.0.4 → 1.0.6

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @orderly.network/net@1.0.3 build /Users/leo/orderly/orderly-web/packages/net
2
+ > @orderly.network/net@1.0.4 build /Users/leo/orderly/orderly-web/packages/net
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -12,11 +12,11 @@ CJS Build start
12
12
  ESM Build start
13
13
  CJS dist/index.js 18.60 KB
14
14
  CJS dist/index.js.map 31.59 KB
15
- CJS ⚡️ Build success in 39ms
15
+ CJS ⚡️ Build success in 20ms
16
16
  ESM dist/index.mjs 17.53 KB
17
17
  ESM dist/index.mjs.map 31.28 KB
18
- ESM ⚡️ Build success in 40ms
18
+ ESM ⚡️ Build success in 20ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 850ms
20
+ DTS ⚡️ Build success in 716ms
21
21
  DTS dist/index.d.ts 2.76 KB
22
22
  DTS dist/index.d.mts 2.76 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @orderly.network/net
2
2
 
3
+ ## 1.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - update
8
+
9
+ ## 1.0.5
10
+
11
+ ### Patch Changes
12
+
13
+ - fix bug & update
14
+
3
15
  ## 1.0.4
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -430,7 +430,6 @@ var WS = class {
430
430
  return;
431
431
  if (this.publicSocket.readyState === WebSocket.OPEN) {
432
432
  this.publicSocket.send(message);
433
- console.log("WebSocket message sent:", message);
434
433
  } else {
435
434
  console.warn("WebSocket connection is not open. Cannot send message.");
436
435
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/fetch/index.ts","../src/ws/index.ts","../src/ws/contants.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts","../src/constants.ts","../src/ws/ws.ts"],"sourcesContent":["export { get, post } from \"./fetch\";\n\nexport { default as WebSocketClient } from \"./ws\";\nexport { type NetworkId, type WSOptions } from \"./ws\";\nexport { __ORDERLY_API_URL_KEY__ } from \"./constants\";\n\nexport { WS } from \"./ws/ws\";\n","async function request(url: string, options: RequestInit) {\n // console.log(\"request\", url, options);\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(urlInstance, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers),\n }).catch((err) => {\n throw new Error(err);\n });\n\n if (response.ok) {\n return response.json();\n }\n throw new Error(response.statusText);\n}\n\nfunction _createHeaders(headers: HeadersInit = {}): HeadersInit {\n // console.log(\"headers\", headers);\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\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 // 根据返回的数据结构,返回需要的数据\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] 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\nexport { get, post };\n","import { type WebSocketSubject, webSocket } from \"rxjs/webSocket\";\n\nimport { WS_URL } from \"./contants\";\nimport { Observable, Observer, Subject, tap } from \"rxjs\";\nimport { messageHandlers } from \"@/ws/handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nclass WebSocketClient {\n // the topic reference count;\n private static __topicRefCountMap: Map<string, number> = new Map();\n private wsSubject: WebSocketSubject<any>;\n private privateWsSubject?: WebSocketSubject<any>;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[] = [];\n\n constructor(options: WSOptions) {\n this.wsSubject = this.createSubject(options);\n\n if (!!options.accountId) {\n this.privateWsSubject = this.createPrivateSubject(options);\n }\n\n this.bindSubscribe();\n }\n private createSubject(options: WSOptions): WebSocketSubject<any> {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n\n return webSocket({\n url: `${url}${options.accountId || \"\"}`,\n openObserver: {\n next: () => {\n console.log(\"Connection ok\");\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Connection closed\");\n },\n },\n });\n }\n\n private createPrivateSubject(options: WSOptions): WebSocketSubject<any> {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n const ws = webSocket({\n url: `${url}${options.accountId}`,\n openObserver: {\n next: () => {\n console.log(\"Private connection ok\");\n if (this.authenticated || !options.accountId) return;\n\n options.onSigntureRequest?.(options.accountId).then((signature) => {\n this.authenticate(options.accountId!, signature);\n });\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Private connection closed\");\n this.authenticated = false;\n },\n },\n });\n // authenticate\n\n return ws;\n }\n\n private bindSubscribe() {\n /// 处理ping,auth等消息\n\n this.wsSubject.subscribe({\n next: (message) => {\n const handler = messageHandlers.get(message.event);\n if (handler) {\n handler.handle(message, this.send);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n\n if (!this.privateWsSubject) return;\n\n this.privateWsSubject.subscribe({\n next: (message) => {\n if (message.event === \"auth\") {\n this.authenticated = true;\n // 认证成功后,发送之前的订阅消息\n this._sendPendingPrivateMessage();\n return;\n }\n\n const handler = messageHandlers.get(message.event);\n\n if (handler) {\n handler.handle(message, this.privateSend);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n }\n\n private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateWsSubject) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\n this.privateWsSubject?.next({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n });\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n send = (message: any) => {\n this.wsSubject.next(message);\n };\n\n privateSend = (message: any) => {\n if (!this.privateWsSubject) {\n console.warn(\"private ws not connected\");\n return;\n }\n\n this.privateWsSubject.next(message);\n };\n\n get isAuthed() {\n return this.authenticated;\n }\n\n // observe<T>(topic: string): Observable<T>;\n // observe<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // observe<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n observe<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(false, params, unsubscribe, messageFilter);\n }\n\n // privateObserve<T>(topic: string): Observable<T>;\n // privateObserve<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // privateObserve<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n privateObserve<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(true, params, unsubscribe, messageFilter);\n }\n\n private _observe<T>(\n isPrivate: boolean,\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ) {\n console.log(\n \"observe---------------------------\",\n params,\n unsubscribe,\n messageFilter\n );\n\n if (isPrivate && !this.privateWsSubject) {\n throw new Error(\"private ws not connected\");\n }\n\n const subject = isPrivate ? this.privateWsSubject : this.wsSubject;\n const sendFunc = isPrivate ? this.privateSend : this.send;\n\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params, unsubscribe, messageFilter);\n\n return new Observable((observer: Observer<T>) => {\n // 如果是private ws, 但是没有连接,就先缓存起来,等连接上了再订阅\n if (isPrivate && !this.authenticated) {\n this._pendingPrivateSubscribe.push(params);\n return;\n }\n\n try {\n //TODO: add ref count, only send subscribe message when ref count is 0\n // 如果已经订阅过了,就不再发送订阅消息\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount === 0) {\n // WS.__topicRefCountMap.set(subscribeMessage.topic, WS.__topicRefCountMap.get(subscribeMessage.topic) + 1);\n // this.send(subscribeMessage);\n sendFunc(subscribeMessage);\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount + 1\n );\n }\n } catch (err) {\n observer.error(err);\n }\n\n const subscription = subject!.subscribe({\n next: (x) => {\n try {\n if (filter(x)) {\n observer.next(messageFormatter(x));\n }\n } catch (err) {\n observer.error(err);\n }\n },\n error: (err) => observer.error(err),\n complete: () => observer.complete(),\n });\n\n return () => {\n try {\n // console.log(\"******* unsubscribe\", unsubscribeMessage);\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount > 1) {\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount - 1\n );\n return;\n }\n if (!!unsubscribeMessage) {\n this.send(unsubscribeMessage);\n }\n WebSocketClient.__topicRefCountMap.delete(subscribeMessage.topic);\n } catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private _sendPendingPrivateMessage() {\n if (this._pendingPrivateSubscribe.length === 0) return;\n this._pendingPrivateSubscribe.forEach((params) => {\n this.privateObserve(params).subscribe();\n });\n this._pendingPrivateSubscribe = [];\n }\n\n // 取消所有订阅\n desotry() {\n this.wsSubject.unsubscribe();\n this.privateWsSubject?.unsubscribe();\n }\n}\n\nexport default WebSocketClient;\n","export const WS_URL = {\n testnet: {\n // public: \"wss://testnet-ws.orderly.org/ws/stream/\",\n public: \"wss://dev-ws-v2.orderly.org/ws/stream/\",\n // private:\n // \"wss://dev-ws-private-v2.orderly.org/wsprivate/v2/ws/private/stream/\",\n private: \"wss://dev-ws-private-v2.orderly.org/v2/ws/private/stream/\",\n },\n mainnet: {\n public: \"wss://mainnet-ws.orderly.io\",\n private: \"wss://mainnet-ws.orderly.io\",\n },\n};\n","import { MessageHandler, SendFunc } from \"@/types/ws\";\nimport { WebSocketSubject } from \"rxjs/webSocket\";\n\nexport default class BaseHandler implements MessageHandler {\n // constructor(readonly wsSubject: WebSocketSubject<any>) {}\n handle(message: any, send: SendFunc) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\nimport { SendFunc } from \"@/types/ws\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, send: SendFunc) {\n send({ 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","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import { WS_URL } from \"./contants\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => string;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: any;\n isPrivate?: boolean;\n cb: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\n\nexport class WS {\n private publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private publicReconnectTimeout?: number;\n private privateReconnectTimeout?: number;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n private _subscriptionPublicTopics: Topics[] = [];\n private _subscriptionPrivateTopics: Topics[] = [];\n\n private _eventHandlers: Map<string, Topics> = new Map();\n\n constructor(private readonly options: WSOptions) {\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n }\n\n private createPublicSC(options: WSOptions) {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n this.publicSocket = new WebSocket(`${url}${options.accountId}`);\n this.publicSocket.onopen = this.onOpen.bind(this);\n this.publicSocket.onmessage = this.onMessage.bind(this);\n this.publicSocket.onclose = this.onClose.bind(this);\n this.publicSocket.onerror = this.onError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n this.privateSocket = new WebSocket(`${url}${options.accountId}`);\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onMessage.bind(this);\n // this.privateSocket.onclose = this.onClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n console.log(\"WebSocket connection opened:\");\n console.log(this._pendingPublicSubscribe);\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n }\n\n private onPrivateOpen(event: Event) {\n console.log(\"Private WebSocket connection opened:\");\n\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n\n this.privateIsReconnecting = false;\n }\n\n private onMessage(event: MessageEvent) {\n try {\n const message = JSON.parse(event.data);\n const commoneHandler = messageHandlers.get(message.event);\n\n if (commoneHandler) {\n commoneHandler.handle(message, this.send);\n } else {\n const eventhandler = this._eventHandlers.get(message.topic);\n if (eventhandler?.cb) {\n eventhandler.cb.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n cb.onMessage(data);\n });\n }\n }\n // console.log(\"WebSocket message received:\", message);\n } catch (e) {\n console.log(\"WebSocket message received:\", event.data);\n }\n\n // You can process the received message here\n }\n\n private onClose(event: CloseEvent) {\n console.log(\"WebSocket connection closed:\", event.reason);\n }\n\n private onError(event: Event) {\n console.error(\"WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (!value.isPrivate) {\n this._pendingPublicSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\n }\n });\n\n this.reconnectPublic();\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (value.isPrivate) {\n this._pendingPrivateSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\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 console.log(\"WebSocket message sent:\", message);\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 private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\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 privateSubscription(params: any, cb: WSMessageHandler) {}\n\n subscription(params: any, cb: WSMessageHandler): unsubscribe {\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params);\n\n const unsubscribe = () => {\n console.log(\"unsubscribeMessage\", unsubscribeMessage);\n this.publicSocket.send(JSON.stringify(unsubscribeMessage));\n };\n\n if (this.publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, cb]);\n return unsubscribe;\n }\n\n const handler = this._eventHandlers.get(subscribeMessage.topic);\n\n if (!handler) {\n this._eventHandlers.set(subscribeMessage.topic, {\n params,\n cb: [cb],\n });\n } else {\n handler.cb.push(cb);\n }\n\n this.publicSocket.send(JSON.stringify(subscribeMessage));\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n return unsubscribe;\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n console.log(`Reconnecting in ${this.reconnectInterval / 1000} seconds...`);\n this.publicReconnectTimeout = window.setTimeout(() => {\n console.log(\"Reconnecting...\");\n // this.publicIsReconnecting = false;\n\n this.createPublicSC(this.options);\n }, this.reconnectInterval);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAe,QAAQ,KAAa,SAAsB;AAAA;AAExD,QAAI,CAAC,IAAI,WAAW,MAAM,GAAG;AAC3B,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AACA,UAAM,cAAc,IAAI,IAAI,GAAG;AAC/B,UAAM,WAAW,MAAM,MAAM,aAAa,iCACrC,UADqC;AAAA;AAAA;AAAA,MAIxC,SAAS,eAAe,QAAQ,OAAO;AAAA,IACzC,EAAC,EAAE,MAAM,CAAC,QAAQ;AAChB,YAAM,IAAI,MAAM,GAAG;AAAA,IACrB,CAAC;AAED,QAAI,SAAS,IAAI;AACf,aAAO,SAAS,KAAK;AAAA,IACvB;AACA,UAAM,IAAI,MAAM,SAAS,UAAU;AAAA,EACrC;AAAA;AAEA,SAAS,eAAe,UAAuB,CAAC,GAAgB;AAE9D,QAAM,WAAW,IAAI,QAAQ,OAAO;AAGpC,MAAI,CAAC,SAAS,IAAI,cAAc,GAAG;AACjC,aAAS,OAAO,gBAAgB,gCAAgC;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,SAAe,IACb,KACA,SACA,WACY;AAAA;AACZ,UAAM,MAAM,MAAM,QAAQ,KAAK;AAAA,MAC7B,QAAQ;AAAA,OACL,QACJ;AAED,QAAI,IAAI,SAAS;AACf,UAAI,OAAO,cAAc,YAAY;AACnC,eAAO,UAAU,IAAI,IAAI;AAAA,MAC3B;AAEA,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,CAAC,GAAG;AACnC,eAAO,IAAI,KAAK,MAAM;AAAA,MACxB;AACA,aAAO,IAAI;AAAA,IACb;AACA,UAAM,IAAI,MAAM,IAAI,OAAO;AAAA,EAC7B;AAAA;AACA,SAAe,KACb,KACA,MACA,SACc;AAAA;AACd,UAAM,MAAM,MAAM,QAAQ,KAAK;AAAA,MAC7B,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,IAAI;AAAA,OACtB,QACJ;AAED,WAAO;AAAA,EACT;AAAA;;;ACnEA,uBAAiD;;;ACA1C,IAAM,SAAS;AAAA,EACpB,SAAS;AAAA;AAAA,IAEP,QAAQ;AAAA;AAAA;AAAA,IAGR,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACF;;;ADTA,kBAAmD;;;AEAnD,IAAqB,cAArB,MAA2D;AAAA;AAAA,EAEzD,OAAO,SAAc,MAAgB;AACnC,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AACF;;;ACLA,IAAqB,cAArB,cAAyC,YAAY;AAAA,EACnD,OAAO,GAAQ,MAAgB;AAC7B,SAAK,EAAE,OAAO,QAAQ,IAAI,KAAK,IAAI,EAAE,CAAC;AAAA,EACxC;AACF;;;ACOO,IAAM,kBAAkB,oBAAI,IAAiC;AAAA,EAClE,CAAC,QAAQ,IAAI,YAAY,CAAC;AAC5B,CAAC;;;AJAD,IAAM,mBAAN,MAAM,iBAAgB;AAAA,EAUpB,YAAY,SAAoB;AAJhC,SAAQ,gBAAyB;AAEjC,SAAQ,2BAAkC,CAAC;AAoI3C,gBAAO,CAAC,YAAiB;AACvB,WAAK,UAAU,KAAK,OAAO;AAAA,IAC7B;AAEA,uBAAc,CAAC,YAAiB;AAC9B,UAAI,CAAC,KAAK,kBAAkB;AAC1B,gBAAQ,KAAK,0BAA0B;AACvC;AAAA,MACF;AAEA,WAAK,iBAAiB,KAAK,OAAO;AAAA,IACpC;AA5IE,SAAK,YAAY,KAAK,cAAc,OAAO;AAE3C,QAAI,CAAC,CAAC,QAAQ,WAAW;AACvB,WAAK,mBAAmB,KAAK,qBAAqB,OAAO;AAAA,IAC3D;AAEA,SAAK,cAAc;AAAA,EACrB;AAAA,EACQ,cAAc,SAA2C;AAC/D,QAAI;AACJ,QAAI,OAAO,QAAQ,QAAQ,UAAU;AACnC,YAAM,QAAQ;AAAA,IAChB,OAAO;AACL,YAAM,OAAO,QAAQ,aAAa,SAAS,EAAE;AAAA,IAC/C;AAEA,eAAO,4BAAU;AAAA,MACf,KAAK,GAAG,GAAG,GAAG,QAAQ,aAAa,EAAE;AAAA,MACrC,cAAc;AAAA,QACZ,MAAM,MAAM;AACV,kBAAQ,IAAI,eAAe;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,MAAM,MAAM;AACV,kBAAQ,IAAI,mBAAmB;AAAA,QACjC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,qBAAqB,SAA2C;AACtE,UAAM,MAAM,OAAO,QAAQ,aAAa,SAAS,EAAE;AACnD,UAAM,SAAK,4BAAU;AAAA,MACnB,KAAK,GAAG,GAAG,GAAG,QAAQ,SAAS;AAAA,MAC/B,cAAc;AAAA,QACZ,MAAM,MAAM;AA/DpB;AAgEU,kBAAQ,IAAI,uBAAuB;AACnC,cAAI,KAAK,iBAAiB,CAAC,QAAQ;AAAW;AAE9C,wBAAQ,sBAAR,iCAA4B,QAAQ,WAAW,KAAK,CAAC,cAAc;AACjE,iBAAK,aAAa,QAAQ,WAAY,SAAS;AAAA,UACjD;AAAA,QACF;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,MAAM,MAAM;AACV,kBAAQ,IAAI,2BAA2B;AACvC,eAAK,gBAAgB;AAAA,QACvB;AAAA,MACF;AAAA,IACF,CAAC;AAGD,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB;AAGtB,SAAK,UAAU,UAAU;AAAA,MACvB,MAAM,CAAC,YAAY;AACjB,cAAM,UAAU,gBAAgB,IAAI,QAAQ,KAAK;AACjD,YAAI,SAAS;AACX,kBAAQ,OAAO,SAAS,KAAK,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,MACA,MAAM,KAAK;AACT,gBAAQ,IAAI,cAAc,GAAG;AAAA,MAC/B;AAAA,MACA,WAAW;AACT,gBAAQ,IAAI,sBAAsB;AAAA,MACpC;AAAA,IACF,CAAC;AAED,QAAI,CAAC,KAAK;AAAkB;AAE5B,SAAK,iBAAiB,UAAU;AAAA,MAC9B,MAAM,CAAC,YAAY;AACjB,YAAI,QAAQ,UAAU,QAAQ;AAC5B,eAAK,gBAAgB;AAErB,eAAK,2BAA2B;AAChC;AAAA,QACF;AAEA,cAAM,UAAU,gBAAgB,IAAI,QAAQ,KAAK;AAEjD,YAAI,SAAS;AACX,kBAAQ,OAAO,SAAS,KAAK,WAAW;AAAA,QAC1C;AAAA,MACF;AAAA,MACA,MAAM,KAAK;AACT,gBAAQ,IAAI,cAAc,GAAG;AAAA,MAC/B;AAAA,MACA,WAAW;AACT,gBAAQ,IAAI,sBAAsB;AAAA,MACpC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,aACN,WACA,SAKA;AAvIJ;AAwII,QAAI,KAAK;AAAe;AACxB,QAAI,CAAC,KAAK,kBAAkB;AAC1B,cAAQ,MAAM,0BAA0B;AACxC;AAAA,IACF;AAEA,YAAQ,IAAI,sBAAsB,OAAO;AACzC,eAAK,qBAAL,mBAAuB,KAAK;AAAA,MAC1B,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,QACN,aAAa,QAAQ;AAAA,QACrB,MAAM,QAAQ;AAAA,QACd,WAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EAGF;AAAA,EAeA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QACE,QACA,aACA,eACe;AACf,WAAO,KAAK,SAAS,OAAO,QAAQ,aAAa,aAAa;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,eACE,QACA,aACA,eACe;AACf,WAAO,KAAK,SAAS,MAAM,QAAQ,aAAa,aAAa;AAAA,EAC/D;AAAA,EAEQ,SACN,WACA,QACA,aACA,eACA;AACA,YAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,aAAa,CAAC,KAAK,kBAAkB;AACvC,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAEA,UAAM,UAAU,YAAY,KAAK,mBAAmB,KAAK;AACzD,UAAM,WAAW,YAAY,KAAK,cAAc,KAAK;AAErD,UAAM,CAAC,kBAAkB,oBAAoB,QAAQ,gBAAgB,IACnE,KAAK,gBAAgB,QAAQ,aAAa,aAAa;AAEzD,WAAO,IAAI,uBAAW,CAAC,aAA0B;AAE/C,UAAI,aAAa,CAAC,KAAK,eAAe;AACpC,aAAK,yBAAyB,KAAK,MAAM;AACzC;AAAA,MACF;AAEA,UAAI;AAGF,cAAM,WACJ,iBAAgB,mBAAmB,IAAI,iBAAiB,KAAK,KAAK;AACpE,YAAI,aAAa,GAAG;AAGlB,mBAAS,gBAAgB;AACzB,2BAAgB,mBAAmB;AAAA,YACjC,iBAAiB;AAAA,YACjB,WAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,iBAAS,MAAM,GAAG;AAAA,MACpB;AAEA,YAAM,eAAe,QAAS,UAAU;AAAA,QACtC,MAAM,CAAC,MAAM;AACX,cAAI;AACF,gBAAI,OAAO,CAAC,GAAG;AACb,uBAAS,KAAK,iBAAiB,CAAC,CAAC;AAAA,YACnC;AAAA,UACF,SAAS,KAAK;AACZ,qBAAS,MAAM,GAAG;AAAA,UACpB;AAAA,QACF;AAAA,QACA,OAAO,CAAC,QAAQ,SAAS,MAAM,GAAG;AAAA,QAClC,UAAU,MAAM,SAAS,SAAS;AAAA,MACpC,CAAC;AAED,aAAO,MAAM;AACX,YAAI;AAEF,gBAAM,WACJ,iBAAgB,mBAAmB,IAAI,iBAAiB,KAAK,KAAK;AACpE,cAAI,WAAW,GAAG;AAChB,6BAAgB,mBAAmB;AAAA,cACjC,iBAAiB;AAAA,cACjB,WAAW;AAAA,YACb;AACA;AAAA,UACF;AACA,cAAI,CAAC,CAAC,oBAAoB;AACxB,iBAAK,KAAK,kBAAkB;AAAA,UAC9B;AACA,2BAAgB,mBAAmB,OAAO,iBAAiB,KAAK;AAAA,QAClE,SAAS,KAAK;AACZ,mBAAS,MAAM,GAAG;AAAA,QACpB;AACA,qBAAa,YAAY;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,gBACN,QACA,aACA,eAMA;AACA,QAAI,kBACF;AACF,QAAI,QACF,mBAA0C,CAAC,YAAiB,QAAQ;AAEtE,QAAI,OAAO,WAAW,UAAU;AAC9B,yBAAmB,EAAE,OAAO,aAAa,OAAO,OAAO;AACvD,2BAAqB,EAAE,OAAO,eAAe,OAAO,OAAO;AAC3D,eAAS,CAAC,YAAiB,QAAQ,UAAU;AAAA,IAC/C,OAAO;AACL,yBAAmB;AACnB,2BACE,OAAO,gBAAgB,aAAa,YAAY,IAAI;AACtD,eAAS,kBAAkB,CAAC,YAAiB;AAAA,IAC/C;AAEA,WAAO,CAAC,kBAAkB,oBAAoB,QAAQ,gBAAgB;AAAA,EACxE;AAAA,EAEQ,6BAA6B;AACnC,QAAI,KAAK,yBAAyB,WAAW;AAAG;AAChD,SAAK,yBAAyB,QAAQ,CAAC,WAAW;AAChD,WAAK,eAAe,MAAM,EAAE,UAAU;AAAA,IACxC,CAAC;AACD,SAAK,2BAA2B,CAAC;AAAA,EACnC;AAAA;AAAA,EAGA,UAAU;AAzUZ;AA0UI,SAAK,UAAU,YAAY;AAC3B,eAAK,qBAAL,mBAAuB;AAAA,EACzB;AACF;AAAA;AA7TM,iBAEW,qBAA0C,oBAAI,IAAI;AAFnE,IAAM,kBAAN;AA+TA,IAAO,aAAQ;;;AK/UR,IAAM,0BAAkC;;;AC6B/C,IAAM,0BAA0B,CAAC,YAAiB,QAAQ;AAEnD,IAAM,KAAN,MAAS;AAAA,EAsBd,YAA6B,SAAoB;AAApB;AAlB7B,SAAQ,uBAAgC;AACxC,SAAQ,wBAAiC;AAKzC,SAAQ,oBAA4B;AAEpC,SAAQ,gBAAyB;AAEjC,SAAQ,2BAAoC,CAAC;AAC7C,SAAQ,0BAAmC,CAAC;AAE5C,SAAQ,4BAAsC,CAAC;AAC/C,SAAQ,6BAAuC,CAAC;AAEhD,SAAQ,iBAAsC,oBAAI,IAAI;AAiHtD,gBAAO,CAAC,YAAiB;AACvB,UAAI,OAAO,YAAY,UAAU;AAC/B,kBAAU,KAAK,UAAU,OAAO;AAAA,MAClC;AACA,UAAI,OAAO,YAAY;AAAa;AACpC,UAAI,KAAK,aAAa,eAAe,UAAU,MAAM;AACnD,aAAK,aAAa,KAAK,OAAO;AAC9B,gBAAQ,IAAI,2BAA2B,OAAO;AAAA,MAChD,OAAO;AACL,gBAAQ,KAAK,wDAAwD;AAAA,MACvE;AAAA,IACF;AAzHE,SAAK,eAAe,OAAO;AAE3B,QAAI,CAAC,CAAC,QAAQ,WAAW;AACvB,WAAK,gBAAgB,OAAO;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,eAAe,SAAoB;AACzC,QAAI;AACJ,QAAI,OAAO,QAAQ,QAAQ,UAAU;AACnC,YAAM,QAAQ;AAAA,IAChB,OAAO;AACL,YAAM,OAAO,QAAQ,aAAa,SAAS,EAAE;AAAA,IAC/C;AACA,SAAK,eAAe,IAAI,UAAU,GAAG,GAAG,GAAG,QAAQ,SAAS,EAAE;AAC9D,SAAK,aAAa,SAAS,KAAK,OAAO,KAAK,IAAI;AAChD,SAAK,aAAa,YAAY,KAAK,UAAU,KAAK,IAAI;AACtD,SAAK,aAAa,UAAU,KAAK,QAAQ,KAAK,IAAI;AAClD,SAAK,aAAa,UAAU,KAAK,QAAQ,KAAK,IAAI;AAAA,EACpD;AAAA,EAEQ,gBAAgB,SAAoB;AAC1C,UAAM,MAAM,OAAO,QAAQ,aAAa,SAAS,EAAE;AACnD,SAAK,gBAAgB,IAAI,UAAU,GAAG,GAAG,GAAG,QAAQ,SAAS,EAAE;AAC/D,SAAK,cAAc,SAAS,KAAK,cAAc,KAAK,IAAI;AACxD,SAAK,cAAc,YAAY,KAAK,UAAU,KAAK,IAAI;AAEvD,SAAK,cAAc,UAAU,KAAK,eAAe,KAAK,IAAI;AAAA,EAC5D;AAAA,EAEQ,OAAO,OAAc;AAC3B,YAAQ,IAAI,8BAA8B;AAC1C,YAAQ,IAAI,KAAK,uBAAuB;AACxC,QAAI,KAAK,wBAAwB,SAAS,GAAG;AAC3C,WAAK,wBAAwB,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM;AACrD,aAAK,aAAa,QAAQ,EAAE;AAAA,MAC9B,CAAC;AACD,WAAK,0BAA0B,CAAC;AAAA,IAClC;AAEA,SAAK,uBAAuB;AAAA,EAC9B;AAAA,EAEQ,cAAc,OAAc;AAClC,YAAQ,IAAI,sCAAsC;AAElD,QAAI,KAAK,yBAAyB,SAAS,GAAG;AAC5C,WAAK,yBAAyB,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM;AACtD,aAAK,aAAa,QAAQ,EAAE;AAAA,MAC9B,CAAC;AACD,WAAK,2BAA2B,CAAC;AAAA,IACnC;AAEA,SAAK,wBAAwB;AAAA,EAC/B;AAAA,EAEQ,UAAU,OAAqB;AACrC,QAAI;AACF,YAAM,UAAU,KAAK,MAAM,MAAM,IAAI;AACrC,YAAM,iBAAiB,gBAAgB,IAAI,QAAQ,KAAK;AAExD,UAAI,gBAAgB;AAClB,uBAAe,OAAO,SAAS,KAAK,IAAI;AAAA,MAC1C,OAAO;AACL,cAAM,eAAe,KAAK,eAAe,IAAI,QAAQ,KAAK;AAC1D,YAAI,6CAAc,IAAI;AACpB,uBAAa,GAAG,QAAQ,CAAC,OAAO;AAC9B,kBAAM,OAAO,GAAG,YACZ,GAAG,UAAU,OAAO,IACpB,wBAAwB,OAAO;AACnC,eAAG,UAAU,IAAI;AAAA,UACnB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IAEF,SAAS,GAAG;AACV,cAAQ,IAAI,+BAA+B,MAAM,IAAI;AAAA,IACvD;AAAA,EAGF;AAAA,EAEQ,QAAQ,OAAmB;AACjC,YAAQ,IAAI,gCAAgC,MAAM,MAAM;AAAA,EAC1D;AAAA,EAEQ,QAAQ,OAAc;AAC5B,YAAQ,MAAM,oBAAoB,KAAK;AAEvC,SAAK,eAAe,QAAQ,CAAC,OAAO,QAAQ;AAC1C,UAAI,CAAC,MAAM,WAAW;AACpB,aAAK,wBAAwB,KAAK,CAAC,MAAM,QAAQ,MAAM,EAAE,CAAC;AAC1D,aAAK,eAAe,OAAO,GAAG;AAAA,MAChC;AAAA,IACF,CAAC;AAED,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEQ,eAAe,OAAc;AACnC,YAAQ,MAAM,4BAA4B,KAAK;AAE/C,SAAK,eAAe,QAAQ,CAAC,OAAO,QAAQ;AAC1C,UAAI,MAAM,WAAW;AACnB,aAAK,yBAAyB,KAAK,CAAC,MAAM,QAAQ,MAAM,EAAE,CAAC;AAC3D,aAAK,eAAe,OAAO,GAAG;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAeA,QAAQ;AAjLV;AAkLI,SAAK,aAAa,MAAM;AACxB,eAAK,kBAAL,mBAAoB;AAAA,EACtB;AAAA,EAEQ,aACN,WACA,SAKA;AACA,QAAI,KAAK;AAAe;AACxB,QAAI,CAAC,KAAK,eAAe;AACvB,cAAQ,MAAM,0BAA0B;AACxC;AAAA,IACF;AAEA,YAAQ,IAAI,sBAAsB,OAAO;AACzC,SAAK,cAAc;AAAA,MACjB,KAAK,UAAU;AAAA,QACb,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,UACN,aAAa,QAAQ;AAAA,UACrB,MAAM,QAAQ;AAAA,UACd,WAAW,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAGF;AAAA,EAEA,oBAAoB,QAAa,IAAsB;AAAA,EAAC;AAAA,EAExD,aAAa,QAAa,IAAmC;AAC3D,UAAM,CAAC,kBAAkB,oBAAoB,QAAQ,gBAAgB,IACnE,KAAK,gBAAgB,MAAM;AAE7B,UAAM,cAAc,MAAM;AACxB,cAAQ,IAAI,sBAAsB,kBAAkB;AACpD,WAAK,aAAa,KAAK,KAAK,UAAU,kBAAkB,CAAC;AAAA,IAC3D;AAEA,QAAI,KAAK,aAAa,eAAe,UAAU,MAAM;AACnD,WAAK,wBAAwB,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC9C,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,KAAK,eAAe,IAAI,iBAAiB,KAAK;AAE9D,QAAI,CAAC,SAAS;AACZ,WAAK,eAAe,IAAI,iBAAiB,OAAO;AAAA,QAC9C;AAAA,QACA,IAAI,CAAC,EAAE;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,GAAG,KAAK,EAAE;AAAA,IACpB;AAEA,SAAK,aAAa,KAAK,KAAK,UAAU,gBAAgB,CAAC;AAGvD,WAAO;AAAA,EACT;AAAA,EAEQ,gBACN,QACA,aACA,eAMA;AACA,QAAI,kBACF;AACF,QAAI,QACF,mBAA0C,CAAC,YAAiB,QAAQ;AAEtE,QAAI,OAAO,WAAW,UAAU;AAC9B,yBAAmB,EAAE,OAAO,aAAa,OAAO,OAAO;AACvD,2BAAqB,EAAE,OAAO,eAAe,OAAO,OAAO;AAC3D,eAAS,CAAC,YAAiB,QAAQ,UAAU;AAAA,IAC/C,OAAO;AACL,yBAAmB;AACnB,2BACE,OAAO,gBAAgB,aAAa,YAAY,IAAI;AACtD,eAAS,kBAAkB,CAAC,YAAiB;AAAA,IAC/C;AAEA,WAAO,CAAC,kBAAkB,oBAAoB,QAAQ,gBAAgB;AAAA,EACxE;AAAA,EAEQ,kBAAkB;AACxB,QAAI,KAAK;AAAsB;AAC/B,SAAK,uBAAuB;AAC5B,YAAQ,IAAI,mBAAmB,KAAK,oBAAoB,GAAI,aAAa;AACzE,SAAK,yBAAyB,OAAO,WAAW,MAAM;AACpD,cAAQ,IAAI,iBAAiB;AAG7B,WAAK,eAAe,KAAK,OAAO;AAAA,IAClC,GAAG,KAAK,iBAAiB;AAAA,EAC3B;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/fetch/index.ts","../src/ws/index.ts","../src/ws/contants.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts","../src/constants.ts","../src/ws/ws.ts"],"sourcesContent":["export { get, post } from \"./fetch\";\n\nexport { default as WebSocketClient } from \"./ws\";\nexport { type NetworkId, type WSOptions } from \"./ws\";\nexport { __ORDERLY_API_URL_KEY__ } from \"./constants\";\n\nexport { WS } from \"./ws/ws\";\n","async function request(url: string, options: RequestInit) {\n // console.log(\"request\", url, options);\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(urlInstance, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers),\n }).catch((err) => {\n throw new Error(err);\n });\n\n if (response.ok) {\n return response.json();\n }\n throw new Error(response.statusText);\n}\n\nfunction _createHeaders(headers: HeadersInit = {}): HeadersInit {\n // console.log(\"headers\", headers);\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\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 // 根据返回的数据结构,返回需要的数据\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] 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\nexport { get, post };\n","import { type WebSocketSubject, webSocket } from \"rxjs/webSocket\";\n\nimport { WS_URL } from \"./contants\";\nimport { Observable, Observer, Subject, tap } from \"rxjs\";\nimport { messageHandlers } from \"@/ws/handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nclass WebSocketClient {\n // the topic reference count;\n private static __topicRefCountMap: Map<string, number> = new Map();\n private wsSubject: WebSocketSubject<any>;\n private privateWsSubject?: WebSocketSubject<any>;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[] = [];\n\n constructor(options: WSOptions) {\n this.wsSubject = this.createSubject(options);\n\n if (!!options.accountId) {\n this.privateWsSubject = this.createPrivateSubject(options);\n }\n\n this.bindSubscribe();\n }\n private createSubject(options: WSOptions): WebSocketSubject<any> {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n\n return webSocket({\n url: `${url}${options.accountId || \"\"}`,\n openObserver: {\n next: () => {\n console.log(\"Connection ok\");\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Connection closed\");\n },\n },\n });\n }\n\n private createPrivateSubject(options: WSOptions): WebSocketSubject<any> {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n const ws = webSocket({\n url: `${url}${options.accountId}`,\n openObserver: {\n next: () => {\n console.log(\"Private connection ok\");\n if (this.authenticated || !options.accountId) return;\n\n options.onSigntureRequest?.(options.accountId).then((signature) => {\n this.authenticate(options.accountId!, signature);\n });\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Private connection closed\");\n this.authenticated = false;\n },\n },\n });\n // authenticate\n\n return ws;\n }\n\n private bindSubscribe() {\n /// 处理ping,auth等消息\n\n this.wsSubject.subscribe({\n next: (message) => {\n const handler = messageHandlers.get(message.event);\n if (handler) {\n handler.handle(message, this.send);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n\n if (!this.privateWsSubject) return;\n\n this.privateWsSubject.subscribe({\n next: (message) => {\n if (message.event === \"auth\") {\n this.authenticated = true;\n // 认证成功后,发送之前的订阅消息\n this._sendPendingPrivateMessage();\n return;\n }\n\n const handler = messageHandlers.get(message.event);\n\n if (handler) {\n handler.handle(message, this.privateSend);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n }\n\n private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateWsSubject) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\n this.privateWsSubject?.next({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n });\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n send = (message: any) => {\n this.wsSubject.next(message);\n };\n\n privateSend = (message: any) => {\n if (!this.privateWsSubject) {\n console.warn(\"private ws not connected\");\n return;\n }\n\n this.privateWsSubject.next(message);\n };\n\n get isAuthed() {\n return this.authenticated;\n }\n\n // observe<T>(topic: string): Observable<T>;\n // observe<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // observe<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n observe<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(false, params, unsubscribe, messageFilter);\n }\n\n // privateObserve<T>(topic: string): Observable<T>;\n // privateObserve<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // privateObserve<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n privateObserve<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(true, params, unsubscribe, messageFilter);\n }\n\n private _observe<T>(\n isPrivate: boolean,\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ) {\n console.log(\n \"observe---------------------------\",\n params,\n unsubscribe,\n messageFilter\n );\n\n if (isPrivate && !this.privateWsSubject) {\n throw new Error(\"private ws not connected\");\n }\n\n const subject = isPrivate ? this.privateWsSubject : this.wsSubject;\n const sendFunc = isPrivate ? this.privateSend : this.send;\n\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params, unsubscribe, messageFilter);\n\n return new Observable((observer: Observer<T>) => {\n // 如果是private ws, 但是没有连接,就先缓存起来,等连接上了再订阅\n if (isPrivate && !this.authenticated) {\n this._pendingPrivateSubscribe.push(params);\n return;\n }\n\n try {\n //TODO: add ref count, only send subscribe message when ref count is 0\n // 如果已经订阅过了,就不再发送订阅消息\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount === 0) {\n // WS.__topicRefCountMap.set(subscribeMessage.topic, WS.__topicRefCountMap.get(subscribeMessage.topic) + 1);\n // this.send(subscribeMessage);\n sendFunc(subscribeMessage);\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount + 1\n );\n }\n } catch (err) {\n observer.error(err);\n }\n\n const subscription = subject!.subscribe({\n next: (x) => {\n try {\n if (filter(x)) {\n observer.next(messageFormatter(x));\n }\n } catch (err) {\n observer.error(err);\n }\n },\n error: (err) => observer.error(err),\n complete: () => observer.complete(),\n });\n\n return () => {\n try {\n // console.log(\"******* unsubscribe\", unsubscribeMessage);\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount > 1) {\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount - 1\n );\n return;\n }\n if (!!unsubscribeMessage) {\n this.send(unsubscribeMessage);\n }\n WebSocketClient.__topicRefCountMap.delete(subscribeMessage.topic);\n } catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private _sendPendingPrivateMessage() {\n if (this._pendingPrivateSubscribe.length === 0) return;\n this._pendingPrivateSubscribe.forEach((params) => {\n this.privateObserve(params).subscribe();\n });\n this._pendingPrivateSubscribe = [];\n }\n\n // 取消所有订阅\n desotry() {\n this.wsSubject.unsubscribe();\n this.privateWsSubject?.unsubscribe();\n }\n}\n\nexport default WebSocketClient;\n","export const WS_URL = {\n testnet: {\n // public: \"wss://testnet-ws.orderly.org/ws/stream/\",\n public: \"wss://dev-ws-v2.orderly.org/ws/stream/\",\n // private:\n // \"wss://dev-ws-private-v2.orderly.org/wsprivate/v2/ws/private/stream/\",\n private: \"wss://dev-ws-private-v2.orderly.org/v2/ws/private/stream/\",\n },\n mainnet: {\n public: \"wss://mainnet-ws.orderly.io\",\n private: \"wss://mainnet-ws.orderly.io\",\n },\n};\n","import { MessageHandler, SendFunc } from \"@/types/ws\";\nimport { WebSocketSubject } from \"rxjs/webSocket\";\n\nexport default class BaseHandler implements MessageHandler {\n // constructor(readonly wsSubject: WebSocketSubject<any>) {}\n handle(message: any, send: SendFunc) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\nimport { SendFunc } from \"@/types/ws\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, send: SendFunc) {\n send({ 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","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import { WS_URL } from \"./contants\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => string;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: any;\n isPrivate?: boolean;\n cb: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\n\nexport class WS {\n private publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private publicReconnectTimeout?: number;\n private privateReconnectTimeout?: number;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n private _subscriptionPublicTopics: Topics[] = [];\n private _subscriptionPrivateTopics: Topics[] = [];\n\n private _eventHandlers: Map<string, Topics> = new Map();\n\n constructor(private readonly options: WSOptions) {\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n }\n\n private createPublicSC(options: WSOptions) {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n this.publicSocket = new WebSocket(`${url}${options.accountId}`);\n this.publicSocket.onopen = this.onOpen.bind(this);\n this.publicSocket.onmessage = this.onMessage.bind(this);\n this.publicSocket.onclose = this.onClose.bind(this);\n this.publicSocket.onerror = this.onError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n this.privateSocket = new WebSocket(`${url}${options.accountId}`);\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onMessage.bind(this);\n // this.privateSocket.onclose = this.onClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n console.log(\"WebSocket connection opened:\");\n console.log(this._pendingPublicSubscribe);\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n }\n\n private onPrivateOpen(event: Event) {\n console.log(\"Private WebSocket connection opened:\");\n\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n\n this.privateIsReconnecting = false;\n }\n\n private onMessage(event: MessageEvent) {\n try {\n const message = JSON.parse(event.data);\n const commoneHandler = messageHandlers.get(message.event);\n\n if (commoneHandler) {\n commoneHandler.handle(message, this.send);\n } else {\n const eventhandler = this._eventHandlers.get(message.topic);\n if (eventhandler?.cb) {\n eventhandler.cb.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n cb.onMessage(data);\n });\n }\n }\n // console.log(\"WebSocket message received:\", message);\n } catch (e) {\n console.log(\"WebSocket message received:\", event.data);\n }\n\n // You can process the received message here\n }\n\n private onClose(event: CloseEvent) {\n console.log(\"WebSocket connection closed:\", event.reason);\n }\n\n private onError(event: Event) {\n console.error(\"WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (!value.isPrivate) {\n this._pendingPublicSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\n }\n });\n\n this.reconnectPublic();\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (value.isPrivate) {\n this._pendingPrivateSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\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 // console.log(\"WebSocket message sent:\", message);\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 private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\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 privateSubscription(params: any, cb: WSMessageHandler) {}\n\n subscription(params: any, cb: WSMessageHandler): unsubscribe {\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params);\n\n const unsubscribe = () => {\n console.log(\"unsubscribeMessage\", unsubscribeMessage);\n this.publicSocket.send(JSON.stringify(unsubscribeMessage));\n };\n\n if (this.publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, cb]);\n return unsubscribe;\n }\n\n const handler = this._eventHandlers.get(subscribeMessage.topic);\n\n if (!handler) {\n this._eventHandlers.set(subscribeMessage.topic, {\n params,\n cb: [cb],\n });\n } else {\n handler.cb.push(cb);\n }\n\n this.publicSocket.send(JSON.stringify(subscribeMessage));\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n return unsubscribe;\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n console.log(`Reconnecting in ${this.reconnectInterval / 1000} seconds...`);\n this.publicReconnectTimeout = window.setTimeout(() => {\n console.log(\"Reconnecting...\");\n // this.publicIsReconnecting = false;\n\n this.createPublicSC(this.options);\n }, this.reconnectInterval);\n }\n}\n"],"mappings":"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","names":[]}
package/dist/index.mjs CHANGED
@@ -403,7 +403,6 @@ var WS = class {
403
403
  return;
404
404
  if (this.publicSocket.readyState === WebSocket.OPEN) {
405
405
  this.publicSocket.send(message);
406
- console.log("WebSocket message sent:", message);
407
406
  } else {
408
407
  console.warn("WebSocket connection is not open. Cannot send message.");
409
408
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fetch/index.ts","../src/ws/index.ts","../src/ws/contants.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts","../src/constants.ts","../src/ws/ws.ts"],"sourcesContent":["async function request(url: string, options: RequestInit) {\n // console.log(\"request\", url, options);\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(urlInstance, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers),\n }).catch((err) => {\n throw new Error(err);\n });\n\n if (response.ok) {\n return response.json();\n }\n throw new Error(response.statusText);\n}\n\nfunction _createHeaders(headers: HeadersInit = {}): HeadersInit {\n // console.log(\"headers\", headers);\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\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 // 根据返回的数据结构,返回需要的数据\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] 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\nexport { get, post };\n","import { type WebSocketSubject, webSocket } from \"rxjs/webSocket\";\n\nimport { WS_URL } from \"./contants\";\nimport { Observable, Observer, Subject, tap } from \"rxjs\";\nimport { messageHandlers } from \"@/ws/handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nclass WebSocketClient {\n // the topic reference count;\n private static __topicRefCountMap: Map<string, number> = new Map();\n private wsSubject: WebSocketSubject<any>;\n private privateWsSubject?: WebSocketSubject<any>;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[] = [];\n\n constructor(options: WSOptions) {\n this.wsSubject = this.createSubject(options);\n\n if (!!options.accountId) {\n this.privateWsSubject = this.createPrivateSubject(options);\n }\n\n this.bindSubscribe();\n }\n private createSubject(options: WSOptions): WebSocketSubject<any> {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n\n return webSocket({\n url: `${url}${options.accountId || \"\"}`,\n openObserver: {\n next: () => {\n console.log(\"Connection ok\");\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Connection closed\");\n },\n },\n });\n }\n\n private createPrivateSubject(options: WSOptions): WebSocketSubject<any> {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n const ws = webSocket({\n url: `${url}${options.accountId}`,\n openObserver: {\n next: () => {\n console.log(\"Private connection ok\");\n if (this.authenticated || !options.accountId) return;\n\n options.onSigntureRequest?.(options.accountId).then((signature) => {\n this.authenticate(options.accountId!, signature);\n });\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Private connection closed\");\n this.authenticated = false;\n },\n },\n });\n // authenticate\n\n return ws;\n }\n\n private bindSubscribe() {\n /// 处理ping,auth等消息\n\n this.wsSubject.subscribe({\n next: (message) => {\n const handler = messageHandlers.get(message.event);\n if (handler) {\n handler.handle(message, this.send);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n\n if (!this.privateWsSubject) return;\n\n this.privateWsSubject.subscribe({\n next: (message) => {\n if (message.event === \"auth\") {\n this.authenticated = true;\n // 认证成功后,发送之前的订阅消息\n this._sendPendingPrivateMessage();\n return;\n }\n\n const handler = messageHandlers.get(message.event);\n\n if (handler) {\n handler.handle(message, this.privateSend);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n }\n\n private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateWsSubject) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\n this.privateWsSubject?.next({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n });\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n send = (message: any) => {\n this.wsSubject.next(message);\n };\n\n privateSend = (message: any) => {\n if (!this.privateWsSubject) {\n console.warn(\"private ws not connected\");\n return;\n }\n\n this.privateWsSubject.next(message);\n };\n\n get isAuthed() {\n return this.authenticated;\n }\n\n // observe<T>(topic: string): Observable<T>;\n // observe<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // observe<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n observe<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(false, params, unsubscribe, messageFilter);\n }\n\n // privateObserve<T>(topic: string): Observable<T>;\n // privateObserve<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // privateObserve<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n privateObserve<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(true, params, unsubscribe, messageFilter);\n }\n\n private _observe<T>(\n isPrivate: boolean,\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ) {\n console.log(\n \"observe---------------------------\",\n params,\n unsubscribe,\n messageFilter\n );\n\n if (isPrivate && !this.privateWsSubject) {\n throw new Error(\"private ws not connected\");\n }\n\n const subject = isPrivate ? this.privateWsSubject : this.wsSubject;\n const sendFunc = isPrivate ? this.privateSend : this.send;\n\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params, unsubscribe, messageFilter);\n\n return new Observable((observer: Observer<T>) => {\n // 如果是private ws, 但是没有连接,就先缓存起来,等连接上了再订阅\n if (isPrivate && !this.authenticated) {\n this._pendingPrivateSubscribe.push(params);\n return;\n }\n\n try {\n //TODO: add ref count, only send subscribe message when ref count is 0\n // 如果已经订阅过了,就不再发送订阅消息\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount === 0) {\n // WS.__topicRefCountMap.set(subscribeMessage.topic, WS.__topicRefCountMap.get(subscribeMessage.topic) + 1);\n // this.send(subscribeMessage);\n sendFunc(subscribeMessage);\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount + 1\n );\n }\n } catch (err) {\n observer.error(err);\n }\n\n const subscription = subject!.subscribe({\n next: (x) => {\n try {\n if (filter(x)) {\n observer.next(messageFormatter(x));\n }\n } catch (err) {\n observer.error(err);\n }\n },\n error: (err) => observer.error(err),\n complete: () => observer.complete(),\n });\n\n return () => {\n try {\n // console.log(\"******* unsubscribe\", unsubscribeMessage);\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount > 1) {\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount - 1\n );\n return;\n }\n if (!!unsubscribeMessage) {\n this.send(unsubscribeMessage);\n }\n WebSocketClient.__topicRefCountMap.delete(subscribeMessage.topic);\n } catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private _sendPendingPrivateMessage() {\n if (this._pendingPrivateSubscribe.length === 0) return;\n this._pendingPrivateSubscribe.forEach((params) => {\n this.privateObserve(params).subscribe();\n });\n this._pendingPrivateSubscribe = [];\n }\n\n // 取消所有订阅\n desotry() {\n this.wsSubject.unsubscribe();\n this.privateWsSubject?.unsubscribe();\n }\n}\n\nexport default WebSocketClient;\n","export const WS_URL = {\n testnet: {\n // public: \"wss://testnet-ws.orderly.org/ws/stream/\",\n public: \"wss://dev-ws-v2.orderly.org/ws/stream/\",\n // private:\n // \"wss://dev-ws-private-v2.orderly.org/wsprivate/v2/ws/private/stream/\",\n private: \"wss://dev-ws-private-v2.orderly.org/v2/ws/private/stream/\",\n },\n mainnet: {\n public: \"wss://mainnet-ws.orderly.io\",\n private: \"wss://mainnet-ws.orderly.io\",\n },\n};\n","import { MessageHandler, SendFunc } from \"@/types/ws\";\nimport { WebSocketSubject } from \"rxjs/webSocket\";\n\nexport default class BaseHandler implements MessageHandler {\n // constructor(readonly wsSubject: WebSocketSubject<any>) {}\n handle(message: any, send: SendFunc) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\nimport { SendFunc } from \"@/types/ws\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, send: SendFunc) {\n send({ 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","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import { WS_URL } from \"./contants\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => string;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: any;\n isPrivate?: boolean;\n cb: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\n\nexport class WS {\n private publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private publicReconnectTimeout?: number;\n private privateReconnectTimeout?: number;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n private _subscriptionPublicTopics: Topics[] = [];\n private _subscriptionPrivateTopics: Topics[] = [];\n\n private _eventHandlers: Map<string, Topics> = new Map();\n\n constructor(private readonly options: WSOptions) {\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n }\n\n private createPublicSC(options: WSOptions) {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n this.publicSocket = new WebSocket(`${url}${options.accountId}`);\n this.publicSocket.onopen = this.onOpen.bind(this);\n this.publicSocket.onmessage = this.onMessage.bind(this);\n this.publicSocket.onclose = this.onClose.bind(this);\n this.publicSocket.onerror = this.onError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n this.privateSocket = new WebSocket(`${url}${options.accountId}`);\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onMessage.bind(this);\n // this.privateSocket.onclose = this.onClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n console.log(\"WebSocket connection opened:\");\n console.log(this._pendingPublicSubscribe);\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n }\n\n private onPrivateOpen(event: Event) {\n console.log(\"Private WebSocket connection opened:\");\n\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n\n this.privateIsReconnecting = false;\n }\n\n private onMessage(event: MessageEvent) {\n try {\n const message = JSON.parse(event.data);\n const commoneHandler = messageHandlers.get(message.event);\n\n if (commoneHandler) {\n commoneHandler.handle(message, this.send);\n } else {\n const eventhandler = this._eventHandlers.get(message.topic);\n if (eventhandler?.cb) {\n eventhandler.cb.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n cb.onMessage(data);\n });\n }\n }\n // console.log(\"WebSocket message received:\", message);\n } catch (e) {\n console.log(\"WebSocket message received:\", event.data);\n }\n\n // You can process the received message here\n }\n\n private onClose(event: CloseEvent) {\n console.log(\"WebSocket connection closed:\", event.reason);\n }\n\n private onError(event: Event) {\n console.error(\"WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (!value.isPrivate) {\n this._pendingPublicSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\n }\n });\n\n this.reconnectPublic();\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (value.isPrivate) {\n this._pendingPrivateSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\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 console.log(\"WebSocket message sent:\", message);\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 private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\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 privateSubscription(params: any, cb: WSMessageHandler) {}\n\n subscription(params: any, cb: WSMessageHandler): unsubscribe {\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params);\n\n const unsubscribe = () => {\n console.log(\"unsubscribeMessage\", unsubscribeMessage);\n this.publicSocket.send(JSON.stringify(unsubscribeMessage));\n };\n\n if (this.publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, cb]);\n return unsubscribe;\n }\n\n const handler = this._eventHandlers.get(subscribeMessage.topic);\n\n if (!handler) {\n this._eventHandlers.set(subscribeMessage.topic, {\n params,\n cb: [cb],\n });\n } else {\n handler.cb.push(cb);\n }\n\n this.publicSocket.send(JSON.stringify(subscribeMessage));\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n return unsubscribe;\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n console.log(`Reconnecting in ${this.reconnectInterval / 1000} seconds...`);\n this.publicReconnectTimeout = window.setTimeout(() => {\n console.log(\"Reconnecting...\");\n // this.publicIsReconnecting = false;\n\n this.createPublicSC(this.options);\n }, this.reconnectInterval);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/fetch/index.ts","../src/ws/index.ts","../src/ws/contants.ts","../src/ws/handler/baseHandler.ts","../src/ws/handler/ping.ts","../src/ws/handler/handler.ts","../src/constants.ts","../src/ws/ws.ts"],"sourcesContent":["async function request(url: string, options: RequestInit) {\n // console.log(\"request\", url, options);\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(urlInstance, {\n ...options,\n // mode: \"cors\",\n // credentials: \"include\",\n headers: _createHeaders(options.headers),\n }).catch((err) => {\n throw new Error(err);\n });\n\n if (response.ok) {\n return response.json();\n }\n throw new Error(response.statusText);\n}\n\nfunction _createHeaders(headers: HeadersInit = {}): HeadersInit {\n // console.log(\"headers\", headers);\n const _headers = new Headers(headers);\n // _headers.append(\"Accept\", \"application/json\");\n\n if (!_headers.has(\"Content-Type\")) {\n _headers.append(\"Content-Type\", \"application/json;charset=utf-8\");\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 // 根据返回的数据结构,返回需要的数据\n if (Array.isArray(res.data[\"rows\"])) {\n return res.data[\"rows\"] 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\nexport { get, post };\n","import { type WebSocketSubject, webSocket } from \"rxjs/webSocket\";\n\nimport { WS_URL } from \"./contants\";\nimport { Observable, Observer, Subject, tap } from \"rxjs\";\nimport { messageHandlers } from \"@/ws/handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nclass WebSocketClient {\n // the topic reference count;\n private static __topicRefCountMap: Map<string, number> = new Map();\n private wsSubject: WebSocketSubject<any>;\n private privateWsSubject?: WebSocketSubject<any>;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[] = [];\n\n constructor(options: WSOptions) {\n this.wsSubject = this.createSubject(options);\n\n if (!!options.accountId) {\n this.privateWsSubject = this.createPrivateSubject(options);\n }\n\n this.bindSubscribe();\n }\n private createSubject(options: WSOptions): WebSocketSubject<any> {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n\n return webSocket({\n url: `${url}${options.accountId || \"\"}`,\n openObserver: {\n next: () => {\n console.log(\"Connection ok\");\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Connection closed\");\n },\n },\n });\n }\n\n private createPrivateSubject(options: WSOptions): WebSocketSubject<any> {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n const ws = webSocket({\n url: `${url}${options.accountId}`,\n openObserver: {\n next: () => {\n console.log(\"Private connection ok\");\n if (this.authenticated || !options.accountId) return;\n\n options.onSigntureRequest?.(options.accountId).then((signature) => {\n this.authenticate(options.accountId!, signature);\n });\n },\n },\n closeObserver: {\n next: () => {\n console.log(\"Private connection closed\");\n this.authenticated = false;\n },\n },\n });\n // authenticate\n\n return ws;\n }\n\n private bindSubscribe() {\n /// 处理ping,auth等消息\n\n this.wsSubject.subscribe({\n next: (message) => {\n const handler = messageHandlers.get(message.event);\n if (handler) {\n handler.handle(message, this.send);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n\n if (!this.privateWsSubject) return;\n\n this.privateWsSubject.subscribe({\n next: (message) => {\n if (message.event === \"auth\") {\n this.authenticated = true;\n // 认证成功后,发送之前的订阅消息\n this._sendPendingPrivateMessage();\n return;\n }\n\n const handler = messageHandlers.get(message.event);\n\n if (handler) {\n handler.handle(message, this.privateSend);\n }\n },\n error(err) {\n console.log(\"WS Error: \", err);\n },\n complete() {\n console.log(\"WS Connection closed\");\n },\n });\n }\n\n private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateWsSubject) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\n this.privateWsSubject?.next({\n id: \"auth\",\n event: \"auth\",\n params: {\n orderly_key: message.publicKey,\n sign: message.signature,\n timestamp: message.timestamp,\n },\n });\n // this.wsSubject.next({ type: \"authenticate\" });\n // this.authenticated = true;\n }\n\n send = (message: any) => {\n this.wsSubject.next(message);\n };\n\n privateSend = (message: any) => {\n if (!this.privateWsSubject) {\n console.warn(\"private ws not connected\");\n return;\n }\n\n this.privateWsSubject.next(message);\n };\n\n get isAuthed() {\n return this.authenticated;\n }\n\n // observe<T>(topic: string): Observable<T>;\n // observe<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // observe<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n observe<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(false, params, unsubscribe, messageFilter);\n }\n\n // privateObserve<T>(topic: string): Observable<T>;\n // privateObserve<T>(topic: string, unsubscribe?: () => any): Observable<T>;\n // privateObserve<T>(\n // params: {\n // event: string;\n // } & Record<string, any>,\n // unsubscribe?: () => any\n // ): Observable<T>;\n privateObserve<T>(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ): Observable<T> {\n return this._observe(true, params, unsubscribe, messageFilter);\n }\n\n private _observe<T>(\n isPrivate: boolean,\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: T) => boolean\n ) {\n console.log(\n \"observe---------------------------\",\n params,\n unsubscribe,\n messageFilter\n );\n\n if (isPrivate && !this.privateWsSubject) {\n throw new Error(\"private ws not connected\");\n }\n\n const subject = isPrivate ? this.privateWsSubject : this.wsSubject;\n const sendFunc = isPrivate ? this.privateSend : this.send;\n\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params, unsubscribe, messageFilter);\n\n return new Observable((observer: Observer<T>) => {\n // 如果是private ws, 但是没有连接,就先缓存起来,等连接上了再订阅\n if (isPrivate && !this.authenticated) {\n this._pendingPrivateSubscribe.push(params);\n return;\n }\n\n try {\n //TODO: add ref count, only send subscribe message when ref count is 0\n // 如果已经订阅过了,就不再发送订阅消息\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount === 0) {\n // WS.__topicRefCountMap.set(subscribeMessage.topic, WS.__topicRefCountMap.get(subscribeMessage.topic) + 1);\n // this.send(subscribeMessage);\n sendFunc(subscribeMessage);\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount + 1\n );\n }\n } catch (err) {\n observer.error(err);\n }\n\n const subscription = subject!.subscribe({\n next: (x) => {\n try {\n if (filter(x)) {\n observer.next(messageFormatter(x));\n }\n } catch (err) {\n observer.error(err);\n }\n },\n error: (err) => observer.error(err),\n complete: () => observer.complete(),\n });\n\n return () => {\n try {\n // console.log(\"******* unsubscribe\", unsubscribeMessage);\n const refCount =\n WebSocketClient.__topicRefCountMap.get(subscribeMessage.topic) || 0;\n if (refCount > 1) {\n WebSocketClient.__topicRefCountMap.set(\n subscribeMessage.topic,\n refCount - 1\n );\n return;\n }\n if (!!unsubscribeMessage) {\n this.send(unsubscribeMessage);\n }\n WebSocketClient.__topicRefCountMap.delete(subscribeMessage.topic);\n } catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private _sendPendingPrivateMessage() {\n if (this._pendingPrivateSubscribe.length === 0) return;\n this._pendingPrivateSubscribe.forEach((params) => {\n this.privateObserve(params).subscribe();\n });\n this._pendingPrivateSubscribe = [];\n }\n\n // 取消所有订阅\n desotry() {\n this.wsSubject.unsubscribe();\n this.privateWsSubject?.unsubscribe();\n }\n}\n\nexport default WebSocketClient;\n","export const WS_URL = {\n testnet: {\n // public: \"wss://testnet-ws.orderly.org/ws/stream/\",\n public: \"wss://dev-ws-v2.orderly.org/ws/stream/\",\n // private:\n // \"wss://dev-ws-private-v2.orderly.org/wsprivate/v2/ws/private/stream/\",\n private: \"wss://dev-ws-private-v2.orderly.org/v2/ws/private/stream/\",\n },\n mainnet: {\n public: \"wss://mainnet-ws.orderly.io\",\n private: \"wss://mainnet-ws.orderly.io\",\n },\n};\n","import { MessageHandler, SendFunc } from \"@/types/ws\";\nimport { WebSocketSubject } from \"rxjs/webSocket\";\n\nexport default class BaseHandler implements MessageHandler {\n // constructor(readonly wsSubject: WebSocketSubject<any>) {}\n handle(message: any, send: SendFunc) {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import BaseHandler from \"./baseHandler\";\nimport { SendFunc } from \"@/types/ws\";\n\nexport default class PingHandler extends BaseHandler {\n handle(_: any, send: SendFunc) {\n send({ 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","export const __ORDERLY_API_URL_KEY__: string = \"__ORDERLY_API_URL__\";\n","import { WS_URL } from \"./contants\";\nimport { messageHandlers } from \"./handler/handler\";\n\nexport type NetworkId = \"testnet\" | \"mainnet\";\n\nexport type WSOptions = {\n url?: string;\n networkId?: NetworkId;\n accountId?: string;\n\n onSigntureRequest?: (accountId: string) => Promise<any>;\n};\n\nexport type unsubscribe = () => void;\n\ntype WSMessageHandler = {\n onMessage: (message: any) => void;\n onError?: (error: any) => void;\n onClose?: (event: any) => void;\n onUnsubscribe: (event: any) => string;\n formatter?: (message: any) => any;\n};\n\ntype Topics = {\n params: any;\n isPrivate?: boolean;\n cb: WSMessageHandler[];\n};\n\nconst defaultMessageFormatter = (message: any) => message.data;\n\nexport class WS {\n private publicSocket!: WebSocket;\n private privateSocket?: WebSocket;\n\n private publicIsReconnecting: boolean = false;\n private privateIsReconnecting: boolean = false;\n\n private publicReconnectTimeout?: number;\n private privateReconnectTimeout?: number;\n\n private reconnectInterval: number = 1000;\n\n private authenticated: boolean = false;\n\n private _pendingPrivateSubscribe: any[][] = [];\n private _pendingPublicSubscribe: any[][] = [];\n\n private _subscriptionPublicTopics: Topics[] = [];\n private _subscriptionPrivateTopics: Topics[] = [];\n\n private _eventHandlers: Map<string, Topics> = new Map();\n\n constructor(private readonly options: WSOptions) {\n this.createPublicSC(options);\n\n if (!!options.accountId) {\n this.createPrivateSC(options);\n }\n }\n\n private createPublicSC(options: WSOptions) {\n let url;\n if (typeof options.url === \"string\") {\n url = options.url;\n } else {\n url = WS_URL[options.networkId || \"testnet\"].public;\n }\n this.publicSocket = new WebSocket(`${url}${options.accountId}`);\n this.publicSocket.onopen = this.onOpen.bind(this);\n this.publicSocket.onmessage = this.onMessage.bind(this);\n this.publicSocket.onclose = this.onClose.bind(this);\n this.publicSocket.onerror = this.onError.bind(this);\n }\n\n private createPrivateSC(options: WSOptions) {\n const url = WS_URL[options.networkId || \"testnet\"].private;\n this.privateSocket = new WebSocket(`${url}${options.accountId}`);\n this.privateSocket.onopen = this.onPrivateOpen.bind(this);\n this.privateSocket.onmessage = this.onMessage.bind(this);\n // this.privateSocket.onclose = this.onClose.bind(this);\n this.privateSocket.onerror = this.onPrivateError.bind(this);\n }\n\n private onOpen(event: Event) {\n console.log(\"WebSocket connection opened:\");\n console.log(this._pendingPublicSubscribe);\n if (this._pendingPublicSubscribe.length > 0) {\n this._pendingPublicSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPublicSubscribe = [];\n }\n\n this.publicIsReconnecting = false;\n }\n\n private onPrivateOpen(event: Event) {\n console.log(\"Private WebSocket connection opened:\");\n\n if (this._pendingPrivateSubscribe.length > 0) {\n this._pendingPrivateSubscribe.forEach(([params, cb]) => {\n this.subscription(params, cb);\n });\n this._pendingPrivateSubscribe = [];\n }\n\n this.privateIsReconnecting = false;\n }\n\n private onMessage(event: MessageEvent) {\n try {\n const message = JSON.parse(event.data);\n const commoneHandler = messageHandlers.get(message.event);\n\n if (commoneHandler) {\n commoneHandler.handle(message, this.send);\n } else {\n const eventhandler = this._eventHandlers.get(message.topic);\n if (eventhandler?.cb) {\n eventhandler.cb.forEach((cb) => {\n const data = cb.formatter\n ? cb.formatter(message)\n : defaultMessageFormatter(message);\n cb.onMessage(data);\n });\n }\n }\n // console.log(\"WebSocket message received:\", message);\n } catch (e) {\n console.log(\"WebSocket message received:\", event.data);\n }\n\n // You can process the received message here\n }\n\n private onClose(event: CloseEvent) {\n console.log(\"WebSocket connection closed:\", event.reason);\n }\n\n private onError(event: Event) {\n console.error(\"WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (!value.isPrivate) {\n this._pendingPublicSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\n }\n });\n\n this.reconnectPublic();\n }\n\n private onPrivateError(event: Event) {\n console.error(\"Private WebSocket error:\", event);\n\n this._eventHandlers.forEach((value, key) => {\n if (value.isPrivate) {\n this._pendingPrivateSubscribe.push([value.params, value.cb]);\n this._eventHandlers.delete(key);\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 // console.log(\"WebSocket message sent:\", message);\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 private authenticate(\n accountId: string,\n message: {\n publicKey: string;\n signature: string;\n timestamp: number;\n }\n ) {\n if (this.authenticated) return;\n if (!this.privateSocket) {\n console.error(\"private ws not connected\");\n return;\n }\n\n console.log(\"push auth message:\", message);\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 privateSubscription(params: any, cb: WSMessageHandler) {}\n\n subscription(params: any, cb: WSMessageHandler): unsubscribe {\n const [subscribeMessage, unsubscribeMessage, filter, messageFormatter] =\n this.generateMessage(params);\n\n const unsubscribe = () => {\n console.log(\"unsubscribeMessage\", unsubscribeMessage);\n this.publicSocket.send(JSON.stringify(unsubscribeMessage));\n };\n\n if (this.publicSocket.readyState !== WebSocket.OPEN) {\n this._pendingPublicSubscribe.push([params, cb]);\n return unsubscribe;\n }\n\n const handler = this._eventHandlers.get(subscribeMessage.topic);\n\n if (!handler) {\n this._eventHandlers.set(subscribeMessage.topic, {\n params,\n cb: [cb],\n });\n } else {\n handler.cb.push(cb);\n }\n\n this.publicSocket.send(JSON.stringify(subscribeMessage));\n // this._subscriptionPublicTopics.push({params, cb: [cb]});\n\n return unsubscribe;\n }\n\n private generateMessage(\n params: any,\n unsubscribe?: () => any,\n messageFilter?: (value: any) => boolean\n ): [\n Record<string, any>,\n Record<string, any>,\n (message: any) => boolean,\n (message: any) => any\n ] {\n let subscribeMessage: Record<string, any>,\n unsubscribeMessage: Record<string, any>;\n let filter: (message: any) => boolean,\n messageFormatter: (message: any) => any = (message: any) => message.data;\n\n if (typeof params === \"string\") {\n subscribeMessage = { event: \"subscribe\", topic: params };\n unsubscribeMessage = { event: \"unsubscribe\", topic: params };\n filter = (message: any) => message.topic === params;\n } else {\n subscribeMessage = params;\n unsubscribeMessage =\n typeof unsubscribe === \"function\" ? unsubscribe() : unsubscribe;\n filter = messageFilter || ((message: any) => true);\n }\n\n return [subscribeMessage, unsubscribeMessage, filter, messageFormatter];\n }\n\n private reconnectPublic() {\n if (this.publicIsReconnecting) return;\n this.publicIsReconnecting = true;\n console.log(`Reconnecting in ${this.reconnectInterval / 1000} seconds...`);\n this.publicReconnectTimeout = window.setTimeout(() => {\n console.log(\"Reconnecting...\");\n // this.publicIsReconnecting = false;\n\n this.createPublicSC(this.options);\n }, this.reconnectInterval);\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orderly.network/net",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -17,7 +17,7 @@
17
17
  "rxjs": "^7.8.1",
18
18
  "tsup": "^7.1.0",
19
19
  "typescript": "^5.1.6",
20
- "tsconfig": "0.0.4"
20
+ "tsconfig": "0.0.6"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "rxjs": "^7.8.1"
package/src/ws/ws.ts CHANGED
@@ -169,7 +169,7 @@ export class WS {
169
169
  if (typeof message === "undefined") return;
170
170
  if (this.publicSocket.readyState === WebSocket.OPEN) {
171
171
  this.publicSocket.send(message);
172
- console.log("WebSocket message sent:", message);
172
+ // console.log("WebSocket message sent:", message);
173
173
  } else {
174
174
  console.warn("WebSocket connection is not open. Cannot send message.");
175
175
  }