@querypanel/node-sdk 1.0.17 → 1.0.19

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 (35) hide show
  1. package/dist/cjs/__tests__/ingest.test.d.ts +5 -0
  2. package/dist/cjs/__tests__/ingest.test.d.ts.map +1 -0
  3. package/dist/cjs/__tests__/ingest.test.js +95 -0
  4. package/dist/cjs/__tests__/ingest.test.js.map +1 -0
  5. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.d.ts +2 -0
  6. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.d.ts.map +1 -0
  7. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.js +119 -0
  8. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.js.map +1 -0
  9. package/dist/cjs/connectors/base.d.ts +2 -3
  10. package/dist/cjs/connectors/base.d.ts.map +1 -1
  11. package/dist/cjs/connectors/clickhouse.d.ts +28 -10
  12. package/dist/cjs/connectors/clickhouse.d.ts.map +1 -1
  13. package/dist/cjs/connectors/clickhouse.js +55 -77
  14. package/dist/cjs/connectors/clickhouse.js.map +1 -1
  15. package/dist/cjs/index.d.ts +26 -0
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/index.js +114 -5
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/tenant-isolation.spec.d.ts +2 -0
  20. package/dist/cjs/tenant-isolation.spec.d.ts.map +1 -0
  21. package/dist/cjs/tenant-isolation.spec.js +366 -0
  22. package/dist/cjs/tenant-isolation.spec.js.map +1 -0
  23. package/dist/esm/connectors/clickhouse.d.ts +4 -4
  24. package/dist/esm/connectors/clickhouse.d.ts.map +1 -1
  25. package/dist/esm/connectors/clickhouse.js +25 -32
  26. package/dist/esm/connectors/clickhouse.js.map +1 -1
  27. package/dist/esm/index.d.ts +26 -0
  28. package/dist/esm/index.d.ts.map +1 -1
  29. package/dist/esm/index.js +114 -5
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/tenant-isolation.spec.d.ts +2 -0
  32. package/dist/esm/tenant-isolation.spec.d.ts.map +1 -0
  33. package/dist/esm/tenant-isolation.spec.js +364 -0
  34. package/dist/esm/tenant-isolation.spec.js.map +1 -0
  35. package/package.json +1 -1
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const index_js_1 = require("./index.js");
5
+ (0, vitest_1.describe)("Tenant Isolation", () => {
6
+ let sdk;
7
+ const mockBaseUrl = "https://api.test.com";
8
+ const mockToken = "test-token";
9
+ (0, vitest_1.beforeEach)(() => {
10
+ sdk = new index_js_1.QueryPanelSdkAPI(mockBaseUrl, mockToken);
11
+ });
12
+ (0, vitest_1.describe)("ClickHouse - ensureTenantIsolation", () => {
13
+ (0, vitest_1.it)("should add WHERE clause with tenant filter when missing", () => {
14
+ const metadata = {
15
+ name: "analytics",
16
+ dialect: "clickhouse",
17
+ tenantFieldName: "customer_id",
18
+ tenantFieldType: "String",
19
+ enforceTenantIsolation: true,
20
+ };
21
+ const sql = "SELECT * FROM transactions ORDER BY created_at DESC";
22
+ const params = {};
23
+ const tenantId = "customer-123";
24
+ // Access private method for testing
25
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
26
+ (0, vitest_1.expect)(result).toContain("WHERE customer_id = {customer_id:String}");
27
+ (0, vitest_1.expect)(result).toContain("ORDER BY created_at DESC");
28
+ (0, vitest_1.expect)(params).toHaveProperty("customer_id", "customer-123");
29
+ });
30
+ (0, vitest_1.it)("should add AND condition when WHERE clause exists", () => {
31
+ const metadata = {
32
+ name: "analytics",
33
+ dialect: "clickhouse",
34
+ tenantFieldName: "customer_id",
35
+ tenantFieldType: "String",
36
+ enforceTenantIsolation: true,
37
+ };
38
+ const sql = "SELECT * FROM transactions WHERE status = 'active' ORDER BY date";
39
+ const params = {};
40
+ const tenantId = "customer-123";
41
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
42
+ (0, vitest_1.expect)(result).toContain("customer_id = {customer_id:String}");
43
+ (0, vitest_1.expect)(result).toContain("AND");
44
+ (0, vitest_1.expect)(result).toContain("status = 'active'");
45
+ (0, vitest_1.expect)(params).toHaveProperty("customer_id", "customer-123");
46
+ });
47
+ (0, vitest_1.it)("should insert before GROUP BY when no WHERE clause", () => {
48
+ const metadata = {
49
+ name: "analytics",
50
+ dialect: "clickhouse",
51
+ tenantFieldName: "customer_id",
52
+ tenantFieldType: "UUID",
53
+ enforceTenantIsolation: true,
54
+ };
55
+ const sql = "SELECT product_id, COUNT(*) FROM orders GROUP BY product_id";
56
+ const params = {};
57
+ const tenantId = "customer-123";
58
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
59
+ (0, vitest_1.expect)(result).toContain("WHERE customer_id = {customer_id:UUID}");
60
+ (0, vitest_1.expect)(result).toMatch(/WHERE customer_id.*GROUP BY product_id/);
61
+ (0, vitest_1.expect)(params).toHaveProperty("customer_id", "customer-123");
62
+ });
63
+ (0, vitest_1.it)("should insert before LIMIT when no WHERE clause", () => {
64
+ const metadata = {
65
+ name: "analytics",
66
+ dialect: "clickhouse",
67
+ tenantFieldName: "tenant_id",
68
+ tenantFieldType: "Int64",
69
+ enforceTenantIsolation: true,
70
+ };
71
+ const sql = "SELECT * FROM events LIMIT 100";
72
+ const params = {};
73
+ const tenantId = "customer-123";
74
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
75
+ (0, vitest_1.expect)(result).toContain("WHERE tenant_id = {tenant_id:Int64}");
76
+ (0, vitest_1.expect)(result).toMatch(/WHERE tenant_id.*LIMIT 100/);
77
+ (0, vitest_1.expect)(params).toHaveProperty("tenant_id", "customer-123");
78
+ });
79
+ (0, vitest_1.it)("should not modify SQL if tenant field already present", () => {
80
+ const metadata = {
81
+ name: "analytics",
82
+ dialect: "clickhouse",
83
+ tenantFieldName: "customer_id",
84
+ tenantFieldType: "String",
85
+ enforceTenantIsolation: true,
86
+ };
87
+ const sql = "SELECT * FROM transactions WHERE customer_id = {customer_id:String} AND status = 'active'";
88
+ const params = {};
89
+ const tenantId = "customer-123";
90
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
91
+ // Should not modify SQL since tenant field is already present
92
+ (0, vitest_1.expect)(result).toBe(sql);
93
+ (0, vitest_1.expect)(params).toHaveProperty("customer_id", "customer-123");
94
+ });
95
+ (0, vitest_1.it)("should recognize {tenant_field} syntax without type", () => {
96
+ const metadata = {
97
+ name: "analytics",
98
+ dialect: "clickhouse",
99
+ tenantFieldName: "customer_id",
100
+ tenantFieldType: "String",
101
+ enforceTenantIsolation: true,
102
+ };
103
+ const sql = "SELECT * FROM transactions WHERE customer_id = {customer_id}";
104
+ const params = {};
105
+ const tenantId = "customer-123";
106
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
107
+ // Should not modify SQL since tenant field is already present (without type)
108
+ (0, vitest_1.expect)(result).toBe(sql);
109
+ (0, vitest_1.expect)(params).toHaveProperty("customer_id", "customer-123");
110
+ });
111
+ (0, vitest_1.it)("should handle different field types", () => {
112
+ const testCases = [
113
+ { type: "String", expected: "{org_id:String}" },
114
+ { type: "UUID", expected: "{org_id:UUID}" },
115
+ { type: "Int64", expected: "{org_id:Int64}" },
116
+ { type: "UInt64", expected: "{org_id:UInt64}" },
117
+ ];
118
+ testCases.forEach(({ type, expected }) => {
119
+ const metadata = {
120
+ name: "analytics",
121
+ dialect: "clickhouse",
122
+ tenantFieldName: "org_id",
123
+ tenantFieldType: type,
124
+ enforceTenantIsolation: true,
125
+ };
126
+ const sql = "SELECT * FROM data";
127
+ const params = {};
128
+ const tenantId = "org-123";
129
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
130
+ (0, vitest_1.expect)(result).toContain(`org_id = ${expected}`);
131
+ });
132
+ });
133
+ (0, vitest_1.it)("should default to String type when not specified", () => {
134
+ const metadata = {
135
+ name: "analytics",
136
+ dialect: "clickhouse",
137
+ tenantFieldName: "customer_id",
138
+ // tenantFieldType not specified
139
+ enforceTenantIsolation: true,
140
+ };
141
+ const sql = "SELECT * FROM transactions";
142
+ const params = {};
143
+ const tenantId = "customer-123";
144
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
145
+ (0, vitest_1.expect)(result).toContain("{customer_id:String}"); // Default to String
146
+ });
147
+ });
148
+ (0, vitest_1.describe)("Postgres - ensureTenantIsolation", () => {
149
+ (0, vitest_1.it)("should add WHERE clause for Postgres", () => {
150
+ const metadata = {
151
+ name: "users",
152
+ dialect: "postgres",
153
+ tenantFieldName: "tenant_id",
154
+ enforceTenantIsolation: true,
155
+ };
156
+ const sql = "SELECT * FROM users ORDER BY created_at DESC";
157
+ const params = {};
158
+ const tenantId = "tenant-123";
159
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
160
+ (0, vitest_1.expect)(result).toContain("WHERE tenant_id = 'tenant-123'");
161
+ (0, vitest_1.expect)(params).toHaveProperty("tenant_id", "tenant-123");
162
+ });
163
+ (0, vitest_1.it)("should not modify if tenant field already in SQL", () => {
164
+ const metadata = {
165
+ name: "users",
166
+ dialect: "postgres",
167
+ tenantFieldName: "tenant_id",
168
+ enforceTenantIsolation: true,
169
+ };
170
+ const sql = "SELECT * FROM users WHERE tenant_id = $1 AND active = true";
171
+ const params = { tenant_id: "tenant-123" };
172
+ const tenantId = "tenant-123";
173
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
174
+ // Should not modify since tenant_id is in SQL
175
+ (0, vitest_1.expect)(result).toBe(sql);
176
+ });
177
+ });
178
+ (0, vitest_1.describe)("Enforcement Control", () => {
179
+ (0, vitest_1.it)("should not modify SQL when enforceTenantIsolation is false", () => {
180
+ const metadata = {
181
+ name: "public_data",
182
+ dialect: "clickhouse",
183
+ tenantFieldName: "customer_id",
184
+ tenantFieldType: "String",
185
+ enforceTenantIsolation: false, // Disabled
186
+ };
187
+ const sql = "SELECT * FROM public_transactions";
188
+ const params = {};
189
+ const tenantId = "customer-123";
190
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
191
+ // SQL should not be modified
192
+ (0, vitest_1.expect)(result).toBe(sql);
193
+ });
194
+ (0, vitest_1.it)("should not modify SQL when tenantFieldName is not set", () => {
195
+ const metadata = {
196
+ name: "analytics",
197
+ dialect: "clickhouse",
198
+ // No tenantFieldName
199
+ enforceTenantIsolation: true,
200
+ };
201
+ const sql = "SELECT * FROM transactions";
202
+ const params = {};
203
+ const tenantId = "customer-123";
204
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
205
+ // SQL should not be modified
206
+ (0, vitest_1.expect)(result).toBe(sql);
207
+ });
208
+ (0, vitest_1.it)("should still add param when enforcement is disabled but field is set", () => {
209
+ const metadata = {
210
+ name: "analytics",
211
+ dialect: "clickhouse",
212
+ tenantFieldName: "customer_id",
213
+ tenantFieldType: "String",
214
+ enforceTenantIsolation: false,
215
+ };
216
+ const sql = "SELECT * FROM transactions";
217
+ const params = {};
218
+ const tenantId = "customer-123";
219
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
220
+ // SQL not modified, but param should be added
221
+ (0, vitest_1.expect)(result).toBe(sql);
222
+ // Note: params won't be added because enforcement is disabled
223
+ // The ensureTenantIsolation returns early
224
+ });
225
+ });
226
+ (0, vitest_1.describe)("Edge Cases", () => {
227
+ (0, vitest_1.it)("should replace null tenant parameter value with actual tenantId", () => {
228
+ const metadata = {
229
+ name: "analytics",
230
+ dialect: "clickhouse",
231
+ tenantFieldName: "customer_id",
232
+ tenantFieldType: "Int64",
233
+ enforceTenantIsolation: true,
234
+ };
235
+ const sql = "SELECT COUNT(*) FROM transactions WHERE customer_id = {customer_id:Int64} AND state = {failed_state:String}";
236
+ const params = {
237
+ customer_id: null, // API returned null value
238
+ failed_state: "DECLINE",
239
+ };
240
+ const tenantId = "123";
241
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
242
+ // SQL should not be modified since customer_id is already in the query
243
+ (0, vitest_1.expect)(result).toBe(sql);
244
+ // But the null value should be replaced with actual tenantId
245
+ (0, vitest_1.expect)(params).toHaveProperty("customer_id", "123");
246
+ (0, vitest_1.expect)(params).toHaveProperty("failed_state", "DECLINE");
247
+ });
248
+ (0, vitest_1.it)("should handle SQL with semicolon at end", () => {
249
+ const metadata = {
250
+ name: "analytics",
251
+ dialect: "clickhouse",
252
+ tenantFieldName: "customer_id",
253
+ tenantFieldType: "String",
254
+ enforceTenantIsolation: true,
255
+ };
256
+ const sql = "SELECT * FROM transactions;";
257
+ const params = {};
258
+ const tenantId = "customer-123";
259
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
260
+ (0, vitest_1.expect)(result).toContain("WHERE customer_id = {customer_id:String}");
261
+ (0, vitest_1.expect)(result).toMatch(/WHERE.*customer_id.*;$/);
262
+ });
263
+ (0, vitest_1.it)("should handle multi-line SQL", () => {
264
+ const metadata = {
265
+ name: "analytics",
266
+ dialect: "clickhouse",
267
+ tenantFieldName: "customer_id",
268
+ tenantFieldType: "String",
269
+ enforceTenantIsolation: true,
270
+ };
271
+ const sql = `
272
+ SELECT
273
+ product_id,
274
+ COUNT(*) as count
275
+ FROM orders
276
+ GROUP BY product_id
277
+ ORDER BY count DESC
278
+ `;
279
+ const params = {};
280
+ const tenantId = "customer-123";
281
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
282
+ (0, vitest_1.expect)(result).toContain("WHERE customer_id = {customer_id:String}");
283
+ (0, vitest_1.expect)(result).toMatch(/WHERE.*GROUP BY/s);
284
+ });
285
+ (0, vitest_1.it)("should be case-insensitive for SQL keywords", () => {
286
+ const metadata = {
287
+ name: "analytics",
288
+ dialect: "clickhouse",
289
+ tenantFieldName: "customer_id",
290
+ tenantFieldType: "String",
291
+ enforceTenantIsolation: true,
292
+ };
293
+ const sql = "select * from transactions order by date";
294
+ const params = {};
295
+ const tenantId = "customer-123";
296
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
297
+ (0, vitest_1.expect)(result).toContain("customer_id = {customer_id:String}");
298
+ });
299
+ (0, vitest_1.it)("should handle HAVING clause", () => {
300
+ const metadata = {
301
+ name: "analytics",
302
+ dialect: "clickhouse",
303
+ tenantFieldName: "customer_id",
304
+ tenantFieldType: "String",
305
+ enforceTenantIsolation: true,
306
+ };
307
+ const sql = "SELECT product_id, COUNT(*) as cnt FROM orders GROUP BY product_id HAVING cnt > 10";
308
+ const params = {};
309
+ const tenantId = "customer-123";
310
+ const result = sdk.ensureTenantIsolation(sql, params, metadata, tenantId);
311
+ (0, vitest_1.expect)(result).toContain("WHERE customer_id = {customer_id:String}");
312
+ (0, vitest_1.expect)(result).toMatch(/WHERE.*GROUP BY/);
313
+ });
314
+ });
315
+ (0, vitest_1.describe)("attachClickhouse configuration", () => {
316
+ (0, vitest_1.it)("should default enforceTenantIsolation to true when tenantFieldName is set", () => {
317
+ const mockFn = async () => ({});
318
+ sdk.attachClickhouse("test", mockFn, {
319
+ tenantFieldName: "customer_id",
320
+ tenantFieldType: "String",
321
+ // enforceTenantIsolation not specified
322
+ });
323
+ const metadata = sdk.databaseMetadata.get("test");
324
+ (0, vitest_1.expect)(metadata.enforceTenantIsolation).toBe(true);
325
+ });
326
+ (0, vitest_1.it)("should respect explicit enforceTenantIsolation value", () => {
327
+ const mockFn = async () => ({});
328
+ sdk.attachClickhouse("test", mockFn, {
329
+ tenantFieldName: "customer_id",
330
+ tenantFieldType: "String",
331
+ enforceTenantIsolation: false,
332
+ });
333
+ const metadata = sdk.databaseMetadata.get("test");
334
+ (0, vitest_1.expect)(metadata.enforceTenantIsolation).toBe(false);
335
+ });
336
+ (0, vitest_1.it)("should default tenantFieldType to String", () => {
337
+ const mockFn = async () => ({});
338
+ sdk.attachClickhouse("test", mockFn, {
339
+ tenantFieldName: "customer_id",
340
+ // tenantFieldType not specified
341
+ });
342
+ const metadata = sdk.databaseMetadata.get("test");
343
+ (0, vitest_1.expect)(metadata.tenantFieldType).toBe("String");
344
+ });
345
+ });
346
+ (0, vitest_1.describe)("attachPostgres configuration", () => {
347
+ (0, vitest_1.it)("should default enforceTenantIsolation to true when tenantFieldName is set", () => {
348
+ const mockFn = async () => ({ rows: [], fields: [] });
349
+ sdk.attachPostgres("test", mockFn, {
350
+ tenantFieldName: "tenant_id",
351
+ // enforceTenantIsolation not specified
352
+ });
353
+ const metadata = sdk.databaseMetadata.get("test");
354
+ (0, vitest_1.expect)(metadata.enforceTenantIsolation).toBe(true);
355
+ });
356
+ (0, vitest_1.it)("should not set tenantFieldType for Postgres", () => {
357
+ const mockFn = async () => ({ rows: [], fields: [] });
358
+ sdk.attachPostgres("test", mockFn, {
359
+ tenantFieldName: "tenant_id",
360
+ });
361
+ const metadata = sdk.databaseMetadata.get("test");
362
+ (0, vitest_1.expect)(metadata.tenantFieldType).toBeUndefined();
363
+ });
364
+ });
365
+ });
366
+ //# sourceMappingURL=tenant-isolation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-isolation.spec.js","sourceRoot":"","sources":["../../src/tenant-isolation.spec.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { type ClickHouseClient, type ClickHouseClientConfigOptions } from "@clickhouse/client";
2
- import type { IntrospectOptions, SchemaIntrospection } from "../schema/types.js";
3
- import type { DatabaseConnector, QueryOptions } from "./base.js";
1
+ import { type ClickHouseClient, type ClickHouseClientConfigOptions } from '@clickhouse/client';
2
+ import type { IntrospectOptions, SchemaIntrospection } from '../schema/types.js';
3
+ import type { DatabaseConnector, QueryOptions } from './base.js';
4
4
  export interface ClickHouseConnectorConfig {
5
5
  /** Fully qualified ClickHouse URL. Overrides host/port/protocol when provided. */
6
6
  url?: string;
7
7
  host?: string;
8
8
  port?: number;
9
- protocol?: "http" | "https";
9
+ protocol?: 'http' | 'https';
10
10
  database: string;
11
11
  username?: string;
12
12
  password?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAIlC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAEX,iBAAiB,EACjB,mBAAmB,EAEnB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACzC,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,4BAA4B;IAC5C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,gBAAgB,CAAC;CACvC;AA4BD,qBAAa,mBAAoB,YAAW,iBAAiB;IAO3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP3B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAEC;gBAGb,MAAM,EAAE,yBAAyB,EACjC,SAAS,GAAE,4BAAiC;IAKxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC;IAmCT,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyGrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,YAAY;YAcZ,QAAQ;IAYtB,OAAO,CAAC,iBAAiB;CAkCzB"}
1
+ {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAGrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAA6B,MAAM,oBAAoB,CAAC;AAQ5G,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACtC,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,4BAA4B;IACzC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,gBAAgB,CAAC;CAC1C;AA4BD,qBAAa,mBAAoB,YAAW,iBAAiB;IAKrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqE;gBAG9E,MAAM,EAAE,yBAAyB,EACjC,SAAS,GAAE,4BAAiC;IAK3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAiCrF,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsGrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,YAAY;YAYZ,QAAQ;IAUtB,OAAO,CAAC,iBAAiB;CAkC5B"}
@@ -1,10 +1,10 @@
1
- import { createClient, } from "@clickhouse/client";
2
- import { extractFixedStringLength, extractPrecisionScale, isNullableType, parseKeyExpression, unwrapTypeModifiers, } from "../utils/clickhouse.js";
1
+ import { createClient, } from '@clickhouse/client';
2
+ import { extractFixedStringLength, extractPrecisionScale, isNullableType, parseKeyExpression, unwrapTypeModifiers, } from '../utils/clickhouse.js';
3
3
  export class ClickHouseConnector {
4
4
  constructor(config, overrides = {}) {
5
5
  this.config = config;
6
6
  this.overrides = overrides;
7
- this.defaultFormat = "JSONEachRow";
7
+ this.defaultFormat = 'JSONEachRow';
8
8
  this.client = overrides.client ?? null;
9
9
  }
10
10
  async connect() {
@@ -23,16 +23,14 @@ export class ClickHouseConnector {
23
23
  Object.assign(params, { query_params: options.params });
24
24
  }
25
25
  if (options?.settings) {
26
- Object.assign(params, {
27
- clickhouse_settings: options.settings,
28
- });
26
+ Object.assign(params, { clickhouse_settings: options.settings });
29
27
  }
30
28
  const result = await client.query(params);
31
29
  const payload = await result.json();
32
30
  if (Array.isArray(payload)) {
33
31
  return payload;
34
32
  }
35
- if (payload && typeof payload === "object") {
33
+ if (payload && typeof payload === 'object') {
36
34
  const maybeData = payload.data;
37
35
  if (Array.isArray(maybeData)) {
38
36
  return maybeData;
@@ -49,14 +47,12 @@ export class ClickHouseConnector {
49
47
  if (hasFilter) {
50
48
  queryParams.tables = allowTables;
51
49
  }
52
- const filterClause = hasFilter ? " AND name IN {tables:Array(String)}" : "";
50
+ const filterClause = hasFilter ? ' AND name IN {tables:Array(String)}' : '';
53
51
  const tables = await this.query(`SELECT name, engine, comment, total_rows, total_bytes, is_view, primary_key, sorting_key
54
52
  FROM system.tables
55
53
  WHERE database = {db:String}${filterClause}
56
54
  ORDER BY name`, { params: queryParams });
57
- const columnFilterClause = hasFilter
58
- ? " AND table IN {tables:Array(String)}"
59
- : "";
55
+ const columnFilterClause = hasFilter ? ' AND table IN {tables:Array(String)}' : '';
60
56
  const columns = await this.query(`SELECT table, name, type, position, default_kind, default_expression, comment,
61
57
  codec_expression, ttl_expression, is_in_primary_key,
62
58
  data_compressed_bytes, data_uncompressed_bytes
@@ -75,16 +71,15 @@ export class ClickHouseConnector {
75
71
  const totalRows = toNumber(table.total_rows);
76
72
  const totalBytes = toNumber(table.total_bytes);
77
73
  for (const column of tableColumns) {
78
- column.isPrimaryKey =
79
- column.isPrimaryKey || primaryKeyColumns.includes(column.name);
74
+ column.isPrimaryKey = column.isPrimaryKey || primaryKeyColumns.includes(column.name);
80
75
  }
81
76
  const indexes = primaryKeyColumns.length
82
77
  ? [
83
78
  {
84
- name: "primary_key",
79
+ name: 'primary_key',
85
80
  columns: primaryKeyColumns,
86
81
  unique: true,
87
- type: "PRIMARY KEY",
82
+ type: 'PRIMARY KEY',
88
83
  ...(table.primary_key ? { definition: table.primary_key } : {}),
89
84
  },
90
85
  ]
@@ -92,8 +87,8 @@ export class ClickHouseConnector {
92
87
  const constraints = primaryKeyColumns.length
93
88
  ? [
94
89
  {
95
- name: "primary_key",
96
- type: "PRIMARY KEY",
90
+ name: 'primary_key',
91
+ type: 'PRIMARY KEY',
97
92
  columns: primaryKeyColumns,
98
93
  },
99
94
  ]
@@ -119,7 +114,7 @@ export class ClickHouseConnector {
119
114
  });
120
115
  return {
121
116
  db: {
122
- kind: "clickhouse",
117
+ kind: 'clickhouse',
123
118
  name: this.config.database,
124
119
  },
125
120
  tables: tableSchemas,
@@ -136,12 +131,10 @@ export class ClickHouseConnector {
136
131
  if (this.client) {
137
132
  return this.client;
138
133
  }
139
- this.client =
140
- this.overrides?.clientFactory?.() ??
141
- createClient(this.buildClientConfig());
134
+ this.client = this.overrides?.clientFactory?.() ?? createClient(this.buildClientConfig());
142
135
  const pingResult = await this.safePing(this.client);
143
- if (pingResult && "success" in pingResult && pingResult.success === false) {
144
- throw pingResult.error ?? new Error("ClickHouse ping failed");
136
+ if (pingResult && 'success' in pingResult && pingResult.success === false) {
137
+ throw pingResult.error ?? new Error('ClickHouse ping failed');
145
138
  }
146
139
  return this.client;
147
140
  }
@@ -163,8 +156,8 @@ export class ClickHouseConnector {
163
156
  merged.url = this.config.url;
164
157
  }
165
158
  else if (this.config.host) {
166
- const protocol = this.config.protocol ?? "https";
167
- const port = this.config.port ?? (protocol === "https" ? 8443 : 8123);
159
+ const protocol = this.config.protocol ?? 'https';
160
+ const port = this.config.port ?? (protocol === 'https' ? 8443 : 8123);
168
161
  merged.url = `${protocol}://${this.config.host}:${port}`;
169
162
  }
170
163
  merged.database = this.config.database;
@@ -197,7 +190,7 @@ function normalizeTableFilter(tables) {
197
190
  const trimmed = table.trim();
198
191
  if (!trimmed)
199
192
  continue;
200
- const parts = trimmed.split(".");
193
+ const parts = trimmed.split('.');
201
194
  const tableName = parts[parts.length - 1];
202
195
  if (!tableName || seen.has(tableName))
203
196
  continue;
@@ -254,7 +247,7 @@ function transformColumnRow(row) {
254
247
  function toNumber(value) {
255
248
  if (value === null || value === undefined)
256
249
  return undefined;
257
- if (typeof value === "number")
250
+ if (typeof value === 'number')
258
251
  return value;
259
252
  const parsed = Number.parseFloat(String(value));
260
253
  return Number.isNaN(parsed) ? undefined : parsed;
@@ -266,14 +259,14 @@ function sanitize(value) {
266
259
  return trimmed.length ? trimmed : undefined;
267
260
  }
268
261
  function asTableType(isView) {
269
- if (typeof isView === "number") {
270
- return isView > 0 ? "view" : "table";
262
+ if (typeof isView === 'number') {
263
+ return isView > 0 ? 'view' : 'table';
271
264
  }
272
- if (typeof isView === "string") {
265
+ if (typeof isView === 'string') {
273
266
  const normalized = isView.toLowerCase();
274
- return normalized === "1" || normalized === "true" ? "view" : "table";
267
+ return normalized === '1' || normalized === 'true' ? 'view' : 'table';
275
268
  }
276
- return "table";
269
+ return 'table';
277
270
  }
278
271
  function buildTableStatistics(totalRows, totalBytes) {
279
272
  if (totalRows === undefined && totalBytes === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"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"}