@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
@@ -0,0 +1,341 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.testNon3360 = exports.testEnterprise = exports.testCloud = exports.tagMeta = exports.jsonMeta = exports.tableMeta = void 0;
7
+ exports.getInsertBind = getInsertBind;
8
+ exports.insertStable = insertStable;
9
+ exports.insertNTable = insertNTable;
10
+ exports.createBaseSTable = createBaseSTable;
11
+ exports.createBaseSTableJSON = createBaseSTableJSON;
12
+ exports.createBaseTable = createBaseTable;
13
+ exports.createSTable = createSTable;
14
+ exports.createSTableJSON = createSTableJSON;
15
+ exports.createTable = createTable;
16
+ exports.expectStableData = expectStableData;
17
+ exports.hexToBytes = hexToBytes;
18
+ exports.compareUint8Arrays = compareUint8Arrays;
19
+ exports.Sleep = Sleep;
20
+ exports.testUsername = testUsername;
21
+ exports.testPassword = testPassword;
22
+ exports.testCloudUrl = testCloudUrl;
23
+ exports.testCloudToken = testCloudToken;
24
+ exports.testCloudWsUrl = testCloudWsUrl;
25
+ exports.hasTestCloudEnv = hasTestCloudEnv;
26
+ const log_1 = __importDefault(require("@src/common/log"));
27
+ function getInsertBind(valuesLen, tagsLen, db, stable) {
28
+ let sql = `insert into ? using ${db}.${stable} tags ( ?`;
29
+ for (let i = 1; i < tagsLen; i++) {
30
+ sql += ", ?";
31
+ }
32
+ sql += ") values( ?";
33
+ for (let i = 1; i < valuesLen; i++) {
34
+ sql += ", ?";
35
+ }
36
+ sql += ")";
37
+ log_1.default.debug(`Insert bind sql: ${sql}`);
38
+ return sql;
39
+ }
40
+ function insertStable(values, tags, stable, table = "empty") {
41
+ let childTable = table == "empty" ? stable + "_s_01" : table;
42
+ let sql = `insert into ${childTable} using ${stable} tags (`;
43
+ tags.forEach((tag) => {
44
+ if (typeof tag == "string") {
45
+ if (tag == "NULL") {
46
+ sql += tag + ",";
47
+ }
48
+ else {
49
+ sql += `\'${tag}\',`;
50
+ }
51
+ }
52
+ else {
53
+ sql += tag;
54
+ sql += ",";
55
+ }
56
+ });
57
+ sql = sql.slice(0, sql.length - 1);
58
+ sql += ")";
59
+ sql += "values";
60
+ values.forEach((value) => {
61
+ sql += "(";
62
+ value.forEach((v) => {
63
+ if (typeof v == "string") {
64
+ sql += `\'${v}\',`;
65
+ }
66
+ else {
67
+ sql += v;
68
+ sql += ",";
69
+ }
70
+ });
71
+ sql = sql.slice(0, sql.length - 1);
72
+ sql += ")";
73
+ });
74
+ return sql;
75
+ }
76
+ function insertNTable(values, table) {
77
+ let sql = `insert into ${table} values `;
78
+ values.forEach((value) => {
79
+ sql += "(";
80
+ value.forEach((v) => {
81
+ if (typeof v == "string") {
82
+ if (v == "NULL") {
83
+ sql += v + ",";
84
+ }
85
+ else {
86
+ sql += `\'${v}\',`;
87
+ }
88
+ }
89
+ else {
90
+ sql += v;
91
+ sql += ",";
92
+ }
93
+ });
94
+ sql = sql.slice(0, sql.length - 1);
95
+ sql += ")";
96
+ });
97
+ return sql;
98
+ }
99
+ exports.tableMeta = [
100
+ {
101
+ name: "ts",
102
+ type: "TIMESTAMP",
103
+ length: 8,
104
+ },
105
+ {
106
+ name: "i1",
107
+ type: "TINYINT",
108
+ length: 1,
109
+ },
110
+ {
111
+ name: "i2",
112
+ type: "SMALLINT",
113
+ length: 2,
114
+ },
115
+ {
116
+ name: "i4",
117
+ type: "INT",
118
+ length: 4,
119
+ },
120
+ {
121
+ name: "i8",
122
+ type: "BIGINT",
123
+ length: 8,
124
+ },
125
+ {
126
+ name: "u1",
127
+ type: "TINYINT UNSIGNED",
128
+ length: 1,
129
+ },
130
+ {
131
+ name: "u2",
132
+ type: "SMALLINT UNSIGNED",
133
+ length: 2,
134
+ },
135
+ {
136
+ name: "u4",
137
+ type: "INT UNSIGNED",
138
+ length: 4,
139
+ },
140
+ {
141
+ name: "u8",
142
+ type: "BIGINT UNSIGNED",
143
+ length: 8,
144
+ },
145
+ {
146
+ name: "f4",
147
+ type: "FLOAT",
148
+ length: 4,
149
+ },
150
+ {
151
+ name: "d8",
152
+ type: "DOUBLE",
153
+ length: 8,
154
+ },
155
+ {
156
+ name: "bnr",
157
+ type: "VARCHAR",
158
+ length: 200,
159
+ },
160
+ {
161
+ name: "nchr",
162
+ type: "NCHAR",
163
+ length: 200,
164
+ },
165
+ {
166
+ name: "b",
167
+ type: "BOOL",
168
+ length: 1,
169
+ },
170
+ {
171
+ name: "nilcol",
172
+ type: "INT",
173
+ length: 4,
174
+ },
175
+ {
176
+ name: "geo",
177
+ type: "GEOMETRY",
178
+ length: 512,
179
+ },
180
+ {
181
+ name: "vbinary",
182
+ type: "VARBINARY",
183
+ length: 32,
184
+ },
185
+ ];
186
+ exports.jsonMeta = [
187
+ {
188
+ name: "json_tag",
189
+ type: "JSON",
190
+ length: 4095,
191
+ },
192
+ ];
193
+ exports.tagMeta = [
194
+ {
195
+ name: "tb",
196
+ type: "BOOL",
197
+ length: 1,
198
+ },
199
+ {
200
+ name: "ti1",
201
+ type: "TINYINT",
202
+ length: 1,
203
+ },
204
+ {
205
+ name: "ti2",
206
+ type: "SMALLINT",
207
+ length: 2,
208
+ },
209
+ {
210
+ name: "ti4",
211
+ type: "INT",
212
+ length: 4,
213
+ },
214
+ {
215
+ name: "ti8",
216
+ type: "BIGINT",
217
+ length: 8,
218
+ },
219
+ {
220
+ name: "tu1",
221
+ type: "TINYINT UNSIGNED",
222
+ length: 1,
223
+ },
224
+ {
225
+ name: "tu2",
226
+ type: "SMALLINT UNSIGNED",
227
+ length: 2,
228
+ },
229
+ {
230
+ name: "tu4",
231
+ type: "INT UNSIGNED",
232
+ length: 4,
233
+ },
234
+ {
235
+ name: "tu8",
236
+ type: "BIGINT UNSIGNED",
237
+ length: 8,
238
+ },
239
+ {
240
+ name: "tf4",
241
+ type: "FLOAT",
242
+ length: 4,
243
+ },
244
+ {
245
+ name: "td8",
246
+ type: "DOUBLE",
247
+ length: 8,
248
+ },
249
+ {
250
+ name: "tbnr",
251
+ type: "VARCHAR",
252
+ length: 200,
253
+ },
254
+ {
255
+ name: "tnchr",
256
+ type: "NCHAR",
257
+ length: 200,
258
+ },
259
+ ];
260
+ function createBaseSTable(stable) {
261
+ return (`create table if not exists ${stable}( ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, g1 geometry(512), c4 varbinary(100))` +
262
+ "tags( tb bool,ti1 tinyint,ti2 smallint,ti4 int,ti8 bigint,tu1 tinyint unsigned,tu2 smallint unsigned,tu4 int unsigned,tu8 bigint unsigned,tf4 float,td8 double,tbnr binary(200),tnchr nchar(200));");
263
+ }
264
+ function createBaseSTableJSON(stable) {
265
+ return (`create table if not exists ${stable}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int)` +
266
+ "tags(json_tag json);");
267
+ }
268
+ function createBaseTable(table) {
269
+ return `create table if not exists ${table}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int)`;
270
+ }
271
+ function createSTable(stable) {
272
+ return (`create table if not exists ${stable}( ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))` +
273
+ "tags( tb bool,ti1 tinyint,ti2 smallint,ti4 int,ti8 bigint,tu1 tinyint unsigned,tu2 smallint unsigned,tu4 int unsigned,tu8 bigint unsigned,tf4 float,td8 double,tbnr binary(200),tnchr nchar(200));");
274
+ }
275
+ function createSTableJSON(stable) {
276
+ return (`create table if not exists ${stable}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))` +
277
+ "tags(json_tag json);");
278
+ }
279
+ function createTable(table) {
280
+ return `create table if not exists ${table}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))`;
281
+ }
282
+ function expectStableData(rows, tags) {
283
+ let resArr = [];
284
+ rows.forEach((row, index, rows) => {
285
+ resArr.push(row.concat(tags));
286
+ });
287
+ return resArr;
288
+ }
289
+ function hexToBytes(hex) {
290
+ let byteLen = hex.length / 2;
291
+ let a = new Uint8Array(byteLen);
292
+ for (let i = 0, count = 0; i < hex.length; i += 2, count++) {
293
+ let item = parseInt(hex.slice(i, i + 2), 16);
294
+ a[count] = item;
295
+ }
296
+ return a.buffer;
297
+ }
298
+ function compareUint8Arrays(arr1, arr2) {
299
+ if (arr1.length !== arr2.length) {
300
+ log_1.default.debug(`${arr1.length} !== ${arr2.length}`);
301
+ return false;
302
+ }
303
+ for (let i = 0; i < arr1.length; i++) {
304
+ if (arr1[i] !== arr2[i]) {
305
+ log_1.default.debug(`${arr1[i]} !== ${arr2[i]}`);
306
+ return false;
307
+ }
308
+ }
309
+ return true;
310
+ }
311
+ function Sleep(ms) {
312
+ return new Promise((resolve) => setTimeout(resolve, ms));
313
+ }
314
+ function testUsername() {
315
+ return process.env.TDENGINE_TEST_USERNAME || "root";
316
+ }
317
+ function testPassword() {
318
+ return process.env.TDENGINE_TEST_PASSWORD || "taosdata";
319
+ }
320
+ function testCloudUrl() {
321
+ const cloudUrl = process.env.TDENGINE_CLOUD_URL?.trim();
322
+ return cloudUrl && cloudUrl.length > 0 ? cloudUrl : undefined;
323
+ }
324
+ function testCloudToken() {
325
+ const cloudToken = process.env.TDENGINE_CLOUD_TOKEN?.trim();
326
+ return cloudToken && cloudToken.length > 0 ? cloudToken : undefined;
327
+ }
328
+ function testCloudWsUrl() {
329
+ const cloudUrl = testCloudUrl();
330
+ const cloudToken = testCloudToken();
331
+ if (!cloudUrl || !cloudToken) {
332
+ return undefined;
333
+ }
334
+ return `wss://${cloudUrl}?token=${cloudToken}`;
335
+ }
336
+ function hasTestCloudEnv() {
337
+ return !!testCloudWsUrl();
338
+ }
339
+ exports.testCloud = hasTestCloudEnv() ? test : test.skip;
340
+ exports.testEnterprise = process.env.TEST_ENTERPRISE?.toLowerCase() === "true" ? test : test.skip;
341
+ exports.testNon3360 = process.env.TEST_3360?.toLowerCase() === "true" ? test.skip : test;
@@ -0,0 +1,109 @@
1
+ type WsProxyDirection = "client_to_upstream" | "upstream_to_client";
2
+ type WsProxyEventType = "proxy_started" | "proxy_stopped" | "client_connected" | "upstream_connected" | "message" | "tunnel_closed" | "error";
3
+ interface WsProxyEventBase {
4
+ type: WsProxyEventType;
5
+ timestamp: number;
6
+ connectionId?: number;
7
+ }
8
+ export interface WsProxyStartedEvent extends WsProxyEventBase {
9
+ type: "proxy_started";
10
+ host: string;
11
+ port: number;
12
+ url: string;
13
+ reason?: string;
14
+ }
15
+ export interface WsProxyStoppedEvent extends WsProxyEventBase {
16
+ type: "proxy_stopped";
17
+ reason?: string;
18
+ }
19
+ export interface WsProxyClientConnectedEvent extends WsProxyEventBase {
20
+ type: "client_connected";
21
+ connectionId: number;
22
+ path: string;
23
+ remoteAddress: string;
24
+ }
25
+ export interface WsProxyUpstreamConnectedEvent extends WsProxyEventBase {
26
+ type: "upstream_connected";
27
+ connectionId: number;
28
+ upstreamUrl: string;
29
+ }
30
+ export interface WsProxyMessageEvent extends WsProxyEventBase {
31
+ type: "message";
32
+ connectionId: number;
33
+ direction: WsProxyDirection;
34
+ isBinary: boolean;
35
+ byteLength: number;
36
+ rawData: Buffer | string;
37
+ messageSeq: number;
38
+ }
39
+ export interface WsProxyTunnelClosedEvent extends WsProxyEventBase {
40
+ type: "tunnel_closed";
41
+ connectionId: number;
42
+ reason: string;
43
+ source: "client" | "upstream" | "proxy";
44
+ }
45
+ export interface WsProxyErrorEvent extends WsProxyEventBase {
46
+ type: "error";
47
+ error: Error;
48
+ stage: string;
49
+ sourceEventType?: WsProxyEventType;
50
+ details?: string;
51
+ }
52
+ export type WsProxyEvent = WsProxyStartedEvent | WsProxyStoppedEvent | WsProxyClientConnectedEvent | WsProxyUpstreamConnectedEvent | WsProxyMessageEvent | WsProxyTunnelClosedEvent | WsProxyErrorEvent;
53
+ export interface WsProxyControl {
54
+ restart(opts?: {
55
+ downtimeMs?: number;
56
+ reason?: string;
57
+ }): Promise<void>;
58
+ stop(reason?: string): Promise<void>;
59
+ isRunning(): boolean;
60
+ }
61
+ export type WsProxyEventHandler = (event: WsProxyEvent, control: WsProxyControl) => void | Promise<void>;
62
+ export interface WsFailoverProxyOptions {
63
+ host: string;
64
+ port: number;
65
+ onEvent?: WsProxyEventHandler;
66
+ }
67
+ export declare class WsFailoverProxy {
68
+ private readonly _listenHost;
69
+ private readonly _requestedPort;
70
+ private _lockedPort;
71
+ private readonly _onEvent?;
72
+ private readonly _control;
73
+ private _httpServer;
74
+ private _wsServer;
75
+ private _running;
76
+ private _nextConnectionId;
77
+ private _lifecycleChain;
78
+ private readonly _tunnels;
79
+ private readonly _eventLog;
80
+ constructor(options: WsFailoverProxyOptions);
81
+ static create(options: WsFailoverProxyOptions): Promise<WsFailoverProxy>;
82
+ start(reason?: string): Promise<void>;
83
+ stop(reason?: string): Promise<void>;
84
+ restart(opts?: {
85
+ downtimeMs?: number;
86
+ reason?: string;
87
+ }): Promise<void>;
88
+ isRunning(): boolean;
89
+ getPort(): number;
90
+ getHost(): string;
91
+ getUrl(): string;
92
+ getEventLog(): WsProxyEvent[];
93
+ private enqueueLifecycle;
94
+ private startInternal;
95
+ private stopInternal;
96
+ private handleClientRequest;
97
+ private connectUpstream;
98
+ private handleClientMessage;
99
+ private handleUpstreamMessage;
100
+ private flushPendingFrames;
101
+ private closeTunnel;
102
+ private isConnected;
103
+ private emitMessageEvent;
104
+ private emitError;
105
+ private emitEvent;
106
+ private safeCloseConnection;
107
+ }
108
+ export {};
109
+ //# sourceMappingURL=wsFailoverProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsFailoverProxy.d.ts","sourceRoot":"","sources":["../../../test/helpers/wsFailoverProxy.ts"],"names":[],"mappings":"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"}