void 0.10.11 → 0.10.12

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/cli/cli.mjs CHANGED
@@ -2078,7 +2078,7 @@ else if (command === "deploy") {
2078
2078
  log.error(err instanceof Error ? err.message : String(err));
2079
2079
  process.exit(1);
2080
2080
  }
2081
- import("../deploy-DT8wsPZd.mjs").then((n) => n.t).then(({ runDeploy }) => {
2081
+ import("../deploy-u7Rv9q_q.mjs").then((n) => n.t).then(({ runDeploy }) => {
2082
2082
  runDeploy(root, {
2083
2083
  projectSlug: deployArgs.projectSlug,
2084
2084
  dir: deployArgs.dir,
@@ -2096,10 +2096,10 @@ else if (command === "deploy") {
2096
2096
  else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-D_w-4w5B.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
2097
2097
  else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-Dt32J6RI.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
2098
2098
  else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-DiaNQbrl.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
2099
- else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-PZBsLSGb.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
2100
- else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-AAHU02L6.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
2101
- else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-oup1xBN0.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
2102
- else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-BdNaOVNa.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
2099
+ else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-DOiJMRt2.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
2100
+ else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-CZy5MorI.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
2101
+ else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-o_w-8yI8.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
2102
+ else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-DKcGUNsj.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
2103
2103
  else if (command === "build") runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-Bujrv5q-.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)));
2104
2104
  else if (command === "prepare") {
2105
2105
  const root = process.cwd();
@@ -2110,7 +2110,7 @@ else if (command === "prepare") {
2110
2110
  log.error(err instanceof Error ? err.message : String(err));
2111
2111
  process.exit(1);
2112
2112
  }
2113
- import("../prepare-DOBTY0o4.mjs").then(({ runPrepareCommand }) => {
2113
+ import("../prepare-BoKHgMNx.mjs").then(({ runPrepareCommand }) => {
2114
2114
  runPrepareCommand(root, prepareArgs).catch((err) => {
2115
2115
  log.error(err.message ?? err);
2116
2116
  process.exit(1);
@@ -2118,7 +2118,7 @@ else if (command === "prepare") {
2118
2118
  });
2119
2119
  } else if (command === "init") {
2120
2120
  const root = process.cwd();
2121
- import("../init-Dl2PKuQn.mjs").then(({ runInitCommand, parseInitArgs }) => {
2121
+ import("../init-3rgHKBVi.mjs").then(({ runInitCommand, parseInitArgs }) => {
2122
2122
  let initArgs;
2123
2123
  try {
2124
2124
  initArgs = parseInitArgs(args.slice(1));
@@ -2217,12 +2217,12 @@ else if (command === "-v" || command === "--version") {
2217
2217
  const root = process.cwd();
2218
2218
  switch (cmd) {
2219
2219
  case "init": {
2220
- const { runInitCommand, parseInitArgs } = await import("../init-Dl2PKuQn.mjs");
2220
+ const { runInitCommand, parseInitArgs } = await import("../init-3rgHKBVi.mjs");
2221
2221
  await runInitCommand(root, parseInitArgs([]));
2222
2222
  return;
2223
2223
  }
2224
2224
  case "deploy": {
2225
- const { runDeploy } = await import("../deploy-DT8wsPZd.mjs").then((n) => n.t);
2225
+ const { runDeploy } = await import("../deploy-u7Rv9q_q.mjs").then((n) => n.t);
2226
2226
  await runDeploy(root);
2227
2227
  return;
2228
2228
  }
@@ -2235,13 +2235,13 @@ else if (command === "-v" || command === "--version") {
2235
2235
  case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-D_w-4w5B.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
2236
2236
  case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-Dt32J6RI.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
2237
2237
  case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-DiaNQbrl.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
2238
- case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-BdNaOVNa.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
2238
+ case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-DKcGUNsj.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
2239
2239
  case "build": return runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (r, p) => import("../build-cmd-Bujrv5q-.mjs").then(({ runBuildCommand }) => runBuildCommand(r, p)));
2240
- case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-PZBsLSGb.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
2241
- case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-AAHU02L6.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
2242
- case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-oup1xBN0.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
2240
+ case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-DOiJMRt2.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
2241
+ case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-CZy5MorI.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
2242
+ case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-o_w-8yI8.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
2243
2243
  case "prepare": {
2244
- const { runPrepareCommand } = await import("../prepare-DOBTY0o4.mjs");
2244
+ const { runPrepareCommand } = await import("../prepare-BoKHgMNx.mjs");
2245
2245
  await runPrepareCommand(root, parsePrepareArgs([]));
2246
2246
  return;
2247
2247
  }
@@ -208,7 +208,7 @@ async function runFactsChild(root) {
208
208
  });
209
209
  return;
210
210
  }
211
- const { deriveSelfHostSchemaFacts, SelfHostSchemaError } = await import("../env-validation-BdDlGhbN.mjs").then((n) => n.c);
211
+ const { deriveSelfHostSchemaFacts, SelfHostSchemaError } = await import("../env-validation-Dea3v3ej.mjs").then((n) => n.c);
212
212
  try {
213
213
  emitResult({
214
214
  kind: "ok",
@@ -233,7 +233,7 @@ async function runFactsChild(root) {
233
233
  * fault → fail closed as a values-free schema error.
234
234
  */
235
235
  async function runValidateEmittedChild(root) {
236
- const { computeInvalidEmittedKeys, readEmittedWorkerVars, SelfHostSchemaError } = await import("../env-validation-BdDlGhbN.mjs").then((n) => n.c);
236
+ const { computeInvalidEmittedKeys, readEmittedWorkerVars, SelfHostSchemaError } = await import("../env-validation-Dea3v3ej.mjs").then((n) => n.c);
237
237
  const emitted = readEmittedWorkerVars(root);
238
238
  if (!emitted.ok) {
239
239
  emitResult({
@@ -5,6 +5,7 @@ import { i as isVoidAuthProvider, t as VOID_AUTH_PROVIDERS } from "./providers-C
5
5
  import { readFileSync } from "node:fs";
6
6
  //#region src/config.ts
7
7
  var config_exports = /* @__PURE__ */ __exportAll({
8
+ VALID_NOT_FOUND_HANDLING: () => VALID_NOT_FOUND_HANDLING,
8
9
  VALID_REDIRECT_STATUSES: () => VALID_REDIRECT_STATUSES,
9
10
  assertSingleSplat: () => assertSingleSplat,
10
11
  assertUniqueCaptureNames: () => assertUniqueCaptureNames,
@@ -35,6 +36,15 @@ const VALID_APP_TYPES = /* @__PURE__ */ new Set([
35
36
  ]);
36
37
  const VALID_OUTPUTS = /* @__PURE__ */ new Set(["server", "static"]);
37
38
  /**
39
+ * Accepted `routing.notFound` values. Source of truth for the framework, the
40
+ * `AssetConfig.not_found_handling` field, and the schema.json enum.
41
+ */
42
+ const VALID_NOT_FOUND_HANDLING = /* @__PURE__ */ new Set([
43
+ "single-page-application",
44
+ "404-page",
45
+ "none"
46
+ ]);
47
+ /**
38
48
  * Allowed 3xx redirect statuses. Source of truth for the framework, the
39
49
  * `_redirects` parser (`cli/headers.ts`), and the schema.json enum. 303 is
40
50
  * included for POST→GET after-submit patterns; 304/305/306 aren't
@@ -279,6 +289,9 @@ function readConfig(root) {
279
289
  if (obj.routing !== void 0) {
280
290
  if (typeof obj.routing !== "object" || obj.routing === null || Array.isArray(obj.routing)) throw new Error(`config: "routing" in ${CONFIG_FILE} must be an object.`);
281
291
  const routing = obj.routing;
292
+ if (routing.notFound !== void 0) {
293
+ if (typeof routing.notFound !== "string" || !VALID_NOT_FOUND_HANDLING.has(routing.notFound)) throw new Error(`config: "routing.notFound" in ${CONFIG_FILE} must be one of: ${[...VALID_NOT_FOUND_HANDLING].join(", ")}.`);
294
+ }
282
295
  if (routing.revalidate !== void 0) if (typeof routing.revalidate === "number") {
283
296
  if (!Number.isFinite(routing.revalidate) || routing.revalidate < 0) throw new Error(`config: "routing.revalidate" in ${CONFIG_FILE} must be a non-negative finite number.`);
284
297
  } else if (typeof routing.revalidate === "object" && routing.revalidate !== null && !Array.isArray(routing.revalidate)) {
@@ -3,11 +3,11 @@ import { D as outro, S as confirm, T as log, a as cliTitle, j as isCancel, s as
3
3
  import { n as readProjectPaths } from "./project-paths-BQd7OmIo.mjs";
4
4
  import { t as cfAccessHeaders } from "./cf-access-Bqw81xAf.mjs";
5
5
  import { b as readProjectConfig, f as getToken, m as isStagingMode, n as PlatformClient, t as PlatformApiError } from "./client-Gb71-XkG.mjs";
6
- import { c as getDatabaseDialect, f as readConfig, p as resolveBindingNames } from "./config-E03l1C_h.mjs";
6
+ import { c as getDatabaseDialect, f as readConfig, p as resolveBindingNames } from "./config-BkTvs43g.mjs";
7
7
  import { r as detectFramework } from "./plugin-inference-DMeavIJ6.mjs";
8
8
  import { c as collectMigrations, d as stripSqlExt, f as writeJournal, n as listDrizzleArtifacts, r as validateMigrations, t as assertJournalCoherence, u as readJournal } from "./validate-Cw_RLeTj.mjs";
9
9
  import { n as STAGING_PROXY_URL, t as DEFAULT_PROXY_URL } from "./proxy-D-3_D-Gl.mjs";
10
- import { formatTimestamp } from "./gen-oup1xBN0.mjs";
10
+ import { formatTimestamp } from "./gen-o_w-8yI8.mjs";
11
11
  import { existsSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
12
12
  import { fileURLToPath, pathToFileURL } from "node:url";
13
13
  import { execFileSync } from "node:child_process";
@@ -947,7 +947,7 @@ async function runExport(root, args, dialect) {
947
947
  }
948
948
  }
949
949
  async function runSetUrl(root) {
950
- const { readConfig: readVoidConfig, getDatabaseDialect: getDialect } = await import("./config-E03l1C_h.mjs").then((n) => n.n);
950
+ const { readConfig: readVoidConfig, getDatabaseDialect: getDialect } = await import("./config-BkTvs43g.mjs").then((n) => n.n);
951
951
  if (getDialect(readVoidConfig(root)) !== "postgresql") {
952
952
  log.error("db: This command is only for PostgreSQL projects. Set \"database\": \"pg\" in void.json.");
953
953
  process.exit(1);
@@ -5,22 +5,22 @@ import { i as resolveProjectPaths, n as readProjectPaths, t as assertNoRootSourc
5
5
  import { a as scanQueuesSync, i as scanWebSocketRoutesSync, o as scanJobsSync, r as scanRoutes, s as findVoidAuthConfig } from "./scan-DYXkrasO.mjs";
6
6
  import { t as cfAccessHeaders } from "./cf-access-Bqw81xAf.mjs";
7
7
  import { C as ensureCloudflaredToken, S as writeProjectConfig, a as isExpiredTokenError, b as readProjectConfig, f as getToken, i as isCliOutdatedError, m as isStagingMode, n as PlatformClient, o as parsePlatformErrorBody, p as getTokenSource, t as PlatformApiError, u as getApiUrl } from "./client-Gb71-XkG.mjs";
8
- import { c as getDatabaseDialect, f as readConfig, l as isNodeTarget, p as resolveBindingNames } from "./config-E03l1C_h.mjs";
8
+ import { c as getDatabaseDialect, f as readConfig, l as isNodeTarget, p as resolveBindingNames } from "./config-BkTvs43g.mjs";
9
9
  import { i as inferProjectBindings, n as FRAMEWORK_SCAN_DIRS, r as detectFramework } from "./plugin-inference-DMeavIJ6.mjs";
10
10
  import { o as validateSsrEntry } from "./entry-D7yy4xVH.mjs";
11
11
  import { i as voidWarn, r as voidLog } from "./log-ChfPKsVd.mjs";
12
- import { a as resolveProjectCommand, c as mergeAndExpand, i as hasBackendFiles, l as parseDotenvFile, n as detectPreset, o as resolveWranglerArgv, r as formatProjectCommand, t as FRAMEWORK_PRESETS, u as scanWranglerDotenvKeys } from "./preset-BGrvB4Bl.mjs";
12
+ import { a as resolveProjectCommand, c as mergeAndExpand, i as hasBackendFiles, l as parseDotenvFile, n as detectPreset, o as resolveWranglerArgv, r as formatProjectCommand, t as FRAMEWORK_PRESETS, u as scanWranglerDotenvKeys } from "./preset-BjyR3lzz.mjs";
13
13
  import { t as discoverSchema } from "./discover-CJHyvYfR.mjs";
14
14
  import { t as findEnvFile } from "./env-types-QBj-ndax.mjs";
15
- import { a as collectPlaintextVarWarningsFromVars, d as getDeployEnvDefaults, f as readEmittedWorkerVars, i as SelfHostSecretListError, l as fetchRemoteSecretNames, m as validateProdEnv, n as SelfHostFirstDeployError, o as deriveSelfHostEnvContextFromVars, p as selfHostSchemaFailureMessage, r as SelfHostSchemaError, s as dischargeSelfHostEnvContext, t as SelfHostEnvValidationError, u as formatEnvReport } from "./env-validation-BdDlGhbN.mjs";
15
+ import { a as collectPlaintextVarWarningsFromVars, d as getDeployEnvDefaults, f as readEmittedWorkerVars, i as SelfHostSecretListError, l as fetchRemoteSecretNames, m as validateProdEnv, n as SelfHostFirstDeployError, o as deriveSelfHostEnvContextFromVars, p as selfHostSchemaFailureMessage, r as SelfHostSchemaError, s as dischargeSelfHostEnvContext, t as SelfHostEnvValidationError, u as formatEnvReport } from "./env-validation-Dea3v3ej.mjs";
16
16
  import { n as writeDrizzleConfig } from "./config-CutEMNGJ.mjs";
17
17
  import { a as buildMigrationPlanBundle, c as collectMigrations, r as validateMigrations, t as assertJournalCoherence } from "./validate-Cw_RLeTj.mjs";
18
18
  import { t as scanPages } from "./scan-DEwlM_Xy.mjs";
19
19
  import { n as STAGING_PROXY_URL, t as DEFAULT_PROXY_URL } from "./proxy-D-3_D-Gl.mjs";
20
20
  import { i as promptProjectSetupAction, n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-DsYvl3TB.mjs";
21
21
  import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-BBMtLLV9.mjs";
22
- import { t as collectGitDeployMetadata } from "./git-metadata-CBKaL0v5.mjs";
23
- import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-BQknpzkn.mjs";
22
+ import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
23
+ import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-nsHIFixA.mjs";
24
24
  import { t as promptForLoginToken } from "./login-BT3H8PN3.mjs";
25
25
  import { createRequire } from "node:module";
26
26
  import { copyFileSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
@@ -56,24 +56,26 @@ const VOID_INTERNAL_WORKER_FIRST = ["/__void", "/__void/*"];
56
56
  function resolveAssetRoutingPolicy(inputs) {
57
57
  const workerFirst = workerOwnsHtmlRouting(inputs);
58
58
  const apiWorkerFirst = !workerFirst && (inputs.hasApiRoutes === true || inputs.authEnabled === true);
59
+ const assetConfig = workerFirst ? {
60
+ not_found_handling: "none",
61
+ run_worker_first: ["/**"]
62
+ } : apiWorkerFirst ? {
63
+ not_found_handling: "single-page-application",
64
+ run_worker_first: [
65
+ "/api",
66
+ "/api/*",
67
+ ...VOID_INTERNAL_WORKER_FIRST
68
+ ]
69
+ } : {
70
+ not_found_handling: "single-page-application",
71
+ run_worker_first: [...VOID_INTERNAL_WORKER_FIRST]
72
+ };
73
+ if (inputs.notFound !== void 0) assetConfig.not_found_handling = inputs.notFound;
59
74
  return {
60
- assetConfig: workerFirst ? {
61
- not_found_handling: "none",
62
- run_worker_first: ["/**"]
63
- } : apiWorkerFirst ? {
64
- not_found_handling: "single-page-application",
65
- run_worker_first: [
66
- "/api",
67
- "/api/*",
68
- ...VOID_INTERNAL_WORKER_FIRST
69
- ]
70
- } : {
71
- not_found_handling: "single-page-application",
72
- run_worker_first: [...VOID_INTERNAL_WORKER_FIRST]
73
- },
75
+ assetConfig,
74
76
  apiWorkerFirst,
75
77
  workerFirst,
76
- workerSpaFallback: workerFirst && !inputs.isSsr && !inputs.hasPages
78
+ workerSpaFallback: workerFirst && !inputs.isSsr && !inputs.hasPages && (inputs.notFound === void 0 || inputs.notFound === "single-page-application")
77
79
  };
78
80
  }
79
81
  const SANDBOX_MIGRATION_TAG = "void-sandbox-v1";
@@ -2469,11 +2471,24 @@ function stripDevOnlyRuleFields(rules) {
2469
2471
  *
2470
2472
  * When the user has no fallbacks configured, the platform-level SPA switch
2471
2473
  * is left intact (zero worker-side overhead for the common case).
2472
- */
2473
- function resolveSpaFallbackChain(appType, fallbackRules) {
2474
+ *
2475
+ * `notFound` is the explicit `routing.notFound` from void.json. It overrides
2476
+ * the value this function would otherwise infer from `appType`, mirroring
2477
+ * `resolveAssetRoutingPolicy` on the worker-with-assets path. It is resolved
2478
+ * *before* the SPA branch, not patched onto the result afterwards: an override
2479
+ * away from `single-page-application` must also skip the synthetic
2480
+ * `/* -> /index.html` rule below, otherwise the SPA shell would still be
2481
+ * served — just through a fallback rule instead of the platform switch — and
2482
+ * the override would be a no-op. This matters because `detectPreset`
2483
+ * classifies any Vite project without backend files as `spa`, so a plain Vite
2484
+ * MPA lands on `appType: 'spa'` and `routing.notFound: '404-page'` is its only
2485
+ * escape hatch.
2486
+ */
2487
+ function resolveSpaFallbackChain(appType, fallbackRules, notFound) {
2474
2488
  const userRules = fallbackRules && fallbackRules.length > 0 ? fallbackRules : void 0;
2475
- if (appType !== "spa") return {
2476
- assetConfig: { not_found_handling: appType === "static" ? "404-page" : "none" },
2489
+ const handling = notFound ?? (appType === "spa" ? "single-page-application" : appType === "static" ? "404-page" : "none");
2490
+ if (handling !== "single-page-application") return {
2491
+ assetConfig: { not_found_handling: handling },
2477
2492
  fallbackRules: userRules
2478
2493
  };
2479
2494
  if (!userRules) return {
@@ -2724,17 +2739,21 @@ function toLiveManifest(live) {
2724
2739
  };
2725
2740
  }
2726
2741
  /**
2727
- * If the user configured `routing.fallbacks` on a non-SPA app, the platform
2728
- * still applies the rules but no `/* -> /index.html` SPA shell is synthesised
2729
- * — unmatched paths fall through to the platform 404. Returns the warning
2742
+ * If the user configured `routing.fallbacks` on an app whose resolved
2743
+ * `not_found_handling` is not `single-page-application`, the platform still
2744
+ * applies the rules but no `/* -> /index.html` SPA shell is synthesised —
2745
+ * unmatched paths fall through to the platform 404. Returns the warning
2730
2746
  * message string when that mismatch is detected, or `null` otherwise. Pure
2731
2747
  * function; callers decide whether/how to surface the message (CLI progress,
2732
2748
  * `console.warn`, etc.).
2749
+ *
2750
+ * The message names `not_found_handling` rather than the app type because an
2751
+ * explicit `routing.notFound` can land here too — the app may well be a SPA.
2733
2752
  */
2734
2753
  function detectNonSpaFallbackWarning(assetConfig, fallbackRules) {
2735
2754
  if (assetConfig?.not_found_handling === "single-page-application") return null;
2736
2755
  if (!fallbackRules || fallbackRules.length === 0) return null;
2737
- return "routing.fallbacks is set but appType is not \"spa\"; fallbacks will be applied, but no \"/* -> /index.html\" SPA shell fallback is synthesised — unmatched paths fall through to the platform 404.";
2756
+ return "routing.fallbacks is set but not_found_handling is not \"single-page-application\"; fallbacks will be applied, but no \"/* -> /index.html\" SPA shell fallback is synthesised — unmatched paths fall through to the platform 404.";
2738
2757
  }
2739
2758
  /**
2740
2759
  * Build a Void-app deploy manifest from the inferred bindings + per-feature
@@ -2839,8 +2858,8 @@ function collectWorkerFiles(workerDir) {
2839
2858
  * Build a static-deploy manifest. Pure shape transformation — no I/O.
2840
2859
  */
2841
2860
  function buildStaticManifest(opts) {
2842
- const { appType, hashedAssetsPrefix, headerRules, redirectRules, fallbackRules } = opts;
2843
- const { assetConfig, fallbackRules: resolvedFallbackRules } = resolveSpaFallbackChain(appType, fallbackRules);
2861
+ const { appType, hashedAssetsPrefix, headerRules, redirectRules, fallbackRules, notFound } = opts;
2862
+ const { assetConfig, fallbackRules: resolvedFallbackRules } = resolveSpaFallbackChain(appType, fallbackRules, notFound);
2844
2863
  const manifest = {
2845
2864
  version: 3,
2846
2865
  assetManifestVersion: 2,
@@ -3335,6 +3354,7 @@ var deploy_exports = /* @__PURE__ */ __exportAll({
3335
3354
  ensurePreviouslyDeployedLiveBindingConfig: () => ensurePreviouslyDeployedLiveBindingConfig,
3336
3355
  generateDeployWrapperIfNeeded: () => generateDeployWrapperIfNeeded,
3337
3356
  hasDeploySchemaDrift: () => hasDeploySchemaDrift,
3357
+ hasPrerenderSources: () => hasPrerenderSources,
3338
3358
  hashWranglerUploader: () => hashWranglerUploader,
3339
3359
  loadDeployEnv: () => loadDeployEnv,
3340
3360
  parseRootWranglerConfig: () => parseRootWranglerConfig,
@@ -3344,6 +3364,7 @@ var deploy_exports = /* @__PURE__ */ __exportAll({
3344
3364
  resolveDeployWorkerMain: () => resolveDeployWorkerMain,
3345
3365
  resolveDeployWranglerCompat: () => resolveDeployWranglerCompat,
3346
3366
  resolveDistDir: () => resolveDistDir,
3367
+ resolveFullDeployBuildCommand: () => resolveFullDeployBuildCommand,
3347
3368
  resolveStaticBuildCommand: () => resolveStaticBuildCommand,
3348
3369
  resolveStaticDeployPreset: () => resolveStaticDeployPreset,
3349
3370
  resolveWorkerDirName: () => resolveWorkerDirName,
@@ -3356,6 +3377,7 @@ var deploy_exports = /* @__PURE__ */ __exportAll({
3356
3377
  streamDeployEvents: () => streamDeployEvents,
3357
3378
  validateAuthMigrationSchema: () => validateAuthMigrationSchema,
3358
3379
  verifyGeneratedDeployConfig: () => verifyGeneratedDeployConfig,
3380
+ warnIgnoredNotFoundForFramework: () => warnIgnoredNotFoundForFramework,
3359
3381
  warnRedundantForceOn3xx: () => warnRedundantForceOn3xx,
3360
3382
  warnUnpublishedRouting: () => warnUnpublishedRouting
3361
3383
  });
@@ -3368,7 +3390,7 @@ let loadedProvisionModule;
3368
3390
  * so a managed deploy never imports it — and thus never loads `proper-lockfile`.
3369
3391
  */
3370
3392
  async function loadProvisionModule() {
3371
- loadedProvisionModule ??= await import("./provision-BLrCEBbI.mjs");
3393
+ loadedProvisionModule ??= await import("./provision-rShh6MKY.mjs");
3372
3394
  return loadedProvisionModule;
3373
3395
  }
3374
3396
  /**
@@ -3512,14 +3534,44 @@ async function runDeploy(root, options) {
3512
3534
  * `cfAccessHeaders(process.env)` / the cloudflared pair-guard AFTER the build
3513
3535
  * step. Only the service-token pair is scrubbed; the cloudflared
3514
3536
  * `CF_ACCESS_TOKEN` JWT (dev path) is left untouched.
3515
- */
3516
- function buildEnv(extra) {
3537
+ *
3538
+ * `localBinRoot` is an explicit OPT-IN, not a default. Build commands are run
3539
+ * through a shell (`execSync`) and a user-configured `inference.build` (e.g.
3540
+ * `vitepress build && vite build`) names bare binaries that only exist in the
3541
+ * project's own `node_modules/.bin`; under the build container's
3542
+ * `npx --yes void deploy` that happens to work — npx prepends every ancestor
3543
+ * `.bin` itself — but a directly invoked `node_modules/.bin/void deploy` or a
3544
+ * globally installed `void` inherits no such PATH and the bare binary fails to
3545
+ * resolve. Passing it makes the project's bin dir shadow the system one for
3546
+ * that child, so it belongs ONLY on the three build execs. The other callers
3547
+ * (`getGitCommit`, the drizzle-kit spawn) exec a system binary or an absolute
3548
+ * path and must not hand a dependency-shipped `node_modules/.bin/git` a child
3549
+ * process holding `VOID_TOKEN`.
3550
+ */
3551
+ function buildEnv(extra, options) {
3517
3552
  const env = {
3518
3553
  ...process.env,
3519
3554
  ...extra
3520
3555
  };
3521
3556
  delete env.CF_ACCESS_CLIENT_ID;
3522
3557
  delete env.CF_ACCESS_CLIENT_SECRET;
3558
+ return options?.localBinRoot === void 0 ? env : prependLocalBinToPath(env, options.localBinRoot);
3559
+ }
3560
+ /**
3561
+ * Prepend `<root>/node_modules/.bin` to the child env's PATH, preserving
3562
+ * whatever was already there.
3563
+ *
3564
+ * PATH is looked up case-insensitively and written back under the SAME key the
3565
+ * env already used: Windows reports it as `Path`, and `{ ...process.env }`
3566
+ * drops the case-insensitive lookup that `process.env` itself provides, so
3567
+ * hardcoding `PATH` would leave the real variable untouched and add a dead one.
3568
+ */
3569
+ function prependLocalBinToPath(env, root) {
3570
+ const binDir = join(root, "node_modules", ".bin");
3571
+ const delimiter = process.platform === "win32" ? ";" : ":";
3572
+ const pathKey = Object.keys(env).find((key) => key.toLowerCase() === "path") ?? "PATH";
3573
+ const existing = env[pathKey];
3574
+ env[pathKey] = existing ? `${binDir}${delimiter}${existing}` : binDir;
3523
3575
  return env;
3524
3576
  }
3525
3577
  /**
@@ -5847,7 +5899,7 @@ async function runDeployInner(root, options, cliLog) {
5847
5899
  name: detected.name,
5848
5900
  class: detected.class
5849
5901
  });
5850
- const gitMetadata = collectGitDeployMetadata(root, options?.skipBuild ? null : getGitCommit(root));
5902
+ const gitMetadata = collectGitDeployMetadata(root, options?.skipBuild ? null : getGitCommit(root), process.env, buildEnv());
5851
5903
  const fwPreset = FRAMEWORK_PRESETS[detected.name];
5852
5904
  if (detected.class === "b" || detected.class === "c") {
5853
5905
  if (!fwPreset) {
@@ -5855,18 +5907,21 @@ async function runDeployInner(root, options, cliLog) {
5855
5907
  process.exit(1);
5856
5908
  }
5857
5909
  await runFrameworkDeploy(root, config, client, detected, fwPreset, voidConfig, options?.skipBuild, gitMetadata, cliLog);
5858
- } else await runFullDeploy(root, config, client, fwPreset, options?.skipBuild, gitMetadata, detected, cliLog);
5910
+ } else await runFullDeploy(root, config, client, voidConfig, fwPreset, options?.skipBuild, gitMetadata, detected, cliLog);
5859
5911
  return;
5860
5912
  }
5861
- if (!preset && !voidConfig.inference?.appType) preset = detectPreset(root, { spa: options?.spa });
5862
- const gitMetadata = collectGitDeployMetadata(root, options?.skipBuild ? null : getGitCommit(root));
5913
+ if (!preset && !voidConfig.inference?.appType) preset = detectPreset(root, {
5914
+ spa: options?.spa,
5915
+ strictBackend: true
5916
+ });
5917
+ const gitMetadata = collectGitDeployMetadata(root, options?.skipBuild ? null : getGitCommit(root), process.env, buildEnv());
5863
5918
  if (preset) {
5864
5919
  preset = {
5865
5920
  ...preset,
5866
5921
  buildCommand: resolveStaticBuildCommand(preset, voidConfig.inference?.build, Boolean(options?.dir))
5867
5922
  };
5868
5923
  await runStaticDeploy(root, config, client, preset, options?.skipBuild, gitMetadata, void 0, void 0, void 0, void 0, voidConfig.routing, cliLog);
5869
- } else await runFullDeploy(root, config, client, void 0, options?.skipBuild, gitMetadata, void 0, cliLog);
5924
+ } else await runFullDeploy(root, config, client, voidConfig, void 0, options?.skipBuild, gitMetadata, void 0, cliLog);
5870
5925
  return;
5871
5926
  } catch (error) {
5872
5927
  if (isExpiredTokenError(error)) {
@@ -5905,6 +5960,57 @@ function resolveStaticBuildCommand(preset, buildOverride, hasExplicitDir = false
5905
5960
  if (hasExplicitDir) return null;
5906
5961
  return buildOverride ?? preset.buildCommand;
5907
5962
  }
5963
+ /**
5964
+ * Resolve the build command for a FULL (Class A / Void app) deploy.
5965
+ *
5966
+ * `inference.build` wins when set, matching `runFrameworkDeploy` and the static
5967
+ * path's `resolveStaticBuildCommand`. Without it the full path was the only
5968
+ * deploy mode that ignored the config and hardcoded `vite build`, so an app that
5969
+ * needs more than one build step — an SSG that emits the site, then Void's build
5970
+ * packaging it via `publicDir` alongside the worker — had no way to express it
5971
+ * and died on the missing `index.html` entry.
5972
+ *
5973
+ * The two returned strings are deliberately different for the FALLBACK: `label`
5974
+ * goes to the user (`formatProjectCommand` rewrites `vite` → `vp` without
5975
+ * expanding an absolute bin path), `command` is what actually runs
5976
+ * (`resolveProjectCommand` expands to the local bin). A configured command is
5977
+ * the user's own text and is used verbatim for both, so what is printed is
5978
+ * exactly what is executed.
5979
+ */
5980
+ function resolveFullDeployBuildCommand(root, buildOverride) {
5981
+ if (buildOverride) return {
5982
+ label: buildOverride,
5983
+ command: buildOverride
5984
+ };
5985
+ return {
5986
+ label: formatProjectCommand(root, "vite build"),
5987
+ command: resolveProjectCommand(root, "vite build")
5988
+ };
5989
+ }
5990
+ /**
5991
+ * Whether the built worker's `__voidCollectPrerenderPaths` can return anything
5992
+ * at all. When it cannot, booting it is pure cost and the deploy skips it.
5993
+ *
5994
+ * These three are exactly — and only — the sources `compilePrerenderCollector`
5995
+ * (`router/compile.ts`) emits a `paths.push(...)` for:
5996
+ * 1. `scan.pages.pages` — static patterns + dynamic pages' `getPrerenderPaths()`
5997
+ * 2. the custom SSR entry's top-level `getPrerenderPaths()` (`ssr` argument)
5998
+ * 3. `options.explicitPrerenderPaths` — void.json `routing.prerender`
5999
+ * With none of them present the collector is a generated function whose body
6000
+ * returns `[...new Set([])]`, so skipping is result-identical.
6001
+ *
6002
+ * Skipping matters beyond speed. `collectPrerenderPaths` boots the worker in
6003
+ * Miniflare with bindings from `wranglerVars + loadEnv('production', root, '')`
6004
+ * only, and the generated fetch handler validates the `env.ts` schema at boot.
6005
+ * An app whose secrets live on the platform (never in a committed `.env`) gets
6006
+ * an HTTP 500 there and the deploy dies — for an app that had nothing to
6007
+ * prerender in the first place. The only workaround was moving the secret into
6008
+ * `.env.production`, which `loadDeployEnv` then publishes as a plaintext
6009
+ * manifest var. So this guard also removes a real incentive to leak secrets.
6010
+ */
6011
+ function hasPrerenderSources(inputs) {
6012
+ return inputs.hasPages || inputs.hasSsrEntry || (inputs.explicitPrerenderPaths?.length ?? 0) > 0;
6013
+ }
5908
6014
  function resolveStaticDeployPreset(root, voidConfig, options) {
5909
6015
  if (options?.dir) return detectPreset(root, {
5910
6016
  dir: options.dir,
@@ -6165,7 +6271,7 @@ function assembleVoidManifest(pageScan, isFrameworkMode, opts, revalidateConfig)
6165
6271
  pathRevalidate: isFrameworkMode || revalidateConfig == null || typeof revalidateConfig !== "object" ? void 0 : revalidateConfig
6166
6272
  });
6167
6273
  }
6168
- async function runStaticDeploy(root, config, client, preset, skipBuild, gitMetadata, hashedAssetsPrefix, headerRules, redirectRules, fallbackRules, routing, cliLog) {
6274
+ async function runStaticDeploy(root, config, client, preset, skipBuild, gitMetadata, hashedAssetsPrefix, headerRules, redirectRules, fallbackRules, routing, cliLog, notFound) {
6169
6275
  const typeLabel = preset.appType === "spa" ? "Static SPA" : "Static Site";
6170
6276
  log.info(`${typeLabel} deploy`);
6171
6277
  cliLog?.info("deploy_mode", {
@@ -6179,7 +6285,7 @@ async function runStaticDeploy(root, config, client, preset, skipBuild, gitMetad
6179
6285
  execSync(preset.buildCommand, {
6180
6286
  cwd: root,
6181
6287
  stdio: "inherit",
6182
- env: buildEnv()
6288
+ env: buildEnv(void 0, { localBinRoot: root })
6183
6289
  });
6184
6290
  cliLog?.info("build_end", { durationMs: Date.now() - buildStartedAt });
6185
6291
  } else if (skipBuild) cliLog?.info("build_skipped", { reason: "skipBuild" });
@@ -6223,7 +6329,8 @@ async function runStaticDeploy(root, config, client, preset, skipBuild, gitMetad
6223
6329
  hashedAssetsPrefix: hashedAssetsPrefix ?? "assets",
6224
6330
  headerRules,
6225
6331
  redirectRules,
6226
- fallbackRules
6332
+ fallbackRules,
6333
+ notFound: notFound ?? routing?.notFound
6227
6334
  });
6228
6335
  cliLog?.info("package_end", {
6229
6336
  mode: "static",
@@ -6257,6 +6364,27 @@ function warnRedundantForceOn3xx(count) {
6257
6364
  log.warn(`Found ${count} redundant "!" on 3xx entries in _redirects (these always force by nature; safe to remove).`);
6258
6365
  }
6259
6366
  /**
6367
+ * Class B/C framework deploys pin `not_found_handling: 'none'`, so
6368
+ * `routing.notFound` does nothing there — say so instead of dropping it
6369
+ * silently.
6370
+ *
6371
+ * These presets emit no `run_worker_first`, so Cloudflare's default applies and
6372
+ * the asset layer answers before the framework worker: real prerendered files
6373
+ * already win. `not_found_handling` only governs what the framework's own
6374
+ * `env.ASSETS.fetch()` delegation returns, which is framework-internal
6375
+ * plumbing. Honoring the override there would be a behavior change, not a fix —
6376
+ * `single-page-application` makes an unmatched delegation return
6377
+ * `dist/client/index.html` at **200** (Astro/SvelteKit hybrid builds commonly
6378
+ * prerender the root, so real 404s silently become the home page), and
6379
+ * `404-page` steals the 404 from the framework's own error route.
6380
+ *
6381
+ * Silenced when unset.
6382
+ */
6383
+ function warnIgnoredNotFoundForFramework(notFound, frameworkName) {
6384
+ if (notFound === void 0) return;
6385
+ log.warn(`"routing.notFound" in void.json is ignored for ${frameworkName} deploys (not_found_handling is pinned to "none" — the framework's own worker owns unmatched HTML).`);
6386
+ }
6387
+ /**
6260
6388
  * Class B/C framework deploy: build with framework CLI, package with preset output paths.
6261
6389
  */
6262
6390
  async function runFrameworkDeploy(root, config, client, detected, fwPreset, voidConfig, skipBuild, gitMetadata, cliLog) {
@@ -6274,7 +6402,7 @@ async function runFrameworkDeploy(root, config, client, detected, fwPreset, void
6274
6402
  execSync(voidConfig.inference?.build ?? resolveProjectCommand(root, fwPreset.buildCommand), {
6275
6403
  cwd: root,
6276
6404
  stdio: "inherit",
6277
- env: buildEnv()
6405
+ env: buildEnv(void 0, { localBinRoot: root })
6278
6406
  });
6279
6407
  cliLog?.info("build_end", { durationMs: Date.now() - buildStartedAt });
6280
6408
  } else cliLog?.info("build_skipped", { reason: "skipBuild" });
@@ -6286,6 +6414,7 @@ async function runFrameworkDeploy(root, config, client, detected, fwPreset, void
6286
6414
  routing: voidConfig.routing
6287
6415
  });
6288
6416
  warnRedundantForceOn3xx(redundantForceOn3xx);
6417
+ warnIgnoredNotFoundForFramework(voidConfig.routing?.notFound, detected.name);
6289
6418
  lintDuplicateSources(redirectRules, "redirects/rewrites (pre-asset)");
6290
6419
  lintDuplicateSources(fallbackRules, "fallbacks (post-asset)");
6291
6420
  lintDestinationSplats(redirectRules, "redirects/rewrites (pre-asset)");
@@ -6454,21 +6583,21 @@ async function runFrameworkDeploy(root, config, client, detected, fwPreset, void
6454
6583
  warnUnpublishedRouting(result);
6455
6584
  outro("Done!");
6456
6585
  }
6457
- async function runFullDeploy(root, config, client, fwPreset, skipBuild, gitMetadata, detected, cliLog) {
6586
+ async function runFullDeploy(root, config, client, voidConfig, fwPreset, skipBuild, gitMetadata, detected, cliLog) {
6458
6587
  cliLog?.info("deploy_mode", {
6459
6588
  mode: "full",
6460
6589
  framework: detected?.name
6461
6590
  });
6462
6591
  if (!skipBuild) {
6463
- const buildCmd = formatProjectCommand(root, "vite build");
6592
+ const { label: buildCmd, command: buildExec } = resolveFullDeployBuildCommand(root, voidConfig.inference?.build);
6464
6593
  log.step(`Building (${buildCmd})...`);
6465
6594
  cliLog?.info("build_start", { command: buildCmd });
6466
6595
  const buildStartedAt = Date.now();
6467
6596
  try {
6468
- execSync(resolveProjectCommand(root, "vite build"), {
6597
+ execSync(buildExec, {
6469
6598
  cwd: root,
6470
6599
  stdio: "inherit",
6471
- env: buildEnv({ VOID_DEPLOY_PROJECT_ID: config.projectId })
6600
+ env: buildEnv({ VOID_DEPLOY_PROJECT_ID: config.projectId }, { localBinRoot: root })
6472
6601
  });
6473
6602
  cliLog?.info("build_end", { durationMs: Date.now() - buildStartedAt });
6474
6603
  } catch (err) {
@@ -6489,7 +6618,7 @@ async function runFullDeploy(root, config, client, fwPreset, skipBuild, gitMetad
6489
6618
  }
6490
6619
  }
6491
6620
  const isFrameworkMode = detected != null;
6492
- const deployConfig = readConfig(root);
6621
+ const deployConfig = voidConfig;
6493
6622
  const paths = resolveProjectPaths(root, deployConfig);
6494
6623
  const dialect = getDatabaseDialect(deployConfig);
6495
6624
  const deployScanDirs = deployConfig.inference?.scanDirs ?? (isFrameworkMode ? FRAMEWORK_SCAN_DIRS : void 0);
@@ -6600,7 +6729,8 @@ async function runFullDeploy(root, config, client, fwPreset, skipBuild, gitMetad
6600
6729
  const hasDocumentRoutes$1 = hasDocumentRoutes(routeScan.routes);
6601
6730
  const hasMiddleware = routeScan.middleware.length > 0;
6602
6731
  const hasWebSockets = webSockets.length > 0;
6603
- const isSsr = isFrameworkMode ? true : Boolean(validateSsrEntry(root, paths)) || hasPages && deployConfig.output !== "static";
6732
+ const ssrEntry = isFrameworkMode ? null : validateSsrEntry(root, paths);
6733
+ const isSsr = isFrameworkMode ? true : Boolean(ssrEntry) || hasPages && deployConfig.output !== "static";
6604
6734
  const pageScan = existsSync(paths.pagesDir) ? routeScan.pages.pages.length > 0 ? routeScan.pages : await scanPages(root, {
6605
6735
  output: deployConfig.output,
6606
6736
  paths
@@ -6614,10 +6744,15 @@ async function runFullDeploy(root, config, client, fwPreset, skipBuild, gitMetad
6614
6744
  buildCommand: null,
6615
6745
  outputDir: clientDir,
6616
6746
  appType: "static"
6617
- }, true, gitMetadata, assetsPrefix, headerRules, redirectRules, fallbackRules, void 0, cliLog);
6747
+ }, true, gitMetadata, assetsPrefix, headerRules, redirectRules, fallbackRules, void 0, cliLog, deployConfig.routing?.notFound);
6618
6748
  }
6619
6749
  }
6620
- const uniquePrerenderPaths = deployConfig.output === "static" || isFrameworkMode ? [] : isNodeTarget(deployConfig.target) ? await collectPrerenderPathsNode({
6750
+ const prerenderSourcesPresent = hasPrerenderSources({
6751
+ hasPages,
6752
+ hasSsrEntry: ssrEntry !== null,
6753
+ explicitPrerenderPaths: deployConfig.routing?.prerender
6754
+ });
6755
+ const uniquePrerenderPaths = deployConfig.output === "static" || isFrameworkMode || !prerenderSourcesPresent ? [] : isNodeTarget(deployConfig.target) ? await collectPrerenderPathsNode({
6621
6756
  root,
6622
6757
  ssrDir: join(distDir, "ssr"),
6623
6758
  clientDir
@@ -6648,7 +6783,8 @@ async function runFullDeploy(root, config, client, fwPreset, skipBuild, gitMetad
6648
6783
  hasMiddleware,
6649
6784
  hasWebSockets: hasDocumentRoutes(webSockets),
6650
6785
  authEnabled,
6651
- liveEnabled: liveConfig !== void 0
6786
+ liveEnabled: liveConfig !== void 0,
6787
+ notFound: deployConfig.routing?.notFound
6652
6788
  });
6653
6789
  s.start("Checking for changes...");
6654
6790
  cliLog?.info("preflight_start", { dir: clientDir });
@@ -2,7 +2,7 @@ import { a as join } from "./dist-DaKKDf8D.mjs";
2
2
  import { D as outro, E as note, T as log, a as cliTitle, w as intro } from "./agents-CtgBYqld.mjs";
3
3
  import { b as readProjectConfig, f as getToken, n as PlatformClient } from "./client-Gb71-XkG.mjs";
4
4
  import { r as generateEnvTypes, t as findEnvFile } from "./env-types-QBj-ndax.mjs";
5
- import { h as loadUserEnvFile, l as fetchRemoteSecretNames, m as validateProdEnv, u as formatEnvReport } from "./env-validation-BdDlGhbN.mjs";
5
+ import { h as loadUserEnvFile, l as fetchRemoteSecretNames, m as validateProdEnv, u as formatEnvReport } from "./env-validation-Dea3v3ej.mjs";
6
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
7
  //#region src/cli/env-example.ts
8
8
  /**
@@ -1,7 +1,7 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-DJK8HYOj.mjs";
2
2
  import { a as join, c as resolve, n as dirname } from "./dist-DaKKDf8D.mjs";
3
3
  import { i as voidWarn } from "./log-ChfPKsVd.mjs";
4
- import { c as mergeAndExpand, l as parseDotenvFile, o as resolveWranglerArgv } from "./preset-BGrvB4Bl.mjs";
4
+ import { c as mergeAndExpand, l as parseDotenvFile, o as resolveWranglerArgv } from "./preset-BjyR3lzz.mjs";
5
5
  import { t as findEnvFile } from "./env-types-QBj-ndax.mjs";
6
6
  import { getSecretOverride } from "./runtime/env-helpers.mjs";
7
7
  import { t as isLikelySecretKey } from "./env-mask-Dd47NbR6.mjs";
@@ -2,7 +2,7 @@ import { a as join, n as dirname, s as relative } from "./dist-DaKKDf8D.mjs";
2
2
  import { D as outro, T as log, a as cliTitle, j as isCancel, k as select, w as intro, x as cancel } from "./agents-CtgBYqld.mjs";
3
3
  import { n as readProjectPaths } from "./project-paths-BQd7OmIo.mjs";
4
4
  import { n as ensureProjectTsconfig } from "./project-tsconfig-B-QtXjLQ.mjs";
5
- import { c as getDatabaseDialect, f as readConfig } from "./config-E03l1C_h.mjs";
5
+ import { c as getDatabaseDialect, f as readConfig } from "./config-BkTvs43g.mjs";
6
6
  import { n as writeDrizzleConfig } from "./config-CutEMNGJ.mjs";
7
7
  import { c as collectMigrations, n as listDrizzleArtifacts, t as assertJournalCoherence, u as readJournal } from "./validate-Cw_RLeTj.mjs";
8
8
  import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DJn3SAHF.mjs";