@tdengine/websocket 3.0.0 → 3.1.1

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 (157) hide show
  1. package/lib/example/all_type_query.d.ts +2 -0
  2. package/lib/example/all_type_query.d.ts.map +1 -0
  3. package/lib/example/all_type_query.js +89 -0
  4. package/lib/example/all_type_stmt.d.ts +2 -0
  5. package/lib/example/all_type_stmt.d.ts.map +1 -0
  6. package/lib/example/all_type_stmt.js +130 -0
  7. package/lib/example/basicBatchTmq.d.ts +2 -0
  8. package/lib/example/basicBatchTmq.d.ts.map +1 -0
  9. package/lib/example/basicBatchTmq.js +129 -0
  10. package/lib/example/basicSchemaless.d.ts +2 -0
  11. package/lib/example/basicSchemaless.d.ts.map +1 -0
  12. package/lib/example/basicSchemaless.js +47 -0
  13. package/lib/example/basicSql.d.ts +2 -0
  14. package/lib/example/basicSql.d.ts.map +1 -0
  15. package/lib/example/basicSql.js +54 -0
  16. package/lib/example/basicStmt.d.ts +2 -0
  17. package/lib/example/basicStmt.d.ts.map +1 -0
  18. package/lib/example/basicStmt.js +72 -0
  19. package/lib/example/basicTmq.d.ts +2 -0
  20. package/lib/example/basicTmq.d.ts.map +1 -0
  21. package/lib/example/basicTmq.js +73 -0
  22. package/lib/index.d.ts +26 -0
  23. package/lib/index.d.ts.map +1 -0
  24. package/lib/index.js +41 -0
  25. package/lib/src/client/wsClient.d.ts +22 -0
  26. package/lib/src/client/wsClient.d.ts.map +1 -0
  27. package/lib/src/client/wsClient.js +256 -0
  28. package/lib/src/client/wsConnector.d.ts +17 -0
  29. package/lib/src/client/wsConnector.d.ts.map +1 -0
  30. package/lib/src/client/wsConnector.js +140 -0
  31. package/lib/src/client/wsConnectorPool.d.ts +13 -0
  32. package/lib/src/client/wsConnectorPool.d.ts.map +1 -0
  33. package/lib/src/client/wsConnectorPool.js +107 -0
  34. package/lib/src/client/wsEventCallback.d.ts +22 -0
  35. package/lib/src/client/wsEventCallback.d.ts.map +1 -0
  36. package/lib/src/client/wsEventCallback.js +97 -0
  37. package/lib/src/client/wsResponse.d.ts +74 -0
  38. package/lib/src/client/wsResponse.d.ts.map +1 -0
  39. package/lib/src/client/wsResponse.js +103 -0
  40. package/lib/src/common/config.d.ts +22 -0
  41. package/lib/src/common/config.d.ts.map +1 -0
  42. package/lib/src/common/config.js +45 -0
  43. package/lib/src/common/constant.d.ts +35 -0
  44. package/lib/src/common/constant.d.ts.map +1 -0
  45. package/lib/src/common/constant.js +78 -0
  46. package/lib/src/common/log.d.ts +5 -0
  47. package/lib/src/common/log.d.ts.map +1 -0
  48. package/lib/src/common/log.js +40 -0
  49. package/lib/src/common/reqid.d.ts +8 -0
  50. package/lib/src/common/reqid.d.ts.map +1 -0
  51. package/lib/src/common/reqid.js +59 -0
  52. package/lib/src/common/taosResult.d.ts +57 -0
  53. package/lib/src/common/taosResult.d.ts.map +1 -0
  54. package/lib/src/common/taosResult.js +449 -0
  55. package/lib/src/common/ut8Helper.d.ts +2 -0
  56. package/lib/src/common/ut8Helper.d.ts.map +1 -0
  57. package/{src/ut8Helper.ts → lib/src/common/ut8Helper.js} +22 -21
  58. package/lib/src/common/utils.d.ts +7 -0
  59. package/lib/src/common/utils.d.ts.map +1 -0
  60. package/lib/src/common/utils.js +66 -0
  61. package/lib/src/common/wsError.d.ts +29 -0
  62. package/lib/src/common/wsError.d.ts.map +1 -0
  63. package/lib/src/common/wsError.js +51 -0
  64. package/{src/wsOptions.ts → lib/src/common/wsOptions.d.ts} +4 -2
  65. package/lib/src/common/wsOptions.d.ts.map +1 -0
  66. package/lib/src/common/wsOptions.js +2 -0
  67. package/lib/src/index.d.ts +9 -0
  68. package/lib/src/index.d.ts.map +1 -0
  69. package/lib/src/index.js +58 -0
  70. package/lib/src/sql/wsProto.d.ts +26 -0
  71. package/lib/src/sql/wsProto.d.ts.map +1 -0
  72. package/lib/src/sql/wsProto.js +19 -0
  73. package/lib/src/sql/wsRows.d.ts +16 -0
  74. package/lib/src/sql/wsRows.d.ts.map +1 -0
  75. package/lib/src/sql/wsRows.js +87 -0
  76. package/lib/src/sql/wsSql.d.ts +24 -0
  77. package/lib/src/sql/wsSql.d.ts.map +1 -0
  78. package/lib/src/sql/wsSql.js +174 -0
  79. package/lib/src/stmt/wsParams.d.ts +41 -0
  80. package/lib/src/stmt/wsParams.d.ts.map +1 -0
  81. package/lib/src/stmt/wsParams.js +428 -0
  82. package/lib/src/stmt/wsProto.d.ts +27 -0
  83. package/lib/src/stmt/wsProto.d.ts.map +1 -0
  84. package/lib/src/stmt/wsProto.js +67 -0
  85. package/lib/src/stmt/wsStmt.d.ts +30 -0
  86. package/lib/src/stmt/wsStmt.d.ts.map +1 -0
  87. package/lib/src/stmt/wsStmt.js +207 -0
  88. package/lib/src/tmq/config.d.ts +14 -0
  89. package/lib/src/tmq/config.d.ts.map +1 -0
  90. package/lib/src/tmq/config.js +42 -0
  91. package/lib/src/tmq/constant.d.ts +100 -0
  92. package/lib/src/tmq/constant.d.ts.map +1 -0
  93. package/lib/src/tmq/constant.js +105 -0
  94. package/lib/src/tmq/tmqResponse.d.ts +92 -0
  95. package/lib/src/tmq/tmqResponse.d.ts.map +1 -0
  96. package/lib/src/tmq/tmqResponse.js +329 -0
  97. package/lib/src/tmq/wsTmq.d.ts +32 -0
  98. package/lib/src/tmq/wsTmq.d.ts.map +1 -0
  99. package/lib/src/tmq/wsTmq.js +319 -0
  100. package/lib/test/bulkPulling/log.test.d.ts +2 -0
  101. package/lib/test/bulkPulling/log.test.d.ts.map +1 -0
  102. package/lib/test/bulkPulling/log.test.js +44 -0
  103. package/lib/test/bulkPulling/queryTables.test.d.ts +2 -0
  104. package/lib/test/bulkPulling/queryTables.test.d.ts.map +1 -0
  105. package/lib/test/bulkPulling/queryTables.test.js +297 -0
  106. package/lib/test/bulkPulling/schemaless.test.d.ts +2 -0
  107. package/lib/test/bulkPulling/schemaless.test.d.ts.map +1 -0
  108. package/lib/test/bulkPulling/schemaless.test.js +95 -0
  109. package/lib/test/bulkPulling/sql.test.d.ts +2 -0
  110. package/lib/test/bulkPulling/sql.test.d.ts.map +1 -0
  111. package/lib/test/bulkPulling/sql.test.js +144 -0
  112. package/lib/test/bulkPulling/stmt.func.test.d.ts +2 -0
  113. package/lib/test/bulkPulling/stmt.func.test.d.ts.map +1 -0
  114. package/lib/test/bulkPulling/stmt.func.test.js +397 -0
  115. package/lib/test/bulkPulling/stmt.type.test.d.ts +2 -0
  116. package/lib/test/bulkPulling/stmt.type.test.d.ts.map +1 -0
  117. package/lib/test/bulkPulling/stmt.type.test.js +269 -0
  118. package/lib/test/bulkPulling/tmq.test.d.ts +2 -0
  119. package/lib/test/bulkPulling/tmq.test.d.ts.map +1 -0
  120. package/lib/test/bulkPulling/tmq.test.js +178 -0
  121. package/lib/test/bulkPulling/wsConnectPool.test.d.ts +2 -0
  122. package/lib/test/bulkPulling/wsConnectPool.test.d.ts.map +1 -0
  123. package/lib/test/bulkPulling/wsConnectPool.test.js +136 -0
  124. package/lib/test/utils.d.ts +18 -0
  125. package/lib/test/utils.d.ts.map +1 -0
  126. package/lib/test/utils.js +318 -0
  127. package/package.json +27 -14
  128. package/readme.md +302 -0
  129. package/README.md +0 -59
  130. package/dist/browser/index.js +0 -778
  131. package/dist/main/index.js +0 -711
  132. package/dist/main/index.js.map +0 -1
  133. package/dist/module/index.mjs +0 -704
  134. package/dist/module/index.mjs.map +0 -1
  135. package/dist/types.d.ts +0 -103
  136. package/dist/types.d.ts.map +0 -1
  137. package/example/basicUsageAsync.ts +0 -48
  138. package/example/basicUsagePrimse.ts +0 -43
  139. package/example/cloudUsage.ts +0 -55
  140. package/example/continousConnectAndVersion.ts +0 -16
  141. package/example/test.mjs +0 -51
  142. package/index.ts +0 -7
  143. package/jest.config.js +0 -8
  144. package/src/constant.ts +0 -74
  145. package/src/taosResult.ts +0 -269
  146. package/src/tdengineWebsocket.ts +0 -39
  147. package/src/wsClient.ts +0 -196
  148. package/src/wsError.ts +0 -5
  149. package/src/wsQuery.ts +0 -30
  150. package/src/wsQueryInterface.ts +0 -212
  151. package/src/wsQueryResponse.ts +0 -112
  152. package/tdengine-websocket-3.0.0.tgz +0 -0
  153. package/test/bulkPulling/connect.test.ts +0 -27
  154. package/test/bulkPulling/queryTables.test.ts +0 -274
  155. package/test/bulkPulling/version.test.ts +0 -19
  156. package/test/utils.ts +0 -235
  157. package/tsconfig.json +0 -101
@@ -0,0 +1,449 @@
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.bitmapLen = exports.setBitmapNull = exports.getCharOffset = exports.getString = exports.readNchar = exports.readVarchar = exports.readBinary = exports.readSolidData = exports.readSolidDataToArray = exports._isVarType = exports.parseBlock = exports.TaosResult = void 0;
7
+ const constant_1 = require("./constant");
8
+ const wsError_1 = require("./wsError");
9
+ const ut8Helper_1 = require("./ut8Helper");
10
+ const log_1 = __importDefault(require("./log"));
11
+ class TaosResult {
12
+ constructor(queryResponse) {
13
+ this._totalTime = 0;
14
+ if (queryResponse == null) {
15
+ this._meta = [];
16
+ this._data = [];
17
+ this._timing = BigInt(0);
18
+ return;
19
+ }
20
+ if (queryResponse.is_update == true) {
21
+ this._meta = null;
22
+ this._data = null;
23
+ }
24
+ else {
25
+ if (queryResponse.fields_count && queryResponse.fields_names && queryResponse.fields_types && queryResponse.fields_lengths) {
26
+ let _meta = [];
27
+ for (let i = 0; i < queryResponse.fields_count; i++) {
28
+ _meta.push({
29
+ name: queryResponse.fields_names[i],
30
+ type: queryResponse.fields_types[i],
31
+ length: queryResponse.fields_lengths[i]
32
+ });
33
+ }
34
+ this._meta = _meta;
35
+ }
36
+ else {
37
+ throw new wsError_1.TaosResultError(wsError_1.ErrorCode.ERR_INVALID_FETCH_MESSAGE_DATA, `fields_count,fields_names,fields_types,fields_lengths of the update query response should be null`);
38
+ }
39
+ this._data = [];
40
+ }
41
+ this._affectRows = queryResponse.affected_rows;
42
+ this._timing = queryResponse.timing;
43
+ this._precision = queryResponse.precision;
44
+ this._totalTime = queryResponse.totalTime;
45
+ }
46
+ setPrecision(precision) {
47
+ this._precision = precision;
48
+ }
49
+ setRowsAndTime(rows, timing) {
50
+ if (this._affectRows) {
51
+ this._affectRows += rows;
52
+ }
53
+ else {
54
+ this._affectRows = rows;
55
+ }
56
+ if (timing) {
57
+ this.setTiming(timing);
58
+ }
59
+ }
60
+ getTopic() {
61
+ if (this._topic) {
62
+ return this._topic;
63
+ }
64
+ return "";
65
+ }
66
+ setTopic(topic = "") {
67
+ this._topic = topic;
68
+ }
69
+ getMeta() {
70
+ return this.getTDengineMeta();
71
+ }
72
+ setMeta(metaData) {
73
+ if (this._meta) {
74
+ this._meta.push(metaData);
75
+ }
76
+ }
77
+ getData() {
78
+ return this._data;
79
+ }
80
+ setData(value) {
81
+ this._data = value;
82
+ }
83
+ getAffectRows() {
84
+ return this._affectRows;
85
+ }
86
+ getTaosMeta() {
87
+ return this._meta;
88
+ }
89
+ getPrecision() {
90
+ return this._precision;
91
+ }
92
+ getTotalTime() {
93
+ return this._totalTime;
94
+ }
95
+ addTotalTime(totalTime) {
96
+ this._totalTime += totalTime;
97
+ }
98
+ setTiming(timing) {
99
+ if (!this._timing) {
100
+ this._timing = BigInt(0);
101
+ }
102
+ if (timing) {
103
+ this._timing = this._timing + timing;
104
+ }
105
+ }
106
+ /**
107
+ * Mapping the WebSocket response type code to TDengine's type name.
108
+ */
109
+ getTDengineMeta() {
110
+ if (this._meta) {
111
+ let tdMeta = new Array();
112
+ this._meta.forEach(m => {
113
+ tdMeta.push({
114
+ name: m.name,
115
+ type: constant_1.TDengineTypeName[m.type],
116
+ length: m.length
117
+ });
118
+ });
119
+ return tdMeta;
120
+ }
121
+ return null;
122
+ }
123
+ }
124
+ exports.TaosResult = TaosResult;
125
+ function parseBlock(blocks, taosResult) {
126
+ let metaList = taosResult.getTaosMeta();
127
+ let dataList = taosResult.getData();
128
+ let textDecoder = new TextDecoder();
129
+ if (metaList && dataList && blocks && blocks.data) {
130
+ let rows = blocks.data.getUint32(8, true);
131
+ if (rows == 0) {
132
+ return taosResult;
133
+ }
134
+ taosResult.setTiming(blocks.timing);
135
+ const INT_32_SIZE = 4;
136
+ // Offset num of bytes from rawBlockBuffer.
137
+ let bufferOffset = (4 * 5) + 8 + (4 + 1) * metaList.length;
138
+ let colLengthBlockSize = INT_32_SIZE * metaList.length;
139
+ log_1.default.debug("===colLengthBlockSize:" + colLengthBlockSize);
140
+ let bitMapSize = (rows + (1 << 3) - 1) >> 3;
141
+ // whole raw block ArrayBuffer
142
+ // let dataBuffer = blocks.data.slice(bufferOffset);
143
+ let headOffset = blocks.data.byteOffset + bufferOffset;
144
+ let dataView = new DataView(blocks.data.buffer, headOffset);
145
+ // record the head of column in block
146
+ let colBlockHead = 0;
147
+ for (let i = 0; i < rows; i++) {
148
+ let row = [];
149
+ // point to the head of the column in the block
150
+ colBlockHead = 0 + colLengthBlockSize;
151
+ // point to the head of columns's data in the block (include bitMap and offsetArray)
152
+ let colDataHead = colBlockHead;
153
+ // traverse row after row.
154
+ for (let j = 0; j < metaList.length; j++) {
155
+ let isVarType = _isVarType(metaList[j].type);
156
+ if (isVarType == constant_1.ColumnsBlockType.SOLID) {
157
+ colDataHead = colBlockHead + bitMapSize + metaList[j].length * i;
158
+ let byteArrayIndex = i >> 3;
159
+ let bitwiseOffset = 7 - (i & 7);
160
+ // let bitMapArr = dataBuffer.slice(colBlockHead, colBlockHead + bitMapSize)
161
+ let bitMapArr = new DataView(dataView.buffer, dataView.byteOffset + colBlockHead, bitMapSize);
162
+ let bitFlag = (bitMapArr.getUint8(byteArrayIndex) & (1 << bitwiseOffset)) >> bitwiseOffset;
163
+ if (bitFlag == 1) {
164
+ row.push("NULL");
165
+ }
166
+ else {
167
+ row.push(readSolidData(dataView, colDataHead, metaList[j]));
168
+ }
169
+ colBlockHead = colBlockHead + bitMapSize + dataView.getInt32(INT_32_SIZE * j, true);
170
+ }
171
+ else {
172
+ // if null check
173
+ let varOffset = dataView.getInt32(colBlockHead + (INT_32_SIZE * i), true);
174
+ if (varOffset == -1) {
175
+ row.push("NULL");
176
+ colBlockHead = colBlockHead + INT_32_SIZE * rows + dataView.getInt32(j * INT_32_SIZE, true);
177
+ }
178
+ else {
179
+ colDataHead = colBlockHead + INT_32_SIZE * rows + varOffset;
180
+ let dataLength = dataView.getInt16(colDataHead, true);
181
+ if (isVarType == constant_1.ColumnsBlockType.VARCHAR) {
182
+ row.push(readVarchar(dataView.buffer, dataView.byteOffset + colDataHead + 2, dataLength, textDecoder));
183
+ }
184
+ else if (isVarType == constant_1.ColumnsBlockType.GEOMETRY || isVarType == constant_1.ColumnsBlockType.VARBINARY) {
185
+ row.push(readBinary(dataView.buffer, dataView.byteOffset + colDataHead + 2, dataLength));
186
+ }
187
+ else {
188
+ row.push(readNchar(dataView.buffer, dataView.byteOffset + colDataHead + 2, dataLength));
189
+ }
190
+ colBlockHead = colBlockHead + INT_32_SIZE * rows + dataView.getInt32(j * INT_32_SIZE, true);
191
+ }
192
+ }
193
+ }
194
+ dataList.push(row);
195
+ }
196
+ return taosResult;
197
+ }
198
+ else {
199
+ throw new wsError_1.TaosResultError(wsError_1.ErrorCode.ERR_INVALID_FETCH_MESSAGE_DATA, "cannot fetch block for an update query.");
200
+ }
201
+ }
202
+ exports.parseBlock = parseBlock;
203
+ function _isVarType(metaType) {
204
+ switch (metaType) {
205
+ case constant_1.TDengineTypeCode.NCHAR: {
206
+ return constant_1.ColumnsBlockType['NCHAR'];
207
+ }
208
+ case constant_1.TDengineTypeCode.VARCHAR: {
209
+ return constant_1.ColumnsBlockType['VARCHAR'];
210
+ }
211
+ case constant_1.TDengineTypeCode.BINARY: {
212
+ return constant_1.ColumnsBlockType['VARCHAR'];
213
+ }
214
+ case constant_1.TDengineTypeCode.JSON: {
215
+ return constant_1.ColumnsBlockType['VARCHAR'];
216
+ }
217
+ case constant_1.TDengineTypeCode.GEOMETRY: {
218
+ return constant_1.ColumnsBlockType['GEOMETRY'];
219
+ }
220
+ case constant_1.TDengineTypeCode.VARBINARY: {
221
+ return constant_1.ColumnsBlockType.VARBINARY;
222
+ }
223
+ default: {
224
+ return constant_1.ColumnsBlockType['SOLID'];
225
+ }
226
+ }
227
+ }
228
+ exports._isVarType = _isVarType;
229
+ function readSolidDataToArray(dataBuffer, colBlockHead, rows, metaType, bitMapArr) {
230
+ let result = [];
231
+ switch (metaType) {
232
+ case constant_1.TDengineTypeCode.BOOL:
233
+ case constant_1.TDengineTypeCode.TINYINT:
234
+ case constant_1.TDengineTypeCode.TINYINT_UNSIGNED: {
235
+ for (let i = 0; i < rows; i++, colBlockHead++) {
236
+ if (isNull(bitMapArr, i)) {
237
+ result.push(null);
238
+ }
239
+ else {
240
+ result.push(dataBuffer.getInt8(colBlockHead));
241
+ }
242
+ }
243
+ break;
244
+ }
245
+ case constant_1.TDengineTypeCode.SMALLINT: {
246
+ for (let i = 0; i < rows; i++, colBlockHead += 2) {
247
+ if (isNull(bitMapArr, i)) {
248
+ result.push(null);
249
+ }
250
+ else {
251
+ result.push(dataBuffer.getInt16(colBlockHead, true));
252
+ }
253
+ }
254
+ break;
255
+ }
256
+ case constant_1.TDengineTypeCode.INT: {
257
+ for (let i = 0; i < rows; i++, colBlockHead += 4) {
258
+ if (isNull(bitMapArr, i)) {
259
+ result.push(null);
260
+ }
261
+ else {
262
+ result.push(dataBuffer.getInt32(colBlockHead, true));
263
+ }
264
+ }
265
+ break;
266
+ }
267
+ case constant_1.TDengineTypeCode.BIGINT: {
268
+ for (let i = 0; i < rows; i++, colBlockHead += 8) {
269
+ if (isNull(bitMapArr, i)) {
270
+ result.push(null);
271
+ }
272
+ else {
273
+ result.push(dataBuffer.getBigInt64(colBlockHead, true));
274
+ }
275
+ }
276
+ break;
277
+ }
278
+ case constant_1.TDengineTypeCode.SMALLINT_UNSIGNED: {
279
+ for (let i = 0; i < rows; i++, colBlockHead += 2) {
280
+ if (isNull(bitMapArr, i)) {
281
+ result.push(null);
282
+ }
283
+ else {
284
+ result.push(dataBuffer.getUint16(colBlockHead, true));
285
+ }
286
+ }
287
+ break;
288
+ }
289
+ case constant_1.TDengineTypeCode.INT_UNSIGNED: {
290
+ for (let i = 0; i < rows; i++, colBlockHead += 4) {
291
+ if (isNull(bitMapArr, i)) {
292
+ result.push(null);
293
+ }
294
+ else {
295
+ result.push(dataBuffer.getUint32(colBlockHead, true));
296
+ }
297
+ }
298
+ break;
299
+ }
300
+ case constant_1.TDengineTypeCode.BIGINT_UNSIGNED: {
301
+ for (let i = 0; i < rows; i++, colBlockHead += 8) {
302
+ if (isNull(bitMapArr, i)) {
303
+ result.push(null);
304
+ }
305
+ else {
306
+ result.push(dataBuffer.getBigUint64(colBlockHead, true));
307
+ }
308
+ }
309
+ break;
310
+ }
311
+ case constant_1.TDengineTypeCode.FLOAT: {
312
+ for (let i = 0; i < rows; i++, colBlockHead += 4) {
313
+ if (isNull(bitMapArr, i)) {
314
+ result.push(null);
315
+ }
316
+ else {
317
+ result.push(parseFloat(dataBuffer.getFloat32(colBlockHead, true).toFixed(5)));
318
+ }
319
+ }
320
+ break;
321
+ }
322
+ case constant_1.TDengineTypeCode.DOUBLE: {
323
+ for (let i = 0; i < rows; i++, colBlockHead += 8) {
324
+ if (isNull(bitMapArr, i)) {
325
+ result.push(null);
326
+ }
327
+ else {
328
+ result.push(parseFloat(dataBuffer.getFloat64(colBlockHead, true).toFixed(15)));
329
+ }
330
+ }
331
+ break;
332
+ }
333
+ case constant_1.TDengineTypeCode.TIMESTAMP: {
334
+ for (let i = 0; i < rows; i++, colBlockHead += 8) {
335
+ if (isNull(bitMapArr, i)) {
336
+ result.push(null);
337
+ }
338
+ else {
339
+ result.push(dataBuffer.getBigInt64(colBlockHead, true));
340
+ }
341
+ }
342
+ break;
343
+ }
344
+ default: {
345
+ throw new wsError_1.WebSocketQueryInterFaceError(wsError_1.ErrorCode.ERR_UNSUPPORTED_TDENGINE_TYPE, `unspported type ${metaType}`);
346
+ }
347
+ }
348
+ return result;
349
+ }
350
+ exports.readSolidDataToArray = readSolidDataToArray;
351
+ function readSolidData(dataBuffer, colDataHead, meta) {
352
+ switch (meta.type) {
353
+ case constant_1.TDengineTypeCode.BOOL: {
354
+ return (Boolean)(dataBuffer.getInt8(colDataHead));
355
+ }
356
+ case constant_1.TDengineTypeCode.TINYINT: {
357
+ return dataBuffer.getInt8(colDataHead);
358
+ }
359
+ case constant_1.TDengineTypeCode.SMALLINT: {
360
+ return dataBuffer.getInt16(colDataHead, true);
361
+ }
362
+ case constant_1.TDengineTypeCode.INT: {
363
+ return dataBuffer.getInt32(colDataHead, true);
364
+ }
365
+ case constant_1.TDengineTypeCode.BIGINT: {
366
+ return dataBuffer.getBigInt64(colDataHead, true);
367
+ }
368
+ case constant_1.TDengineTypeCode.TINYINT_UNSIGNED: {
369
+ return dataBuffer.getUint8(colDataHead);
370
+ }
371
+ case constant_1.TDengineTypeCode.SMALLINT_UNSIGNED: {
372
+ return dataBuffer.getUint16(colDataHead, true);
373
+ }
374
+ case constant_1.TDengineTypeCode.INT_UNSIGNED: {
375
+ return dataBuffer.getUint32(colDataHead, true);
376
+ }
377
+ case constant_1.TDengineTypeCode.BIGINT_UNSIGNED: {
378
+ return dataBuffer.getBigUint64(colDataHead, true);
379
+ }
380
+ case constant_1.TDengineTypeCode.FLOAT: {
381
+ return parseFloat(dataBuffer.getFloat32(colDataHead, true).toFixed(5));
382
+ }
383
+ case constant_1.TDengineTypeCode.DOUBLE: {
384
+ return parseFloat(dataBuffer.getFloat64(colDataHead, true).toFixed(15));
385
+ }
386
+ case constant_1.TDengineTypeCode.TIMESTAMP: {
387
+ return dataBuffer.getBigInt64(colDataHead, true);
388
+ // could change
389
+ }
390
+ default: {
391
+ throw new wsError_1.WebSocketQueryInterFaceError(wsError_1.ErrorCode.ERR_UNSUPPORTED_TDENGINE_TYPE, `unspported type ${meta.type} for column ${meta.name}`);
392
+ }
393
+ }
394
+ }
395
+ exports.readSolidData = readSolidData;
396
+ function readBinary(dataBuffer, colDataHead, length) {
397
+ let buff = dataBuffer.slice(colDataHead, colDataHead + length);
398
+ return buff;
399
+ }
400
+ exports.readBinary = readBinary;
401
+ function readVarchar(dataBuffer, colDataHead, length, textDecoder) {
402
+ // let buff = dataBuffer.slice(colDataHead, colDataHead + length)
403
+ let dataView = new DataView(dataBuffer, colDataHead, length);
404
+ return textDecoder.decode(dataView);
405
+ }
406
+ exports.readVarchar = readVarchar;
407
+ function readNchar(dataBuffer, colDataHead, length) {
408
+ let data = [];
409
+ // let buff: ArrayBuffer = dataBuffer.slice(colDataHead, colDataHead + length);
410
+ let dataView = new DataView(dataBuffer, colDataHead, length);
411
+ for (let i = 0; i < length / 4; i++) {
412
+ data.push((0, ut8Helper_1.appendRune)(dataView.getUint32(i * 4, true)));
413
+ }
414
+ return data.join('');
415
+ }
416
+ exports.readNchar = readNchar;
417
+ function getString(dataBuffer, colDataHead, length, textDecoder) {
418
+ // let buff = dataBuffer.slice(colDataHead, colDataHead + length - 1)
419
+ let dataView = new Uint8Array(dataBuffer.buffer, dataBuffer.byteOffset + colDataHead, length - 1);
420
+ return textDecoder.decode(dataView);
421
+ }
422
+ exports.getString = getString;
423
+ function iteratorBuff(arr) {
424
+ let buf = Buffer.from(arr);
425
+ for (const value of buf) {
426
+ log_1.default.debug(value.toString());
427
+ }
428
+ }
429
+ function isNull(bitMapArr, n) {
430
+ let c = new Uint8Array(bitMapArr);
431
+ let position = n >>> 3;
432
+ let index = n & 0x7;
433
+ return (c[position] & (1 << (7 - index))) == (1 << (7 - index));
434
+ }
435
+ function getCharOffset(n) {
436
+ return n >> 3;
437
+ }
438
+ exports.getCharOffset = getCharOffset;
439
+ function setBitmapNull(c, n) {
440
+ return c + (1 << (7 - bitPos(n)));
441
+ }
442
+ exports.setBitmapNull = setBitmapNull;
443
+ function bitPos(n) {
444
+ return n & ((1 << 3) - 1);
445
+ }
446
+ function bitmapLen(n) {
447
+ return ((n) + ((1 << 3) - 1)) >> 3;
448
+ }
449
+ exports.bitmapLen = bitmapLen;
@@ -0,0 +1,2 @@
1
+ export declare function appendRune(r: any): string;
2
+ //# sourceMappingURL=ut8Helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ut8Helper.d.ts","sourceRoot":"","sources":["../../../src/common/ut8Helper.ts"],"names":[],"mappings":"AAsBA,wBAAgB,UAAU,CAAC,CAAC,EAAC,GAAG,UAiB/B"}
@@ -1,42 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendRune = void 0;
1
4
  // Numbers fundamental to the encoding.
2
5
  // the "error" Rune or "Unicode replacement character"
3
- const RuneError = '\uFFFD'
6
+ const RuneError = '\uFFFD';
4
7
  // Maximum valid Unicode code point.
5
- const MaxRune = '\U0010FFFF'
8
+ const MaxRune = '\U0010FFFF';
6
9
  // Code points in the surrogate range are not valid for UTF-8.
7
- const surrogateMin = 0xD800
8
- const surrogateMax = 0xDFFF
10
+ const surrogateMin = 0xD800;
11
+ const surrogateMax = 0xDFFF;
9
12
  const tx = 128;
10
13
  const t2 = 192;
11
14
  const t3 = 224;
12
15
  const t4 = 240;
13
16
  const maskx = 63;
14
17
  const rune1Max = (1 << 7) - 1;
15
-
16
18
  const rune2Max = (1 << 11) - 1;
17
19
  const rune3Max = (1 << 16) - 1;
18
-
19
-
20
20
  // AppendRune appends the UTF-8 encoding of r to the end of p and
21
21
  // returns the extended buffer. If the rune is out of range,
22
22
  // it appends the encoding of RuneError.
23
- export function AppendRune(r:any) {
24
- let p:Array<any> = [];
25
- // console.log("== AppendRun r:");
26
- // console.log(r)
23
+ function appendRune(r) {
24
+ let p = [];
27
25
  if (r <= rune1Max) {
28
- p.push(r & 0xff);
26
+ p.push(r & 0xff);
29
27
  return Buffer.from(p).toString();
30
28
  }
31
29
  if (r <= rune2Max) {
32
- p.push(t2 | ((r >> 6) & 0xff), tx | (r & 0xff) & maskx)
33
- } else if ((r > MaxRune) || (surrogateMax <= r && r <= surrogateMax)) {
34
- p.push(RuneError)
35
- } else if (r <= rune3Max) {
36
- p.push(t3 | ((r >> 12) & 0xff), tx | ((r >> 6) & 0xff) & maskx, tx | (r & 0xff) & maskx)
37
- } else {
38
- p.push(t4 | ((r >> 18) & 0xff), tx | ((r >> 12) & 0xff) & maskx, tx | ((r >> 6) & 0xff) & maskx, tx | (r & 0xff) & maskx)
30
+ p.push(t2 | ((r >> 6) & 0xff), tx | (r & 0xff) & maskx);
31
+ }
32
+ else if ((r > MaxRune) || (surrogateMax <= r && r <= surrogateMax)) {
33
+ p.push(RuneError);
34
+ }
35
+ else if (r <= rune3Max) {
36
+ p.push(t3 | ((r >> 12) & 0xff), tx | ((r >> 6) & 0xff) & maskx, tx | (r & 0xff) & maskx);
37
+ }
38
+ else {
39
+ p.push(t4 | ((r >> 18) & 0xff), tx | ((r >> 12) & 0xff) & maskx, tx | ((r >> 6) & 0xff) & maskx, tx | (r & 0xff) & maskx);
39
40
  }
40
-
41
41
  return Buffer.from(p).toString();
42
- }
42
+ }
43
+ exports.appendRune = appendRune;
@@ -0,0 +1,7 @@
1
+ import { WSConfig } from "./config";
2
+ export declare function getUrl(wsConfig: WSConfig): URL;
3
+ export declare function sleep(ms: number): Promise<void>;
4
+ export declare function isEmpty(value: any): boolean;
5
+ export declare function getBinarySql(action: bigint, reqId: bigint, resultId: bigint, sql?: string): ArrayBuffer;
6
+ export declare function zigzagDecode(n: number): number;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/common/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,wBAAgB,MAAM,CAAC,QAAQ,EAAC,QAAQ,GAAE,GAAG,CAe5C;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAGD,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAM3C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,EAAE,GAAG,CAAC,EAAC,MAAM,GAAG,WAAW,CA6BnG;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zigzagDecode = exports.getBinarySql = exports.isEmpty = exports.sleep = exports.getUrl = void 0;
4
+ function getUrl(wsConfig) {
5
+ let url = new URL(wsConfig.getUrl());
6
+ if (wsConfig.getUser()) {
7
+ url.username = wsConfig.getUser() || '';
8
+ }
9
+ if (wsConfig.getPwd()) {
10
+ url.password = wsConfig.getPwd() || '';
11
+ }
12
+ let token = wsConfig.getToken();
13
+ if (token) {
14
+ url.searchParams.set("token", token);
15
+ }
16
+ url.pathname = '/ws';
17
+ return url;
18
+ }
19
+ exports.getUrl = getUrl;
20
+ function sleep(ms) {
21
+ return new Promise(resolve => setTimeout(resolve, ms));
22
+ }
23
+ exports.sleep = sleep;
24
+ function isEmpty(value) {
25
+ if (value === null || value === undefined)
26
+ return true;
27
+ // if (typeof value === 'string' && value.trim() === '') return true;
28
+ if (Array.isArray(value) && value.length === 0)
29
+ return true;
30
+ // if (typeof value === 'object' && Object.keys(value).length === 0) return true;
31
+ return false;
32
+ }
33
+ exports.isEmpty = isEmpty;
34
+ function getBinarySql(action, reqId, resultId, sql) {
35
+ // construct msg
36
+ if (sql) {
37
+ const encoder = new TextEncoder();
38
+ const buffer = encoder.encode(sql);
39
+ let messageLen = 30 + buffer.length;
40
+ let sqlBuffer = new ArrayBuffer(messageLen);
41
+ let sqlView = new DataView(sqlBuffer);
42
+ sqlView.setBigUint64(0, reqId, true);
43
+ sqlView.setBigInt64(8, resultId, true);
44
+ sqlView.setBigInt64(16, action, true);
45
+ sqlView.setInt16(24, 1, true);
46
+ sqlView.setInt32(26, buffer.length, true);
47
+ let offset = 30;
48
+ for (let i = 0; i < buffer.length; i++) {
49
+ sqlView.setUint8(offset + i, buffer[i]);
50
+ }
51
+ return sqlBuffer;
52
+ }
53
+ let messageLen = 26;
54
+ let sqlBuffer = new ArrayBuffer(messageLen);
55
+ let sqlView = new DataView(sqlBuffer);
56
+ sqlView.setBigUint64(0, reqId, true);
57
+ sqlView.setBigInt64(8, resultId, true);
58
+ sqlView.setBigInt64(16, action, true);
59
+ sqlView.setInt16(24, 1, true);
60
+ return sqlBuffer;
61
+ }
62
+ exports.getBinarySql = getBinarySql;
63
+ function zigzagDecode(n) {
64
+ return (n >> 1) ^ (-(n & 1));
65
+ }
66
+ exports.zigzagDecode = zigzagDecode;
@@ -0,0 +1,29 @@
1
+ export declare class TDWebSocketClientError extends Error {
2
+ code: number;
3
+ constructor(code: number, message?: string);
4
+ }
5
+ export declare class WebSocketQueryError extends TDWebSocketClientError {
6
+ }
7
+ export declare class WebSocketInterfaceError extends TDWebSocketClientError {
8
+ }
9
+ export declare class WebSocketQueryInterFaceError extends WebSocketInterfaceError {
10
+ }
11
+ export declare class TaosResultError extends TDWebSocketClientError {
12
+ }
13
+ export declare class TaosError extends TDWebSocketClientError {
14
+ }
15
+ export declare enum ErrorCode {
16
+ ERR_INVALID_PARAMS = 100,
17
+ ERR_INVALID_URL = 101,
18
+ ERR_WS_NO_CALLBACK = 102,
19
+ ERR_INVALID_MESSAGE_TYPE = 103,
20
+ ERR_WEBSOCKET_CONNECTION_FAIL = 104,
21
+ ERR_WEBSOCKET_QUERY_TIMEOUT = 105,
22
+ ERR_INVALID_AUTHENTICATION = 106,
23
+ ERR_UNSUPPORTED_TDENGINE_TYPE = 107,
24
+ ERR_CONNECTION_CLOSED = 108,
25
+ ERR_INVALID_FETCH_MESSAGE_DATA = 109,
26
+ ERR_WEBSOCKET_CONNECTION_ARRIVED_LIMIT = 110,
27
+ ERR_PARTITIONS_TOPIC_VGROUP_LENGTH_NOT_EQUAL = 111
28
+ }
29
+ //# sourceMappingURL=wsError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsError.d.ts","sourceRoot":"","sources":["../../../src/common/wsError.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;IAC7C,IAAI,EAAC,MAAM,CAAK;gBACJ,IAAI,EAAC,MAAM,EAAE,OAAO,GAAE,MAAW;CAahD;AACD,qBAAa,mBAAoB,SAAQ,sBAAsB;CAAI;AACnE,qBAAa,uBAAwB,SAAQ,sBAAsB;CAAG;AACtE,qBAAa,4BAA6B,SAAQ,uBAAuB;CAAE;AAC3E,qBAAa,eAAgB,SAAQ,sBAAsB;CAAE;AAC7D,qBAAa,SAAU,SAAQ,sBAAsB;CAAE;AAEvD,oBAAY,SAAS;IACjB,kBAAkB,MAAM;IACxB,eAAe,MAAM;IACrB,kBAAkB,MAAM;IACxB,wBAAwB,MAAM;IAC9B,6BAA6B,MAAM;IACnC,2BAA2B,MAAM;IACjC,0BAA0B,MAAM;IAChC,6BAA6B,MAAM;IACnC,qBAAqB,MAAM;IAC3B,8BAA8B,MAAM;IACpC,sCAAsC,MAAM;IAC5C,4CAA4C,MAAM;CAErD"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorCode = exports.TaosError = exports.TaosResultError = exports.WebSocketQueryInterFaceError = exports.WebSocketInterfaceError = exports.WebSocketQueryError = exports.TDWebSocketClientError = void 0;
4
+ class TDWebSocketClientError extends Error {
5
+ constructor(code, message = '') {
6
+ super(message);
7
+ this.code = 0;
8
+ this.name = new.target.name;
9
+ this.code = code;
10
+ if (typeof Error.captureStackTrace === 'function') {
11
+ Error.captureStackTrace(this, new.target);
12
+ }
13
+ if (typeof Object.setPrototypeOf === 'function') {
14
+ Object.setPrototypeOf(this, new.target.prototype);
15
+ }
16
+ else {
17
+ this.__proto__ = new.target.prototype;
18
+ }
19
+ }
20
+ }
21
+ exports.TDWebSocketClientError = TDWebSocketClientError;
22
+ class WebSocketQueryError extends TDWebSocketClientError {
23
+ }
24
+ exports.WebSocketQueryError = WebSocketQueryError;
25
+ class WebSocketInterfaceError extends TDWebSocketClientError {
26
+ }
27
+ exports.WebSocketInterfaceError = WebSocketInterfaceError;
28
+ class WebSocketQueryInterFaceError extends WebSocketInterfaceError {
29
+ }
30
+ exports.WebSocketQueryInterFaceError = WebSocketQueryInterFaceError;
31
+ class TaosResultError extends TDWebSocketClientError {
32
+ }
33
+ exports.TaosResultError = TaosResultError;
34
+ class TaosError extends TDWebSocketClientError {
35
+ }
36
+ exports.TaosError = TaosError;
37
+ var ErrorCode;
38
+ (function (ErrorCode) {
39
+ ErrorCode[ErrorCode["ERR_INVALID_PARAMS"] = 100] = "ERR_INVALID_PARAMS";
40
+ ErrorCode[ErrorCode["ERR_INVALID_URL"] = 101] = "ERR_INVALID_URL";
41
+ ErrorCode[ErrorCode["ERR_WS_NO_CALLBACK"] = 102] = "ERR_WS_NO_CALLBACK";
42
+ ErrorCode[ErrorCode["ERR_INVALID_MESSAGE_TYPE"] = 103] = "ERR_INVALID_MESSAGE_TYPE";
43
+ ErrorCode[ErrorCode["ERR_WEBSOCKET_CONNECTION_FAIL"] = 104] = "ERR_WEBSOCKET_CONNECTION_FAIL";
44
+ ErrorCode[ErrorCode["ERR_WEBSOCKET_QUERY_TIMEOUT"] = 105] = "ERR_WEBSOCKET_QUERY_TIMEOUT";
45
+ ErrorCode[ErrorCode["ERR_INVALID_AUTHENTICATION"] = 106] = "ERR_INVALID_AUTHENTICATION";
46
+ ErrorCode[ErrorCode["ERR_UNSUPPORTED_TDENGINE_TYPE"] = 107] = "ERR_UNSUPPORTED_TDENGINE_TYPE";
47
+ ErrorCode[ErrorCode["ERR_CONNECTION_CLOSED"] = 108] = "ERR_CONNECTION_CLOSED";
48
+ ErrorCode[ErrorCode["ERR_INVALID_FETCH_MESSAGE_DATA"] = 109] = "ERR_INVALID_FETCH_MESSAGE_DATA";
49
+ ErrorCode[ErrorCode["ERR_WEBSOCKET_CONNECTION_ARRIVED_LIMIT"] = 110] = "ERR_WEBSOCKET_CONNECTION_ARRIVED_LIMIT";
50
+ ErrorCode[ErrorCode["ERR_PARTITIONS_TOPIC_VGROUP_LENGTH_NOT_EQUAL"] = 111] = "ERR_PARTITIONS_TOPIC_VGROUP_LENGTH_NOT_EQUAL";
51
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));