@tdengine/websocket 3.2.3 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/lib/package.json +1 -1
  2. package/lib/src/client/wsClient.d.ts +23 -7
  3. package/lib/src/client/wsClient.d.ts.map +1 -1
  4. package/lib/src/client/wsClient.js +154 -139
  5. package/lib/src/client/wsConnector.d.ts +55 -9
  6. package/lib/src/client/wsConnector.d.ts.map +1 -1
  7. package/lib/src/client/wsConnector.js +519 -100
  8. package/lib/src/client/wsConnectorPool.d.ts +5 -1
  9. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  10. package/lib/src/client/wsConnectorPool.js +61 -43
  11. package/lib/src/client/wsEventCallback.d.ts +3 -0
  12. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  13. package/lib/src/client/wsEventCallback.js +67 -8
  14. package/lib/src/common/addressConnectionTracker.d.ts +11 -0
  15. package/lib/src/common/addressConnectionTracker.d.ts.map +1 -0
  16. package/lib/src/common/addressConnectionTracker.js +53 -0
  17. package/lib/src/common/dsn.d.ts +14 -2
  18. package/lib/src/common/dsn.d.ts.map +1 -1
  19. package/lib/src/common/dsn.js +91 -22
  20. package/lib/src/common/taosResult.d.ts.map +1 -1
  21. package/lib/src/common/taosResult.js +0 -5
  22. package/lib/src/common/urlParser.d.ts +32 -0
  23. package/lib/src/common/urlParser.d.ts.map +1 -0
  24. package/lib/src/common/urlParser.js +201 -0
  25. package/lib/src/common/utils.d.ts +2 -1
  26. package/lib/src/common/utils.d.ts.map +1 -1
  27. package/lib/src/common/utils.js +35 -34
  28. package/lib/src/sql/wsSql.js +2 -2
  29. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -1
  30. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -1
  31. package/lib/src/stmt/wsParams1.d.ts.map +1 -1
  32. package/lib/src/stmt/wsParams1.js +26 -26
  33. package/lib/src/stmt/wsParams2.d.ts.map +1 -1
  34. package/lib/src/stmt/wsParams2.js +0 -3
  35. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -1
  36. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  37. package/lib/src/stmt/wsProto.js +16 -16
  38. package/lib/src/stmt/wsStmt1.d.ts.map +1 -1
  39. package/lib/src/stmt/wsStmt2.d.ts +12 -4
  40. package/lib/src/stmt/wsStmt2.d.ts.map +1 -1
  41. package/lib/src/stmt/wsStmt2.js +182 -64
  42. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -1
  43. package/lib/src/tmq/config.d.ts +3 -2
  44. package/lib/src/tmq/config.d.ts.map +1 -1
  45. package/lib/src/tmq/config.js +15 -15
  46. package/lib/src/tmq/wsTmq.d.ts +4 -1
  47. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  48. package/lib/src/tmq/wsTmq.js +50 -27
  49. package/lib/test/bulkPulling/a.test.d.ts +2 -0
  50. package/lib/test/bulkPulling/a.test.d.ts.map +1 -0
  51. package/lib/test/bulkPulling/a.test.js +166 -0
  52. package/lib/test/bulkPulling/dsn.test.js +19 -0
  53. package/lib/test/bulkPulling/retryConfig.test.js +11 -11
  54. package/lib/test/bulkPulling/sql.failover.test.d.ts +2 -0
  55. package/lib/test/bulkPulling/sql.failover.test.d.ts.map +1 -0
  56. package/lib/test/bulkPulling/sql.failover.test.js +338 -0
  57. package/lib/test/bulkPulling/stmt2.failover.test.d.ts +2 -0
  58. package/lib/test/bulkPulling/stmt2.failover.test.d.ts.map +1 -0
  59. package/lib/test/bulkPulling/stmt2.failover.test.js +313 -0
  60. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts +2 -0
  61. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts.map +1 -0
  62. package/lib/test/bulkPulling/stmt2.init.failover.test.js +50 -0
  63. package/lib/test/bulkPulling/tmq.failover.test.d.ts +2 -0
  64. package/lib/test/bulkPulling/tmq.failover.test.d.ts.map +1 -0
  65. package/lib/test/bulkPulling/tmq.failover.test.js +404 -0
  66. package/lib/test/bulkPulling/urlParser.test.d.ts +2 -0
  67. package/lib/test/bulkPulling/urlParser.test.d.ts.map +1 -0
  68. package/lib/test/bulkPulling/urlParser.test.js +452 -0
  69. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +2 -2
  70. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts +2 -0
  71. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts.map +1 -0
  72. package/lib/test/bulkPulling/wsClient.recovery.test.js +104 -0
  73. package/lib/test/bulkPulling/wsConfig.dsn.test.js +2 -0
  74. package/lib/test/bulkPulling/wsConnector.failover.test.js +396 -27
  75. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +12 -10
  76. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts +2 -0
  77. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts.map +1 -0
  78. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.js +28 -0
  79. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts +2 -0
  80. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts.map +1 -0
  81. package/lib/test/bulkPulling/wsProxy.failover.integration.test.js +120 -0
  82. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts +2 -0
  83. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts.map +1 -0
  84. package/lib/test/bulkPulling/wsProxy.failover.test.js +465 -0
  85. package/lib/test/client/wsClient.recovery.test.d.ts +2 -0
  86. package/lib/test/client/wsClient.recovery.test.d.ts.map +1 -0
  87. package/lib/test/client/wsClient.recovery.test.js +122 -0
  88. package/lib/test/client/wsConnectPool.test.d.ts +2 -0
  89. package/lib/test/client/wsConnectPool.test.d.ts.map +1 -0
  90. package/lib/test/client/wsConnectPool.test.js +147 -0
  91. package/lib/test/client/wsConnector.failover.test.d.ts +2 -0
  92. package/lib/test/client/wsConnector.failover.test.d.ts.map +1 -0
  93. package/lib/test/client/wsConnector.failover.test.js +681 -0
  94. package/lib/test/client/wsConnector.leastConnections.test.d.ts +2 -0
  95. package/lib/test/client/wsConnector.leastConnections.test.d.ts.map +1 -0
  96. package/lib/test/client/wsConnector.leastConnections.test.js +71 -0
  97. package/lib/test/client/wsConnectorPool.key.test.d.ts +2 -0
  98. package/lib/test/client/wsConnectorPool.key.test.d.ts.map +1 -0
  99. package/lib/test/client/wsConnectorPool.key.test.js +127 -0
  100. package/lib/test/client/wsEventCallback.test.d.ts +2 -0
  101. package/lib/test/client/wsEventCallback.test.d.ts.map +1 -0
  102. package/lib/test/client/wsEventCallback.test.js +98 -0
  103. package/lib/test/common/addressConnectionTracker.test.d.ts +2 -0
  104. package/lib/test/common/addressConnectionTracker.test.d.ts.map +1 -0
  105. package/lib/test/common/addressConnectionTracker.test.js +74 -0
  106. package/lib/test/common/dsn.test.d.ts +2 -0
  107. package/lib/test/common/dsn.test.d.ts.map +1 -0
  108. package/lib/test/common/dsn.test.js +406 -0
  109. package/lib/test/common/log.test.d.ts +2 -0
  110. package/lib/test/common/log.test.d.ts.map +1 -0
  111. package/lib/test/common/log.test.js +54 -0
  112. package/lib/test/common/utils.test.d.ts +2 -0
  113. package/lib/test/common/utils.test.d.ts.map +1 -0
  114. package/lib/test/common/utils.test.js +13 -0
  115. package/lib/test/common/wsConfig.dsn.test.d.ts +2 -0
  116. package/lib/test/common/wsConfig.dsn.test.d.ts.map +1 -0
  117. package/lib/test/common/wsConfig.dsn.test.js +39 -0
  118. package/lib/test/helpers/utils.d.ts +27 -0
  119. package/lib/test/helpers/utils.d.ts.map +1 -0
  120. package/lib/test/helpers/utils.js +341 -0
  121. package/lib/test/helpers/wsFailoverProxy.d.ts +109 -0
  122. package/lib/test/helpers/wsFailoverProxy.d.ts.map +1 -0
  123. package/lib/test/helpers/wsFailoverProxy.js +420 -0
  124. package/lib/test/helpers/wsProxy.d.ts +110 -0
  125. package/lib/test/helpers/wsProxy.d.ts.map +1 -0
  126. package/lib/test/helpers/wsProxy.js +429 -0
  127. package/lib/test/sql/core/decimal.test.d.ts +2 -0
  128. package/lib/test/sql/core/decimal.test.d.ts.map +1 -0
  129. package/lib/test/sql/core/decimal.test.js +153 -0
  130. package/lib/test/sql/core/queryTables.test.d.ts +2 -0
  131. package/lib/test/sql/core/queryTables.test.d.ts.map +1 -0
  132. package/lib/test/sql/core/queryTables.test.js +506 -0
  133. package/lib/test/sql/core/schemaless.test.d.ts +2 -0
  134. package/lib/test/sql/core/schemaless.test.d.ts.map +1 -0
  135. package/lib/test/sql/core/schemaless.test.js +102 -0
  136. package/lib/test/sql/core/sql.test.d.ts +2 -0
  137. package/lib/test/sql/core/sql.test.d.ts.map +1 -0
  138. package/lib/test/sql/core/sql.test.js +324 -0
  139. package/lib/test/sql/decimal.test.d.ts +2 -0
  140. package/lib/test/sql/decimal.test.d.ts.map +1 -0
  141. package/lib/test/sql/decimal.test.js +153 -0
  142. package/lib/test/sql/failover/sql.failover.test.d.ts +2 -0
  143. package/lib/test/sql/failover/sql.failover.test.d.ts.map +1 -0
  144. package/lib/test/sql/failover/sql.failover.test.js +341 -0
  145. package/lib/test/sql/queryTables.test.d.ts +2 -0
  146. package/lib/test/sql/queryTables.test.d.ts.map +1 -0
  147. package/lib/test/sql/queryTables.test.js +506 -0
  148. package/lib/test/sql/schemaless.test.d.ts +2 -0
  149. package/lib/test/sql/schemaless.test.d.ts.map +1 -0
  150. package/lib/test/sql/schemaless.test.js +102 -0
  151. package/lib/test/sql/sql.failover.test.d.ts +2 -0
  152. package/lib/test/sql/sql.failover.test.d.ts.map +1 -0
  153. package/lib/test/sql/sql.failover.test.js +341 -0
  154. package/lib/test/sql/sql.test.d.ts +2 -0
  155. package/lib/test/sql/sql.test.d.ts.map +1 -0
  156. package/lib/test/sql/sql.test.js +324 -0
  157. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts +2 -0
  158. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts.map +1 -0
  159. package/lib/test/stmt/failover/stmt2.failover.mock.test.js +341 -0
  160. package/lib/test/stmt/failover/stmt2.failover.test.d.ts +2 -0
  161. package/lib/test/stmt/failover/stmt2.failover.test.d.ts.map +1 -0
  162. package/lib/test/stmt/failover/stmt2.failover.test.js +384 -0
  163. package/lib/test/stmt/stmt1.func.test.d.ts +2 -0
  164. package/lib/test/stmt/stmt1.func.test.d.ts.map +1 -0
  165. package/lib/test/stmt/stmt1.func.test.js +418 -0
  166. package/lib/test/stmt/stmt1.type.test.d.ts +2 -0
  167. package/lib/test/stmt/stmt1.type.test.d.ts.map +1 -0
  168. package/lib/test/stmt/stmt1.type.test.js +399 -0
  169. package/lib/test/stmt/stmt2.failover.mock.test.d.ts +2 -0
  170. package/lib/test/stmt/stmt2.failover.mock.test.d.ts.map +1 -0
  171. package/lib/test/stmt/stmt2.failover.mock.test.js +341 -0
  172. package/lib/test/stmt/stmt2.failover.test.d.ts +2 -0
  173. package/lib/test/stmt/stmt2.failover.test.d.ts.map +1 -0
  174. package/lib/test/stmt/stmt2.failover.test.js +384 -0
  175. package/lib/test/stmt/stmt2.func.test.d.ts +2 -0
  176. package/lib/test/stmt/stmt2.func.test.d.ts.map +1 -0
  177. package/lib/test/stmt/stmt2.func.test.js +537 -0
  178. package/lib/test/stmt/stmt2.type.test.d.ts +2 -0
  179. package/lib/test/stmt/stmt2.type.test.d.ts.map +1 -0
  180. package/lib/test/stmt/stmt2.type.test.js +401 -0
  181. package/lib/test/stmt/v1/stmt1.func.test.d.ts +2 -0
  182. package/lib/test/stmt/v1/stmt1.func.test.d.ts.map +1 -0
  183. package/lib/test/stmt/v1/stmt1.func.test.js +418 -0
  184. package/lib/test/stmt/v1/stmt1.type.test.d.ts +2 -0
  185. package/lib/test/stmt/v1/stmt1.type.test.d.ts.map +1 -0
  186. package/lib/test/stmt/v1/stmt1.type.test.js +399 -0
  187. package/lib/test/stmt/v2/stmt2.func.test.d.ts +2 -0
  188. package/lib/test/stmt/v2/stmt2.func.test.d.ts.map +1 -0
  189. package/lib/test/stmt/v2/stmt2.func.test.js +537 -0
  190. package/lib/test/stmt/v2/stmt2.type.test.d.ts +2 -0
  191. package/lib/test/stmt/v2/stmt2.type.test.d.ts.map +1 -0
  192. package/lib/test/stmt/v2/stmt2.type.test.js +401 -0
  193. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts +2 -0
  194. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts.map +1 -0
  195. package/lib/test/tmq/cloud/cloud.tmq.test.js +84 -0
  196. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts +2 -0
  197. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts.map +1 -0
  198. package/lib/test/tmq/cloud/tmq.cloud.test.js +82 -0
  199. package/lib/test/tmq/core/tmq.config.test.d.ts +2 -0
  200. package/lib/test/tmq/core/tmq.config.test.d.ts.map +1 -0
  201. package/lib/test/tmq/core/tmq.config.test.js +83 -0
  202. package/lib/test/tmq/core/tmq.test.d.ts +2 -0
  203. package/lib/test/tmq/core/tmq.test.d.ts.map +1 -0
  204. package/lib/test/tmq/core/tmq.test.js +513 -0
  205. package/lib/test/tmq/failover/tmq.failover.test.d.ts +2 -0
  206. package/lib/test/tmq/failover/tmq.failover.test.d.ts.map +1 -0
  207. package/lib/test/tmq/failover/tmq.failover.test.js +404 -0
  208. package/lib/test/tmq/tmq.cloud.test.d.ts +2 -0
  209. package/lib/test/tmq/tmq.cloud.test.d.ts.map +1 -0
  210. package/lib/test/tmq/tmq.cloud.test.js +82 -0
  211. package/lib/test/tmq/tmq.config.test.d.ts +2 -0
  212. package/lib/test/tmq/tmq.config.test.d.ts.map +1 -0
  213. package/lib/test/tmq/tmq.config.test.js +94 -0
  214. package/lib/test/tmq/tmq.failover.test.d.ts +2 -0
  215. package/lib/test/tmq/tmq.failover.test.d.ts.map +1 -0
  216. package/lib/test/tmq/tmq.failover.test.js +404 -0
  217. package/lib/test/tmq/tmq.test.d.ts +2 -0
  218. package/lib/test/tmq/tmq.test.d.ts.map +1 -0
  219. package/lib/test/tmq/tmq.test.js +513 -0
  220. package/lib/test/unit/connectionManager.test.d.ts +2 -0
  221. package/lib/test/unit/connectionManager.test.d.ts.map +1 -0
  222. package/lib/test/unit/connectionManager.test.js +91 -0
  223. package/package.json +1 -1
  224. package/readme.md +2 -2
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdengine/websocket",
3
- "version": "3.2.3",
3
+ "version": "3.3.0",
4
4
  "description": "The websocket Node.js connector for TDengine. TDengine versions 3.3.2.0 and above are recommended to use this connector.",
5
5
  "source": "index.ts",
6
6
  "main": "lib/index.js",
@@ -1,26 +1,42 @@
1
+ import type { SessionRecoveryHook } from "./wsConnector";
2
+ import { Dsn } from "../common/dsn";
1
3
  import { WSQueryResponse } from "./wsResponse";
2
4
  import { TSDB_OPTION_CONNECTION } from "../common/constant";
3
5
  export declare class WsClient {
4
6
  private _wsConnector?;
5
7
  private _timeout?;
6
8
  private _timezone?;
7
- private readonly _url;
9
+ private readonly _dsn;
8
10
  private static readonly _minVersion;
9
11
  private _version?;
10
12
  private _bearerToken?;
11
- constructor(url: URL, timeout?: number | undefined | null);
13
+ private _connectedDatabase;
14
+ private _connectionOptions;
15
+ private _customRecoveryHook;
16
+ constructor(dsn: Dsn, timeout?: number | undefined | null);
17
+ private buildConnMessage;
18
+ private getWsConnector;
19
+ private bindReconnectRecoveryHook;
20
+ private isSqlPath;
21
+ private normalizeConnectedDatabase;
22
+ private recoverSqlSessionContext;
23
+ setSessionRecoveryHook(hook: SessionRecoveryHook | null | undefined): void;
12
24
  connect(database?: string | undefined | null): Promise<void>;
13
25
  setOptionConnection(option: TSDB_OPTION_CONNECTION, value: string | null): Promise<void>;
14
- execNoResp(queryMsg: string): Promise<void>;
15
- exec(queryMsg: string, bSqlQuery?: boolean): Promise<any>;
26
+ execNoResp(message: string): Promise<void>;
27
+ exec(message: string, bSqlQuery?: boolean): Promise<any>;
28
+ sendMsgDirect(message: string, bSqlQuery?: boolean): Promise<any>;
16
29
  sendBinaryMsg(reqId: bigint, action: string, message: ArrayBuffer, bSqlQuery?: boolean, bResultBinary?: boolean): Promise<any>;
17
30
  getState(): number;
18
31
  ready(): Promise<void>;
19
- sendMsg(msg: string): Promise<any>;
20
- freeResult(res: WSQueryResponse): Promise<unknown>;
32
+ waitForReady(): Promise<void>;
33
+ isNetworkError(err: unknown): boolean;
34
+ getReconnectRetries(): number;
35
+ sendMsg(message: string): Promise<any>;
36
+ freeResult(res: WSQueryResponse): Promise<void>;
21
37
  version(): Promise<string>;
22
38
  close(): Promise<void>;
23
- checkURL(url: URL): void;
39
+ private checkAuth;
24
40
  checkVersion(): Promise<void>;
25
41
  }
26
42
  //# sourceMappingURL=wsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wsClient.d.ts","sourceRoot":"","sources":["../../../src/client/wsClient.ts"],"names":[],"mappings":"AASA,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AAKlE,OAAO,EAAiB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,qBAAa,QAAQ;IACjB,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAAC,CAA4B;gBAErC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAanD,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C5D,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IA0C/D,aAAa,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,SAAS,GAAE,OAAc,EACzB,aAAa,GAAE,OAAe,GAC/B,OAAO,CAAC,GAAG,CAAC;IA0Cf,QAAQ;IAOF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBlC,UAAU,CAAC,GAAG,EAAE,eAAe;IAkC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAoC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,QAAQ,CAAC,GAAG,EAAE,GAAG;IAYX,YAAY;CAarB"}
1
+ {"version":3,"file":"wsClient.d.ts","sourceRoot":"","sources":["../../../src/client/wsClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,GAAG,EAAmB,MAAM,eAAe,CAAC;AAOrD,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AASlE,OAAO,EAEH,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,QAAQ;IACjB,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAAC,CAA4B;IACjD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,kBAAkB,CAAyD;IACnF,OAAO,CAAC,mBAAmB,CAAoC;gBAEnD,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAYzD,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,0BAA0B;YAOpB,wBAAwB;IA6B/B,sBAAsB,CACzB,IAAI,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAC7C,IAAI;IAKD,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC5D,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAmB9D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAmBvE,aAAa,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,SAAS,GAAE,OAAc,EACzB,aAAa,GAAE,OAAe,GAC/B,OAAO,CAAC,GAAG,CAAC;IAmBf,QAAQ;IAOF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BtB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIrC,mBAAmB,IAAI,MAAM;IAIvB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAKtC,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAiC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,OAAO,CAAC,SAAS;IAYX,YAAY;CAarB"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WsClient = void 0;
7
7
  const json_bigint_1 = __importDefault(require("json-bigint"));
8
8
  const wsConnectorPool_1 = require("./wsConnectorPool");
9
+ const dsn_1 = require("../common/dsn");
9
10
  const wsError_1 = require("../common/wsError");
10
11
  const wsResponse_1 = require("./wsResponse");
11
12
  const reqid_1 = require("../common/reqid");
@@ -14,42 +15,104 @@ const utils_1 = require("../common/utils");
14
15
  const websocket_1 = require("websocket");
15
16
  const constant_1 = require("../common/constant");
16
17
  class WsClient {
17
- constructor(url, timeout) {
18
- this.checkURL(url);
19
- this._url = url;
18
+ constructor(dsn, timeout) {
19
+ this._connectedDatabase = null;
20
+ this._connectionOptions = new Map();
21
+ this._customRecoveryHook = null;
22
+ this.checkAuth(dsn);
23
+ this._dsn = dsn;
20
24
  this._timeout = timeout;
21
- if (this._url.searchParams.has("timezone")) {
22
- this._timezone = this._url.searchParams.get("timezone") || undefined;
23
- this._url.searchParams.delete("timezone");
25
+ if (this._dsn.params.has("timezone")) {
26
+ this._timezone = this._dsn.params.get("timezone") || undefined;
24
27
  }
25
- if (this._url.searchParams.has("bearer_token")) {
26
- this._bearerToken = this._url.searchParams.get("bearer_token") || undefined;
28
+ if (this._dsn.params.has("bearer_token")) {
29
+ this._bearerToken = this._dsn.params.get("bearer_token") || undefined;
27
30
  }
28
31
  }
29
- async connect(database) {
30
- let connMsg = {
32
+ buildConnMessage(database) {
33
+ return {
31
34
  action: "conn",
32
35
  args: {
33
36
  req_id: reqid_1.ReqId.getReqID(),
34
- user: (0, utils_1.safeDecodeURIComponent)(this._url.username),
35
- password: (0, utils_1.safeDecodeURIComponent)(this._url.password),
37
+ user: (0, utils_1.safeDecodeURIComponent)(this._dsn.username),
38
+ password: (0, utils_1.safeDecodeURIComponent)(this._dsn.password),
36
39
  db: database,
37
40
  connector: constant_1.ConnectorInfo,
38
41
  ...(this._timezone && { tz: this._timezone }),
39
42
  ...(this._bearerToken && { bearer_token: this._bearerToken }),
40
43
  },
41
44
  };
45
+ }
46
+ getWsConnector() {
47
+ if (!this._wsConnector) {
48
+ throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "Invalid websocket connection");
49
+ }
50
+ return this._wsConnector;
51
+ }
52
+ bindReconnectRecoveryHook() {
53
+ if (!this._wsConnector) {
54
+ return;
55
+ }
56
+ this._wsConnector.setSessionRecoveryHook(async () => {
57
+ if (this.isSqlPath()) {
58
+ await this.recoverSqlSessionContext();
59
+ }
60
+ if (this._customRecoveryHook) {
61
+ await this._customRecoveryHook();
62
+ }
63
+ });
64
+ }
65
+ isSqlPath() {
66
+ return this._dsn.endpoint === dsn_1.WS_SQL_ENDPOINT;
67
+ }
68
+ normalizeConnectedDatabase(database) {
69
+ if (database && database.length > 0) {
70
+ return database;
71
+ }
72
+ return this.isSqlPath() ? "information_schema" : null;
73
+ }
74
+ async recoverSqlSessionContext() {
75
+ if (!this._wsConnector) {
76
+ return;
77
+ }
78
+ const connMsg = this.buildConnMessage(this.normalizeConnectedDatabase(this._connectedDatabase));
79
+ await this.sendMsgDirect(JSON.stringify(connMsg), false);
80
+ if (this._connectionOptions.size <= 0) {
81
+ return;
82
+ }
83
+ const options = Array.from(this._connectionOptions.entries()).map(([option, value]) => ({
84
+ option,
85
+ value,
86
+ }));
87
+ const optionsMsg = {
88
+ action: "options_connection",
89
+ args: {
90
+ req_id: reqid_1.ReqId.getReqID(),
91
+ options,
92
+ },
93
+ };
94
+ await this.sendMsgDirect(json_bigint_1.default.stringify(optionsMsg), false);
95
+ }
96
+ setSessionRecoveryHook(hook) {
97
+ this._customRecoveryHook = hook || null;
98
+ this.bindReconnectRecoveryHook();
99
+ }
100
+ async connect(database) {
101
+ const connMsg = this.buildConnMessage(database);
42
102
  if (log_1.default.isDebugEnabled()) {
43
103
  log_1.default.debug("[wsClient.connect.connMsg]===>" + json_bigint_1.default.stringify(connMsg, (key, value) => (key === "password" || key === "bearer_token") ? "[REDACTED]" : value));
44
104
  }
45
- this._wsConnector = await wsConnectorPool_1.WebSocketConnectionPool.instance().getConnection(this._url, this._timeout);
105
+ this._wsConnector = await wsConnectorPool_1.WebSocketConnectionPool.instance().getConnection(this._dsn, this._timeout);
106
+ this.bindReconnectRecoveryHook();
46
107
  if (this._wsConnector.readyState() === websocket_1.w3cwebsocket.OPEN) {
108
+ this._connectedDatabase = this.normalizeConnectedDatabase(database ?? null);
47
109
  return;
48
110
  }
49
111
  try {
50
112
  await this._wsConnector.ready();
51
113
  let result = await this._wsConnector.sendMsg(JSON.stringify(connMsg));
52
114
  if (result.msg.code == 0) {
115
+ this._connectedDatabase = this.normalizeConnectedDatabase(database ?? null);
53
116
  return;
54
117
  }
55
118
  await this.close();
@@ -57,9 +120,8 @@ class WsClient {
57
120
  }
58
121
  catch (e) {
59
122
  await this.close();
60
- const maskedUrl = (0, utils_1.maskUrlForLog)(this._url);
61
- log_1.default.error(`connection creation failed, url: ${maskedUrl}, code:${e.code}, msg:${e.message}`);
62
- throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, url: ${maskedUrl}, code:${e.code}, msg:${e.message}`);
123
+ log_1.default.error(`connection creation failed, dsn:${this._dsn}, code:${e.code}, msg:${e.message}`);
124
+ throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, dsn:${this._dsn}, code:${e.code}, msg:${e.message}`);
63
125
  }
64
126
  }
65
127
  async setOptionConnection(option, value) {
@@ -78,84 +140,55 @@ class WsClient {
78
140
  };
79
141
  try {
80
142
  await this.exec(json_bigint_1.default.stringify(connMsg), false);
143
+ this._connectionOptions.set(option, value);
81
144
  }
82
145
  catch (e) {
83
146
  log_1.default.error("[wsClient.setOptionConnection] failed: " + e.message);
84
147
  throw e;
85
148
  }
86
149
  }
87
- async execNoResp(queryMsg) {
88
- log_1.default.debug("[wsQueryInterface.query.queryMsg]===>" + queryMsg);
89
- if (this._wsConnector &&
90
- this._wsConnector.readyState() === websocket_1.w3cwebsocket.OPEN) {
91
- await this._wsConnector.sendMsgNoResp(queryMsg);
92
- return;
93
- }
94
- throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "invalid websocket connect");
150
+ async execNoResp(message) {
151
+ log_1.default.debug("[wsClient.execNoResp]===>" + message);
152
+ await this.getWsConnector().sendMsgNoResp(message);
95
153
  }
96
- // Need to construct Response
97
- async exec(queryMsg, bSqlQuery = true) {
98
- return new Promise((resolve, reject) => {
99
- if (log_1.default.isDebugEnabled()) {
100
- log_1.default.debug("[wsQueryInterface.query.queryMsg]===>" + (0, utils_1.maskSensitiveForLog)(queryMsg));
101
- }
102
- if (this._wsConnector &&
103
- this._wsConnector.readyState() === websocket_1.w3cwebsocket.OPEN) {
104
- this._wsConnector
105
- .sendMsg(queryMsg)
106
- .then((e) => {
107
- if (e.msg.code == 0) {
108
- if (bSqlQuery) {
109
- resolve(new wsResponse_1.WSQueryResponse(e));
110
- }
111
- else {
112
- resolve(e);
113
- }
114
- }
115
- else {
116
- reject(new wsError_1.WebSocketInterfaceError(e.msg.code, e.msg.message));
117
- }
118
- })
119
- .catch((e) => {
120
- reject(e);
121
- });
154
+ async exec(message, bSqlQuery = true) {
155
+ if (log_1.default.isDebugEnabled()) {
156
+ log_1.default.debug("[wsClient.exec]===>" + (0, utils_1.maskSensitiveForLog)(message));
157
+ }
158
+ const resp = await this.getWsConnector().sendMsg(message);
159
+ if (resp.msg.code == 0) {
160
+ if (bSqlQuery) {
161
+ return new wsResponse_1.WSQueryResponse(resp);
122
162
  }
123
- else {
124
- reject(new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "invalid websocket connect"));
163
+ return resp;
164
+ }
165
+ throw new wsError_1.WebSocketInterfaceError(resp.msg.code, resp.msg.message);
166
+ }
167
+ async sendMsgDirect(message, bSqlQuery = true) {
168
+ if (log_1.default.isDebugEnabled()) {
169
+ log_1.default.debug("[wsClient.sendMsgDirect]===>" + (0, utils_1.maskSensitiveForLog)(message));
170
+ }
171
+ const resp = await this.getWsConnector().sendMsgDirect(message);
172
+ if (resp.msg.code == 0) {
173
+ if (bSqlQuery) {
174
+ return new wsResponse_1.WSQueryResponse(resp);
125
175
  }
126
- });
176
+ return resp;
177
+ }
178
+ throw new wsError_1.WebSocketQueryError(resp.msg.code, resp.msg.message);
127
179
  }
128
- // need to construct Response.
129
180
  async sendBinaryMsg(reqId, action, message, bSqlQuery = true, bResultBinary = false) {
130
- return new Promise((resolve, reject) => {
131
- if (this._wsConnector &&
132
- this._wsConnector.readyState() === websocket_1.w3cwebsocket.OPEN) {
133
- this._wsConnector
134
- .sendBinaryMsg(reqId, action, message)
135
- .then((e) => {
136
- if (bResultBinary) {
137
- resolve(e);
138
- }
139
- if (e.msg.code == 0) {
140
- if (bSqlQuery) {
141
- resolve(new wsResponse_1.WSQueryResponse(e));
142
- }
143
- else {
144
- resolve(e);
145
- }
146
- }
147
- else {
148
- reject(new wsError_1.WebSocketInterfaceError(e.msg.code, e.msg.message));
149
- }
150
- })
151
- .catch((e) => {
152
- reject(e);
153
- });
154
- }
155
- else {
156
- reject(new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "invalid websocket connect"));
181
+ const resp = await this.getWsConnector().sendBinaryMsg(reqId, action, message);
182
+ if (bResultBinary) {
183
+ return resp;
184
+ }
185
+ if (resp.msg.code == 0) {
186
+ if (bSqlQuery) {
187
+ return new wsResponse_1.WSQueryResponse(resp);
157
188
  }
158
- });
189
+ return resp;
190
+ }
191
+ throw new wsError_1.WebSocketInterfaceError(resp.msg.code, resp.msg.message);
159
192
  }
160
193
  getState() {
161
194
  if (this._wsConnector) {
@@ -165,62 +198,45 @@ class WsClient {
165
198
  }
166
199
  async ready() {
167
200
  try {
168
- this._wsConnector = await wsConnectorPool_1.WebSocketConnectionPool.instance().getConnection(this._url, this._timeout);
201
+ this._wsConnector = await wsConnectorPool_1.WebSocketConnectionPool.instance().getConnection(this._dsn, this._timeout);
202
+ this.bindReconnectRecoveryHook();
169
203
  if (this._wsConnector.readyState() !== websocket_1.w3cwebsocket.OPEN) {
170
204
  await this._wsConnector.ready();
171
205
  }
172
206
  if (log_1.default.isDebugEnabled()) {
173
- log_1.default.debug("ready status ", (0, utils_1.maskUrlForLog)(this._url), this._wsConnector.readyState());
207
+ log_1.default.debug(`ready status, dsn: ${this._dsn}, state: ${this._wsConnector.readyState()}`);
174
208
  }
175
209
  return;
176
210
  }
177
211
  catch (e) {
178
- const maskedUrl = (0, utils_1.maskUrlForLog)(this._url);
179
- log_1.default.error(`connection creation failed, url: ${maskedUrl}, code: ${e.code}, message: ${e.message}`);
180
- throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, url: ${maskedUrl}, code: ${e.code}, message: ${e.message}`);
212
+ log_1.default.error(`connection creation failed, dsn: ${this._dsn}, code: ${e.code}, message: ${e.message}`);
213
+ throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, dsn: ${this._dsn}, code: ${e.code}, message: ${e.message}`);
181
214
  }
182
215
  }
183
- async sendMsg(msg) {
184
- return new Promise((resolve, reject) => {
185
- log_1.default.debug("[wsQueryInterface.sendMsg]===>" + msg);
186
- if (this._wsConnector &&
187
- this._wsConnector.readyState() === websocket_1.w3cwebsocket.OPEN) {
188
- this._wsConnector
189
- .sendMsg(msg)
190
- .then((e) => {
191
- resolve(e);
192
- })
193
- .catch((e) => reject(e));
194
- }
195
- else {
196
- reject(new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "invalid websocket connect"));
197
- }
198
- });
216
+ async waitForReady() {
217
+ await this.getWsConnector().ready();
218
+ }
219
+ isNetworkError(err) {
220
+ return this.getWsConnector().isNetworkError(err);
221
+ }
222
+ getReconnectRetries() {
223
+ return this.getWsConnector().getReconnectRetries();
224
+ }
225
+ async sendMsg(message) {
226
+ log_1.default.debug("[wsClient.sendMsg]===>" + message);
227
+ return this.getWsConnector().sendMsg(message);
199
228
  }
200
229
  async freeResult(res) {
201
- let freeResultMsg = {
230
+ const freeResultMsg = {
202
231
  action: "free_result",
203
232
  args: {
204
233
  req_id: reqid_1.ReqId.getReqID(),
205
234
  id: res.id,
206
235
  },
207
236
  };
208
- return new Promise((resolve, reject) => {
209
- let jsonStr = json_bigint_1.default.stringify(freeResultMsg);
210
- log_1.default.debug("[wsQueryInterface.freeResult.freeResultMsg]===>" + jsonStr);
211
- if (this._wsConnector &&
212
- this._wsConnector.readyState() === websocket_1.w3cwebsocket.OPEN) {
213
- this._wsConnector
214
- .sendMsgNoResp(jsonStr)
215
- .then((e) => {
216
- resolve(e);
217
- })
218
- .catch((e) => reject(e));
219
- }
220
- else {
221
- reject(new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "invalid websocket connect"));
222
- }
223
- });
237
+ const jsonStr = json_bigint_1.default.stringify(freeResultMsg);
238
+ log_1.default.debug("[wsClient.freeResult]===>" + jsonStr);
239
+ await this.getWsConnector().sendMsgNoResp(jsonStr);
224
240
  }
225
241
  async version() {
226
242
  if (this._version) {
@@ -232,35 +248,34 @@ class WsClient {
232
248
  req_id: reqid_1.ReqId.getReqID(),
233
249
  },
234
250
  };
235
- if (this._wsConnector) {
236
- try {
237
- if (this._wsConnector.readyState() !== websocket_1.w3cwebsocket.OPEN) {
238
- await this._wsConnector.ready();
239
- }
240
- let result = await this._wsConnector.sendMsg(json_bigint_1.default.stringify(versionMsg));
241
- if (result.msg.code == 0) {
242
- return new wsResponse_1.WSVersionResponse(result).version;
243
- }
244
- throw new wsError_1.WebSocketInterfaceError(result.msg.code, result.msg.message);
251
+ try {
252
+ const connector = this.getWsConnector();
253
+ if (connector.readyState() !== websocket_1.w3cwebsocket.OPEN) {
254
+ await connector.ready();
245
255
  }
246
- catch (e) {
247
- const maskedUrl = (0, utils_1.maskUrlForLog)(this._url);
248
- log_1.default.error(`connection creation failed, url: ${maskedUrl}, code: ${e.code}, message: ${e.message}`);
249
- throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, url: ${maskedUrl}, code: ${e.code}, message: ${e.message}`);
256
+ let result = await connector.sendMsg(json_bigint_1.default.stringify(versionMsg));
257
+ if (result.msg.code == 0) {
258
+ return new wsResponse_1.WSVersionResponse(result).version;
250
259
  }
260
+ throw new wsError_1.WebSocketInterfaceError(result.msg.code, result.msg.message);
261
+ }
262
+ catch (e) {
263
+ log_1.default.error(`connection creation failed, dsn: ${this._dsn}, code: ${e.code}, message: ${e.message}`);
264
+ throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, dsn: ${this._dsn}, code: ${e.code}, message: ${e.message}`);
251
265
  }
252
- throw (wsError_1.ErrorCode.ERR_CONNECTION_CLOSED, "invalid websocket connect");
253
266
  }
254
267
  async close() {
255
268
  if (this._wsConnector) {
269
+ this._wsConnector.setSessionRecoveryHook(null);
256
270
  await wsConnectorPool_1.WebSocketConnectionPool.instance().releaseConnection(this._wsConnector);
257
271
  this._wsConnector = undefined;
258
272
  }
273
+ this._customRecoveryHook = null;
259
274
  }
260
- checkURL(url) {
261
- // Assert token or bearer_token exists, otherwise username and password must exist.
262
- if (!url.searchParams.get("token") && !url.searchParams.get("bearer_token")) {
263
- if (!(url.username || url.password)) {
275
+ checkAuth(dsn) {
276
+ const hasToken = dsn.params.get("token") || dsn.params.get("bearer_token");
277
+ if (!hasToken) {
278
+ if (!(dsn.username || dsn.password)) {
264
279
  throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_AUTHENTICATION, `invalid url, provide non-empty "token" or "bearer_token", or provide username/password`);
265
280
  }
266
281
  }
@@ -1,16 +1,62 @@
1
+ import { Dsn } from "../common/dsn";
2
+ export type SessionRecoveryHook = () => Promise<void>;
3
+ export declare class RetryConfig {
4
+ readonly retries: number;
5
+ readonly retryBackoffMs: number;
6
+ readonly retryBackoffMaxMs: number;
7
+ constructor(retries: number, retryBackoffMs: number, retryBackoffMaxMs: number);
8
+ getBackoffDelay(attempt: number): number;
9
+ static fromDsn(dsn: Dsn): RetryConfig;
10
+ }
1
11
  export declare class WebSocketConnector {
2
- private _wsConn;
3
- private _wsURL;
4
- _timeout: number;
5
- constructor(url: URL, timeout: number | undefined | null);
6
- ready(): Promise<unknown>;
7
- private _onclose;
12
+ private _conn;
13
+ private readonly _poolKey;
14
+ private readonly _dsn;
15
+ private _currentAddress;
16
+ private _retryConfig;
17
+ private _inflightStore;
18
+ private readonly _suppressedSockets;
19
+ private _reconnectLock;
20
+ private _isReconnecting;
21
+ private _allowReconnect;
22
+ private _connectionReady;
23
+ private _sessionRecoveryHook;
24
+ private _timeout;
25
+ constructor(dsn: Dsn, poolKey: string, timeout: number | undefined | null);
26
+ refreshRetryConfig(dsn: Dsn): void;
27
+ private buildUrl;
28
+ private createConnection;
8
29
  private _onmessage;
30
+ private shouldSkipReconnect;
31
+ private failNonRetriableCallbacksOnDisconnect;
32
+ private handleDisconnect;
33
+ private extractReqId;
34
+ private isRetriableAction;
35
+ private extractBinaryAction;
36
+ private isRetriableBinaryAction;
37
+ isNetworkError(err: unknown): boolean;
38
+ private send;
39
+ ready(): Promise<void>;
40
+ private getCurrentAddress;
41
+ private selectLeastConnectedAddress;
42
+ private sleep;
43
+ private isReconnectAllowed;
44
+ private triggerReconnect;
45
+ private _doReconnect;
46
+ private reconnect;
47
+ private attemptReconnect;
48
+ private replayRequests;
49
+ private failAllInflightRequests;
9
50
  close(): void;
10
51
  readyState(): number;
52
+ setSessionRecoveryHook(hook: SessionRecoveryHook | undefined | null): void;
53
+ private recoverSessionContext;
54
+ sendMsgDirect(message: string): Promise<any>;
11
55
  sendMsgNoResp(message: string): Promise<void>;
12
- sendMsg(message: string, register?: Boolean): Promise<unknown>;
13
- sendBinaryMsg(reqId: bigint, action: string, message: ArrayBuffer, register?: Boolean): Promise<unknown>;
14
- getWsURL(): URL;
56
+ sendMsg(message: string): Promise<unknown>;
57
+ sendBinaryMsg(reqId: bigint, action: string, message: ArrayBuffer): Promise<unknown>;
58
+ private sendAndTrackResponse;
59
+ getPoolKey(): string;
60
+ getReconnectRetries(): number;
15
61
  }
16
62
  //# sourceMappingURL=wsConnector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wsConnector.d.ts","sourceRoot":"","sources":["../../../src/client/wsConnector.ts"],"names":[],"mappings":"AAWA,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAM;IACpB,QAAQ,SAAQ;gBAEJ,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAkClD,KAAK;YA6BG,QAAQ;IAItB,OAAO,CAAC,UAAU;IA0BlB,KAAK;IAWL,UAAU,IAAI,MAAM;IAId,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc;IAsCjD,aAAa,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,QAAQ,GAAE,OAAc;IAkCrB,QAAQ,IAAI,GAAG;CAGzB"}
1
+ {"version":3,"file":"wsConnector.d.ts","sourceRoot":"","sources":["../../../src/client/wsConnector.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,GAAG,EAAE,MAAM,eAAe,CAAC;AA0D7C,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AA0DtD,qBAAa,WAAW;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAM9E,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOxC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW;CAexC;AAED,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAC3E,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,QAAQ,CAAS;gBAGrB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAoB/B,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAIzC,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,gBAAgB;IAmExB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,mBAAmB;YAOb,qCAAqC;YAcrC,gBAAgB;IAkB9B,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,uBAAuB;IAIxB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IA4B5C,OAAO,CAAC,IAAI;IAcN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,2BAA2B;YAWrB,KAAK;IAInB,OAAO,CAAC,kBAAkB;YAIZ,gBAAgB;YAkBhB,YAAY;YAkBZ,SAAS;YAUT,gBAAgB;YAsChB,cAAc;IAiB5B,OAAO,CAAC,uBAAuB;IAO/B,KAAK;IAiBL,UAAU,IAAI,MAAM;IAIb,sBAAsB,CACzB,IAAI,EAAE,mBAAmB,GAAG,SAAS,GAAG,IAAI,GAC7C,IAAI;YAIO,qBAAqB;IAOtB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmCnD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,OAAO,EAAE,MAAM;IAgBvB,aAAa,CACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW;YAWV,oBAAoB;IAgF3B,UAAU,IAAI,MAAM;IAIpB,mBAAmB,IAAI,MAAM;CAGvC"}