@polkadot-api/ws-provider 0.3.1 → 0.3.2

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,12 +1,15 @@
1
1
  import { WebSocket } from 'ws';
2
2
  import { getInternalWsProvider } from './ws-provider.mjs';
3
+ export { WsEvent } from './types.mjs';
3
4
 
4
5
  class WS extends WebSocket {
5
6
  close() {
6
7
  this.terminate();
7
8
  }
8
9
  }
9
- const getWsProvider = getInternalWsProvider(WS);
10
+ const getWsProvider = getInternalWsProvider(
11
+ WS
12
+ );
10
13
 
11
14
  export { getWsProvider };
12
15
  //# sourceMappingURL=node.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.mjs","sources":["../../../src/node.ts"],"sourcesContent":["// @ts-ignore\nimport { WebSocket } from \"ws\"\nimport { getInternalWsProvider } from \"./ws-provider\"\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nclass WS extends WebSocket {\n close() {\n ;(this as any).terminate()\n }\n}\n\nexport const getWsProvider = getInternalWsProvider(WS as any)\n"],"names":[],"mappings":";;;AAKA,MAAM,WAAW,SAAU,CAAA;AAAA,EACzB,KAAQ,GAAA;AACL,IAAC,KAAa,SAAU,EAAA,CAAA;AAAA,GAC3B;AACF,CAAA;AAEa,MAAA,aAAA,GAAgB,sBAAsB,EAAS;;;;"}
1
+ {"version":3,"file":"node.mjs","sources":["../../../src/node.ts"],"sourcesContent":["import { WebSocket } from \"ws\"\nimport { getInternalWsProvider } from \"./ws-provider\"\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nexport * from \"./types\"\n\nclass WS extends WebSocket {\n close() {\n this.terminate()\n }\n}\n\nexport const getWsProvider = getInternalWsProvider(\n WS as unknown as typeof globalThis.WebSocket,\n)\n"],"names":[],"mappings":";;;;AAMA,MAAM,WAAW,SAAU,CAAA;AAAA,EACzB,KAAQ,GAAA;AACN,IAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AAAA,GACjB;AACF,CAAA;AAEO,MAAM,aAAgB,GAAA,qBAAA;AAAA,EAC3B,EAAA;AACF;;;;"}
@@ -0,0 +1,10 @@
1
+ var WsEvent = /* @__PURE__ */ ((WsEvent2) => {
2
+ WsEvent2[WsEvent2["CONNECTING"] = 0] = "CONNECTING";
3
+ WsEvent2[WsEvent2["CONNECTED"] = 1] = "CONNECTED";
4
+ WsEvent2[WsEvent2["ERROR"] = 2] = "ERROR";
5
+ WsEvent2[WsEvent2["CLOSE"] = 3] = "CLOSE";
6
+ return WsEvent2;
7
+ })(WsEvent || {});
8
+
9
+ export { WsEvent };
10
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sources":["../../../src/types.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n"],"names":["WsEvent"],"mappings":"AAEY,IAAA,OAAA,qBAAAA,QAAL,KAAA;AACL,EAAAA,QAAA,CAAA,QAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AACA,EAAAA,QAAA,CAAA,QAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AACA,EAAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AAJU,EAAAA,OAAAA,QAAAA,CAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;;;;"}
@@ -1,7 +1,8 @@
1
1
  import { getSyncProvider } from '@polkadot-api/json-rpc-provider-proxy';
2
+ import { WsEvent } from './types.mjs';
2
3
 
3
4
  const timeoutError = {
4
- type: 2 /* ERROR */,
5
+ type: WsEvent.ERROR,
5
6
  event: { type: "timeout" }
6
7
  };
7
8
  const noop = () => {
@@ -31,7 +32,7 @@ const getInternalWsProvider = (WebsocketClass) => {
31
32
  const socket = new WebsocketClass(uri, protocols);
32
33
  onStatusChanged(
33
34
  status = {
34
- type: 0 /* CONNECTING */,
35
+ type: WsEvent.CONNECTING,
35
36
  uri,
36
37
  protocols
37
38
  }
@@ -48,7 +49,7 @@ const getInternalWsProvider = (WebsocketClass) => {
48
49
  );
49
50
  onStatusChanged(
50
51
  status = {
51
- type: e ? 2 /* ERROR */ : 3 /* CLOSE */,
52
+ type: e ? WsEvent.ERROR : WsEvent.CLOSE,
52
53
  event: e
53
54
  }
54
55
  );
@@ -72,7 +73,7 @@ const getInternalWsProvider = (WebsocketClass) => {
72
73
  });
73
74
  onStatusChanged(
74
75
  status = {
75
- type: 1 /* CONNECTED */,
76
+ type: WsEvent.CONNECTED,
76
77
  uri,
77
78
  protocols
78
79
  }
@@ -91,8 +92,8 @@ const getInternalWsProvider = (WebsocketClass) => {
91
92
  );
92
93
  onHalt();
93
94
  };
94
- const onError = innerHalt(2 /* ERROR */);
95
- const onClose = innerHalt(3 /* CLOSE */);
95
+ const onError = innerHalt(WsEvent.ERROR);
96
+ const onClose = innerHalt(WsEvent.CLOSE);
96
97
  socket.addEventListener("message", _onMessage);
97
98
  socket.addEventListener("error", onError);
98
99
  socket.addEventListener("close", onClose);
@@ -114,9 +115,9 @@ const getInternalWsProvider = (WebsocketClass) => {
114
115
  });
115
116
  result.getStatus = () => status;
116
117
  result.switch = (...args2) => {
117
- if (status.type === 3 /* CLOSE */) return;
118
+ if (status.type === WsEvent.CLOSE) return;
118
119
  if (args2.length) switchTo = args2;
119
- if (status.type !== 2 /* ERROR */) disconnect(true);
120
+ if (status.type !== WsEvent.ERROR) disconnect(true);
120
121
  };
121
122
  return result;
122
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ws-provider.mjs","sources":["../../../src/ws-provider.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n"],"names":["args"],"mappings":"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"}
1
+ {"version":3,"file":"ws-provider.mjs","sources":["../../../src/ws-provider.ts"],"sourcesContent":["import { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\nimport { StatusChange, WsJsonRpcProvider, WsEvent } from \"./types\"\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\n\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n"],"names":["args"],"mappings":"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"}
@@ -30,6 +30,7 @@ type WsJsonRpcProvider = JsonRpcProvider & {
30
30
  switch: (uri?: string, protocol?: string[]) => void;
31
31
  getStatus: () => StatusChange;
32
32
  };
33
+
33
34
  interface GetWsProviderInput {
34
35
  (uri: string, protocols?: string | string[], onStatusChanged?: (status: StatusChange) => void): WsJsonRpcProvider;
35
36
  (uri: string, onStatusChanged?: (status: StatusChange) => void): WsJsonRpcProvider;
@@ -41,4 +42,4 @@ interface GetWsProviderInput {
41
42
 
42
43
  declare const getWsProvider: GetWsProviderInput;
43
44
 
44
- export { getWsProvider };
45
+ export { type StatusChange, type WsClose, type WsConnected, type WsConnecting, type WsError, WsEvent, type WsJsonRpcProvider, getWsProvider };
package/dist/node/node.js CHANGED
@@ -3,8 +3,16 @@
3
3
  var ws = require('ws');
4
4
  var jsonRpcProviderProxy = require('@polkadot-api/json-rpc-provider-proxy');
5
5
 
6
+ var WsEvent = /* @__PURE__ */ ((WsEvent2) => {
7
+ WsEvent2[WsEvent2["CONNECTING"] = 0] = "CONNECTING";
8
+ WsEvent2[WsEvent2["CONNECTED"] = 1] = "CONNECTED";
9
+ WsEvent2[WsEvent2["ERROR"] = 2] = "ERROR";
10
+ WsEvent2[WsEvent2["CLOSE"] = 3] = "CLOSE";
11
+ return WsEvent2;
12
+ })(WsEvent || {});
13
+
6
14
  const timeoutError = {
7
- type: 2 /* ERROR */,
15
+ type: WsEvent.ERROR,
8
16
  event: { type: "timeout" }
9
17
  };
10
18
  const noop = () => {
@@ -34,7 +42,7 @@ const getInternalWsProvider = (WebsocketClass) => {
34
42
  const socket = new WebsocketClass(uri, protocols);
35
43
  onStatusChanged(
36
44
  status = {
37
- type: 0 /* CONNECTING */,
45
+ type: WsEvent.CONNECTING,
38
46
  uri,
39
47
  protocols
40
48
  }
@@ -51,7 +59,7 @@ const getInternalWsProvider = (WebsocketClass) => {
51
59
  );
52
60
  onStatusChanged(
53
61
  status = {
54
- type: e ? 2 /* ERROR */ : 3 /* CLOSE */,
62
+ type: e ? WsEvent.ERROR : WsEvent.CLOSE,
55
63
  event: e
56
64
  }
57
65
  );
@@ -75,7 +83,7 @@ const getInternalWsProvider = (WebsocketClass) => {
75
83
  });
76
84
  onStatusChanged(
77
85
  status = {
78
- type: 1 /* CONNECTED */,
86
+ type: WsEvent.CONNECTED,
79
87
  uri,
80
88
  protocols
81
89
  }
@@ -94,8 +102,8 @@ const getInternalWsProvider = (WebsocketClass) => {
94
102
  );
95
103
  onHalt();
96
104
  };
97
- const onError = innerHalt(2 /* ERROR */);
98
- const onClose = innerHalt(3 /* CLOSE */);
105
+ const onError = innerHalt(WsEvent.ERROR);
106
+ const onClose = innerHalt(WsEvent.CLOSE);
99
107
  socket.addEventListener("message", _onMessage);
100
108
  socket.addEventListener("error", onError);
101
109
  socket.addEventListener("close", onClose);
@@ -117,9 +125,9 @@ const getInternalWsProvider = (WebsocketClass) => {
117
125
  });
118
126
  result.getStatus = () => status;
119
127
  result.switch = (...args2) => {
120
- if (status.type === 3 /* CLOSE */) return;
128
+ if (status.type === WsEvent.CLOSE) return;
121
129
  if (args2.length) switchTo = args2;
122
- if (status.type !== 2 /* ERROR */) disconnect(true);
130
+ if (status.type !== WsEvent.ERROR) disconnect(true);
123
131
  };
124
132
  return result;
125
133
  };
@@ -130,7 +138,10 @@ class WS extends ws.WebSocket {
130
138
  this.terminate();
131
139
  }
132
140
  }
133
- const getWsProvider = getInternalWsProvider(WS);
141
+ const getWsProvider = getInternalWsProvider(
142
+ WS
143
+ );
134
144
 
145
+ exports.WsEvent = WsEvent;
135
146
  exports.getWsProvider = getWsProvider;
136
147
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sources":["../../src/ws-provider.ts","../../src/node.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n","// @ts-ignore\nimport { WebSocket } from \"ws\"\nimport { getInternalWsProvider } from \"./ws-provider\"\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nclass WS extends WebSocket {\n close() {\n ;(this as any).terminate()\n }\n}\n\nexport const getWsProvider = getInternalWsProvider(WS as any)\n"],"names":["getSyncProvider","args","WebSocket"],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sources":["../../src/types.ts","../../src/ws-provider.ts","../../src/node.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n","import { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\nimport { StatusChange, WsJsonRpcProvider, WsEvent } from \"./types\"\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\n\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n","import { WebSocket } from \"ws\"\nimport { getInternalWsProvider } from \"./ws-provider\"\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nexport * from \"./types\"\n\nclass WS extends WebSocket {\n close() {\n this.terminate()\n }\n}\n\nexport const getWsProvider = getInternalWsProvider(\n WS as unknown as typeof globalThis.WebSocket,\n)\n"],"names":["WsEvent","getSyncProvider","args","WebSocket"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ var WsEvent = /* @__PURE__ */ ((WsEvent2) => {
2
+ WsEvent2[WsEvent2["CONNECTING"] = 0] = "CONNECTING";
3
+ WsEvent2[WsEvent2["CONNECTED"] = 1] = "CONNECTED";
4
+ WsEvent2[WsEvent2["ERROR"] = 2] = "ERROR";
5
+ WsEvent2[WsEvent2["CLOSE"] = 3] = "CLOSE";
6
+ return WsEvent2;
7
+ })(WsEvent || {});
8
+
9
+ export { WsEvent };
10
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sources":["../../../src/types.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n"],"names":["WsEvent"],"mappings":"AAEY,IAAA,OAAA,qBAAAA,QAAL,KAAA;AACL,EAAAA,QAAA,CAAA,QAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AACA,EAAAA,QAAA,CAAA,QAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AACA,EAAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AAJU,EAAAA,OAAAA,QAAAA,CAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;;;;"}
@@ -1,4 +1,5 @@
1
1
  import { getInternalWsProvider } from './ws-provider.mjs';
2
+ export { WsEvent } from './types.mjs';
2
3
 
3
4
  const getWsProvider = getInternalWsProvider(WebSocket);
4
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"web.mjs","sources":["../../../src/web.ts"],"sourcesContent":["import { getInternalWsProvider } from \"./ws-provider\"\n\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nexport const getWsProvider = getInternalWsProvider(WebSocket)\n"],"names":[],"mappings":";;AAGa,MAAA,aAAA,GAAgB,sBAAsB,SAAS;;;;"}
1
+ {"version":3,"file":"web.mjs","sources":["../../../src/web.ts"],"sourcesContent":["import { getInternalWsProvider } from \"./ws-provider\"\n\nexport * from \"./types\"\n\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nexport const getWsProvider = getInternalWsProvider(WebSocket)\n"],"names":[],"mappings":";;;AAKa,MAAA,aAAA,GAAgB,sBAAsB,SAAS;;;;"}
@@ -1,7 +1,8 @@
1
1
  import { getSyncProvider } from '@polkadot-api/json-rpc-provider-proxy';
2
+ import { WsEvent } from './types.mjs';
2
3
 
3
4
  const timeoutError = {
4
- type: 2 /* ERROR */,
5
+ type: WsEvent.ERROR,
5
6
  event: { type: "timeout" }
6
7
  };
7
8
  const noop = () => {
@@ -31,7 +32,7 @@ const getInternalWsProvider = (WebsocketClass) => {
31
32
  const socket = new WebsocketClass(uri, protocols);
32
33
  onStatusChanged(
33
34
  status = {
34
- type: 0 /* CONNECTING */,
35
+ type: WsEvent.CONNECTING,
35
36
  uri,
36
37
  protocols
37
38
  }
@@ -48,7 +49,7 @@ const getInternalWsProvider = (WebsocketClass) => {
48
49
  );
49
50
  onStatusChanged(
50
51
  status = {
51
- type: e ? 2 /* ERROR */ : 3 /* CLOSE */,
52
+ type: e ? WsEvent.ERROR : WsEvent.CLOSE,
52
53
  event: e
53
54
  }
54
55
  );
@@ -72,7 +73,7 @@ const getInternalWsProvider = (WebsocketClass) => {
72
73
  });
73
74
  onStatusChanged(
74
75
  status = {
75
- type: 1 /* CONNECTED */,
76
+ type: WsEvent.CONNECTED,
76
77
  uri,
77
78
  protocols
78
79
  }
@@ -91,8 +92,8 @@ const getInternalWsProvider = (WebsocketClass) => {
91
92
  );
92
93
  onHalt();
93
94
  };
94
- const onError = innerHalt(2 /* ERROR */);
95
- const onClose = innerHalt(3 /* CLOSE */);
95
+ const onError = innerHalt(WsEvent.ERROR);
96
+ const onClose = innerHalt(WsEvent.CLOSE);
96
97
  socket.addEventListener("message", _onMessage);
97
98
  socket.addEventListener("error", onError);
98
99
  socket.addEventListener("close", onClose);
@@ -114,9 +115,9 @@ const getInternalWsProvider = (WebsocketClass) => {
114
115
  });
115
116
  result.getStatus = () => status;
116
117
  result.switch = (...args2) => {
117
- if (status.type === 3 /* CLOSE */) return;
118
+ if (status.type === WsEvent.CLOSE) return;
118
119
  if (args2.length) switchTo = args2;
119
- if (status.type !== 2 /* ERROR */) disconnect(true);
120
+ if (status.type !== WsEvent.ERROR) disconnect(true);
120
121
  };
121
122
  return result;
122
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ws-provider.mjs","sources":["../../../src/ws-provider.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n"],"names":["args"],"mappings":"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"}
1
+ {"version":3,"file":"ws-provider.mjs","sources":["../../../src/ws-provider.ts"],"sourcesContent":["import { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\nimport { StatusChange, WsJsonRpcProvider, WsEvent } from \"./types\"\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\n\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n"],"names":["args"],"mappings":"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"}
package/dist/web/web.d.ts CHANGED
@@ -30,6 +30,7 @@ type WsJsonRpcProvider = JsonRpcProvider & {
30
30
  switch: (uri?: string, protocol?: string[]) => void;
31
31
  getStatus: () => StatusChange;
32
32
  };
33
+
33
34
  interface GetWsProviderInput {
34
35
  (uri: string, protocols?: string | string[], onStatusChanged?: (status: StatusChange) => void): WsJsonRpcProvider;
35
36
  (uri: string, onStatusChanged?: (status: StatusChange) => void): WsJsonRpcProvider;
@@ -41,4 +42,4 @@ interface GetWsProviderInput {
41
42
 
42
43
  declare const getWsProvider: GetWsProviderInput;
43
44
 
44
- export { getWsProvider };
45
+ export { type StatusChange, type WsClose, type WsConnected, type WsConnecting, type WsError, WsEvent, type WsJsonRpcProvider, getWsProvider };
package/dist/web/web.js CHANGED
@@ -2,8 +2,16 @@
2
2
 
3
3
  var jsonRpcProviderProxy = require('@polkadot-api/json-rpc-provider-proxy');
4
4
 
5
+ var WsEvent = /* @__PURE__ */ ((WsEvent2) => {
6
+ WsEvent2[WsEvent2["CONNECTING"] = 0] = "CONNECTING";
7
+ WsEvent2[WsEvent2["CONNECTED"] = 1] = "CONNECTED";
8
+ WsEvent2[WsEvent2["ERROR"] = 2] = "ERROR";
9
+ WsEvent2[WsEvent2["CLOSE"] = 3] = "CLOSE";
10
+ return WsEvent2;
11
+ })(WsEvent || {});
12
+
5
13
  const timeoutError = {
6
- type: 2 /* ERROR */,
14
+ type: WsEvent.ERROR,
7
15
  event: { type: "timeout" }
8
16
  };
9
17
  const noop = () => {
@@ -33,7 +41,7 @@ const getInternalWsProvider = (WebsocketClass) => {
33
41
  const socket = new WebsocketClass(uri, protocols);
34
42
  onStatusChanged(
35
43
  status = {
36
- type: 0 /* CONNECTING */,
44
+ type: WsEvent.CONNECTING,
37
45
  uri,
38
46
  protocols
39
47
  }
@@ -50,7 +58,7 @@ const getInternalWsProvider = (WebsocketClass) => {
50
58
  );
51
59
  onStatusChanged(
52
60
  status = {
53
- type: e ? 2 /* ERROR */ : 3 /* CLOSE */,
61
+ type: e ? WsEvent.ERROR : WsEvent.CLOSE,
54
62
  event: e
55
63
  }
56
64
  );
@@ -74,7 +82,7 @@ const getInternalWsProvider = (WebsocketClass) => {
74
82
  });
75
83
  onStatusChanged(
76
84
  status = {
77
- type: 1 /* CONNECTED */,
85
+ type: WsEvent.CONNECTED,
78
86
  uri,
79
87
  protocols
80
88
  }
@@ -93,8 +101,8 @@ const getInternalWsProvider = (WebsocketClass) => {
93
101
  );
94
102
  onHalt();
95
103
  };
96
- const onError = innerHalt(2 /* ERROR */);
97
- const onClose = innerHalt(3 /* CLOSE */);
104
+ const onError = innerHalt(WsEvent.ERROR);
105
+ const onClose = innerHalt(WsEvent.CLOSE);
98
106
  socket.addEventListener("message", _onMessage);
99
107
  socket.addEventListener("error", onError);
100
108
  socket.addEventListener("close", onClose);
@@ -116,9 +124,9 @@ const getInternalWsProvider = (WebsocketClass) => {
116
124
  });
117
125
  result.getStatus = () => status;
118
126
  result.switch = (...args2) => {
119
- if (status.type === 3 /* CLOSE */) return;
127
+ if (status.type === WsEvent.CLOSE) return;
120
128
  if (args2.length) switchTo = args2;
121
- if (status.type !== 2 /* ERROR */) disconnect(true);
129
+ if (status.type !== WsEvent.ERROR) disconnect(true);
122
130
  };
123
131
  return result;
124
132
  };
@@ -126,5 +134,6 @@ const getInternalWsProvider = (WebsocketClass) => {
126
134
 
127
135
  const getWsProvider = getInternalWsProvider(WebSocket);
128
136
 
137
+ exports.WsEvent = WsEvent;
129
138
  exports.getWsProvider = getWsProvider;
130
139
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sources":["../../src/ws-provider.ts","../../src/web.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n","import { getInternalWsProvider } from \"./ws-provider\"\n\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nexport const getWsProvider = getInternalWsProvider(WebSocket)\n"],"names":["getSyncProvider","args"],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sources":["../../src/types.ts","../../src/ws-provider.ts","../../src/web.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\n\nexport enum WsEvent {\n CONNECTING,\n CONNECTED,\n ERROR,\n CLOSE,\n}\nexport type WsConnecting = {\n type: WsEvent.CONNECTING\n uri: string\n protocols?: string | string[]\n}\nexport type WsConnected = {\n type: WsEvent.CONNECTED\n uri: string\n protocols?: string | string[]\n}\nexport type WsError = {\n type: WsEvent.ERROR\n event: any\n}\nexport type WsClose = {\n type: WsEvent.CLOSE\n event: any\n}\nexport type StatusChange = WsConnecting | WsConnected | WsError | WsClose\nexport type WsJsonRpcProvider = JsonRpcProvider & {\n switch: (uri?: string, protocol?: string[]) => void\n getStatus: () => StatusChange\n}\n","import { getSyncProvider } from \"@polkadot-api/json-rpc-provider-proxy\"\nimport { StatusChange, WsJsonRpcProvider, WsEvent } from \"./types\"\n\nexport interface GetWsProviderInput {\n (\n uri: string,\n protocols?: string | string[],\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n uri: string,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n (\n endpoints: Array<string | { uri: string; protocol: string[] }>,\n onStatusChanged?: (status: StatusChange) => void,\n ): WsJsonRpcProvider\n}\n\nconst timeoutError: StatusChange = {\n type: WsEvent.ERROR,\n event: { type: \"timeout\" },\n}\n\nconst noop = () => {}\n\nexport const getInternalWsProvider = (\n WebsocketClass: typeof WebSocket,\n): GetWsProviderInput => {\n return (...args): WsJsonRpcProvider => {\n let endpoints: Array<[string, string | string[]] | [string]> = []\n let onStatusChanged: (status: StatusChange) => void = noop\n\n if (typeof args[1] === \"function\") onStatusChanged = args[1]\n if (Array.isArray(args[0]))\n endpoints = args[0].map((x) =>\n typeof x === \"string\" ? [x] : [x.uri, x.protocol],\n )\n else {\n endpoints = [[args[0]]]\n if (args[1] && args[1] !== onStatusChanged)\n endpoints[0][1] = args[1] as any\n if (args[2]) onStatusChanged = args[2] as any\n }\n let idx = 0\n let status: StatusChange\n let switchTo: [string] | [string, string | string[]] | null = null\n let disconnect: (withHalt?: boolean) => void = noop\n\n const result = getSyncProvider(async () => {\n const [uri, protocols] = switchTo || endpoints[idx++ % endpoints.length]\n switchTo = null\n const socket = new WebsocketClass(uri, protocols)\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTING,\n uri,\n protocols,\n }),\n )\n\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n cleanup()\n resolve()\n }\n\n const onError = (e: Event | null) => {\n cleanup()\n console.error(\n `Unable to connect to ${uri}${\n protocols ? \", protocols: \" + protocols : \"\"\n }`,\n )\n onStatusChanged(\n (status = {\n type: e ? WsEvent.ERROR : WsEvent.CLOSE,\n event: e,\n }),\n )\n setTimeout(reject, e ? 300 : 0, e)\n }\n\n const timeoutToken = setTimeout(() => {\n cleanup()\n onStatusChanged((status = timeoutError))\n reject(timeoutError.event)\n }, 3_500)\n const cleanup = () => {\n clearTimeout(timeoutToken)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"open\", onOpen)\n }\n socket.addEventListener(\"open\", onOpen)\n socket.addEventListener(\"error\", onError)\n disconnect = () => {\n onError(null)\n }\n })\n\n onStatusChanged(\n (status = {\n type: WsEvent.CONNECTED,\n uri,\n protocols,\n }),\n )\n\n return (onMessage, onHalt) => {\n const _onMessage = (e: MessageEvent) => {\n if (typeof e.data === \"string\") onMessage(e.data)\n }\n const innerHalt =\n (reason: WsEvent.CLOSE | WsEvent.ERROR) => (e: any) => {\n console.warn(`WS halt (${reason})`)\n onStatusChanged(\n (status = {\n type: reason,\n event: e,\n }),\n )\n onHalt()\n }\n const onError = innerHalt(WsEvent.ERROR)\n const onClose = innerHalt(WsEvent.CLOSE)\n\n socket.addEventListener(\"message\", _onMessage)\n socket.addEventListener(\"error\", onError)\n socket.addEventListener(\"close\", onClose)\n disconnect = (withHalt) => {\n disconnect = noop\n socket.removeEventListener(\"message\", _onMessage)\n socket.removeEventListener(\"error\", onError)\n socket.removeEventListener(\"close\", onClose)\n socket.close()\n if (withHalt) onClose({})\n }\n\n return {\n send: (msg) => {\n socket.send(msg)\n },\n disconnect,\n }\n }\n }) as WsJsonRpcProvider\n\n result.getStatus = () => status\n result.switch = (...args) => {\n if (status.type === WsEvent.CLOSE) return\n if (args.length) switchTo = args as any\n if (status.type !== WsEvent.ERROR) disconnect(true)\n }\n return result\n }\n}\n","import { getInternalWsProvider } from \"./ws-provider\"\n\nexport * from \"./types\"\n\nexport type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nexport const getWsProvider = getInternalWsProvider(WebSocket)\n"],"names":["WsEvent","getSyncProvider","args"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkadot-api/ws-provider",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "author": "Josep M Sobrepere (https://github.com/josepot)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,8 +32,11 @@
32
32
  ],
33
33
  "dependencies": {
34
34
  "ws": "^8.18.0",
35
- "@polkadot-api/json-rpc-provider": "0.0.4",
36
- "@polkadot-api/json-rpc-provider-proxy": "0.2.3"
35
+ "@polkadot-api/json-rpc-provider-proxy": "0.2.3",
36
+ "@polkadot-api/json-rpc-provider": "0.0.4"
37
+ },
38
+ "devDependencies": {
39
+ "@types/ws": "^8.5.12"
37
40
  },
38
41
  "scripts": {
39
42
  "build-core": "tsc --noEmit && rollup -c",