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
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import "#nitro/virtual/polyfills";
|
|
2
|
-
import type { Handler } from "aws-lambda";
|
|
3
|
-
type StormkitEvent = {
|
|
4
|
-
url: string;
|
|
5
|
-
path: string;
|
|
6
|
-
method: string;
|
|
7
|
-
body?: string;
|
|
8
|
-
query?: Record<string, Array<string>>;
|
|
9
|
-
headers?: Record<string, string>;
|
|
10
|
-
rawHeaders?: Array<string>;
|
|
11
|
-
};
|
|
12
|
-
type StormkitResponse = {
|
|
13
|
-
headers?: Record<string, string>;
|
|
14
|
-
body?: string;
|
|
15
|
-
buffer?: string;
|
|
16
|
-
statusCode: number;
|
|
17
|
-
errorMessage?: string;
|
|
18
|
-
errorStack?: string;
|
|
19
|
-
};
|
|
20
|
-
export declare const handler: Handler<StormkitEvent, StormkitResponse>;
|
|
21
|
-
export {};
|
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
import { parentPort, threadId, workerData } from "node:worker_threads";
|
|
2
|
-
import { Agent } from "undici";
|
|
3
|
-
import { ModuleRunner, ESModulesEvaluator } from "vite/module-runner";
|
|
4
|
-
import { getSocketAddress, isSocketSupported } from "get-port-please";
|
|
5
|
-
|
|
6
|
-
// ----- Environment runners -----
|
|
7
|
-
|
|
8
|
-
const envs = (globalThis.__nitro_vite_envs__ ??= {
|
|
9
|
-
nitro: undefined,
|
|
10
|
-
ssr: undefined,
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
class EnvRunner {
|
|
14
|
-
constructor({ name, entry }) {
|
|
15
|
-
this.name = name;
|
|
16
|
-
this.entryPath = entry;
|
|
17
|
-
|
|
18
|
-
this.entry = undefined;
|
|
19
|
-
this.entryError = undefined;
|
|
20
|
-
|
|
21
|
-
// Create Vite Module Runner
|
|
22
|
-
// https://vite.dev/guide/api-environment-runtimes.html#modulerunner
|
|
23
|
-
this.runnerHooks = {};
|
|
24
|
-
this.runner = new ModuleRunner(
|
|
25
|
-
{
|
|
26
|
-
transport: {
|
|
27
|
-
connect({ onMessage, onDisconnection }) {
|
|
28
|
-
parentPort.on("message", (payload) => {
|
|
29
|
-
if (payload?.type === "custom" && payload.viteEnv === name) {
|
|
30
|
-
onMessage(payload);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
parentPort.on("close", onDisconnection);
|
|
34
|
-
},
|
|
35
|
-
send(payload) {
|
|
36
|
-
parentPort.postMessage({ ...payload, viteEnv: name });
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
new ESModulesEvaluator(),
|
|
41
|
-
process.env.NITRO_DEBUG ? console.debug : undefined
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
this.reload();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async reload() {
|
|
48
|
-
try {
|
|
49
|
-
this.entry = await this.runner.import(this.entryPath);
|
|
50
|
-
this.entryError = undefined;
|
|
51
|
-
} catch (error) {
|
|
52
|
-
console.error(error);
|
|
53
|
-
this.entryError = error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async fetch(req, init) {
|
|
58
|
-
if (this.entryError) {
|
|
59
|
-
return renderError(req, this.entryError);
|
|
60
|
-
}
|
|
61
|
-
for (let i = 0; i < 5 && !(this.entry || this.entryError); i++) {
|
|
62
|
-
await new Promise((r) => setTimeout(r, 100 * Math.pow(2, i)));
|
|
63
|
-
}
|
|
64
|
-
if (this.entryError) {
|
|
65
|
-
return renderError(req, this.entryError);
|
|
66
|
-
}
|
|
67
|
-
if (!this.entry) {
|
|
68
|
-
throw httpError(503, `Vite environment "${this.name}" is unavailable`);
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
const entryFetch = this.entry.fetch || this.entry.default?.fetch;
|
|
72
|
-
if (!entryFetch) {
|
|
73
|
-
throw httpError(
|
|
74
|
-
500,
|
|
75
|
-
`No fetch handler exported from ${this.entryPath}`
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
return await entryFetch(req, init);
|
|
79
|
-
} catch (error) {
|
|
80
|
-
return renderError(req, error);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// ----- RPC listeners -----
|
|
86
|
-
|
|
87
|
-
const viteHostRequests = new Map();
|
|
88
|
-
|
|
89
|
-
async function requestToViteHost(
|
|
90
|
-
name,
|
|
91
|
-
data,
|
|
92
|
-
id = Math.random().toString(16).slice(2),
|
|
93
|
-
timeout = 3000
|
|
94
|
-
) {
|
|
95
|
-
setTimeout(() => {
|
|
96
|
-
if (viteHostRequests.has(id)) {
|
|
97
|
-
viteHostRequests.delete(id);
|
|
98
|
-
reject(new Error(`Request to vite host timed out (${name}:${id})`));
|
|
99
|
-
}
|
|
100
|
-
}, timeout);
|
|
101
|
-
let resolve, reject;
|
|
102
|
-
const promise = new Promise((_resolve, _reject) => {
|
|
103
|
-
resolve = (value) => {
|
|
104
|
-
viteHostRequests.delete(id);
|
|
105
|
-
return _resolve(value);
|
|
106
|
-
};
|
|
107
|
-
reject = (err) => {
|
|
108
|
-
viteHostRequests.delete(id);
|
|
109
|
-
return _reject(err);
|
|
110
|
-
};
|
|
111
|
-
});
|
|
112
|
-
viteHostRequests.set(id, { resolve, reject });
|
|
113
|
-
parentPort.postMessage({
|
|
114
|
-
type: "custom",
|
|
115
|
-
event: "nitro:vite-invoke",
|
|
116
|
-
data: { name, id, data },
|
|
117
|
-
});
|
|
118
|
-
return promise;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
parentPort.on("message", (payload) => {
|
|
122
|
-
if (payload?.type !== "custom") {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
switch (payload.event) {
|
|
126
|
-
case "nitro:vite-server-addr": {
|
|
127
|
-
viteServerAddr = payload.data;
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
case "nitro:vite-env": {
|
|
131
|
-
const { name, entry } = payload.data;
|
|
132
|
-
if (envs[name]) {
|
|
133
|
-
console.error(`Vite environment "${name}" already registered!`);
|
|
134
|
-
} else {
|
|
135
|
-
envs[name] = new EnvRunner({ name, entry });
|
|
136
|
-
}
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
case "nitro:vite-invoke-response": {
|
|
140
|
-
const { id, data: response } = payload.data;
|
|
141
|
-
const req = viteHostRequests.get(id);
|
|
142
|
-
if (req) {
|
|
143
|
-
if (response.error) {
|
|
144
|
-
req.reject(response.error);
|
|
145
|
-
} else {
|
|
146
|
-
req.resolve(response.data);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
// Trap unhandled errors to avoid worker crash
|
|
155
|
-
process.on("unhandledRejection", (error) => console.error(error));
|
|
156
|
-
process.on("uncaughtException", (error) => console.error(error));
|
|
157
|
-
|
|
158
|
-
// ----- RSC Support -----
|
|
159
|
-
|
|
160
|
-
// define __VITE_ENVIRONMENT_RUNNER_IMPORT__ for RSC support
|
|
161
|
-
// https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-rsc/README.md#__vite_environment_runner_import__
|
|
162
|
-
|
|
163
|
-
globalThis.__VITE_ENVIRONMENT_RUNNER_IMPORT__ = async function (
|
|
164
|
-
environmentName,
|
|
165
|
-
id
|
|
166
|
-
) {
|
|
167
|
-
const env = envs[environmentName];
|
|
168
|
-
if (!env) {
|
|
169
|
-
throw new Error(`Vite environment "${environmentName}" is not registered`);
|
|
170
|
-
}
|
|
171
|
-
return env.runner.import(id);
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
// ----- Server -----
|
|
175
|
-
|
|
176
|
-
async function reload() {
|
|
177
|
-
try {
|
|
178
|
-
await Promise.all(Object.values(envs).map((env) => env?.reload()));
|
|
179
|
-
} catch (error) {
|
|
180
|
-
console.error(error);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// eslint-disable-next-line unicorn/prefer-top-level-await
|
|
185
|
-
reload();
|
|
186
|
-
|
|
187
|
-
if (workerData.server) {
|
|
188
|
-
const { createServer } = await import("node:http");
|
|
189
|
-
const { toNodeHandler } = await import("srvx/node");
|
|
190
|
-
const server = createServer(
|
|
191
|
-
toNodeHandler(async (req, init) => {
|
|
192
|
-
const viteEnv =
|
|
193
|
-
init?.viteEnv || req?.headers.get("x-vite-env") || "nitro"; // TODO
|
|
194
|
-
const env = envs[viteEnv];
|
|
195
|
-
if (!env) {
|
|
196
|
-
return renderError(
|
|
197
|
-
req,
|
|
198
|
-
httpError(500, `Unknown vite environment "${viteEnv}"`)
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
return env.fetch(req, init);
|
|
202
|
-
})
|
|
203
|
-
);
|
|
204
|
-
|
|
205
|
-
server.on("upgrade", (req, socket, head) => {
|
|
206
|
-
const handleUpgrade = envs["nitro"]?.entry?.handleUpgrade;
|
|
207
|
-
handleUpgrade?.(req, socket, head);
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
parentPort.on("message", async (message) => {
|
|
211
|
-
if (message?.type === "full-reload") {
|
|
212
|
-
await reload();
|
|
213
|
-
} else if (message?.event === "shutdown") {
|
|
214
|
-
server.close(() => {
|
|
215
|
-
parentPort.postMessage({ event: "exit" });
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
await listen(server);
|
|
220
|
-
const address = server.address();
|
|
221
|
-
parentPort?.postMessage({
|
|
222
|
-
event: "listen",
|
|
223
|
-
address:
|
|
224
|
-
typeof address === "string"
|
|
225
|
-
? { socketPath: address }
|
|
226
|
-
: { host: "localhost", port: address?.port },
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// ----- HTML Transform -----
|
|
231
|
-
|
|
232
|
-
globalThis.__transform_html__ = async function (html) {
|
|
233
|
-
html = await requestToViteHost("transformHTML", html).catch((error) => {
|
|
234
|
-
console.warn("Failed to transform HTML via Vite:", error);
|
|
235
|
-
return html;
|
|
236
|
-
});
|
|
237
|
-
return html;
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
// ----- Error handling -----
|
|
241
|
-
|
|
242
|
-
function httpError(status, message) {
|
|
243
|
-
const error = new Error(message || `HTTP Error ${status}`);
|
|
244
|
-
error.status = status;
|
|
245
|
-
error.name = "NitroViteError";
|
|
246
|
-
return error;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
async function renderError(req, error) {
|
|
250
|
-
if (req.headers.get("accept")?.includes("application/json")) {
|
|
251
|
-
return new Response(
|
|
252
|
-
JSON.stringify(
|
|
253
|
-
{
|
|
254
|
-
status: error.status || 500,
|
|
255
|
-
name: error.name || "Error",
|
|
256
|
-
message: error.message,
|
|
257
|
-
stack: (error.stack || "")
|
|
258
|
-
.split("\n")
|
|
259
|
-
.splice(1)
|
|
260
|
-
.map((l) => l.trim()),
|
|
261
|
-
},
|
|
262
|
-
null,
|
|
263
|
-
2
|
|
264
|
-
),
|
|
265
|
-
{
|
|
266
|
-
status: error.status || 500,
|
|
267
|
-
headers: {
|
|
268
|
-
"Content-Type": "application/json",
|
|
269
|
-
"Cache-Control": "no-store, max-age=0, must-revalidate",
|
|
270
|
-
Pragma: "no-cache",
|
|
271
|
-
Expires: "0",
|
|
272
|
-
},
|
|
273
|
-
}
|
|
274
|
-
);
|
|
275
|
-
}
|
|
276
|
-
const { Youch } = await import("youch");
|
|
277
|
-
const youch = new Youch();
|
|
278
|
-
return new Response(await youch.toHTML(error), {
|
|
279
|
-
status: error.status || 500,
|
|
280
|
-
headers: {
|
|
281
|
-
"Content-Type": "text/html",
|
|
282
|
-
"Cache-Control": "no-store, max-age=0, must-revalidate",
|
|
283
|
-
Pragma: "no-cache",
|
|
284
|
-
Expires: "0",
|
|
285
|
-
},
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// ----- Internal Utils -----
|
|
290
|
-
|
|
291
|
-
async function listen(server) {
|
|
292
|
-
const listenAddr = (await isSocketSupported())
|
|
293
|
-
? getSocketAddress({
|
|
294
|
-
name: `nitro-vite-${threadId}`,
|
|
295
|
-
pid: true,
|
|
296
|
-
random: true,
|
|
297
|
-
})
|
|
298
|
-
: { port: 0, host: "localhost" };
|
|
299
|
-
return new Promise((resolve, reject) => {
|
|
300
|
-
try {
|
|
301
|
-
server.listen(listenAddr, () => resolve());
|
|
302
|
-
} catch (error) {
|
|
303
|
-
reject(error);
|
|
304
|
-
}
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
function fetchAddress(addr, input, inputInit) {
|
|
309
|
-
let url;
|
|
310
|
-
let init;
|
|
311
|
-
if (input instanceof Request) {
|
|
312
|
-
url = new URL(input.url);
|
|
313
|
-
init = {
|
|
314
|
-
method: input.method,
|
|
315
|
-
headers: input.headers,
|
|
316
|
-
body: input.body,
|
|
317
|
-
...inputInit,
|
|
318
|
-
};
|
|
319
|
-
} else {
|
|
320
|
-
url = new URL(input);
|
|
321
|
-
init = inputInit;
|
|
322
|
-
}
|
|
323
|
-
init = {
|
|
324
|
-
duplex: "half",
|
|
325
|
-
redirect: "manual",
|
|
326
|
-
...init,
|
|
327
|
-
};
|
|
328
|
-
if (addr.socketPath) {
|
|
329
|
-
url.protocol = "http:";
|
|
330
|
-
return fetch(url, {
|
|
331
|
-
...init,
|
|
332
|
-
...fetchSocketOptions(addr.socketPath),
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
const origin = `http://${addr.host}${addr.port ? `:${addr.port}` : ""}`;
|
|
336
|
-
const outURL = new URL(url.pathname + url.search, origin);
|
|
337
|
-
return fetch(outURL, init);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
function fetchSocketOptions(socketPath) {
|
|
341
|
-
if ("Bun" in globalThis) {
|
|
342
|
-
// https://bun.sh/guides/http/fetch-unix
|
|
343
|
-
return { unix: socketPath };
|
|
344
|
-
}
|
|
345
|
-
if ("Deno" in globalThis) {
|
|
346
|
-
// https://github.com/denoland/deno/pull/29154
|
|
347
|
-
return {
|
|
348
|
-
client: Deno.createHttpClient({
|
|
349
|
-
// @ts-expect-error Missing types?
|
|
350
|
-
transport: "unix",
|
|
351
|
-
path: socketPath,
|
|
352
|
-
}),
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
// https://github.com/nodejs/undici/issues/2970
|
|
356
|
-
return {
|
|
357
|
-
dispatcher: new Agent({ connect: { socketPath } }),
|
|
358
|
-
};
|
|
359
|
-
}
|