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
@@ -1,34 +1,36 @@
1
1
  import gracefulShutdown from "./lib/http-graceful-shutdown.mjs";
2
+ import { useNitroHooks } from "./app.mjs";
2
3
  export function getGracefulShutdownConfig() {
3
- return {
4
- disabled: !!process.env.NITRO_SHUTDOWN_DISABLED,
5
- signals: (process.env.NITRO_SHUTDOWN_SIGNALS || "SIGTERM SIGINT").split(" ").map((s) => s.trim()),
6
- timeout: Number.parseInt(process.env.NITRO_SHUTDOWN_TIMEOUT || "", 10) || 3e4,
7
- forceExit: !process.env.NITRO_SHUTDOWN_NO_FORCE_EXIT
8
- };
4
+ return {
5
+ disabled: !!process.env.NITRO_SHUTDOWN_DISABLED,
6
+ signals: (process.env.NITRO_SHUTDOWN_SIGNALS || "SIGTERM SIGINT").split(" ").map((s) => s.trim()),
7
+ timeout: Number.parseInt(process.env.NITRO_SHUTDOWN_TIMEOUT || "", 10) || 3e4,
8
+ forceExit: !process.env.NITRO_SHUTDOWN_NO_FORCE_EXIT
9
+ };
9
10
  }
10
- export function setupGracefulShutdown(listener, nitroApp) {
11
- const shutdownConfig = getGracefulShutdownConfig();
12
- if (shutdownConfig.disabled) {
13
- return;
14
- }
15
- gracefulShutdown(listener, {
16
- signals: shutdownConfig.signals.join(" "),
17
- timeout: shutdownConfig.timeout,
18
- forceExit: shutdownConfig.forceExit,
19
- onShutdown: async () => {
20
- await new Promise((resolve) => {
21
- const timeout = setTimeout(() => {
22
- console.warn("Graceful shutdown timeout, force exiting...");
23
- resolve();
24
- }, shutdownConfig.timeout);
25
- nitroApp.hooks.callHook("close").catch((error) => {
26
- console.error(error);
27
- }).finally(() => {
28
- clearTimeout(timeout);
29
- resolve();
30
- });
31
- });
32
- }
33
- });
11
+ export function setupGracefulShutdown(listener) {
12
+ const shutdownConfig = getGracefulShutdownConfig();
13
+ if (shutdownConfig.disabled) {
14
+ return;
15
+ }
16
+ // https://github.com/sebhildebrandt/http-graceful-shutdown
17
+ gracefulShutdown(listener, {
18
+ signals: shutdownConfig.signals.join(" "),
19
+ timeout: shutdownConfig.timeout,
20
+ forceExit: shutdownConfig.forceExit,
21
+ onShutdown: async () => {
22
+ await new Promise((resolve) => {
23
+ const timeout = setTimeout(() => {
24
+ console.warn("Graceful shutdown timeout, force exiting...");
25
+ resolve();
26
+ }, shutdownConfig.timeout);
27
+ Promise.resolve(useNitroHooks().callHook("close")).catch((error) => {
28
+ console.error(error);
29
+ }).finally(() => {
30
+ clearTimeout(timeout);
31
+ resolve();
32
+ });
33
+ });
34
+ }
35
+ });
34
36
  }
@@ -1,77 +1,66 @@
1
1
  import { HTTPError, defineHandler } from "h3";
2
- import {
3
- decodePath,
4
- joinURL,
5
- withLeadingSlash,
6
- withoutTrailingSlash
7
- } from "ufo";
8
- import {
9
- getAsset,
10
- isPublicAssetURL,
11
- readAsset
12
- } from "#nitro-internal-virtual/public-assets";
13
- const METHODS = /* @__PURE__ */ new Set(["HEAD", "GET"]);
14
- const EncodingMap = { gzip: ".gz", br: ".br" };
2
+ import { decodePath, joinURL, withLeadingSlash, withoutTrailingSlash } from "ufo";
3
+ import { getAsset, isPublicAssetURL, readAsset } from "#nitro-internal-virtual/public-assets";
4
+ const METHODS = new Set(["HEAD", "GET"]);
5
+ const EncodingMap = {
6
+ gzip: ".gz",
7
+ br: ".br"
8
+ };
15
9
  export default defineHandler((event) => {
16
- if (event.req.method && !METHODS.has(event.req.method)) {
17
- return;
18
- }
19
- let id = decodePath(
20
- withLeadingSlash(withoutTrailingSlash(event.url.pathname))
21
- );
22
- let asset;
23
- const encodingHeader = event.req.headers.get("accept-encoding") || "";
24
- const encodings = [
25
- ...encodingHeader.split(",").map((e) => EncodingMap[e.trim()]).filter(Boolean).sort(),
26
- ""
27
- ];
28
- if (encodings.length > 1) {
29
- event.res.headers.append("Vary", "Accept-Encoding");
30
- }
31
- for (const encoding of encodings) {
32
- for (const _id of [id + encoding, joinURL(id, "index.html" + encoding)]) {
33
- const _asset = getAsset(_id);
34
- if (_asset) {
35
- asset = _asset;
36
- id = _id;
37
- break;
38
- }
39
- }
40
- }
41
- if (!asset) {
42
- if (isPublicAssetURL(id)) {
43
- event.res.headers.delete("Cache-Control");
44
- throw new HTTPError({ status: 404 });
45
- }
46
- return;
47
- }
48
- const ifNotMatch = event.req.headers.get("if-none-match") === asset.etag;
49
- if (ifNotMatch) {
50
- event.res.status = 304;
51
- event.res.statusText = "Not Modified";
52
- return "";
53
- }
54
- const ifModifiedSinceH = event.req.headers.get("if-modified-since");
55
- const mtimeDate = new Date(asset.mtime);
56
- if (ifModifiedSinceH && asset.mtime && new Date(ifModifiedSinceH) >= mtimeDate) {
57
- event.res.status = 304;
58
- event.res.statusText = "Not Modified";
59
- return "";
60
- }
61
- if (asset.type) {
62
- event.res.headers.set("Content-Type", asset.type);
63
- }
64
- if (asset.etag && !event.res.headers.has("ETag")) {
65
- event.res.headers.set("ETag", asset.etag);
66
- }
67
- if (asset.mtime && !event.res.headers.has("Last-Modified")) {
68
- event.res.headers.set("Last-Modified", mtimeDate.toUTCString());
69
- }
70
- if (asset.encoding && !event.res.headers.has("Content-Encoding")) {
71
- event.res.headers.set("Content-Encoding", asset.encoding);
72
- }
73
- if (asset.size > 0 && !event.res.headers.has("Content-Length")) {
74
- event.res.headers.set("Content-Length", asset.size.toString());
75
- }
76
- return readAsset(id);
10
+ if (event.req.method && !METHODS.has(event.req.method)) {
11
+ return;
12
+ }
13
+ let id = decodePath(withLeadingSlash(withoutTrailingSlash(event.url.pathname)));
14
+ let asset;
15
+ const encodingHeader = event.req.headers.get("accept-encoding") || "";
16
+ const encodings = [...encodingHeader.split(",").map((e) => EncodingMap[e.trim()]).filter(Boolean).sort(), ""];
17
+ if (encodings.length > 1) {
18
+ event.res.headers.append("Vary", "Accept-Encoding");
19
+ }
20
+ for (const encoding of encodings) {
21
+ for (const _id of [id + encoding, joinURL(id, "index.html" + encoding)]) {
22
+ const _asset = getAsset(_id);
23
+ if (_asset) {
24
+ asset = _asset;
25
+ id = _id;
26
+ break;
27
+ }
28
+ }
29
+ }
30
+ if (!asset) {
31
+ if (isPublicAssetURL(id)) {
32
+ event.res.headers.delete("Cache-Control");
33
+ throw new HTTPError({ status: 404 });
34
+ }
35
+ return;
36
+ }
37
+ const ifNotMatch = event.req.headers.get("if-none-match") === asset.etag;
38
+ if (ifNotMatch) {
39
+ event.res.status = 304;
40
+ event.res.statusText = "Not Modified";
41
+ return "";
42
+ }
43
+ const ifModifiedSinceH = event.req.headers.get("if-modified-since");
44
+ const mtimeDate = new Date(asset.mtime);
45
+ if (ifModifiedSinceH && asset.mtime && new Date(ifModifiedSinceH) >= mtimeDate) {
46
+ event.res.status = 304;
47
+ event.res.statusText = "Not Modified";
48
+ return "";
49
+ }
50
+ if (asset.type) {
51
+ event.res.headers.set("Content-Type", asset.type);
52
+ }
53
+ if (asset.etag && !event.res.headers.has("ETag")) {
54
+ event.res.headers.set("ETag", asset.etag);
55
+ }
56
+ if (asset.mtime && !event.res.headers.has("Last-Modified")) {
57
+ event.res.headers.set("Last-Modified", mtimeDate.toUTCString());
58
+ }
59
+ if (asset.encoding && !event.res.headers.has("Content-Encoding")) {
60
+ event.res.headers.set("Content-Encoding", asset.encoding);
61
+ }
62
+ if (asset.size > 0 && !event.res.headers.has("Content-Length")) {
63
+ event.res.headers.set("Content-Length", asset.size.toString());
64
+ }
65
+ return readAsset(id);
77
66
  });
@@ -1,6 +1,6 @@
1
1
  import { prefixStorage } from "unstorage";
2
2
  import { initStorage } from "#nitro-internal-virtual/storage";
3
3
  export function useStorage(base = "") {
4
- const storage = useStorage._storage ??= initStorage();
5
- return base ? prefixStorage(storage, base) : storage;
4
+ const storage = useStorage._storage ??= initStorage();
5
+ return base ? prefixStorage(storage, base) : storage;
6
6
  }
@@ -2,16 +2,16 @@ import type { Task, TaskContext, TaskPayload, TaskResult } from "nitro/types";
2
2
  /** @experimental */
3
3
  export declare function defineTask<RT = unknown>(def: Task<RT>): Task<RT>;
4
4
  /** @experimental */
5
- export declare function runTask<RT = unknown>(name: string, { payload, context, }?: {
6
- payload?: TaskPayload;
7
- context?: TaskContext;
5
+ export declare function runTask<RT = unknown>(name: string, { payload, context }?: {
6
+ payload?: TaskPayload;
7
+ context?: TaskContext;
8
8
  }): Promise<TaskResult<RT>>;
9
9
  /** @experimental */
10
- export declare function startScheduleRunner(): void;
10
+ export declare function startScheduleRunner();
11
11
  /** @experimental */
12
12
  export declare function getCronTasks(cron: string): string[];
13
13
  /** @experimental */
14
14
  export declare function runCronTasks(cron: string, ctx: {
15
- payload?: TaskPayload;
16
- context?: TaskContext;
15
+ payload?: TaskPayload;
16
+ context?: TaskContext;
17
17
  }): Promise<TaskResult[]>;
@@ -1,73 +1,69 @@
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";
4
+ /** @experimental */
5
5
  export function defineTask(def) {
6
- if (typeof def.run !== "function") {
7
- def.run = () => {
8
- throw new TypeError("Task must implement a `run` method!");
9
- };
10
- }
11
- return def;
6
+ if (typeof def.run !== "function") {
7
+ def.run = () => {
8
+ throw new TypeError("Task must implement a `run` method!");
9
+ };
10
+ }
11
+ return def;
12
12
  }
13
13
  const __runningTasks__ = {};
14
- export async function runTask(name, {
15
- payload = {},
16
- context = {}
17
- } = {}) {
18
- if (__runningTasks__[name]) {
19
- return __runningTasks__[name];
20
- }
21
- if (!(name in tasks)) {
22
- throw new HTTPError({
23
- message: `Task \`${name}\` is not available!`,
24
- status: 404
25
- });
26
- }
27
- if (!tasks[name].resolve) {
28
- throw new HTTPError({
29
- message: `Task \`${name}\` is not implemented!`,
30
- status: 501
31
- });
32
- }
33
- const handler = await tasks[name].resolve();
34
- const taskEvent = { name, payload, context };
35
- __runningTasks__[name] = handler.run(taskEvent);
36
- try {
37
- const res = await __runningTasks__[name];
38
- return res;
39
- } finally {
40
- delete __runningTasks__[name];
41
- }
14
+ /** @experimental */
15
+ export async function runTask(name, { payload = {}, context = {} } = {}) {
16
+ if (__runningTasks__[name]) {
17
+ return __runningTasks__[name];
18
+ }
19
+ if (!(name in tasks)) {
20
+ throw new HTTPError({
21
+ message: `Task \`${name}\` is not available!`,
22
+ status: 404
23
+ });
24
+ }
25
+ if (!tasks[name].resolve) {
26
+ throw new HTTPError({
27
+ message: `Task \`${name}\` is not implemented!`,
28
+ status: 501
29
+ });
30
+ }
31
+ const handler = await tasks[name].resolve();
32
+ const taskEvent = {
33
+ name,
34
+ payload,
35
+ context
36
+ };
37
+ __runningTasks__[name] = handler.run(taskEvent);
38
+ try {
39
+ const res = await __runningTasks__[name];
40
+ return res;
41
+ } finally {
42
+ delete __runningTasks__[name];
43
+ }
42
44
  }
45
+ /** @experimental */
43
46
  export function startScheduleRunner() {
44
- if (!scheduledTasks || scheduledTasks.length === 0 || isTest) {
45
- return;
46
- }
47
- const payload = {
48
- scheduledTime: Date.now()
49
- };
50
- for (const schedule of scheduledTasks) {
51
- const cron = new Cron(schedule.cron, async () => {
52
- await Promise.all(
53
- schedule.tasks.map(
54
- (name) => runTask(name, {
55
- payload,
56
- context: {}
57
- }).catch((error) => {
58
- console.error(
59
- `Error while running scheduled task "${name}"`,
60
- error
61
- );
62
- })
63
- )
64
- );
65
- });
66
- }
47
+ if (!scheduledTasks || scheduledTasks.length === 0 || process.env.TEST) {
48
+ return;
49
+ }
50
+ const payload = { scheduledTime: Date.now() };
51
+ for (const schedule of scheduledTasks) {
52
+ const cron = new Cron(schedule.cron, async () => {
53
+ await Promise.all(schedule.tasks.map((name) => runTask(name, {
54
+ payload,
55
+ context: {}
56
+ }).catch((error) => {
57
+ console.error(`Error while running scheduled task "${name}"`, error);
58
+ })));
59
+ });
60
+ }
67
61
  }
62
+ /** @experimental */
68
63
  export function getCronTasks(cron) {
69
- return (scheduledTasks || []).find((task) => task.cron === cron)?.tasks || [];
64
+ return (scheduledTasks || []).find((task) => task.cron === cron)?.tasks || [];
70
65
  }
66
+ /** @experimental */
71
67
  export function runCronTasks(cron, ctx) {
72
- return Promise.all(getCronTasks(cron).map((name) => runTask(name, ctx)));
68
+ return Promise.all(getCronTasks(cron).map((name) => runTask(name, ctx)));
73
69
  }
@@ -1 +1 @@
1
- export declare function trapUnhandledNodeErrors(): void;
1
+ export declare function trapUnhandledNodeErrors();
@@ -1,15 +1,9 @@
1
1
  import { useNitroApp } from "./app.mjs";
2
2
  function _captureError(error, type) {
3
- console.error(`[${type}]`, error);
4
- useNitroApp().captureError(error, { tags: [type] });
3
+ console.error(`[${type}]`, error);
4
+ useNitroApp().captureError(error, { tags: [type] });
5
5
  }
6
6
  export function trapUnhandledNodeErrors() {
7
- process.on(
8
- "unhandledRejection",
9
- (error) => _captureError(error, "unhandledRejection")
10
- );
11
- process.on(
12
- "uncaughtException",
13
- (error) => _captureError(error, "uncaughtException")
14
- );
7
+ process.on("unhandledRejection", (error) => _captureError(error, "unhandledRejection"));
8
+ process.on("uncaughtException", (error) => _captureError(error, "uncaughtException"));
15
9
  }