nitro-nightly 4.0.0-20251010-091516-7cafddba → 4.0.0-20251030-091344-d4418b98
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/{_chunks/build2.mjs → _build/build.mjs} +108 -58
- package/dist/_build/build2.mjs +556 -0
- package/dist/_build/info.mjs +1002 -0
- package/dist/_build/prepare.mjs +1511 -0
- package/dist/_build/snapshot.mjs +185 -0
- package/dist/{_chunks/plugin.mjs → _build/vite.mjs} +295 -296
- package/dist/_build/vite2.mjs +149 -0
- package/dist/_chunks/_deps/@jridgewell/gen-mapping.mjs +189 -0
- package/dist/_chunks/_deps/@jridgewell/remapping.mjs +137 -0
- package/dist/_chunks/_deps/@jridgewell/resolve-uri.mjs +231 -0
- package/dist/_chunks/_deps/@jridgewell/sourcemap-codec.mjs +173 -0
- package/dist/_chunks/_deps/@jridgewell/trace-mapping.mjs +170 -0
- package/dist/_chunks/_deps/@pi0/vite-plugin-fullstack.mjs +575 -0
- package/dist/_chunks/_deps/@rollup/plugin-alias.mjs +89 -0
- package/dist/_chunks/_deps/@rollup/plugin-commonjs.mjs +2376 -0
- package/dist/_chunks/{index2.mjs → _deps/@rollup/plugin-inject.mjs} +5 -90
- package/dist/_chunks/_deps/@rollup/plugin-json.mjs +37 -0
- package/dist/_chunks/_deps/@rollup/plugin-node-resolve.mjs +1386 -0
- package/dist/_chunks/_deps/@rollup/plugin-replace.mjs +133 -0
- package/dist/_chunks/_deps/@rollup/pluginutils.mjs +346 -0
- package/dist/_chunks/_deps/acorn.mjs +6225 -0
- package/dist/_chunks/_deps/c12.mjs +510 -0
- package/dist/_chunks/_deps/chokidar.mjs +1428 -0
- package/dist/_chunks/_deps/citty.mjs +460 -0
- package/dist/_chunks/_deps/commondir.mjs +77 -0
- package/dist/_chunks/_deps/compatx.mjs +76 -0
- package/dist/_chunks/_deps/confbox.mjs +300 -0
- package/dist/_chunks/_deps/debug.mjs +885 -0
- package/dist/_chunks/_deps/deepmerge.mjs +147 -0
- package/dist/_chunks/_deps/depd.mjs +550 -0
- package/dist/_chunks/_deps/dot-prop.mjs +282 -0
- package/dist/_chunks/_deps/dotenv.mjs +555 -0
- package/dist/_chunks/_deps/duplexer.mjs +1 -0
- package/dist/_chunks/_deps/ee-first.mjs +104 -0
- package/dist/_chunks/_deps/encodeurl.mjs +69 -0
- package/dist/_chunks/_deps/escape-html.mjs +87 -0
- package/dist/_chunks/_deps/escape-string-regexp.mjs +13 -0
- package/dist/_chunks/_deps/estree-walker.mjs +433 -0
- package/dist/_chunks/_deps/etag.mjs +147 -0
- package/dist/_chunks/_deps/exsolve.mjs +1416 -0
- package/dist/_chunks/_deps/fdir.mjs +569 -0
- package/dist/_chunks/_deps/fresh.mjs +145 -0
- package/dist/_chunks/_deps/function-bind.mjs +106 -0
- package/dist/_chunks/{index4.mjs → _deps/giget.mjs} +21 -776
- package/dist/_chunks/_deps/gzip-size.mjs +19 -0
- package/dist/_chunks/_deps/hasown.mjs +19 -0
- package/dist/_chunks/_deps/http-errors.mjs +307 -0
- package/dist/_chunks/_deps/httpxy.mjs +580 -0
- package/dist/_chunks/_deps/inherits.mjs +57 -0
- package/dist/_chunks/_deps/is-core-module.mjs +596 -0
- package/dist/_chunks/_deps/is-module.mjs +25 -0
- package/dist/_chunks/_deps/is-reference.mjs +31 -0
- package/dist/_chunks/_deps/js-tokens.mjs +411 -0
- package/dist/_chunks/_deps/klona.mjs +137 -0
- package/dist/_chunks/_deps/knitwork.mjs +172 -0
- package/dist/_chunks/_deps/local-pkg.mjs +163 -0
- package/dist/_chunks/_deps/magic-string.mjs +1296 -0
- package/dist/_chunks/_deps/mime-db.mjs +11685 -0
- package/dist/_chunks/_deps/mime-types.mjs +287 -0
- package/dist/_chunks/_deps/mime.mjs +1172 -0
- package/dist/_chunks/_deps/mlly.mjs +2413 -0
- package/dist/_chunks/_deps/ms.mjs +172 -0
- package/dist/_chunks/_deps/node-fetch-native.mjs +3 -0
- package/dist/_chunks/_deps/nypm.mjs +219 -0
- package/dist/_chunks/_deps/on-finished.mjs +246 -0
- package/dist/_chunks/_deps/parseurl.mjs +168 -0
- package/dist/_chunks/_deps/path-parse.mjs +85 -0
- package/dist/_chunks/{pathe.M-eThtNZ.mjs → _deps/pathe.mjs} +48 -1
- package/dist/_chunks/_deps/perfect-debounce.mjs +88 -0
- package/dist/_chunks/_deps/picomatch.mjs +2144 -0
- package/dist/_chunks/_deps/pkg-types.mjs +247 -0
- package/dist/_chunks/{snapshot.mjs → _deps/pretty-bytes.mjs} +1 -105
- package/dist/_chunks/_deps/quansync.mjs +99 -0
- package/dist/_chunks/_deps/range-parser.mjs +171 -0
- package/dist/_chunks/_deps/rc9.mjs +219 -0
- package/dist/_chunks/_deps/readdirp.mjs +245 -0
- package/dist/_chunks/_deps/resolve.mjs +1260 -0
- package/dist/_chunks/_deps/rou3.mjs +326 -0
- package/dist/_chunks/_deps/send.mjs +1022 -0
- package/dist/_chunks/_deps/serve-static.mjs +228 -0
- package/dist/_chunks/_deps/setprototypeof.mjs +26 -0
- package/dist/_chunks/_deps/statuses.mjs +457 -0
- package/dist/_chunks/_deps/std-env.mjs +3 -0
- package/dist/_chunks/_deps/strip-literal.mjs +67 -0
- package/dist/_chunks/_deps/supports-color.mjs +44 -0
- package/dist/_chunks/_deps/tinyexec.mjs +552 -0
- package/dist/_chunks/_deps/tinyglobby.mjs +293 -0
- package/dist/_chunks/_deps/toidentifier.mjs +41 -0
- package/dist/_chunks/_deps/ultrahtml.mjs +3 -0
- package/dist/_chunks/_deps/unimport.mjs +2267 -0
- package/dist/_chunks/_deps/unplugin-utils.mjs +65 -0
- package/dist/_chunks/_deps/unplugin.mjs +1294 -0
- package/dist/_chunks/_deps/untyped.mjs +375 -0
- package/dist/_chunks/{info.mjs → _deps/unwasm.mjs} +8 -4206
- package/dist/_chunks/_deps/webpack-virtual-modules.mjs +360 -0
- package/dist/_chunks/_presets/_all.mjs +59 -0
- package/dist/_chunks/_presets/_nitro.mjs +74 -0
- package/dist/_chunks/_presets/_resolve.mjs +64 -0
- package/dist/_chunks/_presets/_static.mjs +69 -0
- package/dist/_chunks/_presets/_types.mjs +3 -0
- package/dist/_chunks/_presets/_utils.mjs +31 -0
- package/dist/_chunks/_presets/alwaysdata.mjs +17 -0
- package/dist/_chunks/_presets/aws-amplify.mjs +111 -0
- package/dist/_chunks/_presets/aws-lambda.mjs +23 -0
- package/dist/_chunks/_presets/azure.mjs +162 -0
- package/dist/_chunks/_presets/bun.mjs +19 -0
- package/dist/_chunks/_presets/cleavr.mjs +15 -0
- package/dist/_chunks/_presets/cloudflare.mjs +608 -0
- package/dist/_chunks/_presets/deno.mjs +196 -0
- package/dist/_chunks/_presets/digitalocean.mjs +14 -0
- package/dist/_chunks/_presets/firebase.mjs +47 -0
- package/dist/_chunks/_presets/flightcontrol.mjs +14 -0
- package/dist/_chunks/_presets/genezio.mjs +13 -0
- package/dist/_chunks/_presets/heroku.mjs +14 -0
- package/dist/_chunks/_presets/iis.mjs +194 -0
- package/dist/_chunks/_presets/index.mjs +62 -0
- package/dist/_chunks/_presets/koyeb.mjs +14 -0
- package/dist/_chunks/_presets/netlify.mjs +241 -0
- package/dist/_chunks/_presets/node.mjs +54 -0
- package/dist/_chunks/_presets/platform.mjs +14 -0
- package/dist/_chunks/_presets/render.mjs +14 -0
- package/dist/_chunks/_presets/standard.mjs +23 -0
- package/dist/_chunks/_presets/stormkit.mjs +18 -0
- package/dist/_chunks/_presets/vercel.mjs +375 -0
- package/dist/_chunks/_presets/winterjs.mjs +22 -0
- package/dist/_chunks/_presets/zeabur.mjs +69 -0
- package/dist/_chunks/_presets/zerops.mjs +27 -0
- package/dist/_chunks/app.mjs +9 -19206
- package/dist/_chunks/{index3.mjs → builder.mjs} +560 -970
- package/dist/_chunks/server.mjs +6 -4
- package/dist/{cli → _cli}/build.mjs +3 -8
- package/dist/{cli → _cli}/dev.mjs +38 -12
- package/dist/{cli/index2.mjs → _cli/index.mjs} +1 -2
- package/dist/{cli → _cli}/list.mjs +3 -4
- package/dist/{cli → _cli}/prepare.mjs +3 -4
- package/dist/{cli → _cli}/run.mjs +3 -4
- package/dist/{index.d.mts → builder.d.mts} +11 -11
- package/dist/builder.mjs +117 -0
- package/dist/cli/index.mjs +7 -464
- 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 +7 -3
- package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
- package/dist/node_modules/cookie-es/package.json +37 -0
- package/dist/node_modules/hookable/dist/index.mjs +243 -266
- package/dist/node_modules/hookable/package.json +29 -26
- package/dist/node_modules/rendu/dist/index.mjs +380 -0
- package/dist/node_modules/rendu/package.json +47 -0
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +4 -7
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +5 -4
- package/dist/presets/azure/runtime/azure-swa.mjs +1 -1
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +7 -6
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +4 -5
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +7 -10
- package/dist/presets/cloudflare/runtime/shims/workers.dev.d.mts +21 -0
- package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
- package/dist/presets/node/runtime/node-server.mjs +1 -1
- package/dist/runtime/index.d.mts +1 -1
- package/dist/runtime/index.mjs +1 -1
- package/dist/runtime/internal/app.d.mts +3 -1
- package/dist/runtime/internal/app.mjs +90 -64
- package/dist/runtime/internal/error/prod.d.mts +3 -2
- package/dist/runtime/internal/error/prod.mjs +9 -13
- package/dist/runtime/internal/renderer.mjs +4 -4
- package/dist/runtime/internal/routes/dev-tasks.d.mts +30 -2
- package/dist/runtime/internal/shutdown.d.mts +1 -2
- package/dist/runtime/internal/shutdown.mjs +3 -2
- package/dist/runtime/internal/task.mjs +1 -2
- package/dist/types/index.d.mts +1603 -10
- package/dist/vite.d.mts +5 -0
- package/dist/vite.mjs +94 -30
- package/lib/index.mjs +1 -0
- package/lib/indexd.mts +1 -0
- package/lib/runtime/meta.mjs +35 -0
- package/package.json +40 -41
- package/dist/_chunks/build.mjs +0 -84
- package/dist/_chunks/build3.mjs +0 -6452
- package/dist/_chunks/detect-acorn.mjs +0 -503
- package/dist/_chunks/index.mjs +0 -22242
- package/dist/_chunks/json5.mjs +0 -68
- package/dist/_chunks/jsonc.mjs +0 -51
- package/dist/_chunks/toml.mjs +0 -259
- package/dist/_chunks/yaml.mjs +0 -86
- package/dist/index.mjs +0 -55
- package/dist/node_modules/klona/dist/index.mjs +0 -81
- package/dist/node_modules/klona/full/index.mjs +0 -53
- package/dist/node_modules/klona/package.json +0 -74
- package/dist/node_modules/std-env/dist/index.mjs +0 -1
- package/dist/node_modules/std-env/package.json +0 -46
- package/dist/presets.mjs +0 -2460
- package/dist/runtime/internal/debug.d.mts +0 -2
- package/dist/runtime/internal/debug.mjs +0 -5
- package/lib/runtime-meta.mjs +0 -38
- /package/dist/{cli → _cli}/common.mjs +0 -0
- /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
package/dist/runtime/index.d.mts
CHANGED
|
@@ -5,7 +5,7 @@ export { useRuntimeConfig } from "./internal/runtime-config.mjs";
|
|
|
5
5
|
export { useRequest } from "./internal/context.mjs";
|
|
6
6
|
export { defineRenderHandler } from "./internal/renderer.mjs";
|
|
7
7
|
export { defineCachedFunction, defineCachedEventHandler, defineCachedHandler, cachedFunction, cachedEventHandler, } from "./internal/cache.mjs";
|
|
8
|
-
export { useNitroApp } from "./internal/app.mjs";
|
|
8
|
+
export { useNitroApp, useNitroHooks } from "./internal/app.mjs";
|
|
9
9
|
export { useStorage } from "./internal/storage.mjs";
|
|
10
10
|
export { useDatabase } from "./internal/database.mjs";
|
|
11
11
|
export { defineTask, runTask } from "./internal/task.mjs";
|
package/dist/runtime/index.mjs
CHANGED
|
@@ -11,7 +11,7 @@ export {
|
|
|
11
11
|
cachedFunction,
|
|
12
12
|
cachedEventHandler
|
|
13
13
|
} from "./internal/cache.mjs";
|
|
14
|
-
export { useNitroApp } from "./internal/app.mjs";
|
|
14
|
+
export { useNitroApp, useNitroHooks } from "./internal/app.mjs";
|
|
15
15
|
export { useStorage } from "./internal/storage.mjs";
|
|
16
16
|
export { useDatabase } from "./internal/database.mjs";
|
|
17
17
|
export { defineTask, runTask } from "./internal/task.mjs";
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import type { NitroApp } from "nitro/types";
|
|
1
|
+
import type { NitroApp, NitroRuntimeHooks } from "nitro/types";
|
|
2
|
+
import { HookableCore } from "hookable";
|
|
2
3
|
export declare function useNitroApp(): NitroApp;
|
|
4
|
+
export declare function useNitroHooks(): HookableCore<NitroRuntimeHooks>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { H3Core, toRequest } from "h3";
|
|
2
|
-
import {
|
|
2
|
+
import { HookableCore } from "hookable";
|
|
3
3
|
import { nitroAsyncContext } from "./context.mjs";
|
|
4
4
|
import errorHandler from "#nitro-internal-virtual/error-handler";
|
|
5
5
|
import { plugins } from "#nitro-internal-virtual/plugins";
|
|
@@ -9,25 +9,43 @@ import {
|
|
|
9
9
|
globalMiddleware,
|
|
10
10
|
findRoutedMiddleware
|
|
11
11
|
} from "#nitro-internal-virtual/routing";
|
|
12
|
+
import {
|
|
13
|
+
hasRouteRules,
|
|
14
|
+
hasRoutedMiddleware,
|
|
15
|
+
hasGlobalMiddleware,
|
|
16
|
+
hasRoutes,
|
|
17
|
+
hasHooks,
|
|
18
|
+
hasPlugins
|
|
19
|
+
} from "#nitro-internal-virtual/feature-flags";
|
|
12
20
|
export function useNitroApp() {
|
|
13
21
|
return useNitroApp.__instance__ ??= initNitroApp();
|
|
14
22
|
}
|
|
23
|
+
export function useNitroHooks() {
|
|
24
|
+
const nitroApp = useNitroApp();
|
|
25
|
+
const hooks = nitroApp.hooks;
|
|
26
|
+
if (hooks) {
|
|
27
|
+
return hooks;
|
|
28
|
+
}
|
|
29
|
+
return nitroApp.hooks = new HookableCore();
|
|
30
|
+
}
|
|
15
31
|
function initNitroApp() {
|
|
16
32
|
const nitroApp = createNitroApp();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
if (hasPlugins) {
|
|
34
|
+
for (const plugin of plugins) {
|
|
35
|
+
try {
|
|
36
|
+
plugin(nitroApp);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
nitroApp.captureError(error, { tags: ["plugin"] });
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
23
41
|
}
|
|
24
42
|
}
|
|
25
43
|
return nitroApp;
|
|
26
44
|
}
|
|
27
45
|
function createNitroApp() {
|
|
28
|
-
const hooks =
|
|
46
|
+
const hooks = hasHooks ? new HookableCore() : void 0;
|
|
29
47
|
const captureError = (error, errorCtx) => {
|
|
30
|
-
const promise = hooks.
|
|
48
|
+
const promise = hasHooks && hooks.callHook("error", error, errorCtx)?.catch?.((hookError) => {
|
|
31
49
|
console.error("Error while capturing another error", hookError);
|
|
32
50
|
});
|
|
33
51
|
if (errorCtx?.event) {
|
|
@@ -35,82 +53,90 @@ function createNitroApp() {
|
|
|
35
53
|
if (errors) {
|
|
36
54
|
errors.push({ error, context: errorCtx });
|
|
37
55
|
}
|
|
38
|
-
if (typeof errorCtx.event.req.waitUntil === "function") {
|
|
56
|
+
if (hasHooks && typeof errorCtx.event.req.waitUntil === "function") {
|
|
39
57
|
errorCtx.event.req.waitUntil(promise);
|
|
40
58
|
}
|
|
41
59
|
}
|
|
42
60
|
};
|
|
43
|
-
const h3App = createH3App(
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
const h3App = createH3App({
|
|
62
|
+
onError(error, event) {
|
|
63
|
+
hasHooks && captureError(error, { event });
|
|
64
|
+
return errorHandler(error, event);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
if (hasHooks) {
|
|
68
|
+
h3App.config.onRequest = (event) => {
|
|
69
|
+
return hooks.callHook("request", event)?.catch?.((error) => {
|
|
70
|
+
captureError(error, { event, tags: ["request"] });
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
h3App.config.onResponse = (res, event) => {
|
|
74
|
+
return hooks.callHook("response", res, event)?.catch?.((error) => {
|
|
75
|
+
captureError(error, { event, tags: ["response"] });
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
let appHandler = (req) => {
|
|
80
|
+
req.context ||= {};
|
|
46
81
|
req.context.nitro = req.context.nitro || { errors: [] };
|
|
47
|
-
|
|
48
|
-
const nitroApp = useNitroApp();
|
|
49
|
-
await nitroApp.hooks.callHook("request", event).catch((error) => {
|
|
50
|
-
captureError(error, { event, tags: ["request"] });
|
|
51
|
-
});
|
|
52
|
-
const response = await h3App.request(req, void 0, req.context);
|
|
53
|
-
await nitroApp.hooks.callHook("response", response, event).catch((error) => {
|
|
54
|
-
captureError(error, { event, tags: ["request", "response"] });
|
|
55
|
-
});
|
|
56
|
-
return response;
|
|
82
|
+
return h3App.fetch(req);
|
|
57
83
|
};
|
|
58
84
|
if (import.meta._asyncContext) {
|
|
59
|
-
const
|
|
60
|
-
|
|
85
|
+
const originalHandler = appHandler;
|
|
86
|
+
appHandler = (req) => {
|
|
61
87
|
const asyncCtx = { request: req };
|
|
62
|
-
return nitroAsyncContext.callAsync(
|
|
63
|
-
asyncCtx,
|
|
64
|
-
() => originalFetchHandler(req)
|
|
65
|
-
);
|
|
88
|
+
return nitroAsyncContext.callAsync(asyncCtx, () => originalHandler(req));
|
|
66
89
|
};
|
|
67
90
|
}
|
|
68
|
-
const
|
|
91
|
+
const request = (input, init, context) => {
|
|
69
92
|
const req = toRequest(input, init);
|
|
70
93
|
req.context = { ...req.context, ...context };
|
|
71
|
-
return Promise.resolve(
|
|
94
|
+
return Promise.resolve(appHandler(req));
|
|
72
95
|
};
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
if (typeof input === "string" && input.
|
|
76
|
-
return
|
|
77
|
-
}
|
|
78
|
-
if (input instanceof Request && "_request" in input) {
|
|
79
|
-
input = input._request;
|
|
96
|
+
const nativeFetch = globalThis.fetch;
|
|
97
|
+
globalThis.fetch = (input, init) => {
|
|
98
|
+
if (typeof input === "string" && input.charCodeAt(0) === 47) {
|
|
99
|
+
return request(input, init);
|
|
80
100
|
}
|
|
81
|
-
|
|
101
|
+
input = input._request || input;
|
|
102
|
+
return nativeFetch(input, init);
|
|
82
103
|
};
|
|
83
|
-
globalThis.fetch = nitroFetch;
|
|
84
104
|
const app = {
|
|
85
|
-
|
|
105
|
+
fetch: appHandler,
|
|
106
|
+
request,
|
|
107
|
+
h3: h3App,
|
|
86
108
|
hooks,
|
|
87
|
-
fetch: requestHandler,
|
|
88
109
|
captureError
|
|
89
110
|
};
|
|
90
111
|
return app;
|
|
91
112
|
}
|
|
92
|
-
function createH3App(
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
...
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
function createH3App(config) {
|
|
114
|
+
const h3App = new H3Core(config);
|
|
115
|
+
hasRoutes && (h3App["~findRoute"] = (event) => findRoute(event.req.method, event.url.pathname));
|
|
116
|
+
hasGlobalMiddleware && h3App["~middleware"].push(...globalMiddleware);
|
|
117
|
+
if (hasRouteRules || hasRoutedMiddleware) {
|
|
118
|
+
h3App["~getMiddleware"] = (event, route) => {
|
|
119
|
+
const needsRouting = hasRouteRules || hasRoutedMiddleware;
|
|
120
|
+
const pathname = needsRouting ? event.url.pathname : void 0;
|
|
121
|
+
const method = needsRouting ? event.req.method : void 0;
|
|
122
|
+
const middleware = [];
|
|
123
|
+
if (hasRouteRules) {
|
|
124
|
+
const routeRules = getRouteRules(method, pathname);
|
|
125
|
+
event.context.routeRules = routeRules?.routeRules;
|
|
126
|
+
if (routeRules?.routeRuleMiddleware.length) {
|
|
127
|
+
middleware.push(...routeRules.routeRuleMiddleware);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
hasGlobalMiddleware && middleware.push(...h3App["~middleware"]);
|
|
131
|
+
hasRoutedMiddleware && middleware.push(
|
|
132
|
+
...findRoutedMiddleware(method, pathname).map((r) => r.data)
|
|
133
|
+
);
|
|
134
|
+
if (hasRoutes && route?.data?.middleware?.length) {
|
|
135
|
+
middleware.push(...route.data.middleware);
|
|
136
|
+
}
|
|
137
|
+
return middleware;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
114
140
|
return h3App;
|
|
115
141
|
}
|
|
116
142
|
function getRouteRules(method, pathname) {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { HTTPError, HTTPEvent } from "h3";
|
|
2
2
|
import type { InternalHandlerResponse } from "./utils.mjs";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import type { NitroErrorHandler } from "nitro/types";
|
|
4
|
+
declare const errorHandler: NitroErrorHandler;
|
|
5
|
+
export default errorHandler;
|
|
5
6
|
export declare function defaultHandler(error: HTTPError, event: HTTPEvent, opts?: {
|
|
6
7
|
silent?: boolean;
|
|
7
8
|
json?: boolean;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { getRequestURL } from "h3";
|
|
2
|
-
import { defineNitroErrorHandler } from "./utils.mjs";
|
|
3
1
|
import { FastResponse } from "srvx";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
);
|
|
2
|
+
const errorHandler = (error, event) => {
|
|
3
|
+
const res = defaultHandler(error, event);
|
|
4
|
+
return new FastResponse(
|
|
5
|
+
typeof res.body === "string" ? res.body : JSON.stringify(res.body, null, 2),
|
|
6
|
+
res
|
|
7
|
+
);
|
|
8
|
+
};
|
|
9
|
+
export default errorHandler;
|
|
10
10
|
export function defaultHandler(error, event, opts) {
|
|
11
11
|
const isSensitive = error.unhandled;
|
|
12
12
|
const status = error.status || 500;
|
|
13
|
-
const url =
|
|
13
|
+
const url = event.url || new URL(event.req.url);
|
|
14
14
|
if (status === 404) {
|
|
15
15
|
const baseURL = import.meta.baseURL || "/";
|
|
16
16
|
if (/^\/[^/]/.test(baseURL) && !url.pathname.startsWith(baseURL)) {
|
|
@@ -33,13 +33,9 @@ export function defaultHandler(error, event, opts) {
|
|
|
33
33
|
}
|
|
34
34
|
const headers = {
|
|
35
35
|
"content-type": "application/json",
|
|
36
|
-
// Prevent browser from guessing the MIME types of resources.
|
|
37
36
|
"x-content-type-options": "nosniff",
|
|
38
|
-
// Prevent error page from being embedded in an iframe
|
|
39
37
|
"x-frame-options": "DENY",
|
|
40
|
-
// Prevent browsers from sending the Referer header
|
|
41
38
|
"referrer-policy": "no-referrer",
|
|
42
|
-
// Disable the execution of any js
|
|
43
39
|
"content-security-policy": "script-src 'none'; frame-ancestors 'none';"
|
|
44
40
|
};
|
|
45
41
|
if (status === 404 || !event.res.headers.has("cache-control")) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { defineHandler } from "h3";
|
|
2
|
-
import {
|
|
2
|
+
import { useNitroHooks } from "./app.mjs";
|
|
3
3
|
import { useRuntimeConfig } from "./runtime-config.mjs";
|
|
4
4
|
export function defineRenderHandler(render) {
|
|
5
5
|
const runtimeConfig = useRuntimeConfig();
|
|
6
6
|
return defineHandler(async (event) => {
|
|
7
|
-
const
|
|
7
|
+
const nitroHooks = useNitroHooks();
|
|
8
8
|
const ctx = { event, render, response: void 0 };
|
|
9
|
-
await
|
|
9
|
+
await nitroHooks.callHook("render:before", ctx);
|
|
10
10
|
if (!ctx.response) {
|
|
11
11
|
if (event.url.pathname === `${runtimeConfig.app.baseURL}favicon.ico`) {
|
|
12
12
|
event.res.headers.set("Content-Type", "image/x-icon");
|
|
@@ -21,7 +21,7 @@ export function defineRenderHandler(render) {
|
|
|
21
21
|
return "No response returned from render handler: " + event.url.pathname;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
await
|
|
24
|
+
await nitroHooks.callHook("render:response", ctx.response, ctx);
|
|
25
25
|
if (ctx.response.headers) {
|
|
26
26
|
for (const [key, value] of Object.entries(ctx.response.headers)) {
|
|
27
27
|
event.res.headers.set(key, value);
|
|
@@ -1,3 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"~rou3": import("h3").RouterContext;
|
|
3
|
+
request(request: import("srvx").ServerRequest | URL | string, options?: RequestInit, context?: import("h3").H3EventContext): Response | Promise<Response>;
|
|
4
|
+
use(route: string, handler: import("h3").Middleware, opts?: import("h3").MiddlewareOptions): /*elided*/ any;
|
|
5
|
+
use(handler: import("h3").Middleware, opts?: import("h3").MiddlewareOptions): /*elided*/ any;
|
|
6
|
+
on(method: import("h3").HTTPMethod | Lowercase<import("h3").HTTPMethod> | "", route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
7
|
+
register(plugin: import("h3").H3Plugin): /*elided*/ any;
|
|
8
|
+
mount(base: string, input: import("srvx").FetchHandler | {
|
|
9
|
+
fetch: import("srvx").FetchHandler;
|
|
10
|
+
} | /*elided*/ any): /*elided*/ any;
|
|
11
|
+
all(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
12
|
+
get(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
13
|
+
post(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
14
|
+
put(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
15
|
+
delete(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
16
|
+
patch(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
17
|
+
head(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
18
|
+
options(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
19
|
+
connect(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
20
|
+
trace(route: string, handler: import("h3").HTTPHandler, opts?: import("h3").RouteOptions): /*elided*/ any;
|
|
21
|
+
readonly config: import("h3").H3Config;
|
|
22
|
+
"~middleware": import("h3").Middleware[];
|
|
23
|
+
"~routes": import("h3").H3Route[];
|
|
24
|
+
fetch(_request: import("srvx").ServerRequest): Response | Promise<Response>;
|
|
25
|
+
handler(event: import("h3").H3Event): unknown | Promise<unknown>;
|
|
26
|
+
"~request"(request: import("srvx").ServerRequest, context?: import("h3").H3EventContext): Response | Promise<Response>;
|
|
27
|
+
"~findRoute"(_event: import("h3").H3Event): import("h3").MatchedRoute<import("h3").H3Route> | void;
|
|
28
|
+
"~getMiddleware"(event: import("h3").H3Event, route: import("h3").MatchedRoute<import("h3").H3Route> | undefined): import("h3").Middleware[];
|
|
29
|
+
"~addRoute"(_route: import("h3").H3Route): void;
|
|
30
|
+
};
|
|
3
31
|
export default _default;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { Server as HttpServer } from "node:http";
|
|
2
|
-
import type { NitroApp } from "nitro/types";
|
|
3
2
|
export declare function getGracefulShutdownConfig(): {
|
|
4
3
|
disabled: boolean;
|
|
5
4
|
signals: string[];
|
|
6
5
|
timeout: number;
|
|
7
6
|
forceExit: boolean;
|
|
8
7
|
};
|
|
9
|
-
export declare function setupGracefulShutdown(listener: HttpServer
|
|
8
|
+
export declare function setupGracefulShutdown(listener: HttpServer): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import gracefulShutdown from "./lib/http-graceful-shutdown.mjs";
|
|
2
|
+
import { useNitroHooks } from "./app.mjs";
|
|
2
3
|
export function getGracefulShutdownConfig() {
|
|
3
4
|
return {
|
|
4
5
|
disabled: !!process.env.NITRO_SHUTDOWN_DISABLED,
|
|
@@ -7,7 +8,7 @@ export function getGracefulShutdownConfig() {
|
|
|
7
8
|
forceExit: !process.env.NITRO_SHUTDOWN_NO_FORCE_EXIT
|
|
8
9
|
};
|
|
9
10
|
}
|
|
10
|
-
export function setupGracefulShutdown(listener
|
|
11
|
+
export function setupGracefulShutdown(listener) {
|
|
11
12
|
const shutdownConfig = getGracefulShutdownConfig();
|
|
12
13
|
if (shutdownConfig.disabled) {
|
|
13
14
|
return;
|
|
@@ -22,7 +23,7 @@ export function setupGracefulShutdown(listener, nitroApp) {
|
|
|
22
23
|
console.warn("Graceful shutdown timeout, force exiting...");
|
|
23
24
|
resolve();
|
|
24
25
|
}, shutdownConfig.timeout);
|
|
25
|
-
|
|
26
|
+
Promise.resolve(useNitroHooks().callHook("close")).catch((error) => {
|
|
26
27
|
console.error(error);
|
|
27
28
|
}).finally(() => {
|
|
28
29
|
clearTimeout(timeout);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Cron } from "croner";
|
|
2
2
|
import { HTTPError } from "h3";
|
|
3
|
-
import { isTest } from "std-env";
|
|
4
3
|
import { scheduledTasks, tasks } from "#nitro-internal-virtual/tasks";
|
|
5
4
|
export function defineTask(def) {
|
|
6
5
|
if (typeof def.run !== "function") {
|
|
@@ -41,7 +40,7 @@ export async function runTask(name, {
|
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
export function startScheduleRunner() {
|
|
44
|
-
if (!scheduledTasks || scheduledTasks.length === 0 ||
|
|
43
|
+
if (!scheduledTasks || scheduledTasks.length === 0 || process.env.TEST) {
|
|
45
44
|
return;
|
|
46
45
|
}
|
|
47
46
|
const payload = {
|