@askdb/studio 0.2.0-beta.35 → 0.2.0-beta.36
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 +12 -24
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/index-TAdxvl0x.js +101 -0
- package/dist/client/index.html +1 -1
- package/dist/execute-registry.d.ts +53 -0
- package/dist/execute-registry.d.ts.map +1 -1
- package/dist/execute-registry.js +232 -41
- package/dist/execute-registry.js.map +1 -1
- package/dist/introspection.d.ts.map +1 -1
- package/dist/introspection.js +3 -0
- package/dist/introspection.js.map +1 -1
- package/dist/package-manager.d.ts +31 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +54 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/request-guard.d.ts +44 -0
- package/dist/request-guard.d.ts.map +1 -0
- package/dist/request-guard.js +170 -0
- package/dist/request-guard.js.map +1 -0
- package/dist/server.d.ts +13 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +344 -94
- package/dist/server.js.map +1 -1
- package/dist/setup.d.ts +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +46 -58
- package/dist/setup.js.map +1 -1
- package/dist/shared/api.d.ts +19 -0
- package/dist/shared/api.d.ts.map +1 -1
- package/package.json +46 -38
- package/dist/client/assets/index-BvbATe8r.js +0 -101
package/dist/client/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>AskDB Studio</title>
|
|
7
7
|
<link rel="icon" type="image/png" media="(prefers-color-scheme: light)" href="/assets/brand/light-icon.png" />
|
|
8
8
|
<link rel="icon" type="image/png" media="(prefers-color-scheme: dark)" href="/assets/brand/dark-icon.png" />
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-TAdxvl0x.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/index-CULOwR3W.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
@@ -8,16 +8,41 @@
|
|
|
8
8
|
* Drivers are optional peers. The registry never imports a driver at module
|
|
9
9
|
* load time; every import lives inside an `executeXxx()` function so a missing
|
|
10
10
|
* package only fails when the user actually tries to execute a query.
|
|
11
|
+
*
|
|
12
|
+
* Safety model (every engine):
|
|
13
|
+
*
|
|
14
|
+
* 1. The server validates SQL with `@askdb/core`'s `validateSelectSql` before it
|
|
15
|
+
* reaches a runner ({@link validateExecuteSql}). Runners receive the
|
|
16
|
+
* normalized single statement (no trailing semicolon, no comments).
|
|
17
|
+
* 2. Each runner executes the SQL read-only: inside a read-only transaction
|
|
18
|
+
* (Postgres, MySQL/MariaDB), on a read-only file handle (SQLite), or inside
|
|
19
|
+
* an always-rolled-back transaction (SQL Server). Postgres, MySQL/MariaDB,
|
|
20
|
+
* and SQLite run a single statement; SQL Server runs the SQL as part of a
|
|
21
|
+
* batch, where a second statement without `;` isn't detected by step 1.
|
|
22
|
+
* Every engine except SQLite (whose queries can't be interrupted) enforces
|
|
23
|
+
* a statement timeout.
|
|
24
|
+
* 3. Each runner fetches at most `maxRows + 1` rows and reports `truncated`.
|
|
25
|
+
*
|
|
26
|
+
* None of this replaces a read-only database role — point Studio at one.
|
|
11
27
|
*/
|
|
28
|
+
import { type DialectSpec } from "@askdb/core";
|
|
12
29
|
import type { ExecuteResponse } from "./shared/api.js";
|
|
13
30
|
export type StudioExecuteProvider = "postgres" | "mysql" | "sqlite" | "sqlserver";
|
|
14
31
|
export type StudioExecuteInput = {
|
|
15
32
|
connectionString?: string;
|
|
16
33
|
file?: string;
|
|
34
|
+
/**
|
|
35
|
+
* A single SELECT that already passed {@link validateExecuteSql}. Runners
|
|
36
|
+
* wrap it (row cap, transaction) but never re-validate.
|
|
37
|
+
*/
|
|
17
38
|
sql: string;
|
|
18
39
|
params: unknown[];
|
|
19
40
|
/** Absolute path to the user's project root, used for driver resolution. */
|
|
20
41
|
projectRoot: string;
|
|
42
|
+
/** Per-query timeout in ms. Default {@link DEFAULT_EXECUTE_TIMEOUT_MS}. */
|
|
43
|
+
timeoutMs?: number;
|
|
44
|
+
/** Max rows returned. Default {@link DEFAULT_EXECUTE_MAX_ROWS}. */
|
|
45
|
+
maxRows?: number;
|
|
21
46
|
};
|
|
22
47
|
export type StudioDriverDefinition = {
|
|
23
48
|
provider: StudioExecuteProvider;
|
|
@@ -26,7 +51,35 @@ export type StudioDriverDefinition = {
|
|
|
26
51
|
installCommand: string;
|
|
27
52
|
execute(input: StudioExecuteInput): Promise<ExecuteResponse>;
|
|
28
53
|
};
|
|
54
|
+
export declare const DEFAULT_EXECUTE_TIMEOUT_MS = 30000;
|
|
55
|
+
export declare const DEFAULT_EXECUTE_MAX_ROWS = 500;
|
|
56
|
+
/**
|
|
57
|
+
* The dialect spec used to validate SQL for `provider`. A configured NL→SQL
|
|
58
|
+
* dialect override (`dialect` in `askdb.config.ts`) is honored when it belongs
|
|
59
|
+
* to the same engine family (e.g. `mariadb` on the `mysql` provider).
|
|
60
|
+
*/
|
|
61
|
+
export declare function executeDialectFor(provider: StudioExecuteProvider, dialectOverride?: string): DialectSpec;
|
|
62
|
+
/**
|
|
63
|
+
* Run `@askdb/core`'s read-only SELECT guardrail for the provider's dialect.
|
|
64
|
+
* Returns the normalized single statement; throws `SqlValidationError`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function validateExecuteSql(provider: StudioExecuteProvider, sql: string, dialectOverride?: string): string;
|
|
67
|
+
/**
|
|
68
|
+
* Wrap a validated single SELECT so the database returns at most `fetchLimit`
|
|
69
|
+
* rows. Used for engines with `LIMIT` (Postgres, MySQL). The newlines keep the
|
|
70
|
+
* wrapper intact even if the statement ends in something unexpected.
|
|
71
|
+
*/
|
|
72
|
+
export declare function wrapWithRowLimit(sql: string, fetchLimit: number): string;
|
|
73
|
+
/**
|
|
74
|
+
* SQL Server has no read-only transaction mode, so the statement runs inside a
|
|
75
|
+
* transaction that is always rolled back. `XACT_ABORT` rolls back on any error;
|
|
76
|
+
* `ROWCOUNT` caps the rows returned (SQL Server has no `LIMIT`, and wrapping in
|
|
77
|
+
* a derived table would reject unnamed columns such as `COUNT(*)`).
|
|
78
|
+
*/
|
|
79
|
+
export declare function buildSqlServerBatch(sql: string, fetchLimit: number): string;
|
|
29
80
|
export declare const EXECUTE_DRIVER_REGISTRY: Record<StudioExecuteProvider, StudioDriverDefinition>;
|
|
81
|
+
/** True when `value` is a registry key (own property — rejects `constructor`, `__proto__`, …). */
|
|
82
|
+
export declare function isStudioExecuteProvider(value: unknown): value is StudioExecuteProvider;
|
|
30
83
|
/**
|
|
31
84
|
* Check whether a driver package is resolvable from the user's project root.
|
|
32
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-registry.d.ts","sourceRoot":"","sources":["../src/execute-registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"execute-registry.d.ts","sourceRoot":"","sources":["../src/execute-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAUrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMvD,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAElF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,IAAI,GAAG,QAAQ,GAAG,gBAAgB,GAAG,OAAO,CAAC;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9D,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAiB5C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAOxG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAER;AAgBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE;AAyUD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAU3E;AA2DD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CA6BzF,CAAC;AAEF,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAEtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAanF"}
|
package/dist/execute-registry.js
CHANGED
|
@@ -8,96 +8,238 @@
|
|
|
8
8
|
* Drivers are optional peers. The registry never imports a driver at module
|
|
9
9
|
* load time; every import lives inside an `executeXxx()` function so a missing
|
|
10
10
|
* package only fails when the user actually tries to execute a query.
|
|
11
|
+
*
|
|
12
|
+
* Safety model (every engine):
|
|
13
|
+
*
|
|
14
|
+
* 1. The server validates SQL with `@askdb/core`'s `validateSelectSql` before it
|
|
15
|
+
* reaches a runner ({@link validateExecuteSql}). Runners receive the
|
|
16
|
+
* normalized single statement (no trailing semicolon, no comments).
|
|
17
|
+
* 2. Each runner executes the SQL read-only: inside a read-only transaction
|
|
18
|
+
* (Postgres, MySQL/MariaDB), on a read-only file handle (SQLite), or inside
|
|
19
|
+
* an always-rolled-back transaction (SQL Server). Postgres, MySQL/MariaDB,
|
|
20
|
+
* and SQLite run a single statement; SQL Server runs the SQL as part of a
|
|
21
|
+
* batch, where a second statement without `;` isn't detected by step 1.
|
|
22
|
+
* Every engine except SQLite (whose queries can't be interrupted) enforces
|
|
23
|
+
* a statement timeout.
|
|
24
|
+
* 3. Each runner fetches at most `maxRows + 1` rows and reports `truncated`.
|
|
25
|
+
*
|
|
26
|
+
* None of this replaces a read-only database role — point Studio at one.
|
|
11
27
|
*/
|
|
28
|
+
import { getDialectSpec, validateSelectSql, } from "@askdb/core";
|
|
12
29
|
import { loadPgDriver, isPgDriverInstalled } from "@askdb/postgres";
|
|
13
30
|
import { loadMysql2Driver, isMysql2DriverInstalled } from "@askdb/mysql";
|
|
14
31
|
import { loadBetterSqlite3Driver, isBetterSqlite3DriverInstalled } from "@askdb/sqlite";
|
|
15
32
|
import { loadMssqlDriver, isMssqlDriverInstalled, resolveConnectionInput, } from "@askdb/sqlserver";
|
|
33
|
+
export const DEFAULT_EXECUTE_TIMEOUT_MS = 30_000;
|
|
34
|
+
export const DEFAULT_EXECUTE_MAX_ROWS = 500;
|
|
35
|
+
/** Alias for the row-cap subquery wrapper. */
|
|
36
|
+
const ROW_LIMIT_ALIAS = "askdb_q";
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Validation
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/** Built-in dialects each execute provider can run. The first is the default. */
|
|
41
|
+
const PROVIDER_DIALECTS = {
|
|
42
|
+
postgres: ["postgres", "cockroachdb"],
|
|
43
|
+
mysql: ["mysql", "mariadb"],
|
|
44
|
+
sqlite: ["sqlite"],
|
|
45
|
+
sqlserver: ["sqlserver"],
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* The dialect spec used to validate SQL for `provider`. A configured NL→SQL
|
|
49
|
+
* dialect override (`dialect` in `askdb.config.ts`) is honored when it belongs
|
|
50
|
+
* to the same engine family (e.g. `mariadb` on the `mysql` provider).
|
|
51
|
+
*/
|
|
52
|
+
export function executeDialectFor(provider, dialectOverride) {
|
|
53
|
+
const family = PROVIDER_DIALECTS[provider];
|
|
54
|
+
const id = dialectOverride && family.includes(dialectOverride)
|
|
55
|
+
? dialectOverride
|
|
56
|
+
: family[0];
|
|
57
|
+
return getDialectSpec(id);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Run `@askdb/core`'s read-only SELECT guardrail for the provider's dialect.
|
|
61
|
+
* Returns the normalized single statement; throws `SqlValidationError`.
|
|
62
|
+
*/
|
|
63
|
+
export function validateExecuteSql(provider, sql, dialectOverride) {
|
|
64
|
+
return validateSelectSql(executeDialectFor(provider, dialectOverride), sql);
|
|
65
|
+
}
|
|
16
66
|
// ---------------------------------------------------------------------------
|
|
17
67
|
// Normalization helpers
|
|
18
68
|
// ---------------------------------------------------------------------------
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
69
|
+
function resolveLimits(input) {
|
|
70
|
+
const timeoutMs = positiveInt(input.timeoutMs) ?? DEFAULT_EXECUTE_TIMEOUT_MS;
|
|
71
|
+
const maxRows = positiveInt(input.maxRows) ?? DEFAULT_EXECUTE_MAX_ROWS;
|
|
72
|
+
return { timeoutMs, maxRows, fetchLimit: maxRows + 1 };
|
|
73
|
+
}
|
|
74
|
+
function positiveInt(value) {
|
|
75
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value > 0 ? value : undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Wrap a validated single SELECT so the database returns at most `fetchLimit`
|
|
79
|
+
* rows. Used for engines with `LIMIT` (Postgres, MySQL). The newlines keep the
|
|
80
|
+
* wrapper intact even if the statement ends in something unexpected.
|
|
81
|
+
*/
|
|
82
|
+
export function wrapWithRowLimit(sql, fetchLimit) {
|
|
83
|
+
return `SELECT * FROM (\n${sql}\n) AS ${ROW_LIMIT_ALIAS} LIMIT ${fetchLimit}`;
|
|
84
|
+
}
|
|
85
|
+
function buildOkResponse(columns, rows, maxRows, durationMs) {
|
|
86
|
+
const truncated = rows.length > maxRows;
|
|
87
|
+
const shown = truncated ? rows.slice(0, maxRows) : rows;
|
|
22
88
|
return {
|
|
23
89
|
ok: true,
|
|
24
90
|
columns,
|
|
25
|
-
rows:
|
|
26
|
-
rowCount,
|
|
91
|
+
rows: shown,
|
|
92
|
+
rowCount: shown.length,
|
|
27
93
|
durationMs,
|
|
28
94
|
truncated,
|
|
95
|
+
rowLimit: maxRows,
|
|
29
96
|
};
|
|
30
97
|
}
|
|
98
|
+
function toRowArray(row, columns) {
|
|
99
|
+
if (Array.isArray(row))
|
|
100
|
+
return row;
|
|
101
|
+
const record = (row ?? {});
|
|
102
|
+
return columns.map((c) => record[c]);
|
|
103
|
+
}
|
|
104
|
+
function errorResponse(err) {
|
|
105
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Race `promise` against a timer. On timeout, run `onTimeout` (cancel/destroy
|
|
109
|
+
* the connection) and reject. A client-side backstop for server-side timeouts.
|
|
110
|
+
*/
|
|
111
|
+
async function withTimeout(promise, ms, onTimeout) {
|
|
112
|
+
let timer;
|
|
113
|
+
const timeout = new Promise((_, reject) => {
|
|
114
|
+
timer = setTimeout(() => {
|
|
115
|
+
try {
|
|
116
|
+
onTimeout();
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// best effort
|
|
120
|
+
}
|
|
121
|
+
reject(new Error(`Query timed out after ${ms} ms.`));
|
|
122
|
+
}, ms);
|
|
123
|
+
});
|
|
124
|
+
try {
|
|
125
|
+
return await Promise.race([promise, timeout]);
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
clearTimeout(timer);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** Grace period before the client-side backstop fires after the server-side timeout. */
|
|
132
|
+
const CLIENT_TIMEOUT_GRACE_MS = 2_000;
|
|
31
133
|
async function executePostgres(input) {
|
|
32
134
|
const { connectionString, sql, params, projectRoot } = input;
|
|
135
|
+
const { timeoutMs, maxRows, fetchLimit } = resolveLimits(input);
|
|
33
136
|
if (!connectionString) {
|
|
34
|
-
return { ok: false, error: "No connection URL configured for Postgres execute. Set
|
|
137
|
+
return { ok: false, error: "No connection URL configured for Postgres execute. Set studio.execute.databaseUrl in askdb.config.ts." };
|
|
35
138
|
}
|
|
36
139
|
let pgMod;
|
|
37
140
|
try {
|
|
38
141
|
pgMod = await loadPgDriver({ resolveFrom: projectRoot });
|
|
39
142
|
}
|
|
40
143
|
catch (err) {
|
|
41
|
-
return
|
|
144
|
+
return errorResponse(err);
|
|
42
145
|
}
|
|
43
|
-
const client = new pgMod.Client({
|
|
146
|
+
const client = new pgMod.Client({
|
|
147
|
+
connectionString,
|
|
148
|
+
connectionTimeoutMillis: timeoutMs,
|
|
149
|
+
// Client-side backstop; the server-side statement_timeout below fires first.
|
|
150
|
+
query_timeout: timeoutMs + CLIENT_TIMEOUT_GRACE_MS,
|
|
151
|
+
});
|
|
44
152
|
try {
|
|
45
153
|
await client.connect();
|
|
46
154
|
}
|
|
47
155
|
catch (err) {
|
|
48
|
-
return
|
|
156
|
+
return errorResponse(err);
|
|
49
157
|
}
|
|
50
158
|
const startMs = Date.now();
|
|
51
159
|
try {
|
|
160
|
+
// Session default + explicit read-only transaction: even a statement that
|
|
161
|
+
// slipped past validation cannot write, and cannot COMMIT its way out
|
|
162
|
+
// (the extended protocol below runs exactly one statement).
|
|
163
|
+
await client.query("SET default_transaction_read_only = on");
|
|
52
164
|
await client.query("BEGIN READ ONLY");
|
|
53
|
-
|
|
54
|
-
await client.query(
|
|
165
|
+
await client.query(`SET LOCAL statement_timeout = ${timeoutMs}`);
|
|
166
|
+
const result = await client.query({
|
|
167
|
+
text: wrapWithRowLimit(sql, fetchLimit),
|
|
168
|
+
values: params,
|
|
169
|
+
queryMode: "extended",
|
|
170
|
+
name: "askdb_studio_execute",
|
|
171
|
+
rowMode: "array",
|
|
172
|
+
});
|
|
173
|
+
await client.query("ROLLBACK");
|
|
55
174
|
const durationMs = Date.now() - startMs;
|
|
56
175
|
const columns = result.fields.map((f) => f.name);
|
|
57
|
-
const rows = result.rows.map((r) =>
|
|
58
|
-
return buildOkResponse(columns, rows,
|
|
176
|
+
const rows = result.rows.map((r) => toRowArray(r, columns));
|
|
177
|
+
return buildOkResponse(columns, rows, maxRows, durationMs);
|
|
59
178
|
}
|
|
60
179
|
catch (err) {
|
|
61
180
|
await client.query("ROLLBACK").catch(() => { });
|
|
62
|
-
return
|
|
181
|
+
return errorResponse(err);
|
|
63
182
|
}
|
|
64
183
|
finally {
|
|
65
184
|
await client.end().catch(() => { });
|
|
66
185
|
}
|
|
67
186
|
}
|
|
187
|
+
/** MySQL uses `max_execution_time` (ms); MariaDB uses `max_statement_time` (seconds). */
|
|
188
|
+
async function applyMysqlTimeout(conn, timeoutMs) {
|
|
189
|
+
try {
|
|
190
|
+
await conn.query(`SET SESSION MAX_EXECUTION_TIME = ${timeoutMs}`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// Not MySQL 5.7.8+ — try MariaDB.
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
await conn.query(`SET SESSION max_statement_time = ${Math.max(timeoutMs / 1000, 0.001)}`);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Neither variable exists; the client-side backstop still applies.
|
|
201
|
+
}
|
|
202
|
+
}
|
|
68
203
|
async function executeMySQL(input) {
|
|
69
204
|
const { connectionString, sql, params, projectRoot } = input;
|
|
205
|
+
const { timeoutMs, maxRows, fetchLimit } = resolveLimits(input);
|
|
70
206
|
if (!connectionString) {
|
|
71
|
-
return { ok: false, error: "No connection URL configured for MySQL execute. Set
|
|
207
|
+
return { ok: false, error: "No connection URL configured for MySQL execute. Set studio.execute.databaseUrl in askdb.config.ts." };
|
|
72
208
|
}
|
|
73
209
|
let mysql2Mod;
|
|
74
210
|
try {
|
|
75
211
|
mysql2Mod = await loadMysql2Driver({ resolveFrom: projectRoot });
|
|
76
212
|
}
|
|
77
213
|
catch (err) {
|
|
78
|
-
return
|
|
214
|
+
return errorResponse(err);
|
|
79
215
|
}
|
|
80
216
|
let conn;
|
|
81
217
|
try {
|
|
82
|
-
conn = await mysql2Mod.createConnection({
|
|
218
|
+
conn = await mysql2Mod.createConnection({
|
|
219
|
+
uri: connectionString,
|
|
220
|
+
multipleStatements: false,
|
|
221
|
+
connectTimeout: timeoutMs,
|
|
222
|
+
});
|
|
83
223
|
}
|
|
84
224
|
catch (err) {
|
|
85
|
-
return
|
|
225
|
+
return errorResponse(err);
|
|
86
226
|
}
|
|
87
227
|
const startMs = Date.now();
|
|
88
228
|
try {
|
|
229
|
+
await applyMysqlTimeout(conn, timeoutMs);
|
|
89
230
|
await conn.query("SET SESSION TRANSACTION READ ONLY");
|
|
90
|
-
await conn.query("START TRANSACTION");
|
|
91
|
-
|
|
231
|
+
await conn.query("START TRANSACTION READ ONLY");
|
|
232
|
+
// `execute` uses the binary prepared-statement protocol: one statement only.
|
|
233
|
+
const [rowsRaw, fields] = await withTimeout(conn.execute({ sql: wrapWithRowLimit(sql, fetchLimit), values: params, rowsAsArray: true }), timeoutMs + CLIENT_TIMEOUT_GRACE_MS, () => conn.destroy?.());
|
|
92
234
|
await conn.query("ROLLBACK");
|
|
93
235
|
const durationMs = Date.now() - startMs;
|
|
94
|
-
const columns = fields.map((f) => f.name);
|
|
95
|
-
const rows = rowsRaw.map((r) =>
|
|
96
|
-
return buildOkResponse(columns, rows,
|
|
236
|
+
const columns = (fields ?? []).map((f) => f.name);
|
|
237
|
+
const rows = (rowsRaw ?? []).map((r) => toRowArray(r, columns));
|
|
238
|
+
return buildOkResponse(columns, rows, maxRows, durationMs);
|
|
97
239
|
}
|
|
98
240
|
catch (err) {
|
|
99
241
|
await conn.query("ROLLBACK").catch(() => { });
|
|
100
|
-
return
|
|
242
|
+
return errorResponse(err);
|
|
101
243
|
}
|
|
102
244
|
finally {
|
|
103
245
|
await conn.end().catch(() => { });
|
|
@@ -105,8 +247,9 @@ async function executeMySQL(input) {
|
|
|
105
247
|
}
|
|
106
248
|
async function executeSQLite(input) {
|
|
107
249
|
const { file, sql, params, projectRoot } = input;
|
|
250
|
+
const { timeoutMs, maxRows, fetchLimit } = resolveLimits(input);
|
|
108
251
|
if (!file) {
|
|
109
|
-
return { ok: false, error: "No SQLite file path configured for execute. Set
|
|
252
|
+
return { ok: false, error: "No SQLite file path configured for execute. Set studio.execute.file in askdb.config.ts." };
|
|
110
253
|
}
|
|
111
254
|
let Sqlite3;
|
|
112
255
|
try {
|
|
@@ -114,20 +257,38 @@ async function executeSQLite(input) {
|
|
|
114
257
|
Sqlite3 = mod.default;
|
|
115
258
|
}
|
|
116
259
|
catch (err) {
|
|
117
|
-
return
|
|
260
|
+
return errorResponse(err);
|
|
118
261
|
}
|
|
119
262
|
const startMs = Date.now();
|
|
120
|
-
|
|
263
|
+
let db;
|
|
121
264
|
try {
|
|
265
|
+
// Read-only handle. `timeout` is only the busy (lock-wait) timeout —
|
|
266
|
+
// better-sqlite3 runs queries synchronously and cannot interrupt them.
|
|
267
|
+
db = new Sqlite3(file, { readonly: true, fileMustExist: true, timeout: timeoutMs });
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
return errorResponse(err);
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
// `prepare` rejects strings containing more than one statement.
|
|
122
274
|
const stmt = db.prepare(sql);
|
|
275
|
+
if (!stmt.reader) {
|
|
276
|
+
return { ok: false, error: "Only statements that return rows can be executed." };
|
|
277
|
+
}
|
|
278
|
+
stmt.raw(true);
|
|
123
279
|
const columns = stmt.columns().map((c) => c.name);
|
|
124
|
-
const
|
|
280
|
+
const rows = [];
|
|
281
|
+
// Stream rows and stop at the cap — never materialize the full result.
|
|
282
|
+
for (const row of stmt.iterate(...params)) {
|
|
283
|
+
rows.push(toRowArray(row, columns));
|
|
284
|
+
if (rows.length >= fetchLimit)
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
125
287
|
const durationMs = Date.now() - startMs;
|
|
126
|
-
|
|
127
|
-
return buildOkResponse(columns, rows, rows.length, durationMs);
|
|
288
|
+
return buildOkResponse(columns, rows, maxRows, durationMs);
|
|
128
289
|
}
|
|
129
290
|
catch (err) {
|
|
130
|
-
return
|
|
291
|
+
return errorResponse(err);
|
|
131
292
|
}
|
|
132
293
|
finally {
|
|
133
294
|
db.close();
|
|
@@ -151,24 +312,50 @@ function rewriteSqlServerParams(sql, params) {
|
|
|
151
312
|
.replace(/\?/g, () => `@p${idx++}`);
|
|
152
313
|
return { sql: rewritten, bindings };
|
|
153
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* SQL Server has no read-only transaction mode, so the statement runs inside a
|
|
317
|
+
* transaction that is always rolled back. `XACT_ABORT` rolls back on any error;
|
|
318
|
+
* `ROWCOUNT` caps the rows returned (SQL Server has no `LIMIT`, and wrapping in
|
|
319
|
+
* a derived table would reject unnamed columns such as `COUNT(*)`).
|
|
320
|
+
*/
|
|
321
|
+
export function buildSqlServerBatch(sql, fetchLimit) {
|
|
322
|
+
return [
|
|
323
|
+
"SET XACT_ABORT ON;",
|
|
324
|
+
`SET ROWCOUNT ${fetchLimit};`,
|
|
325
|
+
"BEGIN TRANSACTION;",
|
|
326
|
+
sql,
|
|
327
|
+
";",
|
|
328
|
+
"IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;",
|
|
329
|
+
"SET ROWCOUNT 0;",
|
|
330
|
+
].join("\n");
|
|
331
|
+
}
|
|
332
|
+
function recordsetColumns(recordset) {
|
|
333
|
+
if (recordset.columns) {
|
|
334
|
+
return Object.values(recordset.columns)
|
|
335
|
+
.sort((a, b) => a.index - b.index)
|
|
336
|
+
.map((c) => c.name);
|
|
337
|
+
}
|
|
338
|
+
return recordset.length > 0 ? Object.keys(recordset[0]) : [];
|
|
339
|
+
}
|
|
154
340
|
async function executeSQLServer(input) {
|
|
155
341
|
const { connectionString, sql, params, projectRoot } = input;
|
|
342
|
+
const { timeoutMs, maxRows, fetchLimit } = resolveLimits(input);
|
|
156
343
|
if (!connectionString) {
|
|
157
|
-
return { ok: false, error: "No connection URL configured for SQL Server execute. Set
|
|
344
|
+
return { ok: false, error: "No connection URL configured for SQL Server execute. Set studio.execute.databaseUrl in askdb.config.ts." };
|
|
158
345
|
}
|
|
159
346
|
let mssqlMod;
|
|
160
347
|
try {
|
|
161
348
|
mssqlMod = await loadMssqlDriver({ resolveFrom: projectRoot });
|
|
162
349
|
}
|
|
163
350
|
catch (err) {
|
|
164
|
-
return
|
|
351
|
+
return errorResponse(err);
|
|
165
352
|
}
|
|
166
353
|
let pool;
|
|
167
354
|
try {
|
|
168
355
|
pool = await new mssqlMod.ConnectionPool(resolveConnectionInput(connectionString)).connect();
|
|
169
356
|
}
|
|
170
357
|
catch (err) {
|
|
171
|
-
return
|
|
358
|
+
return errorResponse(err);
|
|
172
359
|
}
|
|
173
360
|
const startMs = Date.now();
|
|
174
361
|
try {
|
|
@@ -177,18 +364,18 @@ async function executeSQLServer(input) {
|
|
|
177
364
|
for (const [name, value] of Object.entries(bindings)) {
|
|
178
365
|
req.input(name, value);
|
|
179
366
|
}
|
|
180
|
-
const result = await req.query(rewrittenSql);
|
|
367
|
+
const result = await withTimeout(req.query(buildSqlServerBatch(rewrittenSql, fetchLimit)), timeoutMs, () => req.cancel?.());
|
|
181
368
|
const durationMs = Date.now() - startMs;
|
|
182
|
-
const
|
|
183
|
-
const columns =
|
|
184
|
-
const rows =
|
|
185
|
-
return buildOkResponse(columns, rows,
|
|
369
|
+
const recordset = result.recordset ?? result.recordsets?.[0] ?? [];
|
|
370
|
+
const columns = recordsetColumns(recordset);
|
|
371
|
+
const rows = recordset.map((r) => toRowArray(r, columns));
|
|
372
|
+
return buildOkResponse(columns, rows, maxRows, durationMs);
|
|
186
373
|
}
|
|
187
374
|
catch (err) {
|
|
188
|
-
return
|
|
375
|
+
return errorResponse(err);
|
|
189
376
|
}
|
|
190
377
|
finally {
|
|
191
|
-
await pool.close();
|
|
378
|
+
await pool.close().catch(() => { });
|
|
192
379
|
}
|
|
193
380
|
}
|
|
194
381
|
// ---------------------------------------------------------------------------
|
|
@@ -224,6 +411,10 @@ export const EXECUTE_DRIVER_REGISTRY = {
|
|
|
224
411
|
execute: executeSQLServer,
|
|
225
412
|
},
|
|
226
413
|
};
|
|
414
|
+
/** True when `value` is a registry key (own property — rejects `constructor`, `__proto__`, …). */
|
|
415
|
+
export function isStudioExecuteProvider(value) {
|
|
416
|
+
return typeof value === "string" && Object.hasOwn(EXECUTE_DRIVER_REGISTRY, value);
|
|
417
|
+
}
|
|
227
418
|
/**
|
|
228
419
|
* Check whether a driver package is resolvable from the user's project root.
|
|
229
420
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-registry.js","sourceRoot":"","sources":["../src/execute-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execute-registry.js","sourceRoot":"","sources":["../src/execute-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspection.d.ts","sourceRoot":"","sources":["../src/introspection.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAe3B,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,uBAAuB,CASxE;AA4ED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"introspection.d.ts","sourceRoot":"","sources":["../src/introspection.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAe3B,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,uBAAuB,CASxE;AA4ED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAqClC"}
|
package/dist/introspection.js
CHANGED
|
@@ -110,11 +110,14 @@ export async function runStudioIntrospection(options) {
|
|
|
110
110
|
if (!connection.ok)
|
|
111
111
|
throw new Error(connection.error);
|
|
112
112
|
const schemaId = options.schemaId ?? inferSchemaId(options.outDir);
|
|
113
|
+
// Resync reads the same schema list `askdb introspect` does (introspection.schemas).
|
|
114
|
+
const schemas = getAskDbRuntimeConfig().introspection.schemas;
|
|
113
115
|
const connectorConfig = {
|
|
114
116
|
provider: plan.engine,
|
|
115
117
|
url: connection.url,
|
|
116
118
|
schemaPath: connection.schemaPath,
|
|
117
119
|
schemaId,
|
|
120
|
+
...(schemas ? { filters: { schemas } } : {}),
|
|
118
121
|
};
|
|
119
122
|
const runConfig = connectorRegistry.createConnector(connectorConfig);
|
|
120
123
|
const connector = runConfig.connector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspection.js","sourceRoot":"","sources":["../src/introspection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"introspection.js","sourceRoot":"","sources":["../src/introspection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-manager helpers shared by the setup wizard (`setup.ts`) and the
|
|
3
|
+
* execute-driver install endpoint (`server.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Only allowlisted package names ever reach these helpers — never
|
|
6
|
+
* browser-supplied strings — but {@link packageManagerSpawnSpec} re-checks
|
|
7
|
+
* every argument anyway because Windows needs `shell: true` (see below).
|
|
8
|
+
*/
|
|
9
|
+
export type PackageManager = "pnpm" | "npm" | "yarn" | "bun";
|
|
10
|
+
/** The package manager implied by a lockfile directly inside `dir`, if any. */
|
|
11
|
+
export declare function lockfilePackageManager(dir: string): PackageManager | null;
|
|
12
|
+
/** Arguments that add `packages` as dependencies with the given package manager. */
|
|
13
|
+
export declare function packageManagerAddArgs(pm: PackageManager, packages: readonly string[]): string[];
|
|
14
|
+
/** Human-readable install command, e.g. `pnpm add pg`. */
|
|
15
|
+
export declare function formatInstallCommand(pm: PackageManager, packages: readonly string[]): string;
|
|
16
|
+
export type PackageManagerSpawnSpec = {
|
|
17
|
+
command: string;
|
|
18
|
+
args: string[];
|
|
19
|
+
shell: boolean;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* How to spawn a package manager on this platform.
|
|
23
|
+
*
|
|
24
|
+
* On Windows, package managers are `.cmd` shims, and Node refuses to spawn
|
|
25
|
+
* `.cmd`/`.bat` files without a shell (EINVAL since Node 18.20.2 / 20.12.2,
|
|
26
|
+
* CVE-2024-27980). So Windows gets `shell: true` with the bare command name.
|
|
27
|
+
* Arguments are validated against a strict allowlist pattern first, so the
|
|
28
|
+
* shell never sees anything it could interpret.
|
|
29
|
+
*/
|
|
30
|
+
export declare function packageManagerSpawnSpec(pm: PackageManager, args: readonly string[], platform?: NodeJS.Platform): PackageManagerSpawnSpec;
|
|
31
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAMzE;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/F;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE5F;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,uBAAuB,CAUzB"}
|