@querypanel/node-sdk 1.0.26 → 1.0.27

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 (144) hide show
  1. package/dist/index.cjs +1292 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +388 -0
  4. package/dist/index.d.ts +388 -0
  5. package/dist/index.js +1262 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +1 -1
  8. package/dist/cjs/__tests__/ingest.test.d.ts +0 -5
  9. package/dist/cjs/__tests__/ingest.test.d.ts.map +0 -1
  10. package/dist/cjs/__tests__/ingest.test.js +0 -95
  11. package/dist/cjs/__tests__/ingest.test.js.map +0 -1
  12. package/dist/cjs/adapters/clickhouse.d.ts +0 -48
  13. package/dist/cjs/adapters/clickhouse.d.ts.map +0 -1
  14. package/dist/cjs/adapters/clickhouse.js +0 -284
  15. package/dist/cjs/adapters/clickhouse.js.map +0 -1
  16. package/dist/cjs/adapters/introspection.spec.d.ts +0 -2
  17. package/dist/cjs/adapters/introspection.spec.d.ts.map +0 -1
  18. package/dist/cjs/adapters/introspection.spec.js +0 -192
  19. package/dist/cjs/adapters/introspection.spec.js.map +0 -1
  20. package/dist/cjs/adapters/postgres.d.ts +0 -46
  21. package/dist/cjs/adapters/postgres.d.ts.map +0 -1
  22. package/dist/cjs/adapters/postgres.js +0 -457
  23. package/dist/cjs/adapters/postgres.js.map +0 -1
  24. package/dist/cjs/adapters/postgres.spec.d.ts +0 -2
  25. package/dist/cjs/adapters/postgres.spec.d.ts.map +0 -1
  26. package/dist/cjs/adapters/postgres.spec.js +0 -37
  27. package/dist/cjs/adapters/postgres.spec.js.map +0 -1
  28. package/dist/cjs/adapters/types.d.ts +0 -38
  29. package/dist/cjs/adapters/types.d.ts.map +0 -1
  30. package/dist/cjs/adapters/types.js +0 -3
  31. package/dist/cjs/adapters/types.js.map +0 -1
  32. package/dist/cjs/anonymize.spec.d.ts +0 -2
  33. package/dist/cjs/anonymize.spec.d.ts.map +0 -1
  34. package/dist/cjs/anonymize.spec.js +0 -78
  35. package/dist/cjs/anonymize.spec.js.map +0 -1
  36. package/dist/cjs/clickhouseClient.spec.d.ts +0 -2
  37. package/dist/cjs/clickhouseClient.spec.d.ts.map +0 -1
  38. package/dist/cjs/clickhouseClient.spec.js +0 -286
  39. package/dist/cjs/clickhouseClient.spec.js.map +0 -1
  40. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.d.ts +0 -2
  41. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.d.ts.map +0 -1
  42. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.js +0 -119
  43. package/dist/cjs/connectors/__tests__/clickhouse.introspect.test.js.map +0 -1
  44. package/dist/cjs/connectors/base.d.ts +0 -13
  45. package/dist/cjs/connectors/base.d.ts.map +0 -1
  46. package/dist/cjs/connectors/base.js +0 -3
  47. package/dist/cjs/connectors/base.js.map +0 -1
  48. package/dist/cjs/connectors/clickhouse.d.ts +0 -53
  49. package/dist/cjs/connectors/clickhouse.d.ts.map +0 -1
  50. package/dist/cjs/connectors/clickhouse.js +0 -270
  51. package/dist/cjs/connectors/clickhouse.js.map +0 -1
  52. package/dist/cjs/index.d.ts +0 -490
  53. package/dist/cjs/index.d.ts.map +0 -1
  54. package/dist/cjs/index.js +0 -843
  55. package/dist/cjs/index.js.map +0 -1
  56. package/dist/cjs/index.test.d.ts +0 -2
  57. package/dist/cjs/index.test.d.ts.map +0 -1
  58. package/dist/cjs/index.test.js +0 -185
  59. package/dist/cjs/index.test.js.map +0 -1
  60. package/dist/cjs/introspectV3.d.ts +0 -45
  61. package/dist/cjs/introspectV3.d.ts.map +0 -1
  62. package/dist/cjs/introspectV3.js +0 -99
  63. package/dist/cjs/introspectV3.js.map +0 -1
  64. package/dist/cjs/multidb.spec.d.ts +0 -2
  65. package/dist/cjs/multidb.spec.d.ts.map +0 -1
  66. package/dist/cjs/multidb.spec.js +0 -76
  67. package/dist/cjs/multidb.spec.js.map +0 -1
  68. package/dist/cjs/package.json +0 -1
  69. package/dist/cjs/schema/types.d.ts +0 -73
  70. package/dist/cjs/schema/types.d.ts.map +0 -1
  71. package/dist/cjs/schema/types.js +0 -3
  72. package/dist/cjs/schema/types.js.map +0 -1
  73. package/dist/cjs/tenant-isolation.spec.d.ts +0 -2
  74. package/dist/cjs/tenant-isolation.spec.d.ts.map +0 -1
  75. package/dist/cjs/tenant-isolation.spec.js +0 -420
  76. package/dist/cjs/tenant-isolation.spec.js.map +0 -1
  77. package/dist/cjs/utils/clickhouse.d.ts +0 -9
  78. package/dist/cjs/utils/clickhouse.d.ts.map +0 -1
  79. package/dist/cjs/utils/clickhouse.js +0 -99
  80. package/dist/cjs/utils/clickhouse.js.map +0 -1
  81. package/dist/esm/adapters/clickhouse.d.ts +0 -48
  82. package/dist/esm/adapters/clickhouse.d.ts.map +0 -1
  83. package/dist/esm/adapters/clickhouse.js +0 -280
  84. package/dist/esm/adapters/clickhouse.js.map +0 -1
  85. package/dist/esm/adapters/introspection.spec.d.ts +0 -2
  86. package/dist/esm/adapters/introspection.spec.d.ts.map +0 -1
  87. package/dist/esm/adapters/introspection.spec.js +0 -190
  88. package/dist/esm/adapters/introspection.spec.js.map +0 -1
  89. package/dist/esm/adapters/postgres.d.ts +0 -46
  90. package/dist/esm/adapters/postgres.d.ts.map +0 -1
  91. package/dist/esm/adapters/postgres.js +0 -453
  92. package/dist/esm/adapters/postgres.js.map +0 -1
  93. package/dist/esm/adapters/postgres.spec.d.ts +0 -2
  94. package/dist/esm/adapters/postgres.spec.d.ts.map +0 -1
  95. package/dist/esm/adapters/postgres.spec.js +0 -35
  96. package/dist/esm/adapters/postgres.spec.js.map +0 -1
  97. package/dist/esm/adapters/types.d.ts +0 -38
  98. package/dist/esm/adapters/types.d.ts.map +0 -1
  99. package/dist/esm/adapters/types.js +0 -2
  100. package/dist/esm/adapters/types.js.map +0 -1
  101. package/dist/esm/anonymize.spec.d.ts +0 -2
  102. package/dist/esm/anonymize.spec.d.ts.map +0 -1
  103. package/dist/esm/anonymize.spec.js +0 -76
  104. package/dist/esm/anonymize.spec.js.map +0 -1
  105. package/dist/esm/clickhouseClient.spec.d.ts +0 -2
  106. package/dist/esm/clickhouseClient.spec.d.ts.map +0 -1
  107. package/dist/esm/clickhouseClient.spec.js +0 -281
  108. package/dist/esm/clickhouseClient.spec.js.map +0 -1
  109. package/dist/esm/connectors/base.d.ts +0 -14
  110. package/dist/esm/connectors/base.d.ts.map +0 -1
  111. package/dist/esm/connectors/base.js +0 -2
  112. package/dist/esm/connectors/base.js.map +0 -1
  113. package/dist/esm/connectors/clickhouse.d.ts +0 -35
  114. package/dist/esm/connectors/clickhouse.d.ts.map +0 -1
  115. package/dist/esm/connectors/clickhouse.js +0 -281
  116. package/dist/esm/connectors/clickhouse.js.map +0 -1
  117. package/dist/esm/index.d.ts +0 -490
  118. package/dist/esm/index.d.ts.map +0 -1
  119. package/dist/esm/index.js +0 -838
  120. package/dist/esm/index.js.map +0 -1
  121. package/dist/esm/index.test.d.ts +0 -2
  122. package/dist/esm/index.test.d.ts.map +0 -1
  123. package/dist/esm/index.test.js +0 -183
  124. package/dist/esm/index.test.js.map +0 -1
  125. package/dist/esm/introspectV3.d.ts +0 -45
  126. package/dist/esm/introspectV3.d.ts.map +0 -1
  127. package/dist/esm/introspectV3.js +0 -96
  128. package/dist/esm/introspectV3.js.map +0 -1
  129. package/dist/esm/multidb.spec.d.ts +0 -2
  130. package/dist/esm/multidb.spec.d.ts.map +0 -1
  131. package/dist/esm/multidb.spec.js +0 -74
  132. package/dist/esm/multidb.spec.js.map +0 -1
  133. package/dist/esm/schema/types.d.ts +0 -73
  134. package/dist/esm/schema/types.d.ts.map +0 -1
  135. package/dist/esm/schema/types.js +0 -2
  136. package/dist/esm/schema/types.js.map +0 -1
  137. package/dist/esm/tenant-isolation.spec.d.ts +0 -2
  138. package/dist/esm/tenant-isolation.spec.d.ts.map +0 -1
  139. package/dist/esm/tenant-isolation.spec.js +0 -418
  140. package/dist/esm/tenant-isolation.spec.js.map +0 -1
  141. package/dist/esm/utils/clickhouse.d.ts +0 -9
  142. package/dist/esm/utils/clickhouse.d.ts.map +0 -1
  143. package/dist/esm/utils/clickhouse.js +0 -92
  144. package/dist/esm/utils/clickhouse.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"anonymize.spec.js","sourceRoot":"","sources":["../../src/anonymize.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=clickhouseClient.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clickhouseClient.spec.d.ts","sourceRoot":"","sources":["../../src/clickhouseClient.spec.ts"],"names":[],"mappings":""}
@@ -1,286 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"clickhouseClient.spec.js","sourceRoot":"","sources":["../../src/clickhouseClient.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=clickhouse.introspect.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clickhouse.introspect.test.d.ts","sourceRoot":"","sources":["../../../../src/connectors/__tests__/clickhouse.introspect.test.ts"],"names":[],"mappings":""}
@@ -1,119 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"clickhouse.introspect.test.js","sourceRoot":"","sources":["../../../../src/connectors/__tests__/clickhouse.introspect.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/connectors/base.ts"],"names":[],"mappings":""}
@@ -1,53 +0,0 @@
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
@@ -1 +0,0 @@
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"}