@tdengine/websocket 3.2.2 → 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.
- package/lib/package.json +64 -0
- package/lib/src/client/retryConfig.d.ts +10 -0
- package/lib/src/client/retryConfig.d.ts.map +1 -0
- package/lib/src/client/retryConfig.js +46 -0
- package/lib/src/client/wsClient.d.ts +1 -0
- package/lib/src/client/wsClient.d.ts.map +1 -1
- package/lib/src/client/wsClient.js +31 -19
- package/lib/src/client/wsConnector.d.ts.map +1 -1
- package/lib/src/client/wsConnector.js +12 -11
- package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
- package/lib/src/client/wsConnectorPool.js +13 -16
- package/lib/src/client/wsEventCallback.d.ts.map +1 -1
- package/lib/src/client/wsResponse.d.ts +0 -3
- package/lib/src/client/wsResponse.d.ts.map +1 -1
- package/lib/src/client/wsResponse.js +0 -3
- package/lib/src/common/config.d.ts +3 -0
- package/lib/src/common/config.d.ts.map +1 -1
- package/lib/src/common/config.js +6 -0
- package/lib/src/common/constant.d.ts +1 -0
- package/lib/src/common/constant.d.ts.map +1 -1
- package/lib/src/common/constant.js +6 -1
- package/lib/src/common/dsn.d.ts +18 -0
- package/lib/src/common/dsn.d.ts.map +1 -0
- package/lib/src/common/dsn.js +152 -0
- package/lib/src/common/taosResult.d.ts.map +1 -1
- package/lib/src/common/utils.d.ts +4 -0
- package/lib/src/common/utils.d.ts.map +1 -1
- package/lib/src/common/utils.js +54 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/sql/wsSql.d.ts.map +1 -1
- package/lib/src/tmq/config.d.ts +1 -0
- package/lib/src/tmq/config.d.ts.map +1 -1
- package/lib/src/tmq/config.js +18 -1
- package/lib/src/tmq/constant.d.ts +4 -0
- package/lib/src/tmq/constant.d.ts.map +1 -1
- package/lib/src/tmq/constant.js +4 -0
- package/lib/src/tmq/tmqResponse.d.ts.map +1 -1
- package/lib/src/tmq/tmqResponse.js +1 -4
- package/lib/src/tmq/wsTmq.d.ts.map +1 -1
- package/lib/src/tmq/wsTmq.js +10 -5
- package/lib/test/bulkPulling/cloud.tmq.test.js +3 -2
- package/lib/test/bulkPulling/decimal.test.js +8 -8
- package/lib/test/bulkPulling/dsn.test.d.ts +2 -0
- package/lib/test/bulkPulling/dsn.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/dsn.test.js +378 -0
- package/lib/test/bulkPulling/queryTables.test.js +1 -1
- package/lib/test/bulkPulling/retryConfig.test.d.ts +2 -0
- package/lib/test/bulkPulling/retryConfig.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/retryConfig.test.js +34 -0
- package/lib/test/bulkPulling/schemaless.test.js +15 -14
- package/lib/test/bulkPulling/sql.test.js +116 -44
- package/lib/test/bulkPulling/stmt1.func.test.js +31 -30
- package/lib/test/bulkPulling/stmt1.type.test.js +1 -1
- package/lib/test/bulkPulling/stmt2.func.test.js +37 -36
- package/lib/test/bulkPulling/stmt2.type.test.js +1 -1
- package/lib/test/bulkPulling/tmq.config.test.d.ts +2 -0
- package/lib/test/bulkPulling/tmq.config.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/tmq.config.test.js +77 -0
- package/lib/test/bulkPulling/tmq.test.js +135 -14
- package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts +2 -0
- package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +184 -0
- package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts +2 -0
- package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/wsConfig.dsn.test.js +37 -0
- package/lib/test/bulkPulling/wsConnectPool.test.js +7 -7
- package/lib/test/bulkPulling/wsConnector.failover.test.d.ts +2 -0
- package/lib/test/bulkPulling/wsConnector.failover.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/wsConnector.failover.test.js +128 -0
- package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts +2 -0
- package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/wsConnectorPool.key.test.js +50 -0
- package/lib/test/bulkPulling/wsEventCallback.test.d.ts +2 -0
- package/lib/test/bulkPulling/wsEventCallback.test.d.ts.map +1 -0
- package/lib/test/bulkPulling/wsEventCallback.test.js +54 -0
- package/lib/test/utils.d.ts +4 -0
- package/lib/test/utils.d.ts.map +1 -1
- package/lib/test/utils.js +11 -17
- package/package.json +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parse = parse;
|
|
4
|
+
const wsError_1 = require("./wsError");
|
|
5
|
+
/**
|
|
6
|
+
* Parse a multi-host TDengine WebSocket URL.
|
|
7
|
+
* Format: ws://username:password@host1:port1,host2:port2,[::1]:port3/db?key=value
|
|
8
|
+
*/
|
|
9
|
+
function parse(url) {
|
|
10
|
+
if (!url || url.trim().length === 0) {
|
|
11
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_INVALID_URL, "URL must not be empty");
|
|
12
|
+
}
|
|
13
|
+
// Extract scheme
|
|
14
|
+
const schemeMatch = url.match(/^(wss?):\/\//i);
|
|
15
|
+
if (!schemeMatch) {
|
|
16
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_INVALID_URL, `Invalid URL scheme, expected ws:// or wss://, got: ${url}`);
|
|
17
|
+
}
|
|
18
|
+
const scheme = schemeMatch[1].toLowerCase();
|
|
19
|
+
let remainder = url.slice(schemeMatch[0].length);
|
|
20
|
+
// Extract username:password@ if present
|
|
21
|
+
let username = "";
|
|
22
|
+
let password = "";
|
|
23
|
+
const atIndex = remainder.indexOf("@");
|
|
24
|
+
if (atIndex !== -1) {
|
|
25
|
+
const userInfo = remainder.slice(0, atIndex);
|
|
26
|
+
remainder = remainder.slice(atIndex + 1);
|
|
27
|
+
const colonIndex = userInfo.indexOf(":");
|
|
28
|
+
if (colonIndex !== -1) {
|
|
29
|
+
username = userInfo.slice(0, colonIndex);
|
|
30
|
+
password = userInfo.slice(colonIndex + 1);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
username = userInfo;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Extract query params (after ?)
|
|
37
|
+
let params = new Map();
|
|
38
|
+
const queryIndex = remainder.indexOf("?");
|
|
39
|
+
let queryString = "";
|
|
40
|
+
if (queryIndex !== -1) {
|
|
41
|
+
queryString = remainder.slice(queryIndex + 1);
|
|
42
|
+
remainder = remainder.slice(0, queryIndex);
|
|
43
|
+
const searchParams = new URLSearchParams(queryString);
|
|
44
|
+
searchParams.forEach((value, key) => {
|
|
45
|
+
params.set(key, value);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Extract database (after /)
|
|
49
|
+
let database = "";
|
|
50
|
+
const pathIndex = remainder.indexOf("/");
|
|
51
|
+
if (pathIndex !== -1) {
|
|
52
|
+
database = remainder.slice(pathIndex + 1);
|
|
53
|
+
remainder = remainder.slice(0, pathIndex);
|
|
54
|
+
}
|
|
55
|
+
// remainder is now the host list: host1:port1,host2:port2,[::1]:port3
|
|
56
|
+
const hosts = parseHostList(remainder);
|
|
57
|
+
if (hosts.length === 0) {
|
|
58
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_INVALID_URL, "No hosts found in URL");
|
|
59
|
+
}
|
|
60
|
+
// Deduplicate hosts (preserve order, keep first occurrence)
|
|
61
|
+
const seen = new Set();
|
|
62
|
+
const dedupedHosts = [];
|
|
63
|
+
for (const h of hosts) {
|
|
64
|
+
const key = `${h.host}:${h.port}`;
|
|
65
|
+
if (!seen.has(key)) {
|
|
66
|
+
seen.add(key);
|
|
67
|
+
dedupedHosts.push(h);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
addresses: dedupedHosts,
|
|
72
|
+
scheme,
|
|
73
|
+
username,
|
|
74
|
+
password,
|
|
75
|
+
database,
|
|
76
|
+
params,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const DEFAULT_PORT = 6041;
|
|
80
|
+
/**
|
|
81
|
+
* Parse comma-separated host list. Supports IPv6 in brackets.
|
|
82
|
+
* Examples: "host1:6041,host2:6042", "[::1]:6041,host2:6042"
|
|
83
|
+
*/
|
|
84
|
+
function parseHostList(hostStr) {
|
|
85
|
+
if (!hostStr || hostStr.trim().length === 0) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
const hosts = [];
|
|
89
|
+
let i = 0;
|
|
90
|
+
while (i < hostStr.length) {
|
|
91
|
+
// Skip comma separator
|
|
92
|
+
if (hostStr[i] === ",") {
|
|
93
|
+
i++;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (hostStr[i] === "[") {
|
|
97
|
+
// IPv6 address in brackets
|
|
98
|
+
const closeBracket = hostStr.indexOf("]", i);
|
|
99
|
+
if (closeBracket === -1) {
|
|
100
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_INVALID_URL, `Unclosed bracket in IPv6 address: ${hostStr.slice(i)}`);
|
|
101
|
+
}
|
|
102
|
+
const ipv6Host = hostStr.slice(i + 1, closeBracket);
|
|
103
|
+
let port = DEFAULT_PORT;
|
|
104
|
+
let next = closeBracket + 1;
|
|
105
|
+
if (next < hostStr.length && hostStr[next] === ":") {
|
|
106
|
+
const portEnd = hostStr.indexOf(",", next);
|
|
107
|
+
const portStr = portEnd === -1
|
|
108
|
+
? hostStr.slice(next + 1)
|
|
109
|
+
: hostStr.slice(next + 1, portEnd);
|
|
110
|
+
port = parsePort(portStr, hostStr);
|
|
111
|
+
i = portEnd === -1 ? hostStr.length : portEnd;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
i = next;
|
|
115
|
+
}
|
|
116
|
+
hosts.push({ host: `[${ipv6Host}]`, port });
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Regular host or IPv4
|
|
120
|
+
const commaIndex = hostStr.indexOf(",", i);
|
|
121
|
+
const segment = commaIndex === -1
|
|
122
|
+
? hostStr.slice(i)
|
|
123
|
+
: hostStr.slice(i, commaIndex);
|
|
124
|
+
const lastColon = segment.lastIndexOf(":");
|
|
125
|
+
if (lastColon !== -1) {
|
|
126
|
+
const host = segment.slice(0, lastColon);
|
|
127
|
+
const port = parsePort(segment.slice(lastColon + 1), hostStr);
|
|
128
|
+
hosts.push({ host, port });
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
hosts.push({ host: segment, port: DEFAULT_PORT });
|
|
132
|
+
}
|
|
133
|
+
i = commaIndex === -1 ? hostStr.length : commaIndex;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return hosts;
|
|
137
|
+
}
|
|
138
|
+
function parsePort(portStr, context) {
|
|
139
|
+
// If port string is empty, use default port
|
|
140
|
+
if (portStr.length === 0) {
|
|
141
|
+
return DEFAULT_PORT;
|
|
142
|
+
}
|
|
143
|
+
// Validate that port string contains only digits
|
|
144
|
+
if (!/^\d+$/.test(portStr)) {
|
|
145
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_INVALID_URL, `Invalid port "${portStr}" in host string: ${context}`);
|
|
146
|
+
}
|
|
147
|
+
const port = parseInt(portStr, 10);
|
|
148
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
149
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_INVALID_URL, `Invalid port "${portStr}" in host string: ${context}`);
|
|
150
|
+
}
|
|
151
|
+
return port;
|
|
152
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taosResult.d.ts","sourceRoot":"","sources":["../../../src/common/taosResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"taosResult.d.ts","sourceRoot":"","sources":["../../../src/common/taosResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TmqConfig } from "../tmq/config";
|
|
1
2
|
import { WSConfig } from "./config";
|
|
2
3
|
export declare function getUrl(wsConfig: WSConfig): URL;
|
|
3
4
|
export declare function isEmpty(value: any): boolean;
|
|
@@ -15,4 +16,7 @@ export declare function safeDecodeURIComponent(str: string): string;
|
|
|
15
16
|
*/
|
|
16
17
|
export declare function compareVersions(v1: string, v2: string): number;
|
|
17
18
|
export declare function decimalToString(valueStr: string, fields_scale: bigint | null): string;
|
|
19
|
+
export declare function maskSensitiveForLog(message: string): string;
|
|
20
|
+
export declare function maskUrlForLog(url: URL | null): string;
|
|
21
|
+
export declare function maskTmqConfigForLog(config: TmqConfig): string;
|
|
18
22
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/common/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/common/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAyC9C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAI3C;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,MAAM,GACb,WAAW,CA2Bb;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,UAWjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAW9D;AAkDD,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAoBR;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,MAAM,CAcrD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAmB7D"}
|
package/lib/src/common/utils.js
CHANGED
|
@@ -7,6 +7,9 @@ exports.zigzagDecode = zigzagDecode;
|
|
|
7
7
|
exports.safeDecodeURIComponent = safeDecodeURIComponent;
|
|
8
8
|
exports.compareVersions = compareVersions;
|
|
9
9
|
exports.decimalToString = decimalToString;
|
|
10
|
+
exports.maskSensitiveForLog = maskSensitiveForLog;
|
|
11
|
+
exports.maskUrlForLog = maskUrlForLog;
|
|
12
|
+
exports.maskTmqConfigForLog = maskTmqConfigForLog;
|
|
10
13
|
const wsError_1 = require("./wsError");
|
|
11
14
|
function getUrl(wsConfig) {
|
|
12
15
|
let url = new URL(wsConfig.getUrl());
|
|
@@ -30,20 +33,30 @@ function getUrl(wsConfig) {
|
|
|
30
33
|
if (url.searchParams.has("timezone")) {
|
|
31
34
|
wsConfig.setTimezone(url.searchParams.get("timezone") || "");
|
|
32
35
|
}
|
|
36
|
+
const bearerToken = wsConfig.getBearerToken();
|
|
37
|
+
if (bearerToken) {
|
|
38
|
+
url.searchParams.set("bearer_token", bearerToken);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const bearerTokenFromUrl = url.searchParams.get("bearer_token");
|
|
42
|
+
if (bearerTokenFromUrl) {
|
|
43
|
+
wsConfig.setBearerToken(bearerTokenFromUrl);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
url.searchParams.delete("bearer_token");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
33
49
|
url.pathname = "/ws";
|
|
34
50
|
return url;
|
|
35
51
|
}
|
|
36
52
|
function isEmpty(value) {
|
|
37
53
|
if (value === null || value === undefined)
|
|
38
54
|
return true;
|
|
39
|
-
// if (typeof value === 'string' && value.trim() === '') return true;
|
|
40
55
|
if (Array.isArray(value) && value.length === 0)
|
|
41
56
|
return true;
|
|
42
|
-
// if (typeof value === 'object' && Object.keys(value).length === 0) return true;
|
|
43
57
|
return false;
|
|
44
58
|
}
|
|
45
59
|
function getBinarySql(action, reqId, resultId, sql) {
|
|
46
|
-
// construct msg
|
|
47
60
|
if (sql) {
|
|
48
61
|
const encoder = new TextEncoder();
|
|
49
62
|
const buffer = encoder.encode(sql);
|
|
@@ -167,3 +180,41 @@ function decimalToString(valueStr, fields_scale) {
|
|
|
167
180
|
}
|
|
168
181
|
return decimalStr;
|
|
169
182
|
}
|
|
183
|
+
const SENSITIVE_FIELD_REGEX = /("(?:password|token|bearer_token|td\.connect\.token)"\s*:\s*)"([^"\\]*(?:\\.[^"\\]*)*)"/g;
|
|
184
|
+
function maskSensitiveForLog(message) {
|
|
185
|
+
return message.replace(SENSITIVE_FIELD_REGEX, '$1"[REDACTED]"');
|
|
186
|
+
}
|
|
187
|
+
function maskUrlForLog(url) {
|
|
188
|
+
if (!url) {
|
|
189
|
+
return "";
|
|
190
|
+
}
|
|
191
|
+
const masked = new URL(url.toString());
|
|
192
|
+
masked.password = "[REDACTED]";
|
|
193
|
+
if (masked.searchParams.has("token")) {
|
|
194
|
+
masked.searchParams.set("token", "[REDACTED]");
|
|
195
|
+
}
|
|
196
|
+
if (masked.searchParams.has("bearer_token")) {
|
|
197
|
+
masked.searchParams.set("bearer_token", "[REDACTED]");
|
|
198
|
+
}
|
|
199
|
+
return masked.toString().replace(/%5BREDACTED%5D/g, "[REDACTED]");
|
|
200
|
+
}
|
|
201
|
+
function maskTmqConfigForLog(config) {
|
|
202
|
+
const masked = {
|
|
203
|
+
...config,
|
|
204
|
+
otherConfigs: Object.fromEntries(config.otherConfigs)
|
|
205
|
+
};
|
|
206
|
+
return JSON.stringify(masked, (key, value) => {
|
|
207
|
+
switch (key) {
|
|
208
|
+
case 'url':
|
|
209
|
+
case 'sql_url':
|
|
210
|
+
return maskUrlForLog(value);
|
|
211
|
+
case 'token':
|
|
212
|
+
case 'password':
|
|
213
|
+
case 'bearer_token':
|
|
214
|
+
case 'td.connect.token':
|
|
215
|
+
return value ? '[REDACTED]' : value;
|
|
216
|
+
default:
|
|
217
|
+
return value;
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
package/lib/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,QAAA,IAAI,UAAU,SAAgB,QAAQ,mBAOrC,CAAC;AAEF,QAAA,IAAI,UAAU,cAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,wBAOrD,CAAC;AAEF,QAAA,IAAI,WAAW,UAAW,MAAM,SAE/B,CAAC;AAEF,QAAA,IAAI,OAAO,YAEV,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,QAAA,IAAI,UAAU,SAAgB,QAAQ,mBAOrC,CAAC;AAEF,QAAA,IAAI,UAAU,cAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,wBAOrD,CAAC;AAEF,QAAA,IAAI,WAAW,UAAW,MAAM,SAE/B,CAAC;AAEF,QAAA,IAAI,OAAO,YAEV,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsSql.d.ts","sourceRoot":"","sources":["../../../src/sql/wsSql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAyB,eAAe,EAAE,MAAM,WAAW,CAAC;AAS9E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,QAAQ,EAAE,QAAQ;WAMjB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAkCrD,KAAK;IAIL;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,gBAAgB,CAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IA6BV,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CzC,IAAI,CACN,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,MAAuB,GAChC,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"wsSql.d.ts","sourceRoot":"","sources":["../../../src/sql/wsSql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAyB,eAAe,EAAE,MAAM,WAAW,CAAC;AAS9E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAW;gBAEhB,QAAQ,EAAE,QAAQ;WAMjB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAkCrD,KAAK;IAIL;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,gBAAgB,CAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IA6BV,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CzC,IAAI,CACN,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,MAAuB,GAChC,OAAO,CAAC,UAAU,CAAC;YAoER,uBAAuB;IAe/B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB5D"}
|
package/lib/src/tmq/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/tmq/config.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/tmq/config.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAS;IAClB,GAAG,EAAE,GAAG,GAAG,IAAI,CAAQ;IACvB,OAAO,EAAE,GAAG,GAAG,IAAI,CAAQ;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,WAAW,EAAE,OAAO,CAAQ;IAC5B,uBAAuB,EAAE,MAAM,CAAY;IAC3C,OAAO,EAAE,MAAM,CAAQ;IACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;CAqEzC"}
|
package/lib/src/tmq/config.js
CHANGED
|
@@ -4,11 +4,11 @@ exports.TmqConfig = void 0;
|
|
|
4
4
|
const constant_1 = require("./constant");
|
|
5
5
|
class TmqConfig {
|
|
6
6
|
constructor(wsConfig) {
|
|
7
|
-
// req_id: number;
|
|
8
7
|
this.url = null;
|
|
9
8
|
this.sql_url = null;
|
|
10
9
|
this.user = null;
|
|
11
10
|
this.password = null;
|
|
11
|
+
this.token = null;
|
|
12
12
|
this.group_id = null;
|
|
13
13
|
this.client_id = null;
|
|
14
14
|
this.offset_rest = null;
|
|
@@ -27,6 +27,10 @@ class TmqConfig {
|
|
|
27
27
|
case constant_1.TMQConstants.CONNECT_PASS:
|
|
28
28
|
this.password = value;
|
|
29
29
|
break;
|
|
30
|
+
case constant_1.TMQConstants.CONNECT_TOKEN:
|
|
31
|
+
this.token = value;
|
|
32
|
+
this.otherConfigs.set(key, value);
|
|
33
|
+
break;
|
|
30
34
|
case constant_1.TMQConstants.GROUP_ID:
|
|
31
35
|
this.group_id = value;
|
|
32
36
|
break;
|
|
@@ -62,6 +66,19 @@ class TmqConfig {
|
|
|
62
66
|
else {
|
|
63
67
|
this.password = this.url.password;
|
|
64
68
|
}
|
|
69
|
+
if (this.token) {
|
|
70
|
+
this.url.searchParams.set("bearer_token", this.token);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const bearerToken = this.url.searchParams.get("bearer_token");
|
|
74
|
+
if (bearerToken) {
|
|
75
|
+
this.token = bearerToken;
|
|
76
|
+
this.otherConfigs.set(constant_1.TMQConstants.CONNECT_TOKEN, bearerToken);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.url.searchParams.delete("bearer_token");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
65
82
|
this.sql_url = new URL(this.url);
|
|
66
83
|
this.sql_url.pathname = "/ws";
|
|
67
84
|
this.url.pathname = "/rest/tmq";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/tmq/constant.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACrB,OAAc,QAAQ,EAAE,MAAM,CAAc;IAE5C,OAAc,SAAS,EAAE,MAAM,CAAe;IAE9C;;OAEG;IACH,OAAc,kBAAkB,EAAE,MAAM,CAAwB;IAEhE;;OAEG;IACH,OAAc,uBAAuB,EAAE,MAAM,CAA6B;IAE1E;;OAEG;IACH,OAAc,iBAAiB,EAAE,MAAM,CAAuB;IAE9D;;OAEG;IACH,OAAc,mBAAmB,EAAE,MAAM,CAAyB;IAElE;;OAEG;IACH,OAAc,iBAAiB,EAAE,MAAM,CAAuB;IAE9D;;OAEG;IACH,OAAc,kBAAkB,EAAE,MAAM,CAAwB;IAEhE;;OAEG;IACH,OAAc,2BAA2B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/tmq/constant.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACrB,OAAc,QAAQ,EAAE,MAAM,CAAc;IAE5C,OAAc,SAAS,EAAE,MAAM,CAAe;IAE9C;;OAEG;IACH,OAAc,kBAAkB,EAAE,MAAM,CAAwB;IAEhE;;OAEG;IACH,OAAc,uBAAuB,EAAE,MAAM,CAA6B;IAE1E;;OAEG;IACH,OAAc,iBAAiB,EAAE,MAAM,CAAuB;IAE9D;;OAEG;IACH,OAAc,mBAAmB,EAAE,MAAM,CAAyB;IAElE;;OAEG;IACH,OAAc,iBAAiB,EAAE,MAAM,CAAuB;IAE9D;;OAEG;IACH,OAAc,kBAAkB,EAAE,MAAM,CAAwB;IAEhE;;OAEG;IACH,OAAc,2BAA2B,EAAE,MAAM,CAAiC;IAElF;;OAEG;IACH,OAAc,UAAU,EAAE,MAAM,CAAmB;IAEnD;;OAEG;IACH,OAAc,YAAY,EAAE,MAAM,CAAqB;IAEvD;;OAEG;IACH,OAAc,YAAY,EAAE,MAAM,CAAqB;IAEvD;;OAEG;IACH,OAAc,YAAY,EAAE,MAAM,CAAqB;IAEvD;;OAEG;IACH,OAAc,aAAa,EAAE,MAAM,CAAsB;IAEzD;;OAEG;IACH,OAAc,YAAY,EAAE,MAAM,CAAqB;IAEvD;;;;OAIG;IACH,OAAc,MAAM,EAAE,MAAM,CAAY;IAExC;;;;OAIG;IACH,OAAc,eAAe,EAAE,MAAM,CAAwB;IAE7D;;;OAGG;IACH,OAAc,uBAAuB,EAAE,MAAM,CAAwB;CACxE;AAED,qBAAa,cAAc;IACvB,OAAc,SAAS,EAAE,MAAM,CAAe;IAC9C,OAAc,IAAI,EAAE,MAAM,CAAU;IACpC,OAAc,QAAQ,EAAE,MAAM,CAAe;IAC7C,OAAc,aAAa,EAAE,MAAM,CAAqB;IACxD,OAAc,MAAM,EAAE,MAAM,CAAY;IACxC,OAAc,WAAW,EAAE,MAAM,CAAiB;IAClD,OAAc,kBAAkB,EAAE,MAAM,CAAgB;IACxD,OAAc,IAAI,EAAE,MAAM,CAAU;IACpC,OAAc,YAAY,EAAE,MAAM,CAAmB;IACrD,OAAc,SAAS,EAAE,MAAM,CAAe;IAC9C,OAAc,QAAQ,EAAE,MAAM,CAAc;IAC5C,OAAc,UAAU,EAAE,MAAM,CAAiB;IACjD,OAAc,WAAW,EAAE,MAAM,CAAK;CACzC;AAED,qBAAa,YAAY;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;;CAItB;AAED,qBAAa,gBAAgB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;;CAUjB"}
|
package/lib/src/tmq/constant.js
CHANGED
|
@@ -50,6 +50,10 @@ TMQConstants.CONNECT_USER = "td.connect.user";
|
|
|
50
50
|
* connection password
|
|
51
51
|
*/
|
|
52
52
|
TMQConstants.CONNECT_PASS = "td.connect.pass";
|
|
53
|
+
/**
|
|
54
|
+
* connection token
|
|
55
|
+
*/
|
|
56
|
+
TMQConstants.CONNECT_TOKEN = "td.connect.token";
|
|
53
57
|
/**
|
|
54
58
|
* connect type websocket or jni, default is jni
|
|
55
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmqResponse.d.ts","sourceRoot":"","sources":["../../../src/tmq/tmqResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EACH,WAAW,EACX,UAAU,EAOb,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI5D,qBAAa,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;gBACN,IAAI,EAAE,WAAW;CAkBhC;AAGD,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;gBAEP,IAAI,EAAE,WAAW;CAOhC;AAED,qBAAa,aAAc,SAAQ,UAAU;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;gBACN,QAAQ,EAAE,cAAc;CAMvC;AAED,qBAAa,mBAAmB;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;gBACb,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;IAU/C,OAAO,IAAI,MAAM;IAGxB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"tmqResponse.d.ts","sourceRoot":"","sources":["../../../src/tmq/tmqResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EACH,WAAW,EACX,UAAU,EAOb,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI5D,qBAAa,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;gBACN,IAAI,EAAE,WAAW;CAkBhC;AAGD,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;gBAEP,IAAI,EAAE,WAAW;CAOhC;AAED,qBAAa,aAAc,SAAQ,UAAU;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;gBACN,QAAQ,EAAE,cAAc;CAMvC;AAED,qBAAa,mBAAmB;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;gBACb,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;IAU/C,OAAO,IAAI,MAAM;IAGxB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,eAAe;IA+EvB,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,aAAa;CAkHxB;AAED,qBAAa,cAAc;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,EAAE,CAAC;gBACrB,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;CAY/C;AACD,qBAAa,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;gBACL,IAAI,EAAE,WAAW;CAShC;AAED,qBAAa,cAAc;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;gBACR,IAAI,EAAE,WAAW;IAY7B,kBAAkB,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAY1E;AAED,qBAAa,aAAc,SAAQ,cAAc;gBACjC,IAAI,EAAE,WAAW;CAMhC;AAED,qBAAa,cAAc;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;gBACD,GAAG,EAAE,GAAG;CAOvB"}
|
|
@@ -96,13 +96,10 @@ class WSTmqFetchBlockInfo {
|
|
|
96
96
|
}
|
|
97
97
|
this.withTableName = dataView.getUint8(4) == 1 ? true : false;
|
|
98
98
|
this.withSchema = dataView.getUint8(5) == 1 ? true : false;
|
|
99
|
-
// let dataBuffer = dataView.buffer.slice(6)
|
|
100
99
|
let dataBuffer = new DataView(dataView.buffer, dataView.byteOffset + 6);
|
|
101
100
|
let rows = 0;
|
|
102
|
-
// const parseStartTime = new Date().getTime();
|
|
103
|
-
// console.log("parseBlockInfos blockNum="+ blockNum)
|
|
104
101
|
for (let i = 0; i < blockNum; i++) {
|
|
105
|
-
|
|
102
|
+
const variableInfo = this.parseVariableByteInteger(dataBuffer);
|
|
106
103
|
this.taosResult.setPrecision(variableInfo[1].getUint8(17));
|
|
107
104
|
dataView = new DataView(variableInfo[1].buffer, variableInfo[1].byteOffset + 17);
|
|
108
105
|
let offset = variableInfo[0] - 17;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsTmq.d.ts","sourceRoot":"","sources":["../../../src/tmq/wsTmq.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAOlD,OAAO,EAMH,cAAc,
|
|
1
|
+
{"version":3,"file":"wsTmq.d.ts","sourceRoot":"","sources":["../../../src/tmq/wsTmq.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAOlD,OAAO,EAMH,cAAc,EAGjB,MAAM,eAAe,CAAC;AAOvB,qBAAa,UAAU;IACnB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,OAAO;YAkBO,IAAI;WA4BL,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAWnE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B/D,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAgBzE,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAWpD,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAK9C,QAAQ;IAWhB,SAAS,CACX,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,EACjC,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAgC3B,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAehF,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,SAAS,CACX,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,EACjC,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IA4B3B,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9D,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,cAAc;YA+Bd,QAAQ;YAsCR,iBAAiB;IAgBzB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAoBrD,gBAAgB;CAmCjC"}
|
package/lib/src/tmq/wsTmq.js
CHANGED
|
@@ -13,10 +13,14 @@ const tmqResponse_1 = require("./tmqResponse");
|
|
|
13
13
|
const reqid_1 = require("../common/reqid");
|
|
14
14
|
const log_1 = __importDefault(require("../common/log"));
|
|
15
15
|
const wsResponse_1 = require("../client/wsResponse");
|
|
16
|
+
const utils_1 = require("../common/utils");
|
|
17
|
+
const constant_2 = require("../common/constant");
|
|
16
18
|
class WsConsumer {
|
|
17
19
|
constructor(wsConfig) {
|
|
18
20
|
this._wsConfig = new config_1.TmqConfig(wsConfig);
|
|
19
|
-
log_1.default.
|
|
21
|
+
if (log_1.default.isDebugEnabled()) {
|
|
22
|
+
log_1.default.debug("WsConsumer config: " + (0, utils_1.maskTmqConfigForLog)(this._wsConfig));
|
|
23
|
+
}
|
|
20
24
|
if (wsConfig.size == 0 || !this._wsConfig.url) {
|
|
21
25
|
throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_URL, "invalid url, password or username needed.");
|
|
22
26
|
}
|
|
@@ -33,7 +37,7 @@ class WsConsumer {
|
|
|
33
37
|
await this._wsClient.ready();
|
|
34
38
|
}
|
|
35
39
|
else {
|
|
36
|
-
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, url: ${this._wsConfig.url}`);
|
|
40
|
+
throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, url: ${(0, utils_1.maskUrlForLog)(this._wsConfig.url)}`);
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
catch (e) {
|
|
@@ -68,9 +72,10 @@ class WsConsumer {
|
|
|
68
72
|
client_id: this._wsConfig.client_id,
|
|
69
73
|
topics: topics,
|
|
70
74
|
offset_rest: this._wsConfig.offset_rest,
|
|
71
|
-
auto_commit: this._wsConfig.auto_commit,
|
|
72
|
-
auto_commit_interval_ms: this._wsConfig.auto_commit_interval_ms,
|
|
73
|
-
config: this._wsConfig.otherConfigs,
|
|
75
|
+
auto_commit: String(this._wsConfig.auto_commit),
|
|
76
|
+
auto_commit_interval_ms: String(this._wsConfig.auto_commit_interval_ms),
|
|
77
|
+
config: Object.fromEntries(this._wsConfig.otherConfigs),
|
|
78
|
+
connector: constant_2.ConnectorInfo,
|
|
74
79
|
},
|
|
75
80
|
};
|
|
76
81
|
this._topics = topics;
|
|
@@ -6,13 +6,14 @@ const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
|
|
|
6
6
|
const log_1 = require("../../src/common/log");
|
|
7
7
|
const config_1 = require("../../src/common/config");
|
|
8
8
|
const wsSql_1 = require("../../src/sql/wsSql");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
9
10
|
beforeAll(async () => {
|
|
10
11
|
const url = `wss://${process.env.TDENGINE_CLOUD_URL}?token=${process.env.TDENGINE_CLOUD_TOKEN}`;
|
|
11
12
|
let wsSql = null;
|
|
12
13
|
try {
|
|
13
14
|
const conf = new config_1.WSConfig(url);
|
|
14
|
-
conf.setUser(
|
|
15
|
-
conf.setPwd(
|
|
15
|
+
conf.setUser((0, utils_1.testUsername)());
|
|
16
|
+
conf.setPwd((0, utils_1.testPassword)());
|
|
16
17
|
wsSql = await wsSql_1.WsSql.open(conf);
|
|
17
18
|
let sql = `INSERT INTO dmeters.d1001 USING dmeters.meters (groupid, location) TAGS(2, 'SanFrancisco')
|
|
18
19
|
VALUES (NOW + 1a, 10.30000, 219, 0.31000) (NOW + 2a, 12.60000, 218, 0.33000) (NOW + 3a, 12.30000, 221, 0.31000)
|
|
@@ -13,8 +13,8 @@ let dropTopic = `DROP TOPIC IF EXISTS topic_decimal_test;`;
|
|
|
13
13
|
(0, log_1.setLevel)("debug");
|
|
14
14
|
beforeAll(async () => {
|
|
15
15
|
let conf = new config_1.WSConfig(dns);
|
|
16
|
-
conf.setUser(
|
|
17
|
-
conf.setPwd(
|
|
16
|
+
conf.setUser((0, utils_1.testUsername)());
|
|
17
|
+
conf.setPwd((0, utils_1.testPassword)());
|
|
18
18
|
let wsSql = await wsSql_1.WsSql.open(conf);
|
|
19
19
|
await wsSql.exec(dropTopic);
|
|
20
20
|
await wsSql.exec("drop database if exists power");
|
|
@@ -58,8 +58,8 @@ describe("TDWebSocket.WsSql()", () => {
|
|
|
58
58
|
jest.setTimeout(20 * 1000);
|
|
59
59
|
test("insert recoder", async () => {
|
|
60
60
|
let conf = new config_1.WSConfig(dns);
|
|
61
|
-
conf.setUser(
|
|
62
|
-
conf.setPwd(
|
|
61
|
+
conf.setUser((0, utils_1.testUsername)());
|
|
62
|
+
conf.setPwd((0, utils_1.testPassword)());
|
|
63
63
|
let wsSql = await wsSql_1.WsSql.open(conf);
|
|
64
64
|
let taosResult = await wsSql.exec("use power");
|
|
65
65
|
console.log(taosResult);
|
|
@@ -96,8 +96,8 @@ describe("TDWebSocket.WsSql()", () => {
|
|
|
96
96
|
test("normal Subscribe", async () => {
|
|
97
97
|
let configMap = new Map([
|
|
98
98
|
[constant_1.TMQConstants.GROUP_ID, "gId"],
|
|
99
|
-
[constant_1.TMQConstants.CONNECT_USER,
|
|
100
|
-
[constant_1.TMQConstants.CONNECT_PASS,
|
|
99
|
+
[constant_1.TMQConstants.CONNECT_USER, (0, utils_1.testUsername)()],
|
|
100
|
+
[constant_1.TMQConstants.CONNECT_PASS, (0, utils_1.testPassword)()],
|
|
101
101
|
[constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
|
|
102
102
|
[constant_1.TMQConstants.CLIENT_ID, "test_tmq_client"],
|
|
103
103
|
[constant_1.TMQConstants.WS_URL, dns],
|
|
@@ -143,8 +143,8 @@ test("normal Subscribe", async () => {
|
|
|
143
143
|
});
|
|
144
144
|
afterAll(async () => {
|
|
145
145
|
let conf = new config_1.WSConfig(dns);
|
|
146
|
-
conf.setUser(
|
|
147
|
-
conf.setPwd(
|
|
146
|
+
conf.setUser((0, utils_1.testUsername)());
|
|
147
|
+
conf.setPwd((0, utils_1.testPassword)());
|
|
148
148
|
let wsSql = await wsSql_1.WsSql.open(conf);
|
|
149
149
|
await wsSql.exec(dropTopic);
|
|
150
150
|
await wsSql.exec("drop database power");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsn.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/dsn.test.ts"],"names":[],"mappings":""}
|