nitro-nightly 4.0.0-20251010-091516-7cafddba → 4.0.0-20251030-121649-98b56dfe
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 +747 -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/_libs/fdir.mjs +514 -0
- 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/_libs/js-tokens.mjs +382 -0
- package/dist/_libs/klona.mjs +90 -0
- package/dist/_libs/knitwork.mjs +124 -0
- package/dist/_libs/local-pkg.mjs +1686 -0
- package/dist/_libs/magic-string.mjs +939 -0
- 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/_libs/rou3.mjs +311 -0
- 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/_libs/tinyglobby.mjs +292 -0
- 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/_libs/vite-plugin-fullstack.mjs +561 -0
- package/dist/_presets.mjs +1723 -0
- package/dist/builder.d.mts +54 -0
- package/dist/builder.mjs +45 -0
- 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 +20 -476
- 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.d.mts +1 -0
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +44 -38
- package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +9 -12
- 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 +79 -87
- package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +55 -61
- 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 +89 -82
- package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
- 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 +34 -24
- 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 +13 -2
- package/dist/runtime/index.mjs +13 -8
- package/dist/runtime/internal/app.d.mts +3 -1
- package/dist/runtime/internal/app.mjs +179 -140
- 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 +5 -4
- package/dist/runtime/internal/error/prod.mjs +51 -59
- 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 +40 -32
- 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 -2
- 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 -8
- package/dist/runtime/internal/shutdown.mjs +32 -30
- 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 -60
- package/dist/runtime/internal/utils.d.mts +1 -1
- package/dist/runtime/internal/utils.mjs +4 -10
- package/dist/types/index.d.mts +2594 -2286
- package/dist/types/index.mjs +1 -1
- package/dist/vite.d.mts +56 -47
- package/dist/vite.mjs +55 -68
- package/lib/index.d.mts +1 -0
- package/lib/index.mjs +1 -0
- package/lib/runtime/meta.mjs +35 -0
- package/package.json +49 -50
- package/dist/_chunks/app.mjs +0 -19797
- package/dist/_chunks/build.mjs +0 -84
- package/dist/_chunks/build2.mjs +0 -318
- 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/index2.mjs +0 -297
- package/dist/_chunks/index3.mjs +0 -1058
- package/dist/_chunks/index4.mjs +0 -1206
- package/dist/_chunks/info.mjs +0 -11157
- package/dist/_chunks/json5.mjs +0 -68
- package/dist/_chunks/jsonc.mjs +0 -51
- package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
- package/dist/_chunks/plugin.mjs +0 -960
- package/dist/_chunks/server.mjs +0 -254
- package/dist/_chunks/snapshot.mjs +0 -284
- package/dist/_chunks/toml.mjs +0 -259
- package/dist/_chunks/yaml.mjs +0 -86
- package/dist/cli/build.mjs +0 -54
- package/dist/cli/common.mjs +0 -13
- package/dist/cli/dev.mjs +0 -95
- package/dist/cli/index2.mjs +0 -17
- package/dist/cli/list.mjs +0 -34
- package/dist/cli/prepare.mjs +0 -24
- package/dist/cli/run.mjs +0 -60
- package/dist/index.d.mts +0 -52
- 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/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/runtime-meta.mjs +0 -38
- /package/lib/{runtime-meta.d.mts → runtime/meta.d.mts} +0 -0
|
@@ -7,116 +7,117 @@ import { Youch } from "youch";
|
|
|
7
7
|
import { SourceMapConsumer } from "source-map";
|
|
8
8
|
import { defineNitroErrorHandler } from "./utils.mjs";
|
|
9
9
|
import { FastResponse } from "srvx";
|
|
10
|
-
export default defineNitroErrorHandler(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
typeof res.body === "string" ? res.body : JSON.stringify(res.body, null, 2),
|
|
15
|
-
res
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
);
|
|
10
|
+
export default defineNitroErrorHandler(async function defaultNitroErrorHandler(error, event) {
|
|
11
|
+
const res = await defaultHandler(error, event);
|
|
12
|
+
return new FastResponse(typeof res.body === "string" ? res.body : JSON.stringify(res.body, null, 2), res);
|
|
13
|
+
});
|
|
19
14
|
export async function defaultHandler(error, event, opts) {
|
|
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
|
-
|
|
15
|
+
const isSensitive = error.unhandled;
|
|
16
|
+
const status = error.status || 500;
|
|
17
|
+
// prettier-ignore
|
|
18
|
+
const url = getRequestURL(event, {
|
|
19
|
+
xForwardedHost: true,
|
|
20
|
+
xForwardedProto: true
|
|
21
|
+
});
|
|
22
|
+
// Redirects with base URL
|
|
23
|
+
if (status === 404) {
|
|
24
|
+
const baseURL = import.meta.baseURL || "/";
|
|
25
|
+
if (/^\/[^/]/.test(baseURL) && !url.pathname.startsWith(baseURL)) {
|
|
26
|
+
const redirectTo = `${baseURL}${url.pathname.slice(1)}${url.search}`;
|
|
27
|
+
return {
|
|
28
|
+
status: 302,
|
|
29
|
+
statusText: "Found",
|
|
30
|
+
headers: { location: redirectTo },
|
|
31
|
+
body: `Redirecting...`
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Load stack trace with source maps
|
|
36
|
+
await loadStackTrace(error).catch(consola.error);
|
|
37
|
+
// https://github.com/poppinss/youch
|
|
38
|
+
const youch = new Youch();
|
|
39
|
+
// Console output
|
|
40
|
+
if (isSensitive && !opts?.silent) {
|
|
41
|
+
// prettier-ignore
|
|
42
|
+
const tags = [error.unhandled && "[unhandled]"].filter(Boolean).join(" ");
|
|
43
|
+
const ansiError = await (await youch.toANSI(error)).replaceAll(process.cwd(), ".");
|
|
44
|
+
consola.error(`[request error] ${tags} [${event.req.method}] ${url}\n\n`, ansiError);
|
|
45
|
+
}
|
|
46
|
+
// Use HTML response only when user-agent expects it (browsers)
|
|
47
|
+
const useJSON = opts?.json || !event.req.headers.get("accept")?.includes("text/html");
|
|
48
|
+
// Prepare headers
|
|
49
|
+
const headers = {
|
|
50
|
+
"content-type": useJSON ? "application/json" : "text/html",
|
|
51
|
+
"x-content-type-options": "nosniff",
|
|
52
|
+
"x-frame-options": "DENY",
|
|
53
|
+
"referrer-policy": "no-referrer",
|
|
54
|
+
"content-security-policy": "script-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self';"
|
|
55
|
+
};
|
|
56
|
+
if (status === 404 || !event.res.headers.has("cache-control")) {
|
|
57
|
+
headers["cache-control"] = "no-cache";
|
|
58
|
+
}
|
|
59
|
+
// Prepare body
|
|
60
|
+
const body = useJSON ? {
|
|
61
|
+
error: true,
|
|
62
|
+
url,
|
|
63
|
+
status,
|
|
64
|
+
statusText: error.statusText,
|
|
65
|
+
message: error.message,
|
|
66
|
+
data: error.data,
|
|
67
|
+
stack: error.stack?.split("\n").map((line) => line.trim())
|
|
68
|
+
} : await youch.toHTML(error, { request: {
|
|
69
|
+
url: url.href,
|
|
70
|
+
method: event.req.method,
|
|
71
|
+
headers: Object.fromEntries(event.req.headers.entries())
|
|
72
|
+
} });
|
|
73
|
+
return {
|
|
74
|
+
status,
|
|
75
|
+
statusText: error.statusText,
|
|
76
|
+
headers,
|
|
77
|
+
body
|
|
78
|
+
};
|
|
83
79
|
}
|
|
80
|
+
// ---- Source Map support ----
|
|
84
81
|
export async function loadStackTrace(error) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
82
|
+
if (!(error instanceof Error)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const parsed = await new ErrorParser().defineSourceLoader(sourceLoader).parse(error);
|
|
86
|
+
const stack = error.message + "\n" + parsed.frames.map((frame) => fmtFrame(frame)).join("\n");
|
|
87
|
+
Object.defineProperty(error, "stack", { value: stack });
|
|
88
|
+
if (error.cause) {
|
|
89
|
+
await loadStackTrace(error.cause).catch(consola.error);
|
|
90
|
+
}
|
|
94
91
|
}
|
|
95
92
|
async function sourceLoader(frame) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
93
|
+
if (!frame.fileName || frame.fileType !== "fs" || frame.type === "native") {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (frame.type === "app") {
|
|
97
|
+
// prettier-ignore
|
|
98
|
+
const rawSourceMap = await readFile(`${frame.fileName}.map`, "utf8").catch(() => {});
|
|
99
|
+
if (rawSourceMap) {
|
|
100
|
+
const consumer = await new SourceMapConsumer(rawSourceMap);
|
|
101
|
+
// prettier-ignore
|
|
102
|
+
const originalPosition = consumer.originalPositionFor({
|
|
103
|
+
line: frame.lineNumber,
|
|
104
|
+
column: frame.columnNumber
|
|
105
|
+
});
|
|
106
|
+
if (originalPosition.source && originalPosition.line) {
|
|
107
|
+
// prettier-ignore
|
|
108
|
+
frame.fileName = resolve(dirname(frame.fileName), originalPosition.source);
|
|
109
|
+
frame.lineNumber = originalPosition.line;
|
|
110
|
+
frame.columnNumber = originalPosition.column || 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const contents = await readFile(frame.fileName, "utf8").catch(() => {});
|
|
115
|
+
return contents ? { contents } : undefined;
|
|
115
116
|
}
|
|
116
117
|
function fmtFrame(frame) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
if (frame.type === "native") {
|
|
119
|
+
return frame.raw;
|
|
120
|
+
}
|
|
121
|
+
const src = `${frame.fileName || ""}:${frame.lineNumber}:${frame.columnNumber})`;
|
|
122
|
+
return frame.functionName ? `at ${frame.functionName} (${src}` : `at ${src}`;
|
|
122
123
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
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
|
-
|
|
7
|
+
silent?: boolean;
|
|
8
|
+
json?: boolean;
|
|
8
9
|
}): InternalHandlerResponse;
|
|
@@ -1,62 +1,54 @@
|
|
|
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(typeof res.body === "string" ? res.body : JSON.stringify(res.body, null, 2), res);
|
|
5
|
+
};
|
|
6
|
+
export default errorHandler;
|
|
10
7
|
export function defaultHandler(error, event, opts) {
|
|
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
|
-
status,
|
|
58
|
-
statusText: error.statusText,
|
|
59
|
-
headers,
|
|
60
|
-
body
|
|
61
|
-
};
|
|
8
|
+
const isSensitive = error.unhandled;
|
|
9
|
+
const status = error.status || 500;
|
|
10
|
+
const url = event.url || new URL(event.req.url);
|
|
11
|
+
if (status === 404) {
|
|
12
|
+
const baseURL = import.meta.baseURL || "/";
|
|
13
|
+
if (/^\/[^/]/.test(baseURL) && !url.pathname.startsWith(baseURL)) {
|
|
14
|
+
const redirectTo = `${baseURL}${url.pathname.slice(1)}${url.search}`;
|
|
15
|
+
return {
|
|
16
|
+
status: 302,
|
|
17
|
+
statusText: "Found",
|
|
18
|
+
headers: { location: redirectTo },
|
|
19
|
+
body: `Redirecting...`
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Console output
|
|
24
|
+
if (isSensitive && !opts?.silent) {
|
|
25
|
+
// prettier-ignore
|
|
26
|
+
const tags = [error.unhandled && "[unhandled]"].filter(Boolean).join(" ");
|
|
27
|
+
console.error(`[request error] ${tags} [${event.req.method}] ${url}\n`, error);
|
|
28
|
+
}
|
|
29
|
+
// Send response
|
|
30
|
+
const headers = {
|
|
31
|
+
"content-type": "application/json",
|
|
32
|
+
"x-content-type-options": "nosniff",
|
|
33
|
+
"x-frame-options": "DENY",
|
|
34
|
+
"referrer-policy": "no-referrer",
|
|
35
|
+
"content-security-policy": "script-src 'none'; frame-ancestors 'none';"
|
|
36
|
+
};
|
|
37
|
+
if (status === 404 || !event.res.headers.has("cache-control")) {
|
|
38
|
+
headers["cache-control"] = "no-cache";
|
|
39
|
+
}
|
|
40
|
+
const body = {
|
|
41
|
+
error: true,
|
|
42
|
+
url: url.href,
|
|
43
|
+
status,
|
|
44
|
+
statusText: error.statusText,
|
|
45
|
+
message: isSensitive ? "Server Error" : error.message,
|
|
46
|
+
data: isSensitive ? undefined : error.data
|
|
47
|
+
};
|
|
48
|
+
return {
|
|
49
|
+
status,
|
|
50
|
+
statusText: error.statusText,
|
|
51
|
+
headers,
|
|
52
|
+
body
|
|
53
|
+
};
|
|
62
54
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { NitroErrorHandler } from "nitro/types";
|
|
2
2
|
export declare function defineNitroErrorHandler(handler: NitroErrorHandler): NitroErrorHandler;
|
|
3
3
|
export type InternalHandlerResponse = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
status: number;
|
|
5
|
+
statusText: string | undefined;
|
|
6
|
+
headers: Record<string, string>;
|
|
7
|
+
body: string | Record<string, any>;
|
|
8
8
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Limited INTERNAL exports used by the presets runtime
|
|
2
|
+
// Please don't use these in your project code!
|
|
1
3
|
export { trapUnhandledNodeErrors } from "./utils.mjs";
|
|
2
4
|
export { startScheduleRunner, runCronTasks } from "./task.mjs";
|
|
3
5
|
export { getGracefulShutdownConfig, setupGracefulShutdown } from "./shutdown.mjs";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Limited INTERNAL exports used by the presets runtime
|
|
2
|
+
// Please don't use these in your project code!
|
|
1
3
|
export { trapUnhandledNodeErrors } from "./utils.mjs";
|
|
2
4
|
export { startScheduleRunner, runCronTasks } from "./task.mjs";
|
|
3
5
|
export { getGracefulShutdownConfig, setupGracefulShutdown } from "./shutdown.mjs";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
declare function GracefulShutdown(server
|
|
2
|
+
* Gracefully shuts down `server` when the process receives
|
|
3
|
+
* the passed signals
|
|
4
|
+
*
|
|
5
|
+
* @param {http.Server} server
|
|
6
|
+
* @param {object} opts
|
|
7
|
+
* signals: string (each signal separated by SPACE)
|
|
8
|
+
* timeout: timeout value for forceful shutdown in ms
|
|
9
|
+
* forceExit: force process.exit() - otherwise just let event loop clear
|
|
10
|
+
* development: boolean value (if true, no graceful shutdown to speed up development
|
|
11
|
+
* preShutdown: optional function. Needs to return a promise. - HTTP sockets are still available and untouched
|
|
12
|
+
* onShutdown: optional function. Needs to return a promise.
|
|
13
|
+
* finally: optional function, handled at the end of the shutdown.
|
|
14
|
+
*/
|
|
15
|
+
declare function GracefulShutdown(server, opts);
|
|
16
16
|
export default GracefulShutdown;
|