void 1.3.0 → 1.4.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/dist/{account-cmd-B4i71m7k.mjs → account-cmd-HP8bixYo.mjs} +3 -3
- package/dist/{application-analysis-DYdVoMAY.mjs → application-analysis-DDOQwiXk.mjs} +11 -7
- package/dist/{application-routing-C8EqRDfv.mjs → application-routing-4719u_kf.mjs} +1 -1
- package/dist/auth-g2TQbDLD.d.mts +70 -0
- package/dist/{auth-link-BKwHPbdv.mjs → auth-link-CedYpDCy.mjs} +3 -3
- package/dist/{auth-router-DqLx8E0F.mjs → auth-router-vafo7x8w.mjs} +11 -6
- package/dist/{better-auth-shared-DVk2DkTW.d.mts → better-auth-shared-BHB8kiTE.d.mts} +1 -1
- package/dist/{build-cmd-Dy4psnt1.mjs → build-cmd-9vUAQ1_V.mjs} +1 -1
- package/dist/{cache-DV37S6dl.mjs → cache-jvwLNb0h.mjs} +1 -1
- package/dist/{cancel-deploy-DMPyu1Vt.mjs → cancel-deploy-Dw0UmWKO.mjs} +1 -1
- package/dist/{cf-build-output-Bapzc_8Z.mjs → cf-build-output-XpNR9zoh.mjs} +20 -4
- package/dist/cf-build-output-bd8Uwv1P.mjs +1 -0
- package/dist/{cf-worker-settings-BECvvTVd.mjs → cf-worker-settings-Dg27RzyT.mjs} +11 -5
- package/dist/cli/cli.mjs +25 -25
- package/dist/cli/cloudflare-operation-process.mjs +9 -3
- package/dist/cli/env-schema-probe.mjs +2 -2
- package/dist/{client-BEMtySaV.mjs → client-B3LnB_bE.mjs} +1 -1
- package/dist/client-BZb9j66F.mjs +1 -0
- package/dist/{cloudflare-auth-Byo_0_N9.mjs → cloudflare-auth-DyD_kVFr.mjs} +1 -1
- package/dist/{cloudflare-cmd-BaqIigwI.mjs → cloudflare-cmd-D-b_u3T4.mjs} +2 -2
- package/dist/{cloudflare-config-DchHxPTo.mjs → cloudflare-config-CH1AylZT.mjs} +14 -3
- package/dist/{cloudflare-connect-pNLQmr_e.mjs → cloudflare-connect-zTJh8UnN.mjs} +2 -2
- package/dist/{cloudflare-operations-vP3b5CQf.mjs → cloudflare-operations-Bc-7fN44.mjs} +4 -4
- package/dist/{cloudflare-operations-PCM4wucv.mjs → cloudflare-operations-BtulCNOg.mjs} +1 -1
- package/dist/{config-BU6hMu1W.mjs → config-BV2ASlpn.mjs} +1 -1
- package/dist/{config-Du88-7Y8.d.mts → config-CAdZVTLN.d.mts} +2 -0
- package/dist/config-D-6q7EBH.mjs +87 -0
- package/dist/{config-DHgSEWT7.mjs → config-OFOAimzt.mjs} +5 -3
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-BIaXIkkv.mjs → config-tqMM6DwY.mjs} +1 -1
- package/dist/{connect-DwVsBvVh.mjs → connect-BOM6zvFX.mjs} +4 -4
- package/dist/{create-project-CjzbBlTv.mjs → create-project-Bxd02EHN.mjs} +1 -1
- package/dist/{create-project-CgrnvzyA.mjs → create-project-C2K0DN2O.mjs} +1 -1
- package/dist/{db-rvo64snS.mjs → db-Cdvr3zwG.mjs} +16 -16
- package/dist/{db-types-NGxPwnlt.mjs → db-types-0eCiqYb1.mjs} +1 -1
- package/dist/{delete-DWX6dP4M.mjs → delete-lETE6Tpt.mjs} +1 -1
- package/dist/deploy-CX94CmKa.mjs +2 -0
- package/dist/{deploy-hRPvw8ci.mjs → deploy-CdM-LAxX.mjs} +260 -95
- package/dist/{deploy-managed-static-CDYA2p3L.mjs → deploy-managed-static-DjeBFG2c.mjs} +24 -17
- package/dist/{deploy-transport-JCxw7QDi.mjs → deploy-transport-DIq_gFTP.mjs} +13 -12
- package/dist/deploy.d.mts +2 -0
- package/dist/deploy.mjs +7 -5
- package/dist/{dispatch-OVLeWW8K.mjs → dispatch-CLa2LThw.mjs} +5 -5
- package/dist/{domain-CH5iBD9Y.mjs → domain-DyhNtdYf.mjs} +2 -2
- package/dist/{email-CbTO1l78.mjs → email-DM2wDcBN.mjs} +6 -6
- package/dist/{email-cloudflare-B8-pq_-W.mjs → email-cloudflare-PMbAev9Q.mjs} +20 -7
- package/dist/{env-BBdw236G.mjs → env-78hbN-oI.mjs} +3 -3
- package/dist/{env-validation-XcukUlFM.mjs → env-validation-B3VobvXm.mjs} +1 -0
- package/dist/{env-validation-BfBVvBNe.mjs → env-validation-BUfFZ6bt.mjs} +1 -1
- package/dist/error-pages-CLIJ7aYq.mjs +37 -0
- package/dist/gen-BhWBT4iu.mjs +1 -0
- package/dist/{gen-CCx3t2Ju.mjs → gen-CFmsUsW1.mjs} +3 -3
- package/dist/{github-cmd-BzkRLkbg.mjs → github-cmd-De-_IWbM.mjs} +1 -1
- package/dist/{handler-CQv5YDS0.d.mts → handler-BHktmuTL.d.mts} +3 -1
- package/dist/{headers-D522zd0A.mjs → headers--vaK_chu.mjs} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +68 -33
- package/dist/{info-oBm8yK8J.mjs → info-Yg0-V5Rs.mjs} +3 -3
- package/dist/{init-CBp_uMve.mjs → init-CDiJQycf.mjs} +31 -16
- package/dist/{link-Dt_QXmM4.mjs → link-Dllip08S.mjs} +2 -2
- package/dist/{list-DF6asTdt.mjs → list-BYRP6am0.mjs} +2 -2
- package/dist/{live-CXJ9yC98.d.mts → live-BllfDuzA.d.mts} +2 -2
- package/dist/{local-d1-CUhH3qtj.mjs → local-d1-CAwAs9GH.mjs} +1 -1
- package/dist/login-BAPmYnb7.mjs +1 -0
- package/dist/{login-BjSyhXlT.mjs → login-PcFy5mlC.mjs} +2 -2
- package/dist/{logs-DmvBl6xA.mjs → logs-DmJTBhed.mjs} +2 -2
- package/dist/{migrate-BXRHpYwR.mjs → migrate-B8S2xTcb.mjs} +5 -66
- package/dist/migrate-BIYTPQE6.mjs +1 -0
- package/dist/nitro.mjs +4 -4
- package/dist/{node-DtD7ZiPf.mjs → node-CDOPrGSl.mjs} +3 -3
- package/dist/operator-cmd-CjazwOyb.mjs +1 -0
- package/dist/{operator-cmd-DjZKGGgN.mjs → operator-cmd-DmkmS2wL.mjs} +2 -2
- package/dist/pages/client.d.mts +17 -2
- package/dist/pages/client.mjs +26 -1
- package/dist/pages/index.d.mts +17 -1
- package/dist/pages/index.mjs +95 -4
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/{platform-auth-config-BgnuMbml.mjs → platform-auth-config-CImnfohz.mjs} +3 -3
- package/dist/{platform-auth-protection-NjRejttU.mjs → platform-auth-protection-BogLhtHi.mjs} +2 -2
- package/dist/{platform-auth-recovery-Ug12d9W5.mjs → platform-auth-recovery-B-mEaWEi.mjs} +2 -2
- package/dist/{platform-cmd-BYKLMPCn.mjs → platform-cmd-CV8NxIIn.mjs} +1 -1
- package/dist/{platform-cmd-HByuZAO7.mjs → platform-cmd-DZK2ixMl.mjs} +3 -3
- package/dist/{platform-domain-DLSQ8GF8.mjs → platform-domain-CRvelPGE.mjs} +2 -2
- package/dist/{platform-lifecycle-3dwFJmnq.mjs → platform-lifecycle-CPYY7E9B.mjs} +8 -8
- package/dist/{platform-lifecycle-BRqcxerG.mjs → platform-lifecycle-DwXq7kZt.mjs} +1 -1
- package/dist/{platform-management-ZZ6bQM5j.mjs → platform-management-BOnGbMSM.mjs} +1 -1
- package/dist/{platform-management-ZK6XcbCo.mjs → platform-management-lXdgGgAM.mjs} +1 -1
- package/dist/{platform-recovery-8vNE5dNN.mjs → platform-recovery-noaALXnE.mjs} +2 -2
- package/dist/{prepare-5BR7Splm.mjs → prepare-BuOS18AM.mjs} +1 -1
- package/dist/{prepare-Dseww74N.mjs → prepare-D604Yiyr.mjs} +11 -7
- package/dist/prepare-DU-tOpS5.mjs +1 -0
- package/dist/{project-cmd-CjLNNxwe.mjs → project-cmd-DBYqAIbe.mjs} +13 -13
- package/dist/{project-team-DE5drjcl.mjs → project-team-BjCLgTRC.mjs} +1 -1
- package/dist/{project-token-XEYEXfiJ.mjs → project-token-BB6PwaA9.mjs} +1 -1
- package/dist/{project-tsconfig-Itv1f4WC.mjs → project-tsconfig-CVvk6Z_e.mjs} +24 -2
- package/dist/{project-zero-trust-6VPU8zmV.mjs → project-zero-trust-CWDh1P_t.mjs} +1 -1
- package/dist/{protocol-BekmFxCI.d.mts → protocol-D5XDySYu.d.mts} +1 -1
- package/dist/{provision-Chq0NRAV.mjs → provision-DfxLCg-d.mjs} +1 -1
- package/dist/{provision-B7UFrBH7.mjs → provision-DztLJ97X.mjs} +24 -8
- package/dist/{requests-CG-Pj8ze.mjs → requests-D_pbzDyz.mjs} +1 -1
- package/dist/{rollback-CIrm2txZ.mjs → rollback-CjfIYsJx.mjs} +2 -2
- package/dist/{route-types--PAOzHlH.mjs → route-types-DvEGmPif.mjs} +61 -3
- package/dist/runtime/auth.d.mts +2 -2
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/client-react.d.mts +1 -1
- package/dist/runtime/client-solid.d.mts +1 -1
- package/dist/runtime/client-svelte.d.mts +1 -1
- package/dist/runtime/client-vue.d.mts +1 -1
- package/dist/runtime/client.d.mts +1 -1
- 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/routing.d.mts +5 -4
- package/dist/runtime/routing.mjs +10 -70
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +3 -3
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/runtime/ws.mjs +4 -2
- package/dist/{secret-BL6g7mF5.mjs → secret-3X0PxmuX.mjs} +9 -12
- package/dist/{version-metadata-DmaZNTYW.mjs → version-metadata-D2vfMQzv.mjs} +2 -1
- package/dist/{wrangler-CDiEBCdS.mjs → wrangler-I-scB_1t.mjs} +80 -12
- package/dist/wrangler-UnwdISay.mjs +1 -0
- package/dist/{wrapper-CEiDeCqD.mjs → wrapper-BBl1rC32.mjs} +3 -3
- package/dist/{ws-D1zWiB_P.d.mts → ws-B3ClMVDh.d.mts} +3 -2
- package/docs/guide/auth.md +1 -1
- package/docs/guide/edge/redirects.md +22 -0
- package/docs/guide/pages-routing/actions-and-forms.md +24 -0
- package/docs/guide/platform/installation/maintenance.md +3 -1
- package/docs/guide/server-routing.md +2 -0
- package/docs/guide/ssg.md +8 -0
- package/docs/integrations/cloudflare.md +16 -7
- package/docs/reference/api/auth.md +6 -2
- package/docs/reference/api/deploy.md +9 -5
- package/docs/reference/api/pages.md +2 -0
- package/docs/reference/cli/deploy.md +10 -9
- package/docs/reference/config.md +11 -1
- package/package.json +8 -7
- package/schema.json +4 -0
- package/skills/void/SKILL.md +1 -1
- package/dist/auth-DkcFflXV.d.mts +0 -42
- package/dist/cf-build-output-DlBkWdNU.mjs +0 -1
- package/dist/client-DyxPQnF_.mjs +0 -1
- package/dist/config-BTu1o3Dc.mjs +0 -49
- package/dist/deploy-CtHE2A3R.mjs +0 -2
- package/dist/gen-TgXy93Rr.mjs +0 -1
- package/dist/login-Cdo8Aco1.mjs +0 -1
- package/dist/migrate-COPncCGx.mjs +0 -1
- package/dist/operator-cmd-DDiX7Y3f.mjs +0 -1
- package/dist/prepare-B3VrSF1Z.mjs +0 -1
- package/dist/wrangler-DOPr4jyI.mjs +0 -1
package/dist/index.mjs
CHANGED
|
@@ -3,27 +3,27 @@ import { a as join, c as resolve, i as isAbsolute, n as dirname, o as normalize,
|
|
|
3
3
|
import { t as require_picocolors } from "./picocolors-BsDfhxIw.mjs";
|
|
4
4
|
import { l as inferBindingsFromSource, m as applyBindingOverrides, n as FRAMEWORK_SCAN_DIRS, t as DEFAULT_SCAN_DIRS, u as staticModuleReferences } from "./plugin-inference-CeiB6BG5.mjs";
|
|
5
5
|
import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-DGu_QZ_Q.mjs";
|
|
6
|
-
import { i as loadVoidAuthConfig, n as devAuthConfigImporter, t as AUTH_CONFIG_ENVIRONMENT } from "./config-
|
|
7
|
-
import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, u as isNodeTarget } from "./config-
|
|
6
|
+
import { i as loadVoidAuthConfig, n as devAuthConfigImporter, o as viteAuthConfigImporter, t as AUTH_CONFIG_ENVIRONMENT } from "./config-D-6q7EBH.mjs";
|
|
7
|
+
import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, u as isNodeTarget } from "./config-OFOAimzt.mjs";
|
|
8
8
|
import { f as invalidateSourceAnalysis, o as resolveLayoutIds, p as isRouteEnabledForEnvironment } from "./scan-N9WzdcAl.mjs";
|
|
9
9
|
import { i as isMemberExpression, n as isIdentifier, r as isLiteral } from "./ast-CsZ_q_gc.mjs";
|
|
10
10
|
import { n as bindingResolver } from "./ast-bindings-C3yaPs1y.mjs";
|
|
11
|
-
import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, n as DEFAULT_SANDBOX_CLASS_NAME, p as scanJobsSync, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync, u as scanQueuesSync } from "./application-analysis-
|
|
11
|
+
import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, n as DEFAULT_SANDBOX_CLASS_NAME, p as scanJobsSync, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync, u as scanQueuesSync } from "./application-analysis-DDOQwiXk.mjs";
|
|
12
12
|
import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-BMwmN5Ae.mjs";
|
|
13
13
|
import { t as MagicString } from "./dist-Cegxq8gs.mjs";
|
|
14
14
|
import { a as validateSsrEntries, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS } from "./entry-BEM8ZuGP.mjs";
|
|
15
15
|
import { r as hasEmailHandlers } from "./email-B9ayYQEG.mjs";
|
|
16
16
|
import { a as resolveDistDir, c as hasDocumentRoutes, n as collectRevalidate, o as resolveWorkerDirName, r as hasRevalidate, s as hasApiRoutes, t as collectPages, u as resolveAssetRoutingPolicy } from "./isr-config-fZaJJ8t7.mjs";
|
|
17
|
-
import { n as mergeRoutingRules, t as lintRoutingPhases } from "./headers
|
|
17
|
+
import { n as mergeRoutingRules, t as lintRoutingPhases } from "./headers--vaK_chu.mjs";
|
|
18
18
|
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
|
|
19
|
-
import {
|
|
20
|
-
import { A as syncWranglerWebSockets, E as resolveLiveBindingConfig, O as syncWranglerBindings, T as readWranglerWebSocketTombstones, a as LIVE_MIGRATION_TAG, b as readRootWranglerConfig, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, v as readExistingLiveBindingConfig, x as readWranglerCompat } from "./wrangler-
|
|
21
|
-
import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-
|
|
19
|
+
import { c as stashCloudflareDeployPointer, i as materializeCloudflareConfig, o as restoreCloudflarePreviewPointer } from "./cloudflare-config-CH1AylZT.mjs";
|
|
20
|
+
import { A as syncWranglerWebSockets, E as resolveLiveBindingConfig, O as syncWranglerBindings, T as readWranglerWebSocketTombstones, a as LIVE_MIGRATION_TAG, b as readRootWranglerConfig, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, v as readExistingLiveBindingConfig, x as readWranglerCompat } from "./wrangler-I-scB_1t.mjs";
|
|
21
|
+
import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-CAwAs9GH.mjs";
|
|
22
22
|
import { n as scopedAccessCredentials } from "./cf-access-BM9G0lhO.mjs";
|
|
23
23
|
import { n as ensurePlatformProxyAccess } from "./cf-access-CWP4avfP.mjs";
|
|
24
24
|
import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-B6iOCjKI.mjs";
|
|
25
|
-
import {
|
|
26
|
-
import { a as readDeployBuildQueueNames, r as cloudflareQueueName, s as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-
|
|
25
|
+
import { i as writeFileIfChanged, r as syncAuthTypesInProjectTsconfig } from "./project-tsconfig-CVvk6Z_e.mjs";
|
|
26
|
+
import { a as readDeployBuildQueueNames, r as cloudflareQueueName, s as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-CLa2LThw.mjs";
|
|
27
27
|
import { _ as parseCapturedMessage, a as DEV_INBOX_ENV_VAR, c as DEV_INBOX_TOKEN_ENV_VAR, f as clearDevBuffer, g as listDevMessages, l as DEV_INBOX_TOKEN_HEADER, m as findDevMessage, n as DEV_INBOX_ACK_VALUE, o as DEV_INBOX_MAX_CAPTURE_BYTES, s as DEV_INBOX_PREFIX, t as DEV_INBOX_ACK_HEADER, u as DEV_INBOX_TOKEN_QUERY, v as pushToDevBuffer } from "./dev-inbox-D0jxye_D.mjs";
|
|
28
28
|
import { n as scanWranglerDotenvKeys } from "./dotenv-CNazY3-w.mjs";
|
|
29
29
|
import { a as findReservedEnvKeys, c as reservedEnvKeysMessage, i as findLegacyEnvFiles, l as resolveRemoteMode, o as isClientEnvKey, r as LOCAL_ENV_FILE, s as loadLocalEnv } from "./env-BaMz0j7H.mjs";
|
|
@@ -32,18 +32,18 @@ import { t as loadUserEnvFile } from "./load-user-env-DD5qveNU.mjs";
|
|
|
32
32
|
import { n as INTERNAL_BINDING_PREFIXES, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-D74P4ebM.mjs";
|
|
33
33
|
import { t as ASSET_EXTENSIONS } from "./routing-assets-DdSFxoLp.mjs";
|
|
34
34
|
import { t as assertNoPrerenderFailures } from "./prerender-render-CaShbHJ3.mjs";
|
|
35
|
-
import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-
|
|
36
|
-
import { d as isGeneratedAssetHeaders, f as resolveAssetWorkerBypass, g as prerenderPagesNode, h as prerenderPages, n as SEND_EMAIL_BINDING, u as isAssetBypassRule } from "./email-cloudflare-
|
|
35
|
+
import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-D2vfMQzv.mjs";
|
|
36
|
+
import { d as isGeneratedAssetHeaders, f as resolveAssetWorkerBypass, g as prerenderPagesNode, h as prerenderPages, n as SEND_EMAIL_BINDING, u as isAssetBypassRule } from "./email-cloudflare-PMbAev9Q.mjs";
|
|
37
37
|
import { r as defer } from "./validation-error-Dg9Recn1.mjs";
|
|
38
38
|
import { i as safeJsonStringify } from "./protocol-DimNxVRr.mjs";
|
|
39
|
-
import { n as completeApplicationAnalysis } from "./application-routing-
|
|
40
|
-
import { n as generateQueueTypes, t as generateRouteTypes } from "./route-types
|
|
39
|
+
import { n as completeApplicationAnalysis } from "./application-routing-4719u_kf.mjs";
|
|
40
|
+
import { a as syncAuthTypesFile, i as removeAuthTypesIfPresent, n as generateQueueTypes, t as generateRouteTypes } from "./route-types-DvEGmPif.mjs";
|
|
41
41
|
import { a as defineMiddleware, c as defineScheduled, i as defineHead, n as basicAuth, o as defineQueue, r as defineHandler, s as defineRender, t as VoidAssetRewriteError } from "./handler-BZ1t7-Rv.mjs";
|
|
42
42
|
import module, { builtinModules, createRequire } from "node:module";
|
|
43
43
|
import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
|
|
44
44
|
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
45
|
-
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
46
45
|
import { createRunnableDevEnvironment, defaultServerConditions, isRunnableDevEnvironment, loadEnv, normalizePath, parseSync, resolveEnvPrefix } from "vite";
|
|
46
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
47
47
|
import { appendSqliteClassMigration } from "@void/deploy-core";
|
|
48
48
|
import { randomBytes, timingSafeEqual } from "node:crypto";
|
|
49
49
|
import { homedir } from "node:os";
|
|
@@ -489,7 +489,7 @@ function readVoidDevCredentials(root) {
|
|
|
489
489
|
*/
|
|
490
490
|
async function runAiSetupPrompt(root, token, apiUrl, server) {
|
|
491
491
|
const { select, text, isCancel, log } = await import("./dist-B1PLt4_8.mjs");
|
|
492
|
-
const { PlatformClient } = await import("./client-
|
|
492
|
+
const { PlatformClient } = await import("./client-BZb9j66F.mjs");
|
|
493
493
|
const { attachSelectedPlatform, writeProjectConfig } = await import("./project-zdB3fs9G.mjs");
|
|
494
494
|
const { inferDefaultSlug } = await import("./resolve-project-DD1vu8s9.mjs");
|
|
495
495
|
const { printSuccess } = await import("./output-BW9uK099.mjs");
|
|
@@ -519,7 +519,7 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
|
|
|
519
519
|
let slug;
|
|
520
520
|
if (result === "__create__") {
|
|
521
521
|
const { validateProjectSlug } = await import("./project-slug-6cyz8E7k.mjs");
|
|
522
|
-
const { createProjectWithSlugRetry } = await import("./create-project-
|
|
522
|
+
const { createProjectWithSlugRetry } = await import("./create-project-C2K0DN2O.mjs");
|
|
523
523
|
let created;
|
|
524
524
|
try {
|
|
525
525
|
created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
|
|
@@ -2154,6 +2154,27 @@ function pushDefaultErrorPageHelpers(lines, options) {
|
|
|
2154
2154
|
lines.push("app.onError(__errorRenderer.onError);");
|
|
2155
2155
|
}
|
|
2156
2156
|
/**
|
|
2157
|
+
* Returns a lookup that gives each key its own identifier suffix. The suffix
|
|
2158
|
+
* keeps the key's ASCII letters and digits; keys that clean up to the same
|
|
2159
|
+
* text (user-list.ts and user_list.ts, or two CJK names of one length) get a
|
|
2160
|
+
* counter so the generated consts never clash.
|
|
2161
|
+
*/
|
|
2162
|
+
function createIdentifierNames() {
|
|
2163
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
2164
|
+
const used = /* @__PURE__ */ new Set();
|
|
2165
|
+
return (key) => {
|
|
2166
|
+
const known = byKey.get(key);
|
|
2167
|
+
if (known !== void 0) return known;
|
|
2168
|
+
let base = "";
|
|
2169
|
+
for (const char of key.split("")) base += char >= "0" && char <= "9" || char >= "a" && char <= "z" || char >= "A" && char <= "Z" ? char : "_";
|
|
2170
|
+
let name = base;
|
|
2171
|
+
for (let n = 2; used.has(name); n++) name = `${base}_${n}`;
|
|
2172
|
+
used.add(name);
|
|
2173
|
+
byKey.set(key, name);
|
|
2174
|
+
return name;
|
|
2175
|
+
};
|
|
2176
|
+
}
|
|
2177
|
+
/**
|
|
2157
2178
|
* Generate the code for the virtual route table module (virtual:void-routes).
|
|
2158
2179
|
* This module creates a Hono app with:
|
|
2159
2180
|
* - Middleware registered via app.use()
|
|
@@ -2253,9 +2274,10 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
|
|
|
2253
2274
|
lines.push("");
|
|
2254
2275
|
}
|
|
2255
2276
|
const seenFiles = /* @__PURE__ */ new Set();
|
|
2277
|
+
const routeNames = createIdentifierNames();
|
|
2256
2278
|
for (const route of scan.routes) {
|
|
2257
2279
|
const filePath = `${routesDir}/${route.filePath}`;
|
|
2258
|
-
const loaderName = `_load_${route.filePath
|
|
2280
|
+
const loaderName = `_load_${routeNames(route.filePath)}`;
|
|
2259
2281
|
if (!seenFiles.has(route.filePath)) {
|
|
2260
2282
|
seenFiles.add(route.filePath);
|
|
2261
2283
|
lines.push(`const ${loaderName} = __createModuleLoader(() => import(${JSON.stringify(filePath)}), ${JSON.stringify(options.dev !== true)});`);
|
|
@@ -2295,11 +2317,12 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
|
|
|
2295
2317
|
lines.push("export const VoidLiveStreamDurableObject = __createLiveDurableObject();");
|
|
2296
2318
|
lines.push("");
|
|
2297
2319
|
}
|
|
2298
|
-
|
|
2320
|
+
const pageNames = createIdentifierNames();
|
|
2321
|
+
if (pages && scan.pages.pages.length > 0) compilePageRoutes(lines, scan, pages, options, pageNames);
|
|
2299
2322
|
for (let i = 0; i < webSockets.length; i++) lines.push(`app.all(${JSON.stringify(webSockets[i].pattern)}, __markRouteHandler((c) => __forwardWebSocketRequest(c.req.raw, c.env, __voidWebSocketRoutes[${i}])));`);
|
|
2300
2323
|
if (webSockets.length > 0) lines.push("");
|
|
2301
2324
|
if (pages && scan.pages.pages.length > 0) lines.push(`app.notFound(__createPagesFallback({ routing: __routingRuntime, errors: __errorRenderer, assetsDir: ${JSON.stringify(options.assetsDir)}, fallbackRules: ${fallbackRulesJson} }));`);
|
|
2302
|
-
compilePrerenderCollector(lines, scan, ssr, options);
|
|
2325
|
+
compilePrerenderCollector(lines, scan, ssr, options, pageNames);
|
|
2303
2326
|
if (ssr) {
|
|
2304
2327
|
lines.push(`const getClientAssetTags = __createClientAssetTags(${JSON.stringify({
|
|
2305
2328
|
entryId: ssr.clientEntryRelativePath,
|
|
@@ -2548,7 +2571,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
|
|
|
2548
2571
|
lines.push(`export default app;`);
|
|
2549
2572
|
return lines.join("\n");
|
|
2550
2573
|
}
|
|
2551
|
-
function compilePrerenderCollector(lines, scan, ssr, options) {
|
|
2574
|
+
function compilePrerenderCollector(lines, scan, ssr, options, pageNames) {
|
|
2552
2575
|
const staticPaths = scan.pages.pages.filter((page) => page.shouldPrerender && page.params.length === 0 && !page.catchAll).map((page) => page.pattern);
|
|
2553
2576
|
const dynamicPages = scan.pages.pages.filter((page) => page.shouldPrerender && page.hasGetPrerenderPaths && (page.params.length > 0 || page.catchAll));
|
|
2554
2577
|
const explicitPaths = options.explicitPrerenderPaths ?? [];
|
|
@@ -2568,7 +2591,7 @@ function compilePrerenderCollector(lines, scan, ssr, options) {
|
|
|
2568
2591
|
lines.push(` const paths = [];`);
|
|
2569
2592
|
for (const path of staticPaths) lines.push(` paths.push(${JSON.stringify(path)});`);
|
|
2570
2593
|
for (const page of dynamicPages) {
|
|
2571
|
-
const loaderName = `_pload_${page.componentId
|
|
2594
|
+
const loaderName = `_pload_${pageNames(page.componentId)}`;
|
|
2572
2595
|
lines.push(` {`);
|
|
2573
2596
|
lines.push(` const mod = await ${loaderName}();`);
|
|
2574
2597
|
lines.push(` if (typeof mod.getPrerenderPaths === "function") {`);
|
|
@@ -2601,7 +2624,7 @@ function compilePrerenderCollector(lines, scan, ssr, options) {
|
|
|
2601
2624
|
lines.push(`}`);
|
|
2602
2625
|
lines.push("");
|
|
2603
2626
|
}
|
|
2604
|
-
function compilePageRoutes(lines, scan, pages, options) {
|
|
2627
|
+
function compilePageRoutes(lines, scan, pages, options, pageNames) {
|
|
2605
2628
|
lines.push(`import { renderPage } from "virtual:void-pages-renderer";`);
|
|
2606
2629
|
if (options.dev) lines.push(`import { getVoidPagesDevCss } from "virtual:void-pages-dev-assets";`);
|
|
2607
2630
|
const hasIslandPages = scan.pages.pages.some((p) => p.renderMode === "island");
|
|
@@ -2666,7 +2689,7 @@ function compilePageRoutes(lines, scan, pages, options) {
|
|
|
2666
2689
|
})}${devCssOption} }, __loadPagesManifest);`);
|
|
2667
2690
|
const seenServerFiles = /* @__PURE__ */ new Set();
|
|
2668
2691
|
for (const page of scan.pages.pages) {
|
|
2669
|
-
const safeId = page.componentId
|
|
2692
|
+
const safeId = pageNames(page.componentId);
|
|
2670
2693
|
let serverImportPath = null;
|
|
2671
2694
|
if (page.serverPath) serverImportPath = `${pages.pagesDir}/${page.serverPath}`;
|
|
2672
2695
|
if (serverImportPath && !seenServerFiles.has(serverImportPath)) {
|
|
@@ -2722,7 +2745,7 @@ const serveWithAssets = __createAssetFallback(${JSON.stringify({
|
|
|
2722
2745
|
* proxy-backed versions.
|
|
2723
2746
|
*/
|
|
2724
2747
|
function compileWorkerEntry(options = {}) {
|
|
2725
|
-
const { hasQueues = false, versionMetadataBinding, remote, assetsDir = "assets", webSocketClasses = [], runtimeEnvPath = "void/_env", runtimeEmailPath = "void/email", envSchemaModule, sandbox, serveSpaFallback = false, hasEmail = false, live, dev = false, isr, notFound = "none", durableObjects = [] } = options;
|
|
2748
|
+
const { hasQueues = false, versionMetadataBinding, alwaysUseHttps = false, remote, assetsDir = "assets", webSocketClasses = [], runtimeEnvPath = "void/_env", runtimeEmailPath = "void/email", envSchemaModule, sandbox, serveSpaFallback = false, hasEmail = false, live, dev = false, isr, notFound = "none", durableObjects = [] } = options;
|
|
2726
2749
|
const remotePath = remote?.remotePath;
|
|
2727
2750
|
const remoteBindingNames = JSON.stringify(remote?.bindingNames);
|
|
2728
2751
|
const createRemoteEnvCall = `createRemoteEnv(env${remote?.bindingNames ? `, ${remoteBindingNames}` : ""})`;
|
|
@@ -2758,7 +2781,7 @@ const __filterInternalBindings = (env) => __filterBindings(env, ${JSON.stringify
|
|
|
2758
2781
|
app, assets: serveWithAssets, withRawEnv: __withRawEnv, withRuntimeEnv,
|
|
2759
2782
|
filterBindings: __filterInternalBindings,
|
|
2760
2783
|
internalRoute: __voidHandleInternalRoute,
|
|
2761
|
-
collectPrerenderPaths: __voidCollectPrerenderPaths${versionMetadataBinding ? ", versionMetadataBinding: " + JSON.stringify(versionMetadataBinding) : ""}${envSchemaModule ? ", validateEnv: _validateEnvOnce" : ""}${remotePath ? ", remoteEnv: (env) => " + createRemoteEnvCall : ""}${hasEmail ? ", emailReceipt: __handleEmailReceipt" : ""}${isr ? ", isr: { deploymentId: __VOID_ISR_DEPLOYMENT_ID, handle: (request, env, ctx, render) => handleIsr(request, env, ctx, { revalidate: __VOID_ISR_REVALIDATE, pages: __VOID_ISR_PAGES, pathRevalidate: __VOID_ISR_PATH_REVALIDATE, deploymentId: __VOID_ISR_DEPLOYMENT_ID, queryAllowlist: " + JSON.stringify(isr.queryAllowlist) + " }, render) }" : ""}
|
|
2784
|
+
collectPrerenderPaths: __voidCollectPrerenderPaths${alwaysUseHttps ? ", alwaysUseHttps: true" : ""}${versionMetadataBinding ? ", versionMetadataBinding: " + JSON.stringify(versionMetadataBinding) : ""}${envSchemaModule ? ", validateEnv: _validateEnvOnce" : ""}${remotePath ? ", remoteEnv: (env) => " + createRemoteEnvCall : ""}${hasEmail ? ", emailReceipt: __handleEmailReceipt" : ""}${isr ? ", isr: { deploymentId: __VOID_ISR_DEPLOYMENT_ID, handle: (request, env, ctx, render) => handleIsr(request, env, ctx, { revalidate: __VOID_ISR_REVALIDATE, pages: __VOID_ISR_PAGES, pathRevalidate: __VOID_ISR_PATH_REVALIDATE, deploymentId: __VOID_ISR_DEPLOYMENT_ID, queryAllowlist: " + JSON.stringify(isr.queryAllowlist) + " }, render) }" : ""}
|
|
2762
2785
|
})`;
|
|
2763
2786
|
const remoteEnvSwap = remotePath ? ` if (env.__VOID_REMOTE === "1") env = ${createRemoteEnvCall};\n` : "";
|
|
2764
2787
|
const scheduledHandler = `async function handleScheduled(controller, env, ctx) {
|
|
@@ -3296,7 +3319,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
|
|
|
3296
3319
|
const hasSqlMigrations = existsSync(migrationsDir);
|
|
3297
3320
|
if (!hasSqlMigrations && !auth?.enabled) return;
|
|
3298
3321
|
const migrateAuth = async (databaseUrl) => {
|
|
3299
|
-
const { runLocalVoidAuthMigrations } = await import("./node-
|
|
3322
|
+
const { runLocalVoidAuthMigrations } = await import("./node-CDOPrGSl.mjs");
|
|
3300
3323
|
await runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, auth?.configPath, databaseUrl, devAuthConfigImporter(server));
|
|
3301
3324
|
};
|
|
3302
3325
|
const mysqlAuth = dialect === "mysql" && auth?.enabled === true;
|
|
@@ -3581,19 +3604,20 @@ function createFrameworkPlugins(input) {
|
|
|
3581
3604
|
const syncFrameworkCompat = (compat) => {
|
|
3582
3605
|
if (ensureWranglerCompatibilityDate(root, compat.compatibilityDate)) voidLog("Synced compatibility_date to Cloudflare config");
|
|
3583
3606
|
};
|
|
3607
|
+
const ensureFrameworkCompat = () => ensureWranglerCompat(root, config, void 0, { rootWrangler: true });
|
|
3584
3608
|
const wranglerCompatPlugin = {
|
|
3585
3609
|
name: "void:wrangler-compat",
|
|
3586
3610
|
enforce: "pre",
|
|
3587
3611
|
config(_, env) {
|
|
3588
|
-
syncFrameworkCompat(
|
|
3612
|
+
syncFrameworkCompat(ensureFrameworkCompat());
|
|
3589
3613
|
if (env.command !== "serve") return;
|
|
3590
3614
|
if (ensureWranglerNodejsAlsFlag(root)) voidLog("Synced nodejs_als to Cloudflare config");
|
|
3591
3615
|
},
|
|
3592
3616
|
buildStart() {
|
|
3593
|
-
syncFrameworkCompat(
|
|
3617
|
+
syncFrameworkCompat(ensureFrameworkCompat());
|
|
3594
3618
|
},
|
|
3595
3619
|
configureServer() {
|
|
3596
|
-
syncFrameworkCompat(
|
|
3620
|
+
syncFrameworkCompat(ensureFrameworkCompat());
|
|
3597
3621
|
}
|
|
3598
3622
|
};
|
|
3599
3623
|
const syncFrameworkBindings = (command) => {
|
|
@@ -3808,6 +3832,7 @@ function honoMiddleware(getApp) {
|
|
|
3808
3832
|
response.headers.forEach((value, key) => {
|
|
3809
3833
|
res.setHeader(key, value);
|
|
3810
3834
|
});
|
|
3835
|
+
res.setHeader("set-cookie", response.headers.getSetCookie());
|
|
3811
3836
|
if (response.body) {
|
|
3812
3837
|
const reader = response.body.getReader();
|
|
3813
3838
|
while (true) {
|
|
@@ -4357,7 +4382,11 @@ function routingPlugin(root, options) {
|
|
|
4357
4382
|
"routes.d.ts",
|
|
4358
4383
|
"queues.d.ts",
|
|
4359
4384
|
...options.target ? ["app.ts", "index.ts"] : ["entry.ts"],
|
|
4360
|
-
...compileOptions.auth ? [
|
|
4385
|
+
...compileOptions.auth ? [
|
|
4386
|
+
"better-auth-db.ts",
|
|
4387
|
+
"better-auth-schema.ts",
|
|
4388
|
+
...compileOptions.auth.authConfigPath ? ["auth.d.ts"] : []
|
|
4389
|
+
] : []
|
|
4361
4390
|
];
|
|
4362
4391
|
const parts = [];
|
|
4363
4392
|
for (const file of files) {
|
|
@@ -4372,14 +4401,17 @@ function routingPlugin(root, options) {
|
|
|
4372
4401
|
if (authConfigStale && environment) environment.moduleGraph.invalidateAll();
|
|
4373
4402
|
authConfigStale = false;
|
|
4374
4403
|
try {
|
|
4375
|
-
return await loadVoidAuthConfig(configPath, environment
|
|
4404
|
+
return await loadVoidAuthConfig(configPath, environment ? (path) => environment.runner.import(path) : viteAuthConfigImporter(root, resolvedConfig?.mode, resolvedConfig?.resolve));
|
|
4376
4405
|
} catch (error) {
|
|
4377
4406
|
authConfigStale = true;
|
|
4378
4407
|
throw error;
|
|
4379
4408
|
}
|
|
4380
4409
|
}
|
|
4381
4410
|
async function writeAuthDatabaseFiles() {
|
|
4382
|
-
if (!compileOptions.auth)
|
|
4411
|
+
if (!compileOptions.auth) {
|
|
4412
|
+
if (removeAuthTypesIfPresent(outDir)) syncAuthTypesInProjectTsconfig(root);
|
|
4413
|
+
return;
|
|
4414
|
+
}
|
|
4383
4415
|
const { generateVoidAuthDatabaseModule, generateVoidAuthDrizzleSchema } = await import("./drizzle-9TubSZvI.mjs");
|
|
4384
4416
|
const authRuntime = {
|
|
4385
4417
|
dialect: compileOptions.auth.dialect,
|
|
@@ -4397,6 +4429,8 @@ function routingPlugin(root, options) {
|
|
|
4397
4429
|
schemaImportPath: authSchemaPath,
|
|
4398
4430
|
drizzleAdapterPath
|
|
4399
4431
|
}));
|
|
4432
|
+
syncAuthTypesFile(compileOptions.auth.authConfigPath, outDir);
|
|
4433
|
+
syncAuthTypesInProjectTsconfig(root);
|
|
4400
4434
|
}
|
|
4401
4435
|
let resolvedConfig = null;
|
|
4402
4436
|
let isrRevalidate;
|
|
@@ -4523,6 +4557,7 @@ function routingPlugin(root, options) {
|
|
|
4523
4557
|
const policy = resolveCurrentAssetRoutingPolicy();
|
|
4524
4558
|
writeFileIfChanged(join(outDir, "entry.ts"), compileWorkerEntry({
|
|
4525
4559
|
versionMetadataBinding: options.getVersionMetadataBinding?.(),
|
|
4560
|
+
alwaysUseHttps: options.routing?.alwaysUseHttps === true && resolvedConfig?.command === "build" && !compileOptions.managedDispatch,
|
|
4526
4561
|
hasQueues: scan.queues.length > 0,
|
|
4527
4562
|
remote,
|
|
4528
4563
|
assetsDir: resolvedConfig?.build.assetsDir,
|
|
@@ -5543,7 +5578,7 @@ function voidPlugin(options) {
|
|
|
5543
5578
|
dir: assetRoutingPublicDir,
|
|
5544
5579
|
routing: config.routing
|
|
5545
5580
|
});
|
|
5546
|
-
if (!managedCloudflareBuild && (rules.headerRules.length > 0 || rules.redirectRules.length > 0 || (rules.fallbackRules?.length ?? 0) > 0)) {
|
|
5581
|
+
if (!managedCloudflareBuild && (config.routing?.alwaysUseHttps === true || rules.headerRules.length > 0 || rules.redirectRules.length > 0 || (rules.fallbackRules?.length ?? 0) > 0)) {
|
|
5547
5582
|
policy.assetConfig.run_worker_first = ["/**"];
|
|
5548
5583
|
if (rules.fallbackRules?.length && policy.assetConfig.not_found_handling === "single-page-application") {
|
|
5549
5584
|
policy.assetConfig.not_found_handling = "none";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as join, s as relative } from "./dist-ipQi0Q8y.mjs";
|
|
2
2
|
import { a as deriveWebSocketClassNameFromName, o as inferWebSocketResourceName } from "./plugin-inference-CeiB6BG5.mjs";
|
|
3
|
-
import { p as readConfig } from "./config-
|
|
4
|
-
import { d as deriveDurableResourceIdentity, f as inferDurableResourceName, t as analyzeApplicationSync } from "./application-analysis-
|
|
5
|
-
import { n as VOID_LOCK_FILE } from "./cloudflare-config-
|
|
3
|
+
import { p as readConfig } from "./config-OFOAimzt.mjs";
|
|
4
|
+
import { d as deriveDurableResourceIdentity, f as inferDurableResourceName, t as analyzeApplicationSync } from "./application-analysis-DDOQwiXk.mjs";
|
|
5
|
+
import { n as VOID_LOCK_FILE } from "./cloudflare-config-CH1AylZT.mjs";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
import { isRecord } from "@void/deploy-core";
|
|
8
8
|
//#region src/cli/info.ts
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { a as join, c as resolve, i as isAbsolute, n as dirname, s as relative, t as basename } from "./dist-ipQi0Q8y.mjs";
|
|
2
2
|
import { r as detectFramework } from "./plugin-inference-CeiB6BG5.mjs";
|
|
3
3
|
import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-DGu_QZ_Q.mjs";
|
|
4
|
-
import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, s as databaseConfigValue } from "./config-
|
|
4
|
+
import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, s as databaseConfigValue } from "./config-OFOAimzt.mjs";
|
|
5
5
|
import { t as MagicString } from "./dist-Cegxq8gs.mjs";
|
|
6
6
|
import { c as writeDeploymentPlatform, n as readDeploymentPlatform, r as readProjectConfig, t as attachSelectedPlatform, u as writeProjectConfig } from "./project-rqDnVsJN.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import { M as writeProvisionedWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE } from "./wrangler-
|
|
7
|
+
import { i as materializeCloudflareConfig } from "./cloudflare-config-CH1AylZT.mjs";
|
|
8
|
+
import { F as canRewriteVoidProjectConfig, L as writeVoidProjectConfig, M as writeProvisionedWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE } from "./wrangler-I-scB_1t.mjs";
|
|
9
9
|
import { i as readPackageJson, n as hasPackageDependency } from "./package-json-BjYqR-So.mjs";
|
|
10
10
|
import { c as getToken } from "./auth-B6iOCjKI.mjs";
|
|
11
|
-
import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-
|
|
11
|
+
import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-CVvk6Z_e.mjs";
|
|
12
12
|
import { t as parseDotenvFile } from "./dotenv-CNazY3-w.mjs";
|
|
13
|
-
import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-
|
|
13
|
+
import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-tqMM6DwY.mjs";
|
|
14
14
|
import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-Cor9XGoz.mjs";
|
|
15
15
|
import { n as getOwnVersion, r as getPackageDir, t as detectAgents } from "./agents-CuNtT0D_.mjs";
|
|
16
|
-
import { r as PlatformClient } from "./client-
|
|
16
|
+
import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
|
|
17
17
|
import { l as formatUrl, m as printSuccess, p as note } from "./output-BpgYODYx.mjs";
|
|
18
|
-
import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-
|
|
18
|
+
import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-Bxd02EHN.mjs";
|
|
19
19
|
import { s as formatProjectCommand } from "./cloudflare-process-8jEYIeim.mjs";
|
|
20
20
|
import { i as hasLocalLockfile, n as drizzleKitBin, r as findInstalledYarnPnpRuntime, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DLbEFMT0.mjs";
|
|
21
|
-
import { t as promptForLoginToken } from "./login-
|
|
22
|
-
import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-
|
|
23
|
-
import { t as connectCloudflare } from "./cloudflare-connect-
|
|
21
|
+
import { t as promptForLoginToken } from "./login-PcFy5mlC.mjs";
|
|
22
|
+
import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-DZK2ixMl.mjs";
|
|
23
|
+
import { t as connectCloudflare } from "./cloudflare-connect-zTJh8UnN.mjs";
|
|
24
24
|
import { n as snapshotDrizzleOutputs } from "./generate-B1m4Cm4n.mjs";
|
|
25
|
-
import { i as
|
|
25
|
+
import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-B8S2xTcb.mjs";
|
|
26
26
|
import { createRequire } from "node:module";
|
|
27
27
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
28
28
|
import { parseSync } from "vite";
|
|
@@ -245,7 +245,7 @@ const SCAFFOLD_TOOLCHAIN_OPTIONS = [{
|
|
|
245
245
|
label: "Vite",
|
|
246
246
|
hint: "Uses plain Vite commands without Vite+."
|
|
247
247
|
}];
|
|
248
|
-
const REACT_SCAFFOLD_COMPILER_DEV_DEPENDENCIES = { "oxc-transform-react": "^0.
|
|
248
|
+
const REACT_SCAFFOLD_COMPILER_DEV_DEPENDENCIES = { "oxc-transform-react": "^0.152.0" };
|
|
249
249
|
const SCAFFOLD_FRAMEWORK_OPTIONS = [
|
|
250
250
|
{
|
|
251
251
|
value: "react",
|
|
@@ -2428,18 +2428,28 @@ export const posts = sqliteTable("posts", {
|
|
|
2428
2428
|
});
|
|
2429
2429
|
`;
|
|
2430
2430
|
}
|
|
2431
|
+
function demoFiles(root) {
|
|
2432
|
+
const paths = readProjectPaths(root);
|
|
2433
|
+
return {
|
|
2434
|
+
schema: paths.schemaFile,
|
|
2435
|
+
route: join(paths.routesDir, "api", "posts.ts"),
|
|
2436
|
+
client: join(paths.ssrDir, "demo.ts")
|
|
2437
|
+
};
|
|
2438
|
+
}
|
|
2431
2439
|
/**
|
|
2432
2440
|
* Scaffolds the "SQL → types → handler → fetch" demo into an existing project.
|
|
2433
2441
|
* `setupExistingProject` has already declared `void` in `package.json`.
|
|
2442
|
+
* The caller skips the demo when any of its files exists, so these writes never replace user code.
|
|
2434
2443
|
*/
|
|
2435
2444
|
function scaffoldDemo(root, dialect) {
|
|
2436
2445
|
const devCommand = getDevCommand(root);
|
|
2437
2446
|
const paths = readProjectPaths(root);
|
|
2447
|
+
const files = demoFiles(root);
|
|
2438
2448
|
mkdirSync(paths.dbDir, { recursive: true });
|
|
2439
|
-
writeFileSync(
|
|
2449
|
+
writeFileSync(files.schema, demoSchemaSource(dialect));
|
|
2440
2450
|
log.step("Created db/schema.ts");
|
|
2441
2451
|
mkdirSync(join(paths.routesDir, "api"), { recursive: true });
|
|
2442
|
-
writeFileSync(
|
|
2452
|
+
writeFileSync(files.route, `import { defineHandler } from "void";
|
|
2443
2453
|
import { db } from "void/db";
|
|
2444
2454
|
import { posts } from "@schema";
|
|
2445
2455
|
|
|
@@ -2451,7 +2461,7 @@ export const GET = defineHandler(async () => {
|
|
|
2451
2461
|
log.step("Created routes/api/posts.ts");
|
|
2452
2462
|
ensureProjectTsconfig(root, void 0, true, true, { paths });
|
|
2453
2463
|
mkdirSync(paths.ssrDir, { recursive: true });
|
|
2454
|
-
writeFileSync(
|
|
2464
|
+
writeFileSync(files.client, `import { fetch } from "void/client";
|
|
2455
2465
|
|
|
2456
2466
|
// Fully typed: response type is inferred from the GET handler's return type,
|
|
2457
2467
|
// which is derived from the migration schema. No manual types needed.
|
|
@@ -2589,8 +2599,13 @@ async function runInitCommand(root, initArgs) {
|
|
|
2589
2599
|
linkSkillsForSpecificAgents(root, agents);
|
|
2590
2600
|
} else log.info("Bundled Void docs: node_modules/void/docs/");
|
|
2591
2601
|
if (!targeted && !framework) {
|
|
2602
|
+
const existingDemoFiles = Object.values(demoFiles(root)).filter((file) => existsSync(file));
|
|
2592
2603
|
if (didScaffoldStarter || state.hasRoutes || state.hasMigrations || state.hasPages) log.info("Project already has pages, routes, or migrations, skipping demo");
|
|
2593
|
-
else
|
|
2604
|
+
else if (hasDrizzleSchema(root)) log.info("Project already has a database schema, skipping demo");
|
|
2605
|
+
else if (existingDemoFiles.length > 0) {
|
|
2606
|
+
const names = existingDemoFiles.map((file) => relative(root, file)).join(", ");
|
|
2607
|
+
log.info(`Project already has ${names}, skipping demo`);
|
|
2608
|
+
} else {
|
|
2594
2609
|
const scaffold = await confirm({ message: "Scaffold demo code? (migration + API route + frontend fetch)" });
|
|
2595
2610
|
if (isCancel(scaffold)) {
|
|
2596
2611
|
cancel("Setup cancelled.");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as readProjectConfig, t as attachSelectedPlatform, u as writeProjectConfig } from "./project-rqDnVsJN.mjs";
|
|
2
2
|
import { c as getToken, s as getSiteDomain } from "./auth-B6iOCjKI.mjs";
|
|
3
3
|
import { H as outro, L as log, O as cancel } from "./dist-Cor9XGoz.mjs";
|
|
4
|
-
import { r as PlatformClient } from "./client-
|
|
4
|
+
import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
|
|
5
5
|
import { f as import_picocolors, m as printSuccess } from "./output-BpgYODYx.mjs";
|
|
6
|
-
import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-
|
|
6
|
+
import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-Bxd02EHN.mjs";
|
|
7
7
|
import { a as resolveProjectBySlug } from "./resolve-project-Xoi6eTWY.mjs";
|
|
8
8
|
//#region src/cli/link.ts
|
|
9
9
|
function projectLabel(slug, root, url) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
|
|
2
2
|
import { c as getToken } from "./auth-B6iOCjKI.mjs";
|
|
3
3
|
import { H as outro, L as log } from "./dist-Cor9XGoz.mjs";
|
|
4
|
-
import { r as PlatformClient } from "./client-
|
|
4
|
+
import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
|
|
5
5
|
import { _ as tablePrefix, c as formatRelativeTime, f as import_picocolors, h as sanitizeTerminalText, i as dim, o as formatCount } from "./output-BpgYODYx.mjs";
|
|
6
6
|
import { a as resolveProjectBySlug } from "./resolve-project-Xoi6eTWY.mjs";
|
|
7
7
|
//#region src/cli/list.ts
|
|
@@ -42,7 +42,7 @@ async function runListCommand(root, slug) {
|
|
|
42
42
|
}
|
|
43
43
|
async function showCloudflareDeployments(root, slug) {
|
|
44
44
|
if (slug) throw new Error("project: A project name selects a Void platform project and is not used for direct Cloudflare apps.");
|
|
45
|
-
const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-
|
|
45
|
+
const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BtulCNOg.mjs");
|
|
46
46
|
const status = await readCloudflareWorkerStatus(resolveCloudflareOperationContext(root));
|
|
47
47
|
if (status.versions.length === 0) {
|
|
48
48
|
outro(`No deployments for ${status.workerName}.`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as AuthUser } from "./auth-
|
|
2
|
-
import { a as CloudEnv, r as CloudContext } from "./handler-
|
|
1
|
+
import { r as AuthUser } from "./auth-g2TQbDLD.mjs";
|
|
2
|
+
import { a as CloudEnv, r as CloudContext } from "./handler-BHktmuTL.mjs";
|
|
3
3
|
//#region src/runtime/live.d.ts
|
|
4
4
|
type MaybePromise<T> = T | Promise<T>;
|
|
5
5
|
type LiveControlRequest = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as join, c as resolve, i as isAbsolute } from "./dist-ipQi0Q8y.mjs";
|
|
2
|
-
import { b as readRootWranglerConfig } from "./wrangler-
|
|
2
|
+
import { b as readRootWranglerConfig } from "./wrangler-I-scB_1t.mjs";
|
|
3
3
|
import { r as getMiniflareDatabasePath } from "./runner-3uGC-oLF.mjs";
|
|
4
4
|
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { r as selectPlatformLoginMethod } from "./login-PcFy5mlC.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as getApiUrl, c as getToken, f as removeToken, l as getTokenSource, m as savePlatformToken, p as runPlatformLogin } from "./auth-B6iOCjKI.mjs";
|
|
2
2
|
import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-Cor9XGoz.mjs";
|
|
3
|
-
import { a as isExpiredTokenError, r as PlatformClient } from "./client-
|
|
3
|
+
import { a as isExpiredTokenError, r as PlatformClient } from "./client-B3LnB_bE.mjs";
|
|
4
4
|
import { f as import_picocolors, l as formatUrl, m as printSuccess, r as createSpinner } from "./output-BpgYODYx.mjs";
|
|
5
5
|
//#region src/cli/login.ts
|
|
6
6
|
async function selectPlatformLoginMethod(platform, requestedId) {
|
|
@@ -30,7 +30,7 @@ async function selectPlatformLoginMethod(platform, requestedId) {
|
|
|
30
30
|
}
|
|
31
31
|
async function promptForLoginToken(root = process.cwd(), platform) {
|
|
32
32
|
const apiUrl = platform?.apiUrl ?? getApiUrl(root);
|
|
33
|
-
const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-
|
|
33
|
+
const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-CV8NxIIn.mjs")).discoverPlatform(apiUrl));
|
|
34
34
|
const s = createSpinner();
|
|
35
35
|
s.start(`Opening browser for ${providerName} login...`);
|
|
36
36
|
try {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
|
|
2
2
|
import { c as getToken } from "./auth-B6iOCjKI.mjs";
|
|
3
3
|
import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-Cor9XGoz.mjs";
|
|
4
|
-
import { r as PlatformClient } from "./client-
|
|
4
|
+
import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
|
|
5
5
|
import { a as errorStackFrames, f as import_picocolors, i as dim, o as formatCount } from "./output-BpgYODYx.mjs";
|
|
6
6
|
import { t as sanitizeTerminalLogText } from "./terminal-log-text-D9ACPOuG.mjs";
|
|
7
7
|
//#region src/cli/logs.ts
|
|
@@ -9,7 +9,7 @@ async function runLogsCommand(root, filter, range, deployment, level) {
|
|
|
9
9
|
console.log();
|
|
10
10
|
const platform = readDeploymentPlatform(root);
|
|
11
11
|
if (platform === "cloudflare") {
|
|
12
|
-
const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-
|
|
12
|
+
const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-BtulCNOg.mjs");
|
|
13
13
|
if (range !== "1h") log.warn("Cloudflare tail streams live logs; --range does not select historical entries.");
|
|
14
14
|
if (level && level !== "all" && level !== "error") log.warn("Cloudflare tail cannot filter individual console levels; showing all invocation logs.");
|
|
15
15
|
await tailCloudflareWorker(resolveCloudflareOperationContext(root), {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
|
|
2
2
|
import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-DGu_QZ_Q.mjs";
|
|
3
|
-
import { h as validateConfig } from "./config-
|
|
3
|
+
import { h as validateConfig } from "./config-OFOAimzt.mjs";
|
|
4
4
|
import { t as parseJsoncObject } from "./generated-wrangler-config-DeWj5F9Y.mjs";
|
|
5
|
-
import { n as VOID_LOCK_FILE,
|
|
6
|
-
import "./wrangler-
|
|
5
|
+
import { c as stashCloudflareDeployPointer, n as VOID_LOCK_FILE, r as ignoreMaterializedCloudflareConfig, s as seedCloudflareConfig } from "./cloudflare-config-CH1AylZT.mjs";
|
|
6
|
+
import { I as renderVoidConfig, P as GENERATED_MARKERS } from "./wrangler-I-scB_1t.mjs";
|
|
7
7
|
import { L as log } from "./dist-Cor9XGoz.mjs";
|
|
8
8
|
import { m as printSuccess } from "./output-BpgYODYx.mjs";
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
|
|
@@ -198,61 +198,6 @@ function migrateFrameworkAdapterPaths(root) {
|
|
|
198
198
|
return applyFrameworkConfigMigration(root, planFrameworkConfigMigration(root));
|
|
199
199
|
}
|
|
200
200
|
//#endregion
|
|
201
|
-
//#region src/config-write.ts
|
|
202
|
-
const GENERATED_MARKERS = [
|
|
203
|
-
"// Generated by void migrate.",
|
|
204
|
-
"// Generated from void.json by void migrate.",
|
|
205
|
-
"// Generated by void init."
|
|
206
|
-
];
|
|
207
|
-
function renderVoidConfig(config, marker = GENERATED_MARKERS[0]) {
|
|
208
|
-
return `${marker}\nimport { defineConfig } from 'void/config';\n\nexport default defineConfig(${JSON.stringify(config, null, 2)});\n`;
|
|
209
|
-
}
|
|
210
|
-
function isStaticValue(node) {
|
|
211
|
-
if (!node) return false;
|
|
212
|
-
if (node.type === "Literal") return node.value === null || [
|
|
213
|
-
"string",
|
|
214
|
-
"number",
|
|
215
|
-
"boolean"
|
|
216
|
-
].includes(typeof node.value);
|
|
217
|
-
if (node.type === "UnaryExpression") return node.operator === "-" && node.argument?.type === "Literal" && typeof node.argument.value === "number";
|
|
218
|
-
if (node.type === "ArrayExpression") return node.elements?.every(isStaticValue) ?? false;
|
|
219
|
-
if (node.type !== "ObjectExpression") return false;
|
|
220
|
-
return node.properties?.every((property) => property.type === "Property" && property.kind === "init" && !property.computed && !property.method && (property.key?.type === "Identifier" || property.key?.type === "Literal") && isStaticValue(property.value)) ?? false;
|
|
221
|
-
}
|
|
222
|
-
function isGeneratedStaticConfig(source) {
|
|
223
|
-
if (!GENERATED_MARKERS.some((marker) => source.startsWith(marker))) return false;
|
|
224
|
-
let program;
|
|
225
|
-
try {
|
|
226
|
-
const parsed = parseSync(TYPED_CONFIG_FILE, source, {
|
|
227
|
-
lang: "js",
|
|
228
|
-
sourceType: "module",
|
|
229
|
-
preserveParens: false,
|
|
230
|
-
showSemanticErrors: true
|
|
231
|
-
});
|
|
232
|
-
if (parsed.errors.length > 0 || parsed.comments.length !== 1 || !GENERATED_MARKERS.includes(`// ${parsed.comments[0]?.value.trim()}`)) return false;
|
|
233
|
-
program = parsed.program;
|
|
234
|
-
} catch {
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
const [importDeclaration, exportDeclaration] = program.body ?? [];
|
|
238
|
-
const call = exportDeclaration?.declaration;
|
|
239
|
-
return program.body?.length === 2 && importDeclaration?.type === "ImportDeclaration" && importDeclaration.source?.value === "void/config" && importDeclaration.specifiers?.length === 1 && importDeclaration.specifiers[0]?.imported?.name === "defineConfig" && importDeclaration.specifiers[0]?.local?.name === "defineConfig" && exportDeclaration?.type === "ExportDefaultDeclaration" && call?.type === "CallExpression" && call.callee?.name === "defineConfig" && call.arguments?.length === 1 && isStaticValue(call.arguments[0]);
|
|
240
|
-
}
|
|
241
|
-
function canRewriteVoidProjectConfig(root) {
|
|
242
|
-
const path = join(root, TYPED_CONFIG_FILE);
|
|
243
|
-
return !existsSync(path) || isGeneratedStaticConfig(readFileSync(path, "utf8"));
|
|
244
|
-
}
|
|
245
|
-
/** Update CLI-owned static config without silently rewriting authored TypeScript. */
|
|
246
|
-
function writeVoidProjectConfig(root, config) {
|
|
247
|
-
validateConfig(config, TYPED_CONFIG_FILE);
|
|
248
|
-
const path = join(root, TYPED_CONFIG_FILE);
|
|
249
|
-
if (existsSync(path)) {
|
|
250
|
-
if (!isGeneratedStaticConfig(readFileSync(path, "utf8"))) throw new Error(`config: ${TYPED_CONFIG_FILE} contains authored TypeScript or comments. Update it directly and rerun the command.`);
|
|
251
|
-
validateConfig(loadTypedVoidConfigFile(path), TYPED_CONFIG_FILE);
|
|
252
|
-
}
|
|
253
|
-
writeFileSync(path, renderVoidConfig(config, "// Generated by void init."));
|
|
254
|
-
}
|
|
255
|
-
//#endregion
|
|
256
201
|
//#region src/cli/migrate.ts
|
|
257
202
|
const LEGACY_FILE = "void.json";
|
|
258
203
|
function parseWranglerJsonc(path, raw) {
|
|
@@ -291,12 +236,6 @@ function isOrphanedCompatibilityConfig(root, legacy, typed) {
|
|
|
291
236
|
return false;
|
|
292
237
|
}
|
|
293
238
|
}
|
|
294
|
-
function ignoreGeneratedCloudflareConfig(root) {
|
|
295
|
-
const path = join(root, ".gitignore");
|
|
296
|
-
const source = existsSync(path) ? readFileSync(path, "utf8") : "";
|
|
297
|
-
if (source.split(/\r?\n/).some((line) => /^\/?\.void-wrangler\.jsonc$/.test(line.trim()))) return;
|
|
298
|
-
writeFileSync(path, `${source}${source && !source.endsWith("\n") ? "\n" : ""}.void-wrangler.jsonc\n`);
|
|
299
|
-
}
|
|
300
239
|
/** Move Void and Cloudflare JSON/JSONC settings into a typed, checked-in project config. */
|
|
301
240
|
function migrateLegacyVoidConfig(root) {
|
|
302
241
|
const legacyPath = join(root, LEGACY_FILE);
|
|
@@ -353,7 +292,7 @@ function migrateLegacyVoidConfig(root) {
|
|
|
353
292
|
applyFrameworkConfigMigration(root, frameworkPatches);
|
|
354
293
|
if (raw !== void 0) unlinkSync(legacyPath);
|
|
355
294
|
if (wranglerName) unlinkSync(join(root, wranglerName));
|
|
356
|
-
|
|
295
|
+
ignoreMaterializedCloudflareConfig(root);
|
|
357
296
|
stashCloudflareDeployPointer(root);
|
|
358
297
|
return true;
|
|
359
298
|
} finally {
|
|
@@ -368,4 +307,4 @@ async function runMigrateCommand(root) {
|
|
|
368
307
|
} else log.info("No legacy project configuration found.");
|
|
369
308
|
}
|
|
370
309
|
//#endregion
|
|
371
|
-
export {
|
|
310
|
+
export { migrateFrameworkAdapterPaths as i, runMigrateCommand as n, discoverFrameworkWranglerFiles as r, migrateLegacyVoidConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { n as runMigrateCommand } from "./migrate-B8S2xTcb.mjs";
|
package/dist/nitro.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
|
|
2
|
-
import { l as getDatabaseDialect, p as readConfig } from "./config-
|
|
3
|
-
import { c as voidDbBundlerPlugin } from "./dispatch-
|
|
4
|
-
import { n as bundleWorkerSqlDriver } from "./wrapper-
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { l as getDatabaseDialect, p as readConfig } from "./config-OFOAimzt.mjs";
|
|
3
|
+
import { c as voidDbBundlerPlugin } from "./dispatch-CLa2LThw.mjs";
|
|
4
|
+
import { n as bundleWorkerSqlDriver } from "./wrapper-BBl1rC32.mjs";
|
|
6
5
|
import { normalizePath } from "vite";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
7
|
import { resolve } from "node:path/win32";
|
|
8
8
|
//#region src/nitro.ts
|
|
9
9
|
const envModuleFile = fileURLToPath(import.meta.resolve("#self/_env"));
|