@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
@@ -1,212 +0,0 @@
1
- import { parseBlock, TaosResult } from './taosResult';
2
- import { TDWebSocketClient } from './wsClient'
3
- import { WebSocketInterfaceError, WebSocketQueryError } from './wsError'
4
- import { WSVersionResponse, WSFetchBlockResponse, WSQueryResponse, WSFetchResponse, WSConnResponse } from './wsQueryResponse'
5
- import JSONBig from 'json-bigint'
6
-
7
- export class WSInterface {
8
- private _wsQueryClient: TDWebSocketClient;
9
- private _req_id = 0;
10
- private _url;
11
-
12
- constructor(url: URL) {
13
- this.checkURL(url);
14
- this._url = url;
15
- this._wsQueryClient = new TDWebSocketClient(this._url);
16
- }
17
-
18
- connect(database?: string): Promise<WSConnResponse> {
19
-
20
- let _db = this._url.pathname.split('/')[3];
21
-
22
- if (database) {
23
- _db = database;
24
- }
25
- this._reqIDIncrement()
26
- let connMsg = {
27
- action: 'conn',
28
- args: {
29
- req_id: this._req_id,
30
- user: this._url.username,
31
- password: this._url.password,
32
- db: _db,
33
- }
34
- }
35
- // console.log(connMsg)
36
- return new Promise((resolve, reject) => {
37
- if (this._wsQueryClient.readyState() > 0) {
38
- this._wsQueryClient.sendMsg(JSON.stringify(connMsg))
39
- .then((e: any) => {
40
- if (e.code == 0) {
41
- resolve(e);
42
- } else {
43
- reject(new WebSocketQueryError(`${e.message}, code ${e.code}`))
44
- }
45
- })
46
- } else {
47
- this._wsQueryClient.Ready()
48
- .then((ws: TDWebSocketClient) => {
49
- return ws.sendMsg(JSON.stringify(connMsg))
50
- })
51
- .then((e: any) => {
52
- if (e.code == 0) {
53
- resolve(e);
54
- } else {
55
- reject(new WebSocketQueryError(`${e.message}, code ${e.code}`))
56
- }
57
- })
58
- }
59
-
60
- })
61
- }
62
-
63
- // need to construct Response.
64
- query(sql: string): Promise<WSQueryResponse> {
65
- this._reqIDIncrement()
66
- // construct msg
67
- let queryMsg = {
68
- action: 'query',
69
- args: {
70
- req_id: this._req_id,
71
- sql: sql
72
- },
73
- }
74
- return new Promise((resolve, reject) => {
75
- let jsonStr = JSON.stringify(queryMsg)
76
- // console.log("[wsQueryInterface.query.queryMsg]===>" + jsonStr)
77
- this._wsQueryClient.sendMsg(jsonStr)
78
- .then((e: any) => {
79
- if (e.code == 0) {
80
- resolve(new WSQueryResponse(e))
81
- } else {
82
- reject(new WebSocketInterfaceError(`${e.message},code ${e.code}`))
83
- }
84
- })
85
- })
86
- }
87
-
88
- getState() {
89
- return this._wsQueryClient.readyState()
90
- }
91
-
92
- fetch(res: WSQueryResponse): Promise<WSFetchResponse> {
93
- this._reqIDIncrement()
94
- let fetchMsg = {
95
- action: 'fetch',
96
- args: {
97
- req_id: this._req_id,
98
- id: res.id
99
- }
100
- }
101
- // console.log("[wsQueryInterface.fetch()]===>wsQueryResponse\n")
102
- // console.log(res)
103
- return new Promise((resolve, reject) => {
104
- let jsonStr = JSONBig.stringify(fetchMsg)
105
- // console.log("[wsQueryInterface.fetch.fetchMsg]===>" + jsonStr)
106
- this._wsQueryClient.sendMsg(jsonStr)
107
- .then((e: any) => {
108
- if (e.code == 0) {
109
- resolve(new WSFetchResponse(e))
110
- } else {
111
- reject(new WebSocketInterfaceError(`${e.message},code ${e.code}`))
112
- }
113
- }).catch(e => {
114
- reject(e)
115
- });
116
- })
117
- }
118
-
119
- fetchBlock(fetchResponse: WSFetchResponse, taosResult: TaosResult): Promise<TaosResult> {
120
- this._reqIDIncrement()
121
- let fetchBlockMsg = {
122
- action: 'fetch_block',
123
- args: {
124
- 'req_id': this._req_id,
125
- 'id': fetchResponse.id,
126
- }
127
- }
128
- return new Promise((resolve, reject) => {
129
- let jsonStr = JSONBig.stringify(fetchBlockMsg)
130
- // console.log("[wsQueryInterface.fetchBlock.fetchBlockMsg]===>" + jsonStr)
131
- this._wsQueryClient.sendMsg(jsonStr).then((e: any) => {
132
- resolve(parseBlock(fetchResponse, new WSFetchBlockResponse(e), taosResult))
133
- // if retrieve JSON then reject with message
134
- // else is binary , so parse raw block to TaosResult
135
- }).catch(e => reject(e))
136
- })
137
- }
138
-
139
- freeResult(res: WSQueryResponse) {
140
- this._reqIDIncrement()
141
- let freeResultMsg = {
142
- action: 'free_result',
143
- args: {
144
- req_id: this._req_id,
145
- id: res.id
146
- }
147
- }
148
- return new Promise((resolve, reject) => {
149
- let jsonStr = JSONBig.stringify(freeResultMsg)
150
- // console.log("[wsQueryInterface.freeResult.freeResultMsg]===>" + jsonStr)
151
- this._wsQueryClient.sendMsg(jsonStr, false).then((e: any) => {
152
- resolve(e)
153
- }).catch(e => reject(e))
154
- })
155
- }
156
-
157
- version(): Promise<string> {
158
- this._reqIDIncrement()
159
- let versionMsg = {
160
- action: 'version',
161
- args: {
162
- req_id: this._req_id
163
- }
164
- }
165
- return new Promise((resolve, reject) => {
166
- if (this._wsQueryClient.readyState() > 0) {
167
- this._wsQueryClient.sendMsg(JSONBig.stringify(versionMsg))
168
- .then((e: any) => {
169
- // console.log(e)
170
- if (e.code == 0) {
171
- resolve(new WSVersionResponse(e).version)
172
- } else {
173
- reject(new WSVersionResponse(e).message)
174
- }
175
- }).catch(e => reject(e));
176
- }
177
- this._wsQueryClient.Ready()
178
- .then((ws: TDWebSocketClient) => {
179
- return ws.sendMsg(JSONBig.stringify(versionMsg))
180
- }).then((e: any) => {
181
- // console.log(e)
182
- if (e.code == 0) {
183
- resolve(new WSVersionResponse(e).version)
184
- } else {
185
- reject(new WSVersionResponse(e).message)
186
- }
187
- }).catch(e => reject(e));
188
- })
189
- }
190
-
191
- close() {
192
- this._wsQueryClient.close();
193
- }
194
-
195
- checkURL(url: URL) {
196
- // Assert is cloud url
197
- if (!url.searchParams.has('token')) {
198
- if (!(url.username || url.password)) {
199
- throw new WebSocketInterfaceError("invalid url, password or username needed.")
200
- }
201
- }
202
- }
203
-
204
- private _reqIDIncrement() {
205
- if (this._req_id == Number.MAX_SAFE_INTEGER) {
206
- this._req_id = 0;
207
- } else {
208
- this._req_id += 1;
209
- }
210
- }
211
-
212
- }
@@ -1,112 +0,0 @@
1
- /**
2
- * define ws Response type|class, for query?
3
- */
4
-
5
-
6
- export class WSVersionResponse {
7
-
8
- version: string;
9
- code: number;
10
- message: string;
11
- action: string;
12
-
13
- constructor(msg: any) {
14
-
15
- this.version = msg.version;
16
- this.code = msg.code;
17
- this.message = msg.message;
18
- this.action = msg.action;
19
- }
20
- }
21
-
22
- export class WSQueryResponse {
23
- code: number;
24
- message: string;
25
- action: string;
26
- req_id: number;
27
- timing: bigint;
28
- id: bigint;
29
- is_update: boolean;
30
- affected_rows: number;
31
- fields_count: number | null;
32
- fields_names: Array<string> | null;
33
- fields_types: Array<number> | null;
34
- fields_lengths: Array<number> | null;
35
- precision: number;
36
-
37
- constructor(msg: any) {
38
- this.code = msg.code;
39
- this.message = msg.message;
40
- this.action = msg.action;
41
- this.req_id = msg.req_id;
42
- this.timing = BigInt(msg.timing);
43
- this.id = BigInt(msg.id);
44
- this.is_update = msg.is_update;
45
- this.affected_rows = msg.affected_rows;
46
- this.fields_count = msg.fields_count;
47
- this.fields_names = msg.fields_names;
48
- this.fields_types = msg.fields_types;
49
- this.fields_lengths = msg.fields_lengths;
50
- this.precision = msg.precision;
51
- }
52
- }
53
-
54
- export class WSFetchResponse {
55
- code: number;
56
- message: string;
57
- action: string;
58
- req_id: number;
59
- timing: bigint;
60
- id: bigint;
61
- completed: boolean;
62
- length: Array<number>;
63
- rows: number;
64
-
65
- constructor(msg: any) {
66
- this.code = msg.code;
67
- this.message = msg.message;
68
- this.action = msg.action;
69
- this.req_id = msg.req_id;
70
- this.timing = BigInt(msg.timing);
71
- this.id = BigInt(msg.id);
72
- this.completed = msg.completed;
73
- this.length = msg.length;
74
- this.rows = msg.rows;
75
- }
76
- }
77
-
78
- export class WSFetchBlockResponse {
79
-
80
- id: bigint
81
- data: ArrayBuffer
82
- timing: bigint
83
- constructor(msg: ArrayBuffer) {
84
- this.timing = new DataView(msg, 0, 8).getBigUint64(0, true)
85
- this.id = new DataView(msg, 8, 8).getBigUint64(0, true)
86
- this.data = msg.slice(16)
87
- }
88
- }
89
-
90
- interface IWSConnResponse {
91
- code: number;
92
- message: string;
93
- action: string;
94
- req_id: number;
95
- timing: bigint;
96
- }
97
-
98
- export class WSConnResponse {
99
- code: number;
100
- message: string;
101
- action: string;
102
- req_id: number;
103
- timing: bigint;
104
-
105
- constructor(msg: IWSConnResponse) {
106
- this.code = msg.code;
107
- this.message = msg.message;
108
- this.action = msg.action;
109
- this.req_id = msg.req_id;
110
- this.timing = BigInt(msg.timing);
111
- }
112
- }
Binary file
@@ -1,27 +0,0 @@
1
- // import {describe, expect, test} from '@jest/globals';
2
- import { connect } from "../../index"
3
- const DSN = 'ws://root:taosdata@127.0.0.1:6041/rest/ws'
4
- // const DSN = 'ws://root:taosdata@182.92.127.131:6041/rest/ws'
5
- var ws = connect(DSN)
6
-
7
- describe('TDWebSocket.connect() success ', () => {
8
- test('normal connect', async() => {
9
- let connRes = await ws.connect()
10
- expect(connRes.action).toBe('conn')
11
- })
12
-
13
- test.skip('connect fails with error', async() => {
14
- expect.assertions(1)
15
- try {
16
- await ws.connect("jest");
17
- }catch(e){
18
- expect(e).toMatch('Invalid database name')
19
- }
20
- })
21
-
22
- })
23
-
24
- afterEach(() => {
25
- //close websocket and clear data
26
- ws.close()
27
- })
@@ -1,274 +0,0 @@
1
- import { connect } from "../../index"
2
- // const TDWebSocket = require("../../dist/main/index.js")
3
- import { createSTable, createSTableJSON, createTable, expectStableData, insertNTable, insertStable, jsonMeta, tableMeta, tagMeta } from "../utils";
4
- const DSN = 'ws://root:taosdata@127.0.0.1:6041/rest/ws'
5
- // const DSN = 'ws://root:taosdata@182.92.127.131:6041/rest/ws'
6
- var ws = connect(DSN)
7
- const table = 'ws_q_n';
8
- const stable = 'ws_q_s';
9
- const tableCN = 'ws_q_n_cn';
10
- const stableCN = 'ws_q_s_cn';
11
- const db = 'ws_q_db'
12
- const jsonTable = 'ws_q_j';
13
- const jsonTableCN = 'ws_q_j_cn';
14
-
15
- const createDB = `create database if not exists ${db} keep 3650`
16
- const dropDB = `drop database if exists ${db}`
17
- const useDB = `use ${db}`
18
-
19
- const stableTags = [true, -1, -2, -3, BigInt(-4), 1, 2, 3, BigInt(4), parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_tag_1', 'nchar_tag_1']
20
- const stableCNTags = [false, -1 * 2, -2 * 2, -3 * 2, BigInt(-4 * 2), 1 * 2, 2 * 2, 3 * 2, BigInt(4 * 2), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_标签_壹', 'nchar_标签_贰']
21
-
22
- const tableValues = [
23
- [BigInt(1656677710000), 0, -1, -2, BigInt(-3), 0, 1, 2, BigInt(3), parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_col_1', 'nchar_col_1', true, 'NULL'],
24
- [BigInt(1656677720000), -1, -2, -3, BigInt(-4), 1, 2, 3, BigInt(4), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_col_2', 'nchar_col_2', false, 'NULL'],
25
- [BigInt(1656677730000), -2, -3, -4, BigInt(-5), 2, 3, 4, BigInt(5), parseFloat((3.1415 * 3).toFixed(5)), parseFloat((3.14159265 * 3).toFixed(15)), 'varchar_col_3', 'nchar_col_3', true, 'NULL'],
26
- [BigInt(1656677740000), -3, -4, -5, BigInt(-6), 3, 4, 5, BigInt(6), parseFloat((3.1415 * 4).toFixed(5)), parseFloat((3.14159265 * 4).toFixed(15)), 'varchar_col_4', 'nchar_col_4', false, 'NULL'],
27
- [BigInt(1656677750000), -4, -5, -6, BigInt(-7), 4, 5, 6, BigInt(7), parseFloat((3.1415 * 5).toFixed(5)), parseFloat((3.14159265 * 5).toFixed(15)), 'varchar_col_5', 'nchar_col_5', true, 'NULL'],
28
- ]
29
-
30
- const tableCNValues = [
31
- [BigInt(1656677760000), 0, -1, -2, BigInt(-3), 0, 1, 2, BigInt(3), parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_列_壹', 'nchar_列_甲', true, 'NULL'],
32
- [BigInt(1656677770000), -1, -2, -3, BigInt(-4), 1, 2, 3, BigInt(4), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_列_贰', 'nchar_列_乙', false, 'NULL'],
33
- [BigInt(1656677780000), -2, -3, -4, BigInt(-5), 2, 3, 4, BigInt(5), parseFloat((3.1415 * 3).toFixed(5)), parseFloat((3.14159265 * 3).toFixed(15)), 'varchar_列_叁', 'nchar_列_丙', true, 'NULL'],
34
- [BigInt(1656677790000), -3, -4, -5, BigInt(-6), 3, 4, 5, BigInt(6), parseFloat((3.1415 * 4).toFixed(5)), parseFloat((3.14159265 * 4).toFixed(15)), 'varchar_列_肆', 'nchar_列_丁', false, 'NULL'],
35
- [BigInt(1656677800000), -4, -5, -6, BigInt(-7), 4, 5, 6, BigInt(7), parseFloat((3.1415 * 5).toFixed(5)), parseFloat((3.14159265 * 5).toFixed(15)), 'varchar_列_伍', 'nchar_列_戊', true, 'NULL'],
36
- ]
37
- const jsonTags = ["{\"key1\":\"taos\",\"key2\":null,\"key3\":\"TDengine\",\"key4\":0,\"key5\":false}"]
38
- const jsonTagsCN = ["{\"key1\":\"taosdata\",\"key2\":null,\"key3\":\"TDengine涛思数据\",\"key4\":1,\"key5\":true}"]
39
-
40
- const selectStable = `select * from ${stable}`
41
- const selectStableCN = `select * from ${stableCN}`
42
- const selectTable = `select * from ${table}`
43
- const selectTableCN = `select * from ${tableCN}`
44
- const selectJsonTable = `select * from ${jsonTable}`
45
- const selectJsonTableCN = `select * from ${jsonTableCN}`
46
-
47
- beforeAll(async () => {
48
- return await ws.connect()
49
- .then(() => ws.query(createDB))
50
- .then(() => ws.query(useDB))
51
- .then(() => ws.query(createSTable(stable)))
52
- .then(() => ws.query(createSTable(stableCN)))
53
- .then(() => ws.query(createTable(table)))
54
- .then(() => ws.query(createTable(tableCN)))
55
- .then(() => ws.query(createSTableJSON(jsonTable)))
56
- .then(() => ws.query(createSTableJSON(jsonTableCN)))
57
- .catch((e) => { throw new Error(e) })
58
- })
59
-
60
- describe('ws.query(stable)', () => {
61
- test('Insert query stable without CN character', async () => {
62
- let insert = insertStable(tableValues, stableTags, stable)
63
- let insertRes = await ws.query(insert)
64
- expect(insertRes.affectRows).toBe(5)
65
-
66
- let queryRes = await ws.query(selectStable)
67
-
68
- let expectMeta = tableMeta.concat(tagMeta)
69
- let expectData = expectStableData(tableValues, stableTags)
70
- let actualMeta = queryRes.getTDengineMeta()
71
- let actualData = queryRes.data
72
-
73
- if (actualData && actualMeta) {
74
- actualMeta.forEach((meta, index) => {
75
- //// console.log(meta);
76
- expect(meta.name).toBe(expectMeta[index].name)
77
- expect(meta.type).toBe(expectMeta[index].type)
78
- expect(meta.length).toBe(expectMeta[index].length)
79
- })
80
-
81
- for (let i = 0; i < actualData.length; i++) {
82
- actualData[i].forEach((d, index) => {
83
- // // console.log(i, index, d, expectData[i][index])
84
- expect(d).toBe(expectData[i][index])
85
- })
86
- }
87
- } else {
88
- throw new Error("retrieve empty result")
89
- }
90
- })
91
-
92
- test('query stable with CN character', async () => {
93
- let insertCN = insertStable(tableCNValues, stableCNTags, stableCN)
94
- // console.log(insertCN)
95
- let insertRes = await ws.query(insertCN)
96
- // console.log(insertRes)
97
- expect(insertRes.affectRows).toBe(5)
98
-
99
- let queryRes = await ws.query(selectStableCN)
100
-
101
- let expectMeta = tableMeta.concat(tagMeta)
102
- let expectData = expectStableData(tableCNValues, stableCNTags)
103
- let actualMeta = queryRes.getTDengineMeta()
104
- let actualData = queryRes.data
105
-
106
- if (actualData && actualMeta) {
107
- actualMeta.forEach((meta, index) => {
108
- expect(meta.name).toBe(expectMeta[index].name)
109
- expect(meta.type).toBe(expectMeta[index].type)
110
- expect(meta.length).toBe(expectMeta[index].length)
111
- //// console.log(meta);
112
- })
113
-
114
- for (let i = 0; i < actualData.length; i++) {
115
- actualData[i].forEach((d, index) => {
116
- // // console.log(i, index, d, expectData[i][index])
117
- expect(d).toBe(expectData[i][index])
118
-
119
- })
120
- }
121
- } else {
122
- throw new Error("retrieve empty result")
123
- }
124
-
125
-
126
- })
127
-
128
-
129
- })
130
-
131
- describe('ws.query(table)', () => {
132
- test('Insert query normal table without CN character', async () => {
133
- let insert = insertNTable(tableValues, table)
134
- // console.log(insert)
135
- let insertRes = await ws.query(insert)
136
- expect(insertRes.affectRows).toBe(5)
137
-
138
- let queryRes = await ws.query(selectTable)
139
-
140
- let expectMeta = tableMeta
141
- let expectData = tableValues
142
- let actualMeta = queryRes.getTDengineMeta()
143
- let actualData = queryRes.data
144
-
145
- if (actualData && actualMeta) {
146
- actualMeta.forEach((meta, index) => {
147
- // console.log(meta,expectMeta[index]);
148
- expect(meta.name).toBe(expectMeta[index].name)
149
- expect(meta.type).toBe(expectMeta[index].type)
150
- expect(meta.length).toBe(expectMeta[index].length)
151
- })
152
-
153
- for (let i = 0; i < actualData.length; i++) {
154
- actualData[i].forEach((d, index) => {
155
- // // console.log(i, index, d, expectData[i][index])
156
- expect(d).toBe(expectData[i][index])
157
- })
158
- }
159
- } else {
160
- throw new Error("retrieve empty result")
161
- }
162
- })
163
-
164
- test('Insert query normal table with CN character', async () => {
165
- let insertCN = insertNTable(tableCNValues, tableCN)
166
- // console.log(insertCN)
167
- let insertRes = await ws.query(insertCN)
168
- // console.log(insertRes)
169
- expect(insertRes.affectRows).toBe(5)
170
-
171
- let queryRes = await ws.query(selectTableCN)
172
-
173
- let expectMeta = tableMeta
174
- let expectData = tableCNValues
175
- let actualMeta = queryRes.getTDengineMeta()
176
- let actualData = queryRes.data
177
-
178
- if (actualData && actualMeta) {
179
- actualMeta.forEach((meta, index) => {
180
- // console.log(meta, expectMeta[index]);
181
-
182
- expect(meta.name).toBe(expectMeta[index].name)
183
- expect(meta.type).toBe(expectMeta[index].type)
184
- expect(meta.length).toBe(expectMeta[index].length)
185
- })
186
-
187
- for (let i = 0; i < actualData.length; i++) {
188
- actualData[i].forEach((d, index) => {
189
- // console.log(i, index, d, expectData[i][index])
190
- expect(d).toBe(expectData[i][index])
191
-
192
- })
193
- }
194
- } else {
195
- throw new Error("retrieve empty result")
196
- }
197
- })
198
- })
199
-
200
- describe('ws.query(jsonTable)', () => {
201
- test('Insert and query json data from table without CN', async () => {
202
- let insert = insertStable(tableValues, jsonTags, jsonTable)
203
- // console.log(insert)
204
-
205
- let insertRes = await ws.query(insert);
206
- expect(insertRes.affectRows).toBe(5)
207
-
208
- let queryRes = await ws.query(selectJsonTable)
209
- let expectMeta = tableMeta.concat(jsonMeta)
210
- let expectData = expectStableData(tableValues, jsonTags)
211
- let actualMeta = queryRes.getTDengineMeta()
212
- let actualData = queryRes.data
213
-
214
- if (actualData && actualMeta) {
215
- actualMeta.forEach((meta, index) => {
216
- // console.log(meta);
217
- expect(meta.name).toBe(expectMeta[index].name)
218
- expect(meta.type).toBe(expectMeta[index].type)
219
- expect(meta.length).toBe(expectMeta[index].length)
220
- })
221
-
222
- for (let i = 0; i < actualData.length; i++) {
223
- actualData[i].forEach((d, index) => {
224
- // console.log(i, index, d, expectData[i][index])
225
- expect(d).toBe(expectData[i][index])
226
- })
227
- }
228
- } else {
229
- throw new Error("retrieve empty result")
230
- }
231
-
232
- })
233
-
234
-
235
- test('Insert and query json data from table with CN', async () => {
236
- let insert = insertStable(tableCNValues, jsonTagsCN, jsonTableCN)
237
- // console.log(insert)
238
-
239
- let insertRes = await ws.query(insert);
240
- expect(insertRes.affectRows).toBe(5)
241
-
242
- let queryRes = await ws.query(selectJsonTableCN)
243
- let expectMeta = tableMeta.concat(jsonMeta)
244
- let expectData = expectStableData(tableCNValues, jsonTagsCN)
245
- let actualMeta = queryRes.getTDengineMeta()
246
- let actualData = queryRes.data
247
-
248
- if (actualData && actualMeta) {
249
- actualMeta.forEach((meta, index) => {
250
- // console.log(meta);
251
- expect(meta.name).toBe(expectMeta[index].name)
252
- expect(meta.type).toBe(expectMeta[index].type)
253
- expect(meta.length).toBe(expectMeta[index].length)
254
- })
255
-
256
- for (let i = 0; i < actualData.length; i++) {
257
- actualData[i].forEach((d, index) => {
258
- // console.log(i, index, d, expectData[i][index])
259
- expect(d).toBe(expectData[i][index])
260
- })
261
- }
262
- } else {
263
- throw new Error("retrieve empty result")
264
- }
265
- })
266
-
267
- })
268
-
269
- afterAll(async () => {
270
- await ws.query(dropDB)
271
- ws.close()
272
- })
273
-
274
- //--detectOpenHandles --maxConcurrency=1 --forceExit
@@ -1,19 +0,0 @@
1
- import { connect } from "../../index"
2
- const DSN = 'ws://root:taosdata@127.0.0.1:6041/rest/ws'
3
- // const DSN = 'ws://root:taosdata@182.92.127.131:6041/rest/ws'
4
- var ws = connect(DSN)
5
-
6
- describe('TDWebSocket.version()', () => {
7
- test('check version', () => {
8
- return ws.version()
9
- .then((version) => {
10
- // console.log(version)
11
- expect(version.charAt(0)).toEqual('3')
12
- })
13
- .then(()=>{ws.close()})
14
- })
15
- })
16
- afterAll(() => {
17
- //close websocket and clear data
18
- ws.close()
19
- })