void 0.23.0 → 0.24.0
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/AGENTS_TEMPLATE.md +1 -1
- package/dist/{account-cmd-C84Ee8cO.mjs → account-cmd-vJhh5lrb.mjs} +5 -5
- package/dist/{auth-CSkdO2Bb.mjs → auth-CQkSDS50.mjs} +22 -49
- package/dist/auth-DX3JURcX.mjs +2 -0
- package/dist/{auth-link-CioEg6uY.mjs → auth-link-D75t9wO2.mjs} +5 -5
- package/dist/{auth-router-BsR981d4.mjs → auth-router-ClfhL1J7.mjs} +7 -7
- package/dist/{build-cmd-LzvNJORH.mjs → build-cmd-zMi1iFnS.mjs} +6 -6
- package/dist/{cache-C4MvnrMH.mjs → cache-ZtQmyxVV.mjs} +5 -5
- package/dist/{cancel-deploy-abUxpP2n.mjs → cancel-deploy-Box0kkEV.mjs} +5 -5
- package/dist/{cf-access-P0iZnu0q.mjs → cf-access-BGe5sWXF.mjs} +4 -48
- package/dist/{cf-access-DRsQRe6k.mjs → cf-access-TWNzXltp.mjs} +3 -11
- package/dist/cli/cli.mjs +47 -44
- package/dist/cli/cloudflare-operation-process.mjs +14 -5
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/client-B9UBI03V.mjs +2 -0
- package/dist/{client-RV8NVeB8.mjs → client-DKAsFA4X.mjs} +33 -15
- package/dist/{cloudflare-cmd-BcrVyTmJ.mjs → cloudflare-cmd-CmY8dGkd.mjs} +1 -1
- package/dist/{cloudflare-connect-B8uPZ4nx.mjs → cloudflare-connect-IiR3ZieC.mjs} +1 -1
- package/dist/{cloudflare-operations-AiWashgg.mjs → cloudflare-operations-BCdXSsmo.mjs} +1 -1
- package/dist/{cloudflare-operations-fxHb-byx.mjs → cloudflare-operations-DzH-A966.mjs} +1 -1
- package/dist/{connect-Bd4kJd9U.mjs → connect-B-usTnlF.mjs} +9 -9
- package/dist/{create-project-bMf6ffLZ.mjs → create-project-CYOOAYcn.mjs} +12 -12
- package/dist/{create-project-Boczwj5r.mjs → create-project-FWbf5Olo.mjs} +1 -1
- package/dist/{db-8uG64XLl.mjs → db-Ck2eZ2iB.mjs} +15 -15
- package/dist/{delete-NvbiyeJf.mjs → delete-sK56qtzZ.mjs} +5 -5
- package/dist/{deploy-DzAIwqNU.mjs → deploy-gCVaiJbS.mjs} +86 -44
- package/dist/{deploy-bjXdFCtn.mjs → deploy-irP5q0-x.mjs} +1 -1
- package/dist/{domain-y5Tvydvo.mjs → domain-DFfQE8jg.mjs} +6 -6
- package/dist/{email-B3umsW75.mjs → email-CdnhUHvJ.mjs} +7 -7
- package/dist/{env-BS6qYHDb.mjs → env-DmGdHi5i.mjs} +8 -8
- package/dist/{env-types-C2_bIk_b.mjs → env-types-D5kds_OZ.mjs} +1 -1
- package/dist/{env-validation-BPn7vk-V.mjs → env-validation-C_8tPdhs.mjs} +2 -2
- package/dist/{env-validation-DbTg7-ar.mjs → env-validation-zZOCcQVZ.mjs} +1 -1
- package/dist/{gen-B580--vC.mjs → gen-CshAkukR.mjs} +2 -2
- package/dist/gen-DvQTWzDU.mjs +2 -0
- package/dist/{github-cmd-v45BdfKX.mjs → github-cmd-DftuEvIt.mjs} +13 -13
- package/dist/{headers-DWi2IXWx.mjs → headers-2rKda9Y6.mjs} +1 -1
- package/dist/{help-daGKjXGk.mjs → help-Dotbf6iz.mjs} +8 -4
- package/dist/help-mabuIV98.mjs +2 -0
- package/dist/{inbound-aVHEUhKo.mjs → inbound-fRkqcXaC.mjs} +1 -1
- package/dist/index.mjs +16 -20
- package/dist/{init-Bvy7zrBo.mjs → init-BTQEZZGJ.mjs} +25 -22
- package/dist/{link-CDqqCjFl.mjs → link-B46sYH0K.mjs} +6 -6
- package/dist/{list-CZj0dzKY.mjs → list-BnPrIsU_.mjs} +6 -6
- package/dist/log-vqY3pqwI.mjs +29 -0
- package/dist/{login-UZKFM_u7.mjs → login-BuiMyUrx.mjs} +8 -8
- package/dist/login-DIy9Sb-U.mjs +2 -0
- package/dist/{logs-CUZ6t9t3.mjs → logs-CZG9d-ic.mjs} +10 -11
- package/dist/migrate-BCiJ8w0f.mjs +2 -0
- package/dist/{migrate-DHul7PRV.mjs → migrate-q4_njtaW.mjs} +2 -2
- package/dist/{operator-args-CLgKGlwU.mjs → operator-args-B3BTmSoi.mjs} +12 -5
- package/dist/{operator-auth-8KnOVXVd.mjs → operator-auth-7erYc6Lt.mjs} +2 -2
- package/dist/{operator-client-DUwumHpQ.mjs → operator-client-CpHjTd0t.mjs} +3 -3
- package/dist/{operator-cmd-DBA6dl0m.mjs → operator-cmd-DGqPJUD3.mjs} +6 -6
- package/dist/{output-Dm_A4Tbv.mjs → output-CbM85T4k.mjs} +18 -10
- package/dist/pages/index.mjs +1 -1
- package/dist/{platform-args-BJdRtlLq.mjs → platform-args-3k8X9-H_.mjs} +11 -3
- package/dist/platform-args-DdnM6WIf.mjs +2 -0
- package/dist/{platform-auth-config-B56E9YP1.mjs → platform-auth-config-DDrxUy4m.mjs} +6 -6
- package/dist/{platform-auth-protection-BDWO_aER.mjs → platform-auth-protection-BLadnnct.mjs} +8 -8
- package/dist/{platform-auth-recovery-1gg4CSRe.mjs → platform-auth-recovery-CmCzX2Fl.mjs} +6 -6
- package/dist/{platform-cmd-DMcQStSc.mjs → platform-cmd-DMDEc9uS.mjs} +10 -10
- package/dist/{platform-cmd-Bt-1w6pY.mjs → platform-cmd-pMTRhvYs.mjs} +1 -1
- package/dist/{platform-domain-BNkcz0OB.mjs → platform-domain-Di6EYrQl.mjs} +5 -5
- package/dist/{platform-lifecycle-9OyBALhH.mjs → platform-lifecycle-BBoNzojY.mjs} +1264 -407
- package/dist/{platform-lifecycle-BE6C_jxh.mjs → platform-lifecycle-BFdSi9Qt.mjs} +1 -1
- package/dist/{platform-management-CjwLVQwN.mjs → platform-management-CWOQOWXm.mjs} +5 -5
- package/dist/{platform-management-CnyTdcWX.mjs → platform-management-DG47jys8.mjs} +1 -1
- package/dist/{platform-plans-config-BNGKGr4P.mjs → platform-plans-config-Vl9BP3H4.mjs} +3 -3
- package/dist/{platform-recovery-D6KSpuFm.mjs → platform-recovery-BJnQJEtQ.mjs} +4 -4
- package/dist/{platform-registry-QBa4DK32.mjs → platform-registry-DkPPXfp_.mjs} +2 -2
- package/dist/{prepare-B5Mkic5u.mjs → prepare-CBLT3CHH.mjs} +3 -3
- package/dist/prepare-CnjcTV2s.mjs +2 -0
- package/dist/{prepare-DOsL0CC9.mjs → prepare-DnaKBi--.mjs} +1 -1
- package/dist/{project-C0Fqu05O.mjs → project-DKG5Ra8p.mjs} +15 -82
- package/dist/project-DsblYifa.mjs +2 -0
- package/dist/{project-cmd-CNzrqvBv.mjs → project-cmd-DxnXstAq.mjs} +19 -19
- package/dist/{project-team-DQOWPfQT.mjs → project-team-BmHcaALJ.mjs} +5 -5
- package/dist/{project-token-CTDYU0Cc.mjs → project-token-GionZlBI.mjs} +5 -5
- package/dist/{project-zero-trust-BNAkW-_0.mjs → project-zero-trust-JLCjVQA7.mjs} +5 -5
- package/dist/prompts-2TGE6oXx.mjs +2 -0
- package/dist/prompts-BNUoTiaf.mjs +2044 -0
- package/dist/{provision-C4ORE7G7.mjs → provision-CVku1JFU.mjs} +1 -1
- package/dist/{provision-CJFgTZY8.mjs → provision-CaoxO_U7.mjs} +1 -1
- package/dist/{requests-MhxYnau8.mjs → requests-BOjIVAeF.mjs} +5 -5
- package/dist/{rollback-CJ6iSDoU.mjs → rollback-CwR3pLj3.mjs} +6 -6
- package/dist/runtime/ai.mjs +3 -5
- package/dist/runtime/email/testing.mjs +1 -1
- package/dist/runtime/email.mjs +1 -1
- package/dist/runtime/remote/index.mjs +2 -2
- package/dist/{secret-Dli5fP0B.mjs → secret-ByWJWBUG.mjs} +7 -7
- package/dist/{skills-D1II1Juz.mjs → skills-C1PlclPt.mjs} +1 -1
- package/dist/{subcommand-prompt-CY1C4fvl.mjs → subcommand-prompt-klFCfcor.mjs} +40 -32
- package/package.json +8 -9
- package/skills/void/SKILL.md +6 -1
- package/skills/void/docs/guide/deployment.md +22 -0
- package/skills/void/docs/guide/edge/headers.md +1 -1
- package/skills/void/docs/guide/email/domains.md +5 -1
- package/skills/void/docs/guide/email/sending.md +1 -1
- package/skills/void/docs/guide/platform/administration/zero-trust.md +27 -9
- package/skills/void/docs/guide/platform/installation/ci.md +1 -1
- package/skills/void/docs/guide/platform/installation/credentials.md +10 -3
- package/skills/void/docs/guide/platform/installation/domains.md +8 -3
- package/skills/void/docs/guide/platform/installation/first-deployment.md +2 -2
- package/skills/void/docs/guide/platform/installation/maintenance.md +12 -0
- package/skills/void/docs/guide/platform/installation/prerequisites.md +8 -7
- package/skills/void/docs/guide/platform/installation/setup.md +80 -10
- package/skills/void/docs/guide/remote-dev.md +1 -1
- package/skills/void/docs/reference/cli/auth.md +4 -3
- package/skills/void/docs/reference/cli/database.md +1 -1
- package/skills/void/docs/reference/cli/deploy.md +20 -0
- package/skills/void/docs/reference/cli/platform-installation.md +42 -27
- package/skills/void/docs/reference/cli/platform-zero-trust.md +14 -0
- package/skills/void/docs/reference/config.md +1 -1
- package/dist/auth-CCjt0hcq.mjs +0 -2
- package/dist/client-Cu7jWiF1.mjs +0 -2
- package/dist/dist-BuDuKZJv.mjs +0 -2
- package/dist/dist-CTBk70IR.mjs +0 -1310
- package/dist/gen-BVaUUumi.mjs +0 -2
- package/dist/help-DofyZuY7.mjs +0 -2
- package/dist/log-ChfPKsVd.mjs +0 -26
- package/dist/login-DYt_An22.mjs +0 -2
- package/dist/migrate-8_2u55MD.mjs +0 -2
- package/dist/platform-args-D3RXyR6h.mjs +0 -2
- package/dist/prepare-cgvDMtSb.mjs +0 -2
- package/dist/project-BuUwfj6f.mjs +0 -2
|
@@ -10,22 +10,22 @@ import { t as collectMigrations } from "./collect-DiTn9yr6.mjs";
|
|
|
10
10
|
import { o as validateSsrEntry } from "./entry-CF5wvH4w.mjs";
|
|
11
11
|
import { r as hasEmailHandlers } from "./email--tEtMoj_.mjs";
|
|
12
12
|
import { a as hasSandboxSqliteMigration, c as resolveSandboxConfig, i as assertSandboxNamespaceConfig, l as sandboxContainerConfig, r as SANDBOX_MIGRATION_TAG, s as requiresSandboxPlatformImage } from "./config-C_XRIPx2.mjs";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { r as
|
|
16
|
-
import {
|
|
13
|
+
import { n as scopedAccessCredentials, r as trustedCloudflareWorkerAccessHeaders, t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
|
|
14
|
+
import { r as ensurePlatformProxyAccess, t as ensureCloudflaredToken } from "./cf-access-BGe5sWXF.mjs";
|
|
15
|
+
import { l as writeProjectConfig, n as readDeploymentPlatform, o as shouldLinkDeployProject, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-DKG5Ra8p.mjs";
|
|
16
|
+
import { a as getApiUrl, c as getToken, l as getTokenSource, o as getProxyUrl } from "./auth-CQkSDS50.mjs";
|
|
17
17
|
import { i as persistCloudflareConfig, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-Bktvwtpf.mjs";
|
|
18
18
|
import { A as writeProvisionedWranglerConfig, C as readWranglerPublishedTrafficSnapshot, D as syncWranglerDurableObjects, E as syncWranglerBindings, O as syncWranglerWebSockets, S as readWranglerManagedQueueCleanupCandidates, T as resolveLiveBindingConfig, _ as readExistingLiveBindingConfig, a as LIVE_MIGRATION_TAG, c as bindingEntriesForField, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, j as writeWranglerPublishedTrafficSnapshot, l as bindingNamesForField, m as hasDurableObjectSqliteMigration, o as acknowledgeWranglerManagedQueueRemovals, p as findBindingNameOwner, r as FRIENDLY_BINDING_NAMES, u as ensureWranglerCompat } from "./wrangler-7K-bW_DL.mjs";
|
|
19
|
-
import { i as voidWarn, r as voidLog } from "./log-
|
|
20
|
-
import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-
|
|
19
|
+
import { i as voidWarn, r as voidLog } from "./log-vqY3pqwI.mjs";
|
|
20
|
+
import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-2rKda9Y6.mjs";
|
|
21
21
|
import { n as buildMigrationPlanBundle } from "./plan-NPpwZ_kc.mjs";
|
|
22
22
|
import { r as scanWranglerDotenvKeys } from "./dotenv-VQxupEUv.mjs";
|
|
23
23
|
import { t as discoverSchema } from "./discover-BcPPiF1o.mjs";
|
|
24
24
|
import { t as MagicString } from "./dist-AoCzRTJE.mjs";
|
|
25
|
-
import { t as findEnvFile } from "./env-types-
|
|
26
|
-
import { d as formatEnvReport, f as listSelfHostSecretNames, g as validateProdEnv, h as selfHostSchemaFailureMessage, i as SelfHostSecretListError, l as dischargeSelfHostEnvContext, n as SelfHostFirstDeployError, p as readEmittedWorkerVars, r as SelfHostSchemaError, s as deriveSelfHostEnvContextFromVars, t as SelfHostEnvValidationError, u as fetchRemoteSecretNames, v as readGeneratedWranglerConfigFile } from "./env-validation-
|
|
25
|
+
import { t as findEnvFile } from "./env-types-D5kds_OZ.mjs";
|
|
26
|
+
import { d as formatEnvReport, f as listSelfHostSecretNames, g as validateProdEnv, h as selfHostSchemaFailureMessage, i as SelfHostSecretListError, l as dischargeSelfHostEnvContext, n as SelfHostFirstDeployError, p as readEmittedWorkerVars, r as SelfHostSchemaError, s as deriveSelfHostEnvContextFromVars, t as SelfHostEnvValidationError, u as fetchRemoteSecretNames, v as readGeneratedWranglerConfigFile } from "./env-validation-C_8tPdhs.mjs";
|
|
27
27
|
import { n as CLOUDFLARE_DEPLOY_BUILD_ENV, o as resolveRemoteMode, s as stripInternalEnvKeys } from "./env-_v349JBd.mjs";
|
|
28
|
-
import {
|
|
28
|
+
import { A as confirm, B as note, H as outro, K as select, L as log$1, N as intro, tt as isCancel } from "./prompts-BNUoTiaf.mjs";
|
|
29
29
|
import { n as completeApplicationAnalysis, t as analyzeApplication } from "./application-routing-B7QEjqSR.mjs";
|
|
30
30
|
import { t as writeDrizzleConfig } from "./config-D8MOgiQV.mjs";
|
|
31
31
|
import { i as runMySqlMigrations } from "./runner-mysql-DmWchSWJ.mjs";
|
|
@@ -35,18 +35,18 @@ import { i as validateMigrations, t as assertJournalCoherence } from "./validate
|
|
|
35
35
|
import { t as renderPrerenderPaths } from "./prerender-render-D9qbLs2f.mjs";
|
|
36
36
|
import { i as migrateBuiltWranglerConfig, n as prepareCfFrameworkBuildOutput, r as prepareCfStaticBuildOutput, t as prepareCfBuildOutput } from "./cf-build-output-BPqOT964.mjs";
|
|
37
37
|
import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
|
|
38
|
-
import { i as isExpiredTokenError, n as PlatformClient, o as parsePlatformErrorBody, r as isCliOutdatedError, s as platformErrorMessage, t as PlatformApiError } from "./client-
|
|
38
|
+
import { i as isExpiredTokenError, n as PlatformClient, o as parsePlatformErrorBody, r as isCliOutdatedError, s as platformErrorMessage, t as PlatformApiError } from "./client-DKAsFA4X.mjs";
|
|
39
39
|
import { a as detectPreset, c as resolveCloudflareOperationArgv, i as FRAMEWORK_PRESETS, l as resolveProjectCommand, o as formatProjectCommand, s as hasBackendFiles, t as createCloudflareProcessRunner } from "./cloudflare-process-B-wekeR6.mjs";
|
|
40
40
|
import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, t as CloudflareAuthenticationError } from "./cloudflare-auth-Qdc7tw8F.mjs";
|
|
41
41
|
import { n as writeVoidProjectConfig } from "./config-write-B1f88wJA.mjs";
|
|
42
|
-
import { r as discoverFrameworkWranglerFiles, t as migrateLegacyVoidConfig } from "./migrate-
|
|
43
|
-
import { a as createCloudflareEmptyDomainPublisher, i as createCloudflareEmptyCronPublisher } from "./cloudflare-operations-
|
|
42
|
+
import { r as discoverFrameworkWranglerFiles, t as migrateLegacyVoidConfig } from "./migrate-q4_njtaW.mjs";
|
|
43
|
+
import { a as createCloudflareEmptyDomainPublisher, i as createCloudflareEmptyCronPublisher } from "./cloudflare-operations-DzH-A966.mjs";
|
|
44
44
|
import { t as formatCloudflareUserMessage } from "./cloudflare-user-output-Q-k0QoNQ.mjs";
|
|
45
|
-
import { c as import_picocolors$1, i as createSpinner, r as cliTitle } from "./output-
|
|
46
|
-
import { a as promptProjectSelection, i as reportProjectCreationWarnings, o as promptProjectSetupAction, r as promptAndCreateProject } from "./create-project-
|
|
45
|
+
import { c as import_picocolors$1, i as createSpinner, r as cliTitle } from "./output-CbM85T4k.mjs";
|
|
46
|
+
import { a as promptProjectSelection, i as reportProjectCreationWarnings, o as promptProjectSetupAction, r as promptAndCreateProject } from "./create-project-CYOOAYcn.mjs";
|
|
47
47
|
import { t as getRequestedProjectSlug } from "./resolve-project-BG5ORGID.mjs";
|
|
48
48
|
import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
|
|
49
|
-
import { t as promptForLoginToken } from "./login-
|
|
49
|
+
import { t as promptForLoginToken } from "./login-BuiMyUrx.mjs";
|
|
50
50
|
import { createRequire } from "node:module";
|
|
51
51
|
import { copyFileSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
52
52
|
import { fileURLToPath } from "node:url";
|
|
@@ -112,6 +112,7 @@ function resolveAssetRoutingPolicy(inputs) {
|
|
|
112
112
|
}
|
|
113
113
|
//#endregion
|
|
114
114
|
//#region src/cli/email-cloudflare.ts
|
|
115
|
+
var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
|
|
115
116
|
/** The `send_email` binding name Void provisions and the runtime reads. */
|
|
116
117
|
const SEND_EMAIL_BINDING = "SEND_EMAIL";
|
|
117
118
|
/** The root-config `vars` key carrying `void.config.ts` `email.from` into the worker. */
|
|
@@ -1538,8 +1539,8 @@ function buildPrerenderBindings(input) {
|
|
|
1538
1539
|
if (input.voidToken && input.voidProjectId) {
|
|
1539
1540
|
voidBindings.__VOID_TOKEN = input.voidToken;
|
|
1540
1541
|
voidBindings.__VOID_PROJECT_ID = input.voidProjectId;
|
|
1541
|
-
if (input.
|
|
1542
|
-
voidBindings.__VOID_PROXY_URL = input.voidProxyUrl
|
|
1542
|
+
if (!input.voidProxyUrl) throw new Error("prerender: No connected platform proxy is available. Run `void connect <url>` first.");
|
|
1543
|
+
voidBindings.__VOID_PROXY_URL = input.voidProxyUrl;
|
|
1543
1544
|
const access = scopedAccessCredentials(input.accessEnv ?? {}, voidBindings.__VOID_PROXY_URL);
|
|
1544
1545
|
if (access) voidBindings.__VOID_ACCESS_CREDENTIALS = access;
|
|
1545
1546
|
if (input.remoteMode) voidBindings.__VOID_REMOTE = "1";
|
|
@@ -1567,7 +1568,6 @@ async function createCloudflarePrerenderRunner(options) {
|
|
|
1567
1568
|
} catch {}
|
|
1568
1569
|
}
|
|
1569
1570
|
const voidToken = voidProjectId ? options.voidToken ?? getToken(root) : null;
|
|
1570
|
-
const voidStaging = isStagingMode(root);
|
|
1571
1571
|
const voidProxyUrl = voidToken && voidProjectId ? getProxyUrl(root) : void 0;
|
|
1572
1572
|
if (voidProxyUrl) ensurePlatformProxyAccess(getApiUrl(root), voidProxyUrl);
|
|
1573
1573
|
const bindings = buildPrerenderBindings({
|
|
@@ -1577,7 +1577,6 @@ async function createCloudflarePrerenderRunner(options) {
|
|
|
1577
1577
|
voidToken,
|
|
1578
1578
|
voidProjectId,
|
|
1579
1579
|
voidProxyUrl,
|
|
1580
|
-
voidStaging,
|
|
1581
1580
|
remoteMode
|
|
1582
1581
|
});
|
|
1583
1582
|
const { Miniflare, convertV4MiniflareOptions } = await import("miniflare");
|
|
@@ -1669,7 +1668,7 @@ async function prerenderPages(options) {
|
|
|
1669
1668
|
paths,
|
|
1670
1669
|
...await renderPrerenderPaths(paths, options.clientDir, (path) => runner.fetchPath(path), (path) => runner.fetchPageData(path), (path, outputFile, error) => {
|
|
1671
1670
|
if (error !== void 0) voidWarn(`prerender ${path} failed: ${error}`);
|
|
1672
|
-
else voidLog(`prerender
|
|
1671
|
+
else voidLog(`prerender ${import_picocolors.default.blue(outputFile)}`);
|
|
1673
1672
|
})
|
|
1674
1673
|
};
|
|
1675
1674
|
} finally {
|
|
@@ -1775,7 +1774,7 @@ async function prerenderPagesNode(options) {
|
|
|
1775
1774
|
ssrDir: options.ssrDir,
|
|
1776
1775
|
clientDir: options.clientDir
|
|
1777
1776
|
});
|
|
1778
|
-
for (const path of result.rendered) voidLog(`prerender
|
|
1777
|
+
for (const path of result.rendered) voidLog(`prerender ${import_picocolors.default.blue(outputFileForPath(path))}`);
|
|
1779
1778
|
for (const { path, error } of result.failed) voidWarn(`prerender ${path} failed: ${error}`);
|
|
1780
1779
|
return result;
|
|
1781
1780
|
}
|
|
@@ -2894,14 +2893,25 @@ function createCfVersionRunner(options) {
|
|
|
2894
2893
|
};
|
|
2895
2894
|
}
|
|
2896
2895
|
if (operation.type === "versions.view") {
|
|
2897
|
-
const
|
|
2896
|
+
const args = [
|
|
2898
2897
|
"workers",
|
|
2899
2898
|
"versions",
|
|
2900
2899
|
"get",
|
|
2901
2900
|
operation.versionId,
|
|
2902
2901
|
"--worker-id",
|
|
2903
|
-
workerName
|
|
2904
|
-
|
|
2902
|
+
workerName,
|
|
2903
|
+
...operation.includeSource ? ["--include", "modules"] : []
|
|
2904
|
+
];
|
|
2905
|
+
const called = operation.includeSource ? await runCf(args, {
|
|
2906
|
+
cwd: output.directory,
|
|
2907
|
+
capture: true,
|
|
2908
|
+
timeoutMs: 3e4,
|
|
2909
|
+
maxOutputBytes: 1048576
|
|
2910
|
+
}) : await run(args, true);
|
|
2911
|
+
const result = {
|
|
2912
|
+
...called,
|
|
2913
|
+
data: called.data ?? parseJson(called.stdout)
|
|
2914
|
+
};
|
|
2905
2915
|
if (result.status !== 0 || result.signal || result.error) return result;
|
|
2906
2916
|
const version = result.data;
|
|
2907
2917
|
if (!record(version) || version.id !== operation.versionId || !Array.isArray(version.bindings)) return failed("The Cloudflare Worker version was not readable.");
|
|
@@ -3916,9 +3926,6 @@ function openDeployLog(opts) {
|
|
|
3916
3926
|
}
|
|
3917
3927
|
};
|
|
3918
3928
|
}
|
|
3919
|
-
//#endregion
|
|
3920
|
-
//#region src/cli/log-summary.ts
|
|
3921
|
-
var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
|
|
3922
3929
|
const FIELD_VALUE_MAX = 80;
|
|
3923
3930
|
const LINE_MAX = 160;
|
|
3924
3931
|
const MSG_COLUMN_MAX = 28;
|
|
@@ -5209,7 +5216,7 @@ let loadedProvisionModule;
|
|
|
5209
5216
|
* so a managed deploy never imports it — and thus never loads `proper-lockfile`.
|
|
5210
5217
|
*/
|
|
5211
5218
|
async function loadProvisionModule() {
|
|
5212
|
-
loadedProvisionModule ??= await import("./provision-
|
|
5219
|
+
loadedProvisionModule ??= await import("./provision-CVku1JFU.mjs");
|
|
5213
5220
|
return loadedProvisionModule;
|
|
5214
5221
|
}
|
|
5215
5222
|
/**
|
|
@@ -7251,7 +7258,8 @@ async function runCloudflareEmailStep(input) {
|
|
|
7251
7258
|
};
|
|
7252
7259
|
const from = input.voidConfig.email?.from;
|
|
7253
7260
|
if (!from) {
|
|
7254
|
-
|
|
7261
|
+
if (Array.isArray(input.rootConfig.send_email) && input.rootConfig.send_email.some((binding) => binding?.name === "SEND_EMAIL") || Array.isArray(input.rootConfig.addresses) && input.rootConfig.addresses.length > 0) log.info("deploy: email.from is unset; skipping automatic email setup. Existing Cloudflare email configuration is preserved.");
|
|
7262
|
+
else log.warn(["deploy: this app uses email, but void.config.ts names no sender.", "Set email.from to \"you@mail.acme.com\" in void.config.ts — automatic email setup skipped."].join("\n"));
|
|
7255
7263
|
return without;
|
|
7256
7264
|
}
|
|
7257
7265
|
const { rootConfig } = input;
|
|
@@ -8885,11 +8893,16 @@ async function runDeployInner(root, options, cliLog) {
|
|
|
8885
8893
|
}
|
|
8886
8894
|
}
|
|
8887
8895
|
async function runManagedDeploy(root, options, cliLog) {
|
|
8896
|
+
const apiUrl = getApiUrl(root);
|
|
8897
|
+
const requestedProjectSlug = getRequestedProjectSlug(options);
|
|
8888
8898
|
let reauthenticated = false;
|
|
8889
8899
|
while (true) try {
|
|
8900
|
+
const savedProject = readProjectConfig(root);
|
|
8901
|
+
const linkedProject = savedProject?.platformUrl === apiUrl ? savedProject : null;
|
|
8902
|
+
if (savedProject && !linkedProject && !requestedProjectSlug) throw new Error(`deploy: This project is linked to ${savedProject.platformUrl}. Pass --project <slug> to deploy to ${apiUrl} without changing the saved link.`);
|
|
8890
8903
|
let token = process.env.VOID_TOKEN ? getToken(root) : null;
|
|
8891
8904
|
if (!token && isGithubActionsOidcAvailable()) {
|
|
8892
|
-
const slug =
|
|
8905
|
+
const slug = requestedProjectSlug ?? linkedProject?.slug;
|
|
8893
8906
|
if (!slug) throw new Error("deploy: running in GitHub Actions but the project is unknown — pass --project <slug> or link the project.");
|
|
8894
8907
|
cliLog.info("github_oidc_exchange_start", { slug });
|
|
8895
8908
|
const tokenOrigin = getApiUrl(root);
|
|
@@ -8908,8 +8921,6 @@ async function runManagedDeploy(root, options, cliLog) {
|
|
|
8908
8921
|
root,
|
|
8909
8922
|
cliLog
|
|
8910
8923
|
});
|
|
8911
|
-
const requestedProjectSlug = getRequestedProjectSlug(options);
|
|
8912
|
-
const linkedProject = readProjectConfig(root);
|
|
8913
8924
|
let config = null;
|
|
8914
8925
|
if (requestedProjectSlug) {
|
|
8915
8926
|
const linked = linkedProject?.slug === requestedProjectSlug ? await client.getProject(linkedProject.projectId) : null;
|
|
@@ -9007,24 +9018,31 @@ function assertProjectDeployAccess(project) {
|
|
|
9007
9018
|
}
|
|
9008
9019
|
async function promptDeployProjectConfig(root, client, cliLog) {
|
|
9009
9020
|
const projects = await client.listProjectChoices();
|
|
9021
|
+
const link = shouldLinkDeployProject(root, client.apiUrl);
|
|
9010
9022
|
const deployableProjects = projects.filter((project) => project.role !== "reader");
|
|
9011
9023
|
if (deployableProjects.length !== projects.length) log.warn("Projects with reader access are hidden from deploy selection. Ask a project admin or owner to grant collaborator access to deploy to them.");
|
|
9012
|
-
if (await promptProjectSetupAction("Set up a Void project for deploy:", {
|
|
9024
|
+
if (await promptProjectSetupAction("Set up a Void project for deploy:", {
|
|
9025
|
+
includeLink: deployableProjects.length > 0,
|
|
9026
|
+
...link ? {} : { link: false }
|
|
9027
|
+
}) === "create") return promptAndCreateProject(root, client, { link });
|
|
9013
9028
|
const result = await promptProjectSelection(deployableProjects, "Select a project to deploy to:", root, {
|
|
9014
9029
|
confirmExisting: true,
|
|
9015
|
-
includeCreate: false
|
|
9030
|
+
includeCreate: false,
|
|
9031
|
+
...link ? {} : { link: false }
|
|
9016
9032
|
});
|
|
9017
9033
|
if (result.action === "create") throw new Error("Unexpected project selection result.");
|
|
9018
9034
|
const config = {
|
|
9019
9035
|
projectId: result.project.id,
|
|
9020
9036
|
slug: result.project.slug
|
|
9021
9037
|
};
|
|
9022
|
-
|
|
9023
|
-
|
|
9024
|
-
|
|
9025
|
-
|
|
9026
|
-
|
|
9027
|
-
|
|
9038
|
+
if (shouldLinkDeployProject(root, client.apiUrl)) {
|
|
9039
|
+
writeProjectConfig(root, attachSelectedPlatform(root, config, client.apiUrl));
|
|
9040
|
+
log.step(`Linked to ${import_picocolors$1.default.blue(config.slug)}`);
|
|
9041
|
+
cliLog?.info("project_linked", {
|
|
9042
|
+
projectId: config.projectId,
|
|
9043
|
+
slug: config.slug
|
|
9044
|
+
});
|
|
9045
|
+
} else log.step(`Using ${import_picocolors$1.default.blue(config.slug)} for this deployment. Saved destination unchanged.`);
|
|
9028
9046
|
return config;
|
|
9029
9047
|
}
|
|
9030
9048
|
function resolveStaticBuildCommand(preset, buildOverride, hasExplicitDir = false) {
|
|
@@ -9133,7 +9151,9 @@ function applyDeployEvent(event, s) {
|
|
|
9133
9151
|
kind: "start",
|
|
9134
9152
|
deploymentId: event.deploymentId
|
|
9135
9153
|
};
|
|
9136
|
-
case "heartbeat":
|
|
9154
|
+
case "heartbeat":
|
|
9155
|
+
if (event.status === "recovering") s.message("Recovering interrupted deployment...");
|
|
9156
|
+
return { kind: "continue" };
|
|
9137
9157
|
case "asset_upload":
|
|
9138
9158
|
if (event.new > 0) s.message(`Uploading assets (${event.new} new, ${event.cached} cached)`);
|
|
9139
9159
|
else s.message(`Uploading assets (${event.total} cached)`);
|
|
@@ -9186,6 +9206,8 @@ function applyDeployEvent(event, s) {
|
|
|
9186
9206
|
async function streamDeployEvents(projectId, events, s, cliLog) {
|
|
9187
9207
|
const startedAt = Date.now();
|
|
9188
9208
|
let deploymentId = null;
|
|
9209
|
+
let lastProgressAt = startedAt;
|
|
9210
|
+
let waitNotice;
|
|
9189
9211
|
let interrupted = false;
|
|
9190
9212
|
cliLog?.info("stream_start", { projectId });
|
|
9191
9213
|
const onSigint = () => {
|
|
@@ -9200,6 +9222,26 @@ async function streamDeployEvents(projectId, events, s, cliLog) {
|
|
|
9200
9222
|
process.once("SIGINT", onSigint);
|
|
9201
9223
|
try {
|
|
9202
9224
|
for await (const event of events) {
|
|
9225
|
+
if (event.event === "heartbeat") {
|
|
9226
|
+
const fields = {
|
|
9227
|
+
deploymentId,
|
|
9228
|
+
step: event.step,
|
|
9229
|
+
status: event.status,
|
|
9230
|
+
recoveryAt: event.recoveryAt
|
|
9231
|
+
};
|
|
9232
|
+
if (event.status === "recovering" && waitNotice !== "recovering") {
|
|
9233
|
+
log.info(`Deployment ${deploymentId ?? event.deploymentId ?? ""} is recovering; waiting for its result.`);
|
|
9234
|
+
cliLog?.info("deploy_recovering", fields);
|
|
9235
|
+
waitNotice = "recovering";
|
|
9236
|
+
} else if (Date.now() - lastProgressAt >= 9e4 && waitNotice === void 0) {
|
|
9237
|
+
log.warn(`Deployment ${deploymentId ?? event.deploymentId ?? ""} has not reported new progress for 90 seconds (last reported progress: ${event.step.replaceAll("_", " ")}).` + (event.recoveryAt ? ` Automatic recovery can start after ${event.recoveryAt} if execution was interrupted.` : "") + " Inspect with `void project status`.");
|
|
9238
|
+
cliLog?.warn("deploy_progress_stalled", fields);
|
|
9239
|
+
waitNotice = "stalled";
|
|
9240
|
+
}
|
|
9241
|
+
} else {
|
|
9242
|
+
lastProgressAt = Date.now();
|
|
9243
|
+
waitNotice = void 0;
|
|
9244
|
+
}
|
|
9203
9245
|
const result = applyDeployEvent(event, s);
|
|
9204
9246
|
if (result.kind === "start") {
|
|
9205
9247
|
deploymentId = result.deploymentId;
|
|
@@ -9556,7 +9598,7 @@ async function runFrameworkDeploy(root, config, client, detected, fwPreset, void
|
|
|
9556
9598
|
} catch {}
|
|
9557
9599
|
if (resources) {
|
|
9558
9600
|
if (!resources.some((resource) => resource.type === "hyperdrive")) {
|
|
9559
|
-
const { text: promptText, isCancel: isCancelPrompt } = await import("./
|
|
9601
|
+
const { text: promptText, isCancel: isCancelPrompt } = await import("./prompts-2TGE6oXx.mjs");
|
|
9560
9602
|
const connectionString = await promptText({
|
|
9561
9603
|
message: `Your project uses ${dialect === "mysql" ? "MySQL" : "PostgreSQL"}. Enter your connection string:`,
|
|
9562
9604
|
placeholder: dialect === "mysql" ? "mysql://user:pass@host:3306/dbname" : "postgresql://user:pass@host:5432/dbname",
|
|
@@ -9796,7 +9838,7 @@ async function runFullDeploy(root, config, client, voidConfig, fwPreset, skipBui
|
|
|
9796
9838
|
} catch {}
|
|
9797
9839
|
if (resources) {
|
|
9798
9840
|
if (!resources.some((resource) => resource.type === "hyperdrive")) {
|
|
9799
|
-
const { text: promptText, isCancel: isCancelPrompt } = await import("./
|
|
9841
|
+
const { text: promptText, isCancel: isCancelPrompt } = await import("./prompts-2TGE6oXx.mjs");
|
|
9800
9842
|
const connectionString = await promptText({
|
|
9801
9843
|
message: `Your project uses ${dialect === "mysql" ? "MySQL" : "PostgreSQL"}. Enter your connection string:`,
|
|
9802
9844
|
placeholder: dialect === "mysql" ? "mysql://user:pass@host:3306/dbname" : "postgresql://user:pass@host:5432/dbname",
|
|
@@ -10006,7 +10048,7 @@ async function createProjectFromSlug(root, client, slug, cliLog) {
|
|
|
10006
10048
|
projectId: project.id,
|
|
10007
10049
|
slug: project.slug
|
|
10008
10050
|
};
|
|
10009
|
-
writeProjectConfig(root, attachSelectedPlatform(root, config, client.apiUrl));
|
|
10051
|
+
if (shouldLinkDeployProject(root, client.apiUrl)) writeProjectConfig(root, attachSelectedPlatform(root, config, client.apiUrl));
|
|
10010
10052
|
log.success(`Project created: ${import_picocolors$1.default.blue(config.slug)}`);
|
|
10011
10053
|
reportProjectCreationWarnings(project);
|
|
10012
10054
|
cliLog?.info("project_create_success", {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as parseRootWranglerConfig, J as runDeploy, f as checkWranglerMigrationApplySet } from "./deploy-
|
|
1
|
+
import { A as parseRootWranglerConfig, J as runDeploy, f as checkWranglerMigrationApplySet } from "./deploy-gCVaiJbS.mjs";
|
|
2
2
|
export { checkWranglerMigrationApplySet, parseRootWranglerConfig, runDeploy };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as PlatformClient } from "./client-
|
|
5
|
-
import { c as import_picocolors } from "./output-
|
|
1
|
+
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DKG5Ra8p.mjs";
|
|
2
|
+
import { c as getToken } from "./auth-CQkSDS50.mjs";
|
|
3
|
+
import { B as note, L as log } from "./prompts-BNUoTiaf.mjs";
|
|
4
|
+
import { n as PlatformClient } from "./client-DKAsFA4X.mjs";
|
|
5
|
+
import { c as import_picocolors } from "./output-CbM85T4k.mjs";
|
|
6
6
|
//#region src/cli/domain.ts
|
|
7
7
|
async function runDomainCommand(root, args) {
|
|
8
8
|
const platform = readDeploymentPlatform(root);
|
|
@@ -40,7 +40,7 @@ async function runDomainCommand(root, args) {
|
|
|
40
40
|
}
|
|
41
41
|
async function runCloudflareDomainCommand(root, args) {
|
|
42
42
|
if (args.projectSlug) throw new Error("domain: --project selects a Void platform project and is not used for direct Cloudflare apps.");
|
|
43
|
-
const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-
|
|
43
|
+
const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-BCdXSsmo.mjs");
|
|
44
44
|
if (args.subcommand === "add") {
|
|
45
45
|
const result = await changeCloudflareDomain(root, args.hostname, "add");
|
|
46
46
|
log.success(result.modified ? `Domain ${args.hostname} added and activated on Cloudflare.` : `Domain ${args.hostname} is already configured.`);
|
|
@@ -2,13 +2,13 @@ import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
|
2
2
|
import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
3
3
|
import { m as readConfig } from "./config-Br_JZD6u.mjs";
|
|
4
4
|
import { a as scanEmailHandlersSync } from "./email--tEtMoj_.mjs";
|
|
5
|
-
import { L as resolveDeployTransport, O as isWranglerNonInteractiveOrCI, X as runWranglerAuthToken, _ as deriveWorkerName, _t as createNodeEmailDns, bt as renderAddressMap, gt as applyEmailSetup, h as createDeployWranglerRunner, k as loadProvisionModule, v as discoverRootWranglerConfig, vt as findEmailConfigConflicts, xt as renderEmailChecklist, yt as preflightEmail } from "./deploy-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { L as resolveDeployTransport, O as isWranglerNonInteractiveOrCI, X as runWranglerAuthToken, _ as deriveWorkerName, _t as createNodeEmailDns, bt as renderAddressMap, gt as applyEmailSetup, h as createDeployWranglerRunner, k as loadProvisionModule, v as discoverRootWranglerConfig, vt as findEmailConfigConflicts, xt as renderEmailChecklist, yt as preflightEmail } from "./deploy-gCVaiJbS.mjs";
|
|
6
|
+
import { r as readProjectConfig } from "./project-DKG5Ra8p.mjs";
|
|
7
|
+
import { c as getToken, u as openBrowser } from "./auth-CQkSDS50.mjs";
|
|
8
8
|
import { A as writeProvisionedWranglerConfig } from "./wrangler-7K-bW_DL.mjs";
|
|
9
|
-
import {
|
|
10
|
-
import { n as PlatformClient, t as PlatformApiError } from "./client-
|
|
11
|
-
import { c as import_picocolors, i as createSpinner } from "./output-
|
|
9
|
+
import { A as confirm, B as note, L as log, U as password, tt as isCancel } from "./prompts-BNUoTiaf.mjs";
|
|
10
|
+
import { n as PlatformClient, t as PlatformApiError } from "./client-DKAsFA4X.mjs";
|
|
11
|
+
import { c as import_picocolors, i as createSpinner } from "./output-CbM85T4k.mjs";
|
|
12
12
|
import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
13
13
|
import { tmpdir } from "node:os";
|
|
14
14
|
import { execSync } from "node:child_process";
|
|
@@ -387,7 +387,7 @@ async function emailDomainAdd(client, projectId, rawDomain, subdomain, deps = {}
|
|
|
387
387
|
"Create the token in three clicks: Continue to summary → Create Token → Copy.",
|
|
388
388
|
"Watching the clipboard for it — nothing is read until you copy, and it is cleared afterwards.",
|
|
389
389
|
"(Enter pastes it yourself instead.)",
|
|
390
|
-
`If the browser didn't open, visit:\n${import_picocolors.default.
|
|
390
|
+
`If the browser didn't open, visit:\n${import_picocolors.default.blue(url)}`
|
|
391
391
|
].join("\n"));
|
|
392
392
|
const spinner = watchSpinner;
|
|
393
393
|
const deadline = Date.now() + (deps.watchTimeoutMs ?? 6e5);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-
|
|
5
|
-
import { d as formatEnvReport, g as validateProdEnv, u as fetchRemoteSecretNames } from "./env-validation-
|
|
6
|
-
import {
|
|
7
|
-
import { n as PlatformClient } from "./client-
|
|
8
|
-
import { r as cliTitle } from "./output-
|
|
2
|
+
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DKG5Ra8p.mjs";
|
|
3
|
+
import { c as getToken } from "./auth-CQkSDS50.mjs";
|
|
4
|
+
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-D5kds_OZ.mjs";
|
|
5
|
+
import { d as formatEnvReport, g as validateProdEnv, u as fetchRemoteSecretNames } from "./env-validation-C_8tPdhs.mjs";
|
|
6
|
+
import { B as note, H as outro, L as log, N as intro } from "./prompts-BNUoTiaf.mjs";
|
|
7
|
+
import { n as PlatformClient } from "./client-DKAsFA4X.mjs";
|
|
8
|
+
import { r as cliTitle } from "./output-CbM85T4k.mjs";
|
|
9
9
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
10
10
|
//#region src/cli/env.ts
|
|
11
11
|
async function runEnvCommand(root, args) {
|
|
@@ -26,7 +26,7 @@ async function runCheck(root, useRemoteSecrets) {
|
|
|
26
26
|
const platform = readDeploymentPlatform(root);
|
|
27
27
|
if (platform === "none") throw new Error("env: Deployment is disabled. Run `void init` to choose a platform.");
|
|
28
28
|
if (platform === "cloudflare") {
|
|
29
|
-
const { listCloudflareSecrets, resolveCloudflareOperationContext } = await import("./cloudflare-operations-
|
|
29
|
+
const { listCloudflareSecrets, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BCdXSsmo.mjs");
|
|
30
30
|
remoteSecrets = await listCloudflareSecrets(resolveCloudflareOperationContext(root));
|
|
31
31
|
} else {
|
|
32
32
|
const token = getToken(root);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { l as relative } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { i as voidWarn } from "./log-
|
|
3
|
+
import { i as voidWarn } from "./log-vqY3pqwI.mjs";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
//#region src/codegen/env-types.ts
|
|
6
6
|
/** Roots already warned about duplicate env.ts files — dedupes noisy repeat calls. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as join, n as dirname, u as resolve } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import { i as voidWarn } from "./log-
|
|
3
|
-
import { t as findEnvFile } from "./env-types-
|
|
2
|
+
import { i as voidWarn } from "./log-vqY3pqwI.mjs";
|
|
3
|
+
import { t as findEnvFile } from "./env-types-D5kds_OZ.mjs";
|
|
4
4
|
import { a as loadLocalEnv, i as isClientEnvKey, r as findLegacyEnvFiles } from "./env-_v349JBd.mjs";
|
|
5
5
|
import { c as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-B-wekeR6.mjs";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as computeInvalidEmittedKeys, c as deriveSelfHostSchemaFacts, p as readEmittedWorkerVars, r as SelfHostSchemaError } from "./env-validation-
|
|
1
|
+
import { a as computeInvalidEmittedKeys, c as deriveSelfHostSchemaFacts, p as readEmittedWorkerVars, r as SelfHostSchemaError } from "./env-validation-C_8tPdhs.mjs";
|
|
2
2
|
export { SelfHostSchemaError, computeInvalidEmittedKeys, deriveSelfHostSchemaFacts, readEmittedWorkerVars };
|
|
@@ -3,10 +3,10 @@ import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
|
3
3
|
import { m as readConfig, u as getDatabaseDialect } from "./config-Br_JZD6u.mjs";
|
|
4
4
|
import { n as readJournal, t as collectMigrations } from "./collect-DiTn9yr6.mjs";
|
|
5
5
|
import { n as ensureProjectTsconfig } from "./project-tsconfig-B8GeM0RM.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { H as outro, K as select, L as log, N as intro, O as cancel, tt as isCancel } from "./prompts-BNUoTiaf.mjs";
|
|
7
7
|
import { t as writeDrizzleConfig } from "./config-D8MOgiQV.mjs";
|
|
8
8
|
import { r as listDrizzleArtifacts, t as assertJournalCoherence } from "./validate-ctOrgiS3.mjs";
|
|
9
|
-
import { r as cliTitle } from "./output-
|
|
9
|
+
import { r as cliTitle } from "./output-CbM85T4k.mjs";
|
|
10
10
|
import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-BV4AzNul.mjs";
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as PlatformClient, o as parsePlatformErrorBody, s as platformErrorMessage, t as PlatformApiError } from "./client-
|
|
5
|
-
import { c as import_picocolors } from "./output-
|
|
1
|
+
import { r as readProjectConfig } from "./project-DKG5Ra8p.mjs";
|
|
2
|
+
import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-CQkSDS50.mjs";
|
|
3
|
+
import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./prompts-BNUoTiaf.mjs";
|
|
4
|
+
import { n as PlatformClient, o as parsePlatformErrorBody, s as platformErrorMessage, t as PlatformApiError } from "./client-DKAsFA4X.mjs";
|
|
5
|
+
import { c as import_picocolors } from "./output-CbM85T4k.mjs";
|
|
6
6
|
import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-BG5ORGID.mjs";
|
|
7
7
|
import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
|
|
8
8
|
import { randomBytes } from "node:crypto";
|
|
@@ -145,7 +145,7 @@ async function runInstall(root, client, linkIdentity = runGithubLink) {
|
|
|
145
145
|
}
|
|
146
146
|
} else throw err;
|
|
147
147
|
}
|
|
148
|
-
log.message(`Open this URL to install the Void GitHub App:\n${import_picocolors.default.
|
|
148
|
+
log.message(`Open this URL to install the Void GitHub App:\n${import_picocolors.default.blue(url)}`);
|
|
149
149
|
const { execFile } = await import("node:child_process");
|
|
150
150
|
openBrowser(url, execFile);
|
|
151
151
|
log.message("After installing, run `void github connect` to link a repository to your project.");
|
|
@@ -173,7 +173,7 @@ async function runGithubLink(root, client) {
|
|
|
173
173
|
return url;
|
|
174
174
|
},
|
|
175
175
|
describeError: (p) => p.get("error") ? "GitHub authorization failed." : null,
|
|
176
|
-
onUrl: (url) => log.message(`Open this URL to link your GitHub account:\n${import_picocolors.default.
|
|
176
|
+
onUrl: (url) => log.message(`Open this URL to link your GitHub account:\n${import_picocolors.default.blue(url)}`),
|
|
177
177
|
finalize: async (params) => {
|
|
178
178
|
const linkCode = params.get("link_code");
|
|
179
179
|
if (!linkCode) throw new Error("github: link callback did not return a link code.");
|
|
@@ -214,7 +214,7 @@ async function performGithubJoin(client) {
|
|
|
214
214
|
return url;
|
|
215
215
|
},
|
|
216
216
|
describeError: (p) => p.get("error") ? "GitHub authorization failed." : null,
|
|
217
|
-
onUrl: (url) => log.message(`Open this URL to join your organization's shared GitHub App installations:\n${import_picocolors.default.
|
|
217
|
+
onUrl: (url) => log.message(`Open this URL to join your organization's shared GitHub App installations:\n${import_picocolors.default.blue(url)}`),
|
|
218
218
|
finalize: async (params) => {
|
|
219
219
|
const joinCode = params.get("join_code");
|
|
220
220
|
if (!joinCode) throw new Error("github: join callback did not return a join code.");
|
|
@@ -280,7 +280,7 @@ async function runGithubConnectAuthorize(client, installationId, repoFullName) {
|
|
|
280
280
|
if (e === "repo_not_accessible") return `You don't have access to ${repoFullName} under this installation on GitHub.`;
|
|
281
281
|
return e ? "GitHub authorization failed." : null;
|
|
282
282
|
},
|
|
283
|
-
onUrl: (url) => log.message(`Open this URL to authorize access to ${repoFullName}:\n${import_picocolors.default.
|
|
283
|
+
onUrl: (url) => log.message(`Open this URL to authorize access to ${repoFullName}:\n${import_picocolors.default.blue(url)}`),
|
|
284
284
|
finalize: async (params) => {
|
|
285
285
|
const grant = params.get("connect_grant");
|
|
286
286
|
if (!grant) throw new Error("github: connect authorization did not return a grant.");
|
|
@@ -303,8 +303,8 @@ async function promptRepoFullName(root) {
|
|
|
303
303
|
const input = await text({
|
|
304
304
|
message: "Repository (owner/repo):",
|
|
305
305
|
placeholder: gitDefault ?? "owner/repo",
|
|
306
|
-
|
|
307
|
-
validate: (value) => /^[^/\s]+\/[^/\s]+$/.test((value
|
|
306
|
+
defaultValue: gitDefault ?? void 0,
|
|
307
|
+
validate: (value) => /^[^/\s]+\/[^/\s]+$/.test((value || gitDefault || "").trim()) ? void 0 : "Enter the repository as owner/repo."
|
|
308
308
|
});
|
|
309
309
|
if (isCancel(input)) {
|
|
310
310
|
cancel("Cancelled.");
|
|
@@ -447,7 +447,7 @@ async function runConnect(root, client, args) {
|
|
|
447
447
|
const input = await text({
|
|
448
448
|
message: "Branch to deploy from:",
|
|
449
449
|
placeholder: branchDefault,
|
|
450
|
-
|
|
450
|
+
defaultValue: branchDefault
|
|
451
451
|
});
|
|
452
452
|
if (isCancel(input)) {
|
|
453
453
|
cancel("Cancelled.");
|
|
@@ -483,7 +483,7 @@ async function runConnect(root, client, args) {
|
|
|
483
483
|
const input = await text({
|
|
484
484
|
message: "Deploy workflow file:",
|
|
485
485
|
placeholder: DEFAULT_WORKFLOW_PATH,
|
|
486
|
-
|
|
486
|
+
defaultValue: DEFAULT_WORKFLOW_PATH,
|
|
487
487
|
validate(value) {
|
|
488
488
|
const v = (value ?? "").trim();
|
|
489
489
|
if (v.length === 0 || isValidWorkflowPath(v)) return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { a as convertFallbacksConfig, c as convertRewritesConfig, f as isProtocolRelative, l as countSplats, n as VALID_REDIRECT_STATUSES, o as convertHeadersConfig, p as parseHostPrefixedSource, s as convertRedirectsConfig } from "./config-Br_JZD6u.mjs";
|
|
3
|
-
import { i as voidWarn } from "./log-
|
|
3
|
+
import { i as voidWarn } from "./log-vqY3pqwI.mjs";
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
5
|
//#region src/cli/headers.ts
|
|
6
6
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { B as note, H as outro } from "./prompts-BNUoTiaf.mjs";
|
|
3
3
|
import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
|
|
4
|
-
import { c as import_picocolors, s as helpLine, t as categoryTitle, u as sectionTitle } from "./output-
|
|
5
|
-
import { n as operatorGroups, t as operatorCommands } from "./operator-args-
|
|
4
|
+
import { c as import_picocolors, s as helpLine, t as categoryTitle, u as sectionTitle } from "./output-CbM85T4k.mjs";
|
|
5
|
+
import { n as operatorGroups, t as operatorCommands } from "./operator-args-B3BTmSoi.mjs";
|
|
6
6
|
import { readFileSync } from "node:fs";
|
|
7
7
|
//#region src/cli/ascii.ts
|
|
8
8
|
const asciiArts = [
|
|
@@ -82,7 +82,7 @@ function operatorHelpTree() {
|
|
|
82
82
|
})),
|
|
83
83
|
...(entry.booleans ?? []).map((flag) => ({
|
|
84
84
|
command: `--${flag}`,
|
|
85
|
-
description: flag === "follow" ? "Poll new logs until interrupted or the build ends" : flag === "ended" ? "Attest that the original provider execution has ended" : flag === "protect-new-projects" ? "Protect newly created projects by default" : flag === "check" && group === "zero-trust" ? "Also check the saved settings against Cloudflare Access (several API calls)" : flag === "token-stdin" && group === "zero-trust" ? "Read the Access management API token from stdin" : flag === "token-stdin" && group === "email" ? entry.action === "domain-remove" ? "Read a replacement Cloudflare token for blocked project cleanup from stdin" : "Read a scoped Cloudflare API token from stdin" : "Read a full API session from stdin for explicit operator session exchange"
|
|
85
|
+
description: flag === "follow" ? "Poll new logs until interrupted or the build ends" : flag === "ended" ? "Attest that the original provider execution has ended" : flag === "public-apps" ? "Manage public app rules without identity policies" : flag === "protect-new-projects" ? "Protect newly created projects by default" : flag === "check" && group === "zero-trust" ? "Also check the saved settings against Cloudflare Access (several API calls)" : flag === "token-stdin" && group === "zero-trust" ? "Read the Access management API token from stdin" : flag === "token-stdin" && group === "email" ? entry.action === "domain-remove" ? "Read a replacement Cloudflare token for blocked project cleanup from stdin" : "Read a scoped Cloudflare API token from stdin" : "Read a full API session from stdin for explicit operator session exchange"
|
|
86
86
|
}))
|
|
87
87
|
]
|
|
88
88
|
}]))
|
|
@@ -607,6 +607,10 @@ const HELP_TREE = {
|
|
|
607
607
|
command: "--no-access-protection",
|
|
608
608
|
description: "Skip Cloudflare Access protection"
|
|
609
609
|
},
|
|
610
|
+
{
|
|
611
|
+
command: "--app-access <public|platform|custom>",
|
|
612
|
+
description: "Choose public apps, reuse platform Access, or select separate app policies"
|
|
613
|
+
},
|
|
610
614
|
{
|
|
611
615
|
command: "--hyperdrive <create|id>",
|
|
612
616
|
description: "Create Hyperdrive or use the specified existing configuration"
|
|
@@ -91,7 +91,7 @@ async function parseEmail(message) {
|
|
|
91
91
|
const proxyRawCache = /* @__PURE__ */ new WeakMap();
|
|
92
92
|
/**
|
|
93
93
|
* Remove the platform-injected `<slug>+` prefix from a recipient address.
|
|
94
|
-
* The platform's shared sender (e.g. `mail.
|
|
94
|
+
* The platform's shared sender (e.g. `mail.example.com`) rewrites every recipient to
|
|
95
95
|
* `<slug>+<tag>@<domain>`; user handlers expect `<tag>@<domain>`. If the
|
|
96
96
|
* slug is unknown, missing, or doesn't match the local-part prefix, the
|
|
97
97
|
* address is returned unchanged so callers without slug context (e.g. the
|