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 CHANGED
@@ -34,7 +34,6 @@ const dev = defineCommand({
34
34
  {
35
35
  rootDir,
36
36
  dev: true,
37
- preset: "nitro-dev",
38
37
  _cli: { command: "dev" }
39
38
  },
40
39
  {
@@ -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
- overrides: {
733
- ...configOverrides,
734
- preset: presetOverride
729
+ defaults: NitroDefaults,
730
+ jitiOptions: {
731
+ alias: {
732
+ nitropack: "nitropack/config",
733
+ "nitropack/config": "nitropack/config"
734
+ }
735
735
  },
736
- async defaultConfig({ configs }) {
737
- const getConf = (key) => configOverrides[key] ?? configs.main?.[key] ?? configs.rc?.[key] ?? configs.packageJson?.[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 = configs.overrides?.framework || configs.main?.framework;
742
- return {
743
- typescript: {
744
- generateRuntimeConfigTypes: !framework?.name || framework.name === "nitro"
745
- },
746
- preset: presetOverride || (await resolvePreset("", {
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
- defaults: NitroDefaults,
753
- jitiOptions: {
754
- alias: {
755
- nitropack: "nitropack/config",
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 preset = await resolvePreset(id, {
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 (preset) {
775
+ if (preset2) {
765
776
  return {
766
- config: klona(preset)
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 || presetOverride;
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
 
@@ -1,5 +1,5 @@
1
1
  import { NitroPreset, NitroPresetMeta, Nitro } from 'nitropack/types';
2
- import { N as NitroModule } from '../shared/nitro.2TeRLAUU.mjs';
2
+ import { N as NitroModule } from '../shared/nitro.Befw1Azc.mjs';
3
3
  import 'consola';
4
4
  import 'h3';
5
5
  import 'hookable';
@@ -1,5 +1,5 @@
1
1
  import { NitroPreset, NitroPresetMeta, Nitro } from 'nitropack/types';
2
- import { N as NitroModule } from '../shared/nitro.2TeRLAUU.js';
2
+ import { N as NitroModule } from '../shared/nitro.Befw1Azc.js';
3
3
  import 'consola';
4
4
  import 'h3';
5
5
  import 'hookable';
@@ -1,4 +1,4 @@
1
- const version = "2.12.0-20250704-082153.07efb4e3";
1
+ const version = "2.12.0-20250714-151334.b56c4684";
2
2
 
3
3
  const compatibilityChanges = [
4
4
  {
@@ -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,2 @@
1
+ import type { Nitro } from "nitropack";
2
+ export declare function cloudflareDev(nitro: Nitro): Promise<void>;
@@ -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
+ }
@@ -1,3 +1,4 @@
1
1
  export type { CloudflareOptions as PresetOptions } from "./types";
2
+ export declare const cloudflareDev: any;
2
3
  declare const _default: any[];
3
4
  export default _default;
@@ -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,3 @@
1
+ import type { NitroAppPlugin } from "nitropack";
2
+ declare const _default: NitroAppPlugin;
3
+ export default _default;
@@ -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