nitro 3.0.1-alpha.2 → 3.0.260415-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 +7261 -3812
- package/dist/_build/rolldown.mjs +32 -42
- package/dist/_build/rollup.mjs +28 -48
- package/dist/_build/vite.build.mjs +10 -10
- package/dist/_chunks/nitro.mjs +102 -327
- package/dist/_chunks/nitro2.mjs +8 -9
- package/dist/_chunks/nitro3.mjs +136 -0
- package/dist/_chunks/nitro4.mjs +127 -0
- package/dist/_chunks/utils.mjs +40 -29
- package/dist/_common.mjs +13 -25
- package/dist/_dev.d.mts +0 -3
- package/dist/{_chunks/dev.mjs → _dev.mjs} +132 -330
- package/dist/_libs/_.mjs +2 -0
- package/dist/_libs/_2.mjs +2 -0
- package/dist/_libs/_3.mjs +2 -0
- package/dist/_libs/_4.mjs +2 -0
- package/dist/_libs/_5.mjs +2 -0
- package/dist/_libs/_6.mjs +2 -0
- package/dist/_libs/_7.mjs +2 -0
- package/dist/_libs/c12+rc9.mjs +814 -0
- package/dist/_libs/{c12+giget+readdirp+chokidar.d.mts → c12+readdirp+chokidar.d.mts} +49 -40
- package/dist/_libs/citty.mjs +142 -41
- package/dist/_libs/commondir+is-reference.mjs +60 -56
- package/dist/_libs/compatx.d.mts +0 -2
- package/dist/_libs/compatx.mjs +1 -4
- package/dist/_libs/esbuild.d.mts +0 -1
- package/dist/_libs/escape-string-regexp.mjs +1 -4
- package/dist/_libs/{pluginutils+plugin-commonjs.d.mts → estree+pluginutils.d.mts} +0 -5
- package/dist/_libs/estree-walker.mjs +4 -92
- package/dist/_libs/exsolve.d.mts +1 -0
- package/dist/_libs/hasown+resolve+deepmerge.mjs +160 -246
- package/dist/_libs/httpxy.d.mts +20 -13
- package/dist/_libs/httpxy.mjs +519 -95
- package/dist/_libs/js-tokens.d.mts +1 -0
- package/dist/_libs/klona.mjs +1 -4
- package/dist/_libs/magic-string.d.mts +0 -2
- package/dist/_libs/mlly.d.mts +0 -2
- package/dist/_libs/nypm+tinyexec.mjs +822 -0
- package/dist/_libs/perfect-debounce.mjs +68 -0
- package/dist/_libs/pkg-types.d.mts +0 -3
- package/dist/_libs/plugin-alias.mjs +1 -5
- package/dist/_libs/plugin-inject.mjs +1 -7
- package/dist/_libs/plugin-json.mjs +1 -5
- package/dist/_libs/pluginutils.mjs +3 -35
- package/dist/_libs/readdirp+chokidar.mjs +187 -365
- package/dist/_libs/remapping.mjs +1 -5
- package/dist/_libs/resolve-uri+gen-mapping.mjs +15 -53
- package/dist/_libs/rou3.d.mts +1 -4
- package/dist/_libs/rou3.mjs +223 -78
- package/dist/_libs/std-env.d.mts +8 -2
- package/dist/_libs/strip-literal.d.mts +1 -0
- package/dist/_libs/tsconfck.mjs +21 -334
- package/dist/_libs/ultrahtml.mjs +3 -16
- package/dist/_libs/unimport+unplugin.mjs +244 -388
- package/dist/_libs/unplugin+unimport.d.mts +5 -15
- package/dist/_libs/unwasm.d.mts +0 -3
- package/dist/_presets.mjs +576 -488
- package/dist/builder.d.mts +5 -25
- package/dist/builder.mjs +3 -8
- package/dist/cli/_chunks/build.mjs +22 -25
- package/dist/cli/_chunks/common.mjs +1 -4
- package/dist/cli/_chunks/deploy.mjs +37 -0
- package/dist/cli/_chunks/dev.mjs +6 -11
- package/dist/cli/_chunks/docs.mjs +28 -0
- package/dist/cli/_chunks/list.mjs +4 -8
- package/dist/cli/_chunks/prepare.mjs +2 -6
- package/dist/cli/_chunks/preview.mjs +48 -0
- package/dist/cli/_chunks/run.mjs +7 -11
- package/dist/cli/_chunks/task.mjs +1 -5
- package/dist/cli/index.mjs +5 -6
- package/dist/docs/0.docs/0.index/index.md +56 -0
- package/dist/docs/0.docs/1.quick-start.md +110 -0
- package/dist/docs/0.docs/10.lifecycle.md +204 -0
- package/dist/docs/0.docs/11.openapi.md +291 -0
- package/dist/docs/0.docs/12.plugins.md +164 -0
- package/dist/docs/0.docs/13.tasks.md +277 -0
- package/dist/docs/0.docs/14.websocket.md +386 -0
- package/dist/docs/0.docs/15.migration.md +213 -0
- package/dist/docs/0.docs/16.nightly.md +31 -0
- package/dist/docs/0.docs/2.renderer.md +322 -0
- package/dist/docs/0.docs/3.routing.md +711 -0
- package/dist/docs/0.docs/4.server-entry.md +239 -0
- package/dist/docs/0.docs/5.cache.md +408 -0
- package/dist/docs/0.docs/6.storage.md +261 -0
- package/dist/docs/0.docs/7.assets.md +166 -0
- package/dist/docs/0.docs/8.configuration.md +256 -0
- package/dist/docs/0.docs/9.database.md +185 -0
- package/dist/docs/1.deploy/0.index/index.md +64 -0
- package/dist/docs/1.deploy/1.runtimes/0.node.md +63 -0
- package/dist/docs/1.deploy/1.runtimes/1.bun.md +15 -0
- package/dist/docs/1.deploy/1.runtimes/2.deno.md +19 -0
- package/dist/docs/1.deploy/2.providers/0.alwaysdata.md +50 -0
- package/dist/docs/1.deploy/2.providers/1.aws.md +47 -0
- package/dist/docs/1.deploy/2.providers/10.flightcontrol.md +67 -0
- package/dist/docs/1.deploy/2.providers/11.genezio.md +67 -0
- package/dist/docs/1.deploy/2.providers/12.github-pages.md +68 -0
- package/dist/docs/1.deploy/2.providers/13.gitlab-pages.md +37 -0
- package/dist/docs/1.deploy/2.providers/14.heroku.md +84 -0
- package/dist/docs/1.deploy/2.providers/15.iis.md +38 -0
- package/dist/docs/1.deploy/2.providers/16.koyeb.md +109 -0
- package/dist/docs/1.deploy/2.providers/17.netlify.md +47 -0
- package/dist/docs/1.deploy/2.providers/18.platform-sh.md +37 -0
- package/dist/docs/1.deploy/2.providers/19.render.md +37 -0
- package/dist/docs/1.deploy/2.providers/2.aws-amplify.md +81 -0
- package/dist/docs/1.deploy/2.providers/20.stormkit.md +24 -0
- package/dist/docs/1.deploy/2.providers/21.vercel.md +270 -0
- package/dist/docs/1.deploy/2.providers/22.zeabur.md +19 -0
- package/dist/docs/1.deploy/2.providers/23.zephyr.md +99 -0
- package/dist/docs/1.deploy/2.providers/24.zerops.md +102 -0
- package/dist/docs/1.deploy/2.providers/3.azure.md +72 -0
- package/dist/docs/1.deploy/2.providers/4.cleavr.md +33 -0
- package/dist/docs/1.deploy/2.providers/5.cloudflare.md +369 -0
- package/dist/docs/1.deploy/2.providers/6.deno-deploy.md +66 -0
- package/dist/docs/1.deploy/2.providers/7.digitalocean.md +46 -0
- package/dist/docs/1.deploy/2.providers/8.edgeone.md +20 -0
- package/dist/docs/1.deploy/2.providers/9.firebase.md +32 -0
- package/dist/docs/2.config/0.index/index.md +1221 -0
- package/dist/docs/3.examples/0.index/index.md +3 -0
- package/dist/docs/3.examples/1.api-routes.md +145 -0
- package/dist/docs/3.examples/10.hono.md +74 -0
- package/dist/docs/3.examples/11.import-alias.md +97 -0
- package/dist/docs/3.examples/12.middleware.md +91 -0
- package/dist/docs/3.examples/13.mono-jsx.md +68 -0
- package/dist/docs/3.examples/14.nano-jsx.md +70 -0
- package/dist/docs/3.examples/15.plugins.md +91 -0
- package/dist/docs/3.examples/16.renderer.md +113 -0
- package/dist/docs/3.examples/17.runtime-config.md +97 -0
- package/dist/docs/3.examples/18.server-fetch.md +87 -0
- package/dist/docs/3.examples/19.shiki.md +198 -0
- package/dist/docs/3.examples/2.auto-imports.md +92 -0
- package/dist/docs/3.examples/20.virtual-routes.md +74 -0
- package/dist/docs/3.examples/21.vite-nitro-plugin.md +79 -0
- package/dist/docs/3.examples/22.vite-rsc.md +1041 -0
- package/dist/docs/3.examples/23.vite-ssr-html.md +217 -0
- package/dist/docs/3.examples/24.vite-ssr-preact.md +247 -0
- package/dist/docs/3.examples/25.vite-ssr-react.md +226 -0
- package/dist/docs/3.examples/26.vite-ssr-solid.md +256 -0
- package/dist/docs/3.examples/27.vite-ssr-tsr-react.md +442 -0
- package/dist/docs/3.examples/28.vite-ssr-tss-react.md +444 -0
- package/dist/docs/3.examples/29.vite-ssr-vue-router.md +617 -0
- package/dist/docs/3.examples/3.cached-handler.md +81 -0
- package/dist/docs/3.examples/30.vite-trpc.md +335 -0
- package/dist/docs/3.examples/31.websocket.md +282 -0
- package/dist/docs/3.examples/4.custom-error-handler.md +98 -0
- package/dist/docs/3.examples/5.database.md +157 -0
- package/dist/docs/3.examples/6.elysia.md +70 -0
- package/dist/docs/3.examples/7.express.md +78 -0
- package/dist/docs/3.examples/8.fastify.md +79 -0
- package/dist/docs/3.examples/9.hello-world.md +68 -0
- package/dist/docs/README.md +86 -0
- package/dist/docs/index.md +121 -0
- 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/@speed-highlight/core/dist/index.js +4 -4
- package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
- package/dist/node_modules/@speed-highlight/core/package.json +1 -1
- package/dist/node_modules/cookie-es/dist/index.mjs +299 -250
- package/dist/node_modules/cookie-es/package.json +26 -23
- package/dist/node_modules/croner/dist/croner.js +1 -1
- package/dist/node_modules/croner/package.json +11 -1
- package/dist/node_modules/defu/dist/defu.mjs +2 -2
- package/dist/node_modules/defu/package.json +33 -28
- package/dist/node_modules/rendu/dist/_chunks/libs/cookie-es.mjs +151 -0
- package/dist/node_modules/rendu/dist/index.mjs +5 -112
- package/dist/node_modules/rendu/package.json +25 -24
- 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 +35 -32
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +12 -57
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +1 -0
- package/dist/presets/_nitro/runtime/service-worker.mjs +1 -2
- package/dist/presets/aws-lambda/runtime/_utils.mjs +6 -6
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +3 -1
- package/dist/presets/azure/runtime/_utils.mjs +5 -5
- package/dist/presets/azure/runtime/azure-swa.mjs +5 -5
- package/dist/presets/bun/runtime/bun.mjs +9 -6
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +1 -1
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +4 -4
- package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +3 -3
- package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +2 -2
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +10 -21
- package/dist/presets/deno/runtime/deno-deploy.mjs +4 -4
- package/dist/presets/deno/runtime/deno-server.mjs +9 -6
- package/dist/presets/edgeone/runtime/edgeone.mjs +10 -0
- package/dist/presets/netlify/runtime/netlify-edge.mjs +2 -3
- package/dist/presets/netlify/runtime/netlify.mjs +1 -1
- package/dist/presets/node/runtime/node-cluster.mjs +5 -4
- package/dist/presets/node/runtime/node-middleware.mjs +1 -1
- package/dist/presets/node/runtime/node-server.mjs +8 -5
- package/dist/presets/stormkit/runtime/stormkit.mjs +1 -2
- package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
- package/dist/presets/vercel/runtime/queue-handler.mjs +21 -0
- package/dist/presets/vercel/runtime/vercel.node.mjs +3 -3
- package/dist/presets/vercel/runtime/vercel.web.mjs +3 -5
- package/dist/presets/winterjs/runtime/winterjs.mjs +10 -10
- package/dist/presets/zephyr/runtime/server.mjs +3 -0
- package/dist/runtime/internal/app.mjs +12 -11
- 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/context.mjs +1 -9
- package/dist/runtime/internal/error/dev.d.mts +5 -4
- package/dist/runtime/internal/error/dev.mjs +47 -49
- 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 +11 -4
- package/dist/runtime/internal/route-rules.mjs +15 -5
- package/dist/runtime/internal/routes/dev-tasks.d.mts +3 -2
- package/dist/runtime/internal/routes/dev-tasks.mjs +15 -10
- package/dist/runtime/internal/routes/openapi.mjs +2 -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/routes/scalar.mjs +3 -3
- package/dist/runtime/internal/routes/swagger.mjs +7 -4
- package/dist/runtime/internal/runtime-config.d.mts +1 -1
- package/dist/runtime/internal/runtime-config.mjs +2 -2
- package/dist/runtime/internal/static.mjs +5 -4
- package/dist/runtime/internal/task.d.mts +3 -1
- package/dist/runtime/internal/task.mjs +7 -7
- package/dist/runtime/internal/vite/dev-entry.mjs +6 -3
- package/dist/runtime/internal/vite/dev-worker.mjs +264 -0
- package/dist/runtime/meta.d.mts +1 -0
- package/dist/runtime/meta.mjs +2 -0
- package/dist/runtime/nitro.d.mts +2 -0
- package/dist/runtime/nitro.mjs +4 -2
- package/dist/runtime/virtual/error-handler.mjs +1 -1
- package/dist/runtime/virtual/renderer-template.mjs +1 -1
- package/dist/runtime/virtual/server-assets.d.mts +2 -1
- package/dist/runtime/virtual/tracing.d.mts +5 -0
- package/dist/runtime/virtual/tracing.mjs +1 -0
- package/dist/runtime/vite.d.mts +1 -1
- package/dist/types/index.d.mts +215 -195
- package/dist/types/index.mjs +1 -11
- package/dist/vite.d.mts +3 -8
- package/dist/vite.mjs +285 -253
- package/lib/tsconfig.json +3 -5
- package/package.json +97 -80
- 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/vite.mjs
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { $ as resolveModulePath, B as T, D as prepare, I as prettyPath, O as copyPublicAssets, V as a, at as join$1, ct as resolve$1, d as libChunkName, f as baseBuildConfig, h as writeBuildInfo, it as isAbsolute$1, l as NODE_MODULES_RE, m as getBuildInfo, n as baseBuildPlugins, nt as dirname$1, st as relative$1, tt as basename$1, u as getChunkName } from "./_build/common.mjs";
|
|
3
|
-
import { i as debounce } from "./_libs/rc9+c12+dotenv.mjs";
|
|
1
|
+
import { D as copyPublicAssets, E as prepare, F as prettyPath, H as v, V as m, at as dirname$1, ct as join$1, d as libChunkName, dt as resolve$1, f as baseBuildConfig, h as writeBuildInfo, it as basename$1, l as NODE_MODULES_RE, n as baseBuildPlugins, nt as resolveModulePath, st as isAbsolute$1, u as getChunkName } from "./_build/common.mjs";
|
|
4
2
|
import { t as formatCompatibilityDate } from "./_libs/compatx.mjs";
|
|
5
|
-
import { i as createNitro } from "./_chunks/nitro.mjs";
|
|
6
|
-
import "./_libs/tsconfck.mjs";
|
|
3
|
+
import { i as createNitro, r as prerender } from "./_chunks/nitro.mjs";
|
|
7
4
|
import { n as scanHandlers } from "./_chunks/nitro2.mjs";
|
|
8
|
-
import { i as NodeEnvRunner, r as NitroDevApp } from "./_chunks/dev.mjs";
|
|
9
5
|
import { n as watch$1 } from "./_libs/readdirp+chokidar.mjs";
|
|
6
|
+
import { t as debounce } from "./_libs/perfect-debounce.mjs";
|
|
7
|
+
import { r as NitroDevApp } from "./_dev.mjs";
|
|
8
|
+
import { t as startPreview } from "./_chunks/nitro4.mjs";
|
|
10
9
|
import { n as assetsPlugin } from "./_libs/pluginutils.mjs";
|
|
11
|
-
import
|
|
10
|
+
import { runtimeDependencies, runtimeDir } from "nitro/meta";
|
|
12
11
|
import { existsSync, watch } from "node:fs";
|
|
13
12
|
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
14
13
|
import { join, resolve } from "node:path";
|
|
15
14
|
import { defu } from "defu";
|
|
16
|
-
import {
|
|
15
|
+
import { withBase } from "ufo";
|
|
17
16
|
import { colors } from "consola/utils";
|
|
18
|
-
import {
|
|
17
|
+
import { RunnerManager, loadRunner } from "env-runner";
|
|
19
18
|
import { NodeRequest, sendNodeResponse } from "srvx/node";
|
|
19
|
+
import "node:http";
|
|
20
20
|
import { DevEnvironment } from "vite";
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
//#region src/build/vite/bundler.ts
|
|
21
|
+
import { createViteHotChannel } from "env-runner/vite";
|
|
24
22
|
const getBundlerConfig = async (ctx) => {
|
|
25
|
-
const nitro
|
|
26
|
-
const base = baseBuildConfig(nitro
|
|
23
|
+
const nitro = ctx.nitro;
|
|
24
|
+
const base = baseBuildConfig(nitro);
|
|
27
25
|
const commonConfig = {
|
|
28
|
-
input: nitro
|
|
26
|
+
input: nitro.options.entry,
|
|
29
27
|
external: [...base.env.external],
|
|
30
|
-
plugins: [...await baseBuildPlugins(nitro
|
|
31
|
-
treeshake: { moduleSideEffects(id) {
|
|
32
|
-
return nitro$1.options.moduleSideEffects.some((p) => id.startsWith(p));
|
|
33
|
-
} },
|
|
28
|
+
plugins: [...await baseBuildPlugins(nitro, base)].filter(Boolean),
|
|
34
29
|
onwarn(warning, warn) {
|
|
35
30
|
if (!base.ignoreWarningCodes.has(warning.code || "")) warn(warning);
|
|
36
31
|
},
|
|
37
32
|
output: {
|
|
38
|
-
dir: nitro
|
|
33
|
+
dir: nitro.options.output.serverDir,
|
|
39
34
|
format: "esm",
|
|
40
35
|
entryFileNames: "index.mjs",
|
|
41
|
-
chunkFileNames: (chunk) => getChunkName(chunk, nitro
|
|
42
|
-
inlineDynamicImports: nitro
|
|
36
|
+
chunkFileNames: (chunk) => getChunkName(chunk, nitro),
|
|
37
|
+
inlineDynamicImports: nitro.options.inlineDynamicImports,
|
|
43
38
|
sourcemapIgnoreList: (id) => id.includes("node_modules")
|
|
44
39
|
}
|
|
45
40
|
};
|
|
46
|
-
if (ctx._isRolldown)
|
|
47
|
-
|
|
48
|
-
rollupConfig: void 0,
|
|
49
|
-
rolldownConfig: defu({
|
|
41
|
+
if (ctx._isRolldown) {
|
|
42
|
+
const rolldownConfig = defu({
|
|
50
43
|
transform: { inject: base.env.inject },
|
|
51
44
|
output: { codeSplitting: { groups: [{
|
|
52
45
|
test: NODE_MODULES_RE,
|
|
53
46
|
name: (id) => libChunkName(id)
|
|
54
47
|
}] } }
|
|
55
|
-
}, nitro
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
48
|
+
}, nitro.options.rolldownConfig, nitro.options.rollupConfig, commonConfig);
|
|
49
|
+
const outputConfig = rolldownConfig.output;
|
|
50
|
+
if (outputConfig.inlineDynamicImports || outputConfig.format === "iife") {
|
|
51
|
+
delete outputConfig.inlineDynamicImports;
|
|
52
|
+
outputConfig.codeSplitting = false;
|
|
53
|
+
}
|
|
60
54
|
return {
|
|
61
55
|
base,
|
|
62
|
-
rolldownConfig
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
56
|
+
rolldownConfig
|
|
57
|
+
};
|
|
58
|
+
} else {
|
|
59
|
+
const inject = (await import("./_libs/_3.mjs")).default;
|
|
60
|
+
const alias = (await import("./_libs/plugin-alias.mjs").then((n) => n.n)).default;
|
|
61
|
+
const rollupConfig = defu({
|
|
62
|
+
plugins: [inject(base.env.inject), alias({ entries: base.aliases })],
|
|
63
|
+
output: {
|
|
64
|
+
sourcemapExcludeSources: true,
|
|
65
|
+
generatedCode: { constBindings: true },
|
|
66
|
+
manualChunks(id) {
|
|
67
|
+
if (NODE_MODULES_RE.test(id)) return libChunkName(id);
|
|
71
68
|
}
|
|
72
|
-
}
|
|
69
|
+
}
|
|
70
|
+
}, nitro.options.rolldownConfig, nitro.options.rollupConfig, commonConfig);
|
|
71
|
+
const outputConfig = rollupConfig.output;
|
|
72
|
+
if (outputConfig.inlineDynamicImports || outputConfig.format === "iife") delete outputConfig.manualChunks;
|
|
73
|
+
return {
|
|
74
|
+
base,
|
|
75
|
+
rollupConfig
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
78
|
};
|
|
76
|
-
|
|
77
|
-
//#endregion
|
|
78
|
-
//#region src/build/vite/prod.ts
|
|
79
79
|
const BuilderNames = {
|
|
80
80
|
nitro: colors.magenta("Nitro"),
|
|
81
81
|
client: colors.green("Client"),
|
|
82
82
|
ssr: colors.blue("SSR")
|
|
83
83
|
};
|
|
84
84
|
async function buildEnvironments(ctx, builder) {
|
|
85
|
-
const nitro
|
|
85
|
+
const nitro = ctx.nitro;
|
|
86
86
|
for (const [envName, env] of Object.entries(builder.environments)) {
|
|
87
87
|
const fmtName = BuilderNames[envName] || (envName.length <= 3 ? envName.toUpperCase() : envName[0].toUpperCase() + envName.slice(1));
|
|
88
88
|
if (envName === "nitro" || !env.config.build.rollupOptions.input || env.isBuilt) {
|
|
@@ -90,11 +90,11 @@ async function buildEnvironments(ctx, builder) {
|
|
|
90
90
|
"nitro",
|
|
91
91
|
"ssr",
|
|
92
92
|
"client"
|
|
93
|
-
].includes(envName)) nitro
|
|
93
|
+
].includes(envName)) nitro.logger.info(env.isBuilt ? `Skipping ${fmtName} (already built)` : `Skipping ${fmtName} (no input defined)`);
|
|
94
94
|
continue;
|
|
95
95
|
}
|
|
96
|
-
if (!
|
|
97
|
-
nitro
|
|
96
|
+
if (!v && !m) console.log();
|
|
97
|
+
nitro.logger.start(`Building [${fmtName}]`);
|
|
98
98
|
await builder.build(env);
|
|
99
99
|
}
|
|
100
100
|
const nitroOptions = ctx.nitro.options;
|
|
@@ -111,13 +111,13 @@ async function buildEnvironments(ctx, builder) {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
await builder.writeAssetsManifest?.();
|
|
114
|
-
if (!
|
|
115
|
-
const buildInfo = [["preset", nitro
|
|
116
|
-
nitro
|
|
117
|
-
await copyPublicAssets(nitro
|
|
114
|
+
if (!v && !m) console.log();
|
|
115
|
+
const buildInfo = [["preset", nitro.options.preset], ["compatibility", formatCompatibilityDate(nitro.options.compatibilityDate)]].filter((e) => e[1]);
|
|
116
|
+
nitro.logger.start(`Building [${BuilderNames.nitro}] ${colors.dim(`(${buildInfo.map(([k, v]) => `${k}: \`${v}\``).join(", ")})`)}`);
|
|
117
|
+
await copyPublicAssets(nitro);
|
|
118
118
|
const assetDirs = new Set(Object.values(builder.environments).filter((env) => env.config.consumer === "client").map((env) => env.config.build.assetsDir).filter(Boolean));
|
|
119
119
|
for (const assetsDir of assetDirs) {
|
|
120
|
-
if (!existsSync(resolve$1(nitro
|
|
120
|
+
if (!existsSync(resolve$1(nitro.options.output.publicDir, assetsDir))) continue;
|
|
121
121
|
const rule = ctx.nitro.options.routeRules[`/${assetsDir}/**`] ??= {};
|
|
122
122
|
if (!rule.headers?.["cache-control"]) rule.headers = {
|
|
123
123
|
...rule.headers,
|
|
@@ -125,17 +125,14 @@ async function buildEnvironments(ctx, builder) {
|
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
ctx.nitro.routing.sync();
|
|
128
|
-
await
|
|
129
|
-
await
|
|
130
|
-
await nitro
|
|
131
|
-
await
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (!a && !T) console.log();
|
|
137
|
-
if (nitro$1.options.commands.preview) nitro$1.logger.success(`You can preview this build using \`${rewriteRelativePaths(nitro$1.options.commands.preview)}\``);
|
|
138
|
-
if (nitro$1.options.commands.deploy) nitro$1.logger.success(`You can deploy this build using \`${rewriteRelativePaths(nitro$1.options.commands.deploy)}\``);
|
|
128
|
+
await prerender(nitro);
|
|
129
|
+
const output = await builder.build(builder.environments.nitro);
|
|
130
|
+
await nitro.close();
|
|
131
|
+
await nitro.hooks.callHook("compiled", nitro);
|
|
132
|
+
await writeBuildInfo(nitro, output);
|
|
133
|
+
if (!v && !m) console.log();
|
|
134
|
+
nitro.logger.success("You can preview this build using `npx vite preview`");
|
|
135
|
+
if (nitro.options.commands.deploy) nitro.logger.success("You can deploy this build using `npx nitro deploy --prebuilt`");
|
|
139
136
|
}
|
|
140
137
|
function prodSetup(ctx) {
|
|
141
138
|
return `
|
|
@@ -161,83 +158,67 @@ ${Object.keys(ctx.services).map((name) => {
|
|
|
161
158
|
globalThis.__nitro_vite_envs__ = services;
|
|
162
159
|
`;
|
|
163
160
|
}
|
|
164
|
-
|
|
165
|
-
//#endregion
|
|
166
|
-
//#region src/build/vite/dev.ts
|
|
167
|
-
function createFetchableDevEnvironment(name, config, devServer, entry) {
|
|
161
|
+
function createFetchableDevEnvironment(name, config, devServer, entry, opts) {
|
|
168
162
|
return new FetchableDevEnvironment(name, config, {
|
|
169
163
|
hot: true,
|
|
170
|
-
transport:
|
|
171
|
-
}, devServer, entry);
|
|
164
|
+
transport: createViteHotChannel(devServer, name)
|
|
165
|
+
}, devServer, entry, opts);
|
|
172
166
|
}
|
|
173
167
|
var FetchableDevEnvironment = class extends DevEnvironment {
|
|
174
168
|
devServer;
|
|
175
|
-
|
|
169
|
+
#entry;
|
|
170
|
+
#preventExternalize;
|
|
171
|
+
constructor(name, config, context, devServer, entry, opts) {
|
|
176
172
|
super(name, config, context);
|
|
177
173
|
this.devServer = devServer;
|
|
178
|
-
this
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
174
|
+
this.#entry = entry;
|
|
175
|
+
this.#preventExternalize = opts?.preventExternalize ?? false;
|
|
176
|
+
}
|
|
177
|
+
async fetchModule(id, importer, options) {
|
|
178
|
+
if (this.#preventExternalize && !id.startsWith("file://") && importer && id[0] !== "." && id[0] !== "/") {
|
|
179
|
+
const resolved = await this.pluginContainer.resolveId(id, importer);
|
|
180
|
+
if (resolved && !resolved.external) return super.fetchModule(resolved.id, importer, options);
|
|
181
|
+
}
|
|
182
|
+
return super.fetchModule(id, importer, options);
|
|
186
183
|
}
|
|
187
184
|
async dispatchFetch(request) {
|
|
188
185
|
return this.devServer.fetch(request);
|
|
189
186
|
}
|
|
190
187
|
async init(...args) {
|
|
191
188
|
await this.devServer.init?.();
|
|
192
|
-
|
|
189
|
+
await super.init(...args);
|
|
190
|
+
this.devServer.sendMessage({
|
|
191
|
+
type: "custom",
|
|
192
|
+
event: "nitro:vite-env",
|
|
193
|
+
data: {
|
|
194
|
+
name: this.name,
|
|
195
|
+
entry: this.#entry
|
|
196
|
+
}
|
|
197
|
+
});
|
|
193
198
|
}
|
|
194
199
|
};
|
|
195
|
-
function createTransport(name, hooks) {
|
|
196
|
-
const listeners = /* @__PURE__ */ new WeakMap();
|
|
197
|
-
return {
|
|
198
|
-
send: (data) => hooks.sendMessage({
|
|
199
|
-
...data,
|
|
200
|
-
viteEnv: name
|
|
201
|
-
}),
|
|
202
|
-
on: (event, handler) => {
|
|
203
|
-
if (event === "connection") return;
|
|
204
|
-
const listener = (value) => {
|
|
205
|
-
if (value?.type === "custom" && value.event === event && value.viteEnv === name) handler(value.data, { send: (payload) => hooks.sendMessage({
|
|
206
|
-
...payload,
|
|
207
|
-
viteEnv: name
|
|
208
|
-
}) });
|
|
209
|
-
};
|
|
210
|
-
listeners.set(handler, listener);
|
|
211
|
-
hooks.onMessage(listener);
|
|
212
|
-
},
|
|
213
|
-
off: (event, handler) => {
|
|
214
|
-
if (event === "connection") return;
|
|
215
|
-
const listener = listeners.get(handler);
|
|
216
|
-
if (listener) {
|
|
217
|
-
hooks.offMessage(listener);
|
|
218
|
-
listeners.delete(handler);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
200
|
async function configureViteDevServer(ctx, server) {
|
|
224
|
-
const nitro
|
|
225
|
-
const nitroEnv
|
|
226
|
-
const nitroConfigFile = nitro
|
|
201
|
+
const nitro = ctx.nitro;
|
|
202
|
+
const nitroEnv = server.environments.nitro;
|
|
203
|
+
const nitroConfigFile = nitro.options._c12.configFile;
|
|
227
204
|
if (nitroConfigFile) server.config.configFileDependencies.push(nitroConfigFile);
|
|
228
|
-
if (nitro
|
|
229
|
-
if (req.
|
|
230
|
-
getEnvRunner(ctx).upgrade?.(
|
|
205
|
+
if (nitro.options.features.websocket ?? nitro.options.experimental.websocket) server.httpServer.on("upgrade", (req, socket, head) => {
|
|
206
|
+
if (req.headers["sec-websocket-protocol"]?.startsWith("vite-")) return;
|
|
207
|
+
getEnvRunner(ctx).upgrade?.({ node: {
|
|
208
|
+
req,
|
|
209
|
+
socket,
|
|
210
|
+
head
|
|
211
|
+
} });
|
|
231
212
|
});
|
|
232
213
|
const reload = debounce(async () => {
|
|
233
|
-
await scanHandlers(nitro
|
|
234
|
-
nitro
|
|
235
|
-
nitroEnv
|
|
236
|
-
nitroEnv
|
|
214
|
+
await scanHandlers(nitro);
|
|
215
|
+
nitro.routing.sync();
|
|
216
|
+
nitroEnv.moduleGraph.invalidateAll();
|
|
217
|
+
nitroEnv.hot.send({ type: "full-reload" });
|
|
237
218
|
});
|
|
238
|
-
const scanDirs = nitro
|
|
239
|
-
join$1(dir, nitro
|
|
240
|
-
join$1(dir, nitro
|
|
219
|
+
const scanDirs = nitro.options.scanDirs.flatMap((dir) => [
|
|
220
|
+
join$1(dir, nitro.options.apiDir || "api"),
|
|
221
|
+
join$1(dir, nitro.options.routesDir || "routes"),
|
|
241
222
|
join$1(dir, "middleware"),
|
|
242
223
|
join$1(dir, "plugins"),
|
|
243
224
|
join$1(dir, "modules")
|
|
@@ -248,35 +229,36 @@ async function configureViteDevServer(ctx, server) {
|
|
|
248
229
|
"unlink",
|
|
249
230
|
"unlinkDir"
|
|
250
231
|
]);
|
|
251
|
-
const scanDirsWatcher = watch$1(scanDirs, { ignoreInitial: true }).on("all", (event, path
|
|
232
|
+
const scanDirsWatcher = watch$1(scanDirs, { ignoreInitial: true }).on("all", (event, path, stat) => {
|
|
252
233
|
if (watchReloadEvents.has(event)) reload();
|
|
253
234
|
});
|
|
254
|
-
const rootDirWatcher = watch(nitro
|
|
235
|
+
const rootDirWatcher = watch(nitro.options.rootDir, { persistent: false }, (_event, filename) => {
|
|
255
236
|
if (filename && /^server\.[mc]?[jt]sx?$/.test(filename)) reload();
|
|
256
237
|
});
|
|
257
|
-
nitro
|
|
238
|
+
nitro.hooks.hook("close", () => {
|
|
258
239
|
scanDirsWatcher.close();
|
|
259
240
|
rootDirWatcher.close();
|
|
260
241
|
});
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
data: res
|
|
273
|
-
}
|
|
242
|
+
nitroEnv.devServer.onMessage(async (message) => {
|
|
243
|
+
if (message?.__rpc === "transformHTML") try {
|
|
244
|
+
const html = (await server.transformIndexHtml("/", message.data)).replace("<!--ssr-outlet-->", `{{{ globalThis.__nitro_vite_envs__?.["ssr"]?.fetch($REQUEST) || "" }}}`);
|
|
245
|
+
nitroEnv.devServer.sendMessage({
|
|
246
|
+
__rpc_id: message.__rpc_id,
|
|
247
|
+
data: html
|
|
248
|
+
});
|
|
249
|
+
} catch (error) {
|
|
250
|
+
nitroEnv.devServer.sendMessage({
|
|
251
|
+
__rpc_id: message.__rpc_id,
|
|
252
|
+
error: error instanceof Error ? error.message : String(error)
|
|
274
253
|
});
|
|
275
254
|
}
|
|
276
255
|
});
|
|
277
256
|
const nitroDevMiddleware = async (nodeReq, nodeRes, next) => {
|
|
278
257
|
if (!nodeReq.url || /^\/@(?:vite|fs|id)\//.test(nodeReq.url) || nodeReq._nitroHandled || server.middlewares.stack.map((mw) => mw.route).some((base) => base && nodeReq.url.startsWith(base))) return next();
|
|
279
258
|
nodeReq._nitroHandled = true;
|
|
259
|
+
const baseURL = nitro.options.baseURL || "/";
|
|
260
|
+
const originalURL = nodeReq.url;
|
|
261
|
+
if (baseURL !== "/") nodeReq.url = withBase(nodeReq.url, baseURL);
|
|
280
262
|
try {
|
|
281
263
|
const req = new NodeRequest({
|
|
282
264
|
req: nodeReq,
|
|
@@ -285,34 +267,29 @@ async function configureViteDevServer(ctx, server) {
|
|
|
285
267
|
const devAppRes = await ctx.devApp.fetch(req);
|
|
286
268
|
if (nodeRes.writableEnded || nodeRes.headersSent) return;
|
|
287
269
|
if (devAppRes.status !== 404) return await sendNodeResponse(nodeRes, devAppRes);
|
|
288
|
-
const envRes = await nitroEnv
|
|
270
|
+
const envRes = await nitroEnv.dispatchFetch(req);
|
|
289
271
|
if (nodeRes.writableEnded || nodeRes.headersSent) return;
|
|
290
272
|
return await sendNodeResponse(nodeRes, envRes);
|
|
291
273
|
} catch (error) {
|
|
292
274
|
return next(error);
|
|
275
|
+
} finally {
|
|
276
|
+
if (baseURL !== "/") nodeReq.url = originalURL;
|
|
293
277
|
}
|
|
294
278
|
};
|
|
295
279
|
server.middlewares.use(function nitroDevMiddlewarePre(req, res, next) {
|
|
296
280
|
const fetchDest = req.headers["sec-fetch-dest"];
|
|
281
|
+
const ext = req.url.match(/\.([a-z0-9]+)(?:[?#]|$)/i)?.[1];
|
|
282
|
+
const isNitroRoute = ext ? !!nitro.routing.routes.match(req.method || "", new URL(withBase(req.url, nitro.options.baseURL), "http://localhost").pathname) : false;
|
|
297
283
|
res.setHeader("vary", "sec-fetch-dest");
|
|
298
|
-
if ((!fetchDest || /^(document|iframe|frame|empty)$/.test(fetchDest)) && !
|
|
284
|
+
if ((!fetchDest || /^(document|iframe|frame|empty)$/.test(fetchDest)) && (!ext || isNitroRoute) && !/^\/(?:__|@)/.test(req.url)) nitroDevMiddleware(req, res, next);
|
|
299
285
|
else next();
|
|
300
286
|
});
|
|
301
287
|
return () => {
|
|
302
288
|
server.middlewares.use(nitroDevMiddleware);
|
|
303
289
|
};
|
|
304
290
|
}
|
|
305
|
-
|
|
306
|
-
//#endregion
|
|
307
|
-
//#region src/build/vite/env.ts
|
|
308
|
-
function getEnvRunner(ctx) {
|
|
309
|
-
return ctx._envRunner ??= new NodeEnvRunner({
|
|
310
|
-
name: "nitro-vite",
|
|
311
|
-
entry: resolve(runtimeDir, "internal/vite/node-runner.mjs"),
|
|
312
|
-
data: { server: true }
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
291
|
function createNitroEnvironment(ctx) {
|
|
292
|
+
const isWorkerdRunner = _isWorkerdRunner(ctx);
|
|
316
293
|
return {
|
|
317
294
|
consumer: "server",
|
|
318
295
|
build: {
|
|
@@ -321,41 +298,150 @@ function createNitroEnvironment(ctx) {
|
|
|
321
298
|
minify: ctx.nitro.options.minify,
|
|
322
299
|
emptyOutDir: false,
|
|
323
300
|
sourcemap: ctx.nitro.options.sourcemap,
|
|
324
|
-
commonjsOptions: ctx.nitro.options.commonJS
|
|
301
|
+
commonjsOptions: ctx.nitro.options.commonJS,
|
|
302
|
+
copyPublicDir: false
|
|
325
303
|
},
|
|
326
304
|
resolve: {
|
|
327
|
-
noExternal: ctx.nitro.options.dev ? [
|
|
305
|
+
noExternal: ctx.nitro.options.dev ? isWorkerdRunner ? true : [
|
|
328
306
|
/^nitro$/,
|
|
329
|
-
|
|
307
|
+
new RegExp(`^(${runtimeDependencies.join("|")})$`),
|
|
330
308
|
...ctx.bundlerConfig.base.noExternal
|
|
331
309
|
] : true,
|
|
332
|
-
conditions:
|
|
310
|
+
conditions: isWorkerdRunner ? [
|
|
311
|
+
"workerd",
|
|
312
|
+
"worker",
|
|
313
|
+
...ctx.nitro.options.exportConditions.filter((c) => c !== "node")
|
|
314
|
+
] : ctx.nitro.options.exportConditions,
|
|
333
315
|
externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
|
|
334
316
|
},
|
|
335
317
|
define: { "process.env.NODE_ENV": JSON.stringify(ctx.nitro.options.dev ? "development" : "production") },
|
|
336
|
-
dev: { createEnvironment: (envName, envConfig) =>
|
|
318
|
+
dev: { createEnvironment: (envName, envConfig) => {
|
|
319
|
+
const entry = resolve(runtimeDir, "internal/vite/dev-entry.mjs");
|
|
320
|
+
const env = createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), entry, { preventExternalize: isWorkerdRunner });
|
|
321
|
+
ctx._transformRequest = (id) => env.transformRequest(id);
|
|
322
|
+
(ctx._viteEnvs ??= /* @__PURE__ */ new Map()).set(envName, entry);
|
|
323
|
+
return env;
|
|
324
|
+
} }
|
|
337
325
|
};
|
|
338
326
|
}
|
|
339
327
|
function createServiceEnvironment(ctx, name, serviceConfig) {
|
|
328
|
+
const isWorkerdRunner = _isWorkerdRunner(ctx);
|
|
340
329
|
return {
|
|
341
330
|
consumer: "server",
|
|
342
331
|
build: {
|
|
343
|
-
rollupOptions: {
|
|
332
|
+
rollupOptions: {
|
|
333
|
+
input: { index: serviceConfig.entry },
|
|
334
|
+
external: [/^nitro(\/|$)/]
|
|
335
|
+
},
|
|
344
336
|
minify: ctx.nitro.options.minify,
|
|
345
337
|
sourcemap: ctx.nitro.options.sourcemap,
|
|
346
338
|
outDir: join(ctx.nitro.options.buildDir, "vite/services", name),
|
|
347
|
-
emptyOutDir: true
|
|
339
|
+
emptyOutDir: true,
|
|
340
|
+
copyPublicDir: false
|
|
348
341
|
},
|
|
349
342
|
resolve: {
|
|
350
|
-
|
|
343
|
+
...isWorkerdRunner ? { noExternal: true } : {},
|
|
344
|
+
conditions: isWorkerdRunner ? [
|
|
345
|
+
"workerd",
|
|
346
|
+
"worker",
|
|
347
|
+
...ctx.nitro.options.exportConditions.filter((c) => c !== "node")
|
|
348
|
+
] : ctx.nitro.options.exportConditions,
|
|
351
349
|
externalConditions: ctx.nitro.options.exportConditions?.filter((c) => !/browser|wasm|module/.test(c))
|
|
352
350
|
},
|
|
353
|
-
dev: { createEnvironment: (envName, envConfig) =>
|
|
351
|
+
dev: { createEnvironment: (envName, envConfig) => {
|
|
352
|
+
const entry = tryResolve(serviceConfig.entry);
|
|
353
|
+
(ctx._viteEnvs ??= /* @__PURE__ */ new Map()).set(envName, entry);
|
|
354
|
+
return createFetchableDevEnvironment(envName, envConfig, getEnvRunner(ctx), entry, { preventExternalize: isWorkerdRunner });
|
|
355
|
+
} }
|
|
354
356
|
};
|
|
355
357
|
}
|
|
356
358
|
function createServiceEnvironments(ctx) {
|
|
357
359
|
return Object.fromEntries(Object.entries(ctx.services).map(([name, config]) => [name, createServiceEnvironment(ctx, name, config)]));
|
|
358
360
|
}
|
|
361
|
+
async function initEnvRunner(ctx) {
|
|
362
|
+
if (ctx._envRunner) return ctx._envRunner;
|
|
363
|
+
if (!ctx._initPromise) ctx._initPromise = (async () => {
|
|
364
|
+
const manager = new RunnerManager();
|
|
365
|
+
let _retries = 0;
|
|
366
|
+
manager.onClose((_runner, cause) => {
|
|
367
|
+
if (_retries++ < 3) {
|
|
368
|
+
ctx.nitro.logger.info("Restarting env runner...", cause ? `Cause: ${cause}` : "");
|
|
369
|
+
_loadRunner(ctx, manager);
|
|
370
|
+
} else ctx.nitro.logger.error("Env runner failed after 3 retries.", cause ? `Last cause: ${cause}` : "");
|
|
371
|
+
});
|
|
372
|
+
manager.onReady(() => {
|
|
373
|
+
_retries = 0;
|
|
374
|
+
if (ctx._viteEnvs) for (const [name, entry] of ctx._viteEnvs) manager.sendMessage({
|
|
375
|
+
type: "custom",
|
|
376
|
+
event: "nitro:vite-env",
|
|
377
|
+
data: {
|
|
378
|
+
name,
|
|
379
|
+
entry
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
await _loadRunner(ctx, manager);
|
|
384
|
+
ctx._envRunner = manager;
|
|
385
|
+
return manager;
|
|
386
|
+
})();
|
|
387
|
+
return await ctx._initPromise;
|
|
388
|
+
}
|
|
389
|
+
function getEnvRunner(ctx) {
|
|
390
|
+
if (!ctx._envRunner) throw new Error("Env runner not initialized. Call initEnvRunner() first.");
|
|
391
|
+
return ctx._envRunner;
|
|
392
|
+
}
|
|
393
|
+
async function _loadRunner(ctx, manager) {
|
|
394
|
+
const runnerName = ctx.nitro.options.devServer.runner || process.env.NITRO_DEV_RUNNER || "node-worker";
|
|
395
|
+
const entry = resolve(runtimeDir, "internal/vite/dev-worker.mjs");
|
|
396
|
+
let runner;
|
|
397
|
+
if (runnerName === "miniflare") {
|
|
398
|
+
const { MiniflareEnvRunner } = await import("env-runner/runners/miniflare");
|
|
399
|
+
runner = new MiniflareEnvRunner({
|
|
400
|
+
name: "nitro-vite",
|
|
401
|
+
data: { entry }
|
|
402
|
+
});
|
|
403
|
+
} else runner = await loadRunner(runnerName, {
|
|
404
|
+
name: "nitro-vite",
|
|
405
|
+
data: { entry }
|
|
406
|
+
});
|
|
407
|
+
await manager.reload(runner);
|
|
408
|
+
}
|
|
409
|
+
const NITRO_PROXY_PREFIX = "\0nitro-env-proxy:";
|
|
410
|
+
function nitroServiceProxy() {
|
|
411
|
+
return {
|
|
412
|
+
name: "nitro:service-proxy",
|
|
413
|
+
enforce: "pre",
|
|
414
|
+
applyToEnvironment: (env) => env.name !== "nitro" && env.config.consumer === "server",
|
|
415
|
+
apply: (_config, configEnv) => configEnv.command === "serve",
|
|
416
|
+
resolveId: {
|
|
417
|
+
filter: { id: /^nitro(\/|$)/ },
|
|
418
|
+
handler(id) {
|
|
419
|
+
if (id === "nitro" || id.startsWith("nitro/")) return {
|
|
420
|
+
id: NITRO_PROXY_PREFIX + id,
|
|
421
|
+
moduleSideEffects: false
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
load: {
|
|
426
|
+
filter: { id: /^\0nitro-env-proxy:/ },
|
|
427
|
+
handler(id) {
|
|
428
|
+
if (!id.startsWith(NITRO_PROXY_PREFIX)) return;
|
|
429
|
+
const originalId = id.slice(17);
|
|
430
|
+
return {
|
|
431
|
+
code: [
|
|
432
|
+
`const _mod = await globalThis.__VITE_ENVIRONMENT_RUNNER_IMPORT__("nitro", ${JSON.stringify(originalId)});`,
|
|
433
|
+
`__vite_ssr_exportAll__(_mod);`,
|
|
434
|
+
`export default _mod.default;`
|
|
435
|
+
].join("\n"),
|
|
436
|
+
map: null
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
function _isWorkerdRunner(ctx) {
|
|
443
|
+
return (ctx.nitro.options.devServer.runner || process.env.NITRO_DEV_RUNNER || "node-worker") === "miniflare";
|
|
444
|
+
}
|
|
359
445
|
function tryResolve(id) {
|
|
360
446
|
if (/^[~#/\0]/.test(id) || isAbsolute$1(id)) return id;
|
|
361
447
|
return resolveModulePath(id, {
|
|
@@ -372,9 +458,6 @@ function tryResolve(id) {
|
|
|
372
458
|
try: true
|
|
373
459
|
}) || id;
|
|
374
460
|
}
|
|
375
|
-
|
|
376
|
-
//#endregion
|
|
377
|
-
//#region src/build/vite/preview.ts
|
|
378
461
|
function nitroPreviewPlugin(ctx) {
|
|
379
462
|
return {
|
|
380
463
|
name: "nitro:preview",
|
|
@@ -383,89 +466,27 @@ function nitroPreviewPlugin(ctx) {
|
|
|
383
466
|
return { preview: { port: config.preview?.port || 3e3 } };
|
|
384
467
|
},
|
|
385
468
|
async configurePreviewServer(server) {
|
|
386
|
-
const
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
["Build Directory:", prettyPath(outputDir)],
|
|
390
|
-
["Date:", buildInfo.date && new Date(buildInfo.date).toLocaleString()],
|
|
391
|
-
["Nitro Version:", buildInfo.versions.nitro],
|
|
392
|
-
["Nitro Preset:", buildInfo.preset],
|
|
393
|
-
buildInfo.framework?.name !== "nitro" && ["Framework:", buildInfo.framework?.name + (buildInfo.framework?.version ? ` (v${buildInfo.framework.version})` : "")]
|
|
394
|
-
].filter((i) => i && i[1]);
|
|
395
|
-
consola$1.box({
|
|
396
|
-
title: " [Build Info] ",
|
|
397
|
-
message: info.map((i) => `- ${i[0]} ${i[1]}`).join("\n")
|
|
398
|
-
});
|
|
399
|
-
if (!buildInfo.commands?.preview) {
|
|
400
|
-
consola$1.warn("No nitro build preview command found for this preset.");
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
const dotEnvEntries = await loadPreviewDotEnv(server.config.root);
|
|
404
|
-
if (dotEnvEntries.length > 0) consola$1.box({
|
|
405
|
-
title: " [Environment Variables] ",
|
|
406
|
-
message: [
|
|
407
|
-
"Loaded variables from .env files (preview mode only).",
|
|
408
|
-
"Set platform environment variables for production:",
|
|
409
|
-
...dotEnvEntries.map(([key, val]) => ` - ${key}`)
|
|
410
|
-
].join("\n")
|
|
411
|
-
});
|
|
412
|
-
const [command, ...args] = buildInfo.commands.preview.split(" ");
|
|
413
|
-
consola$1.info(`Spawning preview server...`);
|
|
414
|
-
consola$1.info(buildInfo.commands?.preview);
|
|
415
|
-
console.log("");
|
|
416
|
-
const { getRandomPort, waitForPort } = await import("get-port-please");
|
|
417
|
-
const randomPort = await getRandomPort();
|
|
418
|
-
const child = spawn(command, args, {
|
|
419
|
-
stdio: "inherit",
|
|
420
|
-
cwd: outputDir,
|
|
421
|
-
env: {
|
|
422
|
-
...process.env,
|
|
423
|
-
...Object.fromEntries(dotEnvEntries),
|
|
424
|
-
PORT: String(randomPort)
|
|
425
|
-
}
|
|
426
|
-
});
|
|
427
|
-
const killChild = (signal) => {
|
|
428
|
-
if (child && !child.killed) child.kill(signal);
|
|
429
|
-
};
|
|
430
|
-
for (const sig of ["SIGINT", "SIGHUP"]) process.once(sig, () => {
|
|
431
|
-
consola$1.info(`Stopping preview server...`);
|
|
432
|
-
killChild(sig);
|
|
433
|
-
process.exit();
|
|
469
|
+
const preview = await startPreview({
|
|
470
|
+
rootDir: server.config.root,
|
|
471
|
+
loader: { nodeServer: server.httpServer }
|
|
434
472
|
});
|
|
435
|
-
server.httpServer.once("close", () => {
|
|
436
|
-
|
|
473
|
+
server.httpServer.once("close", async () => {
|
|
474
|
+
await preview.close();
|
|
437
475
|
});
|
|
438
|
-
|
|
439
|
-
|
|
476
|
+
const { NodeRequest, sendNodeResponse } = await import("srvx/node");
|
|
477
|
+
server.middlewares.use(async (req, res, next) => {
|
|
478
|
+
const nodeReq = new NodeRequest({
|
|
479
|
+
req,
|
|
480
|
+
res
|
|
481
|
+
});
|
|
482
|
+
await sendNodeResponse(res, await preview.fetch(nodeReq)).catch(next);
|
|
440
483
|
});
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
server.middlewares.use((req, res, next) => {
|
|
444
|
-
if (child && !child.killed) proxy.web(req, res).catch(next);
|
|
445
|
-
else res.end(`Nitro preview server is not running.`);
|
|
446
|
-
});
|
|
447
|
-
await waitForPort(randomPort, {
|
|
448
|
-
retries: 20,
|
|
449
|
-
delay: 500
|
|
484
|
+
if (preview.upgrade) server.httpServer.on("upgrade", (req, socket, head) => {
|
|
485
|
+
preview.upgrade(req, socket, head);
|
|
450
486
|
});
|
|
451
487
|
}
|
|
452
488
|
};
|
|
453
489
|
}
|
|
454
|
-
async function loadPreviewDotEnv(root) {
|
|
455
|
-
const { loadDotenv } = await import("./_libs/rc9+c12+dotenv.mjs").then((n) => n.t);
|
|
456
|
-
const env = await loadDotenv({
|
|
457
|
-
cwd: root,
|
|
458
|
-
fileName: [
|
|
459
|
-
".env.preview",
|
|
460
|
-
".env.production",
|
|
461
|
-
".env"
|
|
462
|
-
]
|
|
463
|
-
});
|
|
464
|
-
return Object.entries(env).filter(([_key, val]) => val);
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
//#endregion
|
|
468
|
-
//#region src/build/vite/plugin.ts
|
|
469
490
|
const DEFAULT_EXTENSIONS = [
|
|
470
491
|
".ts",
|
|
471
492
|
".js",
|
|
@@ -476,6 +497,7 @@ const DEFAULT_EXTENSIONS = [
|
|
|
476
497
|
];
|
|
477
498
|
const debug = process.env.NITRO_DEBUG ? (...args) => console.log("[nitro]", ...args) : () => {};
|
|
478
499
|
function nitro(pluginConfig = {}) {
|
|
500
|
+
if (globalThis.__nitro_build__) return [];
|
|
479
501
|
const ctx = createContext(pluginConfig);
|
|
480
502
|
return [
|
|
481
503
|
nitroInit(ctx),
|
|
@@ -483,6 +505,7 @@ function nitro(pluginConfig = {}) {
|
|
|
483
505
|
nitroMain(ctx),
|
|
484
506
|
nitroPrepare(ctx),
|
|
485
507
|
nitroService(ctx),
|
|
508
|
+
nitroServiceProxy(),
|
|
486
509
|
nitroPreviewPlugin(ctx),
|
|
487
510
|
pluginConfig.experimental?.vite?.assetsImport !== false && assetsPlugin({ experimental: { clientBuildFallback: false } })
|
|
488
511
|
].filter(Boolean);
|
|
@@ -531,6 +554,7 @@ function nitroEnv(ctx) {
|
|
|
531
554
|
debug("[env] Configuring client environment", name === "client" ? "" : ` (${name})`);
|
|
532
555
|
config.build.emptyOutDir = false;
|
|
533
556
|
config.build.outDir = useNitro(ctx).options.output.publicDir;
|
|
557
|
+
config.build.copyPublicDir ??= false;
|
|
534
558
|
return;
|
|
535
559
|
}
|
|
536
560
|
if (name === "nitro" || ctx.services[name]) return;
|
|
@@ -585,8 +609,14 @@ function nitroMain(ctx) {
|
|
|
585
609
|
debug("[main] Generating manifest and entry points for environment:", environment.name);
|
|
586
610
|
const isRegisteredService = Object.keys(ctx.services).includes(environment.name);
|
|
587
611
|
let entryFile;
|
|
588
|
-
|
|
589
|
-
|
|
612
|
+
const serviceEntry = isRegisteredService && ctx.services[environment.name]?.entry ? resolve$1(ctx.services[environment.name].entry) : void 0;
|
|
613
|
+
for (const [_name, file] of Object.entries(bundle)) if (file.type === "chunk" && isRegisteredService && file.isEntry) {
|
|
614
|
+
if (serviceEntry && file.facadeModuleId && resolve$1(file.facadeModuleId) === serviceEntry) {
|
|
615
|
+
entryFile = file.fileName;
|
|
616
|
+
break;
|
|
617
|
+
}
|
|
618
|
+
if (entryFile === void 0) entryFile = file.fileName;
|
|
619
|
+
}
|
|
590
620
|
if (isRegisteredService) {
|
|
591
621
|
if (entryFile === void 0) this.error(`No entry point found for service "${this.environment.name}".`);
|
|
592
622
|
ctx._entryPoints[this.environment.name] = entryFile;
|
|
@@ -597,19 +627,21 @@ function nitroMain(ctx) {
|
|
|
597
627
|
return configureViteDevServer(ctx, server);
|
|
598
628
|
},
|
|
599
629
|
async hotUpdate({ server, modules, timestamp }) {
|
|
630
|
+
if (ctx.pluginConfig.experimental?.vite?.serverReload === false) return;
|
|
600
631
|
const env = this.environment;
|
|
601
|
-
if (
|
|
602
|
-
const clientEnvs = Object.values(server.environments).filter((env
|
|
603
|
-
|
|
632
|
+
if (env.config.consumer === "client") return;
|
|
633
|
+
const clientEnvs = Object.values(server.environments).filter((env) => env.config.consumer === "client");
|
|
634
|
+
const serverOnlyModules = [];
|
|
635
|
+
const sharedModules = [];
|
|
604
636
|
const invalidated = /* @__PURE__ */ new Set();
|
|
605
|
-
for (const mod of modules) if (mod.id && !clientEnvs.some((env
|
|
606
|
-
|
|
637
|
+
for (const mod of modules) if (mod.id && !clientEnvs.some((env) => env.moduleGraph.getModuleById(mod.id))) {
|
|
638
|
+
serverOnlyModules.push(mod);
|
|
607
639
|
env.moduleGraph.invalidateModule(mod, invalidated, timestamp, false);
|
|
608
|
-
}
|
|
609
|
-
if (
|
|
640
|
+
} else sharedModules.push(mod);
|
|
641
|
+
if (serverOnlyModules.length > 0) {
|
|
610
642
|
env.hot.send({ type: "full-reload" });
|
|
611
|
-
server.ws.send({ type: "full-reload" });
|
|
612
|
-
return
|
|
643
|
+
if (sharedModules.length === 0 && serverOnlyModules.some((m) => m.environment !== "ssr")) server.ws.send({ type: "full-reload" });
|
|
644
|
+
return sharedModules;
|
|
613
645
|
}
|
|
614
646
|
}
|
|
615
647
|
};
|
|
@@ -672,7 +704,9 @@ async function setupNitroContext(ctx, configEnv, userConfig) {
|
|
|
672
704
|
};
|
|
673
705
|
nitroConfig.modules ??= [];
|
|
674
706
|
for (const plugin of flattenPlugins(userConfig.plugins || [])) if (plugin.nitro) nitroConfig.modules.push(plugin.nitro);
|
|
675
|
-
|
|
707
|
+
const dotenvFileNames = [".env", ".env.local"];
|
|
708
|
+
if (configEnv.mode) dotenvFileNames.push(`.env.${configEnv.mode}`, `.env.${configEnv.mode}.local`);
|
|
709
|
+
ctx.nitro = ctx.pluginConfig._nitro || await createNitro(nitroConfig, { dotenv: { fileName: dotenvFileNames } });
|
|
676
710
|
if (!ctx.services?.ssr) if (userConfig.environments?.ssr === void 0) {
|
|
677
711
|
const ssrEntry = resolveModulePath("./entry-server", {
|
|
678
712
|
from: [
|
|
@@ -717,7 +751,7 @@ async function setupNitroContext(ctx, configEnv, userConfig) {
|
|
|
717
751
|
await ctx.nitro.hooks.callHook("build:before", ctx.nitro);
|
|
718
752
|
ctx.bundlerConfig = await getBundlerConfig(ctx);
|
|
719
753
|
await ctx.nitro.hooks.callHook("rollup:before", ctx.nitro, ctx.bundlerConfig.rollupConfig || ctx.bundlerConfig.rolldownConfig);
|
|
720
|
-
if (ctx.nitro.options.dev)
|
|
754
|
+
if (ctx.nitro.options.dev) await initEnvRunner(ctx);
|
|
721
755
|
ctx.nitro.fetch = (req) => getEnvRunner(ctx).fetch(req);
|
|
722
756
|
if (ctx.nitro.options.dev && !ctx.devApp) ctx.devApp = new NitroDevApp(ctx.nitro);
|
|
723
757
|
ctx.nitro.hooks.hook("close", async () => {
|
|
@@ -732,6 +766,4 @@ function getEntry(input) {
|
|
|
732
766
|
function flattenPlugins(plugins) {
|
|
733
767
|
return plugins.flatMap((plugin) => Array.isArray(plugin) ? flattenPlugins(plugin) : [plugin]).filter((p) => p && !(p instanceof Promise));
|
|
734
768
|
}
|
|
735
|
-
|
|
736
|
-
//#endregion
|
|
737
|
-
export { nitro };
|
|
769
|
+
export { nitro };
|