void 1.1.0 → 1.1.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/{account-cmd-BTcUzv9L.mjs → account-cmd-Cj6sCMTk.mjs} +4 -4
- package/dist/{application-analysis-AB_YYWgH.mjs → application-analysis-D7nNmNJb.mjs} +6 -6
- package/dist/{application-routing-L7V-TFhZ.mjs → application-routing-CZH66gXn.mjs} +1 -1
- package/dist/{auth-link-DUJuvRx5.mjs → auth-link-Dj7lAC_K.mjs} +4 -4
- package/dist/{auth-migrations-Cgs0k6lS.mjs → auth-migrations-BO27GDNr.mjs} +38 -2
- package/dist/{auth-router-CIxiMG7i.mjs → auth-router-CNsMOFCa.mjs} +5 -4
- package/dist/{better-auth-shared-B74NJIus.d.mts → better-auth-shared-Bv18bB-l.d.mts} +2 -0
- package/dist/{better-auth-shared-CMXlZG7W.mjs → better-auth-shared-D-6z0q0f.mjs} +28 -1
- package/dist/{build-cmd-BkIv25PA.mjs → build-cmd-ByhegwRC.mjs} +2 -2
- package/dist/{cache-Ctzfig-W.mjs → cache-CEFb5ban.mjs} +2 -2
- package/dist/{cancel-deploy-CD9o-SsC.mjs → cancel-deploy-CaARY26n.mjs} +2 -2
- package/dist/{cf-build-output-Bc8i3dzE.mjs → cf-build-output-ChEKWan2.mjs} +71 -7
- package/dist/cf-build-output-Dcmxa-Zm.mjs +1 -0
- package/dist/{cf-user-agent-ChjQp2MU.mjs → cf-command-values-b8OqDoo9.mjs} +5 -16
- package/dist/cf-user-agent-BkEHPDLA.mjs +16 -0
- package/dist/cli/cli.mjs +180 -57
- package/dist/cli/cloudflare-operation-process.mjs +46 -9
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/{client-DM9Kcf4e.mjs → client-BdzxubTS.mjs} +58 -13
- package/dist/client-DAnfyMe9.mjs +1 -0
- package/dist/{cloudflare-auth-CqFBDo52.mjs → cloudflare-auth-DSvBc1Gu.mjs} +1 -1
- package/dist/{cloudflare-cmd-BIAF_BIY.mjs → cloudflare-cmd-D_2-Q-_i.mjs} +4 -4
- package/dist/{cloudflare-config-DV60XFFK.mjs → cloudflare-config-rdFOys4X.mjs} +2 -2
- package/dist/{cloudflare-connect-WjwnVOJA.mjs → cloudflare-connect-BN-k2kD-.mjs} +2 -2
- package/dist/{cloudflare-operations-CrSUFRzJ.mjs → cloudflare-operations-BFLCpUCV.mjs} +1 -1
- package/dist/{cloudflare-operations-B42EZeJy.mjs → cloudflare-operations-D5PLrOqD.mjs} +18 -8
- package/dist/{cloudflare-process-CeDWJRhj.mjs → cloudflare-process-CZJ4viYl.mjs} +2 -2
- package/dist/collect-BWhkgtAn.mjs +1 -0
- package/dist/{collect-xjffdCdk.mjs → collect-Dew86qce.mjs} +4 -3
- package/dist/{config-D0GY5ItR.mjs → config-CyUJzi3q.mjs} +1 -1
- package/dist/{config-Bx_1SpnO.mjs → config-D26zcdKy.mjs} +2 -2
- package/dist/{config-BEm9vRvS.mjs → config-DC5llZaI.mjs} +2 -2
- package/dist/{config-QrJWu0IX.mjs → config-DYJV8aEH.mjs} +1 -1
- package/dist/{connect-CKtk-EZe.mjs → connect-C4_m2moF.mjs} +5 -5
- package/dist/{create-project-B-ewF_Af.mjs → create-project-CvuYDD-l.mjs} +1 -1
- package/dist/{create-project-yInGo72M.mjs → create-project-D8jQTwVQ.mjs} +2 -2
- package/dist/database-provider.d.mts +6 -0
- package/dist/{db-7I_gfdVq.mjs → db-BsiOAa0A.mjs} +306 -111
- package/dist/{db-types-Bb4WBWIs.mjs → db-types-NGxPwnlt.mjs} +1 -1
- package/dist/{delete-Cy-M1u-r.mjs → delete-CAma7nFi.mjs} +2 -2
- package/dist/{deploy-BYYlnsiy.mjs → deploy-D1gIPiAq.mjs} +148 -64
- package/dist/deploy-Dc0XsCQj.mjs +2 -0
- package/dist/{deploy-managed-static-Ca4TFdmx.mjs → deploy-managed-static-B9KVxY3X.mjs} +80 -34
- package/dist/{deploy-transport-DWlWBe6M.mjs → deploy-transport-B3mtEi_q.mjs} +2 -2
- package/dist/deploy.d.mts +22 -1
- package/dist/deploy.mjs +49 -8
- package/dist/discover-D4TPKo57.mjs +1 -0
- package/dist/{discover-D2PGT63u.mjs → discover-LaV0tbIu.mjs} +1 -1
- package/dist/{dispatch-DrTTk8Xg.mjs → dispatch-BAbbn3jg.mjs} +6 -6
- package/dist/{domain-CZGxPv9u.mjs → domain-BAdwm-QS.mjs} +3 -3
- package/dist/{drizzle-CF84FOVM.mjs → drizzle-BQfyvQKX.mjs} +13 -2
- package/dist/{email-DzyNVuoU.mjs → email-MwjA7kaL.mjs} +11 -12
- package/dist/{email-cloudflare-DfG6UEMm.mjs → email-cloudflare-etpKiITL.mjs} +7 -10
- package/dist/{entry-ehmBvs5w.mjs → entry-B_0IhV64.mjs} +1 -1
- package/dist/{env-Nx3yf50r.mjs → env-B163-G1s.mjs} +5 -5
- package/dist/{env-types-DS2_y4X8.mjs → env-types-GRchm5dw.mjs} +1 -1
- package/dist/{env-validation-BT7z-qpQ.mjs → env-validation-CuGfWRJd.mjs} +1 -1
- package/dist/{env-validation-DYxjz_Wo.mjs → env-validation-D_KyMdab.mjs} +2 -2
- package/dist/{fetch-BPCYVi3H.d.mts → fetch-CUX0tB78.d.mts} +16 -3
- package/dist/fetch-CtESUYWd.mjs +26 -0
- package/dist/{fetch-error-Dj3crt0e.mjs → fetch-error-Bw0n-IY-.mjs} +1 -1
- package/dist/{fetch-stream-PGgz4uGz.mjs → fetch-stream-BspOeTAI.mjs} +1 -1
- package/dist/{fetch-stream-obvZ7fvO.d.mts → fetch-stream-DfkAzZf-.d.mts} +1 -1
- package/dist/{gen-CufHEf42.mjs → gen-CYN3wiov.mjs} +26 -20
- package/dist/gen-Cf-RBVg4.mjs +1 -0
- package/dist/{generate-Dat0UTry.mjs → generate-B1m4Cm4n.mjs} +1 -1
- package/dist/{generate-ClI89brV.mjs → generate-DkEb9rL-.mjs} +1 -1
- package/dist/{github-cmd-FU8EjFyU.mjs → github-cmd-C8QsnJQs.mjs} +2 -2
- package/dist/{handler-_PqY82xe.d.mts → handler-D5K_yP6T.d.mts} +1 -1
- package/dist/{headers-Di1FsD3e.mjs → headers-Bi4bOAwp.mjs} +1 -1
- package/dist/{help-BT2hovNI.mjs → help-B2sFwn9b.mjs} +60 -15
- package/dist/help-w-xlx_kq.mjs +1 -0
- package/dist/{inbound-brj2-TM5.d.mts → inbound-Da7XsjH3.d.mts} +6 -12
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +139 -126
- package/dist/{info-l249eUdH.mjs → info-Bxunp14X.mjs} +4 -4
- package/dist/{init-D0A6M64Q.mjs → init-DGFQMnbk.mjs} +51 -28
- package/dist/{link-WMoJFf4i.mjs → link-CwrfpjIM.mjs} +3 -3
- package/dist/{list-CQ2EQEHL.mjs → list-hKoW5z-b.mjs} +3 -3
- package/dist/{live-DJONVlQK.d.mts → live-JheIDZKc.d.mts} +1 -1
- package/dist/{local-d1-BxvQYEFi.mjs → local-d1-CpaPbd_L.mjs} +5 -5
- package/dist/login-08mBwZfI.mjs +1 -0
- package/dist/{login-C2T1oVG-.mjs → login-f2eu2TQh.mjs} +3 -3
- package/dist/{logs-DnC1d7xB.mjs → logs-CEWqD-_B.mjs} +3 -3
- package/dist/{migrate-BDIprOYd.mjs → migrate-DYfdWBXt.mjs} +5 -5
- package/dist/migrate-Di-4EuoE.mjs +1 -0
- package/dist/{neon-n74ta1Pr.mjs → neon-DTZr7Bu7.mjs} +0 -1
- package/dist/nitro.mjs +3 -3
- package/dist/{node-cPadMgUO.mjs → node-uN8_zxJr.mjs} +15 -9
- package/dist/operator-cmd-Bv20yLu2.mjs +1 -0
- package/dist/{operator-cmd-DHieWtFp.mjs → operator-cmd-DCr_QGMH.mjs} +4 -4
- package/dist/{output-Ba6ZbrzY.mjs → output-CKguMgr7.mjs} +13 -1
- package/dist/pages/client.d.mts +2 -2
- package/dist/pages/client.mjs +18 -5
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +5 -5
- package/dist/pages/islands-plugin.d.mts +44 -6
- package/dist/pages/islands-plugin.mjs +99 -28
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +1 -1
- package/dist/pages/serialize.d.mts +2 -2
- package/dist/pages/serialize.mjs +1 -1
- package/dist/{platform-args-CaCL_1Ch.mjs → platform-args-B7ke06up.mjs} +1 -4
- package/dist/platform-args-B_LrqEZB.mjs +1 -0
- package/dist/{platform-auth-config-Z16-I8nT.mjs → platform-auth-config-qGvEuns3.mjs} +5 -5
- package/dist/{platform-auth-protection-BXwZiJSF.mjs → platform-auth-protection-CyLcD6ot.mjs} +3 -3
- package/dist/{platform-auth-recovery-CXjfqyOv.mjs → platform-auth-recovery-B2LKI8V2.mjs} +3 -3
- package/dist/{platform-cmd-PT4YwMLM.mjs → platform-cmd-B2ec5eFg.mjs} +1 -1
- package/dist/{platform-cmd-DaAOiWTl.mjs → platform-cmd-CX7phm7V.mjs} +6 -6
- package/dist/{platform-domain-CxpvUeo0.mjs → platform-domain-DDNK2y-4.mjs} +3 -3
- package/dist/{platform-lifecycle-DBiS0cJd.mjs → platform-lifecycle-3CR98Tg2.mjs} +399 -40
- package/dist/{platform-lifecycle-u9pMOvxC.mjs → platform-lifecycle-CWc5gr6c.mjs} +1 -1
- package/dist/{platform-management-DvBS83rC.mjs → platform-management-DAE6g2QU.mjs} +1 -1
- package/dist/{platform-management-DhEFdQAf.mjs → platform-management-o3LCCeE4.mjs} +40 -4
- package/dist/{platform-plans-config-BWn1S2Rv.mjs → platform-plans-config-CBMZxCep.mjs} +1 -1
- package/dist/{platform-recovery-BUGOB4RC.mjs → platform-recovery-Dmsg7lWA.mjs} +2 -2
- package/dist/{platform-setup-YvN9VQXV.mjs → platform-setup-hFbnWAVQ.mjs} +1 -1
- package/dist/{plugin-inference-DsARdQKE.mjs → plugin-inference-Bekzjuqw.mjs} +2 -2
- package/dist/{prepare-DEB5SeVJ.mjs → prepare-DepAGBcV.mjs} +9 -9
- package/dist/prepare-EVEbQ9n2.mjs +1 -0
- package/dist/{prepare-PQCgsny0.mjs → prepare-HKo7Rh5V.mjs} +2 -2
- package/dist/{project-cmd-DVatD8Ev.mjs → project-cmd-8ylYGx-O.mjs} +18 -18
- package/dist/{project-paths-DMvEeSau.mjs → project-paths-DGu_QZ_Q.mjs} +1 -1
- package/dist/{project-team-DJrWEAG1.mjs → project-team-Bvpl78we.mjs} +2 -2
- package/dist/{project-token-CBgLBuL6.mjs → project-token-QWHoJH2t.mjs} +2 -2
- package/dist/{project-tsconfig-bveqhlYA.mjs → project-tsconfig-Itv1f4WC.mjs} +1 -1
- package/dist/{project-zero-trust-92gLtZ25.mjs → project-zero-trust-8tJ-RFvu.mjs} +2 -2
- package/dist/{protocol-4H7V_3Os.d.mts → protocol-Ssc_LhHj.d.mts} +2 -2
- package/dist/{protocol-RNP0u7UY.mjs → protocol-bAUUkx70.mjs} +1 -1
- package/dist/{providers-BXuhmuub.mjs → providers-BUHwJlmM.mjs} +10 -1
- package/dist/provision-BgXFDv0d.mjs +1 -0
- package/dist/{provision-BnSSkiED.mjs → provision-DZKYCEJg.mjs} +66 -66
- package/dist/r2-conditions-B8xUgJRc.mjs +61 -0
- package/dist/{requests-7W1Pygt2.mjs → requests-Vk5Zyhcy.mjs} +2 -2
- package/dist/{rollback-BcASVnwP.mjs → rollback-CH4yMQys.mjs} +9 -8
- package/dist/{runner-CabsQ-iM.mjs → runner-3uGC-oLF.mjs} +9 -7
- package/dist/{runner-So9mYfcm.mjs → runner-WCdfeI0q.mjs} +1 -1
- package/dist/{runner-mysql-BhRaONkO.mjs → runner-mysql-BWmbk5IE.mjs} +1 -1
- package/dist/{runner-mysql-DWwE8jKi.mjs → runner-mysql-BcHnLUuM.mjs} +1 -1
- package/dist/{runner-pg-_Xncr3H5.mjs → runner-pg-Cgp-cr_p.mjs} +1 -1
- package/dist/{runner-pg-BRemq_GX.mjs → runner-pg-Cr3qrqi4.mjs} +1 -1
- package/dist/runtime/ai.d.mts +4 -0
- package/dist/runtime/ai.mjs +2 -37
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +2 -2
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +2 -2
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +2 -2
- package/dist/runtime/client-react.mjs +3 -3
- package/dist/runtime/client-solid.d.mts +2 -2
- package/dist/runtime/client-solid.mjs +3 -3
- package/dist/runtime/client-svelte.d.mts +2 -2
- package/dist/runtime/client-svelte.mjs +3 -3
- package/dist/runtime/client-vue.d.mts +2 -2
- package/dist/runtime/client-vue.mjs +3 -3
- package/dist/runtime/client.d.mts +2 -2
- package/dist/runtime/client.mjs +3 -3
- package/dist/runtime/email/testing.d.mts +1 -1
- package/dist/runtime/email.d.mts +2 -3
- package/dist/runtime/email.mjs +2 -3
- package/dist/runtime/fetch-server.d.mts +8 -0
- package/dist/runtime/fetch-server.mjs +30 -0
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +2 -2
- package/dist/runtime/fetch.d.mts +2 -2
- package/dist/runtime/fetch.mjs +3 -3
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/migration-handler-mysql.mjs +4 -4
- package/dist/runtime/migration-handler-pg.mjs +9 -1
- package/dist/runtime/remote/binding-handler.mjs +25 -25
- package/dist/runtime/remote/index.d.mts +3 -0
- package/dist/runtime/remote/index.mjs +86 -23
- package/dist/runtime/routing.d.mts +2 -2
- package/dist/runtime/routing.mjs +1 -1
- package/dist/runtime/sse-client.d.mts +4 -0
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/{scan-C0BMdmEd.mjs → scan-D2-FcLHs.mjs} +13 -5
- package/dist/{secret-bg73f1Ge.mjs → secret-wr6Sn4Xa.mjs} +4 -4
- package/dist/serialize-DtR8Vwa_.d.mts +18 -0
- package/dist/serialize-YHvlcG3Q.mjs +31 -0
- package/dist/{subcommand-prompt-Bm3ZlYgA.mjs → subcommand-prompt-CNZc4XUd.mjs} +1 -1
- package/dist/{types-BAp5AEBU.d.mts → types-7AIz0OZu.d.mts} +1 -1
- package/dist/{validate-CheZGRE7.mjs → validate-CnZPMq4q.mjs} +22 -17
- package/dist/validate-D7Wn8PUX.mjs +1 -0
- package/dist/{version-metadata-DIrqEHQo.mjs → version-metadata-B1Bm2wSq.mjs} +1 -1
- package/dist/{wrangler-BYs07Rxy.mjs → wrangler-C9XSzrju.mjs} +3 -3
- package/dist/wrangler-DAdxHEzh.mjs +1 -0
- package/dist/{wrapper-CwhpNWtH.mjs → wrapper-DGsYwNi6.mjs} +6 -4
- package/dist/{ws-aKVYB-fA.d.mts → ws-nnFnAyQb.d.mts} +6 -1
- package/docs/guide/auth.md +1 -1
- package/docs/guide/database/d1.md +2 -2
- package/docs/guide/database/mysql.md +1 -1
- package/docs/guide/deployment.md +2 -0
- package/docs/guide/edge/headers.md +10 -2
- package/docs/guide/edge/revalidation.md +2 -0
- package/docs/guide/email/receiving.md +1 -1
- package/docs/guide/email/sending.md +3 -3
- package/docs/guide/pages-routing/islands.md +2 -2
- package/docs/guide/pages-routing/markdown.md +3 -1
- package/docs/guide/platform/administration/connected-apps.md +18 -2
- package/docs/guide/platform/administration/email.md +7 -1
- package/docs/guide/platform/installation/ci.md +2 -0
- package/docs/guide/platform/installation/credentials.md +23 -5
- package/docs/guide/platform/installation/maintenance.md +32 -2
- package/docs/guide/platform/installation/setup.md +1 -1
- package/docs/guide/remote-dev.md +2 -0
- package/docs/guide/typed-fetch.md +1 -1
- package/docs/guide/websockets.md +2 -2
- package/docs/index.md +78 -22
- package/docs/integrations/cloudflare.md +1 -1
- package/docs/integrations/frameworks/tanstack-start.md +25 -0
- package/docs/reference/api/deploy.md +35 -3
- package/docs/reference/api/pages.md +7 -5
- package/docs/reference/api.md +2 -0
- package/docs/reference/cli/database.md +22 -5
- package/docs/reference/cli/deploy.md +12 -10
- package/docs/reference/cli/email.md +1 -1
- package/docs/reference/cli/generate.md +1 -1
- package/docs/reference/cli/platform-installation.md +4 -2
- package/docs/reference/cli/project.md +8 -4
- package/docs/reference/cli.md +2 -1
- package/docs/reference/config.md +12 -2
- package/package.json +8 -7
- package/dist/cf-build-output-BU3hqdHu.mjs +0 -1
- package/dist/client-B60PwCC4.mjs +0 -1
- package/dist/collect-Cae8A7Zr.mjs +0 -1
- package/dist/deploy-9lgfhrXS.mjs +0 -2
- package/dist/discover-ClzFSwns.mjs +0 -1
- package/dist/fetch-sAcwjzLO.mjs +0 -18
- package/dist/gen-sXyp5DFO.mjs +0 -1
- package/dist/help-i2YGGnTH.mjs +0 -1
- package/dist/login-XD844Xs-.mjs +0 -1
- package/dist/migrate-BRwU-blY.mjs +0 -1
- package/dist/operator-cmd-D6gnZsnK.mjs +0 -1
- package/dist/platform-args-B0HeTh0C.mjs +0 -1
- package/dist/prepare-CYT6tAzD.mjs +0 -1
- package/dist/r2-conditions-D1Wk8i7b.mjs +0 -30
- package/dist/serialize-BtQyaYoC.mjs +0 -20
- package/dist/serialize-CfSwWfF2.d.mts +0 -10
- package/dist/validate-BQFdf0Pi.mjs +0 -1
package/dist/cli/cli.mjs
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { L as log } from "../dist-BVdsO7Py.mjs";
|
|
3
|
-
import { f as import_picocolors, l as formatUrl } from "../output-
|
|
3
|
+
import { f as import_picocolors, l as formatUrl } from "../output-CKguMgr7.mjs";
|
|
4
4
|
import { t as formatCloudflareUserMessage } from "../cloudflare-user-output-Q-k0QoNQ.mjs";
|
|
5
5
|
import { n as getOwnVersion } from "../agents-CuNtT0D_.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { t as isD1Bookmark } from "../cf-command-values-b8OqDoo9.mjs";
|
|
7
|
+
import { i as printVoidHeader, n as printGlobalHelp, r as printHelpPage, t as getHelpPath } from "../help-B2sFwn9b.mjs";
|
|
7
8
|
import { r as OperatorClientError } from "../operator-client-C-ROjk1I.mjs";
|
|
8
|
-
import { n as
|
|
9
|
+
import { n as operatorGroups } from "../operator-args-UnE8Y2eK.mjs";
|
|
10
|
+
import { n as platformSubcommands, t as parsePlatformArgs } from "../platform-args-B7ke06up.mjs";
|
|
9
11
|
import { parseArgs } from "node:util";
|
|
10
12
|
//#region src/cli/account-args.ts
|
|
11
13
|
const accountSubcommands = [
|
|
@@ -245,7 +247,7 @@ function parseConnectArgs(args) {
|
|
|
245
247
|
const dbSubcommands = [
|
|
246
248
|
{
|
|
247
249
|
name: "push",
|
|
248
|
-
description: "Push schema to
|
|
250
|
+
description: "Push schema to the development database (no migration files)"
|
|
249
251
|
},
|
|
250
252
|
{
|
|
251
253
|
name: "generate",
|
|
@@ -287,7 +289,7 @@ const dbSubcommands = [
|
|
|
287
289
|
},
|
|
288
290
|
{
|
|
289
291
|
name: "studio",
|
|
290
|
-
description: "Open Drizzle Studio against the database (use --remote for the deployed PostgreSQL database)",
|
|
292
|
+
description: "Open Drizzle Studio against the database (use --remote for the deployed PostgreSQL or MySQL database)",
|
|
291
293
|
flags: [{
|
|
292
294
|
name: "--remote",
|
|
293
295
|
description: "Open Studio against the deployed database"
|
|
@@ -323,6 +325,31 @@ const dbSubcommands = [
|
|
|
323
325
|
}
|
|
324
326
|
]
|
|
325
327
|
},
|
|
328
|
+
{
|
|
329
|
+
name: "restore",
|
|
330
|
+
description: "Restore the deployed D1 database to an earlier point (direct Cloudflare)",
|
|
331
|
+
flags: [
|
|
332
|
+
{
|
|
333
|
+
name: "--bookmark",
|
|
334
|
+
arg: "<bookmark>",
|
|
335
|
+
description: "Restore point printed by deploy (or use --timestamp)"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
name: "--timestamp",
|
|
339
|
+
arg: "<iso-time>",
|
|
340
|
+
description: "Time to restore to, with Z or an offset (or use --bookmark)"
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
name: "--platform",
|
|
344
|
+
arg: "cloudflare",
|
|
345
|
+
description: "Restore after a one-off deploy with --platform cloudflare"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
name: "--yes",
|
|
349
|
+
description: "Skip the confirmation prompt"
|
|
350
|
+
}
|
|
351
|
+
]
|
|
352
|
+
},
|
|
326
353
|
{
|
|
327
354
|
name: "rename-migrations",
|
|
328
355
|
description: "Rename migrations to timestamp-based format"
|
|
@@ -363,9 +390,60 @@ const MAX_POSITIONALS = {
|
|
|
363
390
|
studio: 0,
|
|
364
391
|
"set-url": 0,
|
|
365
392
|
connect: 1,
|
|
393
|
+
restore: 0,
|
|
366
394
|
"rename-migrations": 0,
|
|
367
395
|
export: 0
|
|
368
396
|
};
|
|
397
|
+
const ACTION_FLAGS = {
|
|
398
|
+
push: [],
|
|
399
|
+
generate: [],
|
|
400
|
+
status: [],
|
|
401
|
+
reset: ["yes"],
|
|
402
|
+
seed: ["file", "yes"],
|
|
403
|
+
execute: ["file", "remote"],
|
|
404
|
+
migrate: ["remote"],
|
|
405
|
+
studio: ["remote"],
|
|
406
|
+
"set-url": [],
|
|
407
|
+
connect: [
|
|
408
|
+
"provider",
|
|
409
|
+
"name",
|
|
410
|
+
"region",
|
|
411
|
+
"local-only"
|
|
412
|
+
],
|
|
413
|
+
restore: [
|
|
414
|
+
"bookmark",
|
|
415
|
+
"timestamp",
|
|
416
|
+
"platform",
|
|
417
|
+
"yes"
|
|
418
|
+
],
|
|
419
|
+
"rename-migrations": [],
|
|
420
|
+
export: [
|
|
421
|
+
"output",
|
|
422
|
+
"no-data",
|
|
423
|
+
"no-schema",
|
|
424
|
+
"table"
|
|
425
|
+
]
|
|
426
|
+
};
|
|
427
|
+
/**
|
|
428
|
+
* Read a restore time as a UTC ISO string. A time without a zone would depend on where the
|
|
429
|
+
* command runs, `new Date` rolls impossible dates over (Feb 30 becomes Mar 2), and it keeps only
|
|
430
|
+
* milliseconds, so all three are rejected instead of restoring to a moment the user did not write.
|
|
431
|
+
*/
|
|
432
|
+
function parseRestoreTime(value) {
|
|
433
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,3})?)?(?:Z|([+-])(\d{2}):(\d{2}))$/i.exec(value);
|
|
434
|
+
const time = new Date(value);
|
|
435
|
+
if (!match || Number.isNaN(time.getTime())) return;
|
|
436
|
+
const offsetMinutes = match[7] ? (match[7] === "-" ? -1 : 1) * (Number(match[8]) * 60 + Number(match[9])) : 0;
|
|
437
|
+
const written = new Date(time.getTime() + offsetMinutes * 6e4);
|
|
438
|
+
return [
|
|
439
|
+
written.getUTCFullYear(),
|
|
440
|
+
written.getUTCMonth() + 1,
|
|
441
|
+
written.getUTCDate(),
|
|
442
|
+
written.getUTCHours(),
|
|
443
|
+
written.getUTCMinutes(),
|
|
444
|
+
written.getUTCSeconds()
|
|
445
|
+
].every((field, index) => field === Number(match[index + 1] ?? 0)) ? time.toISOString() : void 0;
|
|
446
|
+
}
|
|
369
447
|
function isDbAction(value) {
|
|
370
448
|
return value !== void 0 && Object.hasOwn(MAX_POSITIONALS, value);
|
|
371
449
|
}
|
|
@@ -383,14 +461,19 @@ function parseDbArgs(args) {
|
|
|
383
461
|
name: { type: "string" },
|
|
384
462
|
region: { type: "string" },
|
|
385
463
|
"local-only": { type: "boolean" },
|
|
386
|
-
yes: { type: "boolean" }
|
|
464
|
+
yes: { type: "boolean" },
|
|
465
|
+
bookmark: { type: "string" },
|
|
466
|
+
timestamp: { type: "string" },
|
|
467
|
+
platform: { type: "string" }
|
|
387
468
|
},
|
|
388
469
|
allowPositionals: true,
|
|
389
470
|
strict: true
|
|
390
471
|
});
|
|
391
472
|
const [action, ...rest] = positionals;
|
|
392
|
-
if (!isDbAction(action)) throw new Error("db: Usage: void db <push|generate|status|reset|seed|execute|migrate|studio|export|connect|set-url|rename-migrations>.");
|
|
393
|
-
if (action === "export" && values.remote) throw new Error("`void db export
|
|
473
|
+
if (!isDbAction(action)) throw new Error("db: Usage: void db <push|generate|status|reset|seed|execute|migrate|studio|export|connect|set-url|restore|rename-migrations>.");
|
|
474
|
+
if (action === "export" && values.remote) throw new Error("db: `void db export` reads only the local database; --remote is not supported.");
|
|
475
|
+
const unsupported = Object.keys(values).find((flag) => !ACTION_FLAGS[action].includes(flag));
|
|
476
|
+
if (unsupported) throw new Error(`db: \`void db ${action}\` does not support --${unsupported}.`);
|
|
394
477
|
const maxPositionals = MAX_POSITIONALS[action];
|
|
395
478
|
if (rest.length > maxPositionals) throw new Error(`db: Unexpected argument '${rest[maxPositionals]}'.`);
|
|
396
479
|
switch (action) {
|
|
@@ -431,6 +514,32 @@ function parseDbArgs(args) {
|
|
|
431
514
|
localOnly: values["local-only"]
|
|
432
515
|
};
|
|
433
516
|
}
|
|
517
|
+
case "restore": {
|
|
518
|
+
if (values.platform !== void 0 && values.platform !== "cloudflare") throw new Error("db: `void db restore --platform` accepts only 'cloudflare'.");
|
|
519
|
+
const platform = values.platform;
|
|
520
|
+
const bookmark = values.bookmark?.trim();
|
|
521
|
+
const timestamp = values.timestamp?.trim();
|
|
522
|
+
if (bookmark && !timestamp) {
|
|
523
|
+
if (!isD1Bookmark(bookmark)) throw new Error("db: --bookmark must be a D1 restore point printed by `void deploy`, for example 00000085-0000024c-00004ef2.");
|
|
524
|
+
return {
|
|
525
|
+
action,
|
|
526
|
+
target: { bookmark },
|
|
527
|
+
platform,
|
|
528
|
+
yes: values.yes
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
if (timestamp && !bookmark) {
|
|
532
|
+
const time = parseRestoreTime(timestamp);
|
|
533
|
+
if (!time) throw new Error("db: --timestamp must be a valid ISO 8601 time with Z or an offset and at most millisecond precision, for example 2026-10-16T09:30:00Z.");
|
|
534
|
+
return {
|
|
535
|
+
action,
|
|
536
|
+
target: { timestamp: time },
|
|
537
|
+
platform,
|
|
538
|
+
yes: values.yes
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
throw new Error("db: Usage: void db restore --bookmark <bookmark> or void db restore --timestamp <iso-time>.");
|
|
542
|
+
}
|
|
434
543
|
case "export": return {
|
|
435
544
|
action,
|
|
436
545
|
output: values.output,
|
|
@@ -525,7 +634,7 @@ const emailSubcommands = [
|
|
|
525
634
|
},
|
|
526
635
|
{
|
|
527
636
|
name: "status",
|
|
528
|
-
description: "Show the email setup state
|
|
637
|
+
description: "Show the email setup state on your own Cloudflare account (--platform cloudflare)",
|
|
529
638
|
flags: [PLATFORM_FLAG]
|
|
530
639
|
},
|
|
531
640
|
{
|
|
@@ -544,7 +653,6 @@ const EMAIL_SUBCOMMANDS = [
|
|
|
544
653
|
"status",
|
|
545
654
|
"setup"
|
|
546
655
|
];
|
|
547
|
-
const SUBDOMAIN_ADD_ONLY = "email: --subdomain applies to `void email domain add` only.";
|
|
548
656
|
const EMAIL_DOMAIN_VERBS = [
|
|
549
657
|
"add",
|
|
550
658
|
"status",
|
|
@@ -581,7 +689,6 @@ function parseEmailArgs(args) {
|
|
|
581
689
|
let limit;
|
|
582
690
|
const projectValues = [];
|
|
583
691
|
const platformValues = [];
|
|
584
|
-
const subdomainValues = [];
|
|
585
692
|
const positional = [];
|
|
586
693
|
const rest = args.slice(1);
|
|
587
694
|
for (let i = 0; i < rest.length; i++) if (rest[i] === "--project" || rest[i]?.startsWith("--project=")) {
|
|
@@ -602,12 +709,8 @@ function parseEmailArgs(args) {
|
|
|
602
709
|
platformValues.push(value);
|
|
603
710
|
i = next;
|
|
604
711
|
} else if (rest[i] === "--backend" || rest[i]?.startsWith("--backend=")) throw new Error("email: Unknown option '--backend'.");
|
|
605
|
-
else if (rest[i] === "--subdomain" || rest[i]?.startsWith("--subdomain="))
|
|
606
|
-
|
|
607
|
-
if (value === void 0 || value.trim() === "") throw new Error("email: --subdomain requires a value (a subdomain label or host).");
|
|
608
|
-
subdomainValues.push(value);
|
|
609
|
-
i = next;
|
|
610
|
-
} else positional.push(rest[i]);
|
|
712
|
+
else if (rest[i] === "--subdomain" || rest[i]?.startsWith("--subdomain=")) throw new Error("email: Unknown option '--subdomain'.");
|
|
713
|
+
else positional.push(rest[i]);
|
|
611
714
|
if (projectValues.length > 1) throw new Error("email: --project can only be specified once.");
|
|
612
715
|
const projectSlug = projectValues[0];
|
|
613
716
|
if (platformValues.length > 1) throw new Error("email: --platform can only be specified once.");
|
|
@@ -617,18 +720,14 @@ function parseEmailArgs(args) {
|
|
|
617
720
|
if (platformValue !== "cloudflare" && platformValue !== "void") throw new Error("email: --platform must be 'cloudflare' or 'void'.");
|
|
618
721
|
platform = platformValue;
|
|
619
722
|
}
|
|
620
|
-
if (subdomainValues.length > 1) throw new Error("email: --subdomain can only be specified once.");
|
|
621
|
-
const subdomain = subdomainValues[0];
|
|
622
723
|
if (subcommand === "domain") {
|
|
623
724
|
if (platform === "cloudflare") throw new Error("email: --platform cloudflare applies to `void email status` and `void email setup` only (`domain` is a Void platform command).");
|
|
624
725
|
return parseEmailDomainArgs(positional, {
|
|
625
726
|
projectSlug,
|
|
626
727
|
limit,
|
|
627
|
-
platform
|
|
628
|
-
subdomain
|
|
728
|
+
platform
|
|
629
729
|
});
|
|
630
730
|
}
|
|
631
|
-
if (subdomain !== void 0) throw new Error(SUBDOMAIN_ADD_ONLY);
|
|
632
731
|
if (positional.length > 1) throw new Error(`email: \`void email ${subcommand}\` takes exactly one positional argument (got ${positional.length}: ${positional.map((p) => JSON.stringify(p)).join(", ")}).`);
|
|
633
732
|
const address = positional[0];
|
|
634
733
|
if ((subcommand === "allow" || subcommand === "disallow") && !address) throw new Error(`email: Usage: void email ${subcommand} <address> [--project <name>].`);
|
|
@@ -652,7 +751,6 @@ function parseEmailArgs(args) {
|
|
|
652
751
|
function parseEmailDomainArgs(positional, flags) {
|
|
653
752
|
const verb = positional[0];
|
|
654
753
|
if (!verb || !EMAIL_DOMAIN_VERBS.includes(verb)) throw new Error("email: Usage: void email domain <add|status|list|sync|rotate-secret|remove> [<domain>] [--project <name>].");
|
|
655
|
-
if (flags.subdomain !== void 0 && verb !== "add") throw new Error(SUBDOMAIN_ADD_ONLY);
|
|
656
754
|
const domain = positional[1];
|
|
657
755
|
if (verb === "list") {
|
|
658
756
|
if (domain !== void 0) throw new Error("email: `void email domain list` takes no domain argument.");
|
|
@@ -662,7 +760,6 @@ function parseEmailDomainArgs(positional, flags) {
|
|
|
662
760
|
subcommand: "domain",
|
|
663
761
|
domainVerb: verb,
|
|
664
762
|
domain,
|
|
665
|
-
subdomain: flags.subdomain,
|
|
666
763
|
projectSlug: flags.projectSlug,
|
|
667
764
|
limit: flags.limit,
|
|
668
765
|
platform: flags.platform
|
|
@@ -708,7 +805,7 @@ const genSubcommands = [
|
|
|
708
805
|
{
|
|
709
806
|
name: "model",
|
|
710
807
|
arg: "<name>",
|
|
711
|
-
description: "
|
|
808
|
+
description: "Scaffold a Drizzle table, API routes, and DB types",
|
|
712
809
|
followUp: {
|
|
713
810
|
type: "repeat-input",
|
|
714
811
|
placeholder: "name:type or name:type?"
|
|
@@ -1124,7 +1221,12 @@ const projectSubcommands = [
|
|
|
1124
1221
|
{
|
|
1125
1222
|
name: "rollback",
|
|
1126
1223
|
arg: "[deployId]",
|
|
1127
|
-
description: "Roll back to a previous deployment"
|
|
1224
|
+
description: "Roll back to a previous deployment",
|
|
1225
|
+
flags: [{
|
|
1226
|
+
name: "--platform",
|
|
1227
|
+
arg: "cloudflare",
|
|
1228
|
+
description: "Roll back after a one-off deploy with --platform cloudflare"
|
|
1229
|
+
}]
|
|
1128
1230
|
},
|
|
1129
1231
|
{
|
|
1130
1232
|
name: "cancel",
|
|
@@ -1138,7 +1240,7 @@ const projectSubcommands = [
|
|
|
1138
1240
|
},
|
|
1139
1241
|
{
|
|
1140
1242
|
name: "purge-cache",
|
|
1141
|
-
description: "Purge all cached pages"
|
|
1243
|
+
description: "Purge all cached pages (Void platform)"
|
|
1142
1244
|
}
|
|
1143
1245
|
];
|
|
1144
1246
|
function parseProjectArgs(args) {
|
|
@@ -1251,7 +1353,24 @@ function parseProjectArgs(args) {
|
|
|
1251
1353
|
range
|
|
1252
1354
|
};
|
|
1253
1355
|
}
|
|
1254
|
-
if (subcommand === "rollback"
|
|
1356
|
+
if (subcommand === "rollback") {
|
|
1357
|
+
let platform;
|
|
1358
|
+
const positional = [];
|
|
1359
|
+
for (let i = 0; i < rest.length; i++) {
|
|
1360
|
+
const arg = rest[i];
|
|
1361
|
+
if (arg === "--platform" || arg.startsWith("--platform=")) {
|
|
1362
|
+
const value = arg === "--platform" ? rest[++i] : arg.slice(11);
|
|
1363
|
+
if (value !== "cloudflare") throw new Error(`project: \`rollback --platform\` accepts only 'cloudflare', got '${value ?? ""}'.`);
|
|
1364
|
+
platform = "cloudflare";
|
|
1365
|
+
} else positional.push(arg);
|
|
1366
|
+
}
|
|
1367
|
+
return {
|
|
1368
|
+
subcommand,
|
|
1369
|
+
deployId: parseOptionalPositional(positional),
|
|
1370
|
+
...platform ? { platform } : {}
|
|
1371
|
+
};
|
|
1372
|
+
}
|
|
1373
|
+
if (subcommand === "cancel") return {
|
|
1255
1374
|
subcommand,
|
|
1256
1375
|
deployId: parseOptionalPositional(rest)
|
|
1257
1376
|
};
|
|
@@ -1485,7 +1604,7 @@ async function runSubcommandGroup(command, subcommands, parse, run) {
|
|
|
1485
1604
|
const hasNamedSubcommand = args.slice(1).some((arg) => subcommands.some(({ name }) => name === arg));
|
|
1486
1605
|
try {
|
|
1487
1606
|
if ((!sub || sub.startsWith("-") && !hasNamedSubcommand) && process.stdin.isTTY) {
|
|
1488
|
-
const { promptSubcommand } = await import("../subcommand-prompt-
|
|
1607
|
+
const { promptSubcommand } = await import("../subcommand-prompt-CNZc4XUd.mjs");
|
|
1489
1608
|
if (command === "platform" && !sub) log.info(`A Void platform lets a team deploy Void apps to a shared Cloudflare account.
|
|
1490
1609
|
This command sets up and manages platforms. Join with \`void connect <url>\`.
|
|
1491
1610
|
Docs: ${formatUrl("https://void.cloud/guide/self-hosted-platform")}`);
|
|
@@ -1513,19 +1632,19 @@ const args = process.argv.slice(2);
|
|
|
1513
1632
|
const command = args[0];
|
|
1514
1633
|
const helpPath = getHelpPath(args);
|
|
1515
1634
|
const subcommandGroups = {
|
|
1516
|
-
auth: () => runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-
|
|
1517
|
-
account: () => runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-
|
|
1518
|
-
platform: () => runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-
|
|
1519
|
-
cloudflare: () => runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-
|
|
1520
|
-
project: () => runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-
|
|
1521
|
-
secret: () => runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-
|
|
1522
|
-
domain: () => runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-
|
|
1523
|
-
email: () => runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-
|
|
1524
|
-
db: () => runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-
|
|
1525
|
-
env: () => runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-
|
|
1526
|
-
gen: () => runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-
|
|
1527
|
-
github: () => runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-
|
|
1528
|
-
build: () => runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-
|
|
1635
|
+
auth: () => runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-CNsMOFCa.mjs").then(({ runAuthRouter }) => runAuthRouter(root, parsed))),
|
|
1636
|
+
account: () => runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-Cj6sCMTk.mjs").then(({ runAccountCommand }) => runAccountCommand(root, parsed))),
|
|
1637
|
+
platform: () => runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-B2ec5eFg.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed))),
|
|
1638
|
+
cloudflare: () => runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-D_2-Q-_i.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(root, parsed))),
|
|
1639
|
+
project: () => runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-8ylYGx-O.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed))),
|
|
1640
|
+
secret: () => runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-wr6Sn4Xa.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed))),
|
|
1641
|
+
domain: () => runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-BAdwm-QS.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed))),
|
|
1642
|
+
email: () => runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-MwjA7kaL.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed))),
|
|
1643
|
+
db: () => runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-BsiOAa0A.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed))),
|
|
1644
|
+
env: () => runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-B163-G1s.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed))),
|
|
1645
|
+
gen: () => runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-Cf-RBVg4.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed))),
|
|
1646
|
+
github: () => runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-C8QsnJQs.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed))),
|
|
1647
|
+
build: () => runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-ByhegwRC.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)))
|
|
1529
1648
|
};
|
|
1530
1649
|
if (helpPath) {
|
|
1531
1650
|
if (helpPath.length === 0) printGlobalHelp();
|
|
@@ -1544,7 +1663,7 @@ if (helpPath) {
|
|
|
1544
1663
|
log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
|
|
1545
1664
|
process.exit(1);
|
|
1546
1665
|
}
|
|
1547
|
-
import("../deploy-
|
|
1666
|
+
import("../deploy-Dc0XsCQj.mjs").then(({ runDeploy }) => {
|
|
1548
1667
|
runDeploy(root, deployArgs).catch((err) => {
|
|
1549
1668
|
log.error(formatCloudflareUserMessage(err.message ?? String(err)));
|
|
1550
1669
|
process.exit(1);
|
|
@@ -1552,14 +1671,14 @@ if (helpPath) {
|
|
|
1552
1671
|
});
|
|
1553
1672
|
} else if (command === "connect") (async () => {
|
|
1554
1673
|
const parsed = parseConnectArgs(args.slice(1));
|
|
1555
|
-
const { runConnectCommand } = await import("../connect-
|
|
1674
|
+
const { runConnectCommand } = await import("../connect-C4_m2moF.mjs");
|
|
1556
1675
|
await runConnectCommand(process.cwd(), parsed);
|
|
1557
1676
|
})().catch((err) => {
|
|
1558
1677
|
log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
|
|
1559
1678
|
process.exit(1);
|
|
1560
1679
|
});
|
|
1561
1680
|
else if (command && Object.hasOwn(subcommandGroups, command)) subcommandGroups[command]();
|
|
1562
|
-
else if (command === "info") import("../info-
|
|
1681
|
+
else if (command === "info") import("../info-Bxunp14X.mjs").then(async ({ runInfoCommand }) => {
|
|
1563
1682
|
try {
|
|
1564
1683
|
await runInfoCommand(process.cwd(), parseInfoArgs(args.slice(1)));
|
|
1565
1684
|
} catch (err) {
|
|
@@ -1580,7 +1699,7 @@ else if (command === "prepare") {
|
|
|
1580
1699
|
log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
|
|
1581
1700
|
process.exit(1);
|
|
1582
1701
|
}
|
|
1583
|
-
import("../prepare-
|
|
1702
|
+
import("../prepare-HKo7Rh5V.mjs").then(({ runPrepareCommand }) => {
|
|
1584
1703
|
runPrepareCommand(root).catch((err) => {
|
|
1585
1704
|
log.error(formatCloudflareUserMessage(err.message ?? String(err)));
|
|
1586
1705
|
process.exit(1);
|
|
@@ -1588,7 +1707,7 @@ else if (command === "prepare") {
|
|
|
1588
1707
|
});
|
|
1589
1708
|
} else if (command === "init") {
|
|
1590
1709
|
const root = process.cwd();
|
|
1591
|
-
import("../init-
|
|
1710
|
+
import("../init-DGFQMnbk.mjs").then(({ runInitCommand, parseInitArgs }) => {
|
|
1592
1711
|
let initArgs;
|
|
1593
1712
|
try {
|
|
1594
1713
|
initArgs = parseInitArgs(args.slice(1));
|
|
@@ -1606,7 +1725,7 @@ else if (command === "prepare") {
|
|
|
1606
1725
|
log.error("migrate: This command takes no arguments.");
|
|
1607
1726
|
process.exit(1);
|
|
1608
1727
|
}
|
|
1609
|
-
import("../migrate-
|
|
1728
|
+
import("../migrate-Di-4EuoE.mjs").then(({ runMigrateCommand }) => {
|
|
1610
1729
|
runMigrateCommand(process.cwd()).catch((err) => {
|
|
1611
1730
|
log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
|
|
1612
1731
|
process.exit(1);
|
|
@@ -1652,7 +1771,11 @@ else if (command) {
|
|
|
1652
1771
|
},
|
|
1653
1772
|
{
|
|
1654
1773
|
name: "platform",
|
|
1655
|
-
hint:
|
|
1774
|
+
hint: [
|
|
1775
|
+
"config",
|
|
1776
|
+
...operatorGroups,
|
|
1777
|
+
"install"
|
|
1778
|
+
].join(" | "),
|
|
1656
1779
|
description: "Install platforms and administer plans, users, projects, access, and operations"
|
|
1657
1780
|
},
|
|
1658
1781
|
{
|
|
@@ -1692,7 +1815,7 @@ else if (command) {
|
|
|
1692
1815
|
},
|
|
1693
1816
|
{
|
|
1694
1817
|
name: "db",
|
|
1695
|
-
hint:
|
|
1818
|
+
hint: dbSubcommands.map(({ name }) => name).join(" | "),
|
|
1696
1819
|
description: "Database migrations and management"
|
|
1697
1820
|
},
|
|
1698
1821
|
{
|
|
@@ -1716,7 +1839,7 @@ else if (command) {
|
|
|
1716
1839
|
];
|
|
1717
1840
|
(async () => {
|
|
1718
1841
|
printVoidHeader();
|
|
1719
|
-
const { promptSubcommand } = await import("../subcommand-prompt-
|
|
1842
|
+
const { promptSubcommand } = await import("../subcommand-prompt-CNZc4XUd.mjs");
|
|
1720
1843
|
const result = await promptSubcommand("", topLevelCommands);
|
|
1721
1844
|
if (!result) process.exit(0);
|
|
1722
1845
|
const cmd = result.subcommand;
|
|
@@ -1724,32 +1847,32 @@ else if (command) {
|
|
|
1724
1847
|
if (Object.hasOwn(subcommandGroups, cmd)) return subcommandGroups[cmd]();
|
|
1725
1848
|
switch (cmd) {
|
|
1726
1849
|
case "connect": {
|
|
1727
|
-
const { runConnectCommand } = await import("../connect-
|
|
1850
|
+
const { runConnectCommand } = await import("../connect-C4_m2moF.mjs");
|
|
1728
1851
|
await runConnectCommand(root, parseConnectArgs([]));
|
|
1729
1852
|
return;
|
|
1730
1853
|
}
|
|
1731
1854
|
case "init": {
|
|
1732
|
-
const { runInitCommand, parseInitArgs } = await import("../init-
|
|
1855
|
+
const { runInitCommand, parseInitArgs } = await import("../init-DGFQMnbk.mjs");
|
|
1733
1856
|
await runInitCommand(root, parseInitArgs([]));
|
|
1734
1857
|
return;
|
|
1735
1858
|
}
|
|
1736
1859
|
case "migrate": {
|
|
1737
|
-
const { runMigrateCommand } = await import("../migrate-
|
|
1860
|
+
const { runMigrateCommand } = await import("../migrate-Di-4EuoE.mjs");
|
|
1738
1861
|
await runMigrateCommand(root);
|
|
1739
1862
|
return;
|
|
1740
1863
|
}
|
|
1741
1864
|
case "deploy": {
|
|
1742
|
-
const { runDeploy } = await import("../deploy-
|
|
1865
|
+
const { runDeploy } = await import("../deploy-Dc0XsCQj.mjs");
|
|
1743
1866
|
await runDeploy(root);
|
|
1744
1867
|
return;
|
|
1745
1868
|
}
|
|
1746
1869
|
case "info": {
|
|
1747
|
-
const { runInfoCommand } = await import("../info-
|
|
1870
|
+
const { runInfoCommand } = await import("../info-Bxunp14X.mjs");
|
|
1748
1871
|
await runInfoCommand(root, parseInfoArgs([]));
|
|
1749
1872
|
return;
|
|
1750
1873
|
}
|
|
1751
1874
|
case "prepare": {
|
|
1752
|
-
const { runPrepareCommand } = await import("../prepare-
|
|
1875
|
+
const { runPrepareCommand } = await import("../prepare-HKo7Rh5V.mjs");
|
|
1753
1876
|
await runPrepareCommand(root);
|
|
1754
1877
|
return;
|
|
1755
1878
|
}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { n as __toESM } from "../rolldown-runtime-DXIUcv95.mjs";
|
|
3
3
|
import { a as join, c as resolve, n as dirname } from "../dist-ipQi0Q8y.mjs";
|
|
4
4
|
import { t as require_picocolors } from "../picocolors-BTps1_gs.mjs";
|
|
5
|
-
import { l as formatUrl } from "../output-
|
|
6
|
-
import {
|
|
5
|
+
import { l as formatUrl } from "../output-CKguMgr7.mjs";
|
|
6
|
+
import { n as readCfUploadOutput, r as safePositional, t as isD1Bookmark } from "../cf-command-values-b8OqDoo9.mjs";
|
|
7
|
+
import { n as getVoidUserAgent, t as getCfCliVersion } from "../cf-user-agent-BkEHPDLA.mjs";
|
|
7
8
|
import { t as sanitizeTerminalLogText } from "../terminal-log-text-D9ACPOuG.mjs";
|
|
8
9
|
import { copyFileSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
9
10
|
import { fileURLToPath } from "node:url";
|
|
@@ -148,7 +149,7 @@ function result(status, stdout = "", stderr = "", data) {
|
|
|
148
149
|
].includes(errorCode ?? 0) ? { failure: "not-found" } : {}
|
|
149
150
|
};
|
|
150
151
|
}
|
|
151
|
-
function runCf(command, cwd = process.cwd(), bounds) {
|
|
152
|
+
function runCf(command, cwd = process.cwd(), bounds, interactive = false) {
|
|
152
153
|
const env = cfEnvironment();
|
|
153
154
|
env.CF_QUIET = "1";
|
|
154
155
|
const child = spawnSync(process.execPath, [cf, ...command], {
|
|
@@ -159,7 +160,7 @@ function runCf(command, cwd = process.cwd(), bounds) {
|
|
|
159
160
|
windowsHide: true,
|
|
160
161
|
maxBuffer: bounds?.maxOutputBytes ?? 33554432,
|
|
161
162
|
...bounds ? { timeout: bounds.timeoutMs } : {},
|
|
162
|
-
stdio: [
|
|
163
|
+
stdio: interactive ? "inherit" : [
|
|
163
164
|
"ignore",
|
|
164
165
|
"pipe",
|
|
165
166
|
"pipe"
|
|
@@ -253,7 +254,7 @@ async function withBuildOutput(raw, sourceMain, action) {
|
|
|
253
254
|
}), { mode: 384 });
|
|
254
255
|
const accountId = process.env.CLOUDFLARE_ACCOUNT_ID ?? raw.account_id;
|
|
255
256
|
if (typeof accountId !== "string" || !accountId) throw new Error("Cloudflare account is not pinned for Worker deployment.");
|
|
256
|
-
const { prepareCfBuildOutput } = await import("../cf-build-output-
|
|
257
|
+
const { prepareCfBuildOutput } = await import("../cf-build-output-Dcmxa-Zm.mjs");
|
|
257
258
|
const output = await prepareCfBuildOutput(scratch, accountId);
|
|
258
259
|
if (!output) throw new Error("Could not prepare the Cloudflare Worker build output.");
|
|
259
260
|
try {
|
|
@@ -314,6 +315,14 @@ function d1Database(token) {
|
|
|
314
315
|
table: typeof selected.migrations_table === "string" ? selected.migrations_table : "d1_migrations"
|
|
315
316
|
};
|
|
316
317
|
}
|
|
318
|
+
function previousD1Bookmark(stdout) {
|
|
319
|
+
try {
|
|
320
|
+
const previous = object(parsedJson(stdout)).previous_bookmark;
|
|
321
|
+
return isD1Bookmark(previous) ? previous : void 0;
|
|
322
|
+
} catch {
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
317
326
|
function cleanJson(command, transform) {
|
|
318
327
|
const called = runCf(command);
|
|
319
328
|
if (called.status !== 0 || !transform) return called;
|
|
@@ -568,6 +577,33 @@ async function resources() {
|
|
|
568
577
|
if (!Array.isArray(pending) || pending.some((item) => typeof object(item).Name !== "string")) throw new Error("D1 migration list was malformed.");
|
|
569
578
|
return result(0, "", called.stderr, { pending: pending.map((item) => object(item).Name) });
|
|
570
579
|
}
|
|
580
|
+
case "d1.time-travel.bookmark": {
|
|
581
|
+
const called = runCf([
|
|
582
|
+
"d1",
|
|
583
|
+
"time-travel",
|
|
584
|
+
"get-bookmark",
|
|
585
|
+
d1Database(operation.database).id
|
|
586
|
+
]);
|
|
587
|
+
if (called.status !== 0) return called;
|
|
588
|
+
const bookmark = object(parsedJson(called.stdout)).bookmark;
|
|
589
|
+
if (!isD1Bookmark(bookmark)) throw new Error("D1 Time Travel bookmark was malformed.");
|
|
590
|
+
return result(0, "", called.stderr, { bookmark });
|
|
591
|
+
}
|
|
592
|
+
case "d1.time-travel.restore": {
|
|
593
|
+
const database = d1Database(operation.database);
|
|
594
|
+
if ("bookmark" in operation.target && !isD1Bookmark(operation.target.bookmark)) throw new Error("D1 Time Travel bookmark was malformed.");
|
|
595
|
+
const target = "bookmark" in operation.target ? `--bookmark=${operation.target.bookmark}` : `--timestamp=${operation.target.timestamp}`;
|
|
596
|
+
const called = runCf([
|
|
597
|
+
"d1",
|
|
598
|
+
"time-travel",
|
|
599
|
+
"restore",
|
|
600
|
+
database.id,
|
|
601
|
+
target,
|
|
602
|
+
"--force"
|
|
603
|
+
]);
|
|
604
|
+
if (called.status !== 0) return called;
|
|
605
|
+
return result(0, "", called.stderr, { previousBookmark: previousD1Bookmark(called.stdout) });
|
|
606
|
+
}
|
|
571
607
|
case "containers.list": return runCf([
|
|
572
608
|
"containers",
|
|
573
609
|
"applications",
|
|
@@ -979,8 +1015,8 @@ async function workerChanges() {
|
|
|
979
1015
|
"--prebuilt",
|
|
980
1016
|
...request.message ? ["--message", request.message] : [],
|
|
981
1017
|
...request.secretsFilePath ? ["--secrets-file", request.secretsFilePath] : []
|
|
982
|
-
], directory));
|
|
983
|
-
if (called.status !== 0) return called;
|
|
1018
|
+
], directory, void 0, request.interactive === true));
|
|
1019
|
+
if (called.status !== 0 || request.interactive === true) return called;
|
|
984
1020
|
let uploaded = {};
|
|
985
1021
|
try {
|
|
986
1022
|
uploaded = object(parsedJson(called.stdout));
|
|
@@ -1099,9 +1135,10 @@ async function main() {
|
|
|
1099
1135
|
if (operation.type.startsWith("triggers.") || operation.type === "worker.deploy" || operation.type === "versions.upload" || operation.type === "queues.consumer.remove") return workerChanges();
|
|
1100
1136
|
return resources();
|
|
1101
1137
|
}
|
|
1138
|
+
const terminalOperation = operation?.type === "auth.login" || operation?.type === "tail" || (operation?.type === "versions.upload" || operation?.type === "worker.deploy") && operation.interactive === true;
|
|
1102
1139
|
try {
|
|
1103
1140
|
const output = await main();
|
|
1104
|
-
if (
|
|
1141
|
+
if (!terminalOperation) {
|
|
1105
1142
|
let data = output.data;
|
|
1106
1143
|
let humanOutput = "";
|
|
1107
1144
|
if (data === void 0 && output.stdout.trim()) try {
|
|
@@ -1127,7 +1164,7 @@ try {
|
|
|
1127
1164
|
process.exitCode = output.status;
|
|
1128
1165
|
} catch (error) {
|
|
1129
1166
|
const message = error instanceof Error ? error.message : "Cloudflare operation failed.";
|
|
1130
|
-
if (
|
|
1167
|
+
if (!terminalOperation) process.stdout.write(JSON.stringify({
|
|
1131
1168
|
operationResult: 1,
|
|
1132
1169
|
errors: [{ message }]
|
|
1133
1170
|
}) + "\n");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as findEnvFile } from "../env-types-
|
|
1
|
+
import { t as findEnvFile } from "../env-types-GRchm5dw.mjs";
|
|
2
2
|
import { writeSync } from "node:fs";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { spawnSync } from "node:child_process";
|
|
@@ -109,7 +109,7 @@ function emitResult(result) {
|
|
|
109
109
|
writeSync(RESULT_FD, JSON.stringify(result));
|
|
110
110
|
}
|
|
111
111
|
async function runFactsChild(root) {
|
|
112
|
-
const { deriveSelfHostSchemaFacts, SelfHostSchemaError } = await import("../env-validation-
|
|
112
|
+
const { deriveSelfHostSchemaFacts, SelfHostSchemaError } = await import("../env-validation-CuGfWRJd.mjs");
|
|
113
113
|
try {
|
|
114
114
|
emitResult({
|
|
115
115
|
kind: "ok",
|
|
@@ -128,7 +128,7 @@ async function runFactsChild(root) {
|
|
|
128
128
|
}
|
|
129
129
|
/** The parent already found the emitted config, so a read failure here fails closed. */
|
|
130
130
|
async function runValidateEmittedChild(root) {
|
|
131
|
-
const { computeInvalidEmittedKeys, readEmittedWorkerVars, SelfHostSchemaError } = await import("../env-validation-
|
|
131
|
+
const { computeInvalidEmittedKeys, readEmittedWorkerVars, SelfHostSchemaError } = await import("../env-validation-CuGfWRJd.mjs");
|
|
132
132
|
const emitted = readEmittedWorkerVars(root);
|
|
133
133
|
if (!emitted.ok) {
|
|
134
134
|
emitResult({
|