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.
Files changed (252) hide show
  1. package/dist/_build/common.mjs +763 -0
  2. package/dist/_build/rolldown.mjs +216 -0
  3. package/dist/_build/rollup.mjs +359 -0
  4. package/dist/_build/vite.build.mjs +67 -0
  5. package/dist/_build/vite.plugin.mjs +747 -0
  6. package/dist/_chunks/B-7HiF0V.mjs +1303 -0
  7. package/dist/_chunks/B3asVbT4.mjs +151 -0
  8. package/dist/_chunks/B5ooyfLk.mjs +372 -0
  9. package/dist/_chunks/DXMHy5ca.mjs +43 -0
  10. package/dist/_dev.d.mts +12 -0
  11. package/dist/_dev.mjs +675 -0
  12. package/dist/_libs/acorn.mjs +5034 -0
  13. package/dist/_libs/c12.mjs +2798 -0
  14. package/dist/_libs/chokidar.mjs +1560 -0
  15. package/dist/_libs/citty.mjs +333 -0
  16. package/dist/_libs/commondir.mjs +22 -0
  17. package/dist/_libs/compatx.mjs +46 -0
  18. package/dist/_libs/confbox.mjs +2920 -0
  19. package/dist/_libs/debug.mjs +848 -0
  20. package/dist/_libs/deepmerge.mjs +86 -0
  21. package/dist/_libs/depd.mjs +314 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/ee-first.mjs +68 -0
  25. package/dist/_libs/encodeurl.mjs +49 -0
  26. package/dist/_libs/escape-html.mjs +58 -0
  27. package/dist/_libs/escape-string-regexp.mjs +8 -0
  28. package/dist/_libs/estree-walker.mjs +330 -0
  29. package/dist/_libs/etag.mjs +75 -0
  30. package/dist/_libs/fdir.mjs +514 -0
  31. package/dist/_libs/fresh.mjs +85 -0
  32. package/dist/_libs/function-bind.mjs +63 -0
  33. package/dist/_libs/gen-mapping.mjs +612 -0
  34. package/dist/_libs/giget.mjs +19076 -0
  35. package/dist/_libs/gzip-size.mjs +21 -0
  36. package/dist/_libs/hasown.mjs +14 -0
  37. package/dist/_libs/http-errors.mjs +436 -0
  38. package/dist/_libs/httpxy.mjs +410 -0
  39. package/dist/_libs/is-core-module.mjs +220 -0
  40. package/dist/_libs/is-module.mjs +13 -0
  41. package/dist/_libs/is-reference.mjs +32 -0
  42. package/dist/_libs/js-tokens.mjs +382 -0
  43. package/dist/_libs/klona.mjs +90 -0
  44. package/dist/_libs/knitwork.mjs +124 -0
  45. package/dist/_libs/local-pkg.mjs +1686 -0
  46. package/dist/_libs/magic-string.mjs +939 -0
  47. package/dist/_libs/mime-db.mjs +7642 -0
  48. package/dist/_libs/mime-types.mjs +162 -0
  49. package/dist/_libs/mime.mjs +1391 -0
  50. package/dist/_libs/node-fetch-native.mjs +173 -0
  51. package/dist/_libs/on-finished.mjs +170 -0
  52. package/dist/_libs/parseurl.mjs +103 -0
  53. package/dist/_libs/path-parse.mjs +47 -0
  54. package/dist/_libs/pathe.mjs +41 -0
  55. package/dist/_libs/picomatch.mjs +1673 -0
  56. package/dist/_libs/plugin-alias.mjs +64 -0
  57. package/dist/_libs/plugin-commonjs.mjs +1489 -0
  58. package/dist/_libs/plugin-inject.mjs +135 -0
  59. package/dist/_libs/plugin-json.mjs +36 -0
  60. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  61. package/dist/_libs/plugin-replace.mjs +104 -0
  62. package/dist/_libs/pretty-bytes.mjs +116 -0
  63. package/dist/_libs/range-parser.mjs +102 -0
  64. package/dist/_libs/remapping.mjs +117 -0
  65. package/dist/_libs/rou3.mjs +311 -0
  66. package/dist/_libs/send.mjs +857 -0
  67. package/dist/_libs/serve-static.mjs +124 -0
  68. package/dist/_libs/std-env.mjs +158 -0
  69. package/dist/_libs/strip-literal.mjs +51 -0
  70. package/dist/_libs/tinyglobby.mjs +292 -0
  71. package/dist/_libs/ultrahtml.mjs +138 -0
  72. package/dist/_libs/unimport.mjs +3520 -0
  73. package/dist/_libs/untyped.mjs +271 -0
  74. package/dist/_libs/unwasm.mjs +5825 -0
  75. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  76. package/dist/_presets.mjs +1723 -0
  77. package/dist/builder.d.mts +54 -0
  78. package/dist/builder.mjs +45 -0
  79. package/dist/cli/_chunks/build.mjs +43 -0
  80. package/dist/cli/_chunks/common.mjs +15 -0
  81. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  82. package/dist/cli/_chunks/dev.mjs +79 -0
  83. package/dist/cli/_chunks/dist.mjs +3 -0
  84. package/dist/cli/_chunks/dist2.mjs +4 -0
  85. package/dist/cli/_chunks/esm.mjs +3 -0
  86. package/dist/cli/_chunks/json5.mjs +4 -0
  87. package/dist/cli/_chunks/jsonc.mjs +4 -0
  88. package/dist/cli/_chunks/list.mjs +27 -0
  89. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  90. package/dist/cli/_chunks/prepare.mjs +19 -0
  91. package/dist/cli/_chunks/run.mjs +55 -0
  92. package/dist/cli/_chunks/task.mjs +16 -0
  93. package/dist/cli/_chunks/toml.mjs +4 -0
  94. package/dist/cli/_chunks/yaml.mjs +4 -0
  95. package/dist/cli/index.d.mts +1 -1
  96. package/dist/cli/index.mjs +20 -476
  97. package/dist/node_modules/@speed-highlight/core/dist/index.js +1 -1
  98. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +1 -1
  99. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  100. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  101. package/dist/node_modules/cookie-es/package.json +37 -0
  102. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  103. package/dist/node_modules/hookable/package.json +29 -26
  104. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  105. package/dist/node_modules/rendu/package.json +47 -0
  106. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  107. package/dist/presets/_nitro/runtime/nitro-dev.mjs +44 -38
  108. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  109. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +9 -12
  110. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/service-worker.mjs +14 -11
  112. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  113. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +6 -5
  114. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  115. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  116. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  117. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -27
  118. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +7 -7
  119. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  120. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  121. package/dist/presets/azure/runtime/azure-swa.mjs +22 -21
  122. package/dist/presets/bun/runtime/bun.d.mts +1 -0
  123. package/dist/presets/bun/runtime/bun.mjs +18 -17
  124. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  125. package/dist/presets/cloudflare/runtime/_module-handler.mjs +79 -87
  126. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  127. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +55 -61
  128. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  129. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +12 -14
  130. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  131. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -39
  132. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  133. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  134. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  135. package/dist/presets/deno/runtime/deno-deploy.d.mts +1 -0
  136. package/dist/presets/deno/runtime/deno-deploy.mjs +12 -11
  137. package/dist/presets/deno/runtime/deno-server.d.mts +2 -1
  138. package/dist/presets/deno/runtime/deno-server.mjs +31 -39
  139. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  140. package/dist/presets/netlify/runtime/netlify-edge.mjs +14 -11
  141. package/dist/presets/netlify/runtime/netlify.mjs +11 -17
  142. package/dist/presets/node/runtime/node-cluster.mjs +49 -48
  143. package/dist/presets/node/runtime/node-middleware.d.mts +3 -2
  144. package/dist/presets/node/runtime/node-middleware.mjs +7 -6
  145. package/dist/presets/node/runtime/node-server.mjs +34 -24
  146. package/dist/presets/standard/runtime/server.d.mts +1 -3
  147. package/dist/presets/standard/runtime/server.mjs +1 -3
  148. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  149. package/dist/presets/stormkit/runtime/stormkit.mjs +20 -20
  150. package/dist/presets/vercel/runtime/vercel.d.mts +3 -3
  151. package/dist/presets/vercel/runtime/vercel.mjs +15 -14
  152. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  153. package/dist/presets/winterjs/runtime/winterjs.mjs +72 -68
  154. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  155. package/dist/runtime/index.d.mts +13 -2
  156. package/dist/runtime/index.mjs +13 -8
  157. package/dist/runtime/internal/app.d.mts +3 -1
  158. package/dist/runtime/internal/app.mjs +179 -140
  159. package/dist/runtime/internal/cache.d.mts +10 -4
  160. package/dist/runtime/internal/cache.mjs +247 -216
  161. package/dist/runtime/internal/context.d.mts +9 -9
  162. package/dist/runtime/internal/context.mjs +17 -10
  163. package/dist/runtime/internal/database.mjs +8 -10
  164. package/dist/runtime/internal/error/dev.d.mts +5 -4
  165. package/dist/runtime/internal/error/dev.mjs +106 -105
  166. package/dist/runtime/internal/error/prod.d.mts +5 -4
  167. package/dist/runtime/internal/error/prod.mjs +51 -59
  168. package/dist/runtime/internal/error/utils.d.mts +4 -4
  169. package/dist/runtime/internal/error/utils.mjs +1 -1
  170. package/dist/runtime/internal/index.d.mts +2 -0
  171. package/dist/runtime/internal/index.mjs +2 -0
  172. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +14 -14
  173. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +248 -209
  174. package/dist/runtime/internal/meta.d.mts +1 -1
  175. package/dist/runtime/internal/meta.mjs +1 -1
  176. package/dist/runtime/internal/plugin.d.mts +2 -2
  177. package/dist/runtime/internal/plugin.mjs +1 -1
  178. package/dist/runtime/internal/renderer.mjs +40 -32
  179. package/dist/runtime/internal/route-rules.d.mts +8 -8
  180. package/dist/runtime/internal/route-rules.mjs +53 -51
  181. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  182. package/dist/runtime/internal/routes/dev-tasks.mjs +15 -17
  183. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  184. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  185. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  186. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  187. package/dist/runtime/internal/routes/renderer-template.dev.mjs +10 -17
  188. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  189. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  190. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  191. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  192. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  193. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  194. package/dist/runtime/internal/runtime-config.mjs +40 -35
  195. package/dist/runtime/internal/shutdown.d.mts +2 -8
  196. package/dist/runtime/internal/shutdown.mjs +32 -30
  197. package/dist/runtime/internal/static.mjs +63 -74
  198. package/dist/runtime/internal/storage.mjs +2 -2
  199. package/dist/runtime/internal/task.d.mts +6 -6
  200. package/dist/runtime/internal/task.mjs +56 -60
  201. package/dist/runtime/internal/utils.d.mts +1 -1
  202. package/dist/runtime/internal/utils.mjs +4 -10
  203. package/dist/types/index.d.mts +2594 -2286
  204. package/dist/types/index.mjs +1 -1
  205. package/dist/vite.d.mts +56 -47
  206. package/dist/vite.mjs +55 -68
  207. package/lib/index.d.mts +1 -0
  208. package/lib/index.mjs +1 -0
  209. package/lib/runtime/meta.mjs +35 -0
  210. package/package.json +49 -50
  211. package/dist/_chunks/app.mjs +0 -19797
  212. package/dist/_chunks/build.mjs +0 -84
  213. package/dist/_chunks/build2.mjs +0 -318
  214. package/dist/_chunks/build3.mjs +0 -6452
  215. package/dist/_chunks/detect-acorn.mjs +0 -503
  216. package/dist/_chunks/index.mjs +0 -22242
  217. package/dist/_chunks/index2.mjs +0 -297
  218. package/dist/_chunks/index3.mjs +0 -1058
  219. package/dist/_chunks/index4.mjs +0 -1206
  220. package/dist/_chunks/info.mjs +0 -11157
  221. package/dist/_chunks/json5.mjs +0 -68
  222. package/dist/_chunks/jsonc.mjs +0 -51
  223. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  224. package/dist/_chunks/plugin.mjs +0 -960
  225. package/dist/_chunks/server.mjs +0 -254
  226. package/dist/_chunks/snapshot.mjs +0 -284
  227. package/dist/_chunks/toml.mjs +0 -259
  228. package/dist/_chunks/yaml.mjs +0 -86
  229. package/dist/cli/build.mjs +0 -54
  230. package/dist/cli/common.mjs +0 -13
  231. package/dist/cli/dev.mjs +0 -95
  232. package/dist/cli/index2.mjs +0 -17
  233. package/dist/cli/list.mjs +0 -34
  234. package/dist/cli/prepare.mjs +0 -24
  235. package/dist/cli/run.mjs +0 -60
  236. package/dist/index.d.mts +0 -52
  237. package/dist/index.mjs +0 -55
  238. package/dist/node_modules/klona/dist/index.mjs +0 -81
  239. package/dist/node_modules/klona/full/index.mjs +0 -53
  240. package/dist/node_modules/klona/package.json +0 -74
  241. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  242. package/dist/node_modules/std-env/package.json +0 -46
  243. package/dist/presets.mjs +0 -2460
  244. package/dist/runtime/internal/debug.d.mts +0 -2
  245. package/dist/runtime/internal/debug.mjs +0 -5
  246. package/dist/runtime/internal/empty.d.mts +0 -0
  247. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  248. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  249. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  250. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  251. package/lib/runtime-meta.mjs +0 -38
  252. /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
- async function defaultNitroErrorHandler(error, event) {
12
- const res = await defaultHandler(error, event);
13
- return new FastResponse(
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
- const isSensitive = error.unhandled;
21
- const status = error.status || 500;
22
- const url = getRequestURL(event, { xForwardedHost: true, xForwardedProto: true });
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
- await loadStackTrace(error).catch(consola.error);
36
- const youch = new Youch();
37
- if (isSensitive && !opts?.silent) {
38
- const tags = [error.unhandled && "[unhandled]"].filter(Boolean).join(" ");
39
- const ansiError = await (await youch.toANSI(error)).replaceAll(process.cwd(), ".");
40
- consola.error(
41
- `[request error] ${tags} [${event.req.method}] ${url}
42
-
43
- `,
44
- ansiError
45
- );
46
- }
47
- const useJSON = opts?.json || !event.req.headers.get("accept")?.includes("text/html");
48
- const headers = {
49
- "content-type": useJSON ? "application/json" : "text/html",
50
- // Prevent browser from guessing the MIME types of resources.
51
- "x-content-type-options": "nosniff",
52
- // Prevent error page from being embedded in an iframe
53
- "x-frame-options": "DENY",
54
- // Prevent browsers from sending the Referer header
55
- "referrer-policy": "no-referrer",
56
- // Disable the execution of any js
57
- "content-security-policy": "script-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self';"
58
- };
59
- if (status === 404 || !event.res.headers.has("cache-control")) {
60
- headers["cache-control"] = "no-cache";
61
- }
62
- const body = useJSON ? {
63
- error: true,
64
- url,
65
- status,
66
- statusText: error.statusText,
67
- message: error.message,
68
- data: error.data,
69
- stack: error.stack?.split("\n").map((line) => line.trim())
70
- } : await youch.toHTML(error, {
71
- request: {
72
- url: url.href,
73
- method: event.req.method,
74
- headers: Object.fromEntries(event.req.headers.entries())
75
- }
76
- });
77
- return {
78
- status,
79
- statusText: error.statusText,
80
- headers,
81
- body
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
- if (!(error instanceof Error)) {
86
- return;
87
- }
88
- const parsed = await new ErrorParser().defineSourceLoader(sourceLoader).parse(error);
89
- const stack = error.message + "\n" + parsed.frames.map((frame) => fmtFrame(frame)).join("\n");
90
- Object.defineProperty(error, "stack", { value: stack });
91
- if (error.cause) {
92
- await loadStackTrace(error.cause).catch(consola.error);
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
- if (!frame.fileName || frame.fileType !== "fs" || frame.type === "native") {
97
- return;
98
- }
99
- if (frame.type === "app") {
100
- const rawSourceMap = await readFile(`${frame.fileName}.map`, "utf8").catch(() => {
101
- });
102
- if (rawSourceMap) {
103
- const consumer = await new SourceMapConsumer(rawSourceMap);
104
- const originalPosition = consumer.originalPositionFor({ line: frame.lineNumber, column: frame.columnNumber });
105
- if (originalPosition.source && originalPosition.line) {
106
- frame.fileName = resolve(dirname(frame.fileName), originalPosition.source);
107
- frame.lineNumber = originalPosition.line;
108
- frame.columnNumber = originalPosition.column || 0;
109
- }
110
- }
111
- }
112
- const contents = await readFile(frame.fileName, "utf8").catch(() => {
113
- });
114
- return contents ? { contents } : void 0;
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
- if (frame.type === "native") {
118
- return frame.raw;
119
- }
120
- const src = `${frame.fileName || ""}:${frame.lineNumber}:${frame.columnNumber})`;
121
- return frame.functionName ? `at ${frame.functionName} (${src}` : `at ${src}`;
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
- declare const _default: NitroErrorHandler;
4
- export default _default;
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
- silent?: boolean;
7
- json?: boolean;
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
- export default defineNitroErrorHandler(
5
- function defaultNitroErrorHandler(error, event) {
6
- const res = defaultHandler(error, event);
7
- return new FastResponse(JSON.stringify(res.body, null, 2), res);
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
- const isSensitive = error.unhandled;
12
- const status = error.status || 500;
13
- const url = getRequestURL(event, { xForwardedHost: true, xForwardedProto: true });
14
- if (status === 404) {
15
- const baseURL = import.meta.baseURL || "/";
16
- if (/^\/[^/]/.test(baseURL) && !url.pathname.startsWith(baseURL)) {
17
- const redirectTo = `${baseURL}${url.pathname.slice(1)}${url.search}`;
18
- return {
19
- status: 302,
20
- statusText: "Found",
21
- headers: { location: redirectTo },
22
- body: `Redirecting...`
23
- };
24
- }
25
- }
26
- if (isSensitive && !opts?.silent) {
27
- const tags = [error.unhandled && "[unhandled]"].filter(Boolean).join(" ");
28
- console.error(
29
- `[request error] ${tags} [${event.req.method}] ${url}
30
- `,
31
- error
32
- );
33
- }
34
- const headers = {
35
- "content-type": "application/json",
36
- // Prevent browser from guessing the MIME types of resources.
37
- "x-content-type-options": "nosniff",
38
- // Prevent error page from being embedded in an iframe
39
- "x-frame-options": "DENY",
40
- // Prevent browsers from sending the Referer header
41
- "referrer-policy": "no-referrer",
42
- // Disable the execution of any js
43
- "content-security-policy": "script-src 'none'; frame-ancestors 'none';"
44
- };
45
- if (status === 404 || !event.res.headers.has("cache-control")) {
46
- headers["cache-control"] = "no-cache";
47
- }
48
- const body = {
49
- error: true,
50
- url: url.href,
51
- status,
52
- statusText: error.statusText,
53
- message: isSensitive ? "Server Error" : error.message,
54
- data: isSensitive ? void 0 : error.data
55
- };
56
- return {
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
- status: number;
5
- statusText: string | undefined;
6
- headers: Record<string, string>;
7
- body: string | Record<string, any>;
4
+ status: number;
5
+ statusText: string | undefined;
6
+ headers: Record<string, string>;
7
+ body: string | Record<string, any>;
8
8
  };
@@ -1,3 +1,3 @@
1
1
  export function defineNitroErrorHandler(handler) {
2
- return handler;
2
+ return handler;
3
3
  }
@@ -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
- * 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: any, opts: any): () => any;
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;