void 0.8.11 → 0.9.1
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/dist/{auth-cmd-DE2YDAk0.mjs → auth-cmd-CPkWrQR9.mjs} +2 -2
- package/dist/{better-auth-shared-BXdg2Sur.d.mts → better-auth-shared-CmEQZs1T.d.mts} +2 -2
- package/dist/{cache-ChOUXuMY.mjs → cache-1SVxZ7BK.mjs} +2 -2
- package/dist/{cancel-deploy-g6bC-mpl.mjs → cancel-deploy-JaFClLr7.mjs} +1 -1
- package/dist/cli/cli.mjs +77 -40
- package/dist/{client-CCOKwNUz.mjs → client-DIfOFf1W.mjs} +6 -1
- package/dist/{create-project-DmGoYMqF.mjs → create-project-DCUrFJxa.mjs} +13 -5
- package/dist/{db-CSn2p-PN.mjs → db-DiddQC2v.mjs} +192 -20
- package/dist/{delete-D446r1rC.mjs → delete-CYknzwXU.mjs} +2 -2
- package/dist/{deploy-OPo_tSWl.mjs → deploy-CRU9fGjE.mjs} +22 -22
- package/dist/{domain-Digh83lu.mjs → domain-DxTc6HDn.mjs} +1 -1
- package/dist/{env-CJMOHUbW.mjs → env-Bvw0wMTI.mjs} +1 -1
- package/dist/{env-helpers-GICENGaN.d.mts → env-helpers-Bd2wVdxz.d.mts} +1 -1
- package/dist/{gen-DVPMPTL1.mjs → gen-CZdNWIaA.mjs} +1 -1
- package/dist/{handler-2mA_-sst.d.mts → handler-xflsMwWM.d.mts} +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +242 -107
- package/dist/{init-BaXYK2PD.mjs → init-BHupO7Fm.mjs} +9 -9
- package/dist/{link-PClO4q2M.mjs → link-7MoXUMaI.mjs} +8 -10
- package/dist/{list-G03-pEN-.mjs → list-N2mCHv8q.mjs} +2 -2
- package/dist/{login-BZ1Yk9Xw.mjs → login-tt1OmNVg.mjs} +1 -1
- package/dist/{logs-D0a_HhLn.mjs → logs-Cl7q2CjZ.mjs} +1 -1
- package/dist/{mcp-BLsmImuJ.mjs → mcp-BXD35N2J.mjs} +1 -1
- package/dist/{node-x1AzR6Yf.mjs → node-CHWVVjO6.mjs} +3 -3
- package/dist/package-json-B2TD0JLu.mjs +44 -0
- package/dist/pages/client.d.mts +1 -1
- package/dist/pages/head-client.d.mts +1 -1
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +1 -1
- package/dist/pages/islands-plugin.d.mts +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +1 -1
- package/dist/{plugin-inference-Ba1uGdIy.mjs → plugin-inference-BUBhHt_1.mjs} +6 -2
- package/dist/{prepare-D8znEv3-.mjs → prepare-CrlAVbWS.mjs} +3 -3
- package/dist/{preset-BRsCi8ZB.mjs → preset-CIJG2O7a.mjs} +6 -21
- package/dist/{project-cmd-CErG1vM7.mjs → project-cmd-CLrqSbqj.mjs} +8 -8
- package/dist/{protocol-DXs_1QcC.d.mts → protocol-DYca39yJ.d.mts} +3 -3
- package/dist/proxy-M3pxItg2.mjs +5 -0
- package/dist/{rollback-BtiabraI.mjs → rollback-CEbAwbHK.mjs} +1 -1
- package/dist/{runner-DCYwTlee.mjs → runner-DLZ9E_cX.mjs} +11 -3
- package/dist/runtime/ai.mjs +1 -1
- package/dist/runtime/auth.d.mts +1 -1
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +3 -3
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +6 -0
- package/dist/runtime/client-react.mjs +5 -0
- package/dist/runtime/client-solid.d.mts +6 -0
- package/dist/runtime/client-solid.mjs +5 -0
- package/dist/runtime/client-svelte.d.mts +6 -0
- package/dist/runtime/client-svelte.mjs +5 -0
- package/dist/runtime/client-vue.d.mts +6 -0
- package/dist/runtime/client-vue.mjs +5 -0
- package/dist/runtime/client.d.mts +2 -2
- package/dist/runtime/client.mjs +1 -1
- package/dist/runtime/env-helpers.d.mts +1 -1
- package/dist/runtime/env-public-client.d.mts +1 -1
- package/dist/runtime/env-public.d.mts +2 -2
- package/dist/runtime/env-public.mjs +1 -1
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-stream.d.mts +1 -1
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.d.mts +1 -1
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +1 -1
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/live.d.mts +2 -2
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/migration-handler-pg.mjs +1 -1
- package/dist/runtime/remote/index.d.mts +5 -1
- package/dist/runtime/remote/index.mjs +7 -4
- package/dist/runtime/sandbox.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws.d.mts +3 -3
- package/dist/{scan-DzzHqtiT.mjs → scan-BNC_1OsY.mjs} +1 -1
- package/dist/{secret-CNnequJa.mjs → secret-C_uTY7xx.mjs} +2 -2
- package/dist/{skills-C38GxuGT.mjs → skills-BRKc--As.mjs} +1 -1
- package/package.json +22 -2
- package/skills/void/docs/guide/auth.md +3 -3
- package/skills/void/docs/guide/env-vars.md +4 -1
- package/skills/void/docs/integrations/cloudflare.md +3 -2
- package/skills/void/docs/reference/api.md +42 -30
- package/skills/void/docs/reference/cli.md +46 -28
- package/skills/void/docs/reference/config.md +1 -1
- package/skills/void/docs/reference/resource-inference.md +11 -11
- /package/dist/{agents-Dkgafwfr.mjs → agents-MhSzNMiC.mjs} +0 -0
- /package/dist/{auth-CHfPhSta.d.mts → auth-CDeb2XAl.d.mts} +0 -0
- /package/dist/{auth-migrations-BqJoGqGQ.mjs → auth-migrations-CuQkjjWE.mjs} +0 -0
- /package/dist/{better-auth-shared-CbAF6sOM.mjs → better-auth-shared-ChVbrq52.mjs} +0 -0
- /package/dist/{defer-DkoEwda-.mjs → defer-CouVukrf.mjs} +0 -0
- /package/dist/{drizzle-DmaANP4-.mjs → drizzle-2fs1qTgy.mjs} +0 -0
- /package/dist/{env-raw-zk5JQKZe.mjs → env-raw-RDkMnSTC.mjs} +0 -0
- /package/dist/{fetch-error-rXermVU3.mjs → fetch-error-BFIoojjf.mjs} +0 -0
- /package/dist/{fetch-error-7aWl0RiD.d.mts → fetch-error-CimrygMq.d.mts} +0 -0
- /package/dist/{head-DnTAP4p-.d.mts → head-BsSTGnIe.d.mts} +0 -0
- /package/dist/{headers-wAPJigtE.mjs → headers-Y0jshugF.mjs} +0 -0
- /package/dist/{pg-BDQxUp3Q.mjs → pg-CMZ_5wsC.mjs} +0 -0
- /package/dist/{project-slug-De4UjtD9.mjs → project-slug-rX3kTOfY.mjs} +0 -0
- /package/dist/{providers--6L9uf7j.d.mts → providers-3Kkv63Ha.d.mts} +0 -0
- /package/dist/{resolve-project-CNpUbUHd.mjs → resolve-project-D4O1_fZz.mjs} +0 -0
- /package/dist/{runner-pg-CJ04wNk5.mjs → runner-pg-Cv9V7ydr.mjs} +0 -0
- /package/dist/{standard-schema-BDiIJgp5.d.mts → standard-schema-Dnsh2vnl.d.mts} +0 -0
- /package/dist/{subcommand-prompt-BLewBtNI.mjs → subcommand-prompt-OD-x_Tsm.mjs} +0 -0
- /package/dist/{types-C0AOcrPN.d.mts → types-Dm9kep2X.d.mts} +0 -0
- /package/dist/{yarn-pnp-CLFC1T3p.mjs → yarn-pnp-0SwYgQxx.mjs} +0 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { a as join, c as resolve, r as extname, s as relative } from "./pathe.M-eThtNZ-BrPhGF_K.mjs";
|
|
2
2
|
import { i as dim, n as cliTitle, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
3
3
|
import { n as readProjectPaths } from "./project-paths-CCMrHYQm.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { c as
|
|
4
|
+
import { t as cfAccessHeaders } from "./cf-access-DKDsgwOU.mjs";
|
|
5
|
+
import { c as getToken, n as PlatformClient, t as PlatformApiError, u as isStagingMode } from "./client-DIfOFf1W.mjs";
|
|
6
|
+
import { c as R, g as ge, v as ue, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
6
7
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
7
|
-
import { c as getDatabaseDialect, f as readConfig } from "./config-BVEC0lti.mjs";
|
|
8
|
-
import { r as detectFramework } from "./plugin-inference-
|
|
8
|
+
import { c as getDatabaseDialect, f as readConfig, p as resolveBindingNames } from "./config-BVEC0lti.mjs";
|
|
9
|
+
import { r as detectFramework } from "./plugin-inference-BUBhHt_1.mjs";
|
|
9
10
|
import { a as writeJournal, i as stripSqlExt, r as readJournal, t as collectMigrations } from "./collect-9rO3JFNM.mjs";
|
|
10
11
|
import { n as listDrizzleArtifacts, r as validateMigrations, t as assertJournalCoherence } from "./validate-CNWm-PsL.mjs";
|
|
11
|
-
import {
|
|
12
|
+
import { n as STAGING_PROXY_URL, t as DEFAULT_PROXY_URL } from "./proxy-M3pxItg2.mjs";
|
|
13
|
+
import { formatTimestamp } from "./gen-CZdNWIaA.mjs";
|
|
12
14
|
import { existsSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
13
15
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
14
16
|
import { execFileSync } from "node:child_process";
|
|
@@ -87,9 +89,9 @@ async function runDbCommand(root, args) {
|
|
|
87
89
|
else if (args.action === "status") await runStatus(root, dialect);
|
|
88
90
|
else if (args.action === "reset") await runReset(root, dialect);
|
|
89
91
|
else if (args.action === "seed") await runSeed(root, args.file, dialect);
|
|
90
|
-
else if (args.action === "execute") await runExecute(root, args.command, args.file, dialect);
|
|
92
|
+
else if (args.action === "execute") await runExecute(root, args.command, args.file, dialect, args.remote);
|
|
91
93
|
else if (args.action === "migrate") await runMigrate(root, dialect, args.remote);
|
|
92
|
-
else if (args.action === "studio") await runStudio(root, dialect);
|
|
94
|
+
else if (args.action === "studio") await runStudio(root, dialect, args.remote);
|
|
93
95
|
else if (args.action === "set-url") await runSetUrl(root);
|
|
94
96
|
else if (args.action === "rename-migrations") await runRenameMigrations(root, dialect);
|
|
95
97
|
else await runExport(root, args, dialect);
|
|
@@ -101,7 +103,7 @@ async function runPush(root, dialect) {
|
|
|
101
103
|
else {
|
|
102
104
|
const { mkdirSync } = await import("node:fs");
|
|
103
105
|
const { dirname } = await import("node:path");
|
|
104
|
-
const { getMiniflareDatabasePath } = await import("./runner-
|
|
106
|
+
const { getMiniflareDatabasePath } = await import("./runner-DLZ9E_cX.mjs");
|
|
105
107
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
106
108
|
mkdirSync(dirname(dbPath), { recursive: true });
|
|
107
109
|
configPath = writeDrizzleConfig(root, dbPath);
|
|
@@ -159,7 +161,7 @@ async function runStatus(root, dialect) {
|
|
|
159
161
|
localApplied = [];
|
|
160
162
|
}
|
|
161
163
|
else {
|
|
162
|
-
const { getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-
|
|
164
|
+
const { getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-DLZ9E_cX.mjs");
|
|
163
165
|
localApplied = await getAppliedMigrations(getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local"));
|
|
164
166
|
}
|
|
165
167
|
const localSet = new Set(localApplied.map((m) => m.name));
|
|
@@ -217,7 +219,7 @@ async function resetDatabase(root, dialect) {
|
|
|
217
219
|
});
|
|
218
220
|
return migrations.length;
|
|
219
221
|
}
|
|
220
|
-
const { getMiniflareDatabasePath, runMigrations } = await import("./runner-
|
|
222
|
+
const { getMiniflareDatabasePath, runMigrations } = await import("./runner-DLZ9E_cX.mjs");
|
|
221
223
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
222
224
|
rmSync(dbPath, { force: true });
|
|
223
225
|
rmSync(dbPath + "-wal", { force: true });
|
|
@@ -244,7 +246,7 @@ async function runSeed(root, file, dialect) {
|
|
|
244
246
|
ye("Done.");
|
|
245
247
|
return;
|
|
246
248
|
}
|
|
247
|
-
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-
|
|
249
|
+
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-DLZ9E_cX.mjs");
|
|
248
250
|
const db = await openSqliteDatabase(getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local"));
|
|
249
251
|
try {
|
|
250
252
|
db.exec(sql);
|
|
@@ -256,7 +258,147 @@ async function runSeed(root, file, dialect) {
|
|
|
256
258
|
R.info(dim("Restart your dev server if it's running."));
|
|
257
259
|
ye("Done.");
|
|
258
260
|
}
|
|
259
|
-
|
|
261
|
+
/**
|
|
262
|
+
* Returns true when the SQL is read-only (SELECT / EXPLAIN only).
|
|
263
|
+
* Used to skip the destructive-statement safety prompt for safe queries.
|
|
264
|
+
*
|
|
265
|
+
* This is a fail-closed heuristic, not a real SQL parser:
|
|
266
|
+
* - SQL comments (slash-star block and double-dash line) are stripped first,
|
|
267
|
+
* so commented variants like `EXPLAIN <block-comment> ANALYZE DELETE FROM
|
|
268
|
+
* users` or `EXPLAIN -- c\n ANALYZE ...` can't bypass the EXPLAIN ANALYZE
|
|
269
|
+
* check by hiding the `ANALYZE` keyword behind a comment that PostgreSQL
|
|
270
|
+
* treats as whitespace. This also handles leading comments, so
|
|
271
|
+
* `-- header\nSELECT 1` is now correctly classified as safe.
|
|
272
|
+
* - The comment-stripping regex is naive and doesn't understand string
|
|
273
|
+
* literals: a string literal containing a block-comment marker will have its
|
|
274
|
+
* contents stripped. That's harmless here (still classified as SELECT, still
|
|
275
|
+
* safe), but worth knowing if this helper is ever reused.
|
|
276
|
+
* - `WITH` (CTEs) is intentionally excluded: writable CTEs such as
|
|
277
|
+
* `WITH deleted AS (DELETE FROM users RETURNING *) SELECT * FROM deleted`
|
|
278
|
+
* are destructive but match a naive `WITH` prefix check. Users with
|
|
279
|
+
* read-only CTEs will see the safety prompt — minor friction, safe by default.
|
|
280
|
+
* - Multi-statement SQL (`SELECT 1; DELETE FROM users`) is rejected: any `;`
|
|
281
|
+
* followed by non-whitespace content after stripping a trailing semicolon is
|
|
282
|
+
* treated as unsafe.
|
|
283
|
+
* - `EXPLAIN ANALYZE` is explicitly excluded: in PostgreSQL, `EXPLAIN ANALYZE`
|
|
284
|
+
* actually executes the underlying statement (including DML) to collect runtime
|
|
285
|
+
* statistics. A naive `EXPLAIN` prefix check would treat it as safe when it is
|
|
286
|
+
* in fact destructive. Only plain `EXPLAIN` (without `ANALYZE`) is allowed.
|
|
287
|
+
* - `EXPLAIN (...)` parenthesized option lists (PostgreSQL) are scanned for
|
|
288
|
+
* `ANALYZE`. The bare-keyword form `EXPLAIN ANALYZE ...` and the option-list
|
|
289
|
+
* form `EXPLAIN (ANALYZE) ...` / `EXPLAIN (ANALYZE TRUE) ...` both execute
|
|
290
|
+
* the underlying statement, so either shape is rejected. Even
|
|
291
|
+
* `EXPLAIN (ANALYZE FALSE)` is rejected (over-strict, but safer than
|
|
292
|
+
* guessing the boolean value of an arbitrary option expression).
|
|
293
|
+
*/
|
|
294
|
+
function isSafeStatement(sql) {
|
|
295
|
+
const stripped = sql.replace(/\/\*[\s\S]*?\*\//g, " ").replace(/--[^\n]*/g, " ").replace(/;\s*$/, "");
|
|
296
|
+
if (stripped.includes(";")) return false;
|
|
297
|
+
if (/^\s*SELECT\b/i.test(stripped)) return true;
|
|
298
|
+
if (/^\s*EXPLAIN\b/i.test(stripped)) {
|
|
299
|
+
if (/^\s*EXPLAIN\s+ANALYZE\b/i.test(stripped)) return false;
|
|
300
|
+
const parenMatch = stripped.match(/^\s*EXPLAIN\s*\(([^)]*)\)/i);
|
|
301
|
+
if (parenMatch && /\bANALYZE\b/i.test(parenMatch[1])) return false;
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Fetch a project's remote PostgreSQL connection string from the platform.
|
|
308
|
+
* Exits with a friendly message when the URL has never been stored (404);
|
|
309
|
+
* other errors propagate so the caller's top-level handler can report them.
|
|
310
|
+
*/
|
|
311
|
+
async function fetchRemoteDatabaseUrl(client, projectId) {
|
|
312
|
+
try {
|
|
313
|
+
return (await client.getDatabaseUrl(projectId)).url;
|
|
314
|
+
} catch (err) {
|
|
315
|
+
if (err instanceof PlatformApiError && err.status === 404) {
|
|
316
|
+
R.error("This project's database URL isn't stored on the platform yet. Run `void db set-url` once to populate it, then retry.");
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
throw err;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Prompt the user to confirm a destructive remote query when running in a TTY.
|
|
324
|
+
* Returns true if execution should proceed, false if it was cancelled.
|
|
325
|
+
*/
|
|
326
|
+
async function confirmDestructiveRemote(sql) {
|
|
327
|
+
if (isSafeStatement(sql)) return true;
|
|
328
|
+
if (!process.stdin.isTTY) return true;
|
|
329
|
+
const ok = await ue({ message: "This will run against your deployed database. Continue?" });
|
|
330
|
+
if (q(ok) || !ok) return false;
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
async function runExecute(root, command, file, dialect, remote) {
|
|
334
|
+
if (remote) {
|
|
335
|
+
if (dialect !== "postgresql" && file) {
|
|
336
|
+
R.error("--file is not yet supported with --remote D1; pipe statements through stdin or run them one at a time.");
|
|
337
|
+
process.exit(1);
|
|
338
|
+
}
|
|
339
|
+
const sql = file ? readFileSync(join(root, file), "utf-8") : command;
|
|
340
|
+
const token = getToken(root);
|
|
341
|
+
if (!token) {
|
|
342
|
+
R.error("Not logged in. Run `void auth login` first.");
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
const projectConfig = readProjectConfig(root);
|
|
346
|
+
if (!projectConfig) {
|
|
347
|
+
R.error("No project linked. Run `void deploy` first or link a project.");
|
|
348
|
+
process.exit(1);
|
|
349
|
+
}
|
|
350
|
+
if (!await confirmDestructiveRemote(sql)) {
|
|
351
|
+
R.info("Cancelled.");
|
|
352
|
+
process.exit(0);
|
|
353
|
+
}
|
|
354
|
+
if (dialect === "postgresql") {
|
|
355
|
+
const dbUrl = await fetchRemoteDatabaseUrl(new PlatformClient(token, { root }), projectConfig.projectId);
|
|
356
|
+
const { Client } = await import("pg");
|
|
357
|
+
const pgClient = new Client({ connectionString: dbUrl });
|
|
358
|
+
await pgClient.connect();
|
|
359
|
+
try {
|
|
360
|
+
const result = await pgClient.query(sql);
|
|
361
|
+
if (result.rows && result.rows.length > 0) printTable(result.rows);
|
|
362
|
+
else R.success("Executed successfully.");
|
|
363
|
+
} finally {
|
|
364
|
+
await pgClient.end();
|
|
365
|
+
}
|
|
366
|
+
ye("Done.");
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
const platformClient = new PlatformClient(token, { root });
|
|
370
|
+
let binding = resolveBindingNames(readConfig(root).inference?.bindings)?.d1 ?? "DB";
|
|
371
|
+
try {
|
|
372
|
+
const d1Resource = (await platformClient.getResources(projectConfig.projectId)).find((r) => r.type === "d1");
|
|
373
|
+
if (d1Resource) binding = d1Resource.binding_name;
|
|
374
|
+
} catch {}
|
|
375
|
+
const proxyUrl = isStagingMode(root) ? STAGING_PROXY_URL : DEFAULT_PROXY_URL;
|
|
376
|
+
const res = await fetch(`${proxyUrl}/d1/query`, {
|
|
377
|
+
method: "POST",
|
|
378
|
+
headers: {
|
|
379
|
+
Authorization: `Bearer ${token}`,
|
|
380
|
+
"Content-Type": "application/json",
|
|
381
|
+
...cfAccessHeaders(process.env)
|
|
382
|
+
},
|
|
383
|
+
body: JSON.stringify({
|
|
384
|
+
projectId: projectConfig.projectId,
|
|
385
|
+
binding,
|
|
386
|
+
sql,
|
|
387
|
+
params: [],
|
|
388
|
+
method: "all"
|
|
389
|
+
})
|
|
390
|
+
});
|
|
391
|
+
if (!res.ok) {
|
|
392
|
+
const text = await res.text().catch(() => res.statusText);
|
|
393
|
+
R.error(`db: Proxy request failed with ${res.status}: '${text}'.`);
|
|
394
|
+
process.exit(1);
|
|
395
|
+
}
|
|
396
|
+
const rows = (await res.json()).results ?? [];
|
|
397
|
+
if (rows.length > 0) printTable(rows);
|
|
398
|
+
else R.success("Executed successfully.");
|
|
399
|
+
ye("Done.");
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
260
402
|
if (dialect === "postgresql") {
|
|
261
403
|
const sql = file ? readFileSync(join(root, file), "utf-8") : command;
|
|
262
404
|
await withPgClient(root, async (client) => {
|
|
@@ -267,7 +409,7 @@ async function runExecute(root, command, file, dialect) {
|
|
|
267
409
|
ye("Done.");
|
|
268
410
|
return;
|
|
269
411
|
}
|
|
270
|
-
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-
|
|
412
|
+
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-DLZ9E_cX.mjs");
|
|
271
413
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
272
414
|
if (!existsSync(dbPath)) {
|
|
273
415
|
R.error("No local database found. Run `void dev` first.");
|
|
@@ -370,7 +512,7 @@ async function runMigrate(root, dialect, remote) {
|
|
|
370
512
|
return;
|
|
371
513
|
}
|
|
372
514
|
if (dialect === "postgresql") {
|
|
373
|
-
const { applyPgMigrations } = await import("./runner-pg-
|
|
515
|
+
const { applyPgMigrations } = await import("./runner-pg-Cv9V7ydr.mjs");
|
|
374
516
|
const applied = await withPgClient(root, async (client) => {
|
|
375
517
|
let existingRows = [];
|
|
376
518
|
try {
|
|
@@ -394,7 +536,7 @@ async function runMigrate(root, dialect, remote) {
|
|
|
394
536
|
ye("Done.");
|
|
395
537
|
return;
|
|
396
538
|
}
|
|
397
|
-
const { getMiniflareDatabasePath, getAppliedMigrations, runMigrations } = await import("./runner-
|
|
539
|
+
const { getMiniflareDatabasePath, getAppliedMigrations, runMigrations } = await import("./runner-DLZ9E_cX.mjs");
|
|
398
540
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
399
541
|
try {
|
|
400
542
|
const existingRows = await getAppliedMigrations(dbPath);
|
|
@@ -412,7 +554,37 @@ async function runMigrate(root, dialect, remote) {
|
|
|
412
554
|
}
|
|
413
555
|
ye("Done.");
|
|
414
556
|
}
|
|
415
|
-
async function runStudio(root, dialect) {
|
|
557
|
+
async function runStudio(root, dialect, remote) {
|
|
558
|
+
if (remote) {
|
|
559
|
+
if (dialect !== "postgresql") {
|
|
560
|
+
R.error("Remote D1 studio is not yet supported. Use `void db execute --remote` for ad-hoc queries against your deployed D1 database.");
|
|
561
|
+
process.exit(1);
|
|
562
|
+
}
|
|
563
|
+
const token = getToken(root);
|
|
564
|
+
if (!token) {
|
|
565
|
+
R.error("Not logged in. Run `void auth login` first.");
|
|
566
|
+
process.exit(1);
|
|
567
|
+
}
|
|
568
|
+
const projectConfig = readProjectConfig(root);
|
|
569
|
+
if (!projectConfig) {
|
|
570
|
+
R.error("No project linked. Run `void deploy` first or link a project.");
|
|
571
|
+
process.exit(1);
|
|
572
|
+
}
|
|
573
|
+
const dbUrl = await fetchRemoteDatabaseUrl(new PlatformClient(token, { root }), projectConfig.projectId);
|
|
574
|
+
const { writeDrizzleConfig } = await import("./config--wXmVOoe.mjs").then((n) => n.t);
|
|
575
|
+
const configPath = writeDrizzleConfig(root, dbUrl, "postgresql");
|
|
576
|
+
R.info("Opening Drizzle Studio (remote)...");
|
|
577
|
+
try {
|
|
578
|
+
runDrizzleKit(root, [
|
|
579
|
+
"studio",
|
|
580
|
+
"--config",
|
|
581
|
+
configPath
|
|
582
|
+
]);
|
|
583
|
+
} catch {
|
|
584
|
+
process.exit(1);
|
|
585
|
+
}
|
|
586
|
+
return;
|
|
587
|
+
}
|
|
416
588
|
if (dialect === "postgresql") {
|
|
417
589
|
const { writeDrizzleConfig } = await import("./config--wXmVOoe.mjs").then((n) => n.t);
|
|
418
590
|
const configPath = writeDrizzleConfig(root, getPgUrl(root), "postgresql");
|
|
@@ -429,7 +601,7 @@ async function runStudio(root, dialect) {
|
|
|
429
601
|
return;
|
|
430
602
|
}
|
|
431
603
|
const { writeDrizzleConfig } = await import("./config--wXmVOoe.mjs").then((n) => n.t);
|
|
432
|
-
const { getMiniflareDatabasePath } = await import("./runner-
|
|
604
|
+
const { getMiniflareDatabasePath } = await import("./runner-DLZ9E_cX.mjs");
|
|
433
605
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
434
606
|
if (!existsSync(dbPath)) {
|
|
435
607
|
R.error("No local database found. Run `void dev` first.");
|
|
@@ -649,7 +821,7 @@ async function runRenameMigrations(root, dialect) {
|
|
|
649
821
|
process.exit(1);
|
|
650
822
|
}
|
|
651
823
|
else {
|
|
652
|
-
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-
|
|
824
|
+
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-DLZ9E_cX.mjs");
|
|
653
825
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
654
826
|
if (existsSync(dbPath)) try {
|
|
655
827
|
const db = await openSqliteDatabase(dbPath);
|
|
@@ -727,7 +899,7 @@ async function runExport(root, args, dialect) {
|
|
|
727
899
|
} else process.stdout.write(output);
|
|
728
900
|
return;
|
|
729
901
|
}
|
|
730
|
-
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-
|
|
902
|
+
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-DLZ9E_cX.mjs");
|
|
731
903
|
const dbPath = getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local");
|
|
732
904
|
if (!existsSync(dbPath)) {
|
|
733
905
|
R.error("No local database found. Run `void dev` first.");
|
|
@@ -855,7 +1027,7 @@ async function runSeedModule(root, seedPath, dialect) {
|
|
|
855
1027
|
return;
|
|
856
1028
|
}
|
|
857
1029
|
const { drizzle } = await import("drizzle-orm/better-sqlite3");
|
|
858
|
-
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-
|
|
1030
|
+
const { getMiniflareDatabasePath, openSqliteDatabase } = await import("./runner-DLZ9E_cX.mjs");
|
|
859
1031
|
const sqlite = await openSqliteDatabase(getMiniflareDatabasePath(getLocalD1PersistRoot(root), "local"));
|
|
860
1032
|
try {
|
|
861
1033
|
const options = getDrizzleSchemaOptions(schema);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as cliTitle, r as createSpinner } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import { c as getToken, n as PlatformClient } from "./client-
|
|
2
|
+
import { c as getToken, n as PlatformClient } from "./client-DIfOFf1W.mjs";
|
|
3
3
|
import { _ as me, c as R, g as ge, l as Re, u as Se, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
4
4
|
import { i as removeProjectConfig, r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
5
|
-
import { r as resolveProjectBySlug } from "./resolve-project-
|
|
5
|
+
import { r as resolveProjectBySlug } from "./resolve-project-D4O1_fZz.mjs";
|
|
6
6
|
//#region src/cli/delete.ts
|
|
7
7
|
async function runDeleteCommand(root, slug, options) {
|
|
8
8
|
console.log();
|
|
@@ -3,12 +3,12 @@ import { a as join, c as resolve, i as isAbsolute, n as dirname, r as extname, s
|
|
|
3
3
|
import { n as cliTitle, r as createSpinner, s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
4
4
|
import { i as resolveProjectPaths, n as readProjectPaths } from "./project-paths-CCMrHYQm.mjs";
|
|
5
5
|
import { t as findVoidAuthConfig } from "./config-hhMYPVRT.mjs";
|
|
6
|
-
import { a as isExpiredTokenError, c as getToken, i as isCliOutdatedError, l as getTokenSource, n as PlatformClient, o as parsePlatformErrorBody, t as PlatformApiError, u as isStagingMode } from "./client-
|
|
6
|
+
import { a as isExpiredTokenError, c as getToken, i as isCliOutdatedError, l as getTokenSource, n as PlatformClient, o as parsePlatformErrorBody, t as PlatformApiError, u as isStagingMode } from "./client-DIfOFf1W.mjs";
|
|
7
7
|
import { c as R, g as ge, u as Se, v as ue, x as q, y as ye } from "./dist-abzUneor.mjs";
|
|
8
8
|
import { a as writeProjectConfig, r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
9
9
|
import { c as getDatabaseDialect, f as readConfig, l as isNodeTarget, p as resolveBindingNames } from "./config-BVEC0lti.mjs";
|
|
10
|
-
import { a as scanQueuesSync, i as scanWebSocketRoutesSync, o as scanJobsSync, r as scanRoutes } from "./scan-
|
|
11
|
-
import { i as inferProjectBindings, l as validateSsrEntry, n as FRAMEWORK_SCAN_DIRS, r as detectFramework } from "./plugin-inference-
|
|
10
|
+
import { a as scanQueuesSync, i as scanWebSocketRoutesSync, o as scanJobsSync, r as scanRoutes } from "./scan-BNC_1OsY.mjs";
|
|
11
|
+
import { i as inferProjectBindings, l as validateSsrEntry, n as FRAMEWORK_SCAN_DIRS, r as detectFramework } from "./plugin-inference-BUBhHt_1.mjs";
|
|
12
12
|
import { i as voidWarn, r as voidLog } from "./log-CWWZV4V1.mjs";
|
|
13
13
|
import { t as discoverSchema } from "./discover-C8N1I4tK.mjs";
|
|
14
14
|
import { t as findEnvFile } from "./env-types-D6qI1ThV.mjs";
|
|
@@ -18,11 +18,12 @@ import { t as collectMigrations } from "./collect-9rO3JFNM.mjs";
|
|
|
18
18
|
import { n as buildMigrationPlanBundle } from "./plan-aD3wRDqF.mjs";
|
|
19
19
|
import { r as validateMigrations, t as assertJournalCoherence } from "./validate-CNWm-PsL.mjs";
|
|
20
20
|
import { t as scanPages } from "./scan-2YmJkYAf.mjs";
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import { t as
|
|
25
|
-
import {
|
|
21
|
+
import { n as STAGING_PROXY_URL, t as DEFAULT_PROXY_URL } from "./proxy-M3pxItg2.mjs";
|
|
22
|
+
import { i as promptProjectSetupAction, n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-DCUrFJxa.mjs";
|
|
23
|
+
import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-D4O1_fZz.mjs";
|
|
24
|
+
import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-Y0jshugF.mjs";
|
|
25
|
+
import { t as promptForLoginToken } from "./login-tt1OmNVg.mjs";
|
|
26
|
+
import { i as resolveProjectCommand, n as detectPreset, r as formatProjectCommand, t as FRAMEWORK_PRESETS } from "./preset-CIJG2O7a.mjs";
|
|
26
27
|
import { createRequire } from "node:module";
|
|
27
28
|
import { copyFileSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
|
|
28
29
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -568,10 +569,6 @@ function stripInternalEnvKeys(input) {
|
|
|
568
569
|
};
|
|
569
570
|
}
|
|
570
571
|
//#endregion
|
|
571
|
-
//#region src/shared/proxy.ts
|
|
572
|
-
const DEFAULT_PROXY_URL = "https://proxy.void.cloud";
|
|
573
|
-
const STAGING_PROXY_URL = "https://proxy.staging.void.cloud";
|
|
574
|
-
//#endregion
|
|
575
572
|
//#region src/prerender.ts
|
|
576
573
|
const PRERENDER_PATHS_ENDPOINT = "/__void/prerender-paths";
|
|
577
574
|
const STATIC_PAGE_DATA_DIR = "_void/pages";
|
|
@@ -1990,20 +1987,20 @@ async function generateWrapper(workerDir, workerMain, root, features) {
|
|
|
1990
1987
|
if (!existsSync(handlerPath)) handlerPath = join(import.meta.dirname, "..", "runtime", handlerFilename_);
|
|
1991
1988
|
if (!existsSync(handlerPath)) handlerPath = join(import.meta.dirname, "..", "..", "dist", "runtime", handlerFilename_);
|
|
1992
1989
|
if (!existsSync(handlerPath)) throw new Error(`Migration handler not found: ${handlerFilename_}. Run "pnpm -C packages/void build" first.`);
|
|
1993
|
-
|
|
1994
|
-
else copyFileSync(handlerPath, join(workerDir, "__void_migration_handler.mjs"));
|
|
1990
|
+
await bundleMigrationHandler(root, workerDir, handlerPath, features.migrationDialect ?? "sqlite");
|
|
1995
1991
|
}
|
|
1996
1992
|
const wrapperSource = generateWrapperSource(renamedName, handlerFilename, features, migrations, migrationPlanBundle);
|
|
1997
1993
|
writeFileSync(join(workerDir, workerMain), wrapperSource);
|
|
1998
1994
|
}
|
|
1999
|
-
async function
|
|
1995
|
+
async function bundleMigrationHandler(root, workerDir, handlerPath, dialect) {
|
|
2000
1996
|
const tmpDir = join(root, ".void", "migration-handler");
|
|
2001
1997
|
mkdirSync(tmpDir, { recursive: true });
|
|
2002
1998
|
const outDir = join(tmpDir, "out");
|
|
1999
|
+
const isPostgresql = dialect === "postgresql";
|
|
2003
2000
|
await build({
|
|
2004
2001
|
root: tmpDir,
|
|
2005
2002
|
logLevel: "silent",
|
|
2006
|
-
resolve: {
|
|
2003
|
+
resolve: isPostgresql ? {
|
|
2007
2004
|
alias: {
|
|
2008
2005
|
"pg-cloudflare": resolvePgCloudflareWorkerdEntry(handlerPath),
|
|
2009
2006
|
"pg-pool": resolvePgCjsDependency(handlerPath, "pg-pool")
|
|
@@ -2016,8 +2013,8 @@ async function bundlePgMigrationHandler(root, workerDir, handlerPath) {
|
|
|
2016
2013
|
"import",
|
|
2017
2014
|
"default"
|
|
2018
2015
|
]
|
|
2019
|
-
},
|
|
2020
|
-
ssr: {
|
|
2016
|
+
} : void 0,
|
|
2017
|
+
ssr: isPostgresql ? {
|
|
2021
2018
|
noExternal: ["pg", "pg-cloudflare"],
|
|
2022
2019
|
resolve: { conditions: [
|
|
2023
2020
|
"workerd",
|
|
@@ -2027,7 +2024,7 @@ async function bundlePgMigrationHandler(root, workerDir, handlerPath) {
|
|
|
2027
2024
|
"import",
|
|
2028
2025
|
"default"
|
|
2029
2026
|
] }
|
|
2030
|
-
},
|
|
2027
|
+
} : void 0,
|
|
2031
2028
|
build: {
|
|
2032
2029
|
outDir,
|
|
2033
2030
|
emptyOutDir: true,
|
|
@@ -2048,7 +2045,7 @@ async function bundlePgMigrationHandler(root, workerDir, handlerPath) {
|
|
|
2048
2045
|
}
|
|
2049
2046
|
}
|
|
2050
2047
|
});
|
|
2051
|
-
patchPgWorkerBundle(outDir);
|
|
2048
|
+
if (isPostgresql) patchPgWorkerBundle(outDir);
|
|
2052
2049
|
for (const file of readdirSync(outDir)) copyFileSync(join(outDir, file), join(workerDir, file));
|
|
2053
2050
|
}
|
|
2054
2051
|
function patchPgWorkerBundle(outDir) {
|
|
@@ -2500,7 +2497,10 @@ async function runDeployInner(root, options, cliLog) {
|
|
|
2500
2497
|
async function promptDeployProjectConfig(root, client, cliLog) {
|
|
2501
2498
|
const projects = await client.listProjects();
|
|
2502
2499
|
if (await promptProjectSetupAction("Set up a Void project for deploy:", { includeLink: projects.length > 0 }) === "create") return promptAndCreateProject(root, client);
|
|
2503
|
-
const result = await promptProjectSelection(projects, "Select a project to deploy to:", root, {
|
|
2500
|
+
const result = await promptProjectSelection(projects, "Select a project to deploy to:", root, {
|
|
2501
|
+
confirmExisting: true,
|
|
2502
|
+
includeCreate: false
|
|
2503
|
+
});
|
|
2504
2504
|
if (result.action === "create") throw new Error("Unexpected project selection result.");
|
|
2505
2505
|
const config = {
|
|
2506
2506
|
projectId: result.project.id,
|
|
@@ -3584,4 +3584,4 @@ function resolveWorkerDirName(distDir, fwPreset, buildCommand) {
|
|
|
3584
3584
|
throw new Error("deploy: Worker output not found. Expected dist/ssr/ or dist/rsc/.");
|
|
3585
3585
|
}
|
|
3586
3586
|
//#endregion
|
|
3587
|
-
export {
|
|
3587
|
+
export { hasApiRoutes as C, resolveSandboxConfig as S, resolveAssetRoutingPolicy as T, readWranglerCompat as _, prerenderPagesNode as a, SANDBOX_MIGRATION_TAG as b, stripInternalEnvKeys as c, ensureWranglerCompatibilityDate as d, ensureWranglerNodejsAlsFlag as f, readExistingLiveBindingConfig as g, normalizeWranglerCompatibilityFlags as h, prerenderPages as i, LIVE_MIGRATION_TAG as l, nextDurableObjectMigrationTag as m, resolveDistDir as n, filterLoadedEnv as o, hasDurableObjectSqliteMigration as p, resolveWorkerDirName as r, resolveRemoteMode as s, deploy_exports as t, ensureWranglerCompat as u, resolveLiveBindingConfig as v, hasDocumentRoutes as w, isSandboxEnabled as x, syncWranglerBindings as y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { s as import_picocolors } from "./output-DeiS4oEX.mjs";
|
|
2
|
-
import { c as getToken, n as PlatformClient } from "./client-
|
|
2
|
+
import { c as getToken, n as PlatformClient } from "./client-DIfOFf1W.mjs";
|
|
3
3
|
import { c as R, u as Se } from "./dist-abzUneor.mjs";
|
|
4
4
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
5
5
|
//#region src/cli/domain.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as join } from "./pathe.M-eThtNZ-BrPhGF_K.mjs";
|
|
2
2
|
import { n as cliTitle } from "./output-DeiS4oEX.mjs";
|
|
3
|
-
import { c as getToken, n as PlatformClient } from "./client-
|
|
3
|
+
import { c as getToken, n as PlatformClient } from "./client-DIfOFf1W.mjs";
|
|
4
4
|
import { c as R, g as ge, u as Se, y as ye } from "./dist-abzUneor.mjs";
|
|
5
5
|
import { r as readProjectConfig } from "./project-CH9pdo16.mjs";
|
|
6
6
|
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-D6qI1ThV.mjs";
|
|
@@ -7,7 +7,7 @@ import { n as ensureProjectTsconfig } from "./project-tsconfig-HAGjfY6w.mjs";
|
|
|
7
7
|
import { n as writeDrizzleConfig } from "./config--wXmVOoe.mjs";
|
|
8
8
|
import { r as readJournal, t as collectMigrations } from "./collect-9rO3JFNM.mjs";
|
|
9
9
|
import { n as listDrizzleArtifacts, t as assertJournalCoherence } from "./validate-CNWm-PsL.mjs";
|
|
10
|
-
import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-
|
|
10
|
+
import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-0SwYgQxx.mjs";
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
13
|
import { spawnSync } from "node:child_process";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as HeadDescriptor } from "./head-
|
|
2
|
-
import { r as AuthUser, t as AuthSession } from "./auth-
|
|
3
|
-
import { t as StandardSchemaV1 } from "./standard-schema-
|
|
1
|
+
import { n as HeadDescriptor } from "./head-BsSTGnIe.mjs";
|
|
2
|
+
import { r as AuthUser, t as AuthSession } from "./auth-CDeb2XAl.mjs";
|
|
3
|
+
import { t as StandardSchemaV1 } from "./standard-schema-Dnsh2vnl.mjs";
|
|
4
4
|
import * as _$_cloudflare_sandbox0 from "@cloudflare/sandbox";
|
|
5
5
|
import { Context, Env, MiddlewareHandler } from "hono";
|
|
6
6
|
import { RewriteDestination } from "void/routes";
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as HeadDescriptor } from "./head-
|
|
2
|
-
import { r as AuthUser } from "./auth-
|
|
3
|
-
import { C as HandlerInput, _ as defineScheduled, a as QueueBatch, b as InferProps, c as RenderAssetTags, d as VoidAssetRewriteError, f as defineHandler, g as defineRender, h as defineQueue, i as CloudEnv, l as TypedHandler, m as defineMiddleware, n as CloudContext, o as QueueMessage, p as defineHead, r as CloudContextVariables, s as QueueRetryOptions, u as TypedQueueHandler, v as Deferred, w as ValidatorSlots, x as defer, y as DeferredState } from "./handler-
|
|
1
|
+
import { n as HeadDescriptor } from "./head-BsSTGnIe.mjs";
|
|
2
|
+
import { r as AuthUser } from "./auth-CDeb2XAl.mjs";
|
|
3
|
+
import { C as HandlerInput, _ as defineScheduled, a as QueueBatch, b as InferProps, c as RenderAssetTags, d as VoidAssetRewriteError, f as defineHandler, g as defineRender, h as defineQueue, i as CloudEnv, l as TypedHandler, m as defineMiddleware, n as CloudContext, o as QueueMessage, p as defineHead, r as CloudContextVariables, s as QueueRetryOptions, u as TypedQueueHandler, v as Deferred, w as ValidatorSlots, x as defer, y as DeferredState } from "./handler-xflsMwWM.mjs";
|
|
4
4
|
import { QueueMap } from "./runtime/queues.mjs";
|
|
5
5
|
import { PluginConfig } from "@cloudflare/vite-plugin";
|
|
6
6
|
import { Plugin } from "vite";
|