@tdengine/websocket 3.2.1 → 3.2.3

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 (80) hide show
  1. package/lib/package.json +64 -0
  2. package/lib/src/client/retryConfig.d.ts +10 -0
  3. package/lib/src/client/retryConfig.d.ts.map +1 -0
  4. package/lib/src/client/retryConfig.js +46 -0
  5. package/lib/src/client/wsClient.d.ts +1 -0
  6. package/lib/src/client/wsClient.d.ts.map +1 -1
  7. package/lib/src/client/wsClient.js +31 -19
  8. package/lib/src/client/wsConnector.d.ts.map +1 -1
  9. package/lib/src/client/wsConnector.js +12 -11
  10. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  11. package/lib/src/client/wsConnectorPool.js +13 -16
  12. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  13. package/lib/src/client/wsResponse.d.ts +0 -3
  14. package/lib/src/client/wsResponse.d.ts.map +1 -1
  15. package/lib/src/client/wsResponse.js +0 -3
  16. package/lib/src/common/config.d.ts +3 -0
  17. package/lib/src/common/config.d.ts.map +1 -1
  18. package/lib/src/common/config.js +6 -0
  19. package/lib/src/common/constant.d.ts +1 -0
  20. package/lib/src/common/constant.d.ts.map +1 -1
  21. package/lib/src/common/constant.js +6 -1
  22. package/lib/src/common/dsn.d.ts +18 -0
  23. package/lib/src/common/dsn.d.ts.map +1 -0
  24. package/lib/src/common/dsn.js +152 -0
  25. package/lib/src/common/taosResult.d.ts.map +1 -1
  26. package/lib/src/common/utils.d.ts +4 -0
  27. package/lib/src/common/utils.d.ts.map +1 -1
  28. package/lib/src/common/utils.js +54 -3
  29. package/lib/src/index.d.ts.map +1 -1
  30. package/lib/src/sql/wsSql.d.ts.map +1 -1
  31. package/lib/src/sql/wsSql.js +0 -3
  32. package/lib/src/tmq/config.d.ts +1 -0
  33. package/lib/src/tmq/config.d.ts.map +1 -1
  34. package/lib/src/tmq/config.js +18 -1
  35. package/lib/src/tmq/constant.d.ts +4 -0
  36. package/lib/src/tmq/constant.d.ts.map +1 -1
  37. package/lib/src/tmq/constant.js +4 -0
  38. package/lib/src/tmq/tmqResponse.d.ts.map +1 -1
  39. package/lib/src/tmq/tmqResponse.js +1 -4
  40. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  41. package/lib/src/tmq/wsTmq.js +10 -5
  42. package/lib/test/bulkPulling/cloud.tmq.test.js +3 -2
  43. package/lib/test/bulkPulling/decimal.test.js +8 -8
  44. package/lib/test/bulkPulling/dsn.test.d.ts +2 -0
  45. package/lib/test/bulkPulling/dsn.test.d.ts.map +1 -0
  46. package/lib/test/bulkPulling/dsn.test.js +378 -0
  47. package/lib/test/bulkPulling/queryTables.test.js +1 -1
  48. package/lib/test/bulkPulling/retryConfig.test.d.ts +2 -0
  49. package/lib/test/bulkPulling/retryConfig.test.d.ts.map +1 -0
  50. package/lib/test/bulkPulling/retryConfig.test.js +34 -0
  51. package/lib/test/bulkPulling/schemaless.test.js +15 -14
  52. package/lib/test/bulkPulling/sql.test.js +116 -44
  53. package/lib/test/bulkPulling/stmt1.func.test.js +31 -30
  54. package/lib/test/bulkPulling/stmt1.type.test.js +1 -1
  55. package/lib/test/bulkPulling/stmt2.func.test.js +37 -36
  56. package/lib/test/bulkPulling/stmt2.type.test.js +1 -1
  57. package/lib/test/bulkPulling/tmq.config.test.d.ts +2 -0
  58. package/lib/test/bulkPulling/tmq.config.test.d.ts.map +1 -0
  59. package/lib/test/bulkPulling/tmq.config.test.js +77 -0
  60. package/lib/test/bulkPulling/tmq.test.js +135 -14
  61. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts +2 -0
  62. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts.map +1 -0
  63. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +184 -0
  64. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts +2 -0
  65. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts.map +1 -0
  66. package/lib/test/bulkPulling/wsConfig.dsn.test.js +37 -0
  67. package/lib/test/bulkPulling/wsConnectPool.test.js +7 -7
  68. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts +2 -0
  69. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts.map +1 -0
  70. package/lib/test/bulkPulling/wsConnector.failover.test.js +128 -0
  71. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts +2 -0
  72. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts.map +1 -0
  73. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +50 -0
  74. package/lib/test/bulkPulling/wsEventCallback.test.d.ts +2 -0
  75. package/lib/test/bulkPulling/wsEventCallback.test.d.ts.map +1 -0
  76. package/lib/test/bulkPulling/wsEventCallback.test.js +54 -0
  77. package/lib/test/utils.d.ts +4 -0
  78. package/lib/test/utils.d.ts.map +1 -1
  79. package/lib/test/utils.js +11 -17
  80. package/package.json +1 -1
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const retryConfig_1 = require("../../src/client/retryConfig");
4
+ const wsConnector_1 = require("../../src/client/wsConnector");
5
+ function createBareConnector() {
6
+ const connector = Object.create(wsConnector_1.WebSocketConnector.prototype);
7
+ connector._timeout = 5000;
8
+ connector._addresses = [
9
+ { host: "host1", port: 6041 },
10
+ { host: "host2", port: 6042 },
11
+ ];
12
+ connector._currentAddressIndex = 0;
13
+ connector._retryConfig = new retryConfig_1.RetryConfig(1, 1, 8);
14
+ connector._reconnectLock = null;
15
+ connector._isReconnecting = false;
16
+ connector._inflightRequests = new Map();
17
+ connector._wsConn = {
18
+ readyState: 1,
19
+ send: jest.fn(),
20
+ close: jest.fn(),
21
+ };
22
+ return connector;
23
+ }
24
+ function buildBinaryMessage(action) {
25
+ const buffer = new ArrayBuffer(26);
26
+ const view = new DataView(buffer);
27
+ view.setBigInt64(16, action, true);
28
+ return buffer;
29
+ }
30
+ function delay(ms) {
31
+ return new Promise((resolve) => setTimeout(resolve, ms));
32
+ }
33
+ describe("WebSocketConnector failover and retry", () => {
34
+ afterEach(() => {
35
+ jest.restoreAllMocks();
36
+ });
37
+ test("deduplicates concurrent reconnect triggers with reconnect lock", async () => {
38
+ const connector = createBareConnector();
39
+ const reconnectImpl = jest.fn(async () => {
40
+ await delay(20);
41
+ });
42
+ connector._doReconnect = reconnectImpl;
43
+ await Promise.all([
44
+ connector.triggerReconnect(),
45
+ connector.triggerReconnect(),
46
+ connector.triggerReconnect(),
47
+ ]);
48
+ expect(reconnectImpl).toHaveBeenCalledTimes(1);
49
+ });
50
+ test("switches to next address after retries are exhausted", async () => {
51
+ const connector = createBareConnector();
52
+ const attempts = [];
53
+ connector.sleep = jest.fn(async () => { });
54
+ connector.reconnectToCurrentAddress = jest.fn(async () => {
55
+ const current = connector._addresses[connector._currentAddressIndex];
56
+ const addr = `${current.host}:${current.port}`;
57
+ attempts.push(addr);
58
+ if (addr === "host1:6041") {
59
+ throw new Error("host1 down");
60
+ }
61
+ });
62
+ await connector.attemptReconnect();
63
+ expect(attempts).toEqual([
64
+ "host1:6041",
65
+ "host1:6041",
66
+ "host2:6042",
67
+ ]);
68
+ expect(connector._currentAddressIndex).toBe(1);
69
+ });
70
+ test("keeps retriable string request inflight when send throws", async () => {
71
+ const connector = createBareConnector();
72
+ connector._wsConn.send = jest.fn(() => {
73
+ throw new Error("send failed");
74
+ });
75
+ const pending = connector.sendMsg(JSON.stringify({
76
+ action: "insert",
77
+ args: {
78
+ req_id: 101,
79
+ },
80
+ }), false);
81
+ void pending.catch(() => { });
82
+ const state = await Promise.race([
83
+ pending.then(() => "resolved").catch(() => "rejected"),
84
+ delay(20).then(() => "pending"),
85
+ ]);
86
+ expect(state).toBe("pending");
87
+ expect(connector._inflightRequests.has(101n)).toBe(true);
88
+ connector.failAllInflightRequests(new Error("cleanup"));
89
+ });
90
+ test("rejects non-retriable string request immediately when send throws", async () => {
91
+ const connector = createBareConnector();
92
+ connector._wsConn.send = jest.fn(() => {
93
+ throw new Error("send failed");
94
+ });
95
+ await expect(connector.sendMsg(JSON.stringify({
96
+ action: "query",
97
+ args: {
98
+ req_id: 102,
99
+ },
100
+ }), false)).rejects.toThrow("send failed");
101
+ expect(connector._inflightRequests.has(102n)).toBe(false);
102
+ });
103
+ test("keeps retriable binary request inflight when send throws", async () => {
104
+ const connector = createBareConnector();
105
+ connector._wsConn.send = jest.fn(() => {
106
+ throw new Error("send failed");
107
+ });
108
+ const message = buildBinaryMessage(6n);
109
+ const pending = connector.sendBinaryMsg(201n, "binary_query", message, false);
110
+ void pending.catch(() => { });
111
+ const state = await Promise.race([
112
+ pending.then(() => "resolved").catch(() => "rejected"),
113
+ delay(20).then(() => "pending"),
114
+ ]);
115
+ expect(state).toBe("pending");
116
+ expect(connector._inflightRequests.has(201n)).toBe(true);
117
+ connector.failAllInflightRequests(new Error("cleanup"));
118
+ });
119
+ test("rejects non-retriable binary request immediately when send throws", async () => {
120
+ const connector = createBareConnector();
121
+ connector._wsConn.send = jest.fn(() => {
122
+ throw new Error("send failed");
123
+ });
124
+ const message = buildBinaryMessage(7n);
125
+ await expect(connector.sendBinaryMsg(202n, "fetch", message, false)).rejects.toThrow("send failed");
126
+ expect(connector._inflightRequests.has(202n)).toBe(false);
127
+ });
128
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wsConnectorPool.key.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsConnectorPool.key.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/wsConnectorPool.key.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
4
+ const dsn_1 = require("../../src/common/dsn");
5
+ function resetPoolSingleton() {
6
+ const PoolClass = wsConnectorPool_1.WebSocketConnectionPool;
7
+ if (PoolClass._instance) {
8
+ PoolClass._instance.destroyed();
9
+ PoolClass._instance = undefined;
10
+ }
11
+ }
12
+ describe("WebSocketConnectionPool key generation", () => {
13
+ beforeEach(() => {
14
+ resetPoolSingleton();
15
+ });
16
+ afterEach(() => {
17
+ resetPoolSingleton();
18
+ });
19
+ test("normalizes address order when generating pool key", () => {
20
+ const pool = wsConnectorPool_1.WebSocketConnectionPool.instance();
21
+ const dsnA = (0, dsn_1.parse)("ws://root:taosdata@host2:6042,host1:6041/mydb?timezone=UTC&token=abc");
22
+ const dsnB = (0, dsn_1.parse)("ws://root:taosdata@host1:6041,host2:6042/mydb?token=abc&timezone=UTC");
23
+ const keyA = pool.getPoolKey(dsnA, "ws");
24
+ const keyB = pool.getPoolKey(dsnB, "ws");
25
+ expect(keyA).toBe(keyB);
26
+ });
27
+ test("isolates connections for different auth identities", () => {
28
+ const pool = wsConnectorPool_1.WebSocketConnectionPool.instance();
29
+ const dsnUserA = (0, dsn_1.parse)("ws://root:taosdata@host1:6041/mydb");
30
+ const dsnUserB = (0, dsn_1.parse)("ws://admin:taosdata@host1:6041/mydb");
31
+ const keyA = pool.getPoolKey(dsnUserA, "ws");
32
+ const keyB = pool.getPoolKey(dsnUserB, "ws");
33
+ expect(keyA).not.toBe(keyB);
34
+ });
35
+ test("isolates connections for different token values", () => {
36
+ const pool = wsConnectorPool_1.WebSocketConnectionPool.instance();
37
+ const dsnA = (0, dsn_1.parse)("ws://host1:6041/mydb?token=token-a");
38
+ const dsnB = (0, dsn_1.parse)("ws://host1:6041/mydb?token=token-b");
39
+ const keyA = pool.getPoolKey(dsnA, "ws");
40
+ const keyB = pool.getPoolKey(dsnB, "ws");
41
+ expect(keyA).not.toBe(keyB);
42
+ });
43
+ test("includes websocket path in the pool key scope", () => {
44
+ const pool = wsConnectorPool_1.WebSocketConnectionPool.instance();
45
+ const dsn = (0, dsn_1.parse)("ws://root:taosdata@host1:6041/mydb");
46
+ const sqlKey = pool.getPoolKey(dsn, "ws");
47
+ const tmqKey = pool.getPoolKey(dsn, "rest/tmq");
48
+ expect(sqlKey).not.toBe(tmqKey);
49
+ });
50
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wsEventCallback.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsEventCallback.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/wsEventCallback.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wsEventCallback_1 = require("../../src/client/wsEventCallback");
4
+ function resetCallbackRegistry() {
5
+ const CallbackClass = wsEventCallback_1.WsEventCallback;
6
+ CallbackClass._msgActionRegister = new Map();
7
+ }
8
+ describe("WsEventCallback lifecycle", () => {
9
+ beforeEach(() => {
10
+ resetCallbackRegistry();
11
+ });
12
+ afterEach(() => {
13
+ resetCallbackRegistry();
14
+ jest.restoreAllMocks();
15
+ });
16
+ test("clears timeout when callback is matched", async () => {
17
+ const callback = wsEventCallback_1.WsEventCallback.instance();
18
+ const resolve = jest.fn();
19
+ const reject = jest.fn();
20
+ const clearSpy = jest.spyOn(global, "clearTimeout");
21
+ await callback.registerCallback({
22
+ action: "insert",
23
+ req_id: 11n,
24
+ timeout: 2000,
25
+ }, resolve, reject);
26
+ await callback.handleEventCallback({
27
+ action: "insert",
28
+ req_id: 11n,
29
+ }, wsEventCallback_1.OnMessageType.MESSAGE_TYPE_STRING, {
30
+ action: "insert",
31
+ req_id: 11n,
32
+ code: 0,
33
+ });
34
+ expect(resolve).toHaveBeenCalledTimes(1);
35
+ expect(reject).not.toHaveBeenCalled();
36
+ expect(clearSpy).toHaveBeenCalled();
37
+ expect(wsEventCallback_1.WsEventCallback._msgActionRegister.size).toBe(0);
38
+ });
39
+ test("unregisterCallback removes entry and clears its timeout", async () => {
40
+ const callback = wsEventCallback_1.WsEventCallback.instance();
41
+ const resolve = jest.fn();
42
+ const reject = jest.fn();
43
+ const clearSpy = jest.spyOn(global, "clearTimeout");
44
+ await callback.registerCallback({
45
+ action: "options_connection",
46
+ req_id: 22n,
47
+ timeout: 2000,
48
+ id: 22n,
49
+ }, resolve, reject);
50
+ await callback.unregisterCallback(22n);
51
+ expect(clearSpy).toHaveBeenCalled();
52
+ expect(wsEventCallback_1.WsEventCallback._msgActionRegister.size).toBe(0);
53
+ });
54
+ });
@@ -15,4 +15,8 @@ export declare function expectStableData(rows: Array<Array<any>>, tags: Array<an
15
15
  export declare function hexToBytes(hex: string): ArrayBuffer;
16
16
  export declare function compareUint8Arrays(arr1: Uint8Array, arr2: Uint8Array): boolean;
17
17
  export declare function Sleep(ms: number): Promise<void>;
18
+ export declare function testUsername(): string;
19
+ export declare function testPassword(): string;
20
+ export declare const testEnterprise: jest.It;
21
+ export declare const testNon3360: jest.It;
18
22
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,wBAAgB,aAAa,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACf,MAAM,CAcR;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAgB,GACxB,MAAM,CAkCR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAqB7E;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,YAAY,CAsFzC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,YAAY,CAMxC,CAAC;AACF,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,YAAY,CAkEvC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AACD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK3D;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKnD;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACvB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GACjB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAMnB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAQnD;AAoBD,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,GACjB,OAAO,CAYT;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,wBAAgB,aAAa,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACf,MAAM,CAcR;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAgB,GACxB,MAAM,CAkCR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAqB7E;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,YAAY,CAsFzC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,YAAY,CAMxC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,YAAY,CAkEvC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AACD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK3D;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKnD;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACvB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GACjB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAMnB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAQnD;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,GACjB,OAAO,CAYT;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,eAAO,MAAM,cAAc,SAA2E,CAAC;AACvG,eAAO,MAAM,WAAW,SAAqE,CAAC"}
package/lib/test/utils.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.tagMeta = exports.jsonMeta = exports.tableMeta = void 0;
6
+ exports.testNon3360 = exports.testEnterprise = exports.tagMeta = exports.jsonMeta = exports.tableMeta = void 0;
7
7
  exports.getInsertBind = getInsertBind;
8
8
  exports.insertStable = insertStable;
9
9
  exports.insertNTable = insertNTable;
@@ -17,6 +17,8 @@ exports.expectStableData = expectStableData;
17
17
  exports.hexToBytes = hexToBytes;
18
18
  exports.compareUint8Arrays = compareUint8Arrays;
19
19
  exports.Sleep = Sleep;
20
+ exports.testUsername = testUsername;
21
+ exports.testPassword = testPassword;
20
22
  const log_1 = __importDefault(require("../src/common/log"));
21
23
  function getInsertBind(valuesLen, tagsLen, db, stable) {
22
24
  let sql = `insert into ? using ${db}.${stable} tags ( ?`;
@@ -289,22 +291,6 @@ function hexToBytes(hex) {
289
291
  }
290
292
  return a.buffer;
291
293
  }
292
- // export function createStmtData(varbinary:string = "ab",
293
- // geoHex:string = "0101000020E6100000000000000000F03F0000000000000040"):Array<Array<any>> {
294
- // let multi:any[][] = [
295
- // [1709183268567, 1709183268568, 1709183268569],
296
- // [10.2, 10.3, 10.4],
297
- // [292, 293, 294],
298
- // [0.32, 0.33, 0.34],
299
- // ];
300
- // let res = hexToBytes(geoHex)
301
- // let geom = Array.from(new Uint8Array(res))
302
- // multi.push([geom, geom, geom])
303
- // res = new TextEncoder().encode(varbinary)
304
- // let binary = Array.from(new Uint8Array(res))
305
- // multi.push([binary, binary, binary])
306
- // return multi
307
- // }
308
294
  function compareUint8Arrays(arr1, arr2) {
309
295
  if (arr1.length !== arr2.length) {
310
296
  log_1.default.debug(`${arr1.length} !== ${arr2.length}`);
@@ -321,3 +307,11 @@ function compareUint8Arrays(arr1, arr2) {
321
307
  function Sleep(ms) {
322
308
  return new Promise((resolve) => setTimeout(resolve, ms));
323
309
  }
310
+ function testUsername() {
311
+ return process.env.TDENGINE_TEST_USERNAME || "root";
312
+ }
313
+ function testPassword() {
314
+ return process.env.TDENGINE_TEST_PASSWORD || "taosdata";
315
+ }
316
+ exports.testEnterprise = process.env.TEST_ENTERPRISE?.toLowerCase() === "true" ? test : test.skip;
317
+ exports.testNon3360 = process.env.TEST_3360?.toLowerCase() === "true" ? test.skip : test;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdengine/websocket",
3
- "version": "3.2.1",
3
+ "version": "3.2.3",
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",