@querypanel/node-sdk 1.0.8 → 1.0.9

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 (70) hide show
  1. package/README.md +174 -0
  2. package/dist/cjs/adapters/clickhouse.d.ts +36 -0
  3. package/dist/cjs/adapters/clickhouse.d.ts.map +1 -0
  4. package/dist/cjs/adapters/clickhouse.js +256 -0
  5. package/dist/cjs/adapters/clickhouse.js.map +1 -0
  6. package/dist/cjs/adapters/introspection.spec.d.ts +2 -0
  7. package/dist/cjs/adapters/introspection.spec.d.ts.map +1 -0
  8. package/dist/cjs/adapters/introspection.spec.js +201 -0
  9. package/dist/cjs/adapters/introspection.spec.js.map +1 -0
  10. package/dist/cjs/adapters/postgres.d.ts +29 -0
  11. package/dist/cjs/adapters/postgres.d.ts.map +1 -0
  12. package/dist/cjs/adapters/postgres.js +384 -0
  13. package/dist/cjs/adapters/postgres.js.map +1 -0
  14. package/dist/cjs/adapters/types.d.ts +34 -0
  15. package/dist/cjs/adapters/types.d.ts.map +1 -0
  16. package/dist/cjs/adapters/types.js +3 -0
  17. package/dist/cjs/adapters/types.js.map +1 -0
  18. package/dist/cjs/anonymize.spec.d.ts +2 -0
  19. package/dist/cjs/anonymize.spec.d.ts.map +1 -0
  20. package/dist/cjs/anonymize.spec.js +80 -0
  21. package/dist/cjs/anonymize.spec.js.map +1 -0
  22. package/dist/cjs/clickhouseClient.spec.d.ts +2 -0
  23. package/dist/cjs/clickhouseClient.spec.d.ts.map +1 -0
  24. package/dist/cjs/clickhouseClient.spec.js +286 -0
  25. package/dist/cjs/clickhouseClient.spec.js.map +1 -0
  26. package/dist/cjs/index.d.ts +46 -1
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +221 -53
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/index.test.js +34 -7
  31. package/dist/cjs/index.test.js.map +1 -1
  32. package/dist/cjs/multidb.spec.d.ts +2 -0
  33. package/dist/cjs/multidb.spec.d.ts.map +1 -0
  34. package/dist/cjs/multidb.spec.js +76 -0
  35. package/dist/cjs/multidb.spec.js.map +1 -0
  36. package/dist/esm/adapters/clickhouse.d.ts +36 -0
  37. package/dist/esm/adapters/clickhouse.d.ts.map +1 -0
  38. package/dist/esm/adapters/clickhouse.js +252 -0
  39. package/dist/esm/adapters/clickhouse.js.map +1 -0
  40. package/dist/esm/adapters/introspection.spec.d.ts +2 -0
  41. package/dist/esm/adapters/introspection.spec.d.ts.map +1 -0
  42. package/dist/esm/adapters/introspection.spec.js +199 -0
  43. package/dist/esm/adapters/introspection.spec.js.map +1 -0
  44. package/dist/esm/adapters/postgres.d.ts +29 -0
  45. package/dist/esm/adapters/postgres.d.ts.map +1 -0
  46. package/dist/esm/adapters/postgres.js +380 -0
  47. package/dist/esm/adapters/postgres.js.map +1 -0
  48. package/dist/esm/adapters/types.d.ts +34 -0
  49. package/dist/esm/adapters/types.d.ts.map +1 -0
  50. package/dist/esm/adapters/types.js +2 -0
  51. package/dist/esm/adapters/types.js.map +1 -0
  52. package/dist/esm/anonymize.spec.d.ts +2 -0
  53. package/dist/esm/anonymize.spec.d.ts.map +1 -0
  54. package/dist/esm/anonymize.spec.js +78 -0
  55. package/dist/esm/anonymize.spec.js.map +1 -0
  56. package/dist/esm/clickhouseClient.spec.d.ts +2 -0
  57. package/dist/esm/clickhouseClient.spec.d.ts.map +1 -0
  58. package/dist/esm/clickhouseClient.spec.js +281 -0
  59. package/dist/esm/clickhouseClient.spec.js.map +1 -0
  60. package/dist/esm/index.d.ts +46 -1
  61. package/dist/esm/index.d.ts.map +1 -1
  62. package/dist/esm/index.js +220 -53
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/index.test.js +34 -7
  65. package/dist/esm/index.test.js.map +1 -1
  66. package/dist/esm/multidb.spec.d.ts +2 -0
  67. package/dist/esm/multidb.spec.d.ts.map +1 -0
  68. package/dist/esm/multidb.spec.js +74 -0
  69. package/dist/esm/multidb.spec.js.map +1 -0
  70. package/package.json +5 -2
@@ -0,0 +1,34 @@
1
+ import type { IntrospectOptions, SchemaIntrospection } from "../schema/types.js";
2
+ export type DatabaseDialect = "clickhouse" | "postgres" | "mysql";
3
+ export interface DatabaseExecutionResult {
4
+ fields: string[];
5
+ rows: Array<Record<string, unknown>>;
6
+ }
7
+ /**
8
+ * Database adapter interface for abstracting database-specific operations.
9
+ * Allows the SDK to work with multiple database types.
10
+ */
11
+ export interface DatabaseAdapter {
12
+ /**
13
+ * Execute a SQL query and return results
14
+ */
15
+ execute(sql: string): Promise<DatabaseExecutionResult>;
16
+ /**
17
+ * Validate SQL query (e.g., using EXPLAIN)
18
+ * Throws an error if the SQL is invalid
19
+ */
20
+ validate(sql: string): Promise<void>;
21
+ /**
22
+ * Introspect database schema metadata
23
+ */
24
+ introspect(options?: IntrospectOptions): Promise<SchemaIntrospection>;
25
+ /**
26
+ * Get the database dialect/type
27
+ */
28
+ getDialect(): DatabaseDialect;
29
+ /**
30
+ * Optional: Close/cleanup database connection
31
+ */
32
+ close?(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;OAEG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEtE;;OAEG;IACH,UAAU,IAAI,eAAe,CAAC;IAE9B;;OAEG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=anonymize.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymize.spec.d.ts","sourceRoot":"","sources":["../../src/anonymize.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
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)("anonymizeResults", () => {
6
+ (0, vitest_1.it)("anonymizes numeric values", () => {
7
+ const input = [
8
+ { year: 2025, transactionSum: 1000 },
9
+ { year: 2024, transactionSum: 2000 },
10
+ ];
11
+ const result = (0, index_js_1.anonymizeResults)(input);
12
+ (0, vitest_1.expect)(result).toEqual([
13
+ { year: "number", transactionSum: "number" },
14
+ { year: "number", transactionSum: "number" },
15
+ ]);
16
+ });
17
+ (0, vitest_1.it)("anonymizes mixed types", () => {
18
+ const input = [
19
+ {
20
+ id: 1,
21
+ name: "John Doe",
22
+ active: true,
23
+ score: 95.5,
24
+ metadata: null,
25
+ tags: ["admin", "user"],
26
+ },
27
+ ];
28
+ const result = (0, index_js_1.anonymizeResults)(input);
29
+ (0, vitest_1.expect)(result).toEqual([
30
+ {
31
+ id: "number",
32
+ name: "string",
33
+ active: "boolean",
34
+ score: "number",
35
+ metadata: "null",
36
+ tags: "array",
37
+ },
38
+ ]);
39
+ });
40
+ (0, vitest_1.it)("handles empty arrays", () => {
41
+ const result = (0, index_js_1.anonymizeResults)([]);
42
+ (0, vitest_1.expect)(result).toEqual([]);
43
+ });
44
+ (0, vitest_1.it)("handles objects with nested structures", () => {
45
+ const input = [
46
+ {
47
+ user: { name: "Alice" },
48
+ count: 42,
49
+ },
50
+ ];
51
+ const result = (0, index_js_1.anonymizeResults)(input);
52
+ (0, vitest_1.expect)(result).toEqual([
53
+ {
54
+ user: "object",
55
+ count: "number",
56
+ },
57
+ ]);
58
+ });
59
+ (0, vitest_1.it)("preserves column structure across multiple rows", () => {
60
+ const input = [
61
+ { col1: "value1", col2: 100, col3: true },
62
+ { col1: "value2", col2: 200, col3: false },
63
+ { col1: "value3", col2: 300, col3: true },
64
+ ];
65
+ const result = (0, index_js_1.anonymizeResults)(input);
66
+ (0, vitest_1.expect)(result).toEqual([
67
+ { col1: "string", col2: "number", col3: "boolean" },
68
+ { col1: "string", col2: "number", col3: "boolean" },
69
+ { col1: "string", col2: "number", col3: "boolean" },
70
+ ]);
71
+ });
72
+ (0, vitest_1.it)("handles undefined values", () => {
73
+ const input = [{ defined: 123, undefined: undefined }];
74
+ const result = (0, index_js_1.anonymizeResults)(input);
75
+ (0, vitest_1.expect)(result).toEqual([
76
+ { defined: "number", undefined: "undefined" },
77
+ ]);
78
+ });
79
+ });
80
+ //# sourceMappingURL=anonymize.spec.js.map
@@ -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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"}
@@ -1,6 +1,11 @@
1
+ import { ClickHouseAdapter, type ClickHouseAdapterOptions, type ClickHouseClientFn } from "./adapters/clickhouse.js";
2
+ import { PostgresAdapter, type PostgresAdapterOptions, type PostgresClientFn } from "./adapters/postgres.js";
3
+ import type { DatabaseAdapter, DatabaseDialect } from "./adapters/types.js";
4
+ export { ClickHouseAdapter, PostgresAdapter };
5
+ export type { ClickHouseAdapterOptions, ClickHouseClientFn, DatabaseAdapter, DatabaseDialect, PostgresAdapterOptions, PostgresClientFn, };
1
6
  export interface AskOptions {
2
7
  tenantId: string;
3
- executeSql: SqlExecutor;
8
+ database?: string;
4
9
  sqlMaxAttempts?: number;
5
10
  chartMaxRetries?: number;
6
11
  userId?: string;
@@ -29,6 +34,18 @@ export interface SqlExecutionResult {
29
34
  rows: Array<Record<string, unknown>>;
30
35
  }
31
36
  export type SqlExecutor = (sql: string) => Promise<SqlExecutionResult>;
37
+ /**
38
+ * Anonymizes query results by replacing actual values with their type names.
39
+ * Useful for sharing result structure without exposing sensitive data.
40
+ *
41
+ * @param rows - Array of result rows to anonymize
42
+ * @returns Array of rows with values replaced by type strings
43
+ *
44
+ * @example
45
+ * anonymizeResults([{ year: 2025, transactionSum: 1000 }])
46
+ * // Returns: [{ year: 'number', transactionSum: 'number' }]
47
+ */
48
+ export declare function anonymizeResults(rows: Array<Record<string, unknown>>): Array<Record<string, string>>;
32
49
  export interface TrainingExample {
33
50
  question: string;
34
51
  sql: string;
@@ -66,7 +83,30 @@ export declare class QueryPanelSdkAPI {
66
83
  private readonly privateKey?;
67
84
  private readonly organizationId?;
68
85
  private cachedPrivateKey?;
86
+ private databases;
87
+ private defaultDatabase?;
69
88
  constructor(baseUrl: string, jwtTokenOrPrivateKey: string, organizationId?: string);
89
+ /**
90
+ * Attach a database adapter with a specific name
91
+ */
92
+ attachDatabase(name: string, adapter: DatabaseAdapter): void;
93
+ /**
94
+ * Attach a ClickHouse database
95
+ */
96
+ attachClickhouse(name: string, clientFn: ClickHouseClientFn, options?: ClickHouseAdapterOptions): void;
97
+ /**
98
+ * Attach a Postgres database
99
+ */
100
+ attachPostgres(name: string, clientFn: PostgresClientFn, options?: PostgresAdapterOptions): void;
101
+ /**
102
+ * Legacy method for backward compatibility
103
+ * Attaches a ClickHouse client as the default database
104
+ */
105
+ attachClickhouseClient(fn: ClickHouseClientFn): void;
106
+ /**
107
+ * Get a database adapter by name, or return the default
108
+ */
109
+ private getDatabase;
70
110
  ask(question: string, options: AskOptions, signal?: AbortSignal): Promise<AskResponseBody>;
71
111
  train(body: TrainRequestBody, options?: {
72
112
  userId?: string;
@@ -122,6 +162,7 @@ export declare class QueryPanelSdkAPI {
122
162
  private generateJWT;
123
163
  private headers;
124
164
  private parseResponse;
165
+ private runSafeQueryOnClient;
125
166
  }
126
167
  export interface SdkChart {
127
168
  id: string;
@@ -136,6 +177,7 @@ export interface SdkChart {
136
177
  created_at: string | null;
137
178
  updated_at: string | null;
138
179
  active?: boolean;
180
+ database?: string;
139
181
  }
140
182
  export interface SdkActiveChart {
141
183
  id: string;
@@ -172,6 +214,7 @@ export interface ActiveChartListOptions {
172
214
  createdTo?: string;
173
215
  updatedFrom?: string;
174
216
  updatedTo?: string;
217
+ withdata?: boolean;
175
218
  }
176
219
  export interface ChartCreateBody {
177
220
  title: string;
@@ -179,12 +222,14 @@ export interface ChartCreateBody {
179
222
  sql: string;
180
223
  vega_lite_spec: any;
181
224
  query_id?: string;
225
+ database?: string;
182
226
  }
183
227
  export interface ChartUpdateBody {
184
228
  title?: string;
185
229
  description?: string;
186
230
  sql?: string;
187
231
  vega_lite_spec?: any;
232
+ database?: string;
188
233
  }
189
234
  export interface PaginationQuery {
190
235
  page?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}