@querypanel/node-sdk 1.0.23 → 1.0.25

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 (137) hide show
  1. package/README.md +46 -274
  2. package/dist/index.cjs +1471 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +468 -0
  5. package/dist/index.d.ts +468 -0
  6. package/dist/index.js +1443 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +53 -43
  9. package/dist/cjs/adapters/clickhouse.d.ts +0 -48
  10. package/dist/cjs/adapters/clickhouse.d.ts.map +0 -1
  11. package/dist/cjs/adapters/clickhouse.js +0 -284
  12. package/dist/cjs/adapters/clickhouse.js.map +0 -1
  13. package/dist/cjs/adapters/introspection.spec.d.ts +0 -2
  14. package/dist/cjs/adapters/introspection.spec.d.ts.map +0 -1
  15. package/dist/cjs/adapters/introspection.spec.js +0 -192
  16. package/dist/cjs/adapters/introspection.spec.js.map +0 -1
  17. package/dist/cjs/adapters/postgres.d.ts +0 -46
  18. package/dist/cjs/adapters/postgres.d.ts.map +0 -1
  19. package/dist/cjs/adapters/postgres.js +0 -457
  20. package/dist/cjs/adapters/postgres.js.map +0 -1
  21. package/dist/cjs/adapters/postgres.spec.d.ts +0 -2
  22. package/dist/cjs/adapters/postgres.spec.d.ts.map +0 -1
  23. package/dist/cjs/adapters/postgres.spec.js +0 -37
  24. package/dist/cjs/adapters/postgres.spec.js.map +0 -1
  25. package/dist/cjs/adapters/types.d.ts +0 -38
  26. package/dist/cjs/adapters/types.d.ts.map +0 -1
  27. package/dist/cjs/adapters/types.js +0 -3
  28. package/dist/cjs/adapters/types.js.map +0 -1
  29. package/dist/cjs/anonymize.spec.d.ts +0 -2
  30. package/dist/cjs/anonymize.spec.d.ts.map +0 -1
  31. package/dist/cjs/anonymize.spec.js +0 -78
  32. package/dist/cjs/anonymize.spec.js.map +0 -1
  33. package/dist/cjs/clickhouseClient.spec.d.ts +0 -2
  34. package/dist/cjs/clickhouseClient.spec.d.ts.map +0 -1
  35. package/dist/cjs/clickhouseClient.spec.js +0 -286
  36. package/dist/cjs/clickhouseClient.spec.js.map +0 -1
  37. package/dist/cjs/connectors/base.d.ts +0 -14
  38. package/dist/cjs/connectors/base.d.ts.map +0 -1
  39. package/dist/cjs/connectors/base.js +0 -3
  40. package/dist/cjs/connectors/base.js.map +0 -1
  41. package/dist/cjs/connectors/clickhouse.d.ts +0 -35
  42. package/dist/cjs/connectors/clickhouse.d.ts.map +0 -1
  43. package/dist/cjs/connectors/clickhouse.js +0 -292
  44. package/dist/cjs/connectors/clickhouse.js.map +0 -1
  45. package/dist/cjs/index.d.ts +0 -498
  46. package/dist/cjs/index.d.ts.map +0 -1
  47. package/dist/cjs/index.js +0 -849
  48. package/dist/cjs/index.js.map +0 -1
  49. package/dist/cjs/index.test.d.ts +0 -2
  50. package/dist/cjs/index.test.d.ts.map +0 -1
  51. package/dist/cjs/index.test.js +0 -185
  52. package/dist/cjs/index.test.js.map +0 -1
  53. package/dist/cjs/introspectV3.d.ts +0 -45
  54. package/dist/cjs/introspectV3.d.ts.map +0 -1
  55. package/dist/cjs/introspectV3.js +0 -99
  56. package/dist/cjs/introspectV3.js.map +0 -1
  57. package/dist/cjs/multidb.spec.d.ts +0 -2
  58. package/dist/cjs/multidb.spec.d.ts.map +0 -1
  59. package/dist/cjs/multidb.spec.js +0 -76
  60. package/dist/cjs/multidb.spec.js.map +0 -1
  61. package/dist/cjs/package.json +0 -1
  62. package/dist/cjs/schema/types.d.ts +0 -73
  63. package/dist/cjs/schema/types.d.ts.map +0 -1
  64. package/dist/cjs/schema/types.js +0 -3
  65. package/dist/cjs/schema/types.js.map +0 -1
  66. package/dist/cjs/tenant-isolation.spec.d.ts +0 -2
  67. package/dist/cjs/tenant-isolation.spec.d.ts.map +0 -1
  68. package/dist/cjs/tenant-isolation.spec.js +0 -420
  69. package/dist/cjs/tenant-isolation.spec.js.map +0 -1
  70. package/dist/cjs/utils/clickhouse.d.ts +0 -9
  71. package/dist/cjs/utils/clickhouse.d.ts.map +0 -1
  72. package/dist/cjs/utils/clickhouse.js +0 -99
  73. package/dist/cjs/utils/clickhouse.js.map +0 -1
  74. package/dist/esm/adapters/clickhouse.d.ts +0 -48
  75. package/dist/esm/adapters/clickhouse.d.ts.map +0 -1
  76. package/dist/esm/adapters/clickhouse.js +0 -280
  77. package/dist/esm/adapters/clickhouse.js.map +0 -1
  78. package/dist/esm/adapters/introspection.spec.d.ts +0 -2
  79. package/dist/esm/adapters/introspection.spec.d.ts.map +0 -1
  80. package/dist/esm/adapters/introspection.spec.js +0 -190
  81. package/dist/esm/adapters/introspection.spec.js.map +0 -1
  82. package/dist/esm/adapters/postgres.d.ts +0 -46
  83. package/dist/esm/adapters/postgres.d.ts.map +0 -1
  84. package/dist/esm/adapters/postgres.js +0 -453
  85. package/dist/esm/adapters/postgres.js.map +0 -1
  86. package/dist/esm/adapters/postgres.spec.d.ts +0 -2
  87. package/dist/esm/adapters/postgres.spec.d.ts.map +0 -1
  88. package/dist/esm/adapters/postgres.spec.js +0 -35
  89. package/dist/esm/adapters/postgres.spec.js.map +0 -1
  90. package/dist/esm/adapters/types.d.ts +0 -38
  91. package/dist/esm/adapters/types.d.ts.map +0 -1
  92. package/dist/esm/adapters/types.js +0 -2
  93. package/dist/esm/adapters/types.js.map +0 -1
  94. package/dist/esm/anonymize.spec.d.ts +0 -2
  95. package/dist/esm/anonymize.spec.d.ts.map +0 -1
  96. package/dist/esm/anonymize.spec.js +0 -76
  97. package/dist/esm/anonymize.spec.js.map +0 -1
  98. package/dist/esm/clickhouseClient.spec.d.ts +0 -2
  99. package/dist/esm/clickhouseClient.spec.d.ts.map +0 -1
  100. package/dist/esm/clickhouseClient.spec.js +0 -281
  101. package/dist/esm/clickhouseClient.spec.js.map +0 -1
  102. package/dist/esm/connectors/base.d.ts +0 -14
  103. package/dist/esm/connectors/base.d.ts.map +0 -1
  104. package/dist/esm/connectors/base.js +0 -2
  105. package/dist/esm/connectors/base.js.map +0 -1
  106. package/dist/esm/connectors/clickhouse.d.ts +0 -35
  107. package/dist/esm/connectors/clickhouse.d.ts.map +0 -1
  108. package/dist/esm/connectors/clickhouse.js +0 -288
  109. package/dist/esm/connectors/clickhouse.js.map +0 -1
  110. package/dist/esm/index.d.ts +0 -498
  111. package/dist/esm/index.d.ts.map +0 -1
  112. package/dist/esm/index.js +0 -844
  113. package/dist/esm/index.js.map +0 -1
  114. package/dist/esm/index.test.d.ts +0 -2
  115. package/dist/esm/index.test.d.ts.map +0 -1
  116. package/dist/esm/index.test.js +0 -183
  117. package/dist/esm/index.test.js.map +0 -1
  118. package/dist/esm/introspectV3.d.ts +0 -45
  119. package/dist/esm/introspectV3.d.ts.map +0 -1
  120. package/dist/esm/introspectV3.js +0 -96
  121. package/dist/esm/introspectV3.js.map +0 -1
  122. package/dist/esm/multidb.spec.d.ts +0 -2
  123. package/dist/esm/multidb.spec.d.ts.map +0 -1
  124. package/dist/esm/multidb.spec.js +0 -74
  125. package/dist/esm/multidb.spec.js.map +0 -1
  126. package/dist/esm/schema/types.d.ts +0 -73
  127. package/dist/esm/schema/types.d.ts.map +0 -1
  128. package/dist/esm/schema/types.js +0 -2
  129. package/dist/esm/schema/types.js.map +0 -1
  130. package/dist/esm/tenant-isolation.spec.d.ts +0 -2
  131. package/dist/esm/tenant-isolation.spec.d.ts.map +0 -1
  132. package/dist/esm/tenant-isolation.spec.js +0 -418
  133. package/dist/esm/tenant-isolation.spec.js.map +0 -1
  134. package/dist/esm/utils/clickhouse.d.ts +0 -9
  135. package/dist/esm/utils/clickhouse.d.ts.map +0 -1
  136. package/dist/esm/utils/clickhouse.js +0 -92
  137. package/dist/esm/utils/clickhouse.js.map +0 -1
@@ -1,292 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClickHouseConnector = void 0;
4
- const client_1 = require("@clickhouse/client");
5
- const clickhouse_js_1 = require("../utils/clickhouse.js");
6
- class ClickHouseConnector {
7
- constructor(config, overrides = {}) {
8
- this.config = config;
9
- this.overrides = overrides;
10
- this.defaultFormat = "JSONEachRow";
11
- this.client = overrides.client ?? null;
12
- }
13
- async connect() {
14
- await this.ensureClient();
15
- }
16
- async query(sql, options) {
17
- const client = await this.ensureClient();
18
- const params = {
19
- query: sql,
20
- };
21
- const format = options?.format ?? this.defaultFormat;
22
- if (format) {
23
- Object.assign(params, { format });
24
- }
25
- if (options?.params) {
26
- Object.assign(params, { query_params: options.params });
27
- }
28
- if (options?.settings) {
29
- Object.assign(params, {
30
- clickhouse_settings: options.settings,
31
- });
32
- }
33
- const result = await client.query(params);
34
- const payload = await result.json();
35
- if (Array.isArray(payload)) {
36
- return payload;
37
- }
38
- if (payload && typeof payload === "object") {
39
- const maybeData = payload.data;
40
- if (Array.isArray(maybeData)) {
41
- return maybeData;
42
- }
43
- }
44
- return [];
45
- }
46
- async introspect(options) {
47
- const allowTables = normalizeTableFilter(options?.tables);
48
- const hasFilter = allowTables.length > 0;
49
- const queryParams = {
50
- db: this.config.database,
51
- };
52
- if (hasFilter) {
53
- queryParams.tables = allowTables;
54
- }
55
- const filterClause = hasFilter ? " AND name IN {tables:Array(String)}" : "";
56
- const tables = await this.query(`SELECT name, engine, comment, total_rows, total_bytes, is_view, primary_key, sorting_key
57
- FROM system.tables
58
- WHERE database = {db:String}${filterClause}
59
- ORDER BY name`, { params: queryParams });
60
- const columnFilterClause = hasFilter
61
- ? " AND table IN {tables:Array(String)}"
62
- : "";
63
- const columns = await this.query(`SELECT table, name, type, position, default_kind, default_expression, comment,
64
- codec_expression, ttl_expression, is_in_primary_key,
65
- data_compressed_bytes, data_uncompressed_bytes
66
- FROM system.columns
67
- WHERE database = {db:String}${columnFilterClause}
68
- ORDER BY table, position`, { params: queryParams });
69
- const columnsByTable = new Map();
70
- for (const rawColumn of columns) {
71
- const list = columnsByTable.get(rawColumn.table) ?? [];
72
- list.push(transformColumnRow(rawColumn));
73
- columnsByTable.set(rawColumn.table, list);
74
- }
75
- const tableSchemas = tables.map((table) => {
76
- const tableColumns = columnsByTable.get(table.name) ?? [];
77
- const primaryKeyColumns = (0, clickhouse_js_1.parseKeyExpression)(table.primary_key);
78
- const totalRows = toNumber(table.total_rows);
79
- const totalBytes = toNumber(table.total_bytes);
80
- for (const column of tableColumns) {
81
- column.isPrimaryKey =
82
- column.isPrimaryKey || primaryKeyColumns.includes(column.name);
83
- }
84
- const indexes = primaryKeyColumns.length
85
- ? [
86
- {
87
- name: "primary_key",
88
- columns: primaryKeyColumns,
89
- unique: true,
90
- type: "PRIMARY KEY",
91
- ...(table.primary_key ? { definition: table.primary_key } : {}),
92
- },
93
- ]
94
- : [];
95
- const constraints = primaryKeyColumns.length
96
- ? [
97
- {
98
- name: "primary_key",
99
- type: "PRIMARY KEY",
100
- columns: primaryKeyColumns,
101
- },
102
- ]
103
- : [];
104
- const base = {
105
- name: table.name,
106
- schema: this.config.database,
107
- type: asTableType(table.is_view),
108
- engine: table.engine,
109
- columns: tableColumns,
110
- indexes,
111
- constraints,
112
- };
113
- const comment = sanitize(table.comment);
114
- if (comment !== undefined) {
115
- base.comment = comment;
116
- }
117
- const statistics = buildTableStatistics(totalRows, totalBytes);
118
- if (statistics) {
119
- base.statistics = statistics;
120
- }
121
- return base;
122
- });
123
- return {
124
- db: {
125
- kind: "clickhouse",
126
- name: this.config.database,
127
- },
128
- tables: tableSchemas,
129
- introspectedAt: new Date().toISOString(),
130
- };
131
- }
132
- async close() {
133
- if (!this.client)
134
- return;
135
- await this.client.close();
136
- this.client = null;
137
- }
138
- async ensureClient() {
139
- if (this.client) {
140
- return this.client;
141
- }
142
- this.client =
143
- this.overrides?.clientFactory?.() ??
144
- (0, client_1.createClient)(this.buildClientConfig());
145
- const pingResult = await this.safePing(this.client);
146
- if (pingResult && "success" in pingResult && pingResult.success === false) {
147
- throw pingResult.error ?? new Error("ClickHouse ping failed");
148
- }
149
- return this.client;
150
- }
151
- async safePing(client) {
152
- try {
153
- return await client.ping();
154
- }
155
- catch (error) {
156
- await client.close();
157
- this.client = null;
158
- throw error;
159
- }
160
- }
161
- buildClientConfig() {
162
- const merged = {
163
- ...(this.config.clientOptions ?? {}),
164
- };
165
- if (this.config.url) {
166
- merged.url = this.config.url;
167
- }
168
- else if (this.config.host) {
169
- const protocol = this.config.protocol ?? "https";
170
- const port = this.config.port ?? (protocol === "https" ? 8443 : 8123);
171
- merged.url = `${protocol}://${this.config.host}:${port}`;
172
- }
173
- merged.database = this.config.database;
174
- if (this.config.username) {
175
- merged.username = this.config.username;
176
- }
177
- if (this.config.password) {
178
- merged.password = this.config.password;
179
- }
180
- if (this.config.application) {
181
- merged.application = this.config.application;
182
- }
183
- if (this.config.clickhouseSettings) {
184
- merged.clickhouse_settings = {
185
- ...(this.config.clientOptions?.clickhouse_settings ?? {}),
186
- ...this.config.clickhouseSettings,
187
- };
188
- }
189
- return merged;
190
- }
191
- }
192
- exports.ClickHouseConnector = ClickHouseConnector;
193
- function normalizeTableFilter(tables) {
194
- if (!tables?.length)
195
- return [];
196
- const seen = new Set();
197
- const normalized = [];
198
- for (const table of tables) {
199
- if (!table)
200
- continue;
201
- const trimmed = table.trim();
202
- if (!trimmed)
203
- continue;
204
- const parts = trimmed.split(".");
205
- const tableName = parts[parts.length - 1];
206
- if (!tableName || seen.has(tableName))
207
- continue;
208
- seen.add(tableName);
209
- normalized.push(tableName);
210
- }
211
- return normalized;
212
- }
213
- function transformColumnRow(row) {
214
- const nullable = (0, clickhouse_js_1.isNullableType)(row.type);
215
- const unwrappedType = (0, clickhouse_js_1.unwrapTypeModifiers)(row.type);
216
- const { precision, scale } = (0, clickhouse_js_1.extractPrecisionScale)(row.type);
217
- const maxLength = (0, clickhouse_js_1.extractFixedStringLength)(row.type);
218
- const compressedBytes = toNumber(row.data_compressed_bytes);
219
- const uncompressedBytes = toNumber(row.data_uncompressed_bytes);
220
- const column = {
221
- name: row.name,
222
- type: unwrappedType,
223
- nullable,
224
- isPrimaryKey: Boolean(toNumber(row.is_in_primary_key)),
225
- isForeignKey: false,
226
- };
227
- column.rawType = row.type;
228
- const defaultKind = sanitize(row.default_kind);
229
- if (defaultKind !== undefined)
230
- column.defaultKind = defaultKind;
231
- const defaultExpression = sanitize(row.default_expression);
232
- if (defaultExpression !== undefined)
233
- column.defaultExpression = defaultExpression;
234
- const comment = sanitize(row.comment);
235
- if (comment !== undefined)
236
- column.comment = comment;
237
- const codec = sanitize(row.codec_expression);
238
- if (codec !== undefined)
239
- column.codec = codec;
240
- const ttlExpression = sanitize(row.ttl_expression);
241
- if (ttlExpression !== undefined)
242
- column.ttlExpression = ttlExpression;
243
- if (maxLength !== undefined)
244
- column.maxLength = maxLength;
245
- if (precision !== undefined)
246
- column.precision = precision;
247
- if (scale !== undefined)
248
- column.scale = scale;
249
- if (compressedBytes !== undefined || uncompressedBytes !== undefined) {
250
- column.statistics = {};
251
- if (compressedBytes !== undefined)
252
- column.statistics.compressedBytes = compressedBytes;
253
- if (uncompressedBytes !== undefined)
254
- column.statistics.uncompressedBytes = uncompressedBytes;
255
- }
256
- return column;
257
- }
258
- function toNumber(value) {
259
- if (value === null || value === undefined)
260
- return undefined;
261
- if (typeof value === "number")
262
- return value;
263
- const parsed = Number.parseFloat(String(value));
264
- return Number.isNaN(parsed) ? undefined : parsed;
265
- }
266
- function sanitize(value) {
267
- if (value === null || value === undefined)
268
- return undefined;
269
- const trimmed = String(value).trim();
270
- return trimmed.length ? trimmed : undefined;
271
- }
272
- function asTableType(isView) {
273
- if (typeof isView === "number") {
274
- return isView > 0 ? "view" : "table";
275
- }
276
- if (typeof isView === "string") {
277
- const normalized = isView.toLowerCase();
278
- return normalized === "1" || normalized === "true" ? "view" : "table";
279
- }
280
- return "table";
281
- }
282
- function buildTableStatistics(totalRows, totalBytes) {
283
- if (totalRows === undefined && totalBytes === undefined)
284
- return undefined;
285
- const stats = {};
286
- if (totalRows !== undefined)
287
- stats.totalRows = totalRows;
288
- if (totalBytes !== undefined)
289
- stats.totalBytes = totalBytes;
290
- return stats;
291
- }
292
- //# sourceMappingURL=clickhouse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"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"}