@querypanel/node-sdk 1.0.25 → 1.0.26

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 (145) hide show
  1. package/README.md +23 -0
  2. package/dist/cjs/__tests__/ingest.test.d.ts +5 -0
  3. package/dist/cjs/__tests__/ingest.test.d.ts.map +1 -0
  4. package/dist/cjs/__tests__/ingest.test.js +95 -0
  5. package/dist/cjs/__tests__/ingest.test.js.map +1 -0
  6. package/dist/cjs/adapters/clickhouse.d.ts +48 -0
  7. package/dist/cjs/adapters/clickhouse.d.ts.map +1 -0
  8. package/dist/cjs/adapters/clickhouse.js +284 -0
  9. package/dist/cjs/adapters/clickhouse.js.map +1 -0
  10. package/dist/cjs/adapters/introspection.spec.d.ts +2 -0
  11. package/dist/cjs/adapters/introspection.spec.d.ts.map +1 -0
  12. package/dist/cjs/adapters/introspection.spec.js +192 -0
  13. package/dist/cjs/adapters/introspection.spec.js.map +1 -0
  14. package/dist/cjs/adapters/postgres.d.ts +46 -0
  15. package/dist/cjs/adapters/postgres.d.ts.map +1 -0
  16. package/dist/cjs/adapters/postgres.js +457 -0
  17. package/dist/cjs/adapters/postgres.js.map +1 -0
  18. package/dist/cjs/adapters/postgres.spec.d.ts +2 -0
  19. package/dist/cjs/adapters/postgres.spec.d.ts.map +1 -0
  20. package/dist/cjs/adapters/postgres.spec.js +37 -0
  21. package/dist/cjs/adapters/postgres.spec.js.map +1 -0
  22. package/dist/cjs/adapters/types.d.ts +38 -0
  23. package/dist/cjs/adapters/types.d.ts.map +1 -0
  24. package/dist/cjs/adapters/types.js +3 -0
  25. package/dist/cjs/adapters/types.js.map +1 -0
  26. package/dist/cjs/anonymize.spec.d.ts +2 -0
  27. package/dist/cjs/anonymize.spec.d.ts.map +1 -0
  28. package/dist/cjs/anonymize.spec.js +78 -0
  29. package/dist/cjs/anonymize.spec.js.map +1 -0
  30. package/dist/cjs/clickhouseClient.spec.d.ts +2 -0
  31. package/dist/cjs/clickhouseClient.spec.d.ts.map +1 -0
  32. package/dist/cjs/clickhouseClient.spec.js +286 -0
  33. package/dist/cjs/clickhouseClient.spec.js.map +1 -0
  34. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.d.ts +2 -0
  35. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.d.ts.map +1 -0
  36. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.js +119 -0
  37. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.js.map +1 -0
  38. package/dist/cjs/connectors/base.d.ts +13 -0
  39. package/dist/cjs/connectors/base.d.ts.map +1 -0
  40. package/dist/cjs/connectors/base.js +3 -0
  41. package/dist/cjs/connectors/base.js.map +1 -0
  42. package/dist/cjs/connectors/clickhouse.d.ts +53 -0
  43. package/dist/cjs/connectors/clickhouse.d.ts.map +1 -0
  44. package/dist/cjs/connectors/clickhouse.js +270 -0
  45. package/dist/cjs/connectors/clickhouse.js.map +1 -0
  46. package/dist/cjs/index.d.ts +490 -0
  47. package/dist/cjs/index.d.ts.map +1 -0
  48. package/dist/cjs/index.js +843 -0
  49. package/dist/cjs/index.js.map +1 -0
  50. package/dist/cjs/index.test.d.ts +2 -0
  51. package/dist/cjs/index.test.d.ts.map +1 -0
  52. package/dist/cjs/index.test.js +185 -0
  53. package/dist/cjs/index.test.js.map +1 -0
  54. package/dist/cjs/introspectV3.d.ts +45 -0
  55. package/dist/cjs/introspectV3.d.ts.map +1 -0
  56. package/dist/cjs/introspectV3.js +99 -0
  57. package/dist/cjs/introspectV3.js.map +1 -0
  58. package/dist/cjs/multidb.spec.d.ts +2 -0
  59. package/dist/cjs/multidb.spec.d.ts.map +1 -0
  60. package/dist/cjs/multidb.spec.js +76 -0
  61. package/dist/cjs/multidb.spec.js.map +1 -0
  62. package/dist/cjs/package.json +1 -0
  63. package/dist/cjs/schema/types.d.ts +73 -0
  64. package/dist/cjs/schema/types.d.ts.map +1 -0
  65. package/dist/cjs/schema/types.js +3 -0
  66. package/dist/cjs/schema/types.js.map +1 -0
  67. package/dist/cjs/tenant-isolation.spec.d.ts +2 -0
  68. package/dist/cjs/tenant-isolation.spec.d.ts.map +1 -0
  69. package/dist/cjs/tenant-isolation.spec.js +420 -0
  70. package/dist/cjs/tenant-isolation.spec.js.map +1 -0
  71. package/dist/cjs/utils/clickhouse.d.ts +9 -0
  72. package/dist/cjs/utils/clickhouse.d.ts.map +1 -0
  73. package/dist/cjs/utils/clickhouse.js +99 -0
  74. package/dist/cjs/utils/clickhouse.js.map +1 -0
  75. package/dist/esm/adapters/clickhouse.d.ts +48 -0
  76. package/dist/esm/adapters/clickhouse.d.ts.map +1 -0
  77. package/dist/esm/adapters/clickhouse.js +280 -0
  78. package/dist/esm/adapters/clickhouse.js.map +1 -0
  79. package/dist/esm/adapters/introspection.spec.d.ts +2 -0
  80. package/dist/esm/adapters/introspection.spec.d.ts.map +1 -0
  81. package/dist/esm/adapters/introspection.spec.js +190 -0
  82. package/dist/esm/adapters/introspection.spec.js.map +1 -0
  83. package/dist/esm/adapters/postgres.d.ts +46 -0
  84. package/dist/esm/adapters/postgres.d.ts.map +1 -0
  85. package/dist/esm/adapters/postgres.js +453 -0
  86. package/dist/esm/adapters/postgres.js.map +1 -0
  87. package/dist/esm/adapters/postgres.spec.d.ts +2 -0
  88. package/dist/esm/adapters/postgres.spec.d.ts.map +1 -0
  89. package/dist/esm/adapters/postgres.spec.js +35 -0
  90. package/dist/esm/adapters/postgres.spec.js.map +1 -0
  91. package/dist/esm/adapters/types.d.ts +38 -0
  92. package/dist/esm/adapters/types.d.ts.map +1 -0
  93. package/dist/esm/adapters/types.js +2 -0
  94. package/dist/esm/adapters/types.js.map +1 -0
  95. package/dist/esm/anonymize.spec.d.ts +2 -0
  96. package/dist/esm/anonymize.spec.d.ts.map +1 -0
  97. package/dist/esm/anonymize.spec.js +76 -0
  98. package/dist/esm/anonymize.spec.js.map +1 -0
  99. package/dist/esm/clickhouseClient.spec.d.ts +2 -0
  100. package/dist/esm/clickhouseClient.spec.d.ts.map +1 -0
  101. package/dist/esm/clickhouseClient.spec.js +281 -0
  102. package/dist/esm/clickhouseClient.spec.js.map +1 -0
  103. package/dist/esm/connectors/base.d.ts +14 -0
  104. package/dist/esm/connectors/base.d.ts.map +1 -0
  105. package/dist/esm/connectors/base.js +2 -0
  106. package/dist/esm/connectors/base.js.map +1 -0
  107. package/dist/esm/connectors/clickhouse.d.ts +35 -0
  108. package/dist/esm/connectors/clickhouse.d.ts.map +1 -0
  109. package/dist/esm/connectors/clickhouse.js +281 -0
  110. package/dist/esm/connectors/clickhouse.js.map +1 -0
  111. package/dist/esm/index.d.ts +490 -0
  112. package/dist/esm/index.d.ts.map +1 -0
  113. package/dist/esm/index.js +838 -0
  114. package/dist/esm/index.js.map +1 -0
  115. package/dist/esm/index.test.d.ts +2 -0
  116. package/dist/esm/index.test.d.ts.map +1 -0
  117. package/dist/esm/index.test.js +183 -0
  118. package/dist/esm/index.test.js.map +1 -0
  119. package/dist/esm/introspectV3.d.ts +45 -0
  120. package/dist/esm/introspectV3.d.ts.map +1 -0
  121. package/dist/esm/introspectV3.js +96 -0
  122. package/dist/esm/introspectV3.js.map +1 -0
  123. package/dist/esm/multidb.spec.d.ts +2 -0
  124. package/dist/esm/multidb.spec.d.ts.map +1 -0
  125. package/dist/esm/multidb.spec.js +74 -0
  126. package/dist/esm/multidb.spec.js.map +1 -0
  127. package/dist/esm/schema/types.d.ts +73 -0
  128. package/dist/esm/schema/types.d.ts.map +1 -0
  129. package/dist/esm/schema/types.js +2 -0
  130. package/dist/esm/schema/types.js.map +1 -0
  131. package/dist/esm/tenant-isolation.spec.d.ts +2 -0
  132. package/dist/esm/tenant-isolation.spec.d.ts.map +1 -0
  133. package/dist/esm/tenant-isolation.spec.js +418 -0
  134. package/dist/esm/tenant-isolation.spec.js.map +1 -0
  135. package/dist/esm/utils/clickhouse.d.ts +9 -0
  136. package/dist/esm/utils/clickhouse.d.ts.map +1 -0
  137. package/dist/esm/utils/clickhouse.js +92 -0
  138. package/dist/esm/utils/clickhouse.js.map +1 -0
  139. package/package.json +73 -53
  140. package/dist/index.cjs +0 -1471
  141. package/dist/index.cjs.map +0 -1
  142. package/dist/index.d.cts +0 -468
  143. package/dist/index.d.ts +0 -468
  144. package/dist/index.js +0 -1443
  145. package/dist/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymize.spec.js","sourceRoot":"","sources":["../../src/anonymize.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clickhouseClient.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouseClient.spec.d.ts","sourceRoot":"","sources":["../../src/clickhouseClient.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const duckdb_1 = __importDefault(require("duckdb"));
7
+ const vitest_1 = require("vitest");
8
+ const index_js_1 = require("./index.js");
9
+ // @ts-expect-error
10
+ globalThis.fetch = async (input, _init) => {
11
+ const url = String(input);
12
+ if (url.endsWith("/v2/active-charts")) {
13
+ return {
14
+ ok: true,
15
+ status: 200,
16
+ text: async () => JSON.stringify({
17
+ data: [
18
+ {
19
+ id: "ac1",
20
+ chart_id: "1",
21
+ order: 1,
22
+ meta: null,
23
+ organization_id: null,
24
+ tenant_id: null,
25
+ user_id: null,
26
+ created_at: null,
27
+ updated_at: null,
28
+ },
29
+ ],
30
+ pagination: {
31
+ page: 1,
32
+ limit: 10,
33
+ total: 1,
34
+ totalPages: 1,
35
+ hasNext: false,
36
+ hasPrev: false,
37
+ },
38
+ }),
39
+ };
40
+ }
41
+ if (/\/v2\/charts\/[^/]+$/.test(url)) {
42
+ return {
43
+ ok: true,
44
+ status: 200,
45
+ text: async () => JSON.stringify({
46
+ id: "1",
47
+ title: "Single",
48
+ description: null,
49
+ sql: "SELECT id, value FROM demo ORDER BY id",
50
+ vega_lite_spec: { mark: "point" },
51
+ query_id: null,
52
+ organization_id: null,
53
+ tenant_id: null,
54
+ user_id: null,
55
+ created_at: null,
56
+ updated_at: null,
57
+ }),
58
+ };
59
+ }
60
+ if (url.endsWith("/v2/charts")) {
61
+ return {
62
+ ok: true,
63
+ status: 200,
64
+ text: async () => JSON.stringify({
65
+ data: [
66
+ {
67
+ id: "1",
68
+ title: "Demo",
69
+ description: null,
70
+ sql: "SELECT id, value FROM demo ORDER BY id",
71
+ vega_lite_spec: { mark: "bar" },
72
+ query_id: null,
73
+ organization_id: null,
74
+ tenant_id: null,
75
+ user_id: null,
76
+ created_at: null,
77
+ updated_at: null,
78
+ },
79
+ ],
80
+ pagination: {
81
+ page: 1,
82
+ limit: 10,
83
+ total: 1,
84
+ totalPages: 1,
85
+ hasNext: false,
86
+ hasPrev: false,
87
+ },
88
+ }),
89
+ };
90
+ }
91
+ if (url.endsWith("/v2/generate-sql")) {
92
+ return {
93
+ ok: true,
94
+ status: 200,
95
+ text: async () => JSON.stringify({
96
+ sql: "SELECT id as x, value as y FROM demo ORDER BY id",
97
+ rationale: "ok",
98
+ context: [],
99
+ }),
100
+ };
101
+ }
102
+ if (url.endsWith("/v2/generate-chart")) {
103
+ return {
104
+ ok: true,
105
+ status: 200,
106
+ text: async () => JSON.stringify({ vegaLiteSpec: { mark: "line" }, notes: null }),
107
+ };
108
+ }
109
+ if (/\/v2\/active-charts\/[^/]+$/.test(url)) {
110
+ const id = url.split("/").pop();
111
+ if (id === "ac1") {
112
+ return {
113
+ ok: true,
114
+ status: 200,
115
+ text: async () => JSON.stringify({
116
+ id: "ac1",
117
+ chart_id: "1",
118
+ order: 1,
119
+ meta: null,
120
+ organization_id: null,
121
+ tenant_id: null,
122
+ user_id: null,
123
+ created_at: null,
124
+ updated_at: null,
125
+ }),
126
+ };
127
+ }
128
+ if (id === "ac2") {
129
+ return {
130
+ ok: true,
131
+ status: 200,
132
+ text: async () => JSON.stringify({
133
+ id: "ac2",
134
+ chart_id: "1",
135
+ order: 1,
136
+ meta: null,
137
+ organization_id: null,
138
+ tenant_id: null,
139
+ user_id: null,
140
+ created_at: null,
141
+ updated_at: null,
142
+ chart: {
143
+ id: "1",
144
+ title: "Nested",
145
+ description: null,
146
+ sql: "SELECT id, value FROM demo ORDER BY id",
147
+ vega_lite_spec: { mark: "square" },
148
+ query_id: null,
149
+ organization_id: null,
150
+ tenant_id: null,
151
+ user_id: null,
152
+ created_at: null,
153
+ updated_at: null,
154
+ },
155
+ }),
156
+ };
157
+ }
158
+ }
159
+ // other endpoints not used in this test
160
+ return { ok: false, status: 404, text: async () => "" };
161
+ };
162
+ // Helper to create an in-memory DuckDB connection and run queries
163
+ function createDuckDb() {
164
+ const db = new duckdb_1.default.Database(":memory:");
165
+ const conn = db.connect();
166
+ return { db, conn };
167
+ }
168
+ (0, vitest_1.describe)("attachClickhouseClient", () => {
169
+ let conn;
170
+ let clickhouseClientFn;
171
+ (0, vitest_1.beforeAll)(async () => {
172
+ ({ conn } = createDuckDb());
173
+ clickhouseClientFn = async ({ query }) => {
174
+ const rows = await new Promise((resolve, reject) => {
175
+ conn.all(query, (err, result) => {
176
+ if (err)
177
+ return reject(err);
178
+ resolve(result);
179
+ });
180
+ });
181
+ const result = {
182
+ json: async () => rows,
183
+ };
184
+ return result;
185
+ };
186
+ await new Promise((resolve, reject) => {
187
+ conn.run("CREATE TABLE demo(id INTEGER, value VARCHAR)", (err) => {
188
+ if (err)
189
+ return reject(err);
190
+ conn.run("INSERT INTO demo VALUES (1, 'a'), (2, 'b')", (err2) => {
191
+ if (err2)
192
+ return reject(err2);
193
+ resolve();
194
+ });
195
+ });
196
+ });
197
+ });
198
+ (0, vitest_1.afterAll)(() => {
199
+ try {
200
+ conn.close();
201
+ }
202
+ catch { }
203
+ });
204
+ (0, vitest_1.it)("returns values from runDataOnCLient when listing charts", async () => {
205
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
206
+ sdk.attachClickhouseClient(clickhouseClientFn);
207
+ const result = await sdk.listCharts({ tenantId: "t1" });
208
+ (0, vitest_1.expect)(result.data.length).toBe(1);
209
+ const chart = result.data[0];
210
+ (0, vitest_1.expect)(chart.vega_lite_spec?.data?.values).toEqual([
211
+ { id: 1, value: "a" },
212
+ { id: 2, value: "b" },
213
+ ]);
214
+ });
215
+ (0, vitest_1.it)("hydrates data when getting a single chart", async () => {
216
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
217
+ sdk.attachClickhouseClient(clickhouseClientFn);
218
+ const chart = await sdk.getChart("1", { tenantId: "t1" });
219
+ (0, vitest_1.expect)(chart.id).toBe("1");
220
+ (0, vitest_1.expect)(chart.vega_lite_spec?.data?.values).toEqual([
221
+ { id: 1, value: "a" },
222
+ { id: 2, value: "b" },
223
+ ]);
224
+ });
225
+ (0, vitest_1.it)("lists active charts without data when withdata=false", async () => {
226
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
227
+ sdk.attachClickhouseClient(clickhouseClientFn);
228
+ const result = await sdk.listActiveCharts({
229
+ tenantId: "t1",
230
+ withdata: false,
231
+ });
232
+ (0, vitest_1.expect)(result.data.length).toBe(1);
233
+ const firstNoData = result.data[0];
234
+ if (!firstNoData)
235
+ throw new Error("missing active chart");
236
+ (0, vitest_1.expect)(firstNoData.chart).toBeUndefined();
237
+ });
238
+ (0, vitest_1.it)("lists active charts with data when withdata=true", async () => {
239
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
240
+ sdk.attachClickhouseClient(clickhouseClientFn);
241
+ const result = await sdk.listActiveCharts({
242
+ tenantId: "t1",
243
+ withdata: true,
244
+ });
245
+ (0, vitest_1.expect)(result.data.length).toBe(1);
246
+ const firstWithData = result.data[0];
247
+ if (!firstWithData || !firstWithData.chart)
248
+ throw new Error("missing hydrated active chart");
249
+ (0, vitest_1.expect)(Boolean(firstWithData.chart)).toBe(true);
250
+ (0, vitest_1.expect)(firstWithData.chart.vega_lite_spec?.data?.values).toEqual([
251
+ { id: 1, value: "a" },
252
+ { id: 2, value: "b" },
253
+ ]);
254
+ });
255
+ (0, vitest_1.it)("gets active chart without nested chart unchanged", async () => {
256
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
257
+ sdk.attachClickhouseClient(clickhouseClientFn);
258
+ const ac = await sdk.getActiveChart("ac1", { tenantId: "t1" });
259
+ (0, vitest_1.expect)(ac.id).toBe("ac1");
260
+ (0, vitest_1.expect)("chart" in ac ? ac.chart : undefined).toBeUndefined();
261
+ });
262
+ (0, vitest_1.it)("gets active chart with nested chart hydrated", async () => {
263
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
264
+ sdk.attachClickhouseClient(clickhouseClientFn);
265
+ const ac = await sdk.getActiveChart("ac2", { tenantId: "t1" });
266
+ if (!ac.chart)
267
+ throw new Error("expected nested chart");
268
+ (0, vitest_1.expect)(ac.chart.vega_lite_spec?.data?.values).toEqual([
269
+ { id: 1, value: "a" },
270
+ { id: 2, value: "b" },
271
+ ]);
272
+ });
273
+ (0, vitest_1.it)("works with ask() by executing SQL against DuckDB", async () => {
274
+ const sdk = new index_js_1.QueryPanelSdkAPI("http://api", "test-token");
275
+ sdk.attachClickhouseClient(clickhouseClientFn);
276
+ const result = await sdk.ask("q", { tenantId: "t1" });
277
+ (0, vitest_1.expect)(result.sql).toContain("SELECT id as x, value as y");
278
+ (0, vitest_1.expect)(result.fields).toEqual(["x", "y"]);
279
+ (0, vitest_1.expect)(result.rows).toEqual([
280
+ { x: 1, y: "a" },
281
+ { x: 2, y: "b" },
282
+ ]);
283
+ (0, vitest_1.expect)(result.chart.vegaLiteSpec).toMatchObject({ mark: "line" });
284
+ });
285
+ });
286
+ //# sourceMappingURL=clickhouseClient.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouseClient.spec.js","sourceRoot":"","sources":["../../src/clickhouseClient.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clickhouse.introspect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouse.introspect.test.d.ts","sourceRoot":"","sources":["../../../../src/connectors/__tests__/clickhouse.introspect.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const clickhouse_js_1 = require("../clickhouse.js");
5
+ class StubResultSet {
6
+ constructor(payload) {
7
+ this.payload = payload;
8
+ }
9
+ async json() {
10
+ return this.payload;
11
+ }
12
+ }
13
+ class StubClickHouseClient {
14
+ constructor(responses) {
15
+ this.queries = [];
16
+ this.responses = responses;
17
+ }
18
+ async query(params) {
19
+ this.queries.push({ query: params.query, params: params.query_params });
20
+ const responseKey = params.query.includes('system.tables') ? 'tables' : 'columns';
21
+ const payload = this.responses.get(responseKey);
22
+ if (!payload) {
23
+ throw new Error(`No stub response registered for ${responseKey}`);
24
+ }
25
+ return new StubResultSet(payload);
26
+ }
27
+ async ping() {
28
+ return { success: true };
29
+ }
30
+ async close() { }
31
+ }
32
+ (0, vitest_1.describe)('ClickHouseConnector', () => {
33
+ (0, vitest_1.it)('introspects tables with large column counts', async () => {
34
+ const tableRows = [
35
+ {
36
+ name: 'events',
37
+ engine: 'MergeTree',
38
+ comment: 'User event stream',
39
+ total_rows: '424242',
40
+ total_bytes: '1024',
41
+ is_view: 0,
42
+ primary_key: 'tuple(event_id, occurred_at)',
43
+ sorting_key: 'tuple(occurred_at)',
44
+ },
45
+ ];
46
+ const columnRows = Array.from({ length: 120 }, (_, index) => ({
47
+ table: 'events',
48
+ name: `column_${index}`,
49
+ type: index % 2 === 0 ? 'Nullable(String)' : 'UInt32',
50
+ position: index + 1,
51
+ default_kind: index % 10 === 0 ? 'DEFAULT' : null,
52
+ default_expression: index % 10 === 0 ? `'value_${index}'` : null,
53
+ comment: index % 15 === 0 ? `Column ${index}` : null,
54
+ codec_expression: index % 20 === 0 ? 'ZSTD(3)' : null,
55
+ ttl_expression: null,
56
+ is_in_primary_key: index === 0 ? 1 : 0,
57
+ data_compressed_bytes: '128',
58
+ data_uncompressed_bytes: '256',
59
+ }));
60
+ const responses = new Map([
61
+ ['tables', tableRows],
62
+ ['columns', columnRows],
63
+ ]);
64
+ const stubClient = new StubClickHouseClient(responses);
65
+ const connector = new clickhouse_js_1.ClickHouseConnector({
66
+ database: 'analytics',
67
+ }, { client: stubClient });
68
+ const introspection = await connector.introspect();
69
+ (0, vitest_1.expect)(introspection.db).toEqual({ kind: 'clickhouse', name: 'analytics' });
70
+ (0, vitest_1.expect)(introspection.tables).toHaveLength(1);
71
+ const [table] = introspection.tables;
72
+ (0, vitest_1.expect)(table.name).toBe('events');
73
+ (0, vitest_1.expect)(table.columns).toHaveLength(120);
74
+ (0, vitest_1.expect)(table.columns[0]).toMatchObject({
75
+ name: 'column_0',
76
+ nullable: true,
77
+ type: 'String',
78
+ rawType: 'Nullable(String)',
79
+ defaultKind: 'DEFAULT',
80
+ defaultExpression: `'value_0'`,
81
+ statistics: { compressedBytes: 128, uncompressedBytes: 256 },
82
+ });
83
+ (0, vitest_1.expect)(table.columns.at(-1)).toMatchObject({
84
+ nullable: false,
85
+ type: 'UInt32',
86
+ });
87
+ (0, vitest_1.expect)(table.statistics).toEqual({ totalRows: 424242, totalBytes: 1024 });
88
+ (0, vitest_1.expect)(table.indexes).toEqual([
89
+ {
90
+ name: 'primary_key',
91
+ columns: ['event_id', 'occurred_at'],
92
+ unique: true,
93
+ type: 'PRIMARY KEY',
94
+ definition: 'tuple(event_id, occurred_at)',
95
+ },
96
+ ]);
97
+ (0, vitest_1.expect)(table.constraints[0]).toMatchObject({
98
+ type: 'PRIMARY KEY',
99
+ columns: ['event_id', 'occurred_at'],
100
+ });
101
+ (0, vitest_1.expect)(new Date(introspection.introspectedAt).toISOString()).toBe(introspection.introspectedAt);
102
+ (0, vitest_1.expect)(stubClient.queries).toHaveLength(2);
103
+ (0, vitest_1.expect)(stubClient.queries[0].params).toEqual({ db: 'analytics' });
104
+ });
105
+ (0, vitest_1.it)('applies table filters when provided', async () => {
106
+ const responses = new Map([
107
+ ['tables', [{ name: 'events', engine: 'MergeTree', is_view: 0 }]],
108
+ ['columns', [{ table: 'events', name: 'column_1', type: 'UInt64', position: 1 }]],
109
+ ]);
110
+ const stubClient = new StubClickHouseClient(responses);
111
+ const connector = new clickhouse_js_1.ClickHouseConnector({ database: 'analytics' }, { client: stubClient });
112
+ await connector.introspect({ tables: ['analytics.events', 'events'] });
113
+ (0, vitest_1.expect)(stubClient.queries).toHaveLength(2);
114
+ for (const query of stubClient.queries) {
115
+ (0, vitest_1.expect)(query.params).toEqual({ db: 'analytics', tables: ['events'] });
116
+ }
117
+ });
118
+ });
119
+ //# sourceMappingURL=clickhouse.introspect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouse.introspect.test.js","sourceRoot":"","sources":["../../../../src/connectors/__tests__/clickhouse.introspect.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { IntrospectOptions, SchemaIntrospection } from '../schema/types.js';
2
+ export interface QueryOptions {
3
+ params?: Record<string, unknown>;
4
+ format?: string;
5
+ settings?: Record<string, unknown>;
6
+ }
7
+ export interface DatabaseConnector {
8
+ connect(): Promise<void>;
9
+ executeQuery<T = Record<string, unknown>>(query: string, options?: QueryOptions): Promise<T[]>;
10
+ introspect(options?: IntrospectOptions): Promise<SchemaIntrospection>;
11
+ close(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/connectors/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/F,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/connectors/base.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { type ClickHouseClientConfigOptions, type ClickHouseSettings } from '@clickhouse/client';
2
+ import type { IntrospectOptions, SchemaIntrospection } from '../schema/types.js';
3
+ import type { DatabaseConnector, QueryOptions } from './base.js';
4
+ interface ResultSetLike {
5
+ json<T = unknown>(): Promise<T>;
6
+ }
7
+ interface ClickHouseClientLike {
8
+ query(params: {
9
+ query: string;
10
+ format?: string;
11
+ query_params?: Record<string, unknown>;
12
+ clickhouse_settings?: ClickHouseSettings;
13
+ }): Promise<ResultSetLike>;
14
+ ping(): Promise<{
15
+ success: boolean;
16
+ error?: Error;
17
+ } | {
18
+ success?: boolean;
19
+ }>;
20
+ close(): Promise<void>;
21
+ }
22
+ export interface ClickHouseConnectorConfig {
23
+ /** Fully qualified ClickHouse URL. Overrides host/port/protocol when provided. */
24
+ url?: string;
25
+ host?: string;
26
+ port?: number;
27
+ protocol?: 'http' | 'https';
28
+ database: string;
29
+ username?: string;
30
+ password?: string;
31
+ application?: string;
32
+ clickhouseSettings?: Record<string, unknown>;
33
+ clientOptions?: Partial<ClickHouseClientConfigOptions>;
34
+ }
35
+ export interface ClickHouseConnectorOverrides {
36
+ client?: ClickHouseClientLike;
37
+ clientFactory?: () => ClickHouseClientLike;
38
+ }
39
+ export declare class ClickHouseConnector implements DatabaseConnector {
40
+ private client;
41
+ private readonly config;
42
+ private readonly overrides;
43
+ private defaultFormat;
44
+ constructor(config: ClickHouseConnectorConfig, overrides?: ClickHouseConnectorOverrides);
45
+ connect(): Promise<void>;
46
+ executeQuery<T = Record<string, unknown>>(query: string, options?: QueryOptions): Promise<T[]>;
47
+ introspect(options?: IntrospectOptions): Promise<SchemaIntrospection>;
48
+ close(): Promise<void>;
49
+ private ensureClient;
50
+ private buildClientConfig;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=clickhouse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,6BAA6B,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,KAAK,EAAgB,iBAAiB,EAAE,mBAAmB,EAAe,MAAM,oBAAoB,CAAC;AAE5G,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEjE,UAAU,aAAa;IACnB,IAAI,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,oBAAoB;IAC1B,KAAK,CAAC,MAAM,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;KAC5C,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3B,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,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,oBAAoB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,oBAAoB,CAAC;CAC9C;AA4BD,qBAAa,mBAAoB,YAAW,iBAAiB;IACzD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,aAAa,CAAyB;gBAElC,MAAM,EAAE,yBAAyB,EAAE,SAAS,CAAC,EAAE,4BAA4B;IAQjF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAsB9F,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqGrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,YAAY;IAY1B,OAAO,CAAC,iBAAiB;CA+B5B"}