nitro 3.0.1-alpha.2 → 3.0.260311-beta
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/LICENSE +6 -0
- package/README.md +2 -2
- package/dist/THIRD-PARTY-LICENSES.md +1646 -0
- package/dist/_build/common.mjs +6977 -2556
- package/dist/_build/rolldown.mjs +32 -31
- package/dist/_build/rollup.mjs +28 -35
- package/dist/_build/vite.build.mjs +10 -8
- package/dist/_chunks/nitro.mjs +80 -112
- package/dist/_chunks/nitro2.mjs +8 -7
- package/dist/_chunks/nitro3.mjs +129 -0
- package/dist/_chunks/utils.mjs +42 -24
- package/dist/_common.mjs +14 -24
- package/dist/{_chunks/dev.mjs → _dev.mjs} +132 -320
- package/dist/_libs/_.mjs +3 -0
- package/dist/_libs/_2.mjs +2 -0
- package/dist/_libs/_3.mjs +3 -0
- package/dist/_libs/_4.mjs +2 -0
- package/dist/_libs/_5.mjs +3 -0
- package/dist/_libs/_6.mjs +4 -0
- package/dist/_libs/_7.mjs +5 -0
- package/dist/_libs/c12+rc9.mjs +812 -0
- package/dist/_libs/{c12+giget+readdirp+chokidar.d.mts → c12+readdirp+chokidar.d.mts} +52 -36
- package/dist/_libs/citty.mjs +10 -12
- package/dist/_libs/commondir+is-reference.mjs +60 -49
- package/dist/_libs/compatx.mjs +1 -2
- package/dist/_libs/esbuild.d.mts +1 -1
- package/dist/_libs/escape-string-regexp.mjs +1 -2
- package/dist/_libs/{pluginutils+plugin-commonjs.d.mts → estree+pluginutils.d.mts} +2 -2
- package/dist/_libs/estree-walker.mjs +1 -4
- package/dist/_libs/exsolve.d.mts +1 -0
- package/dist/_libs/hasown+resolve+deepmerge.mjs +146 -169
- package/dist/_libs/httpxy.d.mts +12 -9
- package/dist/_libs/httpxy.mjs +299 -43
- package/dist/_libs/js-tokens.d.mts +1 -0
- package/dist/_libs/klona.mjs +1 -2
- package/dist/_libs/mlly.d.mts +1 -1
- package/dist/_libs/nypm+tinyexec.mjs +845 -0
- package/dist/_libs/perfect-debounce.mjs +88 -0
- package/dist/_libs/plugin-alias.mjs +2 -4
- package/dist/_libs/plugin-inject.mjs +2 -6
- package/dist/_libs/plugin-json.mjs +2 -4
- package/dist/_libs/pluginutils.mjs +5 -11
- package/dist/_libs/readdirp+chokidar.mjs +187 -192
- package/dist/_libs/remapping.mjs +1 -3
- package/dist/_libs/resolve-uri+gen-mapping.mjs +15 -21
- package/dist/_libs/rou3.d.mts +3 -2
- package/dist/_libs/rou3.mjs +225 -51
- package/dist/_libs/std-env.d.mts +10 -2
- package/dist/_libs/strip-literal.d.mts +1 -0
- package/dist/_libs/tsconfck.mjs +21 -40
- package/dist/_libs/ultrahtml.mjs +3 -14
- package/dist/_libs/unimport+unplugin.mjs +250 -351
- package/dist/_libs/unplugin+unimport.d.mts +7 -10
- package/dist/_presets.mjs +389 -432
- package/dist/builder.d.mts +5 -4
- package/dist/builder.mjs +12 -6
- package/dist/cli/_chunks/build.mjs +22 -23
- package/dist/cli/_chunks/common.mjs +1 -2
- package/dist/cli/_chunks/deploy.mjs +40 -0
- package/dist/cli/_chunks/dev.mjs +9 -9
- package/dist/cli/_chunks/docs.mjs +30 -0
- package/dist/cli/_chunks/list.mjs +4 -6
- package/dist/cli/_chunks/prepare.mjs +2 -4
- package/dist/cli/_chunks/preview.mjs +51 -0
- package/dist/cli/_chunks/run.mjs +7 -9
- package/dist/cli/_chunks/task.mjs +1 -3
- package/dist/cli/index.mjs +5 -4
- package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +8 -0
- package/dist/node_modules/@poppinss/dumper/package.json +1 -1
- package/dist/node_modules/croner/dist/croner.js +1 -1
- package/dist/node_modules/croner/package.json +11 -1
- package/dist/node_modules/youch/build/helpers-B9BQYaS6.js +23 -0
- package/dist/node_modules/youch/build/index.js +204 -351
- package/dist/node_modules/youch/build/public/error_info/script.js +1 -1
- package/dist/node_modules/youch/build/public_dir-C5bujZKB.js +25 -0
- package/dist/node_modules/youch/build/src/templates/error_cause/main.js +44 -0
- package/dist/node_modules/youch/build/src/templates/error_info/main.js +72 -0
- package/dist/node_modules/youch/build/src/templates/error_metadata/main.js +65 -0
- package/dist/node_modules/youch/build/src/templates/error_stack/main.js +152 -0
- package/dist/node_modules/youch/build/src/templates/error_stack_source/main.js +46 -0
- package/dist/node_modules/youch/build/src/templates/header/main.js +24 -0
- package/dist/node_modules/youch/build/src/templates/layout/main.js +27 -0
- package/dist/node_modules/youch/package.json +34 -31
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +9 -56
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +1 -0
- package/dist/presets/_nitro/runtime/service-worker.mjs +0 -1
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +3 -1
- package/dist/presets/bun/runtime/bun.mjs +4 -3
- package/dist/presets/deno/runtime/deno-server.mjs +4 -3
- package/dist/presets/netlify/runtime/netlify-edge.mjs +0 -1
- package/dist/presets/netlify/runtime/netlify.mjs +1 -1
- package/dist/presets/node/runtime/node-cluster.mjs +3 -2
- package/dist/presets/node/runtime/node-server.mjs +3 -2
- package/dist/presets/stormkit/runtime/stormkit.mjs +0 -1
- package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
- package/dist/presets/vercel/runtime/vercel.web.mjs +2 -4
- package/dist/presets/zephyr/runtime/server.mjs +3 -0
- package/dist/runtime/internal/cache.d.mts +0 -4
- package/dist/runtime/internal/cache.mjs +32 -256
- package/dist/runtime/internal/context.d.mts +3 -1
- package/dist/runtime/internal/error/dev.d.mts +5 -4
- package/dist/runtime/internal/error/dev.mjs +38 -40
- package/dist/runtime/internal/error/hooks.d.mts +1 -1
- package/dist/runtime/internal/error/prod.d.mts +2 -5
- package/dist/runtime/internal/error/prod.mjs +19 -33
- package/dist/runtime/internal/error/utils.d.mts +4 -4
- package/dist/runtime/internal/meta.d.mts +1 -1
- package/dist/runtime/internal/plugin.d.mts +2 -2
- package/dist/runtime/internal/route-rules.d.mts +9 -4
- package/dist/runtime/internal/route-rules.mjs +9 -1
- package/dist/runtime/internal/routes/dev-tasks.d.mts +3 -2
- package/dist/runtime/internal/routes/dev-tasks.mjs +6 -2
- package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
- package/dist/runtime/internal/routes/renderer-template.dev.d.mts +2 -1
- package/dist/runtime/internal/runtime-config.d.mts +1 -1
- package/dist/runtime/internal/static.mjs +5 -4
- package/dist/runtime/internal/task.d.mts +3 -1
- package/dist/runtime/internal/task.mjs +2 -2
- package/dist/runtime/internal/vite/dev-entry.mjs +6 -3
- package/dist/runtime/internal/vite/dev-worker.mjs +264 -0
- package/dist/runtime/meta.mjs +1 -0
- package/dist/runtime/nitro.d.mts +2 -0
- package/dist/runtime/nitro.mjs +2 -0
- package/dist/runtime/virtual/error-handler.mjs +1 -1
- package/dist/runtime/virtual/server-assets.d.mts +2 -1
- package/dist/runtime/vite.d.mts +1 -1
- package/dist/types/index.d.mts +68 -117
- package/dist/types/index.mjs +1 -11
- package/dist/vite.d.mts +3 -3
- package/dist/vite.mjs +236 -233
- package/package.json +83 -68
- package/skills/nitro/SKILL.md +10 -0
- package/skills/nitro/docs/TOC.md +83 -0
- package/skills/nitro/docs/_navigation.json +679 -0
- package/skills/nitro/docs/config/index.md +1147 -0
- package/skills/nitro/docs/deploy/index.md +64 -0
- package/skills/nitro/docs/deploy/providers/alwaysdata.md +50 -0
- package/skills/nitro/docs/deploy/providers/aws-amplify.md +81 -0
- package/skills/nitro/docs/deploy/providers/aws.md +47 -0
- package/skills/nitro/docs/deploy/providers/azure.md +72 -0
- package/skills/nitro/docs/deploy/providers/cleavr.md +33 -0
- package/skills/nitro/docs/deploy/providers/cloudflare.md +375 -0
- package/skills/nitro/docs/deploy/providers/deno-deploy.md +66 -0
- package/skills/nitro/docs/deploy/providers/digitalocean.md +46 -0
- package/skills/nitro/docs/deploy/providers/firebase.md +32 -0
- package/skills/nitro/docs/deploy/providers/flightcontrol.md +67 -0
- package/skills/nitro/docs/deploy/providers/genezio.md +67 -0
- package/skills/nitro/docs/deploy/providers/github-pages.md +68 -0
- package/skills/nitro/docs/deploy/providers/gitlab-pages.md +37 -0
- package/skills/nitro/docs/deploy/providers/heroku.md +84 -0
- package/skills/nitro/docs/deploy/providers/iis.md +38 -0
- package/skills/nitro/docs/deploy/providers/koyeb.md +109 -0
- package/skills/nitro/docs/deploy/providers/netlify.md +47 -0
- package/skills/nitro/docs/deploy/providers/platform-sh.md +37 -0
- package/skills/nitro/docs/deploy/providers/render.md +37 -0
- package/skills/nitro/docs/deploy/providers/stormkit.md +24 -0
- package/skills/nitro/docs/deploy/providers/vercel.md +179 -0
- package/skills/nitro/docs/deploy/providers/zeabur.md +19 -0
- package/skills/nitro/docs/deploy/providers/zephyr.md +99 -0
- package/skills/nitro/docs/deploy/providers/zerops.md +102 -0
- package/skills/nitro/docs/deploy/runtimes/bun.md +15 -0
- package/skills/nitro/docs/deploy/runtimes/deno.md +19 -0
- package/skills/nitro/docs/deploy/runtimes/node.md +63 -0
- package/skills/nitro/docs/docs/assets.md +166 -0
- package/skills/nitro/docs/docs/cache.md +408 -0
- package/skills/nitro/docs/docs/configuration.md +256 -0
- package/skills/nitro/docs/docs/database.md +185 -0
- package/skills/nitro/docs/docs/index.md +56 -0
- package/skills/nitro/docs/docs/lifecycle.md +204 -0
- package/skills/nitro/docs/docs/migration.md +215 -0
- package/skills/nitro/docs/docs/nightly.md +31 -0
- package/skills/nitro/docs/docs/plugins.md +164 -0
- package/skills/nitro/docs/docs/quick-start.md +110 -0
- package/skills/nitro/docs/docs/renderer.md +322 -0
- package/skills/nitro/docs/docs/routing.md +711 -0
- package/skills/nitro/docs/docs/server-entry.md +239 -0
- package/skills/nitro/docs/docs/storage.md +261 -0
- package/skills/nitro/docs/docs/tasks.md +277 -0
- package/skills/nitro/docs/examples/api-routes.md +145 -0
- package/skills/nitro/docs/examples/auto-imports.md +93 -0
- package/skills/nitro/docs/examples/cached-handler.md +81 -0
- package/skills/nitro/docs/examples/custom-error-handler.md +98 -0
- package/skills/nitro/docs/examples/database.md +157 -0
- package/skills/nitro/docs/examples/elysia.md +70 -0
- package/skills/nitro/docs/examples/express.md +78 -0
- package/skills/nitro/docs/examples/fastify.md +79 -0
- package/skills/nitro/docs/examples/hello-world.md +68 -0
- package/skills/nitro/docs/examples/hono.md +74 -0
- package/skills/nitro/docs/examples/import-alias.md +100 -0
- package/skills/nitro/docs/examples/index.md +3 -0
- package/skills/nitro/docs/examples/middleware.md +91 -0
- package/skills/nitro/docs/examples/mono-jsx.md +68 -0
- package/skills/nitro/docs/examples/nano-jsx.md +70 -0
- package/skills/nitro/docs/examples/plugins.md +91 -0
- package/skills/nitro/docs/examples/renderer.md +113 -0
- package/skills/nitro/docs/examples/runtime-config.md +97 -0
- package/skills/nitro/docs/examples/server-fetch.md +87 -0
- package/skills/nitro/docs/examples/shiki.md +198 -0
- package/skills/nitro/docs/examples/virtual-routes.md +74 -0
- package/skills/nitro/docs/examples/vite-nitro-plugin.md +79 -0
- package/skills/nitro/docs/examples/vite-rsc.md +1041 -0
- package/skills/nitro/docs/examples/vite-ssr-html.md +217 -0
- package/skills/nitro/docs/examples/vite-ssr-preact.md +247 -0
- package/skills/nitro/docs/examples/vite-ssr-react.md +226 -0
- package/skills/nitro/docs/examples/vite-ssr-solid.md +256 -0
- package/skills/nitro/docs/examples/vite-ssr-tsr-react.md +442 -0
- package/skills/nitro/docs/examples/vite-ssr-tss-react.md +444 -0
- package/skills/nitro/docs/examples/vite-ssr-vue-router.md +616 -0
- package/skills/nitro/docs/examples/vite-trpc.md +335 -0
- package/skills/nitro/docs/examples/websocket.md +282 -0
- package/skills/nitro/docs/index.md +121 -0
- package/dist/_libs/confbox.mjs +0 -2509
- package/dist/_libs/nypm+giget+tinyexec.mjs +0 -3603
- package/dist/_libs/rc9+c12+dotenv.mjs +0 -972
- package/dist/node_modules/hookable/dist/index.mjs +0 -266
- package/dist/node_modules/hookable/package.json +0 -52
- package/dist/node_modules/youch/build/chunk-4L7RY2JA.js +0 -42
- package/dist/node_modules/youch/build/chunk-7QV3D5YX.js +0 -83
- package/dist/node_modules/youch/build/chunk-AUGPHE32.js +0 -39
- package/dist/node_modules/youch/build/chunk-CM7DWJNZ.js +0 -44
- package/dist/node_modules/youch/build/chunk-EJH674NB.js +0 -223
- package/dist/node_modules/youch/build/chunk-OIJ3WD7L.js +0 -81
- package/dist/node_modules/youch/build/chunk-P36L72PL.js +0 -87
- package/dist/node_modules/youch/build/chunk-PE3GG3TN.js +0 -65
- package/dist/node_modules/youch/build/chunk-X53OIOJH.js +0 -70
- package/dist/presets/_nitro/runtime/nitro-dev.d.mts +0 -2
- package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +0 -3
- package/dist/presets/_nitro/runtime/service-worker.d.mts +0 -2
- package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +0 -2
- package/dist/presets/aws-lambda/runtime/_utils.d.mts +0 -8
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +0 -2
- package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +0 -3
- package/dist/presets/azure/runtime/_utils.d.mts +0 -2
- package/dist/presets/azure/runtime/azure-swa.d.mts +0 -5
- package/dist/presets/bun/runtime/bun.d.mts +0 -3
- package/dist/presets/cloudflare/runtime/_module-handler.d.mts +0 -16
- package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +0 -11
- package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +0 -3
- package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +0 -20
- package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +0 -3
- package/dist/presets/deno/runtime/deno-deploy.d.mts +0 -5
- package/dist/presets/deno/runtime/deno-server.d.mts +0 -3
- package/dist/presets/netlify/runtime/netlify-edge.d.mts +0 -3
- package/dist/presets/netlify/runtime/netlify.d.mts +0 -4
- package/dist/presets/node/runtime/node-cluster.d.mts +0 -3
- package/dist/presets/node/runtime/node-middleware.d.mts +0 -3
- package/dist/presets/node/runtime/node-server.d.mts +0 -3
- package/dist/presets/standard/runtime/server.d.mts +0 -3
- package/dist/presets/stormkit/runtime/stormkit.d.mts +0 -21
- package/dist/presets/vercel/runtime/isr.d.mts +0 -2
- package/dist/presets/vercel/runtime/vercel.node.d.mts +0 -3
- package/dist/presets/vercel/runtime/vercel.web.d.mts +0 -8
- package/dist/presets/winterjs/runtime/winterjs.d.mts +0 -2
- package/dist/presets/zeabur/runtime/zeabur.d.mts +0 -3
- package/dist/runtime/internal/vite/node-runner.mjs +0 -359
package/dist/_presets.mjs
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { $ as resolveModulePath, G as findFile, I as prettyPath$1, J as readGitConfig, K as findNearestFile, N as glob, R as writeFile$2, U as p, V as a, X as h, Y as readPackageJSON, at as join$1, ct as resolve$1, nt as dirname$1, st as relative$1, z as K } from "./_build/common.mjs";
|
|
3
|
-
import { i as gr, n as Q } from "./_libs/confbox.mjs";
|
|
1
|
+
import { B as f, F as prettyPath$1, G as findNearestFile, H as v, J as readPackageJSON, L as writeFile$2, M as glob, R, W as findFile, Y as i, Z as a, at as dirname$1, ct as join$1, dt as resolve$1, et as r, nt as resolveModulePath, q as readGitConfig, ut as relative$1 } from "./_build/common.mjs";
|
|
4
2
|
import { r as resolveCompatibilityDatesFromEnv, t as formatCompatibilityDate } from "./_libs/compatx.mjs";
|
|
3
|
+
import { t as importDep } from "./_chunks/utils.mjs";
|
|
5
4
|
import { builtinModules } from "node:module";
|
|
6
|
-
import consola
|
|
5
|
+
import consola from "consola";
|
|
7
6
|
import { existsSync, promises } from "node:fs";
|
|
8
7
|
import fsp, { readFile, writeFile } from "node:fs/promises";
|
|
9
8
|
import { dirname, extname, relative, resolve } from "node:path";
|
|
10
9
|
import { defu } from "defu";
|
|
11
|
-
import { hasProtocol, joinURL, withLeadingSlash, withTrailingSlash, withoutLeadingSlash } from "ufo";
|
|
12
10
|
import { presetsDir, runtimeDir, version } from "nitro/meta";
|
|
11
|
+
import { hasProtocol, joinURL, withLeadingSlash, withTrailingSlash, withoutLeadingSlash } from "ufo";
|
|
13
12
|
import { colors } from "consola/utils";
|
|
14
13
|
import { kebabCase } from "scule";
|
|
15
|
-
|
|
16
14
|
//#region src/presets/_utils/preset.ts
|
|
17
15
|
function defineNitroPreset(preset, meta) {
|
|
18
16
|
if (typeof preset !== "function" && preset.entry && preset.entry.startsWith(".")) preset.entry = resolve(presetsDir, preset.entry);
|
|
@@ -21,10 +19,7 @@ function defineNitroPreset(preset, meta) {
|
|
|
21
19
|
_meta: meta
|
|
22
20
|
};
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/presets/_nitro/base-worker.ts
|
|
27
|
-
const baseWorker = defineNitroPreset({
|
|
22
|
+
var base_worker_default = [defineNitroPreset({
|
|
28
23
|
entry: null,
|
|
29
24
|
node: false,
|
|
30
25
|
minify: true,
|
|
@@ -34,12 +29,8 @@ const baseWorker = defineNitroPreset({
|
|
|
34
29
|
generatedCode: { symbols: true }
|
|
35
30
|
} },
|
|
36
31
|
inlineDynamicImports: true
|
|
37
|
-
}, { name: "base-worker" });
|
|
38
|
-
var
|
|
39
|
-
|
|
40
|
-
//#endregion
|
|
41
|
-
//#region src/presets/_nitro/nitro-dev.ts
|
|
42
|
-
const nitroDev = defineNitroPreset({
|
|
32
|
+
}, { name: "base-worker" })];
|
|
33
|
+
var nitro_dev_default = [defineNitroPreset({
|
|
43
34
|
entry: "./_nitro/runtime/nitro-dev",
|
|
44
35
|
output: {
|
|
45
36
|
dir: "{{ buildDir }}/dev",
|
|
@@ -58,74 +49,57 @@ const nitroDev = defineNitroPreset({
|
|
|
58
49
|
}, {
|
|
59
50
|
name: "nitro-dev",
|
|
60
51
|
dev: true
|
|
61
|
-
});
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
//#endregion
|
|
65
|
-
//#region src/presets/_nitro/nitro-prerender.ts
|
|
66
|
-
const nitroPrerender = defineNitroPreset({
|
|
52
|
+
})];
|
|
53
|
+
var nitro_prerender_default = [defineNitroPreset({
|
|
67
54
|
entry: "./_nitro/runtime/nitro-prerenderer",
|
|
68
55
|
serveStatic: true,
|
|
69
56
|
output: { serverDir: "{{ buildDir }}/prerender" },
|
|
70
57
|
externals: { noTrace: true }
|
|
71
|
-
}, { name: "nitro-prerender" });
|
|
72
|
-
var nitro_prerender_default = [nitroPrerender];
|
|
73
|
-
|
|
58
|
+
}, { name: "nitro-prerender" })];
|
|
74
59
|
//#endregion
|
|
75
60
|
//#region src/presets/_nitro/preset.ts
|
|
76
|
-
var preset_default$
|
|
61
|
+
var preset_default$27 = [
|
|
77
62
|
...base_worker_default,
|
|
78
63
|
...nitro_dev_default,
|
|
79
64
|
...nitro_prerender_default
|
|
80
65
|
];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
static: true
|
|
113
|
-
});
|
|
114
|
-
var preset_default$25 = [
|
|
115
|
-
_static,
|
|
116
|
-
githubPages,
|
|
117
|
-
gitlabPages
|
|
66
|
+
var preset_default$26 = [
|
|
67
|
+
defineNitroPreset({
|
|
68
|
+
static: true,
|
|
69
|
+
output: {
|
|
70
|
+
dir: "{{ rootDir }}/.output",
|
|
71
|
+
publicDir: "{{ output.dir }}/public"
|
|
72
|
+
},
|
|
73
|
+
prerender: { crawlLinks: true },
|
|
74
|
+
commands: { preview: "npx serve ./public" }
|
|
75
|
+
}, {
|
|
76
|
+
name: "static",
|
|
77
|
+
static: true
|
|
78
|
+
}),
|
|
79
|
+
defineNitroPreset({
|
|
80
|
+
extends: "static",
|
|
81
|
+
commands: { deploy: "npx gh-pages --dotfiles -d ./public" },
|
|
82
|
+
prerender: { routes: ["/", "/404.html"] },
|
|
83
|
+
hooks: { async compiled(nitro) {
|
|
84
|
+
await fsp.writeFile(join$1(nitro.options.output.publicDir, ".nojekyll"), "");
|
|
85
|
+
} }
|
|
86
|
+
}, {
|
|
87
|
+
name: "github-pages",
|
|
88
|
+
static: true
|
|
89
|
+
}),
|
|
90
|
+
defineNitroPreset({
|
|
91
|
+
extends: "static",
|
|
92
|
+
prerender: { routes: ["/", "/404.html"] }
|
|
93
|
+
}, {
|
|
94
|
+
name: "gitlab-pages",
|
|
95
|
+
static: true
|
|
96
|
+
})
|
|
118
97
|
];
|
|
119
|
-
|
|
120
|
-
//#endregion
|
|
121
|
-
//#region src/presets/alwaysdata/preset.ts
|
|
122
|
-
const alwaysdata = defineNitroPreset({
|
|
98
|
+
var preset_default$25 = [defineNitroPreset({
|
|
123
99
|
extends: "node-server",
|
|
124
100
|
serveStatic: true,
|
|
125
101
|
commands: { deploy: "rsync -rRt --info=progress2 ./ [account]@ssh-[account].alwaysdata.net:www/my-app" }
|
|
126
|
-
}, { name: "alwaysdata" });
|
|
127
|
-
var preset_default$24 = [alwaysdata];
|
|
128
|
-
|
|
102
|
+
}, { name: "alwaysdata" })];
|
|
129
103
|
//#endregion
|
|
130
104
|
//#region src/presets/aws-amplify/utils.ts
|
|
131
105
|
async function writeAmplifyFiles(nitro) {
|
|
@@ -133,9 +107,9 @@ async function writeAmplifyFiles(nitro) {
|
|
|
133
107
|
const routes = [];
|
|
134
108
|
let hasWildcardPublicAsset = false;
|
|
135
109
|
if (nitro.options.awsAmplify?.imageOptimization && !nitro.options.static) {
|
|
136
|
-
const { path
|
|
137
|
-
if (path
|
|
138
|
-
path
|
|
110
|
+
const { path, cacheControl } = nitro.options.awsAmplify?.imageOptimization || {};
|
|
111
|
+
if (path) routes.push({
|
|
112
|
+
path,
|
|
139
113
|
target: {
|
|
140
114
|
kind: "ImageOptimization",
|
|
141
115
|
cacheControl
|
|
@@ -188,10 +162,7 @@ async function writeAmplifyFiles(nitro) {
|
|
|
188
162
|
await writeFile(resolve(outDir, "deploy-manifest.json"), JSON.stringify(deployManifest, null, 2));
|
|
189
163
|
if (!nitro.options.static) await writeFile(resolve(outDir, "compute/default/server.js"), `import("./index.mjs")`);
|
|
190
164
|
}
|
|
191
|
-
|
|
192
|
-
//#endregion
|
|
193
|
-
//#region src/presets/aws-amplify/preset.ts
|
|
194
|
-
const awsAmplify = defineNitroPreset({
|
|
165
|
+
var preset_default$24 = [defineNitroPreset({
|
|
195
166
|
entry: "./aws-amplify/runtime/aws-amplify",
|
|
196
167
|
manifest: { deploymentId: process.env.AWS_JOB_ID },
|
|
197
168
|
serveStatic: true,
|
|
@@ -207,32 +178,25 @@ const awsAmplify = defineNitroPreset({
|
|
|
207
178
|
}, {
|
|
208
179
|
name: "aws-amplify",
|
|
209
180
|
stdName: "aws_amplify"
|
|
210
|
-
});
|
|
211
|
-
var preset_default$23 = [
|
|
212
|
-
|
|
213
|
-
//#endregion
|
|
214
|
-
//#region src/presets/aws-lambda/preset.ts
|
|
215
|
-
const awsLambda = defineNitroPreset({
|
|
181
|
+
})];
|
|
182
|
+
var preset_default$23 = [defineNitroPreset({
|
|
216
183
|
entry: "./aws-lambda/runtime/aws-lambda",
|
|
217
184
|
awsLambda: { streaming: false },
|
|
218
185
|
hooks: { "rollup:before": (nitro, rollupConfig) => {
|
|
219
186
|
if (nitro.options.awsLambda?.streaming) rollupConfig.input += "-streaming";
|
|
220
187
|
} }
|
|
221
|
-
}, { name: "aws-lambda" });
|
|
222
|
-
var preset_default$22 = [awsLambda];
|
|
223
|
-
|
|
188
|
+
}, { name: "aws-lambda" })];
|
|
224
189
|
//#endregion
|
|
225
190
|
//#region src/presets/_utils/fs.ts
|
|
226
|
-
function prettyPath(p
|
|
227
|
-
p
|
|
228
|
-
return highlight ? colors.cyan(p
|
|
191
|
+
function prettyPath(p, highlight = true) {
|
|
192
|
+
p = relative$1(process.cwd(), p);
|
|
193
|
+
return highlight ? colors.cyan(p) : p;
|
|
229
194
|
}
|
|
230
195
|
async function writeFile$1(file, contents, log = false) {
|
|
231
196
|
await fsp.mkdir(dirname$1(file), { recursive: true });
|
|
232
197
|
await fsp.writeFile(file, contents, typeof contents === "string" ? "utf8" : void 0);
|
|
233
|
-
if (log) consola
|
|
198
|
+
if (log) consola.info("Generated", prettyPath(file));
|
|
234
199
|
}
|
|
235
|
-
|
|
236
200
|
//#endregion
|
|
237
201
|
//#region src/presets/azure/utils.ts
|
|
238
202
|
async function writeSWARoutes(nitro) {
|
|
@@ -321,10 +285,7 @@ async function writeSWARoutes(nitro) {
|
|
|
321
285
|
await writeFile$1(resolve$1(nitro.options.output.publicDir, relativePrefix ? `${relativePrefix}/index.html` : "index.html"), "");
|
|
322
286
|
}
|
|
323
287
|
}
|
|
324
|
-
|
|
325
|
-
//#endregion
|
|
326
|
-
//#region src/presets/azure/preset.ts
|
|
327
|
-
const azureSWA = defineNitroPreset({
|
|
288
|
+
var preset_default$22 = [defineNitroPreset({
|
|
328
289
|
entry: "./azure/runtime/azure-swa",
|
|
329
290
|
output: {
|
|
330
291
|
serverDir: "{{ output.dir }}/server/functions",
|
|
@@ -337,35 +298,20 @@ const azureSWA = defineNitroPreset({
|
|
|
337
298
|
}, {
|
|
338
299
|
name: "azure-swa",
|
|
339
300
|
stdName: "azure_static"
|
|
340
|
-
});
|
|
341
|
-
var preset_default$21 = [
|
|
342
|
-
|
|
343
|
-
//#endregion
|
|
344
|
-
//#region src/presets/bun/preset.ts
|
|
345
|
-
const bun = defineNitroPreset({
|
|
301
|
+
})];
|
|
302
|
+
var preset_default$21 = [defineNitroPreset({
|
|
346
303
|
entry: "./bun/runtime/bun",
|
|
347
304
|
serveStatic: true,
|
|
348
|
-
exportConditions: [
|
|
349
|
-
"bun",
|
|
350
|
-
"node",
|
|
351
|
-
"import",
|
|
352
|
-
"default"
|
|
353
|
-
],
|
|
305
|
+
exportConditions: ["bun"],
|
|
354
306
|
commands: { preview: "bun run ./server/index.mjs" }
|
|
355
|
-
}, { name: "bun" });
|
|
356
|
-
var preset_default$20 = [
|
|
357
|
-
|
|
358
|
-
//#endregion
|
|
359
|
-
//#region src/presets/cleavr/preset.ts
|
|
360
|
-
const cleavr = defineNitroPreset({
|
|
307
|
+
}, { name: "bun" })];
|
|
308
|
+
var preset_default$20 = [defineNitroPreset({
|
|
361
309
|
extends: "node-server",
|
|
362
310
|
serveStatic: true
|
|
363
311
|
}, {
|
|
364
312
|
name: "cleavr",
|
|
365
313
|
stdName: "cleavr"
|
|
366
|
-
});
|
|
367
|
-
var preset_default$19 = [cleavr];
|
|
368
|
-
|
|
314
|
+
})];
|
|
369
315
|
//#endregion
|
|
370
316
|
//#region src/presets/cloudflare/unenv/node-compat.ts
|
|
371
317
|
const builtnNodeModules$1 = [
|
|
@@ -419,7 +365,6 @@ const builtnNodeModules$1 = [
|
|
|
419
365
|
"node:util/types",
|
|
420
366
|
"node:zlib"
|
|
421
367
|
];
|
|
422
|
-
|
|
423
368
|
//#endregion
|
|
424
369
|
//#region src/presets/cloudflare/unenv/preset.ts
|
|
425
370
|
const unenvCfNodeCompat = {
|
|
@@ -443,7 +388,6 @@ const unenvCfExternals = {
|
|
|
443
388
|
"cloudflare:workflows"
|
|
444
389
|
]
|
|
445
390
|
};
|
|
446
|
-
|
|
447
391
|
//#endregion
|
|
448
392
|
//#region src/presets/cloudflare/utils.ts
|
|
449
393
|
async function writeCFRoutes(nitro) {
|
|
@@ -472,22 +416,22 @@ async function writeCFRoutes(nitro) {
|
|
|
472
416
|
"_worker.js",
|
|
473
417
|
"_worker.js.map",
|
|
474
418
|
"nitro.json",
|
|
475
|
-
...routes.exclude.map((path
|
|
419
|
+
...routes.exclude.map((path) => withoutLeadingSlash(path.replace(/\/\*$/, "/**")))
|
|
476
420
|
]
|
|
477
421
|
});
|
|
478
422
|
routes.exclude.push(...publicAssetFiles.map((i) => withLeadingSlash(i).replace(/\/index\.html$/, "").replace(/\.html$/, "") || "/").sort(comparePaths));
|
|
479
423
|
routes.exclude.splice(100 - routes.include.length);
|
|
480
424
|
await writeRoutes();
|
|
481
425
|
}
|
|
482
|
-
function comparePaths(a
|
|
483
|
-
return a
|
|
426
|
+
function comparePaths(a, b) {
|
|
427
|
+
return a.split("/").length - b.split("/").length || a.localeCompare(b);
|
|
484
428
|
}
|
|
485
429
|
async function writeCFHeaders(nitro, outdir) {
|
|
486
430
|
const headersPath = join$1(outdir === "public" ? nitro.options.output.publicDir : nitro.options.output.dir, "_headers");
|
|
487
431
|
const contents = [];
|
|
488
|
-
const rules = Object.entries(nitro.options.routeRules).sort((a
|
|
489
|
-
for (const [path
|
|
490
|
-
const headers = [joinURL(nitro.options.baseURL, path
|
|
432
|
+
const rules = Object.entries(nitro.options.routeRules).sort((a, b) => b[0].split(/\/(?!\*)/).length - a[0].split(/\/(?!\*)/).length);
|
|
433
|
+
for (const [path, routeRules] of rules.filter(([_, routeRules]) => routeRules.headers)) {
|
|
434
|
+
const headers = [joinURL(nitro.options.baseURL, path.replace("/**", "/*")), ...Object.entries({ ...routeRules.headers }).map(([header, value]) => ` ${header}: ${value}`)].join("\n");
|
|
491
435
|
contents.push(headers);
|
|
492
436
|
}
|
|
493
437
|
if (existsSync(headersPath)) {
|
|
@@ -504,8 +448,8 @@ async function writeCFHeaders(nitro, outdir) {
|
|
|
504
448
|
async function writeCFPagesRedirects(nitro) {
|
|
505
449
|
const redirectsPath = join$1(nitro.options.output.dir, "_redirects");
|
|
506
450
|
const contents = [existsSync(join$1(nitro.options.output.publicDir, "404.html")) ? `${joinURL(nitro.options.baseURL, "/*")} ${joinURL(nitro.options.baseURL, "/404.html")} 404` : ""];
|
|
507
|
-
const rules = Object.entries(nitro.options.routeRules).sort((a
|
|
508
|
-
for (const [key, routeRules] of rules.filter(([_, routeRules
|
|
451
|
+
const rules = Object.entries(nitro.options.routeRules).sort((a, b) => a[0].split(/\/(?!\*)/).length - b[0].split(/\/(?!\*)/).length);
|
|
452
|
+
for (const [key, routeRules] of rules.filter(([_, routeRules]) => routeRules.redirect)) {
|
|
509
453
|
const code = routeRules.redirect.status;
|
|
510
454
|
const from = joinURL(nitro.options.baseURL, key.replace("/**", "/*"));
|
|
511
455
|
const to = hasProtocol(routeRules.redirect.to, { acceptRelative: true }) ? routeRules.redirect.to : joinURL(nitro.options.baseURL, routeRules.redirect.to);
|
|
@@ -529,9 +473,9 @@ async function enableNodeCompat(nitro) {
|
|
|
529
473
|
if (nitro.options.cloudflare.nodeCompat) nitro.options.unenv.push(unenvCfNodeCompat);
|
|
530
474
|
}
|
|
531
475
|
const extensionParsers = {
|
|
532
|
-
".json":
|
|
533
|
-
".jsonc":
|
|
534
|
-
".toml":
|
|
476
|
+
".json": r,
|
|
477
|
+
".jsonc": r,
|
|
478
|
+
".toml": i
|
|
535
479
|
};
|
|
536
480
|
async function readWranglerConfig(nitro) {
|
|
537
481
|
const configPath = await findNearestFile([
|
|
@@ -581,6 +525,12 @@ async function writeWranglerConfig(nitro, cfTarget) {
|
|
|
581
525
|
globs: ["**/*.mjs", "**/*.js"]
|
|
582
526
|
});
|
|
583
527
|
}
|
|
528
|
+
if (nitro.options.experimental.tasks && Object.keys(nitro.options.scheduledTasks || {}).length > 0 && cfTarget !== "pages") {
|
|
529
|
+
const schedules = Object.keys(nitro.options.scheduledTasks);
|
|
530
|
+
wranglerConfig.triggers = defu(wranglerConfig.triggers, { crons: [] });
|
|
531
|
+
const existingCrons = new Set(wranglerConfig.triggers.crons);
|
|
532
|
+
for (const schedule of schedules) if (!existingCrons.has(schedule)) wranglerConfig.triggers.crons.push(schedule);
|
|
533
|
+
}
|
|
584
534
|
await writeFile$1(wranglerConfigPath, JSON.stringify(wranglerConfig, null, 2), true);
|
|
585
535
|
const configPath = join$1(nitro.options.rootDir, ".wrangler/deploy/config.json");
|
|
586
536
|
await writeFile$1(configPath, JSON.stringify({ configPath: relative(dirname(configPath), wranglerConfigPath) }), true);
|
|
@@ -591,7 +541,6 @@ async function generateWorkerName(nitro) {
|
|
|
591
541
|
const subpath = relative(nitro.options.workspaceDir, nitro.options.rootDir);
|
|
592
542
|
return `${gitRepo || pkgName}/${subpath}`.toLowerCase().replace(/[^a-zA-Z0-9-]/g, "-").replace(/-$/, "");
|
|
593
543
|
}
|
|
594
|
-
|
|
595
544
|
//#endregion
|
|
596
545
|
//#region src/presets/cloudflare/dev.ts
|
|
597
546
|
async function cloudflareDevModule(nitro) {
|
|
@@ -635,7 +584,6 @@ async function cloudflareDevModule(nitro) {
|
|
|
635
584
|
extensions: [".mjs", ".ts"]
|
|
636
585
|
}));
|
|
637
586
|
}
|
|
638
|
-
|
|
639
587
|
//#endregion
|
|
640
588
|
//#region src/presets/cloudflare/entry-exports.ts
|
|
641
589
|
const RESOLVE_EXTENSIONS = [
|
|
@@ -665,7 +613,6 @@ function resolveExportsEntry(nitro) {
|
|
|
665
613
|
else if (entry && !nitro.options.cloudflare?.exports) nitro.logger.info(`Detected \`${prettyPath$1(entry)}\` as Cloudflare entrypoint.`);
|
|
666
614
|
return entry;
|
|
667
615
|
}
|
|
668
|
-
|
|
669
616
|
//#endregion
|
|
670
617
|
//#region src/presets/cloudflare/preset.ts
|
|
671
618
|
const cloudflarePages = defineNitroPreset({
|
|
@@ -741,57 +688,54 @@ const cloudflareDev = defineNitroPreset({
|
|
|
741
688
|
compatibilityDate: "2025-07-13",
|
|
742
689
|
dev: true
|
|
743
690
|
});
|
|
744
|
-
|
|
745
|
-
extends: "base-worker",
|
|
746
|
-
entry: "./cloudflare/runtime/cloudflare-module",
|
|
747
|
-
output: { publicDir: "{{ output.dir }}/public/{{ baseURL }}" },
|
|
748
|
-
exportConditions: ["workerd"],
|
|
749
|
-
minify: false,
|
|
750
|
-
commands: {
|
|
751
|
-
preview: "npx wrangler --cwd ./ dev",
|
|
752
|
-
deploy: "npx wrangler --cwd ./ deploy"
|
|
753
|
-
},
|
|
754
|
-
rollupConfig: { output: {
|
|
755
|
-
format: "esm",
|
|
756
|
-
exports: "named",
|
|
757
|
-
inlineDynamicImports: false
|
|
758
|
-
} },
|
|
759
|
-
wasm: {
|
|
760
|
-
lazy: false,
|
|
761
|
-
esmImport: true
|
|
762
|
-
},
|
|
763
|
-
hooks: {
|
|
764
|
-
"build:before": async (nitro) => {
|
|
765
|
-
nitro.options.unenv.push(unenvCfExternals);
|
|
766
|
-
await enableNodeCompat(nitro);
|
|
767
|
-
await setupEntryExports(nitro);
|
|
768
|
-
},
|
|
769
|
-
async compiled(nitro) {
|
|
770
|
-
await writeWranglerConfig(nitro, "module");
|
|
771
|
-
await writeCFHeaders(nitro, "public");
|
|
772
|
-
await writeFile$1(resolve$1(nitro.options.output.dir, "package.json"), JSON.stringify({
|
|
773
|
-
private: true,
|
|
774
|
-
main: "./server/index.mjs"
|
|
775
|
-
}, null, 2));
|
|
776
|
-
await writeFile$1(resolve$1(nitro.options.output.dir, "package-lock.json"), JSON.stringify({ lockfileVersion: 1 }, null, 2));
|
|
777
|
-
}
|
|
778
|
-
}
|
|
779
|
-
}, {
|
|
780
|
-
name: "cloudflare-module",
|
|
781
|
-
stdName: "cloudflare_workers"
|
|
782
|
-
});
|
|
783
|
-
const cloudflareDurable = defineNitroPreset({
|
|
784
|
-
extends: "cloudflare-module",
|
|
785
|
-
entry: "./cloudflare/runtime/cloudflare-durable"
|
|
786
|
-
}, { name: "cloudflare-durable" });
|
|
787
|
-
var preset_default$18 = [
|
|
691
|
+
var preset_default$19 = [
|
|
788
692
|
cloudflarePages,
|
|
789
693
|
cloudflarePagesStatic,
|
|
790
|
-
|
|
791
|
-
|
|
694
|
+
defineNitroPreset({
|
|
695
|
+
extends: "base-worker",
|
|
696
|
+
entry: "./cloudflare/runtime/cloudflare-module",
|
|
697
|
+
output: { publicDir: "{{ output.dir }}/public/{{ baseURL }}" },
|
|
698
|
+
exportConditions: ["workerd"],
|
|
699
|
+
minify: false,
|
|
700
|
+
commands: {
|
|
701
|
+
preview: "npx wrangler --cwd ./ dev",
|
|
702
|
+
deploy: "npx wrangler --cwd ./ deploy"
|
|
703
|
+
},
|
|
704
|
+
rollupConfig: { output: {
|
|
705
|
+
format: "esm",
|
|
706
|
+
exports: "named",
|
|
707
|
+
inlineDynamicImports: false
|
|
708
|
+
} },
|
|
709
|
+
wasm: {
|
|
710
|
+
lazy: false,
|
|
711
|
+
esmImport: true
|
|
712
|
+
},
|
|
713
|
+
hooks: {
|
|
714
|
+
"build:before": async (nitro) => {
|
|
715
|
+
nitro.options.unenv.push(unenvCfExternals);
|
|
716
|
+
await enableNodeCompat(nitro);
|
|
717
|
+
await setupEntryExports(nitro);
|
|
718
|
+
},
|
|
719
|
+
async compiled(nitro) {
|
|
720
|
+
await writeWranglerConfig(nitro, "module");
|
|
721
|
+
await writeCFHeaders(nitro, "public");
|
|
722
|
+
await writeFile$1(resolve$1(nitro.options.output.dir, "package.json"), JSON.stringify({
|
|
723
|
+
private: true,
|
|
724
|
+
main: "./server/index.mjs"
|
|
725
|
+
}, null, 2));
|
|
726
|
+
await writeFile$1(resolve$1(nitro.options.output.dir, "package-lock.json"), JSON.stringify({ lockfileVersion: 1 }, null, 2));
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}, {
|
|
730
|
+
name: "cloudflare-module",
|
|
731
|
+
stdName: "cloudflare_workers"
|
|
732
|
+
}),
|
|
733
|
+
defineNitroPreset({
|
|
734
|
+
extends: "cloudflare-module",
|
|
735
|
+
entry: "./cloudflare/runtime/cloudflare-durable"
|
|
736
|
+
}, { name: "cloudflare-durable" }),
|
|
792
737
|
cloudflareDev
|
|
793
738
|
];
|
|
794
|
-
|
|
795
739
|
//#endregion
|
|
796
740
|
//#region src/presets/deno/unenv/node-compat.ts
|
|
797
741
|
const builtnNodeModules = [
|
|
@@ -863,7 +807,6 @@ const builtnNodeModules = [
|
|
|
863
807
|
"node:worker_threads",
|
|
864
808
|
"node:zlib"
|
|
865
809
|
];
|
|
866
|
-
|
|
867
810
|
//#endregion
|
|
868
811
|
//#region src/presets/deno/unenv/preset.ts
|
|
869
812
|
const unenvDeno = {
|
|
@@ -878,10 +821,7 @@ const unenvDeno = {
|
|
|
878
821
|
Buffer: ["node:buffer", "Buffer"]
|
|
879
822
|
}
|
|
880
823
|
};
|
|
881
|
-
|
|
882
|
-
//#endregion
|
|
883
|
-
//#region src/presets/deno/preset.ts
|
|
884
|
-
const denoDeploy = defineNitroPreset({
|
|
824
|
+
var preset_default$18 = [defineNitroPreset({
|
|
885
825
|
entry: "./deno/runtime/deno-deploy",
|
|
886
826
|
manifest: { deploymentId: process.env.DENO_DEPLOYMENT_ID },
|
|
887
827
|
exportConditions: ["deno"],
|
|
@@ -889,7 +829,7 @@ const denoDeploy = defineNitroPreset({
|
|
|
889
829
|
serveStatic: "deno",
|
|
890
830
|
commands: {
|
|
891
831
|
preview: "",
|
|
892
|
-
deploy: "cd ./ && deployctl deploy
|
|
832
|
+
deploy: "cd ./ && deno run -A jsr:@deno/deployctl deploy server/index.ts"
|
|
893
833
|
},
|
|
894
834
|
unenv: unenvDeno,
|
|
895
835
|
rollupConfig: {
|
|
@@ -901,8 +841,7 @@ const denoDeploy = defineNitroPreset({
|
|
|
901
841
|
format: "esm"
|
|
902
842
|
}
|
|
903
843
|
}
|
|
904
|
-
}, { name: "deno-deploy" })
|
|
905
|
-
const denoServer = defineNitroPreset({
|
|
844
|
+
}, { name: "deno-deploy" }), defineNitroPreset({
|
|
906
845
|
entry: "./deno/runtime/deno-server",
|
|
907
846
|
serveStatic: true,
|
|
908
847
|
exportConditions: ["deno"],
|
|
@@ -917,25 +856,17 @@ const denoServer = defineNitroPreset({
|
|
|
917
856
|
}, {
|
|
918
857
|
aliases: ["deno"],
|
|
919
858
|
name: "deno-server"
|
|
920
|
-
});
|
|
921
|
-
var preset_default$17 = [
|
|
922
|
-
|
|
923
|
-
//#endregion
|
|
924
|
-
//#region src/presets/digitalocean/preset.ts
|
|
925
|
-
const digitalOcean = defineNitroPreset({
|
|
859
|
+
})];
|
|
860
|
+
var preset_default$17 = [defineNitroPreset({
|
|
926
861
|
extends: "node-server",
|
|
927
862
|
serveStatic: true
|
|
928
|
-
}, { name: "digital-ocean" });
|
|
929
|
-
var preset_default$16 = [
|
|
930
|
-
|
|
931
|
-
//#endregion
|
|
932
|
-
//#region src/presets/firebase/preset.ts
|
|
933
|
-
const firebaseAppHosting = defineNitroPreset({
|
|
863
|
+
}, { name: "digital-ocean" })];
|
|
864
|
+
var preset_default$16 = [defineNitroPreset({
|
|
934
865
|
extends: "node-server",
|
|
935
866
|
serveStatic: true,
|
|
936
867
|
hooks: { async compiled(nitro) {
|
|
937
868
|
const serverEntry = join$1(nitro.options.output.serverDir, "index.mjs");
|
|
938
|
-
await writeFile$1(join$1(nitro.options.rootDir, ".apphosting/bundle.yaml"),
|
|
869
|
+
await writeFile$1(join$1(nitro.options.rootDir, ".apphosting/bundle.yaml"), a({
|
|
939
870
|
version: "v1",
|
|
940
871
|
runConfig: {
|
|
941
872
|
runCommand: `node ${relative$1(nitro.options.rootDir, serverEntry)}`,
|
|
@@ -953,30 +884,16 @@ const firebaseAppHosting = defineNitroPreset({
|
|
|
953
884
|
}, {
|
|
954
885
|
name: "firebase-app-hosting",
|
|
955
886
|
stdName: "firebase_app_hosting"
|
|
956
|
-
});
|
|
957
|
-
var preset_default$15 = [
|
|
958
|
-
|
|
959
|
-
//#endregion
|
|
960
|
-
//#region src/presets/flightcontrol/preset.ts
|
|
961
|
-
const flightControl = defineNitroPreset({
|
|
887
|
+
})];
|
|
888
|
+
var preset_default$15 = [defineNitroPreset({
|
|
962
889
|
extends: "node-server",
|
|
963
890
|
serveStatic: true
|
|
964
|
-
}, { name: "flight-control" });
|
|
965
|
-
var preset_default$14 = [
|
|
966
|
-
|
|
967
|
-
//#endregion
|
|
968
|
-
//#region src/presets/genezio/preset.ts
|
|
969
|
-
const genezio = defineNitroPreset({ extends: "aws_lambda" }, { name: "genezio" });
|
|
970
|
-
var preset_default$13 = [genezio];
|
|
971
|
-
|
|
972
|
-
//#endregion
|
|
973
|
-
//#region src/presets/heroku/preset.ts
|
|
974
|
-
const heroku = defineNitroPreset({
|
|
891
|
+
}, { name: "flight-control" })];
|
|
892
|
+
var preset_default$14 = [defineNitroPreset({ extends: "aws_lambda" }, { name: "genezio" })];
|
|
893
|
+
var preset_default$13 = [defineNitroPreset({
|
|
975
894
|
extends: "node-server",
|
|
976
895
|
serveStatic: true
|
|
977
|
-
}, { name: "heroku" });
|
|
978
|
-
var preset_default$12 = [heroku];
|
|
979
|
-
|
|
896
|
+
}, { name: "heroku" })];
|
|
980
897
|
//#endregion
|
|
981
898
|
//#region src/presets/iis/utils.ts
|
|
982
899
|
async function writeIISFiles(nitro) {
|
|
@@ -993,7 +910,7 @@ async function writeIISNodeFiles(nitro) {
|
|
|
993
910
|
`);
|
|
994
911
|
}
|
|
995
912
|
async function iisnodeXmlTemplate(nitro) {
|
|
996
|
-
const path
|
|
913
|
+
const path = resolve$1(nitro.options.rootDir, "web.config");
|
|
997
914
|
const originalString = `<?xml version="1.0" encoding="utf-8"?>
|
|
998
915
|
<!--
|
|
999
916
|
This configuration file is required if iisnode is used to run node processes behind
|
|
@@ -1059,8 +976,8 @@ async function iisnodeXmlTemplate(nitro) {
|
|
|
1059
976
|
</system.webServer>
|
|
1060
977
|
</configuration>
|
|
1061
978
|
`;
|
|
1062
|
-
if (existsSync(path
|
|
1063
|
-
const fileString = await readFile(path
|
|
979
|
+
if (existsSync(path)) {
|
|
980
|
+
const fileString = await readFile(path, "utf8");
|
|
1064
981
|
const originalWebConfig = await parseXmlDoc(originalString);
|
|
1065
982
|
const fileWebConfig = await parseXmlDoc(fileString);
|
|
1066
983
|
if (nitro.options.iis?.mergeConfig && !nitro.options.iis.overrideConfig) return buildNewXmlDoc(defu(fileWebConfig, originalWebConfig));
|
|
@@ -1069,7 +986,7 @@ async function iisnodeXmlTemplate(nitro) {
|
|
|
1069
986
|
return originalString;
|
|
1070
987
|
}
|
|
1071
988
|
async function iisXmlTemplate(nitro) {
|
|
1072
|
-
const path
|
|
989
|
+
const path = resolve$1(nitro.options.rootDir, "web.config");
|
|
1073
990
|
const originalString = `<?xml version="1.0" encoding="UTF-8"?>
|
|
1074
991
|
<configuration>
|
|
1075
992
|
<system.webServer>
|
|
@@ -1085,8 +1002,8 @@ async function iisXmlTemplate(nitro) {
|
|
|
1085
1002
|
</system.webServer>
|
|
1086
1003
|
</configuration>
|
|
1087
1004
|
`;
|
|
1088
|
-
if (existsSync(path
|
|
1089
|
-
const fileString = await readFile(path
|
|
1005
|
+
if (existsSync(path)) {
|
|
1006
|
+
const fileString = await readFile(path, "utf8");
|
|
1090
1007
|
const originalWebConfig = await parseXmlDoc(originalString);
|
|
1091
1008
|
const fileWebConfig = await parseXmlDoc(fileString);
|
|
1092
1009
|
if (nitro.options.iis?.mergeConfig && !nitro.options.iis.overrideConfig) return buildNewXmlDoc(defu(fileWebConfig, originalWebConfig));
|
|
@@ -1108,33 +1025,23 @@ async function buildNewXmlDoc(xmlObj) {
|
|
|
1108
1025
|
const { Builder } = await import("xml2js");
|
|
1109
1026
|
return new Builder().buildObject({ ...xmlObj });
|
|
1110
1027
|
}
|
|
1111
|
-
|
|
1112
|
-
//#endregion
|
|
1113
|
-
//#region src/presets/iis/preset.ts
|
|
1114
|
-
const iisHandler = defineNitroPreset({
|
|
1028
|
+
var preset_default$12 = [defineNitroPreset({
|
|
1115
1029
|
extends: "node-server",
|
|
1116
1030
|
serveStatic: true,
|
|
1117
1031
|
hooks: { async compiled(nitro) {
|
|
1118
1032
|
await writeIISFiles(nitro);
|
|
1119
1033
|
} }
|
|
1120
|
-
}, { name: "iis-handler" })
|
|
1121
|
-
const iisNode = defineNitroPreset({
|
|
1034
|
+
}, { name: "iis-handler" }), defineNitroPreset({
|
|
1122
1035
|
extends: "node-server",
|
|
1123
1036
|
serveStatic: true,
|
|
1124
1037
|
hooks: { async compiled(nitro) {
|
|
1125
1038
|
await writeIISNodeFiles(nitro);
|
|
1126
1039
|
} }
|
|
1127
|
-
}, { name: "iis-node" });
|
|
1128
|
-
var preset_default$11 = [
|
|
1129
|
-
|
|
1130
|
-
//#endregion
|
|
1131
|
-
//#region src/presets/koyeb/preset.ts
|
|
1132
|
-
const koyeb = defineNitroPreset({
|
|
1040
|
+
}, { name: "iis-node" })];
|
|
1041
|
+
var preset_default$11 = [defineNitroPreset({
|
|
1133
1042
|
extends: "node-server",
|
|
1134
1043
|
serveStatic: true
|
|
1135
|
-
}, { name: "koyeb" });
|
|
1136
|
-
var preset_default$10 = [koyeb];
|
|
1137
|
-
|
|
1044
|
+
}, { name: "koyeb" })];
|
|
1138
1045
|
//#endregion
|
|
1139
1046
|
//#region src/presets/netlify/utils.ts
|
|
1140
1047
|
async function writeRedirects(nitro) {
|
|
@@ -1144,8 +1051,8 @@ async function writeRedirects(nitro) {
|
|
|
1144
1051
|
const staticFallback = existsSync(join$1(nitro.options.output.publicDir, "404.html")) ? "/* /404.html 404" : "";
|
|
1145
1052
|
contents += staticFallback;
|
|
1146
1053
|
}
|
|
1147
|
-
const rules = Object.entries(nitro.options.routeRules).sort((a
|
|
1148
|
-
for (const [key, routeRules] of rules.filter(([_, routeRules
|
|
1054
|
+
const rules = Object.entries(nitro.options.routeRules).sort((a, b) => a[0].split(/\/(?!\*)/).length - b[0].split(/\/(?!\*)/).length);
|
|
1055
|
+
for (const [key, routeRules] of rules.filter(([_, routeRules]) => routeRules.redirect)) {
|
|
1149
1056
|
let code = routeRules.redirect.status;
|
|
1150
1057
|
if (code === 307) code = 302;
|
|
1151
1058
|
if (code === 308) code = 301;
|
|
@@ -1165,9 +1072,9 @@ async function writeRedirects(nitro) {
|
|
|
1165
1072
|
async function writeHeaders(nitro) {
|
|
1166
1073
|
const headersPath = join$1(nitro.options.output.publicDir, "_headers");
|
|
1167
1074
|
let contents = "";
|
|
1168
|
-
const rules = Object.entries(nitro.options.routeRules).sort((a
|
|
1169
|
-
for (const [path
|
|
1170
|
-
const headers = [path
|
|
1075
|
+
const rules = Object.entries(nitro.options.routeRules).sort((a, b) => b[0].split(/\/(?!\*)/).length - a[0].split(/\/(?!\*)/).length);
|
|
1076
|
+
for (const [path, routeRules] of rules.filter(([_, routeRules]) => routeRules.headers)) {
|
|
1077
|
+
const headers = [path.replace("/**", "/*"), ...Object.entries({ ...routeRules.headers }).map(([header, value]) => ` ${header}: ${value}`)].join("\n");
|
|
1171
1078
|
contents += headers + "\n";
|
|
1172
1079
|
}
|
|
1173
1080
|
if (existsSync(headersPath)) {
|
|
@@ -1182,7 +1089,7 @@ async function writeHeaders(nitro) {
|
|
|
1182
1089
|
await promises.writeFile(headersPath, contents);
|
|
1183
1090
|
}
|
|
1184
1091
|
function getStaticPaths(publicAssets, baseURL) {
|
|
1185
|
-
return ["/.netlify/*", ...publicAssets.filter((a
|
|
1092
|
+
return ["/.netlify/*", ...publicAssets.filter((a) => a.fallthrough !== true && a.baseURL && a.baseURL !== "/").map((a) => joinURL(baseURL, a.baseURL, "*"))];
|
|
1186
1093
|
}
|
|
1187
1094
|
function generateNetlifyFunction(nitro) {
|
|
1188
1095
|
return `
|
|
@@ -1201,93 +1108,86 @@ export const config = {
|
|
|
1201
1108
|
function getGeneratorString(nitro) {
|
|
1202
1109
|
return `${nitro.options.framework.name}@${nitro.options.framework.version}`;
|
|
1203
1110
|
}
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
nitro.options.netlify
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
static: true
|
|
1284
|
-
});
|
|
1285
|
-
var preset_default$9 = [
|
|
1286
|
-
netlify,
|
|
1287
|
-
netlifyEdge,
|
|
1288
|
-
netlifyStatic
|
|
1111
|
+
var preset_default$10 = [
|
|
1112
|
+
defineNitroPreset({
|
|
1113
|
+
entry: "./netlify/runtime/netlify",
|
|
1114
|
+
manifest: { deploymentId: process.env.DEPLOY_ID },
|
|
1115
|
+
output: {
|
|
1116
|
+
dir: "{{ rootDir }}/.netlify/functions-internal",
|
|
1117
|
+
publicDir: "{{ rootDir }}/dist/{{ baseURL }}"
|
|
1118
|
+
},
|
|
1119
|
+
prerender: { autoSubfolderIndex: false },
|
|
1120
|
+
rollupConfig: { output: { entryFileNames: "main.mjs" } },
|
|
1121
|
+
hooks: { async compiled(nitro) {
|
|
1122
|
+
await writeHeaders(nitro);
|
|
1123
|
+
await writeRedirects(nitro);
|
|
1124
|
+
await promises.writeFile(join$1(nitro.options.output.dir, "server", "server.mjs"), generateNetlifyFunction(nitro));
|
|
1125
|
+
if (nitro.options.netlify?.images) {
|
|
1126
|
+
nitro.options.netlify.config ||= {};
|
|
1127
|
+
nitro.options.netlify.config.images ||= nitro.options.netlify?.images;
|
|
1128
|
+
}
|
|
1129
|
+
if (Object.keys(nitro.options.netlify?.config || {}).length > 0) {
|
|
1130
|
+
const configPath = join$1(nitro.options.output.dir, "../deploy/v1/config.json");
|
|
1131
|
+
await promises.mkdir(dirname$1(configPath), { recursive: true });
|
|
1132
|
+
await promises.writeFile(configPath, JSON.stringify(nitro.options.netlify?.config), "utf8");
|
|
1133
|
+
}
|
|
1134
|
+
} }
|
|
1135
|
+
}, {
|
|
1136
|
+
name: "netlify",
|
|
1137
|
+
stdName: "netlify"
|
|
1138
|
+
}),
|
|
1139
|
+
defineNitroPreset({
|
|
1140
|
+
extends: "base-worker",
|
|
1141
|
+
entry: "./netlify/runtime/netlify-edge",
|
|
1142
|
+
manifest: { deploymentId: process.env.DEPLOY_ID },
|
|
1143
|
+
exportConditions: ["netlify"],
|
|
1144
|
+
output: {
|
|
1145
|
+
serverDir: "{{ rootDir }}/.netlify/edge-functions/server",
|
|
1146
|
+
publicDir: "{{ rootDir }}/dist/{{ baseURL }}"
|
|
1147
|
+
},
|
|
1148
|
+
prerender: { autoSubfolderIndex: false },
|
|
1149
|
+
rollupConfig: { output: {
|
|
1150
|
+
entryFileNames: "server.js",
|
|
1151
|
+
format: "esm"
|
|
1152
|
+
} },
|
|
1153
|
+
unenv: unenvDeno,
|
|
1154
|
+
hooks: { async compiled(nitro) {
|
|
1155
|
+
await writeHeaders(nitro);
|
|
1156
|
+
await writeRedirects(nitro);
|
|
1157
|
+
const manifest = {
|
|
1158
|
+
version: 1,
|
|
1159
|
+
functions: [{
|
|
1160
|
+
path: "/*",
|
|
1161
|
+
excludedPath: getStaticPaths(nitro.options.publicAssets, nitro.options.baseURL),
|
|
1162
|
+
name: "edge server handler",
|
|
1163
|
+
function: "server",
|
|
1164
|
+
generator: getGeneratorString(nitro)
|
|
1165
|
+
}]
|
|
1166
|
+
};
|
|
1167
|
+
const manifestPath = join$1(nitro.options.rootDir, ".netlify/edge-functions/manifest.json");
|
|
1168
|
+
await promises.mkdir(dirname$1(manifestPath), { recursive: true });
|
|
1169
|
+
await promises.writeFile(manifestPath, JSON.stringify(manifest, null, 2));
|
|
1170
|
+
} }
|
|
1171
|
+
}, { name: "netlify-edge" }),
|
|
1172
|
+
defineNitroPreset({
|
|
1173
|
+
extends: "static",
|
|
1174
|
+
manifest: { deploymentId: process.env.DEPLOY_ID },
|
|
1175
|
+
output: {
|
|
1176
|
+
dir: "{{ rootDir }}/dist",
|
|
1177
|
+
publicDir: "{{ rootDir }}/dist/{{ baseURL }}"
|
|
1178
|
+
},
|
|
1179
|
+
prerender: { autoSubfolderIndex: false },
|
|
1180
|
+
commands: { preview: "npx serve ./" },
|
|
1181
|
+
hooks: { async compiled(nitro) {
|
|
1182
|
+
await writeHeaders(nitro);
|
|
1183
|
+
await writeRedirects(nitro);
|
|
1184
|
+
} }
|
|
1185
|
+
}, {
|
|
1186
|
+
name: "netlify-static",
|
|
1187
|
+
stdName: "netlify",
|
|
1188
|
+
static: true
|
|
1189
|
+
})
|
|
1289
1190
|
];
|
|
1290
|
-
|
|
1291
1191
|
//#endregion
|
|
1292
1192
|
//#region src/presets/node/cluster.ts
|
|
1293
1193
|
const nodeCluster = defineNitroPreset({
|
|
@@ -1321,43 +1221,27 @@ if (cluster.isPrimary) {
|
|
|
1321
1221
|
}
|
|
1322
1222
|
`;
|
|
1323
1223
|
}
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
aliases: ["node"]
|
|
1334
|
-
});
|
|
1335
|
-
const nodeMiddleware = defineNitroPreset({ entry: "./node/runtime/node-middleware" }, { name: "node-middleware" });
|
|
1336
|
-
var preset_default$8 = [
|
|
1337
|
-
nodeServer,
|
|
1224
|
+
var preset_default$9 = [
|
|
1225
|
+
defineNitroPreset({
|
|
1226
|
+
entry: "./node/runtime/node-server",
|
|
1227
|
+
serveStatic: true,
|
|
1228
|
+
commands: { preview: "node ./server/index.mjs" }
|
|
1229
|
+
}, {
|
|
1230
|
+
name: "node-server",
|
|
1231
|
+
aliases: ["node"]
|
|
1232
|
+
}),
|
|
1338
1233
|
nodeCluster,
|
|
1339
|
-
|
|
1234
|
+
defineNitroPreset({ entry: "./node/runtime/node-middleware" }, { name: "node-middleware" })
|
|
1340
1235
|
];
|
|
1341
|
-
|
|
1342
|
-
//#endregion
|
|
1343
|
-
//#region src/presets/platform.sh/preset.ts
|
|
1344
|
-
const platformSh = defineNitroPreset({
|
|
1236
|
+
var preset_default$8 = [defineNitroPreset({
|
|
1345
1237
|
extends: "node-server",
|
|
1346
1238
|
serveStatic: true
|
|
1347
|
-
}, { name: "platform-sh" });
|
|
1348
|
-
var preset_default$7 = [
|
|
1349
|
-
|
|
1350
|
-
//#endregion
|
|
1351
|
-
//#region src/presets/render.com/preset.ts
|
|
1352
|
-
const renderCom = defineNitroPreset({
|
|
1239
|
+
}, { name: "platform-sh" })];
|
|
1240
|
+
var preset_default$7 = [defineNitroPreset({
|
|
1353
1241
|
extends: "node-server",
|
|
1354
1242
|
serveStatic: true
|
|
1355
|
-
}, { name: "render-com" });
|
|
1356
|
-
var preset_default$6 = [
|
|
1357
|
-
|
|
1358
|
-
//#endregion
|
|
1359
|
-
//#region src/presets/standard/preset.ts
|
|
1360
|
-
const standard = defineNitroPreset({
|
|
1243
|
+
}, { name: "render-com" })];
|
|
1244
|
+
var preset_default$6 = [defineNitroPreset({
|
|
1361
1245
|
entry: "./standard/runtime/server",
|
|
1362
1246
|
serveStatic: false,
|
|
1363
1247
|
output: { publicDir: "{{ output.dir }}/public/{{ baseURL }}" },
|
|
@@ -1369,12 +1253,8 @@ const standard = defineNitroPreset({
|
|
|
1369
1253
|
"srvx/node": "srvx/node",
|
|
1370
1254
|
"srvx/generic": "srvx/generic"
|
|
1371
1255
|
}
|
|
1372
|
-
}, { name: "standard" });
|
|
1373
|
-
var preset_default$5 = [
|
|
1374
|
-
|
|
1375
|
-
//#endregion
|
|
1376
|
-
//#region src/presets/stormkit/preset.ts
|
|
1377
|
-
const stormkit = defineNitroPreset({
|
|
1256
|
+
}, { name: "standard" })];
|
|
1257
|
+
var preset_default$5 = [defineNitroPreset({
|
|
1378
1258
|
entry: "./stormkit/runtime/stormkit",
|
|
1379
1259
|
output: {
|
|
1380
1260
|
dir: "{{ rootDir }}/.stormkit",
|
|
@@ -1383,16 +1263,26 @@ const stormkit = defineNitroPreset({
|
|
|
1383
1263
|
}, {
|
|
1384
1264
|
name: "stormkit",
|
|
1385
1265
|
stdName: "stormkit"
|
|
1386
|
-
});
|
|
1387
|
-
var preset_default$4 = [stormkit];
|
|
1388
|
-
|
|
1266
|
+
})];
|
|
1389
1267
|
//#endregion
|
|
1390
1268
|
//#region src/presets/vercel/runtime/isr.ts
|
|
1391
1269
|
const ISR_URL_PARAM = "__isr_route";
|
|
1392
|
-
|
|
1393
1270
|
//#endregion
|
|
1394
1271
|
//#region src/presets/vercel/utils.ts
|
|
1395
|
-
const SUPPORTED_NODE_VERSIONS = [
|
|
1272
|
+
const SUPPORTED_NODE_VERSIONS = [
|
|
1273
|
+
20,
|
|
1274
|
+
22,
|
|
1275
|
+
24
|
|
1276
|
+
];
|
|
1277
|
+
const UNSUPPORTED_PROXY_OPTIONS = [
|
|
1278
|
+
"headers",
|
|
1279
|
+
"forwardHeaders",
|
|
1280
|
+
"filterHeaders",
|
|
1281
|
+
"fetchOptions",
|
|
1282
|
+
"cookieDomainRewrite",
|
|
1283
|
+
"cookiePathRewrite",
|
|
1284
|
+
"onResponse"
|
|
1285
|
+
];
|
|
1396
1286
|
const FALLBACK_ROUTE = "/__server";
|
|
1397
1287
|
const ISR_SUFFIX = "-isr";
|
|
1398
1288
|
const SAFE_FS_CHAR_RE = /[^a-zA-Z0-9_.[\]/]/g;
|
|
@@ -1422,7 +1312,7 @@ async function generateFunctionFiles(nitro) {
|
|
|
1422
1312
|
await writePrerenderConfig(funcPrefix + ".prerender-config.json", value.isr, nitro.options.vercel?.config?.bypassToken);
|
|
1423
1313
|
}
|
|
1424
1314
|
if (o11Routes.length === 0) return;
|
|
1425
|
-
const _getRouteRules = (path
|
|
1315
|
+
const _getRouteRules = (path) => defu({}, ...nitro.routing.routeRules.matchAll("", path).reverse());
|
|
1426
1316
|
for (const route of o11Routes) {
|
|
1427
1317
|
if (_getRouteRules(route.src).isr) continue;
|
|
1428
1318
|
const funcPrefix = resolve$1(nitro.options.output.serverDir, "..", route.dest);
|
|
@@ -1436,13 +1326,18 @@ async function generateStaticFiles(nitro) {
|
|
|
1436
1326
|
await writeFile$1(buildConfigPath, JSON.stringify(buildConfig, null, 2));
|
|
1437
1327
|
}
|
|
1438
1328
|
function generateBuildConfig(nitro, o11Routes) {
|
|
1439
|
-
const rules = Object.entries(nitro.options.routeRules).sort((a
|
|
1329
|
+
const rules = Object.entries(nitro.options.routeRules).sort((a, b) => b[0].split(/\/(?!\*)/).length - a[0].split(/\/(?!\*)/).length);
|
|
1330
|
+
const cdnProxyPaths = new Set(rules.filter(([_, routeRules]) => routeRules.proxy && canUseVercelRewrite(routeRules.proxy)).map(([path]) => path));
|
|
1440
1331
|
const config = defu(nitro.options.vercel?.config, {
|
|
1441
1332
|
version: 3,
|
|
1333
|
+
framework: {
|
|
1334
|
+
name: nitro.options.framework.name,
|
|
1335
|
+
version: nitro.options.framework.version
|
|
1336
|
+
},
|
|
1442
1337
|
overrides: { ...Object.fromEntries((nitro._prerenderedRoutes?.filter((r) => r.fileName !== r.route) || []).map(({ route, fileName }) => [withoutLeadingSlash(fileName), { path: route.replace(/^\//, "") }])) },
|
|
1443
1338
|
routes: [
|
|
1444
|
-
...rules.filter(([
|
|
1445
|
-
let route = { src: path
|
|
1339
|
+
...rules.filter(([path, routeRules]) => (routeRules.redirect || routeRules.headers) && !cdnProxyPaths.has(path)).map(([path, routeRules]) => {
|
|
1340
|
+
let route = { src: path.replace("/**", "/(.*)") };
|
|
1446
1341
|
if (routeRules.redirect) route = defu(route, {
|
|
1447
1342
|
status: routeRules.redirect.status,
|
|
1448
1343
|
headers: { Location: routeRules.redirect.to.replace("/**", "/$1") }
|
|
@@ -1450,6 +1345,15 @@ function generateBuildConfig(nitro, o11Routes) {
|
|
|
1450
1345
|
if (routeRules.headers) route = defu(route, { headers: routeRules.headers });
|
|
1451
1346
|
return route;
|
|
1452
1347
|
}),
|
|
1348
|
+
...rules.filter(([path]) => cdnProxyPaths.has(path)).map(([path, routeRules]) => {
|
|
1349
|
+
const proxy = routeRules.proxy;
|
|
1350
|
+
const route = {
|
|
1351
|
+
src: path.replace("/**", "/(.*)"),
|
|
1352
|
+
dest: proxy.to.replace("/**", "/$1")
|
|
1353
|
+
};
|
|
1354
|
+
if (routeRules.headers) route.headers = routeRules.headers;
|
|
1355
|
+
return route;
|
|
1356
|
+
}),
|
|
1453
1357
|
...nitro.options.vercel?.skewProtection && nitro.options.manifest?.deploymentId ? [{
|
|
1454
1358
|
src: "/.*",
|
|
1455
1359
|
has: [{
|
|
@@ -1468,6 +1372,13 @@ function generateBuildConfig(nitro, o11Routes) {
|
|
|
1468
1372
|
{ handle: "filesystem" }
|
|
1469
1373
|
]
|
|
1470
1374
|
});
|
|
1375
|
+
if (nitro.options.experimental.tasks && Object.keys(nitro.options.scheduledTasks || {}).length > 0) {
|
|
1376
|
+
const cronPath = nitro.options.vercel.cronHandlerRoute || "/_vercel/cron";
|
|
1377
|
+
config.crons = [...Object.keys(nitro.options.scheduledTasks).map((schedule) => ({
|
|
1378
|
+
path: cronPath,
|
|
1379
|
+
schedule
|
|
1380
|
+
})), ...config.crons || []];
|
|
1381
|
+
}
|
|
1471
1382
|
if (nitro.options.static) return config;
|
|
1472
1383
|
config.routes.push(...nitro.options.routeRules["/"]?.isr ? [{
|
|
1473
1384
|
src: `(?<${ISR_URL_PARAM}>/)`,
|
|
@@ -1506,7 +1417,7 @@ function deprecateSWR(nitro) {
|
|
|
1506
1417
|
hasLegacyOptions = true;
|
|
1507
1418
|
}
|
|
1508
1419
|
}
|
|
1509
|
-
if (hasLegacyOptions && !
|
|
1420
|
+
if (hasLegacyOptions && !v) nitro.logger.warn("Nitro now uses `isr` option to configure ISR behavior on Vercel. Backwards-compatible support for `static` and `swr` options within the Vercel Build Options API will be removed in the future versions. Set `future.nativeSWR: true` nitro config disable this warning.");
|
|
1510
1421
|
}
|
|
1511
1422
|
async function resolveVercelRuntime(nitro) {
|
|
1512
1423
|
let runtime = nitro.options.vercel?.functions?.runtime;
|
|
@@ -1514,7 +1425,7 @@ async function resolveVercelRuntime(nitro) {
|
|
|
1514
1425
|
if ((await readVercelConfig(nitro.options.rootDir)).bunVersion || "Bun" in globalThis) runtime = "bun1.x";
|
|
1515
1426
|
else {
|
|
1516
1427
|
const systemNodeVersion = getSystemNodeVersion();
|
|
1517
|
-
runtime = `nodejs${SUPPORTED_NODE_VERSIONS.find((version
|
|
1428
|
+
runtime = `nodejs${SUPPORTED_NODE_VERSIONS.find((version) => version >= systemNodeVersion) ?? SUPPORTED_NODE_VERSIONS.at(-1)}.x`;
|
|
1518
1429
|
}
|
|
1519
1430
|
nitro.options.vercel ??= {};
|
|
1520
1431
|
nitro.options.vercel.functions ??= {};
|
|
@@ -1528,9 +1439,20 @@ async function readVercelConfig(rootDir) {
|
|
|
1528
1439
|
function _hasProp(obj, prop) {
|
|
1529
1440
|
return obj && typeof obj === "object" && prop in obj;
|
|
1530
1441
|
}
|
|
1442
|
+
/**
|
|
1443
|
+
* Check if a proxy rule can be offloaded to a Vercel CDN rewrite.
|
|
1444
|
+
* A proxy is eligible when it targets an external URL and uses no
|
|
1445
|
+
* ProxyOptions that Vercel's routing layer cannot handle at the edge.
|
|
1446
|
+
*/
|
|
1447
|
+
function canUseVercelRewrite(proxy) {
|
|
1448
|
+
if (!proxy?.to) return false;
|
|
1449
|
+
if (!/^https?:\/\//.test(proxy.to.replace(/\/\*\*$/, ""))) return false;
|
|
1450
|
+
for (const key of UNSUPPORTED_PROXY_OPTIONS) if (proxy[key] !== void 0) return false;
|
|
1451
|
+
return true;
|
|
1452
|
+
}
|
|
1531
1453
|
function getObservabilityRoutes(nitro) {
|
|
1532
1454
|
if ((nitro.options.compatibilityDate.vercel || nitro.options.compatibilityDate.default) < "2025-07-15") return [];
|
|
1533
|
-
const routePatterns = [...new Set([...nitro.options.ssrRoutes || [], ...[...nitro.scannedHandlers, ...nitro.options.handlers].filter((h
|
|
1455
|
+
const routePatterns = [...new Set([...nitro.options.ssrRoutes || [], ...[...nitro.scannedHandlers, ...nitro.options.handlers].filter((h) => !h.middleware && h.route).map((h) => h.route)])];
|
|
1534
1456
|
const staticRoutes = [];
|
|
1535
1457
|
const dynamicRoutes = [];
|
|
1536
1458
|
const catchAllRoutes = [];
|
|
@@ -1544,7 +1466,7 @@ function getObservabilityRoutes(nitro) {
|
|
|
1544
1466
|
];
|
|
1545
1467
|
}
|
|
1546
1468
|
function normalizeRoutes(routes) {
|
|
1547
|
-
return routes.sort((a
|
|
1469
|
+
return routes.sort((a, b) => b.localeCompare(a)).map((route) => ({
|
|
1548
1470
|
src: normalizeRouteSrc(route),
|
|
1549
1471
|
dest: normalizeRouteDest(route)
|
|
1550
1472
|
}));
|
|
@@ -1580,16 +1502,16 @@ async function writePrerenderConfig(filename, isrConfig, bypassToken) {
|
|
|
1580
1502
|
bypassToken,
|
|
1581
1503
|
...isrConfig
|
|
1582
1504
|
};
|
|
1583
|
-
if (prerenderConfig.allowQuery && !prerenderConfig.allowQuery.includes(
|
|
1505
|
+
if (prerenderConfig.allowQuery && !prerenderConfig.allowQuery.includes("__isr_route")) prerenderConfig.allowQuery.push(ISR_URL_PARAM);
|
|
1584
1506
|
await writeFile$1(filename, JSON.stringify(prerenderConfig, null, 2));
|
|
1585
1507
|
}
|
|
1586
|
-
|
|
1587
|
-
//#endregion
|
|
1588
|
-
//#region src/presets/vercel/preset.ts
|
|
1589
|
-
const vercel = defineNitroPreset({
|
|
1508
|
+
var preset_default$4 = [defineNitroPreset({
|
|
1590
1509
|
entry: "./vercel/runtime/vercel.{format}",
|
|
1591
1510
|
manifest: { deploymentId: process.env.VERCEL_DEPLOYMENT_ID },
|
|
1592
|
-
vercel: {
|
|
1511
|
+
vercel: {
|
|
1512
|
+
skewProtection: !!process.env.VERCEL_SKEW_PROTECTION_ENABLED,
|
|
1513
|
+
cronHandlerRoute: "/_vercel/cron"
|
|
1514
|
+
},
|
|
1593
1515
|
output: {
|
|
1594
1516
|
dir: "{{ rootDir }}/.vercel/output",
|
|
1595
1517
|
serverDir: "{{ output.dir }}/functions/__server.func",
|
|
@@ -1606,9 +1528,14 @@ const vercel = defineNitroPreset({
|
|
|
1606
1528
|
if (runtime.startsWith("bun") && !nitro.options.exportConditions.includes("bun")) nitro.options.exportConditions.push("bun");
|
|
1607
1529
|
logger.info(`Using \`${runtime}\` runtime.`);
|
|
1608
1530
|
let serverFormat = nitro.options.vercel?.entryFormat;
|
|
1609
|
-
if (!serverFormat) serverFormat = nitro.routing.routes.routes.flatMap((r) => r.data).some((h
|
|
1531
|
+
if (!serverFormat) serverFormat = nitro.routing.routes.routes.flatMap((r) => r.data).some((h) => h.format === "node") ? "node" : "web";
|
|
1610
1532
|
logger.info(`Using \`${serverFormat}\` entry format.`);
|
|
1611
1533
|
nitro.options.entry = nitro.options.entry.replace("{format}", serverFormat);
|
|
1534
|
+
if (nitro.options.experimental.tasks && Object.keys(nitro.options.scheduledTasks || {}).length > 0) nitro.options.handlers.push({
|
|
1535
|
+
route: nitro.options.vercel.cronHandlerRoute || "/_vercel/cron",
|
|
1536
|
+
lazy: true,
|
|
1537
|
+
handler: join$1(presetsDir, "vercel/runtime/cron-handler")
|
|
1538
|
+
});
|
|
1612
1539
|
},
|
|
1613
1540
|
"rollup:before": (nitro) => {
|
|
1614
1541
|
deprecateSWR(nitro);
|
|
@@ -1620,8 +1547,7 @@ const vercel = defineNitroPreset({
|
|
|
1620
1547
|
}, {
|
|
1621
1548
|
name: "vercel",
|
|
1622
1549
|
stdName: "vercel"
|
|
1623
|
-
})
|
|
1624
|
-
const vercelStatic = defineNitroPreset({
|
|
1550
|
+
}), defineNitroPreset({
|
|
1625
1551
|
extends: "static",
|
|
1626
1552
|
manifest: { deploymentId: process.env.VERCEL_DEPLOYMENT_ID },
|
|
1627
1553
|
vercel: { skewProtection: !!process.env.VERCEL_SKEW_PROTECTION_ENABLED },
|
|
@@ -1642,24 +1568,16 @@ const vercelStatic = defineNitroPreset({
|
|
|
1642
1568
|
name: "vercel-static",
|
|
1643
1569
|
stdName: "vercel",
|
|
1644
1570
|
static: true
|
|
1645
|
-
});
|
|
1646
|
-
var preset_default$3 = [
|
|
1647
|
-
|
|
1648
|
-
//#endregion
|
|
1649
|
-
//#region src/presets/winterjs/preset.ts
|
|
1650
|
-
const winterjs = defineNitroPreset({
|
|
1571
|
+
})];
|
|
1572
|
+
var preset_default$3 = [defineNitroPreset({
|
|
1651
1573
|
extends: "base-worker",
|
|
1652
1574
|
entry: "./winterjs/runtime/winterjs",
|
|
1653
1575
|
minify: false,
|
|
1654
1576
|
serveStatic: "inline",
|
|
1655
1577
|
wasm: { lazy: true },
|
|
1656
1578
|
commands: { preview: "wasmer run wasmer/winterjs --forward-host-env --net --mapdir app:./ app/server/index.mjs" }
|
|
1657
|
-
}, { name: "winterjs" });
|
|
1658
|
-
var preset_default$2 = [
|
|
1659
|
-
|
|
1660
|
-
//#endregion
|
|
1661
|
-
//#region src/presets/zeabur/preset.ts
|
|
1662
|
-
const zeabur = defineNitroPreset({
|
|
1579
|
+
}, { name: "winterjs" })];
|
|
1580
|
+
var preset_default$2 = [defineNitroPreset({
|
|
1663
1581
|
entry: "./zeabur/runtime/zeabur",
|
|
1664
1582
|
output: {
|
|
1665
1583
|
dir: "{{ rootDir }}/.zeabur/output",
|
|
@@ -1685,8 +1603,7 @@ const zeabur = defineNitroPreset({
|
|
|
1685
1603
|
}, {
|
|
1686
1604
|
name: "zeabur",
|
|
1687
1605
|
stdName: "zeabur"
|
|
1688
|
-
})
|
|
1689
|
-
const zeaburStatic = defineNitroPreset({
|
|
1606
|
+
}), defineNitroPreset({
|
|
1690
1607
|
extends: "static",
|
|
1691
1608
|
output: {
|
|
1692
1609
|
dir: "{{ rootDir }}/.zeabur/output",
|
|
@@ -1696,16 +1613,59 @@ const zeaburStatic = defineNitroPreset({
|
|
|
1696
1613
|
}, {
|
|
1697
1614
|
name: "zeabur-static",
|
|
1698
1615
|
static: true
|
|
1699
|
-
});
|
|
1700
|
-
var preset_default$1 = [zeabur, zeaburStatic];
|
|
1701
|
-
|
|
1616
|
+
})];
|
|
1702
1617
|
//#endregion
|
|
1703
|
-
//#region src/presets/
|
|
1704
|
-
const
|
|
1618
|
+
//#region src/presets/zephyr/preset.ts
|
|
1619
|
+
const LOGGER_TAG = "zephyr-nitro-preset";
|
|
1620
|
+
var preset_default$1 = [defineNitroPreset({
|
|
1621
|
+
extends: "base-worker",
|
|
1622
|
+
entry: "./zephyr/runtime/server",
|
|
1623
|
+
output: { publicDir: "{{ output.dir }}/client/{{ baseURL }}" },
|
|
1624
|
+
exportConditions: ["node"],
|
|
1625
|
+
minify: false,
|
|
1626
|
+
rollupConfig: { output: {
|
|
1627
|
+
format: "esm",
|
|
1628
|
+
exports: "named",
|
|
1629
|
+
inlineDynamicImports: false
|
|
1630
|
+
} },
|
|
1631
|
+
wasm: {
|
|
1632
|
+
lazy: false,
|
|
1633
|
+
esmImport: true
|
|
1634
|
+
},
|
|
1635
|
+
hooks: {
|
|
1636
|
+
"build:before": (nitro) => {
|
|
1637
|
+
nitro.options.unenv.push(unenvCfExternals, unenvCfNodeCompat);
|
|
1638
|
+
},
|
|
1639
|
+
compiled: async (nitro) => {
|
|
1640
|
+
try {
|
|
1641
|
+
if (!globalThis.__nitroDeploying__ && !nitro.options.zephyr?.deployOnBuild) {
|
|
1642
|
+
nitro.logger.info(`[${LOGGER_TAG}] Zephyr deploy skipped on build.`);
|
|
1643
|
+
return;
|
|
1644
|
+
}
|
|
1645
|
+
const { deploymentUrl } = await (await importDep({
|
|
1646
|
+
id: "zephyr-agent",
|
|
1647
|
+
reason: "deploying to Zephyr",
|
|
1648
|
+
dir: nitro.options.rootDir
|
|
1649
|
+
})).uploadOutputToZephyr({
|
|
1650
|
+
rootDir: nitro.options.rootDir,
|
|
1651
|
+
outputDir: nitro.options.output.dir,
|
|
1652
|
+
baseURL: nitro.options.baseURL,
|
|
1653
|
+
publicDir: resolve$1(nitro.options.output.dir, nitro.options.output.publicDir)
|
|
1654
|
+
});
|
|
1655
|
+
if (deploymentUrl) nitro.logger.success(`[${LOGGER_TAG}] Zephyr deployment succeeded: ${deploymentUrl}`);
|
|
1656
|
+
else nitro.logger.success(`[${LOGGER_TAG}] Zephyr deployment succeeded.`);
|
|
1657
|
+
globalThis.__nitroDeployed__ = true;
|
|
1658
|
+
} catch (error) {
|
|
1659
|
+
if (error instanceof Error) throw error;
|
|
1660
|
+
throw new TypeError(`[${LOGGER_TAG}] ${String(error)}`);
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
}, { name: "zephyr" })];
|
|
1665
|
+
var preset_default = [defineNitroPreset({
|
|
1705
1666
|
extends: "node-server",
|
|
1706
1667
|
serveStatic: true
|
|
1707
|
-
}, { name: "zerops" })
|
|
1708
|
-
const zeropsStatic = defineNitroPreset({
|
|
1668
|
+
}, { name: "zerops" }), defineNitroPreset({
|
|
1709
1669
|
extends: "static",
|
|
1710
1670
|
output: {
|
|
1711
1671
|
dir: "{{ rootDir }}/.zerops/output",
|
|
@@ -1714,12 +1674,11 @@ const zeropsStatic = defineNitroPreset({
|
|
|
1714
1674
|
}, {
|
|
1715
1675
|
name: "zerops-static",
|
|
1716
1676
|
static: true
|
|
1717
|
-
});
|
|
1718
|
-
var preset_default = [zerops, zeropsStatic];
|
|
1719
|
-
|
|
1677
|
+
})];
|
|
1720
1678
|
//#endregion
|
|
1721
1679
|
//#region src/presets/_all.gen.ts
|
|
1722
1680
|
var _all_gen_default = [
|
|
1681
|
+
...preset_default$27,
|
|
1723
1682
|
...preset_default$26,
|
|
1724
1683
|
...preset_default$25,
|
|
1725
1684
|
...preset_default$24,
|
|
@@ -1748,7 +1707,6 @@ var _all_gen_default = [
|
|
|
1748
1707
|
...preset_default$1,
|
|
1749
1708
|
...preset_default
|
|
1750
1709
|
];
|
|
1751
|
-
|
|
1752
1710
|
//#endregion
|
|
1753
1711
|
//#region src/presets/_resolve.ts
|
|
1754
1712
|
const _stdProviderMap = {
|
|
@@ -1758,35 +1716,35 @@ const _stdProviderMap = {
|
|
|
1758
1716
|
};
|
|
1759
1717
|
async function resolvePreset(name, opts = {}) {
|
|
1760
1718
|
if (name === ".") return;
|
|
1761
|
-
const _name = kebabCase(name) ||
|
|
1719
|
+
const _name = kebabCase(name) || f;
|
|
1762
1720
|
const _compatDates = opts.compatibilityDate ? resolveCompatibilityDatesFromEnv(opts.compatibilityDate) : false;
|
|
1763
|
-
const matches = _all_gen_default.filter((preset
|
|
1721
|
+
const matches = _all_gen_default.filter((preset) => {
|
|
1764
1722
|
if (![
|
|
1765
|
-
preset
|
|
1766
|
-
preset
|
|
1767
|
-
...preset
|
|
1723
|
+
preset._meta.name,
|
|
1724
|
+
preset._meta.stdName,
|
|
1725
|
+
...preset._meta.aliases || []
|
|
1768
1726
|
].filter(Boolean).includes(_name)) return false;
|
|
1769
|
-
if (opts.dev && !preset
|
|
1727
|
+
if (opts.dev && !preset._meta.dev || !opts.dev && preset._meta.dev) return false;
|
|
1770
1728
|
if (_compatDates) {
|
|
1771
|
-
const _date = _compatDates[_stdProviderMap[preset
|
|
1772
|
-
if (_date && preset
|
|
1729
|
+
const _date = _compatDates[_stdProviderMap[preset._meta.stdName]] || _compatDates[preset._meta.stdName] || _compatDates[preset._meta.name] || _compatDates.default;
|
|
1730
|
+
if (_date && preset._meta.compatibilityDate && new Date(preset._meta.compatibilityDate) > new Date(_date)) return false;
|
|
1773
1731
|
}
|
|
1774
1732
|
return true;
|
|
1775
|
-
}).sort((a
|
|
1776
|
-
const aDate = new Date(a
|
|
1733
|
+
}).sort((a, b) => {
|
|
1734
|
+
const aDate = new Date(a._meta.compatibilityDate || 0);
|
|
1777
1735
|
return new Date(b._meta.compatibilityDate || 0) > aDate ? 1 : -1;
|
|
1778
1736
|
});
|
|
1779
|
-
const preset = matches.find((p
|
|
1737
|
+
const preset = matches.find((p) => (p._meta.static || false) === (opts?.static || false)) || matches[0];
|
|
1780
1738
|
if (typeof preset === "function") return preset();
|
|
1781
1739
|
if (!name && !preset) {
|
|
1782
1740
|
if (opts?.static) return resolvePreset("static", opts);
|
|
1783
1741
|
return resolvePreset({
|
|
1784
1742
|
deno: "deno",
|
|
1785
1743
|
bun: "bun"
|
|
1786
|
-
}[
|
|
1744
|
+
}[R] || "node", opts);
|
|
1787
1745
|
}
|
|
1788
1746
|
if (name && !preset) {
|
|
1789
|
-
const options = _all_gen_default.filter((p
|
|
1747
|
+
const options = _all_gen_default.filter((p) => p._meta.name === name || p._meta.stdName === name || p._meta.aliases?.includes(name)).sort((a, b) => (a._meta.compatibilityDate || 0) > (b._meta.compatibilityDate || 0) ? 1 : -1);
|
|
1790
1748
|
if (options.length > 0) {
|
|
1791
1749
|
let msg = `Preset "${name}" cannot be resolved with current compatibilityDate: ${formatCompatibilityDate(_compatDates || "")}.\n\n`;
|
|
1792
1750
|
for (const option of options) msg += `\n- ${option._meta.name} (requires compatibilityDate >= ${option._meta.compatibilityDate})`;
|
|
@@ -1797,6 +1755,5 @@ async function resolvePreset(name, opts = {}) {
|
|
|
1797
1755
|
}
|
|
1798
1756
|
return preset;
|
|
1799
1757
|
}
|
|
1800
|
-
|
|
1801
1758
|
//#endregion
|
|
1802
|
-
export { resolvePreset };
|
|
1759
|
+
export { resolvePreset };
|