nitropack-nightly 2.12.0-20250704-082153.07efb4e3 → 2.12.0-20250714-151334.b56c4684
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/dev.mjs +0 -1
- package/dist/core/index.mjs +42 -28
- package/dist/kit/index.d.mts +1 -1
- package/dist/kit/index.d.ts +1 -1
- package/dist/meta/index.mjs +1 -1
- package/dist/presets/_nitro/nitro-dev.mjs +2 -1
- package/dist/presets/_resolve.d.ts +2 -1
- package/dist/presets/_resolve.mjs +7 -1
- package/dist/presets/_types.gen.d.ts +2 -2
- package/dist/presets/cloudflare/dev.d.ts +2 -0
- package/dist/presets/cloudflare/dev.mjs +64 -0
- package/dist/presets/cloudflare/preset.d.ts +1 -0
- package/dist/presets/cloudflare/preset.mjs +17 -1
- package/dist/presets/cloudflare/runtime/plugin.dev.d.ts +3 -0
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +87 -0
- package/dist/presets/cloudflare/types.d.ts +8 -0
- package/dist/presets/cloudflare/wrangler/environment.d.ts +231 -107
- package/dist/presets/vercel/utils.mjs +87 -2
- package/dist/shared/{nitro.2TeRLAUU.d.mts → nitro.Befw1Azc.d.mts} +1 -0
- package/dist/shared/{nitro.2TeRLAUU.d.ts → nitro.Befw1Azc.d.ts} +1 -0
- package/dist/types/index.d.mts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/package.json +18 -17
package/dist/cli/dev.mjs
CHANGED
package/dist/core/index.mjs
CHANGED
|
@@ -716,54 +716,65 @@ async function loadOptions(configOverrides = {}, opts = {}) {
|
|
|
716
716
|
return options;
|
|
717
717
|
}
|
|
718
718
|
async function _loadUserConfig(configOverrides = {}, opts = {}) {
|
|
719
|
-
let presetOverride = configOverrides.preset || process.env.NITRO_PRESET || process.env.SERVER_PRESET;
|
|
720
|
-
if (configOverrides.dev) {
|
|
721
|
-
presetOverride = "nitro-dev";
|
|
722
|
-
}
|
|
723
719
|
configOverrides = klona(configOverrides);
|
|
724
720
|
globalThis.defineNitroConfig = globalThis.defineNitroConfig || ((c) => c);
|
|
725
721
|
let compatibilityDate = configOverrides.compatibilityDate || opts.compatibilityDate || (process.env.NITRO_COMPATIBILITY_DATE || process.env.SERVER_COMPATIBILITY_DATE || process.env.COMPATIBILITY_DATE);
|
|
726
722
|
const { resolvePreset } = await import('nitropack/presets');
|
|
723
|
+
let preset = configOverrides.preset || process.env.NITRO_PRESET || process.env.SERVER_PRESET;
|
|
727
724
|
const loadedConfig = await (opts.watch ? watchConfig : loadConfig)({
|
|
728
725
|
name: "nitro",
|
|
729
726
|
cwd: configOverrides.rootDir,
|
|
730
727
|
dotenv: opts.dotenv ?? configOverrides.dev,
|
|
731
728
|
extend: { extendKey: ["extends", "preset"] },
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
729
|
+
defaults: NitroDefaults,
|
|
730
|
+
jitiOptions: {
|
|
731
|
+
alias: {
|
|
732
|
+
nitropack: "nitropack/config",
|
|
733
|
+
"nitropack/config": "nitropack/config"
|
|
734
|
+
}
|
|
735
735
|
},
|
|
736
|
-
async
|
|
737
|
-
const getConf = (key) => configOverrides[key] ??
|
|
736
|
+
async overrides({ rawConfigs }) {
|
|
737
|
+
const getConf = (key) => configOverrides[key] ?? rawConfigs.main?.[key] ?? rawConfigs.rc?.[key] ?? rawConfigs.packageJson?.[key];
|
|
738
738
|
if (!compatibilityDate) {
|
|
739
739
|
compatibilityDate = getConf("compatibilityDate");
|
|
740
740
|
}
|
|
741
|
-
const framework =
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
741
|
+
const framework = getConf("framework");
|
|
742
|
+
const isCustomFramework = framework?.name && framework.name !== "nitro";
|
|
743
|
+
if (!preset) {
|
|
744
|
+
preset = getConf("preset");
|
|
745
|
+
}
|
|
746
|
+
if (configOverrides.dev) {
|
|
747
|
+
preset = preset && preset !== "nitro-dev" ? await resolvePreset(preset, {
|
|
747
748
|
static: getConf("static"),
|
|
749
|
+
dev: true,
|
|
748
750
|
compatibilityDate: compatibilityDate || fallbackCompatibilityDate
|
|
749
|
-
}))?._meta?.name
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
"nitropack/config": "nitropack/config"
|
|
751
|
+
}).then((p) => p?._meta?.name).catch(() => "nitro-dev") : "nitro-dev";
|
|
752
|
+
} else if (!preset) {
|
|
753
|
+
preset = await resolvePreset("", {
|
|
754
|
+
static: getConf("static"),
|
|
755
|
+
dev: false,
|
|
756
|
+
compatibilityDate: compatibilityDate || fallbackCompatibilityDate
|
|
757
|
+
}).then((p) => p?._meta?.name);
|
|
757
758
|
}
|
|
759
|
+
return {
|
|
760
|
+
...configOverrides,
|
|
761
|
+
preset,
|
|
762
|
+
typescript: {
|
|
763
|
+
generateRuntimeConfigTypes: !isCustomFramework,
|
|
764
|
+
...getConf("typescript"),
|
|
765
|
+
...configOverrides.typescript
|
|
766
|
+
}
|
|
767
|
+
};
|
|
758
768
|
},
|
|
759
769
|
async resolve(id) {
|
|
760
|
-
const
|
|
770
|
+
const preset2 = await resolvePreset(id, {
|
|
761
771
|
static: configOverrides.static,
|
|
762
|
-
compatibilityDate: compatibilityDate || fallbackCompatibilityDate
|
|
772
|
+
compatibilityDate: compatibilityDate || fallbackCompatibilityDate,
|
|
773
|
+
dev: configOverrides.dev
|
|
763
774
|
});
|
|
764
|
-
if (
|
|
775
|
+
if (preset2) {
|
|
765
776
|
return {
|
|
766
|
-
config: klona(
|
|
777
|
+
config: klona(preset2)
|
|
767
778
|
};
|
|
768
779
|
}
|
|
769
780
|
},
|
|
@@ -772,12 +783,15 @@ async function _loadUserConfig(configOverrides = {}, opts = {}) {
|
|
|
772
783
|
const options = klona(loadedConfig.config);
|
|
773
784
|
options._config = configOverrides;
|
|
774
785
|
options._c12 = loadedConfig;
|
|
775
|
-
const _presetName = (loadedConfig.layers || []).find((l) => l.config?._meta?.name)?.config?._meta?.name ||
|
|
786
|
+
const _presetName = (loadedConfig.layers || []).find((l) => l.config?._meta?.name)?.config?._meta?.name || preset;
|
|
776
787
|
options.preset = _presetName;
|
|
777
788
|
options.compatibilityDate = resolveCompatibilityDates(
|
|
778
789
|
compatibilityDate,
|
|
779
790
|
options.compatibilityDate
|
|
780
791
|
);
|
|
792
|
+
if (options.dev && options.preset !== "nitro-dev") {
|
|
793
|
+
consola.info(`Using \`${options.preset}\` emulation in development mode.`);
|
|
794
|
+
}
|
|
781
795
|
return options;
|
|
782
796
|
}
|
|
783
797
|
|
package/dist/kit/index.d.mts
CHANGED
package/dist/kit/index.d.ts
CHANGED
package/dist/meta/index.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { defineNitroPreset } from "nitropack/kit";
|
|
2
2
|
const nitroDev = defineNitroPreset(
|
|
3
3
|
{
|
|
4
|
-
extends: "node",
|
|
5
4
|
entry: "./runtime/nitro-dev",
|
|
6
5
|
output: {
|
|
7
6
|
dir: "{{ buildDir }}/dev",
|
|
@@ -9,12 +8,14 @@ const nitroDev = defineNitroPreset(
|
|
|
9
8
|
publicDir: "{{ buildDir }}/dev"
|
|
10
9
|
},
|
|
11
10
|
externals: { trace: false },
|
|
11
|
+
serveStatic: true,
|
|
12
12
|
inlineDynamicImports: true,
|
|
13
13
|
// externals plugin limitation
|
|
14
14
|
sourceMap: true
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
name: "nitro-dev",
|
|
18
|
+
dev: true,
|
|
18
19
|
url: import.meta.url
|
|
19
20
|
}
|
|
20
21
|
);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type CompatibilityDateSpec } from "compatx";
|
|
2
2
|
import type { NitroPreset, NitroPresetMeta } from "nitropack/types";
|
|
3
|
-
export declare function resolvePreset(name: string, opts
|
|
3
|
+
export declare function resolvePreset(name: string, opts?: {
|
|
4
4
|
static?: boolean;
|
|
5
5
|
compatibilityDate?: false | CompatibilityDateSpec;
|
|
6
|
+
dev?: boolean;
|
|
6
7
|
}): Promise<(NitroPreset & {
|
|
7
8
|
_meta?: NitroPresetMeta;
|
|
8
9
|
}) | undefined>;
|
|
@@ -10,7 +10,10 @@ const _stdProviderMap = {
|
|
|
10
10
|
azure_static: "azure",
|
|
11
11
|
cloudflare_pages: "cloudflare"
|
|
12
12
|
};
|
|
13
|
-
export async function resolvePreset(name, opts) {
|
|
13
|
+
export async function resolvePreset(name, opts = {}) {
|
|
14
|
+
if (name === ".") {
|
|
15
|
+
return void 0;
|
|
16
|
+
}
|
|
14
17
|
const _name = kebabCase(name) || provider;
|
|
15
18
|
const _compatDates = opts.compatibilityDate ? resolveCompatibilityDatesFromEnv(opts.compatibilityDate) : false;
|
|
16
19
|
const matches = allPresets.filter((preset2) => {
|
|
@@ -18,6 +21,9 @@ export async function resolvePreset(name, opts) {
|
|
|
18
21
|
if (!names.includes(_name)) {
|
|
19
22
|
return false;
|
|
20
23
|
}
|
|
24
|
+
if (opts.dev && !preset2._meta.dev || !opts.dev && preset2._meta.dev) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
21
27
|
if (_compatDates) {
|
|
22
28
|
const _date = _compatDates[_stdProviderMap[preset2._meta.stdName]] || _compatDates[preset2._meta.stdName] || _compatDates[preset2._meta.name] || _compatDates.default;
|
|
23
29
|
if (_date && preset2._meta.compatibilityDate && new Date(preset2._meta.compatibilityDate) > new Date(_date)) {
|
|
@@ -15,5 +15,5 @@ export interface PresetOptions {
|
|
|
15
15
|
vercel: VercelOptions;
|
|
16
16
|
}
|
|
17
17
|
export declare const presetsWithConfig: readonly ["awsAmplify", "awsLambda", "azure", "cloudflare", "firebase", "netlify", "vercel"];
|
|
18
|
-
export type PresetName = "alwaysdata" | "aws-amplify" | "aws-lambda" | "azure" | "azure-functions" | "azure-swa" | "base-worker" | "bun" | "cleavr" | "cli" | "cloudflare" | "cloudflare-durable" | "cloudflare-module" | "cloudflare-module-legacy" | "cloudflare-pages" | "cloudflare-pages-static" | "cloudflare-worker" | "deno" | "deno-deploy" | "deno-server" | "deno-server-legacy" | "digital-ocean" | "edgio" | "firebase" | "firebase-app-hosting" | "flight-control" | "genezio" | "github-pages" | "gitlab-pages" | "heroku" | "iis" | "iis-handler" | "iis-node" | "koyeb" | "layer0" | "netlify" | "netlify-builder" | "netlify-edge" | "netlify-legacy" | "netlify-static" | "nitro-dev" | "nitro-prerender" | "node" | "node-cluster" | "node-listener" | "node-server" | "platform-sh" | "render-com" | "service-worker" | "static" | "stormkit" | "vercel" | "vercel-edge" | "vercel-static" | "winterjs" | "zeabur" | "zeabur-static" | "zerops" | "zerops-static";
|
|
19
|
-
export type PresetNameInput = "alwaysdata" | "aws-amplify" | "awsAmplify" | "aws_amplify" | "aws-lambda" | "awsLambda" | "aws_lambda" | "azure" | "azure-functions" | "azureFunctions" | "azure_functions" | "azure-swa" | "azureSwa" | "azure_swa" | "base-worker" | "baseWorker" | "base_worker" | "bun" | "cleavr" | "cli" | "cloudflare" | "cloudflare-durable" | "cloudflareDurable" | "cloudflare_durable" | "cloudflare-module" | "cloudflareModule" | "cloudflare_module" | "cloudflare-module-legacy" | "cloudflareModuleLegacy" | "cloudflare_module_legacy" | "cloudflare-pages" | "cloudflarePages" | "cloudflare_pages" | "cloudflare-pages-static" | "cloudflarePagesStatic" | "cloudflare_pages_static" | "cloudflare-worker" | "cloudflareWorker" | "cloudflare_worker" | "deno" | "deno-deploy" | "denoDeploy" | "deno_deploy" | "deno-server" | "denoServer" | "deno_server" | "deno-server-legacy" | "denoServerLegacy" | "deno_server_legacy" | "digital-ocean" | "digitalOcean" | "digital_ocean" | "edgio" | "firebase" | "firebase-app-hosting" | "firebaseAppHosting" | "firebase_app_hosting" | "flight-control" | "flightControl" | "flight_control" | "genezio" | "github-pages" | "githubPages" | "github_pages" | "gitlab-pages" | "gitlabPages" | "gitlab_pages" | "heroku" | "iis" | "iis-handler" | "iisHandler" | "iis_handler" | "iis-node" | "iisNode" | "iis_node" | "koyeb" | "layer0" | "netlify" | "netlify-builder" | "netlifyBuilder" | "netlify_builder" | "netlify-edge" | "netlifyEdge" | "netlify_edge" | "netlify-legacy" | "netlifyLegacy" | "netlify_legacy" | "netlify-static" | "netlifyStatic" | "netlify_static" | "nitro-dev" | "nitroDev" | "nitro_dev" | "nitro-prerender" | "nitroPrerender" | "nitro_prerender" | "node" | "node-cluster" | "nodeCluster" | "node_cluster" | "node-listener" | "nodeListener" | "node_listener" | "node-server" | "nodeServer" | "node_server" | "platform-sh" | "platformSh" | "platform_sh" | "render-com" | "renderCom" | "render_com" | "service-worker" | "serviceWorker" | "service_worker" | "static" | "stormkit" | "vercel" | "vercel-edge" | "vercelEdge" | "vercel_edge" | "vercel-static" | "vercelStatic" | "vercel_static" | "winterjs" | "zeabur" | "zeabur-static" | "zeaburStatic" | "zeabur_static" | "zerops" | "zerops-static" | "zeropsStatic" | "zerops_static" | (string & {});
|
|
18
|
+
export type PresetName = "alwaysdata" | "aws-amplify" | "aws-lambda" | "azure" | "azure-functions" | "azure-swa" | "base-worker" | "bun" | "cleavr" | "cli" | "cloudflare" | "cloudflare-dev" | "cloudflare-durable" | "cloudflare-module" | "cloudflare-module-legacy" | "cloudflare-pages" | "cloudflare-pages-static" | "cloudflare-worker" | "deno" | "deno-deploy" | "deno-server" | "deno-server-legacy" | "digital-ocean" | "edgio" | "firebase" | "firebase-app-hosting" | "flight-control" | "genezio" | "github-pages" | "gitlab-pages" | "heroku" | "iis" | "iis-handler" | "iis-node" | "koyeb" | "layer0" | "netlify" | "netlify-builder" | "netlify-edge" | "netlify-legacy" | "netlify-static" | "nitro-dev" | "nitro-prerender" | "node" | "node-cluster" | "node-listener" | "node-server" | "platform-sh" | "render-com" | "service-worker" | "static" | "stormkit" | "vercel" | "vercel-edge" | "vercel-static" | "winterjs" | "zeabur" | "zeabur-static" | "zerops" | "zerops-static";
|
|
19
|
+
export type PresetNameInput = "alwaysdata" | "aws-amplify" | "awsAmplify" | "aws_amplify" | "aws-lambda" | "awsLambda" | "aws_lambda" | "azure" | "azure-functions" | "azureFunctions" | "azure_functions" | "azure-swa" | "azureSwa" | "azure_swa" | "base-worker" | "baseWorker" | "base_worker" | "bun" | "cleavr" | "cli" | "cloudflare" | "cloudflare-dev" | "cloudflareDev" | "cloudflare_dev" | "cloudflare-durable" | "cloudflareDurable" | "cloudflare_durable" | "cloudflare-module" | "cloudflareModule" | "cloudflare_module" | "cloudflare-module-legacy" | "cloudflareModuleLegacy" | "cloudflare_module_legacy" | "cloudflare-pages" | "cloudflarePages" | "cloudflare_pages" | "cloudflare-pages-static" | "cloudflarePagesStatic" | "cloudflare_pages_static" | "cloudflare-worker" | "cloudflareWorker" | "cloudflare_worker" | "deno" | "deno-deploy" | "denoDeploy" | "deno_deploy" | "deno-server" | "denoServer" | "deno_server" | "deno-server-legacy" | "denoServerLegacy" | "deno_server_legacy" | "digital-ocean" | "digitalOcean" | "digital_ocean" | "edgio" | "firebase" | "firebase-app-hosting" | "firebaseAppHosting" | "firebase_app_hosting" | "flight-control" | "flightControl" | "flight_control" | "genezio" | "github-pages" | "githubPages" | "github_pages" | "gitlab-pages" | "gitlabPages" | "gitlab_pages" | "heroku" | "iis" | "iis-handler" | "iisHandler" | "iis_handler" | "iis-node" | "iisNode" | "iis_node" | "koyeb" | "layer0" | "netlify" | "netlify-builder" | "netlifyBuilder" | "netlify_builder" | "netlify-edge" | "netlifyEdge" | "netlify_edge" | "netlify-legacy" | "netlifyLegacy" | "netlify_legacy" | "netlify-static" | "netlifyStatic" | "netlify_static" | "nitro-dev" | "nitroDev" | "nitro_dev" | "nitro-prerender" | "nitroPrerender" | "nitro_prerender" | "node" | "node-cluster" | "nodeCluster" | "node_cluster" | "node-listener" | "nodeListener" | "node_listener" | "node-server" | "nodeServer" | "node_server" | "platform-sh" | "platformSh" | "platform_sh" | "render-com" | "renderCom" | "render_com" | "service-worker" | "serviceWorker" | "service_worker" | "static" | "stormkit" | "vercel" | "vercel-edge" | "vercelEdge" | "vercel_edge" | "vercel-static" | "vercelStatic" | "vercel_static" | "winterjs" | "zeabur" | "zeabur-static" | "zeaburStatic" | "zeabur_static" | "zerops" | "zerops-static" | "zeropsStatic" | "zerops_static" | (string & {});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { promises as fs } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "mlly";
|
|
4
|
+
import { findFile } from "pkg-types";
|
|
5
|
+
import { resolveModulePath } from "exsolve";
|
|
6
|
+
export async function cloudflareDev(nitro) {
|
|
7
|
+
if (!nitro.options.dev) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const wranglerPath = await resolveModulePath("wrangler", {
|
|
11
|
+
from: nitro.options.nodeModulesDirs,
|
|
12
|
+
try: true
|
|
13
|
+
});
|
|
14
|
+
if (!wranglerPath) {
|
|
15
|
+
nitro.logger.warn(
|
|
16
|
+
"Wrangler is not installed. Please install it using `npx nypm i wrangler` to enable dev emulation."
|
|
17
|
+
);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const config = {
|
|
21
|
+
// compatibility with legacy nitro-cloudflare-dev module
|
|
22
|
+
...nitro.options.cloudflareDev,
|
|
23
|
+
...nitro.options.cloudflare?.dev
|
|
24
|
+
};
|
|
25
|
+
let configPath = config.configPath;
|
|
26
|
+
if (!configPath) {
|
|
27
|
+
configPath = await findFile(
|
|
28
|
+
["wrangler.json", "wrangler.jsonc", "wrangler.toml"],
|
|
29
|
+
{
|
|
30
|
+
startingFrom: nitro.options.srcDir
|
|
31
|
+
}
|
|
32
|
+
).catch(() => void 0);
|
|
33
|
+
}
|
|
34
|
+
const persistDir = resolve(
|
|
35
|
+
nitro.options.rootDir,
|
|
36
|
+
config.persistDir || ".wrangler/state/v3"
|
|
37
|
+
);
|
|
38
|
+
const gitIgnorePath = await findFile(".gitignore", {
|
|
39
|
+
startingFrom: nitro.options.rootDir
|
|
40
|
+
}).catch(() => void 0);
|
|
41
|
+
let addedToGitIgnore = false;
|
|
42
|
+
if (gitIgnorePath && persistDir === ".wrangler/state/v3") {
|
|
43
|
+
const gitIgnore = await fs.readFile(gitIgnorePath, "utf8");
|
|
44
|
+
if (!gitIgnore.includes(".wrangler/state/v3")) {
|
|
45
|
+
await fs.writeFile(gitIgnorePath, gitIgnore + "\n.wrangler/state/v3\n").catch(() => {
|
|
46
|
+
});
|
|
47
|
+
addedToGitIgnore = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
nitro.options.runtimeConfig.wrangler = {
|
|
51
|
+
...nitro.options.runtimeConfig.wrangler,
|
|
52
|
+
configPath,
|
|
53
|
+
persistDir,
|
|
54
|
+
environment: config.environment
|
|
55
|
+
};
|
|
56
|
+
nitro.options.externals.inline = nitro.options.externals.inline || [];
|
|
57
|
+
nitro.options.externals.inline.push(
|
|
58
|
+
fileURLToPath(new URL("runtime/", import.meta.url))
|
|
59
|
+
);
|
|
60
|
+
nitro.options.plugins = nitro.options.plugins || [];
|
|
61
|
+
nitro.options.plugins.push(
|
|
62
|
+
fileURLToPath(new URL("runtime/plugin.dev", import.meta.url))
|
|
63
|
+
);
|
|
64
|
+
}
|
|
@@ -84,6 +84,21 @@ const cloudflarePagesStatic = defineNitroPreset(
|
|
|
84
84
|
static: true
|
|
85
85
|
}
|
|
86
86
|
);
|
|
87
|
+
export const cloudflareDev = defineNitroPreset(
|
|
88
|
+
{
|
|
89
|
+
extends: "nitro-dev",
|
|
90
|
+
modules: [
|
|
91
|
+
async (nitro) => await import("./dev.mjs").then((m) => m.cloudflareDev(nitro))
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: "cloudflare-dev",
|
|
96
|
+
aliases: ["cloudflare-module", "cloudflare-durable", "cloudflare-pages"],
|
|
97
|
+
compatibilityDate: "2025-07-13",
|
|
98
|
+
url: import.meta.url,
|
|
99
|
+
dev: true
|
|
100
|
+
}
|
|
101
|
+
);
|
|
87
102
|
const cloudflareModule = defineNitroPreset(
|
|
88
103
|
{
|
|
89
104
|
extends: "base-worker",
|
|
@@ -149,5 +164,6 @@ export default [
|
|
|
149
164
|
cloudflarePages,
|
|
150
165
|
cloudflarePagesStatic,
|
|
151
166
|
cloudflareModule,
|
|
152
|
-
cloudflareDurable
|
|
167
|
+
cloudflareDurable,
|
|
168
|
+
cloudflareDev
|
|
153
169
|
];
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { useRuntimeConfig, getRequestURL } from "#imports";
|
|
2
|
+
const _proxy = _getPlatformProxy().catch((error) => {
|
|
3
|
+
console.error("Failed to initialize wrangler bindings proxy", error);
|
|
4
|
+
return _createStubProxy();
|
|
5
|
+
}).then((proxy) => {
|
|
6
|
+
globalThis.__env__ = proxy.env;
|
|
7
|
+
return proxy;
|
|
8
|
+
});
|
|
9
|
+
globalThis.__env__ = _proxy.then((proxy) => proxy.env);
|
|
10
|
+
export default (function(nitroApp) {
|
|
11
|
+
nitroApp.hooks.hook("request", async (event) => {
|
|
12
|
+
const proxy = await _proxy;
|
|
13
|
+
event.context.cf = proxy.cf;
|
|
14
|
+
event.context.waitUntil = proxy.ctx.waitUntil.bind(proxy.ctx);
|
|
15
|
+
const request = new Request(getRequestURL(event));
|
|
16
|
+
request.cf = proxy.cf;
|
|
17
|
+
event.context.cloudflare = {
|
|
18
|
+
...event.context.cloudflare,
|
|
19
|
+
request,
|
|
20
|
+
env: proxy.env,
|
|
21
|
+
context: proxy.ctx
|
|
22
|
+
};
|
|
23
|
+
event.node.req.__unenv__ = {
|
|
24
|
+
...event.node.req.__unenv__,
|
|
25
|
+
waitUntil: event.context.waitUntil
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
nitroApp.hooks._hooks.request.unshift(nitroApp.hooks._hooks.request.pop());
|
|
29
|
+
nitroApp.hooks.hook("close", () => {
|
|
30
|
+
return _proxy?.then((proxy) => proxy.dispose);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
async function _getPlatformProxy() {
|
|
34
|
+
const _pkg = "wrangler";
|
|
35
|
+
const { getPlatformProxy } = await import(_pkg).catch(() => {
|
|
36
|
+
throw new Error(
|
|
37
|
+
"Package `wrangler` not found, please install it with: `npx nypm@latest add -D wrangler`"
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
const runtimeConfig = useRuntimeConfig();
|
|
41
|
+
const proxyOptions = {
|
|
42
|
+
configPath: runtimeConfig.wrangler.configPath,
|
|
43
|
+
persist: { path: runtimeConfig.wrangler.persistDir }
|
|
44
|
+
};
|
|
45
|
+
if (runtimeConfig.wrangler.environment) {
|
|
46
|
+
proxyOptions.environment = runtimeConfig.wrangler.environment;
|
|
47
|
+
}
|
|
48
|
+
const proxy = await getPlatformProxy(proxyOptions);
|
|
49
|
+
return proxy;
|
|
50
|
+
}
|
|
51
|
+
function _createStubProxy() {
|
|
52
|
+
return {
|
|
53
|
+
env: {},
|
|
54
|
+
cf: {},
|
|
55
|
+
ctx: {
|
|
56
|
+
waitUntil() {
|
|
57
|
+
},
|
|
58
|
+
passThroughOnException() {
|
|
59
|
+
},
|
|
60
|
+
props: {}
|
|
61
|
+
},
|
|
62
|
+
caches: {
|
|
63
|
+
open() {
|
|
64
|
+
const result = Promise.resolve(new _CacheStub());
|
|
65
|
+
return result;
|
|
66
|
+
},
|
|
67
|
+
get default() {
|
|
68
|
+
return new _CacheStub();
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
dispose: () => Promise.resolve()
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
class _CacheStub {
|
|
75
|
+
delete() {
|
|
76
|
+
const result = Promise.resolve(false);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
match() {
|
|
80
|
+
const result = Promise.resolve(void 0);
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
put() {
|
|
84
|
+
const result = Promise.resolve();
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -36,6 +36,14 @@ export interface CloudflareOptions {
|
|
|
36
36
|
* If not set, will be auto enabled if `nodejs_compat` or `nodejs_compat_v2` is detected in `wrangler.toml` or `wrangler.json`.
|
|
37
37
|
*/
|
|
38
38
|
nodeCompat?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Options for dev emulation.
|
|
41
|
+
*/
|
|
42
|
+
dev?: {
|
|
43
|
+
configPath?: string;
|
|
44
|
+
environment?: string;
|
|
45
|
+
persistDir?: string;
|
|
46
|
+
};
|
|
39
47
|
pages?: {
|
|
40
48
|
/**
|
|
41
49
|
* Nitro will automatically generate a `_routes.json` that controls which files get served statically and
|