nitro-nightly 3.0.1-20251218-123719-7f42bc15 → 3.0.1-20251218-210030-3992c731

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.
@@ -39,7 +39,6 @@ const getRolldownConfig = (nitro) => {
39
39
  resolve: {
40
40
  alias: base.aliases,
41
41
  extensions: base.extensions,
42
- mainFields: ["main"],
43
42
  conditionNames: nitro.options.exportConditions
44
43
  },
45
44
  transform: {
@@ -83,7 +83,6 @@ const getRollupConfig = (nitro) => {
83
83
  extensions: base.extensions,
84
84
  preferBuiltins: !!nitro.options.node,
85
85
  rootDir: nitro.options.rootDir,
86
- mainFields: ["main"],
87
86
  exportConditions: nitro.options.exportConditions
88
87
  }),
89
88
  commonjs({ ...nitro.options.commonJS }),
@@ -320,7 +320,7 @@ function createNitroEnvironment(ctx) {
320
320
  ...ctx.rollupConfig.base.noExternal
321
321
  ] : true,
322
322
  conditions: ctx.nitro.options.exportConditions,
323
- externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm/.test(c))
323
+ externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
324
324
  },
325
325
  define: { "process.env.NODE_ENV": JSON.stringify(ctx.nitro.options.dev ? "development" : "production") },
326
326
  dev: { createEnvironment: (envName, envConfig) => createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), resolve(runtimeDir, "internal/vite/dev-entry.mjs")) }
@@ -338,7 +338,7 @@ function createServiceEnvironment(ctx, name, serviceConfig) {
338
338
  },
339
339
  resolve: {
340
340
  conditions: ctx.nitro.options.exportConditions,
341
- externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm/.test(c))
341
+ externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
342
342
  },
343
343
  dev: { createEnvironment: (envName, envConfig) => createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), tryResolve(serviceConfig.entry)) }
344
344
  };
package/dist/_dev.mjs CHANGED
@@ -588,9 +588,10 @@ var NitroDevServer = class NitroDevServer extends NitroDevApp {
588
588
  this.#building = false;
589
589
  for (const worker of this.#workers) worker.close();
590
590
  });
591
- if (nitro.options.devServer.watch.length > 0) {
591
+ const devWatch = nitro.options.devServer.watch;
592
+ if (devWatch && devWatch.length > 0) {
592
593
  const debouncedReload = debounce(() => this.reload());
593
- this.#watcher = watch$1(nitro.options.devServer.watch, nitro.options.watchOptions);
594
+ this.#watcher = watch$1(devWatch, nitro.options.watchOptions);
594
595
  this.#watcher.on("add", debouncedReload).on("change", debouncedReload);
595
596
  }
596
597
  }
package/dist/_nitro.mjs CHANGED
@@ -143,6 +143,7 @@ async function resolveCompatibilityOptions(options) {
143
143
  //#region src/config/resolvers/database.ts
144
144
  async function resolveDatabaseOptions(options) {
145
145
  if (options.experimental.database && options.imports) {
146
+ options.imports.presets ??= [];
146
147
  options.imports.presets.push({
147
148
  from: "nitro/database",
148
149
  imports: ["useDatabase"]
@@ -174,7 +175,7 @@ function _resolveExportConditions(conditions, opts) {
174
175
  if (opts.node) resolvedConditions.push("node");
175
176
  else resolvedConditions.push("wintercg", "worker", "web", "browser", "workerd", "edge-light", "netlify", "edge-routine", "deno");
176
177
  if (opts.wasm) resolvedConditions.push("wasm", "unwasm");
177
- resolvedConditions.push("import", "default");
178
+ resolvedConditions.push("import", "default", "module");
178
179
  if ("Bun" in globalThis) resolvedConditions.push("bun");
179
180
  else if ("Deno" in globalThis) resolvedConditions.push("deno");
180
181
  return resolvedConditions.filter((c, i) => resolvedConditions.indexOf(c) === i);
@@ -433,6 +434,7 @@ function normalizeRuntimeConfig(config) {
433
434
  openAPI: config.openAPI
434
435
  }
435
436
  });
437
+ runtimeConfig.nitro ??= {};
436
438
  runtimeConfig.nitro.routeRules = config.routeRules;
437
439
  checkSerializableRuntimeConfig(runtimeConfig);
438
440
  return runtimeConfig;
@@ -1183,7 +1185,9 @@ async function prerender(nitro) {
1183
1185
  const scannedPublicAssets = nitro.options.prerender.ignoreUnprefixedPublicAssets ? new Set(await scanUnprefixedPublicAssets(nitro)) : /* @__PURE__ */ new Set();
1184
1186
  const canPrerender = (route = "/") => {
1185
1187
  if (generatedRoutes.has(route) || skippedRoutes.has(route)) return false;
1186
- for (const pattern of nitro.options.prerender.ignore) if (matchesIgnorePattern(route, pattern)) return false;
1188
+ if (nitro.options.prerender.ignore) {
1189
+ for (const pattern of nitro.options.prerender.ignore) if (matchesIgnorePattern(route, pattern)) return false;
1190
+ }
1187
1191
  if (publicAssetBases.some((base) => route.startsWith(base))) return false;
1188
1192
  if (scannedPublicAssets.has(route)) return false;
1189
1193
  if (_getRouteRules(route).prerender === false) return false;
@@ -1270,7 +1274,7 @@ async function prerender(nitro) {
1270
1274
  nitro._prerenderedRoutes.push(_route);
1271
1275
  } else _route.skip = true;
1272
1276
  if (!_route.error && (isImplicitHTML || route.endsWith(".html"))) {
1273
- const extractedLinks = await extractLinks(dataBuff.toString("utf8"), route, res, nitro.options.prerender.crawlLinks);
1277
+ const extractedLinks = await extractLinks(dataBuff.toString("utf8"), route, res, nitro.options.prerender.crawlLinks ?? false);
1274
1278
  for (const _link of extractedLinks) if (canPrerender(_link)) routes.add(_link);
1275
1279
  }
1276
1280
  await nitro.hooks.callHook("prerender:route", _route);
@@ -1280,7 +1284,7 @@ async function prerender(nitro) {
1280
1284
  };
1281
1285
  nitro.logger.info(nitro.options.prerender.crawlLinks ? `Prerendering ${routes.size} initial routes with crawler` : `Prerendering ${routes.size} routes`);
1282
1286
  await runParallel(routes, generateRoute, {
1283
- concurrency: nitro.options.prerender.concurrency,
1287
+ concurrency: nitro.options.prerender.concurrency || 1,
1284
1288
  interval: nitro.options.prerender.interval
1285
1289
  });
1286
1290
  await prerenderer.close();
package/dist/_nitro2.mjs CHANGED
@@ -220,7 +220,7 @@ async function writeTypes(nitro) {
220
220
  contents: declarations.join("\n")
221
221
  });
222
222
  if (nitro.options.typescript.generateTsConfig) {
223
- const tsConfigPath = resolve(generatedTypesDir, nitro.options.typescript.tsconfigPath);
223
+ const tsConfigPath = resolve(generatedTypesDir, nitro.options.typescript.tsconfigPath || "tsconfig.json");
224
224
  const tsconfigDir = dirname(tsConfigPath);
225
225
  const tsConfig = defu(nitro.options.typescript.tsConfig, {
226
226
  compilerOptions: {
package/dist/_presets.mjs CHANGED
@@ -1364,7 +1364,6 @@ var preset_default$6 = [renderCom];
1364
1364
  const standard = defineNitroPreset({
1365
1365
  entry: "./standard/runtime/server",
1366
1366
  serveStatic: false,
1367
- exportConditions: ["import", "default"],
1368
1367
  output: { publicDir: "{{ output.dir }}/public/{{ baseURL }}" },
1369
1368
  commands: { preview: "npx srvx --prod ./" },
1370
1369
  alias: {
@@ -3,11 +3,11 @@ import { useRuntimeConfig } from "../runtime-config.mjs";
3
3
  // Served as /_scalar
4
4
  export default defineHandler((event) => {
5
5
  const runtimeConfig = useRuntimeConfig();
6
- const title = runtimeConfig.nitro.openAPI?.meta?.title || "API Reference";
7
- const description = runtimeConfig.nitro.openAPI?.meta?.description || "";
8
- const openAPIEndpoint = runtimeConfig.nitro.openAPI?.route || "./_openapi.json";
6
+ const title = runtimeConfig.nitro?.openAPI?.meta?.title || "API Reference";
7
+ const description = runtimeConfig.nitro?.openAPI?.meta?.description || "";
8
+ const openAPIEndpoint = runtimeConfig.nitro?.openAPI?.route || "./_openapi.json";
9
9
  // https://github.com/scalar/scalar
10
- const _config = runtimeConfig.nitro.openAPI?.ui?.scalar;
10
+ const _config = runtimeConfig.nitro?.openAPI?.ui?.scalar;
11
11
  const scalarConfig = {
12
12
  ..._config,
13
13
  url: openAPIEndpoint,
@@ -3,9 +3,9 @@ import { useRuntimeConfig } from "../runtime-config.mjs";
3
3
  // https://github.com/swagger-api/swagger-ui
4
4
  export default defineHandler((event) => {
5
5
  const runtimeConfig = useRuntimeConfig();
6
- const title = runtimeConfig.nitro.openAPI?.meta?.title || "API Reference";
7
- const description = runtimeConfig.nitro.openAPI?.meta?.description || "";
8
- const openAPIEndpoint = runtimeConfig.nitro.openAPI?.route || "./_openapi.json";
6
+ const title = runtimeConfig.nitro?.openAPI?.meta?.title || "API Reference";
7
+ const description = runtimeConfig.nitro?.openAPI?.meta?.description || "";
8
+ const openAPIEndpoint = runtimeConfig.nitro?.openAPI?.route || "./_openapi.json";
9
9
  const CDN_BASE = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@^5";
10
10
  event.res.headers.set("Content-Type", "text/html");
11
11
  return `<!doctype html>
@@ -1827,7 +1827,7 @@ interface VercelServerlessFunctionConfig {
1827
1827
  [key: string]: unknown;
1828
1828
  }
1829
1829
  interface VercelOptions {
1830
- config: VercelBuildConfigV3;
1830
+ config?: VercelBuildConfigV3;
1831
1831
  /**
1832
1832
  * If you have enabled skew protection in the Vercel dashboard, it will
1833
1833
  * be enabled by default.
@@ -1864,12 +1864,6 @@ interface PresetOptions {
1864
1864
  type PresetName = "alwaysdata" | "aws-amplify" | "aws-lambda" | "azure-swa" | "base-worker" | "bun" | "cleavr" | "cloudflare-dev" | "cloudflare-durable" | "cloudflare-module" | "cloudflare-pages" | "cloudflare-pages-static" | "deno" | "deno-deploy" | "deno-server" | "digital-ocean" | "firebase-app-hosting" | "flight-control" | "genezio" | "github-pages" | "gitlab-pages" | "heroku" | "iis-handler" | "iis-node" | "koyeb" | "netlify" | "netlify-edge" | "netlify-static" | "nitro-dev" | "nitro-prerender" | "node" | "node-cluster" | "node-middleware" | "node-server" | "platform-sh" | "render-com" | "standard" | "static" | "stormkit" | "vercel" | "vercel-static" | "winterjs" | "zeabur" | "zeabur-static" | "zerops" | "zerops-static";
1865
1865
  type PresetNameInput = "alwaysdata" | "aws-amplify" | "awsAmplify" | "aws_amplify" | "aws-lambda" | "awsLambda" | "aws_lambda" | "azure-swa" | "azureSwa" | "azure_swa" | "base-worker" | "baseWorker" | "base_worker" | "bun" | "cleavr" | "cloudflare-dev" | "cloudflareDev" | "cloudflare_dev" | "cloudflare-durable" | "cloudflareDurable" | "cloudflare_durable" | "cloudflare-module" | "cloudflareModule" | "cloudflare_module" | "cloudflare-pages" | "cloudflarePages" | "cloudflare_pages" | "cloudflare-pages-static" | "cloudflarePagesStatic" | "cloudflare_pages_static" | "deno" | "deno-deploy" | "denoDeploy" | "deno_deploy" | "deno-server" | "denoServer" | "deno_server" | "digital-ocean" | "digitalOcean" | "digital_ocean" | "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-handler" | "iisHandler" | "iis_handler" | "iis-node" | "iisNode" | "iis_node" | "koyeb" | "netlify" | "netlify-edge" | "netlifyEdge" | "netlify_edge" | "netlify-static" | "netlifyStatic" | "netlify_static" | "nitro-dev" | "nitroDev" | "nitro_dev" | "nitro-prerender" | "nitroPrerender" | "nitro_prerender" | "node" | "node-cluster" | "nodeCluster" | "node_cluster" | "node-middleware" | "nodeMiddleware" | "node_middleware" | "node-server" | "nodeServer" | "node_server" | "platform-sh" | "platformSh" | "platform_sh" | "render-com" | "renderCom" | "render_com" | "standard" | "static" | "stormkit" | "vercel" | "vercel-static" | "vercelStatic" | "vercel_static" | "winterjs" | "zeabur" | "zeabur-static" | "zeaburStatic" | "zeabur_static" | "zerops" | "zerops-static" | "zeropsStatic" | "zerops_static" | (string & {});
1866
1866
  //#endregion
1867
- //#region src/types/_utils.d.ts
1868
- type Enumerate<N extends number, Acc extends number[] = []> = Acc["length"] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc["length"]]>;
1869
- type IntRange<F$1 extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F$1>>;
1870
- type ExcludeFunctions<G extends Record<string, any>> = Pick<G, { [P in keyof G]: NonNullable<G[P]> extends Function ? never : P }[keyof G]>;
1871
- type DeepPartial<T> = T extends ((...args: never) => any) ? T : T extends Record<string, any> ? { [P in keyof T]?: DeepPartial<T[P]> } : T;
1872
- //#endregion
1873
1867
  //#region src/types/openapi-ts.d.ts
1874
1868
  /**
1875
1869
  Source: (inlined because of install size concernes)
@@ -2580,6 +2574,11 @@ declare class Router<T> {
2580
2574
  matchAll(method: string, path: string): T[];
2581
2575
  }
2582
2576
  //#endregion
2577
+ //#region src/types/_utils.d.ts
2578
+ type Enumerate<N extends number, Acc extends number[] = []> = Acc["length"] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc["length"]]>;
2579
+ type IntRange<F$1 extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F$1>>;
2580
+ type ExcludeFunctions<G extends Record<string, any>> = Pick<G, { [P in keyof G]: NonNullable<G[P]> extends Function ? never : P }[keyof G]>;
2581
+ //#endregion
2583
2582
  //#region src/types/route-rules.d.ts
2584
2583
  type HTTPstatus = IntRange<100, 600>;
2585
2584
  interface NitroRouteConfig {
@@ -2885,11 +2884,11 @@ interface NitroOptions extends PresetOptions {
2885
2884
  *
2886
2885
  * By default this feature will be enabled if there is at least one nitro plugin.
2887
2886
  */
2888
- runtimeHooks: boolean;
2887
+ runtimeHooks?: boolean;
2889
2888
  /**
2890
2889
  * Enable WebSocket support
2891
2890
  */
2892
- websocket: boolean;
2891
+ websocket?: boolean;
2893
2892
  };
2894
2893
  /**
2895
2894
  *
@@ -2945,17 +2944,17 @@ interface NitroOptions extends PresetOptions {
2945
2944
  tsconfigPaths?: boolean;
2946
2945
  };
2947
2946
  future: {
2948
- nativeSWR: boolean;
2947
+ nativeSWR?: boolean;
2949
2948
  };
2950
2949
  serverAssets: ServerAssetDir[];
2951
2950
  publicAssets: PublicAssetDir[];
2952
- imports: UnimportPluginOptions | false;
2951
+ imports: Partial<UnimportPluginOptions> | false;
2953
2952
  modules?: NitroModuleInput[];
2954
2953
  plugins: string[];
2955
2954
  tasks: {
2956
2955
  [name: string]: {
2957
- handler: string;
2958
- description: string;
2956
+ handler?: string;
2957
+ description?: string;
2959
2958
  };
2960
2959
  };
2961
2960
  scheduledTasks: {
@@ -2966,15 +2965,15 @@ interface NitroOptions extends PresetOptions {
2966
2965
  ignore: string[];
2967
2966
  dev: boolean;
2968
2967
  devServer: {
2969
- port: number;
2970
- hostname: string;
2971
- watch: string[];
2968
+ port?: number;
2969
+ hostname?: string;
2970
+ watch?: string[];
2972
2971
  };
2973
2972
  watchOptions: ChokidarOptions;
2974
2973
  devProxy: Record<string, string | ProxyServerOptions>;
2975
2974
  logging: {
2976
- compressedSizes: boolean;
2977
- buildSuccess: boolean;
2975
+ compressedSizes?: boolean;
2976
+ buildSuccess?: boolean;
2978
2977
  };
2979
2978
  baseURL: string;
2980
2979
  apiBaseURL: string;
@@ -2994,24 +2993,24 @@ interface NitroOptions extends PresetOptions {
2994
2993
  /**
2995
2994
  * Prerender HTML routes within subfolders (`/test` would produce `/test/index.html`)
2996
2995
  */
2997
- autoSubfolderIndex: boolean;
2998
- concurrency: number;
2999
- interval: number;
3000
- crawlLinks: boolean;
3001
- failOnError: boolean;
3002
- ignore: Array<string | RegExp | ((path: string) => undefined | null | boolean)>;
3003
- ignoreUnprefixedPublicAssets: boolean;
3004
- routes: string[];
2996
+ autoSubfolderIndex?: boolean;
2997
+ concurrency?: number;
2998
+ interval?: number;
2999
+ crawlLinks?: boolean;
3000
+ failOnError?: boolean;
3001
+ ignore?: Array<string | RegExp | ((path: string) => undefined | null | boolean)>;
3002
+ ignoreUnprefixedPublicAssets?: boolean;
3003
+ routes?: string[];
3005
3004
  /**
3006
3005
  * Amount of retries. Pass Infinity to retry indefinitely.
3007
3006
  * @default 3
3008
3007
  */
3009
- retry: number;
3008
+ retry?: number;
3010
3009
  /**
3011
3010
  * Delay between each retry in ms.
3012
3011
  * @default 500
3013
3012
  */
3014
- retryDelay: number;
3013
+ retryDelay?: number;
3015
3014
  };
3016
3015
  builder?: "rollup" | "rolldown" | "vite";
3017
3016
  rollupConfig?: RollupConfig;
@@ -3045,12 +3044,12 @@ interface NitroOptions extends PresetOptions {
3045
3044
  *
3046
3045
  * Default is `tsconfig.json` (`node_modules/.nitro/types/tsconfig.json`)
3047
3046
  */
3048
- tsconfigPath: string;
3047
+ tsconfigPath?: string;
3049
3048
  };
3050
3049
  hooks: NestedHooks<NitroHooks>;
3051
3050
  commands: {
3052
- preview: string;
3053
- deploy: string;
3051
+ preview?: string;
3052
+ deploy?: string;
3054
3053
  };
3055
3054
  framework: NitroFrameworkInfo;
3056
3055
  iis?: {
@@ -3061,7 +3060,7 @@ interface NitroOptions extends PresetOptions {
3061
3060
  /**
3062
3061
  * Nitro input config (nitro.config)
3063
3062
  */
3064
- interface NitroConfig extends DeepPartial<Omit<NitroOptions, "routeRules" | "rollupConfig" | "preset" | "compatibilityDate" | "unenv" | "serverDir" | "_config" | "_c12" | "serverEntry" | "renderer">>, C12InputConfig<NitroConfig> {
3063
+ interface NitroConfig extends Partial<Omit<NitroOptions, "routeRules" | "rollupConfig" | "preset" | "compatibilityDate" | "unenv" | "serverDir" | "_config" | "_c12" | "serverEntry" | "renderer" | "output">>, C12InputConfig<NitroConfig> {
3065
3064
  preset?: PresetNameInput;
3066
3065
  extends?: string | string[] | NitroPreset;
3067
3066
  routeRules?: {
@@ -3073,6 +3072,7 @@ interface NitroConfig extends DeepPartial<Omit<NitroOptions, "routeRules" | "rol
3073
3072
  serverDir?: boolean | "./" | "./server" | (string & {});
3074
3073
  serverEntry?: string | NitroOptions["serverEntry"];
3075
3074
  renderer?: false | NitroOptions["renderer"];
3075
+ output?: Partial<NitroOptions["output"]>;
3076
3076
  }
3077
3077
  interface LoadConfigOptions {
3078
3078
  watch?: boolean;
@@ -3123,8 +3123,7 @@ interface NitroRuntimeConfigApp {
3123
3123
  [key: string]: any;
3124
3124
  }
3125
3125
  interface NitroRuntimeConfig {
3126
- app: NitroRuntimeConfigApp;
3127
- nitro: {
3126
+ nitro?: {
3128
3127
  envPrefix?: string;
3129
3128
  envExpansion?: boolean;
3130
3129
  routeRules?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nitro-nightly",
3
- "version": "3.0.1-20251218-123719-7f42bc15",
3
+ "version": "3.0.1-20251218-210030-3992c731",
4
4
  "description": "Build and Deploy Universal JavaScript Servers",
5
5
  "homepage": "https://nitro.build",
6
6
  "repository": "nitrojs/nitro",