nitro-nightly 4.0.0-20251030-091344-d4418b98 → 4.0.0-20251030-122334-09c1a7a8
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/dist/_build/common.mjs +763 -0
- package/dist/_build/rolldown.mjs +216 -0
- package/dist/_build/rollup.mjs +359 -0
- package/dist/_build/vite.build.mjs +67 -0
- package/dist/_build/vite.plugin.mjs +762 -0
- package/dist/_chunks/B-7HiF0V.mjs +1303 -0
- package/dist/_chunks/B3asVbT4.mjs +151 -0
- package/dist/_chunks/B5ooyfLk.mjs +372 -0
- package/dist/_chunks/DXMHy5ca.mjs +43 -0
- package/dist/_dev.d.mts +12 -0
- package/dist/_dev.mjs +675 -0
- package/dist/_libs/acorn.mjs +5034 -0
- package/dist/_libs/c12.mjs +2798 -0
- package/dist/_libs/chokidar.mjs +1560 -0
- package/dist/_libs/citty.mjs +333 -0
- package/dist/_libs/commondir.mjs +22 -0
- package/dist/_libs/compatx.mjs +46 -0
- package/dist/_libs/confbox.mjs +2920 -0
- package/dist/_libs/debug.mjs +848 -0
- package/dist/_libs/deepmerge.mjs +86 -0
- package/dist/_libs/depd.mjs +314 -0
- package/dist/_libs/dot-prop.mjs +138 -0
- package/dist/_libs/duplexer.mjs +71 -0
- package/dist/_libs/ee-first.mjs +68 -0
- package/dist/_libs/encodeurl.mjs +49 -0
- package/dist/_libs/escape-html.mjs +58 -0
- package/dist/_libs/escape-string-regexp.mjs +8 -0
- package/dist/_libs/estree-walker.mjs +330 -0
- package/dist/_libs/etag.mjs +75 -0
- package/dist/{_chunks/_deps → _libs}/fdir.mjs +49 -104
- package/dist/_libs/fresh.mjs +85 -0
- package/dist/_libs/function-bind.mjs +63 -0
- package/dist/_libs/gen-mapping.mjs +612 -0
- package/dist/_libs/giget.mjs +19076 -0
- package/dist/_libs/gzip-size.mjs +21 -0
- package/dist/_libs/hasown.mjs +14 -0
- package/dist/_libs/http-errors.mjs +436 -0
- package/dist/_libs/httpxy.mjs +410 -0
- package/dist/_libs/is-core-module.mjs +220 -0
- package/dist/_libs/is-module.mjs +13 -0
- package/dist/_libs/is-reference.mjs +32 -0
- package/dist/{_chunks/_deps → _libs}/js-tokens.mjs +83 -112
- package/dist/_libs/klona.mjs +90 -0
- package/dist/_libs/knitwork.mjs +124 -0
- package/dist/_libs/local-pkg.mjs +1686 -0
- package/dist/{_chunks/_deps → _libs}/magic-string.mjs +272 -629
- package/dist/_libs/mime-db.mjs +7642 -0
- package/dist/_libs/mime-types.mjs +162 -0
- package/dist/_libs/mime.mjs +1391 -0
- package/dist/_libs/node-fetch-native.mjs +173 -0
- package/dist/_libs/on-finished.mjs +170 -0
- package/dist/_libs/parseurl.mjs +103 -0
- package/dist/_libs/path-parse.mjs +47 -0
- package/dist/_libs/pathe.mjs +41 -0
- package/dist/_libs/picomatch.mjs +1673 -0
- package/dist/_libs/plugin-alias.mjs +64 -0
- package/dist/_libs/plugin-commonjs.mjs +1489 -0
- package/dist/_libs/plugin-inject.mjs +135 -0
- package/dist/_libs/plugin-json.mjs +36 -0
- package/dist/_libs/plugin-node-resolve.mjs +1553 -0
- package/dist/_libs/plugin-replace.mjs +104 -0
- package/dist/_libs/pretty-bytes.mjs +116 -0
- package/dist/_libs/range-parser.mjs +102 -0
- package/dist/_libs/remapping.mjs +117 -0
- package/dist/{_chunks/_deps → _libs}/rou3.mjs +7 -22
- package/dist/_libs/send.mjs +857 -0
- package/dist/_libs/serve-static.mjs +124 -0
- package/dist/_libs/std-env.mjs +158 -0
- package/dist/_libs/strip-literal.mjs +51 -0
- package/dist/{_chunks/_deps → _libs}/tinyglobby.mjs +32 -33
- package/dist/_libs/ultrahtml.mjs +138 -0
- package/dist/_libs/unimport.mjs +3520 -0
- package/dist/_libs/untyped.mjs +271 -0
- package/dist/_libs/unwasm.mjs +5825 -0
- package/dist/{_chunks/_deps/@pi0 → _libs}/vite-plugin-fullstack.mjs +28 -42
- package/dist/_presets.mjs +1723 -0
- package/dist/builder.d.mts +37 -35
- package/dist/builder.mjs +45 -117
- package/dist/cli/_chunks/build.mjs +43 -0
- package/dist/cli/_chunks/common.mjs +15 -0
- package/dist/cli/_chunks/detect-acorn.mjs +12 -0
- package/dist/cli/_chunks/dev.mjs +79 -0
- package/dist/cli/_chunks/dist.mjs +3 -0
- package/dist/cli/_chunks/dist2.mjs +4 -0
- package/dist/cli/_chunks/esm.mjs +3 -0
- package/dist/cli/_chunks/json5.mjs +4 -0
- package/dist/cli/_chunks/jsonc.mjs +4 -0
- package/dist/cli/_chunks/list.mjs +27 -0
- package/dist/cli/_chunks/multipart-parser.mjs +6 -0
- package/dist/cli/_chunks/prepare.mjs +19 -0
- package/dist/cli/_chunks/run.mjs +55 -0
- package/dist/cli/_chunks/task.mjs +16 -0
- package/dist/cli/_chunks/toml.mjs +4 -0
- package/dist/cli/_chunks/yaml.mjs +4 -0
- package/dist/cli/index.d.mts +1 -1
- package/dist/cli/index.mjs +19 -18
- package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +42 -33
- package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +4 -8
- package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
- package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
- package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
- package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
- package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
- package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
- package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
- package/dist/presets/azure/runtime/_utils.mjs +43 -43
- package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
- package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
- package/dist/presets/bun/runtime/bun.d.mts +1 -0
- package/dist/presets/bun/runtime/bun.mjs +18 -17
- package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +78 -87
- package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +53 -58
- package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
- package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
- package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
- package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
- package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +86 -76
- package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
- package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
- package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
- package/dist/presets/deno/runtime/deno-server.mjs +31 -39
- package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
- package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
- package/dist/presets/netlify/runtime/netlify.mjs +11 -17
- package/dist/presets/node/runtime/node-cluster.mjs +49 -48
- package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
- package/dist/presets/node/runtime/node-middleware.mjs +7 -6
- package/dist/presets/node/runtime/node-server.mjs +33 -23
- package/dist/presets/standard/runtime/server.d.mts +1 -3
- package/dist/presets/standard/runtime/server.mjs +1 -3
- package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
- package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
- package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
- package/dist/presets/vercel/runtime/vercel.mjs +15 -14
- package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
- package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
- package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
- package/dist/runtime/index.d.mts +12 -1
- package/dist/runtime/index.mjs +12 -7
- package/dist/runtime/internal/app.mjs +175 -162
- package/dist/runtime/internal/cache.d.mts +10 -4
- package/dist/runtime/internal/cache.mjs +247 -216
- package/dist/runtime/internal/context.d.mts +9 -9
- package/dist/runtime/internal/context.mjs +17 -10
- package/dist/runtime/internal/database.mjs +8 -10
- package/dist/runtime/internal/error/dev.d.mts +5 -4
- package/dist/runtime/internal/error/dev.mjs +106 -105
- package/dist/runtime/internal/error/prod.d.mts +2 -2
- package/dist/runtime/internal/error/prod.mjs +48 -52
- package/dist/runtime/internal/error/utils.d.mts +4 -4
- package/dist/runtime/internal/error/utils.mjs +1 -1
- package/dist/runtime/internal/index.d.mts +2 -0
- package/dist/runtime/internal/index.mjs +2 -0
- package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
- package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
- package/dist/runtime/internal/meta.d.mts +1 -1
- package/dist/runtime/internal/meta.mjs +1 -1
- package/dist/runtime/internal/plugin.d.mts +2 -2
- package/dist/runtime/internal/plugin.mjs +1 -1
- package/dist/runtime/internal/renderer.mjs +39 -31
- package/dist/runtime/internal/route-rules.d.mts +8 -8
- package/dist/runtime/internal/route-rules.mjs +53 -51
- package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -30
- package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
- package/dist/runtime/internal/routes/openapi.d.mts +1 -0
- package/dist/runtime/internal/routes/openapi.mjs +81 -87
- package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
- package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
- package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
- package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
- package/dist/runtime/internal/routes/scalar.d.mts +1 -0
- package/dist/runtime/internal/routes/scalar.mjs +22 -23
- package/dist/runtime/internal/routes/swagger.d.mts +1 -0
- package/dist/runtime/internal/routes/swagger.mjs +9 -11
- package/dist/runtime/internal/runtime-config.d.mts +4 -4
- package/dist/runtime/internal/runtime-config.mjs +40 -35
- package/dist/runtime/internal/shutdown.d.mts +2 -7
- package/dist/runtime/internal/shutdown.mjs +30 -29
- package/dist/runtime/internal/static.mjs +63 -74
- package/dist/runtime/internal/storage.mjs +2 -2
- package/dist/runtime/internal/task.d.mts +6 -6
- package/dist/runtime/internal/task.mjs +56 -59
- package/dist/runtime/internal/utils.d.mts +1 -1
- package/dist/runtime/internal/utils.mjs +4 -10
- package/dist/types/index.d.mts +2566 -3851
- package/dist/types/index.mjs +1 -1
- package/dist/vite.d.mts +61 -51
- package/dist/vite.mjs +55 -132
- package/package.json +10 -10
- package/dist/_build/build.mjs +0 -368
- package/dist/_build/build2.mjs +0 -556
- package/dist/_build/info.mjs +0 -1002
- package/dist/_build/prepare.mjs +0 -1511
- package/dist/_build/snapshot.mjs +0 -185
- package/dist/_build/vite.mjs +0 -959
- package/dist/_build/vite2.mjs +0 -149
- package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +0 -189
- package/dist/_chunks/_deps/@jridgewell/remapping.mjs +0 -137
- package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +0 -231
- package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +0 -173
- package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +0 -170
- package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +0 -89
- package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +0 -2376
- package/dist/_chunks/_deps/@rollup/plugin-inject.mjs +0 -212
- package/dist/_chunks/_deps/@rollup/plugin-json.mjs +0 -37
- package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +0 -1386
- package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +0 -133
- package/dist/_chunks/_deps/@rollup/pluginutils.mjs +0 -346
- package/dist/_chunks/_deps/acorn.mjs +0 -6225
- package/dist/_chunks/_deps/c12.mjs +0 -510
- package/dist/_chunks/_deps/chokidar.mjs +0 -1428
- package/dist/_chunks/_deps/citty.mjs +0 -460
- package/dist/_chunks/_deps/commondir.mjs +0 -77
- package/dist/_chunks/_deps/compatx.mjs +0 -76
- package/dist/_chunks/_deps/confbox.mjs +0 -300
- package/dist/_chunks/_deps/debug.mjs +0 -885
- package/dist/_chunks/_deps/deepmerge.mjs +0 -147
- package/dist/_chunks/_deps/depd.mjs +0 -550
- package/dist/_chunks/_deps/dot-prop.mjs +0 -282
- package/dist/_chunks/_deps/dotenv.mjs +0 -555
- package/dist/_chunks/_deps/duplexer.mjs +0 -1
- package/dist/_chunks/_deps/ee-first.mjs +0 -104
- package/dist/_chunks/_deps/encodeurl.mjs +0 -69
- package/dist/_chunks/_deps/escape-html.mjs +0 -87
- package/dist/_chunks/_deps/escape-string-regexp.mjs +0 -13
- package/dist/_chunks/_deps/estree-walker.mjs +0 -433
- package/dist/_chunks/_deps/etag.mjs +0 -147
- package/dist/_chunks/_deps/exsolve.mjs +0 -1416
- package/dist/_chunks/_deps/fresh.mjs +0 -145
- package/dist/_chunks/_deps/function-bind.mjs +0 -106
- package/dist/_chunks/_deps/giget.mjs +0 -451
- package/dist/_chunks/_deps/gzip-size.mjs +0 -19
- package/dist/_chunks/_deps/hasown.mjs +0 -19
- package/dist/_chunks/_deps/http-errors.mjs +0 -307
- package/dist/_chunks/_deps/httpxy.mjs +0 -580
- package/dist/_chunks/_deps/inherits.mjs +0 -57
- package/dist/_chunks/_deps/is-core-module.mjs +0 -596
- package/dist/_chunks/_deps/is-module.mjs +0 -25
- package/dist/_chunks/_deps/is-reference.mjs +0 -31
- package/dist/_chunks/_deps/klona.mjs +0 -137
- package/dist/_chunks/_deps/knitwork.mjs +0 -172
- package/dist/_chunks/_deps/local-pkg.mjs +0 -163
- package/dist/_chunks/_deps/mime-db.mjs +0 -11685
- package/dist/_chunks/_deps/mime-types.mjs +0 -287
- package/dist/_chunks/_deps/mime.mjs +0 -1172
- package/dist/_chunks/_deps/mlly.mjs +0 -2413
- package/dist/_chunks/_deps/ms.mjs +0 -172
- package/dist/_chunks/_deps/node-fetch-native.mjs +0 -3
- package/dist/_chunks/_deps/nypm.mjs +0 -219
- package/dist/_chunks/_deps/on-finished.mjs +0 -246
- package/dist/_chunks/_deps/parseurl.mjs +0 -168
- package/dist/_chunks/_deps/path-parse.mjs +0 -85
- package/dist/_chunks/_deps/pathe.mjs +0 -251
- package/dist/_chunks/_deps/perfect-debounce.mjs +0 -88
- package/dist/_chunks/_deps/picomatch.mjs +0 -2144
- package/dist/_chunks/_deps/pkg-types.mjs +0 -247
- package/dist/_chunks/_deps/pretty-bytes.mjs +0 -180
- package/dist/_chunks/_deps/quansync.mjs +0 -99
- package/dist/_chunks/_deps/range-parser.mjs +0 -171
- package/dist/_chunks/_deps/rc9.mjs +0 -219
- package/dist/_chunks/_deps/readdirp.mjs +0 -245
- package/dist/_chunks/_deps/resolve.mjs +0 -1260
- package/dist/_chunks/_deps/send.mjs +0 -1022
- package/dist/_chunks/_deps/serve-static.mjs +0 -228
- package/dist/_chunks/_deps/setprototypeof.mjs +0 -26
- package/dist/_chunks/_deps/statuses.mjs +0 -457
- package/dist/_chunks/_deps/std-env.mjs +0 -3
- package/dist/_chunks/_deps/strip-literal.mjs +0 -67
- package/dist/_chunks/_deps/supports-color.mjs +0 -44
- package/dist/_chunks/_deps/tinyexec.mjs +0 -552
- package/dist/_chunks/_deps/toidentifier.mjs +0 -41
- package/dist/_chunks/_deps/ultrahtml.mjs +0 -3
- package/dist/_chunks/_deps/unimport.mjs +0 -2267
- package/dist/_chunks/_deps/unplugin-utils.mjs +0 -65
- package/dist/_chunks/_deps/unplugin.mjs +0 -1294
- package/dist/_chunks/_deps/untyped.mjs +0 -375
- package/dist/_chunks/_deps/unwasm.mjs +0 -6959
- package/dist/_chunks/_deps/webpack-virtual-modules.mjs +0 -360
- package/dist/_chunks/_presets/_all.mjs +0 -59
- package/dist/_chunks/_presets/_nitro.mjs +0 -74
- package/dist/_chunks/_presets/_resolve.mjs +0 -64
- package/dist/_chunks/_presets/_static.mjs +0 -69
- package/dist/_chunks/_presets/_types.mjs +0 -3
- package/dist/_chunks/_presets/_utils.mjs +0 -31
- package/dist/_chunks/_presets/alwaysdata.mjs +0 -17
- package/dist/_chunks/_presets/aws-amplify.mjs +0 -111
- package/dist/_chunks/_presets/aws-lambda.mjs +0 -23
- package/dist/_chunks/_presets/azure.mjs +0 -162
- package/dist/_chunks/_presets/bun.mjs +0 -19
- package/dist/_chunks/_presets/cleavr.mjs +0 -15
- package/dist/_chunks/_presets/cloudflare.mjs +0 -608
- package/dist/_chunks/_presets/deno.mjs +0 -196
- package/dist/_chunks/_presets/digitalocean.mjs +0 -14
- package/dist/_chunks/_presets/firebase.mjs +0 -47
- package/dist/_chunks/_presets/flightcontrol.mjs +0 -14
- package/dist/_chunks/_presets/genezio.mjs +0 -13
- package/dist/_chunks/_presets/heroku.mjs +0 -14
- package/dist/_chunks/_presets/iis.mjs +0 -194
- package/dist/_chunks/_presets/index.mjs +0 -62
- package/dist/_chunks/_presets/koyeb.mjs +0 -14
- package/dist/_chunks/_presets/netlify.mjs +0 -241
- package/dist/_chunks/_presets/node.mjs +0 -54
- package/dist/_chunks/_presets/platform.mjs +0 -14
- package/dist/_chunks/_presets/render.mjs +0 -14
- package/dist/_chunks/_presets/standard.mjs +0 -23
- package/dist/_chunks/_presets/stormkit.mjs +0 -18
- package/dist/_chunks/_presets/vercel.mjs +0 -375
- package/dist/_chunks/_presets/winterjs.mjs +0 -22
- package/dist/_chunks/_presets/zeabur.mjs +0 -69
- package/dist/_chunks/_presets/zerops.mjs +0 -27
- package/dist/_chunks/app.mjs +0 -600
- package/dist/_chunks/builder.mjs +0 -648
- package/dist/_chunks/server.mjs +0 -256
- package/dist/_cli/build.mjs +0 -49
- package/dist/_cli/common.mjs +0 -13
- package/dist/_cli/dev.mjs +0 -121
- package/dist/_cli/index.mjs +0 -16
- package/dist/_cli/list.mjs +0 -33
- package/dist/_cli/prepare.mjs +0 -23
- package/dist/_cli/run.mjs +0 -59
- package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +0 -21
- package/dist/runtime/internal/empty.d.mts +0 -0
- package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
- package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
- package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
- package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
- /package/lib/{indexd.mts → index.d.mts} +0 -0
|
@@ -1,213 +1,252 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// gracefully shuts downs http server
|
|
4
|
+
// can be used with http, express, koa, ...
|
|
5
|
+
// (c) 2023 Sebastian Hildebrandt
|
|
6
|
+
// License: MIT
|
|
7
|
+
// https://github.com/sebhildebrandt/http-graceful-shutdown/blob/master/LICENSE
|
|
8
|
+
// https://github.com/sebhildebrandt/http-graceful-shutdown/blob/master/lib/index.js
|
|
9
|
+
// =============================================================================
|
|
1
10
|
import http from "node:http";
|
|
2
|
-
const debug = (...args) => {
|
|
3
|
-
|
|
11
|
+
const debug = (...args) => {};
|
|
12
|
+
/**
|
|
13
|
+
* Gracefully shuts down `server` when the process receives
|
|
14
|
+
* the passed signals
|
|
15
|
+
*
|
|
16
|
+
* @param {http.Server} server
|
|
17
|
+
* @param {object} opts
|
|
18
|
+
* signals: string (each signal separated by SPACE)
|
|
19
|
+
* timeout: timeout value for forceful shutdown in ms
|
|
20
|
+
* forceExit: force process.exit() - otherwise just let event loop clear
|
|
21
|
+
* development: boolean value (if true, no graceful shutdown to speed up development
|
|
22
|
+
* preShutdown: optional function. Needs to return a promise. - HTTP sockets are still available and untouched
|
|
23
|
+
* onShutdown: optional function. Needs to return a promise.
|
|
24
|
+
* finally: optional function, handled at the end of the shutdown.
|
|
25
|
+
*/
|
|
4
26
|
function GracefulShutdown(server, opts) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
27
|
+
// option handling
|
|
28
|
+
// ----------------------------------
|
|
29
|
+
opts = opts || {};
|
|
30
|
+
// merge opts with default options
|
|
31
|
+
const options = Object.assign({
|
|
32
|
+
signals: "SIGINT SIGTERM",
|
|
33
|
+
timeout: 3e4,
|
|
34
|
+
development: false,
|
|
35
|
+
forceExit: true,
|
|
36
|
+
onShutdown: (signal) => Promise.resolve(signal),
|
|
37
|
+
preShutdown: (signal) => Promise.resolve(signal)
|
|
38
|
+
}, opts);
|
|
39
|
+
let isShuttingDown = false;
|
|
40
|
+
const connections = {};
|
|
41
|
+
let connectionCounter = 0;
|
|
42
|
+
const secureConnections = {};
|
|
43
|
+
let secureConnectionCounter = 0;
|
|
44
|
+
let failed = false;
|
|
45
|
+
let finalRun = false;
|
|
46
|
+
function onceFactory() {
|
|
47
|
+
let called = false;
|
|
48
|
+
return (emitter, events, callback) => {
|
|
49
|
+
function call() {
|
|
50
|
+
if (!called) {
|
|
51
|
+
called = true;
|
|
52
|
+
// eslint-disable-next-line prefer-rest-params
|
|
53
|
+
return Reflect.apply(callback, this, arguments);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (const e of events) {
|
|
57
|
+
emitter.on(e, call);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const signals = options.signals.split(" ").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
62
|
+
const once = onceFactory();
|
|
63
|
+
once(process, signals, (signal) => {
|
|
64
|
+
debug("received shut down signal", signal);
|
|
65
|
+
shutdown(signal).then(() => {
|
|
66
|
+
if (options.forceExit) {
|
|
67
|
+
// eslint-disable-next-line unicorn/no-process-exit
|
|
68
|
+
process.exit(failed ? 1 : 0);
|
|
69
|
+
}
|
|
70
|
+
}).catch((error) => {
|
|
71
|
+
debug("server shut down error occurred", error);
|
|
72
|
+
// eslint-disable-next-line unicorn/no-process-exit
|
|
73
|
+
process.exit(1);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
// helper function
|
|
77
|
+
// ----------------------------------
|
|
78
|
+
function isFunction(functionToCheck) {
|
|
79
|
+
const getType = Object.prototype.toString.call(functionToCheck);
|
|
80
|
+
return /^\[object\s([A-Za-z]+)?Function]$/.test(getType);
|
|
81
|
+
}
|
|
82
|
+
function destroy(socket, force = false) {
|
|
83
|
+
if (socket._isIdle && isShuttingDown || force) {
|
|
84
|
+
socket.destroy();
|
|
85
|
+
if (socket.server instanceof http.Server) {
|
|
86
|
+
delete connections[socket._connectionId];
|
|
87
|
+
} else {
|
|
88
|
+
delete secureConnections[socket._connectionId];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function destroyAllConnections(force = false) {
|
|
93
|
+
// destroy empty and idle connections / all connections (if force = true)
|
|
94
|
+
debug("Destroy Connections : " + (force ? "forced close" : "close"));
|
|
95
|
+
let counter = 0;
|
|
96
|
+
let secureCounter = 0;
|
|
97
|
+
for (const key of Object.keys(connections)) {
|
|
98
|
+
const socket = connections[key];
|
|
99
|
+
const serverResponse = socket._httpMessage;
|
|
100
|
+
// send connection close header to open connections
|
|
101
|
+
if (serverResponse && !force) {
|
|
102
|
+
if (!serverResponse.headersSent) {
|
|
103
|
+
serverResponse.setHeader("connection", "close");
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
counter++;
|
|
107
|
+
destroy(socket);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
debug("Connections destroyed : " + counter);
|
|
111
|
+
debug("Connection Counter : " + connectionCounter);
|
|
112
|
+
for (const key of Object.keys(secureConnections)) {
|
|
113
|
+
const socket = secureConnections[key];
|
|
114
|
+
const serverResponse = socket._httpMessage;
|
|
115
|
+
// send connection close header to open connections
|
|
116
|
+
if (serverResponse && !force) {
|
|
117
|
+
if (!serverResponse.headersSent) {
|
|
118
|
+
serverResponse.setHeader("connection", "close");
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
secureCounter++;
|
|
122
|
+
destroy(socket);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
debug("Secure Connections destroyed : " + secureCounter);
|
|
126
|
+
debug("Secure Connection Counter : " + secureConnectionCounter);
|
|
127
|
+
}
|
|
128
|
+
// set up server/process events
|
|
129
|
+
// ----------------------------------
|
|
130
|
+
server.on("request", (req, res) => {
|
|
131
|
+
req.socket._isIdle = false;
|
|
132
|
+
if (isShuttingDown && !res.headersSent) {
|
|
133
|
+
res.setHeader("connection", "close");
|
|
134
|
+
}
|
|
135
|
+
res.on("finish", () => {
|
|
136
|
+
req.socket._isIdle = true;
|
|
137
|
+
destroy(req.socket);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
server.on("connection", (socket) => {
|
|
141
|
+
if (isShuttingDown) {
|
|
142
|
+
socket.destroy();
|
|
143
|
+
} else {
|
|
144
|
+
const id = connectionCounter++;
|
|
145
|
+
socket._isIdle = true;
|
|
146
|
+
socket._connectionId = id;
|
|
147
|
+
connections[id] = socket;
|
|
148
|
+
socket.once("close", () => {
|
|
149
|
+
delete connections[socket._connectionId];
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
server.on("secureConnection", (socket) => {
|
|
154
|
+
if (isShuttingDown) {
|
|
155
|
+
socket.destroy();
|
|
156
|
+
} else {
|
|
157
|
+
const id = secureConnectionCounter++;
|
|
158
|
+
socket._isIdle = true;
|
|
159
|
+
socket._connectionId = id;
|
|
160
|
+
secureConnections[id] = socket;
|
|
161
|
+
socket.once("close", () => {
|
|
162
|
+
delete secureConnections[socket._connectionId];
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
process.on("close", () => {
|
|
167
|
+
debug("closed");
|
|
168
|
+
});
|
|
169
|
+
// shutdown event (per signal)
|
|
170
|
+
// ----------------------------------
|
|
171
|
+
function shutdown(sig) {
|
|
172
|
+
function cleanupHttp() {
|
|
173
|
+
destroyAllConnections();
|
|
174
|
+
debug("Close http server");
|
|
175
|
+
return new Promise((resolve, reject) => {
|
|
176
|
+
server.close((err) => {
|
|
177
|
+
if (err) {
|
|
178
|
+
return reject(err);
|
|
179
|
+
}
|
|
180
|
+
return resolve(true);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
debug("shutdown signal - " + sig);
|
|
185
|
+
// Don't bother with graceful shutdown on development to speed up round trip
|
|
186
|
+
if (options.development) {
|
|
187
|
+
debug("DEV-Mode - immediate forceful shutdown");
|
|
188
|
+
// eslint-disable-next-line unicorn/no-process-exit
|
|
189
|
+
return process.exit(0);
|
|
190
|
+
}
|
|
191
|
+
function finalHandler() {
|
|
192
|
+
if (!finalRun) {
|
|
193
|
+
finalRun = true;
|
|
194
|
+
if (options.finally && isFunction(options.finally)) {
|
|
195
|
+
debug("executing finally()");
|
|
196
|
+
options.finally();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return Promise.resolve();
|
|
200
|
+
}
|
|
201
|
+
// returns true if should force shut down. returns false for shut down without force
|
|
202
|
+
function waitForReadyToShutDown(totalNumInterval) {
|
|
203
|
+
debug(`waitForReadyToShutDown... ${totalNumInterval}`);
|
|
204
|
+
if (totalNumInterval === 0) {
|
|
205
|
+
// timeout reached
|
|
206
|
+
debug(`Could not close connections in time (${options.timeout}ms), will forcefully shut down`);
|
|
207
|
+
return Promise.resolve(true);
|
|
208
|
+
}
|
|
209
|
+
// test all connections closed already?
|
|
210
|
+
const allConnectionsClosed = Object.keys(connections).length === 0 && Object.keys(secureConnections).length === 0;
|
|
211
|
+
if (allConnectionsClosed) {
|
|
212
|
+
debug("All connections closed. Continue to shutting down");
|
|
213
|
+
return Promise.resolve(false);
|
|
214
|
+
}
|
|
215
|
+
debug("Schedule the next waitForReadyToShutdown");
|
|
216
|
+
return new Promise((resolve) => {
|
|
217
|
+
setTimeout(() => {
|
|
218
|
+
resolve(waitForReadyToShutDown(totalNumInterval - 1));
|
|
219
|
+
}, 250);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
if (isShuttingDown) {
|
|
223
|
+
return Promise.resolve();
|
|
224
|
+
}
|
|
225
|
+
debug("shutting down");
|
|
226
|
+
return options.preShutdown(sig).then(() => {
|
|
227
|
+
isShuttingDown = true;
|
|
228
|
+
cleanupHttp();
|
|
229
|
+
}).then(() => {
|
|
230
|
+
const pollIterations = options.timeout ? Math.round(options.timeout / 250) : 0;
|
|
231
|
+
return waitForReadyToShutDown(pollIterations);
|
|
232
|
+
}).then((force) => {
|
|
233
|
+
debug("Do onShutdown now");
|
|
234
|
+
// if after waiting for connections to drain within timeout period
|
|
235
|
+
// or if timeout has reached, we forcefully disconnect all sockets
|
|
236
|
+
if (force) {
|
|
237
|
+
destroyAllConnections(force);
|
|
238
|
+
}
|
|
239
|
+
return options.onShutdown(sig);
|
|
240
|
+
}).then(finalHandler).catch((error) => {
|
|
241
|
+
const errString = typeof error === "string" ? error : JSON.stringify(error);
|
|
242
|
+
debug(errString);
|
|
243
|
+
failed = true;
|
|
244
|
+
throw errString;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
function shutdownManual() {
|
|
248
|
+
return shutdown("manual");
|
|
249
|
+
}
|
|
250
|
+
return shutdownManual;
|
|
212
251
|
}
|
|
213
252
|
export default GracefulShutdown;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { NitroRouteMeta } from "nitro/types";
|
|
2
|
-
export declare function defineRouteMeta(meta: NitroRouteMeta)
|
|
2
|
+
export declare function defineRouteMeta(meta: NitroRouteMeta);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { NitroAppPlugin } from "nitro/types";
|
|
2
|
-
export declare function defineNitroPlugin(def: NitroAppPlugin)
|
|
3
|
-
export declare const nitroPlugin:
|
|
2
|
+
export declare function defineNitroPlugin(def: NitroAppPlugin);
|
|
3
|
+
export declare const nitroPlugin: unknown;
|
|
@@ -2,35 +2,43 @@ import { defineHandler } from "h3";
|
|
|
2
2
|
import { useNitroHooks } from "./app.mjs";
|
|
3
3
|
import { useRuntimeConfig } from "./runtime-config.mjs";
|
|
4
4
|
export function defineRenderHandler(render) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
5
|
+
const runtimeConfig = useRuntimeConfig();
|
|
6
|
+
return defineHandler(async (event) => {
|
|
7
|
+
const nitroHooks = useNitroHooks();
|
|
8
|
+
// Create shared context for hooks
|
|
9
|
+
const ctx = {
|
|
10
|
+
event,
|
|
11
|
+
render,
|
|
12
|
+
response: undefined
|
|
13
|
+
};
|
|
14
|
+
// Call initial hook to prepare and optionally custom render
|
|
15
|
+
await nitroHooks.callHook("render:before", ctx);
|
|
16
|
+
if (!ctx.response) {
|
|
17
|
+
// TODO: Use serve-placeholder
|
|
18
|
+
if (event.url.pathname === `${runtimeConfig.app.baseURL}favicon.ico`) {
|
|
19
|
+
event.res.headers.set("Content-Type", "image/x-icon");
|
|
20
|
+
return "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
|
|
21
|
+
}
|
|
22
|
+
ctx.response = await ctx.render(event);
|
|
23
|
+
if (!ctx.response) {
|
|
24
|
+
const _currentStatus = event.res.status;
|
|
25
|
+
event.res.statusText = String(_currentStatus === 200 ? 500 : _currentStatus);
|
|
26
|
+
return "No response returned from render handler: " + event.url.pathname;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Allow modifying response
|
|
30
|
+
await nitroHooks.callHook("render:response", ctx.response, ctx);
|
|
31
|
+
// Send headers
|
|
32
|
+
if (ctx.response.headers) {
|
|
33
|
+
for (const [key, value] of Object.entries(ctx.response.headers)) {
|
|
34
|
+
event.res.headers.set(key, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (ctx.response.status || ctx.response.statusText) {
|
|
38
|
+
event.res.status = ctx.response.status;
|
|
39
|
+
event.res.statusText = ctx.response.statusText;
|
|
40
|
+
}
|
|
41
|
+
// Send response body
|
|
42
|
+
return ctx.response.body;
|
|
43
|
+
});
|
|
36
44
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare const
|
|
5
|
-
|
|
6
|
-
export declare const proxy:
|
|
7
|
-
|
|
8
|
-
export
|
|
1
|
+
// Headers route rule
|
|
2
|
+
export declare const headers: unknown;
|
|
3
|
+
// Redirect route rule
|
|
4
|
+
export declare const redirect: unknown;
|
|
5
|
+
// Proxy route rule
|
|
6
|
+
export declare const proxy: unknown;
|
|
7
|
+
// Cache route rule
|
|
8
|
+
export declare const cache: unknown;
|