@querypanel/node-sdk 1.0.7 → 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.
- package/README.md +174 -0
- package/dist/cjs/adapters/clickhouse.d.ts +36 -0
- package/dist/cjs/adapters/clickhouse.d.ts.map +1 -0
- package/dist/cjs/adapters/clickhouse.js +256 -0
- package/dist/cjs/adapters/clickhouse.js.map +1 -0
- package/dist/cjs/adapters/introspection.spec.d.ts +2 -0
- package/dist/cjs/adapters/introspection.spec.d.ts.map +1 -0
- package/dist/cjs/adapters/introspection.spec.js +201 -0
- package/dist/cjs/adapters/introspection.spec.js.map +1 -0
- package/dist/cjs/adapters/postgres.d.ts +29 -0
- package/dist/cjs/adapters/postgres.d.ts.map +1 -0
- package/dist/cjs/adapters/postgres.js +384 -0
- package/dist/cjs/adapters/postgres.js.map +1 -0
- package/dist/cjs/adapters/types.d.ts +34 -0
- package/dist/cjs/adapters/types.d.ts.map +1 -0
- package/dist/cjs/adapters/types.js +3 -0
- package/dist/cjs/adapters/types.js.map +1 -0
- package/dist/cjs/anonymize.spec.d.ts +2 -0
- package/dist/cjs/anonymize.spec.d.ts.map +1 -0
- package/dist/cjs/anonymize.spec.js +80 -0
- package/dist/cjs/anonymize.spec.js.map +1 -0
- package/dist/cjs/clickhouseClient.spec.d.ts +2 -0
- package/dist/cjs/clickhouseClient.spec.d.ts.map +1 -0
- package/dist/cjs/clickhouseClient.spec.js +286 -0
- package/dist/cjs/clickhouseClient.spec.js.map +1 -0
- package/dist/cjs/connectors/clickhouse.d.ts +4 -4
- package/dist/cjs/connectors/clickhouse.d.ts.map +1 -1
- package/dist/cjs/connectors/clickhouse.js +30 -23
- package/dist/cjs/connectors/clickhouse.js.map +1 -1
- package/dist/cjs/index.d.ts +69 -5
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +257 -50
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.test.d.ts +2 -0
- package/dist/cjs/index.test.d.ts.map +1 -0
- package/dist/cjs/index.test.js +112 -0
- package/dist/cjs/index.test.js.map +1 -0
- package/dist/cjs/multidb.spec.d.ts +2 -0
- package/dist/cjs/multidb.spec.d.ts.map +1 -0
- package/dist/cjs/multidb.spec.js +76 -0
- package/dist/cjs/multidb.spec.js.map +1 -0
- package/dist/esm/adapters/clickhouse.d.ts +36 -0
- package/dist/esm/adapters/clickhouse.d.ts.map +1 -0
- package/dist/esm/adapters/clickhouse.js +252 -0
- package/dist/esm/adapters/clickhouse.js.map +1 -0
- package/dist/esm/adapters/introspection.spec.d.ts +2 -0
- package/dist/esm/adapters/introspection.spec.d.ts.map +1 -0
- package/dist/esm/adapters/introspection.spec.js +199 -0
- package/dist/esm/adapters/introspection.spec.js.map +1 -0
- package/dist/esm/adapters/postgres.d.ts +29 -0
- package/dist/esm/adapters/postgres.d.ts.map +1 -0
- package/dist/esm/adapters/postgres.js +380 -0
- package/dist/esm/adapters/postgres.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +34 -0
- package/dist/esm/adapters/types.d.ts.map +1 -0
- package/dist/esm/adapters/types.js +2 -0
- package/dist/esm/adapters/types.js.map +1 -0
- package/dist/esm/anonymize.spec.d.ts +2 -0
- package/dist/esm/anonymize.spec.d.ts.map +1 -0
- package/dist/esm/anonymize.spec.js +78 -0
- package/dist/esm/anonymize.spec.js.map +1 -0
- package/dist/esm/clickhouseClient.spec.d.ts +2 -0
- package/dist/esm/clickhouseClient.spec.d.ts.map +1 -0
- package/dist/esm/clickhouseClient.spec.js +281 -0
- package/dist/esm/clickhouseClient.spec.js.map +1 -0
- package/dist/esm/connectors/clickhouse.d.ts +4 -4
- package/dist/esm/connectors/clickhouse.d.ts.map +1 -1
- package/dist/esm/connectors/clickhouse.js +32 -25
- package/dist/esm/connectors/clickhouse.js.map +1 -1
- package/dist/esm/index.d.ts +69 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +256 -50
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.test.d.ts +2 -0
- package/dist/esm/index.test.d.ts.map +1 -0
- package/dist/esm/index.test.js +110 -0
- package/dist/esm/index.test.js.map +1 -0
- package/dist/esm/multidb.spec.d.ts +2 -0
- package/dist/esm/multidb.spec.d.ts.map +1 -0
- package/dist/esm/multidb.spec.js +74 -0
- package/dist/esm/multidb.spec.js.map +1 -0
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../../src/connectors/clickhouse.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,15 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
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, };
|
|
4
6
|
export interface AskOptions {
|
|
5
7
|
tenantId: string;
|
|
8
|
+
database?: string;
|
|
9
|
+
sqlMaxAttempts?: number;
|
|
10
|
+
chartMaxRetries?: number;
|
|
6
11
|
userId?: string;
|
|
7
12
|
scopes?: string[];
|
|
8
13
|
}
|
|
9
14
|
export interface AskResponseBody {
|
|
10
|
-
|
|
15
|
+
sql: string;
|
|
16
|
+
rationale: string;
|
|
17
|
+
context: RetrievedContext[];
|
|
18
|
+
chart: ChartEnvelope;
|
|
19
|
+
fields: string[];
|
|
20
|
+
rows: Array<Record<string, unknown>>;
|
|
21
|
+
}
|
|
22
|
+
export interface RetrievedContext {
|
|
23
|
+
kind: string;
|
|
24
|
+
content: string;
|
|
25
|
+
similarity?: number;
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface ChartEnvelope {
|
|
29
|
+
vegaLiteSpec: any;
|
|
11
30
|
notes: string | null;
|
|
12
31
|
}
|
|
32
|
+
export interface SqlExecutionResult {
|
|
33
|
+
fields: string[];
|
|
34
|
+
rows: Array<Record<string, unknown>>;
|
|
35
|
+
}
|
|
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>>;
|
|
13
49
|
export interface TrainingExample {
|
|
14
50
|
question: string;
|
|
15
51
|
sql: string;
|
|
@@ -47,8 +83,31 @@ export declare class QueryPanelSdkAPI {
|
|
|
47
83
|
private readonly privateKey?;
|
|
48
84
|
private readonly organizationId?;
|
|
49
85
|
private cachedPrivateKey?;
|
|
86
|
+
private databases;
|
|
87
|
+
private defaultDatabase?;
|
|
50
88
|
constructor(baseUrl: string, jwtTokenOrPrivateKey: string, organizationId?: string);
|
|
51
|
-
|
|
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;
|
|
110
|
+
ask(question: string, options: AskOptions, signal?: AbortSignal): Promise<AskResponseBody>;
|
|
52
111
|
train(body: TrainRequestBody, options?: {
|
|
53
112
|
userId?: string;
|
|
54
113
|
scopes?: string[];
|
|
@@ -103,6 +162,7 @@ export declare class QueryPanelSdkAPI {
|
|
|
103
162
|
private generateJWT;
|
|
104
163
|
private headers;
|
|
105
164
|
private parseResponse;
|
|
165
|
+
private runSafeQueryOnClient;
|
|
106
166
|
}
|
|
107
167
|
export interface SdkChart {
|
|
108
168
|
id: string;
|
|
@@ -117,6 +177,7 @@ export interface SdkChart {
|
|
|
117
177
|
created_at: string | null;
|
|
118
178
|
updated_at: string | null;
|
|
119
179
|
active?: boolean;
|
|
180
|
+
database?: string;
|
|
120
181
|
}
|
|
121
182
|
export interface SdkActiveChart {
|
|
122
183
|
id: string;
|
|
@@ -153,6 +214,7 @@ export interface ActiveChartListOptions {
|
|
|
153
214
|
createdTo?: string;
|
|
154
215
|
updatedFrom?: string;
|
|
155
216
|
updatedTo?: string;
|
|
217
|
+
withdata?: boolean;
|
|
156
218
|
}
|
|
157
219
|
export interface ChartCreateBody {
|
|
158
220
|
title: string;
|
|
@@ -160,12 +222,14 @@ export interface ChartCreateBody {
|
|
|
160
222
|
sql: string;
|
|
161
223
|
vega_lite_spec: any;
|
|
162
224
|
query_id?: string;
|
|
225
|
+
database?: string;
|
|
163
226
|
}
|
|
164
227
|
export interface ChartUpdateBody {
|
|
165
228
|
title?: string;
|
|
166
229
|
description?: string;
|
|
167
230
|
sql?: string;
|
|
168
231
|
vega_lite_spec?: any;
|
|
232
|
+
database?: string;
|
|
169
233
|
}
|
|
170
234
|
export interface PaginationQuery {
|
|
171
235
|
page?: number;
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,44 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { importPKCS8, SignJWT } from "jose";
|
|
3
|
+
import { ClickHouseAdapter, } from "./adapters/clickhouse.js";
|
|
4
|
+
import { PostgresAdapter, } from "./adapters/postgres.js";
|
|
5
|
+
// Re-export adapters for external use
|
|
6
|
+
export { ClickHouseAdapter, PostgresAdapter };
|
|
7
|
+
/**
|
|
8
|
+
* Anonymizes query results by replacing actual values with their type names.
|
|
9
|
+
* Useful for sharing result structure without exposing sensitive data.
|
|
10
|
+
*
|
|
11
|
+
* @param rows - Array of result rows to anonymize
|
|
12
|
+
* @returns Array of rows with values replaced by type strings
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* anonymizeResults([{ year: 2025, transactionSum: 1000 }])
|
|
16
|
+
* // Returns: [{ year: 'number', transactionSum: 'number' }]
|
|
17
|
+
*/
|
|
18
|
+
export function anonymizeResults(rows) {
|
|
19
|
+
if (!rows || rows.length === 0) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
return rows.map((row) => {
|
|
23
|
+
const anonymized = {};
|
|
24
|
+
for (const [key, value] of Object.entries(row)) {
|
|
25
|
+
if (value === null) {
|
|
26
|
+
anonymized[key] = "null";
|
|
27
|
+
}
|
|
28
|
+
else if (Array.isArray(value)) {
|
|
29
|
+
anonymized[key] = "array";
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
anonymized[key] = typeof value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return anonymized;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
2
38
|
export class QueryPanelSdkAPI {
|
|
3
39
|
constructor(baseUrl, jwtTokenOrPrivateKey, organizationId) {
|
|
40
|
+
// Database registry
|
|
41
|
+
this.databases = new Map();
|
|
4
42
|
this.baseUrl = baseUrl.replace(/\/$/, "");
|
|
5
43
|
if (organizationId) {
|
|
6
44
|
// New mode: generate JWTs
|
|
@@ -12,8 +50,106 @@ export class QueryPanelSdkAPI {
|
|
|
12
50
|
this.token = jwtTokenOrPrivateKey;
|
|
13
51
|
}
|
|
14
52
|
}
|
|
15
|
-
|
|
16
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Attach a database adapter with a specific name
|
|
55
|
+
*/
|
|
56
|
+
attachDatabase(name, adapter) {
|
|
57
|
+
this.databases.set(name, adapter);
|
|
58
|
+
if (!this.defaultDatabase) {
|
|
59
|
+
this.defaultDatabase = name;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Attach a ClickHouse database
|
|
64
|
+
*/
|
|
65
|
+
attachClickhouse(name, clientFn, options) {
|
|
66
|
+
const adapterOptions = {
|
|
67
|
+
...options,
|
|
68
|
+
database: options?.database ?? name,
|
|
69
|
+
};
|
|
70
|
+
this.attachDatabase(name, new ClickHouseAdapter(clientFn, adapterOptions));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Attach a Postgres database
|
|
74
|
+
*/
|
|
75
|
+
attachPostgres(name, clientFn, options) {
|
|
76
|
+
const adapterOptions = {
|
|
77
|
+
...options,
|
|
78
|
+
database: options?.database ?? name,
|
|
79
|
+
};
|
|
80
|
+
this.attachDatabase(name, new PostgresAdapter(clientFn, adapterOptions));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Legacy method for backward compatibility
|
|
84
|
+
* Attaches a ClickHouse client as the default database
|
|
85
|
+
*/
|
|
86
|
+
attachClickhouseClient(fn) {
|
|
87
|
+
this.attachClickhouse("default", fn);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get a database adapter by name, or return the default
|
|
91
|
+
*/
|
|
92
|
+
getDatabase(name) {
|
|
93
|
+
const dbName = name || this.defaultDatabase;
|
|
94
|
+
if (!dbName) {
|
|
95
|
+
throw new Error("No database attached. Use attachClickhouse() or attachPostgres() first.");
|
|
96
|
+
}
|
|
97
|
+
const adapter = this.databases.get(dbName);
|
|
98
|
+
if (!adapter) {
|
|
99
|
+
throw new Error(`Database '${dbName}' not found. Available: ${Array.from(this.databases.keys()).join(", ")}`);
|
|
100
|
+
}
|
|
101
|
+
return adapter;
|
|
102
|
+
}
|
|
103
|
+
async ask(question, options, signal) {
|
|
104
|
+
const { tenantId, database, userId, scopes, sqlMaxAttempts = 3, chartMaxRetries = 3, } = options;
|
|
105
|
+
let attempt = 0;
|
|
106
|
+
const sessionId = randomUUID();
|
|
107
|
+
let lastError;
|
|
108
|
+
while (attempt < sqlMaxAttempts) {
|
|
109
|
+
const sqlResponse = await this.post("/v2/generate-sql", {
|
|
110
|
+
question,
|
|
111
|
+
max_retries: Math.max(1, sqlMaxAttempts - attempt),
|
|
112
|
+
...(lastError ? { last_error: lastError } : {}),
|
|
113
|
+
...(database ? { database } : {}),
|
|
114
|
+
available_databases: Array.from(this.databases.keys()),
|
|
115
|
+
}, tenantId, userId, scopes, signal, sessionId);
|
|
116
|
+
try {
|
|
117
|
+
// Get the database adapter
|
|
118
|
+
const dbName = database || sqlResponse.database || this.defaultDatabase;
|
|
119
|
+
const adapter = this.getDatabase(dbName);
|
|
120
|
+
// Validate SQL with EXPLAIN before executing
|
|
121
|
+
await adapter.validate(sqlResponse.sql);
|
|
122
|
+
// Execute the query
|
|
123
|
+
const execution = await adapter.execute(sqlResponse.sql);
|
|
124
|
+
const chartResponse = await this.post("/v2/generate-chart", {
|
|
125
|
+
question,
|
|
126
|
+
sql: sqlResponse.sql,
|
|
127
|
+
rationale: sqlResponse.rationale,
|
|
128
|
+
fields: execution.fields,
|
|
129
|
+
rows: anonymizeResults(execution.rows),
|
|
130
|
+
max_retries: chartMaxRetries,
|
|
131
|
+
}, tenantId, userId, scopes, signal, sessionId);
|
|
132
|
+
return {
|
|
133
|
+
sql: sqlResponse.sql,
|
|
134
|
+
rationale: sqlResponse.rationale,
|
|
135
|
+
context: sqlResponse.context,
|
|
136
|
+
chart: {
|
|
137
|
+
vegaLiteSpec: chartResponse.vegaLiteSpec,
|
|
138
|
+
notes: chartResponse.notes,
|
|
139
|
+
},
|
|
140
|
+
fields: execution.fields,
|
|
141
|
+
rows: execution.rows,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
lastError = error instanceof Error ? error.message : String(error);
|
|
146
|
+
attempt += 1;
|
|
147
|
+
if (attempt >= sqlMaxAttempts) {
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
throw new Error("Failed to generate chart after maximum attempts");
|
|
17
153
|
}
|
|
18
154
|
async train(body, options, signal) {
|
|
19
155
|
return await this.post("/train", body, body.tenant_id, options?.userId, options?.scopes, signal);
|
|
@@ -28,32 +164,65 @@ export class QueryPanelSdkAPI {
|
|
|
28
164
|
async listCharts(options, signal) {
|
|
29
165
|
const queryParams = new URLSearchParams();
|
|
30
166
|
if (options.pagination?.page) {
|
|
31
|
-
queryParams.set(
|
|
167
|
+
queryParams.set("page", options.pagination.page.toString());
|
|
32
168
|
}
|
|
33
169
|
if (options.pagination?.limit) {
|
|
34
|
-
queryParams.set(
|
|
170
|
+
queryParams.set("limit", options.pagination.limit.toString());
|
|
171
|
+
}
|
|
172
|
+
if (options.sortBy) {
|
|
173
|
+
queryParams.set("sort_by", options.sortBy);
|
|
174
|
+
}
|
|
175
|
+
if (options.sortDir) {
|
|
176
|
+
queryParams.set("sort_dir", options.sortDir);
|
|
177
|
+
}
|
|
178
|
+
if (options.name) {
|
|
179
|
+
queryParams.set("name", options.name);
|
|
180
|
+
}
|
|
181
|
+
if (options.filterUserId) {
|
|
182
|
+
queryParams.set("user_id", options.filterUserId);
|
|
183
|
+
}
|
|
184
|
+
if (options.createdFrom) {
|
|
185
|
+
queryParams.set("created_from", options.createdFrom);
|
|
186
|
+
}
|
|
187
|
+
if (options.createdTo) {
|
|
188
|
+
queryParams.set("created_to", options.createdTo);
|
|
189
|
+
}
|
|
190
|
+
if (options.updatedFrom) {
|
|
191
|
+
queryParams.set("updated_from", options.updatedFrom);
|
|
192
|
+
}
|
|
193
|
+
if (options.updatedTo) {
|
|
194
|
+
queryParams.set("updated_to", options.updatedTo);
|
|
35
195
|
}
|
|
36
|
-
if (options.sortBy)
|
|
37
|
-
queryParams.set('sort_by', options.sortBy);
|
|
38
|
-
if (options.sortDir)
|
|
39
|
-
queryParams.set('sort_dir', options.sortDir);
|
|
40
|
-
if (options.name)
|
|
41
|
-
queryParams.set('name', options.name);
|
|
42
|
-
if (options.filterUserId)
|
|
43
|
-
queryParams.set('user_id', options.filterUserId);
|
|
44
|
-
if (options.createdFrom)
|
|
45
|
-
queryParams.set('created_from', options.createdFrom);
|
|
46
|
-
if (options.createdTo)
|
|
47
|
-
queryParams.set('created_to', options.createdTo);
|
|
48
|
-
if (options.updatedFrom)
|
|
49
|
-
queryParams.set('updated_from', options.updatedFrom);
|
|
50
|
-
if (options.updatedTo)
|
|
51
|
-
queryParams.set('updated_to', options.updatedTo);
|
|
52
196
|
const query = queryParams.toString() ? `?${queryParams.toString()}` : "";
|
|
53
|
-
|
|
197
|
+
const charts = await this.get(`/v2/charts${query}`, options.tenantId, options.userId, options.scopes, signal);
|
|
198
|
+
const chartsWithData = await Promise.all(charts.data.map(async (chart) => {
|
|
199
|
+
return {
|
|
200
|
+
...chart,
|
|
201
|
+
vega_lite_spec: {
|
|
202
|
+
...chart.vega_lite_spec,
|
|
203
|
+
data: {
|
|
204
|
+
values: (await this.runSafeQueryOnClient(chart.sql, chart.database)) ??
|
|
205
|
+
[],
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
}));
|
|
210
|
+
return {
|
|
211
|
+
...charts,
|
|
212
|
+
data: chartsWithData,
|
|
213
|
+
};
|
|
54
214
|
}
|
|
55
215
|
async getChart(id, options, signal) {
|
|
56
|
-
|
|
216
|
+
const chart = await this.get(`/v2/charts/${encodeURIComponent(id)}`, options.tenantId, options.userId, options.scopes, signal);
|
|
217
|
+
return {
|
|
218
|
+
...chart,
|
|
219
|
+
vega_lite_spec: {
|
|
220
|
+
...chart.vega_lite_spec,
|
|
221
|
+
data: {
|
|
222
|
+
values: await this.runSafeQueryOnClient(chart.sql, chart.database),
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
};
|
|
57
226
|
}
|
|
58
227
|
async updateChart(id, body, options, signal) {
|
|
59
228
|
return await this.put(`/v2/charts/${encodeURIComponent(id)}`, body, options.tenantId, options.userId, options.scopes, signal);
|
|
@@ -68,32 +237,55 @@ export class QueryPanelSdkAPI {
|
|
|
68
237
|
async listActiveCharts(options, signal) {
|
|
69
238
|
const queryParams = new URLSearchParams();
|
|
70
239
|
if (options.pagination?.page) {
|
|
71
|
-
queryParams.set(
|
|
240
|
+
queryParams.set("page", options.pagination.page.toString());
|
|
72
241
|
}
|
|
73
242
|
if (options.pagination?.limit) {
|
|
74
|
-
queryParams.set(
|
|
243
|
+
queryParams.set("limit", options.pagination.limit.toString());
|
|
75
244
|
}
|
|
76
245
|
if (options.sortBy)
|
|
77
|
-
queryParams.set(
|
|
246
|
+
queryParams.set("sort_by", options.sortBy);
|
|
78
247
|
if (options.sortDir)
|
|
79
|
-
queryParams.set(
|
|
248
|
+
queryParams.set("sort_dir", options.sortDir);
|
|
80
249
|
if (options.name)
|
|
81
|
-
queryParams.set(
|
|
250
|
+
queryParams.set("name", options.name);
|
|
82
251
|
if (options.filterUserId)
|
|
83
|
-
queryParams.set(
|
|
252
|
+
queryParams.set("user_id", options.filterUserId);
|
|
84
253
|
if (options.createdFrom)
|
|
85
|
-
queryParams.set(
|
|
254
|
+
queryParams.set("created_from", options.createdFrom);
|
|
86
255
|
if (options.createdTo)
|
|
87
|
-
queryParams.set(
|
|
256
|
+
queryParams.set("created_to", options.createdTo);
|
|
88
257
|
if (options.updatedFrom)
|
|
89
|
-
queryParams.set(
|
|
258
|
+
queryParams.set("updated_from", options.updatedFrom);
|
|
90
259
|
if (options.updatedTo)
|
|
91
|
-
queryParams.set(
|
|
260
|
+
queryParams.set("updated_to", options.updatedTo);
|
|
92
261
|
const query = queryParams.toString() ? `?${queryParams.toString()}` : "";
|
|
93
|
-
|
|
262
|
+
const charts = await this.get(`/v2/active-charts${query}`, options.tenantId, options.userId, options.scopes, signal);
|
|
263
|
+
if (options.withdata) {
|
|
264
|
+
charts.data = await Promise.all(charts.data.map(async (chart) => {
|
|
265
|
+
return {
|
|
266
|
+
...chart,
|
|
267
|
+
chart: await this.getChart(chart.chart_id, options),
|
|
268
|
+
};
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
return charts;
|
|
94
272
|
}
|
|
95
273
|
async getActiveChart(id, options, signal) {
|
|
96
|
-
|
|
274
|
+
const activeChart = await this.get(`/v2/active-charts/${encodeURIComponent(id)}`, options.tenantId, options.userId, options.scopes, signal);
|
|
275
|
+
return {
|
|
276
|
+
...activeChart,
|
|
277
|
+
...(!!activeChart.chart && {
|
|
278
|
+
chart: {
|
|
279
|
+
...activeChart.chart,
|
|
280
|
+
vega_lite_spec: {
|
|
281
|
+
...activeChart.chart.vega_lite_spec,
|
|
282
|
+
data: {
|
|
283
|
+
values: await this.runSafeQueryOnClient(activeChart.chart.sql, activeChart.chart.database),
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
}),
|
|
288
|
+
};
|
|
97
289
|
}
|
|
98
290
|
async updateActiveChart(id, body, options, signal) {
|
|
99
291
|
return await this.put(`/v2/active-charts/${encodeURIComponent(id)}`, body, options.tenantId, options.userId, options.scopes, signal);
|
|
@@ -101,36 +293,36 @@ export class QueryPanelSdkAPI {
|
|
|
101
293
|
async deleteActiveChart(id, options, signal) {
|
|
102
294
|
await this.delete(`/v2/active-charts/${encodeURIComponent(id)}`, options.tenantId, options.userId, options.scopes, signal);
|
|
103
295
|
}
|
|
104
|
-
async get(path, tenantId, userId, scopes, signal) {
|
|
296
|
+
async get(path, tenantId, userId, scopes, signal, sessionId) {
|
|
105
297
|
const res = await fetch(this.baseUrl + path, {
|
|
106
298
|
method: "GET",
|
|
107
|
-
headers: await this.headers(tenantId, userId, scopes, false),
|
|
299
|
+
headers: await this.headers(tenantId, userId, scopes, false, sessionId),
|
|
108
300
|
signal,
|
|
109
301
|
});
|
|
110
302
|
return await this.parseResponse(res);
|
|
111
303
|
}
|
|
112
|
-
async post(path, body, tenantId, userId, scopes, signal) {
|
|
304
|
+
async post(path, body, tenantId, userId, scopes, signal, sessionId) {
|
|
113
305
|
const res = await fetch(this.baseUrl + path, {
|
|
114
306
|
method: "POST",
|
|
115
|
-
headers: await this.headers(tenantId, userId, scopes),
|
|
307
|
+
headers: await this.headers(tenantId, userId, scopes, true, sessionId),
|
|
116
308
|
body: JSON.stringify(body ?? {}),
|
|
117
309
|
signal,
|
|
118
310
|
});
|
|
119
311
|
return await this.parseResponse(res);
|
|
120
312
|
}
|
|
121
|
-
async put(path, body, tenantId, userId, scopes, signal) {
|
|
313
|
+
async put(path, body, tenantId, userId, scopes, signal, sessionId) {
|
|
122
314
|
const res = await fetch(this.baseUrl + path, {
|
|
123
315
|
method: "PUT",
|
|
124
|
-
headers: await this.headers(tenantId, userId, scopes),
|
|
316
|
+
headers: await this.headers(tenantId, userId, scopes, true, sessionId),
|
|
125
317
|
body: JSON.stringify(body ?? {}),
|
|
126
318
|
signal,
|
|
127
319
|
});
|
|
128
320
|
return await this.parseResponse(res);
|
|
129
321
|
}
|
|
130
|
-
async delete(path, tenantId, userId, scopes, signal) {
|
|
322
|
+
async delete(path, tenantId, userId, scopes, signal, sessionId) {
|
|
131
323
|
const res = await fetch(this.baseUrl + path, {
|
|
132
324
|
method: "DELETE",
|
|
133
|
-
headers: await this.headers(tenantId, userId, scopes, false),
|
|
325
|
+
headers: await this.headers(tenantId, userId, scopes, false, sessionId),
|
|
134
326
|
signal,
|
|
135
327
|
});
|
|
136
328
|
return await this.parseResponse(res);
|
|
@@ -141,7 +333,7 @@ export class QueryPanelSdkAPI {
|
|
|
141
333
|
}
|
|
142
334
|
// Cache the imported private key to avoid re-importing on every request
|
|
143
335
|
if (!this.cachedPrivateKey) {
|
|
144
|
-
this.cachedPrivateKey = await importPKCS8(this.privateKey,
|
|
336
|
+
this.cachedPrivateKey = await importPKCS8(this.privateKey, "RS256");
|
|
145
337
|
}
|
|
146
338
|
const payload = {
|
|
147
339
|
organizationId: this.organizationId,
|
|
@@ -154,12 +346,12 @@ export class QueryPanelSdkAPI {
|
|
|
154
346
|
payload.scopes = scopes;
|
|
155
347
|
}
|
|
156
348
|
return await new SignJWT(payload)
|
|
157
|
-
.setProtectedHeader({ alg:
|
|
349
|
+
.setProtectedHeader({ alg: "RS256" })
|
|
158
350
|
.setIssuedAt()
|
|
159
|
-
.setExpirationTime(
|
|
351
|
+
.setExpirationTime("1h")
|
|
160
352
|
.sign(this.cachedPrivateKey);
|
|
161
353
|
}
|
|
162
|
-
async headers(tenantId, userId, scopes, includeJsonContentType = true) {
|
|
354
|
+
async headers(tenantId, userId, scopes, includeJsonContentType = true, sessionId) {
|
|
163
355
|
let authToken;
|
|
164
356
|
if (this.token) {
|
|
165
357
|
// Legacy mode: use provided JWT
|
|
@@ -170,17 +362,20 @@ export class QueryPanelSdkAPI {
|
|
|
170
362
|
authToken = await this.generateJWT(tenantId, userId, scopes);
|
|
171
363
|
}
|
|
172
364
|
const headers = {
|
|
173
|
-
|
|
174
|
-
|
|
365
|
+
Authorization: `Bearer ${authToken}`,
|
|
366
|
+
Accept: "application/json",
|
|
175
367
|
};
|
|
176
368
|
if (includeJsonContentType) {
|
|
177
369
|
headers["Content-Type"] = "application/json";
|
|
178
370
|
}
|
|
371
|
+
if (sessionId) {
|
|
372
|
+
headers["x-session-id"] = sessionId;
|
|
373
|
+
}
|
|
179
374
|
return headers;
|
|
180
375
|
}
|
|
181
376
|
async parseResponse(res) {
|
|
182
377
|
const text = await res.text();
|
|
183
|
-
let json
|
|
378
|
+
let json;
|
|
184
379
|
try {
|
|
185
380
|
json = text ? JSON.parse(text) : undefined;
|
|
186
381
|
}
|
|
@@ -195,5 +390,16 @@ export class QueryPanelSdkAPI {
|
|
|
195
390
|
}
|
|
196
391
|
return json;
|
|
197
392
|
}
|
|
393
|
+
async runSafeQueryOnClient(sql, database) {
|
|
394
|
+
try {
|
|
395
|
+
const adapter = this.getDatabase(database);
|
|
396
|
+
const result = await adapter.execute(sql);
|
|
397
|
+
return result.rows;
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
console.error(`Error running query on database '${database}': ${error}`);
|
|
401
|
+
return [];
|
|
402
|
+
}
|
|
403
|
+
}
|
|
198
404
|
}
|
|
199
405
|
//# sourceMappingURL=index.js.map
|