nitro 3.0.1-alpha.1 → 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 +4 -2
- package/dist/THIRD-PARTY-LICENSES.md +1646 -0
- package/dist/_build/common.mjs +29347 -54
- package/dist/_build/rolldown.mjs +53 -86
- package/dist/_build/rollup.mjs +42 -137
- package/dist/_build/vite.build.mjs +12 -50
- package/dist/_chunks/{B-D1JOIz.mjs → nitro.mjs} +211 -407
- package/dist/_chunks/nitro2.mjs +102 -0
- package/dist/_chunks/nitro3.mjs +129 -0
- package/dist/_chunks/utils.mjs +272 -0
- package/dist/{_chunks/Bqks5huO.mjs → _common.mjs} +11 -7
- package/dist/_dev.mjs +140 -326
- 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+readdirp+chokidar.d.mts +230 -0
- package/dist/_libs/citty.mjs +141 -113
- package/dist/_libs/{plugin-commonjs.mjs → commondir+is-reference.mjs} +79 -259
- package/dist/_libs/compatx.d.mts +47 -0
- package/dist/_libs/compatx.mjs +1 -2
- package/dist/_libs/esbuild.d.mts +20 -0
- package/dist/_libs/escape-string-regexp.mjs +1 -2
- package/dist/_libs/estree+pluginutils.d.mts +241 -0
- package/dist/_libs/estree-walker.mjs +1 -147
- package/dist/_libs/exsolve.d.mts +1 -0
- package/dist/_libs/{plugin-node-resolve.mjs → hasown+resolve+deepmerge.mjs} +612 -216
- package/dist/_libs/httpxy.d.mts +82 -0
- package/dist/_libs/httpxy.mjs +299 -38
- package/dist/_libs/js-tokens.d.mts +1 -0
- package/dist/_libs/klona.mjs +1 -2
- package/dist/_libs/magic-string.d.mts +220 -0
- package/dist/_libs/mlly.d.mts +57 -0
- package/dist/_libs/nypm+tinyexec.mjs +845 -0
- package/dist/_libs/perfect-debounce.mjs +88 -0
- package/dist/_libs/pkg-types.d.mts +23 -0
- package/dist/_libs/plugin-alias.mjs +4 -4
- package/dist/_libs/plugin-inject.mjs +3 -7
- package/dist/_libs/plugin-json.mjs +3 -5
- package/dist/_libs/{vite-plugin-fullstack.mjs → pluginutils.mjs} +241 -156
- package/dist/_libs/{chokidar.mjs → readdirp+chokidar.mjs} +268 -223
- package/dist/_libs/remapping.mjs +2 -4
- package/dist/_libs/{gen-mapping.mjs → resolve-uri+gen-mapping.mjs} +16 -186
- package/dist/_libs/rou3.d.mts +44 -0
- package/dist/_libs/rou3.mjs +231 -54
- package/dist/_libs/std-env.d.mts +12 -0
- package/dist/_libs/strip-literal.d.mts +1 -0
- package/dist/_libs/tsconfck.mjs +20 -39
- package/dist/_libs/ultrahtml.mjs +3 -14
- package/dist/_libs/unimport+unplugin.mjs +1684 -0
- package/dist/_libs/unplugin+unimport.d.mts +423 -0
- package/dist/_libs/unwasm.d.mts +29 -0
- package/dist/_presets.mjs +475 -468
- package/dist/builder.d.mts +8 -7
- package/dist/builder.mjs +7 -25
- 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 -15
- 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/colors/build/index.js +130 -160
- package/dist/node_modules/@poppinss/colors/package.json +20 -18
- 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/@poppinss/exception/build/index.js +36 -55
- package/dist/node_modules/@poppinss/exception/package.json +19 -16
- package/dist/node_modules/@sindresorhus/is/distribution/index.js +46 -5
- package/dist/node_modules/@sindresorhus/is/package.json +1 -1
- package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
- package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
- package/dist/node_modules/@speed-highlight/core/package.json +2 -2
- package/dist/node_modules/croner/dist/croner.js +1 -1
- package/dist/node_modules/croner/package.json +11 -1
- package/dist/node_modules/ufo/dist/index.mjs +16 -9
- package/dist/node_modules/ufo/package.json +15 -14
- package/dist/node_modules/unctx/package.json +16 -16
- package/dist/node_modules/youch/build/helpers-B9BQYaS6.js +23 -0
- package/dist/node_modules/youch/build/index.js +204 -352
- package/dist/node_modules/youch/build/public/error_info/script.js +1 -1
- package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
- package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
- package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
- 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 +13 -61
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +2 -1
- package/dist/presets/_nitro/runtime/service-worker.mjs +2 -3
- package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +1 -1
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +11 -11
- package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +1 -1
- package/dist/presets/azure/runtime/azure-swa.mjs +1 -1
- package/dist/presets/bun/runtime/bun.mjs +11 -11
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +19 -17
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +17 -16
- package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +8 -9
- package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +12 -18
- package/dist/presets/deno/runtime/deno-deploy.mjs +4 -5
- package/dist/presets/deno/runtime/deno-server.mjs +9 -9
- package/dist/presets/netlify/runtime/netlify-edge.mjs +3 -3
- package/dist/presets/netlify/runtime/netlify.mjs +3 -1
- package/dist/presets/node/runtime/node-cluster.mjs +8 -8
- package/dist/presets/node/runtime/node-middleware.mjs +4 -5
- package/dist/presets/node/runtime/node-server.mjs +8 -8
- package/dist/presets/standard/runtime/server.mjs +1 -1
- package/dist/presets/stormkit/runtime/stormkit.mjs +1 -2
- package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
- package/dist/presets/vercel/runtime/isr.mjs +19 -0
- package/dist/presets/vercel/runtime/vercel.node.mjs +16 -7
- package/dist/presets/vercel/runtime/vercel.web.mjs +14 -11
- package/dist/presets/winterjs/runtime/winterjs.mjs +1 -1
- package/dist/presets/zeabur/runtime/zeabur.mjs +1 -1
- package/dist/presets/zephyr/runtime/server.mjs +3 -0
- package/dist/runtime/app.d.mts +1 -1
- package/dist/runtime/app.mjs +1 -1
- package/dist/runtime/internal/app.d.mts +7 -3
- package/dist/runtime/internal/app.mjs +29 -22
- 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/database.mjs +1 -1
- package/dist/runtime/internal/error/dev.d.mts +5 -5
- package/dist/runtime/internal/error/dev.mjs +39 -41
- 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 -8
- 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 +7 -3
- package/dist/runtime/internal/routes/openapi.d.mts +0 -1
- package/dist/runtime/internal/routes/openapi.mjs +3 -3
- 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/renderer-template.dev.mjs +1 -1
- package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
- package/dist/runtime/internal/routes/scalar.d.mts +0 -1
- package/dist/runtime/internal/routes/scalar.mjs +4 -4
- package/dist/runtime/internal/routes/swagger.d.mts +0 -1
- package/dist/runtime/internal/routes/swagger.mjs +3 -3
- package/dist/runtime/internal/runtime-config.d.mts +1 -1
- package/dist/runtime/internal/runtime-config.mjs +8 -8
- package/dist/runtime/internal/static.mjs +6 -5
- package/dist/runtime/internal/storage.mjs +1 -1
- package/dist/runtime/internal/task.d.mts +3 -1
- package/dist/runtime/internal/task.mjs +3 -3
- package/dist/runtime/internal/vite/dev-entry.mjs +8 -6
- package/dist/runtime/internal/vite/dev-worker.mjs +166 -216
- package/dist/runtime/meta.d.mts +1 -1
- package/dist/runtime/meta.mjs +2 -1
- package/dist/runtime/nitro.d.mts +2 -3
- package/dist/runtime/nitro.mjs +3 -1
- package/dist/runtime/virtual/_runtime_warn.d.mts +1 -0
- package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
- package/dist/runtime/virtual/database.d.mts +8 -0
- package/dist/runtime/virtual/database.mjs +2 -0
- package/dist/runtime/virtual/error-handler.d.mts +6 -0
- package/dist/runtime/virtual/error-handler.mjs +9 -0
- package/dist/runtime/virtual/feature-flags.d.mts +7 -0
- package/dist/runtime/virtual/feature-flags.mjs +7 -0
- package/dist/runtime/virtual/plugins.d.mts +3 -0
- package/dist/runtime/virtual/plugins.mjs +2 -0
- package/dist/{presets/_nitro/runtime/nitro-prerenderer.d.mts → runtime/virtual/polyfills.d.mts} +1 -1
- package/dist/runtime/virtual/polyfills.mjs +2 -0
- package/dist/runtime/virtual/public-assets.d.mts +9 -0
- package/dist/runtime/virtual/public-assets.mjs +8 -0
- package/dist/runtime/virtual/renderer-template.d.mts +4 -0
- package/dist/runtime/virtual/renderer-template.mjs +7 -0
- package/dist/runtime/virtual/routing-meta.d.mts +7 -0
- package/dist/runtime/virtual/routing-meta.mjs +2 -0
- package/dist/runtime/virtual/routing.d.mts +8 -0
- package/dist/runtime/virtual/routing.mjs +11 -0
- package/dist/runtime/virtual/runtime-config.d.mts +3 -0
- package/dist/runtime/virtual/runtime-config.mjs +5 -0
- package/dist/runtime/virtual/server-assets.d.mts +7 -0
- package/dist/runtime/virtual/server-assets.mjs +12 -0
- package/dist/runtime/virtual/storage.d.mts +3 -0
- package/dist/runtime/virtual/storage.mjs +5 -0
- package/dist/runtime/virtual/tasks.d.mts +10 -0
- package/dist/runtime/virtual/tasks.mjs +3 -0
- package/dist/runtime/{vite-runtime.d.mts → vite.d.mts} +1 -1
- package/dist/types/index.d.mts +315 -443
- package/dist/types/index.mjs +1 -1
- package/dist/vite.d.mts +10 -15
- package/dist/vite.mjs +733 -37
- package/lib/vite.types.d.mts +26 -0
- package/lib/vite.types.mjs +2 -0
- package/package.json +129 -85
- 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/_build/common2.mjs +0 -772
- package/dist/_build/vite.plugin.mjs +0 -768
- package/dist/_chunks/ANM1K1bE.mjs +0 -304
- package/dist/_chunks/BX9-zVkM.mjs +0 -59
- package/dist/_chunks/C7CbzoI1.mjs +0 -39
- package/dist/_libs/acorn.mjs +0 -5034
- package/dist/_libs/c12.mjs +0 -2858
- package/dist/_libs/commondir.mjs +0 -22
- package/dist/_libs/confbox.mjs +0 -2920
- package/dist/_libs/deepmerge.mjs +0 -86
- package/dist/_libs/dot-prop.mjs +0 -138
- package/dist/_libs/duplexer.mjs +0 -71
- package/dist/_libs/etag.mjs +0 -80
- package/dist/_libs/fdir.mjs +0 -514
- package/dist/_libs/function-bind.mjs +0 -63
- package/dist/_libs/giget.mjs +0 -19289
- package/dist/_libs/gzip-size.mjs +0 -21
- package/dist/_libs/hasown.mjs +0 -14
- package/dist/_libs/is-core-module.mjs +0 -220
- package/dist/_libs/is-module.mjs +0 -13
- package/dist/_libs/is-reference.mjs +0 -32
- package/dist/_libs/js-tokens.mjs +0 -382
- package/dist/_libs/knitwork.mjs +0 -124
- package/dist/_libs/local-pkg.mjs +0 -1686
- package/dist/_libs/magic-string.mjs +0 -939
- package/dist/_libs/mime.mjs +0 -1391
- package/dist/_libs/node-fetch-native.mjs +0 -173
- package/dist/_libs/path-parse.mjs +0 -47
- package/dist/_libs/pathe.mjs +0 -41
- package/dist/_libs/picomatch.mjs +0 -1673
- package/dist/_libs/plugin-replace.mjs +0 -104
- package/dist/_libs/pretty-bytes.mjs +0 -116
- package/dist/_libs/std-env.mjs +0 -158
- package/dist/_libs/strip-literal.mjs +0 -51
- package/dist/_libs/tinyglobby.mjs +0 -292
- package/dist/_libs/unimport.mjs +0 -3520
- package/dist/_libs/untyped.mjs +0 -271
- package/dist/_libs/unwasm.mjs +0 -5836
- package/dist/cli/_chunks/detect-acorn.mjs +0 -12
- package/dist/cli/_chunks/dist.mjs +0 -3
- package/dist/cli/_chunks/dist2.mjs +0 -3
- package/dist/cli/_chunks/dist3.mjs +0 -3
- package/dist/cli/_chunks/dist4.mjs +0 -4
- package/dist/cli/_chunks/dist5.mjs +0 -4
- package/dist/cli/_chunks/esm.mjs +0 -3
- package/dist/cli/_chunks/json5.mjs +0 -4
- package/dist/cli/_chunks/jsonc.mjs +0 -4
- package/dist/cli/_chunks/multipart-parser.mjs +0 -6
- package/dist/cli/_chunks/toml.mjs +0 -4
- package/dist/cli/_chunks/yaml.mjs +0 -4
- package/dist/node_modules/hookable/dist/index.mjs +0 -267
- package/dist/node_modules/hookable/package.json +0 -52
- package/dist/node_modules/kleur/index.js +0 -110
- package/dist/node_modules/youch/build/chunk-4L7RY2JA.js +0 -42
- package/dist/node_modules/youch/build/chunk-4XB2BYKC.js +0 -85
- package/dist/node_modules/youch/build/chunk-4YEN7HVQ.js +0 -61
- package/dist/node_modules/youch/build/chunk-EUJBVOYB.js +0 -83
- package/dist/node_modules/youch/build/chunk-F4I6KX4R.js +0 -46
- package/dist/node_modules/youch/build/chunk-HFSXRSKS.js +0 -85
- package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
- package/dist/node_modules/youch/build/chunk-PINJDICN.js +0 -72
- package/dist/node_modules/youch/build/chunk-PUHGL6HA.js +0 -41
- package/dist/node_modules/youch/build/chunk-YYEJ3AGB.js +0 -225
- package/dist/presets/_nitro/runtime/nitro-dev.d.mts +0 -2
- 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 -13
- 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 -4
- package/dist/presets/netlify/runtime/netlify.d.mts +0 -3
- 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/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 -3
- package/dist/presets/zeabur/runtime/zeabur.d.mts +0 -3
- package/lib/deps/ofetch.mjs +0 -1
- package/lib/deps/ofetch.mts +0 -1
- /package/dist/runtime/{vite-runtime.mjs → vite.mjs} +0 -0
- /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
- /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
package/dist/_dev.mjs
CHANGED
|
@@ -1,220 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as
|
|
3
|
-
import { t as
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
1
|
+
import { A as src_default, H as v, V as m, ct as join$1, dt as resolve$1, g as writeDevBuildInfo, ot as extname$1 } from "./_build/common.mjs";
|
|
2
|
+
import { n as watch$1 } from "./_libs/readdirp+chokidar.mjs";
|
|
3
|
+
import { t as debounce } from "./_libs/perfect-debounce.mjs";
|
|
4
|
+
import { t as createProxyServer } from "./_libs/httpxy.mjs";
|
|
5
|
+
import consola from "consola";
|
|
6
|
+
import { createReadStream } from "node:fs";
|
|
7
|
+
import { readFile, stat as stat$1 } from "node:fs/promises";
|
|
8
8
|
import { dirname, resolve } from "node:path";
|
|
9
|
-
import { createReadStream, existsSync } from "node:fs";
|
|
10
9
|
import { joinURL } from "ufo";
|
|
11
|
-
import { readFile, rm, stat } from "node:fs/promises";
|
|
12
10
|
import { createBrotliCompress, createGzip } from "node:zlib";
|
|
13
|
-
import {
|
|
11
|
+
import { RunnerManager, loadRunner } from "env-runner";
|
|
14
12
|
import { H3, HTTPError, defineHandler, fromNodeHandler, getRequestIP, getRequestURL, serveStatic, toEventHandler } from "h3";
|
|
15
|
-
import { Agent } from "undici";
|
|
16
13
|
import { serve } from "srvx/node";
|
|
17
|
-
import { ErrorParser } from "youch-core";
|
|
18
|
-
import { Youch } from "youch";
|
|
19
|
-
import { SourceMapConsumer } from "source-map";
|
|
20
14
|
import { FastResponse } from "srvx";
|
|
21
|
-
|
|
22
|
-
//#region src/dev/proxy.ts
|
|
23
|
-
function createHTTPProxy(defaults = {}) {
|
|
24
|
-
const proxy = createProxyServer(defaults);
|
|
25
|
-
proxy.on("proxyReq", (proxyReq, req) => {
|
|
26
|
-
if (!proxyReq.hasHeader("x-forwarded-for")) {
|
|
27
|
-
const address = req.socket.remoteAddress;
|
|
28
|
-
if (address) proxyReq.appendHeader("x-forwarded-for", address);
|
|
29
|
-
}
|
|
30
|
-
if (!proxyReq.hasHeader("x-forwarded-port")) {
|
|
31
|
-
if (req?.socket?.localPort) proxyReq.setHeader("x-forwarded-port", req.socket.localPort);
|
|
32
|
-
}
|
|
33
|
-
if (!proxyReq.hasHeader("x-forwarded-Proto")) {
|
|
34
|
-
const encrypted = (req?.connection)?.encrypted;
|
|
35
|
-
proxyReq.setHeader("x-forwarded-proto", encrypted ? "https" : "http");
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
return {
|
|
39
|
-
proxy,
|
|
40
|
-
async handleEvent(event, opts) {
|
|
41
|
-
try {
|
|
42
|
-
return await fromNodeHandler((req, res) => proxy.web(req, res, opts))(event);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
event.res.headers.set("refresh", "3");
|
|
45
|
-
throw new HTTPError({
|
|
46
|
-
status: 503,
|
|
47
|
-
message: "Dev server is unavailable.",
|
|
48
|
-
cause: error
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
function fetchAddress(addr, input, inputInit) {
|
|
55
|
-
let url;
|
|
56
|
-
let init;
|
|
57
|
-
if (input instanceof Request) {
|
|
58
|
-
url = new URL(input.url);
|
|
59
|
-
init = {
|
|
60
|
-
method: input.method,
|
|
61
|
-
headers: input.headers,
|
|
62
|
-
body: input.body,
|
|
63
|
-
...inputInit
|
|
64
|
-
};
|
|
65
|
-
} else {
|
|
66
|
-
url = new URL(input);
|
|
67
|
-
init = inputInit;
|
|
68
|
-
}
|
|
69
|
-
init = {
|
|
70
|
-
duplex: "half",
|
|
71
|
-
redirect: "manual",
|
|
72
|
-
...init
|
|
73
|
-
};
|
|
74
|
-
if (addr.socketPath) {
|
|
75
|
-
url.protocol = "http:";
|
|
76
|
-
return fetch(url, {
|
|
77
|
-
...init,
|
|
78
|
-
...fetchSocketOptions(addr.socketPath)
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
const origin = `http://${addr.host}${addr.port ? `:${addr.port}` : ""}`;
|
|
82
|
-
const outURL = new URL(url.pathname + url.search, origin);
|
|
83
|
-
return fetch(outURL, init);
|
|
84
|
-
}
|
|
85
|
-
function fetchSocketOptions(socketPath) {
|
|
86
|
-
if ("Bun" in globalThis) return { unix: socketPath };
|
|
87
|
-
if ("Deno" in globalThis) return { client: Deno.createHttpClient({
|
|
88
|
-
transport: "unix",
|
|
89
|
-
path: socketPath
|
|
90
|
-
}) };
|
|
91
|
-
return { dispatcher: new Agent({ connect: { socketPath } }) };
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
//#endregion
|
|
95
|
-
//#region src/dev/worker.ts
|
|
96
|
-
var NodeDevWorker = class {
|
|
97
|
-
closed = false;
|
|
98
|
-
#name;
|
|
99
|
-
#entry;
|
|
100
|
-
#data;
|
|
101
|
-
#hooks;
|
|
102
|
-
#worker;
|
|
103
|
-
#address;
|
|
104
|
-
#proxy;
|
|
105
|
-
#messageListeners;
|
|
106
|
-
constructor(opts) {
|
|
107
|
-
this.#name = opts.name;
|
|
108
|
-
this.#entry = opts.entry;
|
|
109
|
-
this.#data = opts.data;
|
|
110
|
-
this.#hooks = opts.hooks;
|
|
111
|
-
this.#proxy = createHTTPProxy();
|
|
112
|
-
this.#messageListeners = /* @__PURE__ */ new Set();
|
|
113
|
-
this.#initWorker();
|
|
114
|
-
}
|
|
115
|
-
get ready() {
|
|
116
|
-
return Boolean(!this.closed && this.#address && this.#proxy && this.#worker);
|
|
117
|
-
}
|
|
118
|
-
async fetch(input, init) {
|
|
119
|
-
for (let i = 0; i < 5 && !(this.#address && this.#proxy); i++) await new Promise((r) => setTimeout(r, 100 * Math.pow(2, i)));
|
|
120
|
-
if (!(this.#address && this.#proxy)) return new Response("Dev worker is unavailable", { status: 503 });
|
|
121
|
-
return fetchAddress(this.#address, input, init);
|
|
122
|
-
}
|
|
123
|
-
upgrade(req, socket, head) {
|
|
124
|
-
if (!this.ready) return;
|
|
125
|
-
return this.#proxy.proxy.ws(req, socket, {
|
|
126
|
-
target: this.#address,
|
|
127
|
-
xfwd: true
|
|
128
|
-
}, head).catch((error) => {
|
|
129
|
-
consola$1.error("WebSocket proxy error:", error);
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
sendMessage(message) {
|
|
133
|
-
if (!this.#worker) throw new Error("Dev worker should be initialized before sending messages.");
|
|
134
|
-
this.#worker.postMessage(message);
|
|
135
|
-
}
|
|
136
|
-
onMessage(listener) {
|
|
137
|
-
this.#messageListeners.add(listener);
|
|
138
|
-
}
|
|
139
|
-
offMessage(listener) {
|
|
140
|
-
this.#messageListeners.delete(listener);
|
|
141
|
-
}
|
|
142
|
-
async close(cause) {
|
|
143
|
-
if (this.closed) return;
|
|
144
|
-
this.closed = true;
|
|
145
|
-
this.#hooks.onClose?.(this, cause);
|
|
146
|
-
this.#hooks = {};
|
|
147
|
-
const onError = (error) => consola$1.error(error);
|
|
148
|
-
await this.#closeWorker().catch(onError);
|
|
149
|
-
await this.#closeProxy().catch(onError);
|
|
150
|
-
await this.#closeSocket().catch(onError);
|
|
151
|
-
}
|
|
152
|
-
[Symbol.for("nodejs.util.inspect.custom")]() {
|
|
153
|
-
const status = this.closed ? "closed" : this.ready ? "ready" : "pending";
|
|
154
|
-
return `NodeDevWorker#${this.#name}(${status})`;
|
|
155
|
-
}
|
|
156
|
-
#initWorker() {
|
|
157
|
-
if (!existsSync(this.#entry)) {
|
|
158
|
-
this.close(`worker entry not found in "${this.#entry}".`);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
const worker = new Worker(this.#entry, {
|
|
162
|
-
env: { ...process.env },
|
|
163
|
-
workerData: {
|
|
164
|
-
name: this.#name,
|
|
165
|
-
...this.#data
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
worker.once("exit", (code) => {
|
|
169
|
-
worker._exitCode = code;
|
|
170
|
-
this.close(`worker exited with code ${code}`);
|
|
171
|
-
});
|
|
172
|
-
worker.once("error", (error) => {
|
|
173
|
-
consola$1.error(`Worker error:`, error);
|
|
174
|
-
this.close(error);
|
|
175
|
-
});
|
|
176
|
-
worker.on("message", (message) => {
|
|
177
|
-
if (message?.address) {
|
|
178
|
-
this.#address = message.address;
|
|
179
|
-
this.#hooks.onReady?.(this, this.#address);
|
|
180
|
-
}
|
|
181
|
-
for (const listener of this.#messageListeners) listener(message);
|
|
182
|
-
});
|
|
183
|
-
this.#worker = worker;
|
|
184
|
-
}
|
|
185
|
-
async #closeProxy() {
|
|
186
|
-
this.#proxy?.proxy?.close(() => {});
|
|
187
|
-
this.#proxy = void 0;
|
|
188
|
-
}
|
|
189
|
-
async #closeSocket() {
|
|
190
|
-
const socketPath = this.#address?.socketPath;
|
|
191
|
-
if (socketPath && socketPath[0] !== "\0" && !socketPath.startsWith(String.raw`\\.\pipe`)) await rm(socketPath).catch(() => {});
|
|
192
|
-
this.#address = void 0;
|
|
193
|
-
}
|
|
194
|
-
async #closeWorker() {
|
|
195
|
-
if (!this.#worker) return;
|
|
196
|
-
this.#worker.postMessage({ event: "shutdown" });
|
|
197
|
-
if (!this.#worker._exitCode && !a && !T) await new Promise((resolve$2) => {
|
|
198
|
-
const gracefulShutdownTimeoutMs = Number.parseInt(process.env.NITRO_SHUTDOWN_TIMEOUT || "", 10) || 5e3;
|
|
199
|
-
const timeout = setTimeout(() => {
|
|
200
|
-
if (process.env.DEBUG) consola$1.warn(`force closing dev worker...`);
|
|
201
|
-
}, gracefulShutdownTimeoutMs);
|
|
202
|
-
this.#worker?.on("message", (message) => {
|
|
203
|
-
if (message.event === "exit") {
|
|
204
|
-
clearTimeout(timeout);
|
|
205
|
-
resolve$2();
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
this.#worker.removeAllListeners();
|
|
210
|
-
await this.#worker.terminate().catch((error) => {
|
|
211
|
-
consola$1.error(error);
|
|
212
|
-
});
|
|
213
|
-
this.#worker = void 0;
|
|
214
|
-
}
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
//#endregion
|
|
218
15
|
//#region src/dev/vfs.ts
|
|
219
16
|
function createVFSHandler(nitro) {
|
|
220
17
|
return defineHandler(async (event) => {
|
|
@@ -224,24 +21,19 @@ function createVFSHandler(nitro) {
|
|
|
224
21
|
statusText: `Forbidden IP: "${ip || "?"}"`,
|
|
225
22
|
status: 403
|
|
226
23
|
});
|
|
227
|
-
const vfsEntries = {
|
|
228
|
-
...nitro.vfs,
|
|
229
|
-
...nitro.options.virtual
|
|
230
|
-
};
|
|
231
24
|
const url = event.context.params?._ || "";
|
|
232
25
|
const isJson = url.endsWith(".json") || event.req.headers.get("accept")?.includes("application/json");
|
|
233
26
|
const id = decodeURIComponent(url.replace(/^(\.json)?\/?/, "") || "");
|
|
234
|
-
if (id && !(id
|
|
27
|
+
if (id && !nitro.vfs.has(id)) throw new HTTPError({
|
|
235
28
|
message: "File not found",
|
|
236
29
|
status: 404
|
|
237
30
|
});
|
|
238
|
-
|
|
239
|
-
if (typeof content === "function") content = await content();
|
|
31
|
+
const content = id ? await nitro.vfs.get(id)?.render() : void 0;
|
|
240
32
|
if (isJson) return {
|
|
241
33
|
rootDir: nitro.options.rootDir,
|
|
242
|
-
entries:
|
|
243
|
-
id
|
|
244
|
-
path: "/_vfs.json/" + encodeURIComponent(id
|
|
34
|
+
entries: [...nitro.vfs.keys()].map((id) => ({
|
|
35
|
+
id,
|
|
36
|
+
path: "/_vfs.json/" + encodeURIComponent(id)
|
|
245
37
|
})),
|
|
246
38
|
current: id ? {
|
|
247
39
|
id,
|
|
@@ -249,7 +41,7 @@ function createVFSHandler(nitro) {
|
|
|
249
41
|
} : null
|
|
250
42
|
};
|
|
251
43
|
const directories = { [nitro.options.rootDir]: {} };
|
|
252
|
-
const fpaths =
|
|
44
|
+
const fpaths = [...nitro.vfs.keys()];
|
|
253
45
|
for (const item of fpaths) {
|
|
254
46
|
const segments = item.replace(nitro.options.rootDir, "").split("/").filter(Boolean);
|
|
255
47
|
let currentDir = item.startsWith(nitro.options.rootDir) ? directories[nitro.options.rootDir] : directories;
|
|
@@ -258,8 +50,8 @@ function createVFSHandler(nitro) {
|
|
|
258
50
|
currentDir = currentDir[segment];
|
|
259
51
|
}
|
|
260
52
|
}
|
|
261
|
-
const generateHTML = (directory, path
|
|
262
|
-
const subpath = [...path
|
|
53
|
+
const generateHTML = (directory, path = []) => Object.entries(directory).map(([fname, value = {}]) => {
|
|
54
|
+
const subpath = [...path, fname];
|
|
263
55
|
const key = subpath.join("/");
|
|
264
56
|
const encodedUrl = encodeURIComponent(key);
|
|
265
57
|
const linkClass = url === `/${encodedUrl}` ? "bg-gray-700 text-white" : "hover:bg-gray-800 text-gray-200";
|
|
@@ -350,22 +142,20 @@ const editorTemplate = (options) => `
|
|
|
350
142
|
}, 0);
|
|
351
143
|
<\/script>
|
|
352
144
|
`;
|
|
353
|
-
|
|
354
145
|
//#endregion
|
|
355
146
|
//#region src/runtime/internal/error/utils.ts
|
|
356
147
|
function defineNitroErrorHandler(handler) {
|
|
357
148
|
return handler;
|
|
358
149
|
}
|
|
359
|
-
|
|
360
150
|
//#endregion
|
|
361
151
|
//#region src/runtime/internal/error/dev.ts
|
|
362
|
-
|
|
152
|
+
const errorHandler = defineNitroErrorHandler(async function defaultNitroErrorHandler(error, event) {
|
|
363
153
|
const res = await defaultHandler(error, event);
|
|
364
154
|
return new FastResponse(typeof res.body === "string" ? res.body : JSON.stringify(res.body, null, 2), res);
|
|
365
155
|
});
|
|
366
156
|
async function defaultHandler(error, event, opts) {
|
|
367
|
-
const
|
|
368
|
-
const status =
|
|
157
|
+
const unhandled = error.unhandled ?? !HTTPError.isError(error);
|
|
158
|
+
const { status = 500, statusText = "" } = unhandled ? {} : error;
|
|
369
159
|
const url = getRequestURL(event, {
|
|
370
160
|
xForwardedHost: true,
|
|
371
161
|
xForwardedProto: true
|
|
@@ -375,58 +165,63 @@ async function defaultHandler(error, event, opts) {
|
|
|
375
165
|
if (/^\/[^/]/.test(baseURL) && !url.pathname.startsWith(baseURL)) return {
|
|
376
166
|
status: 302,
|
|
377
167
|
statusText: "Found",
|
|
378
|
-
headers: { location: `${baseURL}${url.pathname.slice(1)}${url.search}` },
|
|
168
|
+
headers: new Headers({ location: `${baseURL}${url.pathname.slice(1)}${url.search}` }),
|
|
379
169
|
body: `Redirecting...`
|
|
380
170
|
};
|
|
381
171
|
}
|
|
382
|
-
await loadStackTrace(error).catch(consola
|
|
172
|
+
await loadStackTrace(error).catch(consola.error);
|
|
173
|
+
const { Youch } = await import("youch");
|
|
383
174
|
const youch = new Youch();
|
|
384
|
-
if (
|
|
385
|
-
const
|
|
386
|
-
|
|
387
|
-
consola$1.error(`[request error] ${tags} [${event.req.method}] ${url}\n\n`, ansiError);
|
|
175
|
+
if (unhandled && !opts?.silent) {
|
|
176
|
+
const ansiError = (await youch.toANSI(error)).replaceAll(process.cwd(), ".");
|
|
177
|
+
consola.error(`[request error] [${event.req.method}] ${url}\n\n`, ansiError);
|
|
388
178
|
}
|
|
389
|
-
const useJSON = opts?.json
|
|
390
|
-
const headers = {
|
|
391
|
-
|
|
392
|
-
"
|
|
393
|
-
"
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
} });
|
|
179
|
+
const useJSON = opts?.json ?? !event.req.headers.get("accept")?.includes("text/html");
|
|
180
|
+
const headers = new Headers(unhandled ? {} : error.headers);
|
|
181
|
+
if (useJSON) {
|
|
182
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
183
|
+
const jsonBody = typeof error.toJSON === "function" ? error.toJSON() : {
|
|
184
|
+
status,
|
|
185
|
+
statusText,
|
|
186
|
+
message: error.message
|
|
187
|
+
};
|
|
188
|
+
return {
|
|
189
|
+
status,
|
|
190
|
+
statusText,
|
|
191
|
+
headers,
|
|
192
|
+
body: {
|
|
193
|
+
error: true,
|
|
194
|
+
stack: error.stack?.split("\n").map((line) => line.trim()),
|
|
195
|
+
...jsonBody
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
headers.set("Content-Type", "text/html; charset=utf-8");
|
|
411
200
|
return {
|
|
412
201
|
status,
|
|
413
|
-
statusText: error.statusText,
|
|
202
|
+
statusText: unhandled ? "" : error.statusText,
|
|
414
203
|
headers,
|
|
415
|
-
body
|
|
204
|
+
body: await youch.toHTML(error, { request: {
|
|
205
|
+
url: url.href,
|
|
206
|
+
method: event.req.method,
|
|
207
|
+
headers: Object.fromEntries(event.req.headers.entries())
|
|
208
|
+
} })
|
|
416
209
|
};
|
|
417
210
|
}
|
|
418
211
|
async function loadStackTrace(error) {
|
|
419
212
|
if (!(error instanceof Error)) return;
|
|
213
|
+
const { ErrorParser } = await import("youch-core");
|
|
420
214
|
const parsed = await new ErrorParser().defineSourceLoader(sourceLoader).parse(error);
|
|
421
215
|
const stack = error.message + "\n" + parsed.frames.map((frame) => fmtFrame(frame)).join("\n");
|
|
422
216
|
Object.defineProperty(error, "stack", { value: stack });
|
|
423
|
-
if (error.cause) await loadStackTrace(error.cause).catch(consola
|
|
217
|
+
if (error.cause) await loadStackTrace(error.cause).catch(consola.error);
|
|
424
218
|
}
|
|
425
219
|
async function sourceLoader(frame) {
|
|
426
220
|
if (!frame.fileName || frame.fileType !== "fs" || frame.type === "native") return;
|
|
427
221
|
if (frame.type === "app") {
|
|
428
222
|
const rawSourceMap = await readFile(`${frame.fileName}.map`, "utf8").catch(() => {});
|
|
429
223
|
if (rawSourceMap) {
|
|
224
|
+
const { SourceMapConsumer } = await import("source-map");
|
|
430
225
|
const originalPosition = (await new SourceMapConsumer(rawSourceMap)).originalPositionFor({
|
|
431
226
|
line: frame.lineNumber,
|
|
432
227
|
column: frame.columnNumber
|
|
@@ -446,7 +241,6 @@ function fmtFrame(frame) {
|
|
|
446
241
|
const src = `${frame.fileName || ""}:${frame.lineNumber}:${frame.columnNumber})`;
|
|
447
242
|
return frame.functionName ? `at ${frame.functionName} (${src}` : `at ${src}`;
|
|
448
243
|
}
|
|
449
|
-
|
|
450
244
|
//#endregion
|
|
451
245
|
//#region src/dev/app.ts
|
|
452
246
|
var NitroDevApp = class {
|
|
@@ -461,9 +255,9 @@ var NitroDevApp = class {
|
|
|
461
255
|
const app = new H3({
|
|
462
256
|
debug: true,
|
|
463
257
|
onError: async (error, event) => {
|
|
464
|
-
const errorHandler = this.nitro.options.devErrorHandler ||
|
|
258
|
+
const errorHandler$1 = this.nitro.options.devErrorHandler || errorHandler;
|
|
465
259
|
await loadStackTrace(error).catch(() => {});
|
|
466
|
-
return errorHandler(error, event, { defaultHandler });
|
|
260
|
+
return errorHandler$1(error, event, { defaultHandler });
|
|
467
261
|
}
|
|
468
262
|
});
|
|
469
263
|
for (const h of this.nitro.options.devHandlers) {
|
|
@@ -506,11 +300,11 @@ function serveStaticDir(event, opts) {
|
|
|
506
300
|
return serveStatic(event, {
|
|
507
301
|
fallthrough: opts.fallthrough,
|
|
508
302
|
getMeta: async (id) => {
|
|
509
|
-
const path
|
|
510
|
-
if (!path
|
|
511
|
-
const s = await stat(path
|
|
303
|
+
const path = r(id);
|
|
304
|
+
if (!path) return;
|
|
305
|
+
const s = await stat$1(path).catch(() => null);
|
|
512
306
|
if (!s?.isFile()) return;
|
|
513
|
-
const ext = extname$1(path
|
|
307
|
+
const ext = extname$1(path);
|
|
514
308
|
return {
|
|
515
309
|
size: s.size,
|
|
516
310
|
mtime: s.mtime,
|
|
@@ -518,9 +312,9 @@ function serveStaticDir(event, opts) {
|
|
|
518
312
|
};
|
|
519
313
|
},
|
|
520
314
|
getContents(id) {
|
|
521
|
-
const path
|
|
522
|
-
if (!path
|
|
523
|
-
const stream = createReadStream(path
|
|
315
|
+
const path = r(id);
|
|
316
|
+
if (!path) return;
|
|
317
|
+
const stream = createReadStream(path);
|
|
524
318
|
const acceptEncoding = event.req.headers.get("accept-encoding") || "";
|
|
525
319
|
if (acceptEncoding.includes("br")) {
|
|
526
320
|
event.res.headers.set("Content-Encoding", "br");
|
|
@@ -537,7 +331,29 @@ function serveStaticDir(event, opts) {
|
|
|
537
331
|
}
|
|
538
332
|
});
|
|
539
333
|
}
|
|
540
|
-
|
|
334
|
+
function createHTTPProxy(defaults = {}) {
|
|
335
|
+
const proxy = createProxyServer({
|
|
336
|
+
xfwd: true,
|
|
337
|
+
...defaults
|
|
338
|
+
});
|
|
339
|
+
return {
|
|
340
|
+
proxy,
|
|
341
|
+
async handleEvent(event, opts) {
|
|
342
|
+
try {
|
|
343
|
+
return await fromNodeHandler((req, res) => {
|
|
344
|
+
return proxy.web(req, res, opts);
|
|
345
|
+
})(event);
|
|
346
|
+
} catch (error) {
|
|
347
|
+
event.res.headers.set("refresh", "3");
|
|
348
|
+
throw new HTTPError({
|
|
349
|
+
status: 503,
|
|
350
|
+
message: "Dev server is unavailable.",
|
|
351
|
+
cause: error
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
}
|
|
541
357
|
//#endregion
|
|
542
358
|
//#region src/dev/server.ts
|
|
543
359
|
function createDevServer(nitro) {
|
|
@@ -548,17 +364,21 @@ var NitroDevServer = class NitroDevServer extends NitroDevApp {
|
|
|
548
364
|
#workerData = {};
|
|
549
365
|
#listeners = [];
|
|
550
366
|
#watcher;
|
|
551
|
-
#
|
|
367
|
+
#manager;
|
|
552
368
|
#workerIdCtr = 0;
|
|
553
369
|
#workerError;
|
|
370
|
+
#workerRetries = 0;
|
|
554
371
|
#building = true;
|
|
555
372
|
#buildError;
|
|
556
|
-
#
|
|
373
|
+
#reloadPromise;
|
|
557
374
|
constructor(nitro) {
|
|
558
375
|
super(nitro, async (event) => {
|
|
559
|
-
|
|
560
|
-
if (
|
|
561
|
-
return
|
|
376
|
+
if (this.#building) await this.#waitForBuild();
|
|
377
|
+
if (this.#reloadPromise) await this.#reloadPromise;
|
|
378
|
+
if (this.#buildError) return this.#generateError();
|
|
379
|
+
const response = await this.#manager.fetch(event.req);
|
|
380
|
+
if (response.status === 503 && !this.#manager.ready) return this.#generateError();
|
|
381
|
+
return response;
|
|
562
382
|
});
|
|
563
383
|
for (const key of Object.getOwnPropertyNames(NitroDevServer.prototype)) {
|
|
564
384
|
const value = this[key];
|
|
@@ -566,6 +386,20 @@ var NitroDevServer = class NitroDevServer extends NitroDevApp {
|
|
|
566
386
|
}
|
|
567
387
|
nitro.fetch = this.fetch.bind(this);
|
|
568
388
|
this.#entry = resolve$1(nitro.options.output.dir, nitro.options.output.serverDir, "index.mjs");
|
|
389
|
+
this.#manager = new RunnerManager();
|
|
390
|
+
this.#manager.onReady(async (_runner, addr) => {
|
|
391
|
+
this.#workerRetries = 0;
|
|
392
|
+
writeDevBuildInfo(this.nitro, addr).catch((error) => {
|
|
393
|
+
this.nitro.logger.warn(`Failed to write dev build info: ${error instanceof Error ? error.message : String(error)}`);
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
this.#manager.onClose((_runner, cause) => {
|
|
397
|
+
this.#workerError = cause;
|
|
398
|
+
if (this.#workerRetries++ < 3) {
|
|
399
|
+
this.nitro.logger.info("Restarting dev worker...", cause ? `Cause: ${cause}` : "");
|
|
400
|
+
this.reload();
|
|
401
|
+
} else this.nitro.logger.error("Dev worker failed after 3 retries.", cause ? `Last cause: ${cause}` : "");
|
|
402
|
+
});
|
|
569
403
|
nitro.hooks.hook("close", () => this.close());
|
|
570
404
|
nitro.hooks.hook("dev:start", () => {
|
|
571
405
|
this.#building = true;
|
|
@@ -581,21 +415,24 @@ var NitroDevServer = class NitroDevServer extends NitroDevApp {
|
|
|
581
415
|
nitro.hooks.hook("dev:error", (cause) => {
|
|
582
416
|
this.#buildError = cause;
|
|
583
417
|
this.#building = false;
|
|
584
|
-
for (const worker of this.#workers) worker.close();
|
|
585
418
|
});
|
|
586
|
-
|
|
419
|
+
const devWatch = nitro.options.devServer.watch;
|
|
420
|
+
if (devWatch && devWatch.length > 0) {
|
|
587
421
|
const debouncedReload = debounce(() => this.reload());
|
|
588
|
-
this.#watcher = watch$1(
|
|
422
|
+
this.#watcher = watch$1(devWatch, nitro.options.watchOptions);
|
|
589
423
|
this.#watcher.on("add", debouncedReload).on("change", debouncedReload);
|
|
590
424
|
}
|
|
591
425
|
}
|
|
592
426
|
async upgrade(req, socket, head) {
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
statusText: "No worker available."
|
|
427
|
+
if (!this.#manager.upgrade) throw new HTTPError({
|
|
428
|
+
status: 501,
|
|
429
|
+
statusText: "Worker does not support upgrades."
|
|
597
430
|
});
|
|
598
|
-
return
|
|
431
|
+
return this.#manager.upgrade({ node: {
|
|
432
|
+
req,
|
|
433
|
+
socket,
|
|
434
|
+
head
|
|
435
|
+
} });
|
|
599
436
|
}
|
|
600
437
|
listen(opts) {
|
|
601
438
|
const server = serve({
|
|
@@ -612,64 +449,42 @@ var NitroDevServer = class NitroDevServer extends NitroDevApp {
|
|
|
612
449
|
Promise.all(this.#listeners.map((l) => l.close())).then(() => {
|
|
613
450
|
this.#listeners = [];
|
|
614
451
|
}),
|
|
615
|
-
|
|
616
|
-
this.#workers = [];
|
|
617
|
-
}),
|
|
452
|
+
this.#manager.close(),
|
|
618
453
|
Promise.resolve(this.#watcher?.close()).then(() => {
|
|
619
454
|
this.#watcher = void 0;
|
|
620
455
|
})
|
|
621
456
|
].map((p) => p.catch((error) => {
|
|
622
|
-
consola
|
|
457
|
+
consola.error(error);
|
|
623
458
|
})));
|
|
624
459
|
}
|
|
625
460
|
reload() {
|
|
626
|
-
|
|
627
|
-
|
|
461
|
+
const nextReload = (this.#reloadPromise ?? Promise.resolve()).catch(() => {}).then(() => this.#reload());
|
|
462
|
+
this.#reloadPromise = nextReload.finally(() => {
|
|
463
|
+
if (this.#reloadPromise === nextReload) this.#reloadPromise = void 0;
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
async #reload() {
|
|
467
|
+
const runner = await loadRunner(this.nitro.options.devServer.runner || process.env.NITRO_DEV_RUNNER || "node-worker", {
|
|
628
468
|
name: `Nitro_${this.#workerIdCtr++}`,
|
|
629
|
-
entry: this.#entry,
|
|
630
469
|
data: {
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
__NITRO_RUNTIME_CONFIG__: this.nitro.options.runtimeConfig,
|
|
634
|
-
...this.#workerData.globals
|
|
635
|
-
}
|
|
636
|
-
},
|
|
637
|
-
hooks: {
|
|
638
|
-
onClose: (worker$1, cause) => {
|
|
639
|
-
this.#workerError = cause;
|
|
640
|
-
const index = this.#workers.indexOf(worker$1);
|
|
641
|
-
if (index !== -1) this.#workers.splice(index, 1);
|
|
642
|
-
},
|
|
643
|
-
onReady: async (_worker, addr) => {
|
|
644
|
-
writeDevBuildInfo(this.nitro, addr).catch(() => {});
|
|
645
|
-
}
|
|
470
|
+
entry: this.#entry,
|
|
471
|
+
...this.#workerData
|
|
646
472
|
}
|
|
647
473
|
});
|
|
648
|
-
|
|
649
|
-
for (const listener of this.#messageListeners) worker.onMessage(listener);
|
|
650
|
-
this.#workers.unshift(worker);
|
|
651
|
-
}
|
|
474
|
+
await this.#manager.reload(runner);
|
|
652
475
|
}
|
|
653
476
|
sendMessage(message) {
|
|
654
|
-
|
|
477
|
+
this.#manager.sendMessage(message);
|
|
655
478
|
}
|
|
656
479
|
onMessage(listener) {
|
|
657
|
-
this.#
|
|
658
|
-
for (const worker of this.#workers) worker.onMessage(listener);
|
|
480
|
+
this.#manager.onMessage(listener);
|
|
659
481
|
}
|
|
660
482
|
offMessage(listener) {
|
|
661
|
-
this.#
|
|
662
|
-
for (const worker of this.#workers) worker.offMessage(listener);
|
|
483
|
+
this.#manager.offMessage(listener);
|
|
663
484
|
}
|
|
664
|
-
async #
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
while (this.#building || ++retry < maxRetries) {
|
|
668
|
-
if ((this.#workers.length === 0 || this.#buildError) && !this.#building) return;
|
|
669
|
-
const activeWorker = this.#workers.find((w) => w.ready);
|
|
670
|
-
if (activeWorker) return activeWorker;
|
|
671
|
-
await new Promise((resolve$2) => setTimeout(resolve$2, 600));
|
|
672
|
-
}
|
|
485
|
+
async #waitForBuild() {
|
|
486
|
+
const timeout = v || m ? 6e4 : 6e3;
|
|
487
|
+
await this.#manager.waitForReady(timeout);
|
|
673
488
|
}
|
|
674
489
|
#generateError() {
|
|
675
490
|
const error = this.#buildError || this.#workerError;
|
|
@@ -700,6 +515,5 @@ var NitroDevServer = class NitroDevServer extends NitroDevApp {
|
|
|
700
515
|
});
|
|
701
516
|
}
|
|
702
517
|
};
|
|
703
|
-
|
|
704
518
|
//#endregion
|
|
705
|
-
export {
|
|
519
|
+
export { createDevServer as n, NitroDevApp as r, NitroDevServer as t };
|
package/dist/_libs/_.mjs
ADDED