nitro 3.0.1-alpha.0 → 3.0.1-alpha.1

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 (293) hide show
  1. package/dist/_build/common.mjs +68 -0
  2. package/dist/_build/common2.mjs +772 -0
  3. package/dist/_build/rolldown.mjs +206 -0
  4. package/dist/_build/rollup.mjs +289 -0
  5. package/dist/_build/vite.build.mjs +56 -0
  6. package/dist/_build/vite.plugin.mjs +768 -0
  7. package/dist/_chunks/ANM1K1bE.mjs +304 -0
  8. package/dist/_chunks/B-D1JOIz.mjs +1355 -0
  9. package/dist/_chunks/BX9-zVkM.mjs +59 -0
  10. package/dist/_chunks/Bqks5huO.mjs +31 -0
  11. package/dist/_chunks/C7CbzoI1.mjs +39 -0
  12. package/dist/_dev.d.mts +12 -0
  13. package/dist/_dev.mjs +705 -0
  14. package/dist/_libs/acorn.mjs +5034 -0
  15. package/dist/_libs/c12.mjs +2858 -0
  16. package/dist/_libs/chokidar.mjs +1561 -0
  17. package/dist/_libs/citty.mjs +333 -0
  18. package/dist/_libs/commondir.mjs +22 -0
  19. package/dist/_libs/compatx.mjs +46 -0
  20. package/dist/_libs/confbox.mjs +2920 -0
  21. package/dist/_libs/deepmerge.mjs +86 -0
  22. package/dist/_libs/dot-prop.mjs +138 -0
  23. package/dist/_libs/duplexer.mjs +71 -0
  24. package/dist/_libs/escape-string-regexp.mjs +8 -0
  25. package/dist/_libs/estree-walker.mjs +330 -0
  26. package/dist/_libs/etag.mjs +80 -0
  27. package/dist/_libs/fdir.mjs +514 -0
  28. package/dist/_libs/function-bind.mjs +63 -0
  29. package/dist/_libs/gen-mapping.mjs +612 -0
  30. package/dist/_libs/giget.mjs +19289 -0
  31. package/dist/_libs/gzip-size.mjs +21 -0
  32. package/dist/_libs/hasown.mjs +14 -0
  33. package/dist/_libs/httpxy.mjs +410 -0
  34. package/dist/_libs/is-core-module.mjs +220 -0
  35. package/dist/_libs/is-module.mjs +13 -0
  36. package/dist/_libs/is-reference.mjs +32 -0
  37. package/dist/_libs/js-tokens.mjs +382 -0
  38. package/dist/_libs/klona.mjs +38 -0
  39. package/dist/_libs/knitwork.mjs +124 -0
  40. package/dist/_libs/local-pkg.mjs +1686 -0
  41. package/dist/_libs/magic-string.mjs +939 -0
  42. package/dist/_libs/mime.mjs +1391 -0
  43. package/dist/_libs/node-fetch-native.mjs +173 -0
  44. package/dist/_libs/path-parse.mjs +47 -0
  45. package/dist/_libs/pathe.mjs +41 -0
  46. package/dist/_libs/picomatch.mjs +1673 -0
  47. package/dist/_libs/plugin-alias.mjs +64 -0
  48. package/dist/_libs/plugin-commonjs.mjs +1491 -0
  49. package/dist/_libs/plugin-inject.mjs +135 -0
  50. package/dist/_libs/plugin-json.mjs +36 -0
  51. package/dist/_libs/plugin-node-resolve.mjs +1553 -0
  52. package/dist/_libs/plugin-replace.mjs +104 -0
  53. package/dist/_libs/pretty-bytes.mjs +116 -0
  54. package/dist/_libs/remapping.mjs +117 -0
  55. package/dist/_libs/rou3.mjs +319 -0
  56. package/dist/_libs/std-env.mjs +158 -0
  57. package/dist/_libs/strip-literal.mjs +51 -0
  58. package/dist/_libs/tinyglobby.mjs +292 -0
  59. package/dist/_libs/tsconfck.mjs +832 -0
  60. package/dist/_libs/ultrahtml.mjs +138 -0
  61. package/dist/_libs/unimport.mjs +3520 -0
  62. package/dist/_libs/untyped.mjs +271 -0
  63. package/dist/_libs/unwasm.mjs +5836 -0
  64. package/dist/_libs/vite-plugin-fullstack.mjs +561 -0
  65. package/dist/_presets.mjs +1752 -0
  66. package/dist/builder.d.mts +63 -0
  67. package/dist/builder.mjs +33 -0
  68. package/dist/cli/_chunks/build.mjs +48 -0
  69. package/dist/cli/_chunks/common.mjs +15 -0
  70. package/dist/cli/_chunks/detect-acorn.mjs +12 -0
  71. package/dist/cli/_chunks/dev.mjs +68 -0
  72. package/dist/cli/_chunks/dist.mjs +3 -0
  73. package/dist/cli/_chunks/dist2.mjs +3 -0
  74. package/dist/cli/_chunks/dist3.mjs +3 -0
  75. package/dist/cli/_chunks/dist4.mjs +4 -0
  76. package/dist/cli/_chunks/dist5.mjs +4 -0
  77. package/dist/cli/_chunks/esm.mjs +3 -0
  78. package/dist/cli/_chunks/json5.mjs +4 -0
  79. package/dist/cli/_chunks/jsonc.mjs +4 -0
  80. package/dist/cli/_chunks/list.mjs +27 -0
  81. package/dist/cli/_chunks/multipart-parser.mjs +6 -0
  82. package/dist/cli/_chunks/prepare.mjs +19 -0
  83. package/dist/cli/_chunks/run.mjs +55 -0
  84. package/dist/cli/_chunks/task.mjs +16 -0
  85. package/dist/cli/_chunks/toml.mjs +4 -0
  86. package/dist/cli/_chunks/yaml.mjs +4 -0
  87. package/dist/cli/index.d.mts +1 -1
  88. package/dist/cli/index.mjs +20 -476
  89. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  90. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  91. package/dist/node_modules/@sindresorhus/is/distribution/index.js +1 -1
  92. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  93. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  94. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  95. package/dist/node_modules/@speed-highlight/core/package.json +7 -3
  96. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  97. package/dist/node_modules/cookie-es/package.json +37 -0
  98. package/dist/node_modules/hookable/dist/index.mjs +243 -266
  99. package/dist/node_modules/hookable/package.json +29 -26
  100. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  101. package/dist/node_modules/rendu/package.json +47 -0
  102. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-F4I6KX4R.js} +2 -1
  103. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-YYEJ3AGB.js} +4 -1
  104. package/dist/node_modules/youch/build/index.js +16 -8
  105. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  106. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  107. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  108. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  109. package/dist/node_modules/youch/package.json +16 -17
  110. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +1 -0
  111. package/dist/presets/_nitro/runtime/nitro-dev.mjs +48 -42
  112. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +2 -2
  113. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +10 -14
  114. package/dist/presets/_nitro/runtime/service-worker.d.mts +1 -0
  115. package/dist/presets/_nitro/runtime/service-worker.mjs +15 -12
  116. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +1 -0
  117. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +7 -6
  118. package/dist/presets/aws-lambda/runtime/_utils.d.mts +8 -13
  119. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  120. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +1 -2
  121. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +26 -28
  122. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +8 -8
  123. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  124. package/dist/presets/azure/runtime/azure-swa.d.mts +2 -2
  125. package/dist/presets/azure/runtime/azure-swa.mjs +24 -22
  126. package/dist/presets/bun/runtime/bun.d.mts +2 -0
  127. package/dist/presets/bun/runtime/bun.mjs +34 -21
  128. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +10 -7
  129. package/dist/presets/cloudflare/runtime/_module-handler.mjs +80 -88
  130. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +6 -14
  131. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +60 -63
  132. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +1 -7
  133. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +14 -16
  134. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +12 -12
  135. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +40 -42
  136. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  137. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  138. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  139. package/dist/presets/deno/runtime/deno-deploy.d.mts +4 -0
  140. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -12
  141. package/dist/presets/deno/runtime/deno-server.d.mts +0 -3
  142. package/dist/presets/deno/runtime/deno-server.mjs +32 -52
  143. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -1
  144. package/dist/presets/netlify/runtime/netlify-edge.mjs +15 -12
  145. package/dist/presets/netlify/runtime/netlify.mjs +12 -18
  146. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  147. package/dist/presets/node/runtime/node-cluster.mjs +50 -54
  148. package/dist/presets/node/runtime/node-middleware.d.mts +2 -3
  149. package/dist/presets/node/runtime/node-middleware.mjs +9 -8
  150. package/dist/presets/node/runtime/node-server.mjs +37 -34
  151. package/dist/presets/standard/runtime/server.d.mts +1 -3
  152. package/dist/presets/standard/runtime/server.mjs +2 -4
  153. package/dist/presets/stormkit/runtime/stormkit.d.mts +13 -13
  154. package/dist/presets/stormkit/runtime/stormkit.mjs +21 -21
  155. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  156. package/dist/presets/vercel/runtime/vercel.node.mjs +15 -0
  157. package/dist/presets/vercel/runtime/{vercel.d.mts → vercel.web.d.mts} +3 -3
  158. package/dist/presets/vercel/runtime/vercel.web.mjs +20 -0
  159. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -0
  160. package/dist/presets/winterjs/runtime/winterjs.mjs +73 -69
  161. package/dist/presets/zeabur/runtime/zeabur.d.mts +1 -1
  162. package/dist/presets/zeabur/runtime/zeabur.mjs +1 -1
  163. package/dist/runtime/app.d.mts +1 -0
  164. package/dist/runtime/app.mjs +1 -0
  165. package/dist/runtime/cache.d.mts +1 -0
  166. package/dist/runtime/cache.mjs +1 -0
  167. package/dist/runtime/config.d.mts +3 -0
  168. package/dist/runtime/config.mjs +4 -0
  169. package/dist/runtime/context.d.mts +1 -0
  170. package/dist/runtime/context.mjs +1 -0
  171. package/dist/runtime/database.d.mts +1 -0
  172. package/dist/runtime/database.mjs +1 -0
  173. package/dist/runtime/internal/app.d.mts +11 -1
  174. package/dist/runtime/internal/app.mjs +188 -140
  175. package/dist/runtime/internal/cache.d.mts +9 -5
  176. package/dist/runtime/internal/cache.mjs +248 -219
  177. package/dist/runtime/internal/context.d.mts +9 -9
  178. package/dist/runtime/internal/context.mjs +17 -10
  179. package/dist/runtime/internal/database.mjs +8 -10
  180. package/dist/runtime/internal/error/dev.d.mts +5 -4
  181. package/dist/runtime/internal/error/dev.mjs +106 -105
  182. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  183. package/dist/runtime/internal/error/hooks.mjs +9 -0
  184. package/dist/runtime/internal/error/prod.d.mts +5 -4
  185. package/dist/runtime/internal/error/prod.mjs +51 -59
  186. package/dist/runtime/internal/error/utils.d.mts +4 -4
  187. package/dist/runtime/internal/error/utils.mjs +1 -1
  188. package/dist/runtime/internal/meta.d.mts +1 -1
  189. package/dist/runtime/internal/meta.mjs +1 -1
  190. package/dist/runtime/internal/plugin.d.mts +2 -2
  191. package/dist/runtime/internal/plugin.mjs +1 -1
  192. package/dist/runtime/internal/route-rules.d.mts +8 -8
  193. package/dist/runtime/internal/route-rules.mjs +54 -52
  194. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  195. package/dist/runtime/internal/routes/dev-tasks.mjs +16 -18
  196. package/dist/runtime/internal/routes/openapi.d.mts +1 -0
  197. package/dist/runtime/internal/routes/openapi.mjs +81 -87
  198. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  199. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  200. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  201. package/dist/runtime/internal/routes/renderer-template.mjs +1 -1
  202. package/dist/runtime/internal/routes/scalar.d.mts +1 -0
  203. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  204. package/dist/runtime/internal/routes/swagger.d.mts +1 -0
  205. package/dist/runtime/internal/routes/swagger.mjs +9 -11
  206. package/dist/runtime/internal/runtime-config.d.mts +4 -4
  207. package/dist/runtime/internal/runtime-config.mjs +40 -35
  208. package/dist/runtime/internal/static.mjs +63 -74
  209. package/dist/runtime/internal/storage.mjs +2 -2
  210. package/dist/runtime/internal/task.d.mts +6 -6
  211. package/dist/runtime/internal/task.mjs +56 -60
  212. package/dist/runtime/internal/vite/dev-entry.mjs +11 -1
  213. package/dist/runtime/internal/vite/dev-worker.mjs +9 -57
  214. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  215. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +1 -1
  216. package/dist/runtime/meta.mjs +26 -0
  217. package/dist/runtime/nitro.d.mts +12 -0
  218. package/dist/runtime/nitro.mjs +32 -0
  219. package/dist/runtime/runtime-config.d.mts +1 -0
  220. package/dist/runtime/runtime-config.mjs +1 -0
  221. package/dist/runtime/storage.d.mts +1 -0
  222. package/dist/runtime/storage.mjs +1 -0
  223. package/dist/runtime/task.d.mts +1 -0
  224. package/dist/runtime/task.mjs +1 -0
  225. package/dist/runtime/vite-runtime.d.mts +8 -0
  226. package/dist/runtime/vite-runtime.mjs +9 -0
  227. package/dist/types/index.d.mts +2625 -2297
  228. package/dist/types/index.mjs +1 -1
  229. package/dist/vite.d.mts +49 -51
  230. package/dist/vite.mjs +44 -68
  231. package/lib/tsconfig.json +27 -0
  232. package/package.json +76 -88
  233. package/dist/_chunks/app.mjs +0 -19797
  234. package/dist/_chunks/build.mjs +0 -84
  235. package/dist/_chunks/build2.mjs +0 -318
  236. package/dist/_chunks/build3.mjs +0 -6452
  237. package/dist/_chunks/detect-acorn.mjs +0 -503
  238. package/dist/_chunks/index.mjs +0 -22242
  239. package/dist/_chunks/index2.mjs +0 -297
  240. package/dist/_chunks/index3.mjs +0 -1058
  241. package/dist/_chunks/index4.mjs +0 -1206
  242. package/dist/_chunks/info.mjs +0 -11157
  243. package/dist/_chunks/json5.mjs +0 -68
  244. package/dist/_chunks/jsonc.mjs +0 -51
  245. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  246. package/dist/_chunks/plugin.mjs +0 -960
  247. package/dist/_chunks/server.mjs +0 -254
  248. package/dist/_chunks/snapshot.mjs +0 -284
  249. package/dist/_chunks/toml.mjs +0 -259
  250. package/dist/_chunks/yaml.mjs +0 -86
  251. package/dist/cli/build.mjs +0 -54
  252. package/dist/cli/common.mjs +0 -13
  253. package/dist/cli/dev.mjs +0 -95
  254. package/dist/cli/index2.mjs +0 -17
  255. package/dist/cli/list.mjs +0 -34
  256. package/dist/cli/prepare.mjs +0 -24
  257. package/dist/cli/run.mjs +0 -60
  258. package/dist/index.d.mts +0 -52
  259. package/dist/index.mjs +0 -55
  260. package/dist/node_modules/cookie/dist/index.js +0 -239
  261. package/dist/node_modules/cookie/package.json +0 -42
  262. package/dist/node_modules/klona/dist/index.mjs +0 -81
  263. package/dist/node_modules/klona/full/index.mjs +0 -53
  264. package/dist/node_modules/klona/package.json +0 -74
  265. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  266. package/dist/node_modules/std-env/package.json +0 -46
  267. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  268. package/dist/presets.mjs +0 -2460
  269. package/dist/runtime/index.d.mts +0 -11
  270. package/dist/runtime/index.mjs +0 -17
  271. package/dist/runtime/internal/debug.d.mts +0 -2
  272. package/dist/runtime/internal/debug.mjs +0 -5
  273. package/dist/runtime/internal/empty.d.mts +0 -0
  274. package/dist/runtime/internal/index.d.mts +0 -3
  275. package/dist/runtime/internal/index.mjs +0 -3
  276. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  277. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  278. package/dist/runtime/internal/renderer.d.mts +0 -3
  279. package/dist/runtime/internal/renderer.mjs +0 -36
  280. package/dist/runtime/internal/shutdown.d.mts +0 -9
  281. package/dist/runtime/internal/shutdown.mjs +0 -34
  282. package/dist/runtime/internal/utils.d.mts +0 -1
  283. package/dist/runtime/internal/utils.mjs +0 -15
  284. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  285. package/dist/runtime/internal/vite/dev-worker.d.mts +0 -1
  286. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  287. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  288. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  289. package/lib/config.d.mts +0 -9
  290. package/lib/config.mjs +0 -5
  291. package/lib/meta.d.mts +0 -5
  292. package/lib/meta.mjs +0 -21
  293. package/lib/runtime-meta.mjs +0 -38
@@ -0,0 +1,772 @@
1
+ import { i as __toESM } from "../_chunks/Bqks5huO.mjs";
2
+ import { O as relative, k as resolve, w as join, x as dirname } from "../_libs/c12.mjs";
3
+ import { i as unplugin } from "../_libs/unimport.mjs";
4
+ import { t as glob } from "../_libs/tinyglobby.mjs";
5
+ import { t as src_default } from "../_libs/mime.mjs";
6
+ import { i as genSafeVariableName, t as genImport } from "../_libs/knitwork.mjs";
7
+ import { t as unwasm } from "../_libs/unwasm.mjs";
8
+ import { t as replace } from "../_libs/plugin-replace.mjs";
9
+ import { t as require_etag } from "../_libs/etag.mjs";
10
+ import { camelCase } from "scule";
11
+ import { promises } from "node:fs";
12
+ import { joinURL, withTrailingSlash } from "ufo";
13
+ import { readFile } from "node:fs/promises";
14
+ import { defu } from "defu";
15
+ import { pkgDir, runtimeDependencies, runtimeDir } from "nitro/meta";
16
+ import { hash } from "ohash";
17
+ import { defineEnv } from "unenv";
18
+ import { connectors } from "db0";
19
+ import { transform } from "oxc-transform";
20
+ import { builtinDrivers, normalizeKey } from "unstorage";
21
+ import { rollupNodeFileTrace } from "nf3";
22
+ import { RENDER_CONTEXT_KEYS, compileTemplateToString, hasTemplateSyntax } from "rendu";
23
+
24
+ //#region src/build/config.ts
25
+ function baseBuildConfig(nitro) {
26
+ const presetsDir$1 = resolve(runtimeDir, "../presets");
27
+ const extensions = [
28
+ ".ts",
29
+ ".mjs",
30
+ ".js",
31
+ ".json",
32
+ ".node",
33
+ ".tsx",
34
+ ".jsx"
35
+ ];
36
+ const isNodeless = nitro.options.node === false;
37
+ const importMetaInjections = {
38
+ dev: nitro.options.dev,
39
+ preset: nitro.options.preset,
40
+ prerender: nitro.options.preset === "nitro-prerender",
41
+ nitro: true,
42
+ server: true,
43
+ client: false,
44
+ baseURL: nitro.options.baseURL,
45
+ _asyncContext: nitro.options.experimental.asyncContext,
46
+ _tasks: nitro.options.experimental.tasks
47
+ };
48
+ const replacements = {
49
+ ...Object.fromEntries(Object.entries(importMetaInjections).map(([key, val]) => [`import.meta.${key}`, JSON.stringify(val)])),
50
+ ...nitro.options.replace
51
+ };
52
+ const noExternal = [
53
+ "#",
54
+ "~",
55
+ "@/",
56
+ "~~",
57
+ "@@/",
58
+ "virtual:",
59
+ "nitro",
60
+ pkgDir,
61
+ nitro.options.serverDir,
62
+ nitro.options.buildDir,
63
+ dirname(nitro.options.entry),
64
+ ...nitro.options.experimental.wasm ? [(id) => id?.endsWith(".wasm")] : [],
65
+ ...nitro.options.handlers.map((m) => m.handler).filter((i) => typeof i === "string"),
66
+ ...nitro.options.dev || nitro.options.preset === "nitro-prerender" ? [] : runtimeDependencies
67
+ ].filter(Boolean);
68
+ const { env } = defineEnv({
69
+ nodeCompat: isNodeless,
70
+ resolve: true,
71
+ presets: nitro.options.unenv,
72
+ overrides: { alias: nitro.options.alias }
73
+ });
74
+ return {
75
+ presetsDir: presetsDir$1,
76
+ extensions,
77
+ isNodeless,
78
+ replacements,
79
+ env,
80
+ aliases: resolveAliases({ ...env.alias }),
81
+ noExternal
82
+ };
83
+ }
84
+ function resolveAliases(_aliases) {
85
+ const aliases = Object.fromEntries(Object.entries(_aliases).sort(([a], [b]) => b.split("/").length - a.split("/").length || b.length - a.length));
86
+ for (const key in aliases) for (const alias in aliases) {
87
+ if (![
88
+ "~",
89
+ "@",
90
+ "#"
91
+ ].includes(alias[0])) continue;
92
+ if (alias === "@" && !aliases[key].startsWith("@/")) continue;
93
+ if (aliases[key].startsWith(alias)) aliases[key] = aliases[alias] + aliases[key].slice(alias.length);
94
+ }
95
+ return aliases;
96
+ }
97
+
98
+ //#endregion
99
+ //#region src/build/plugins/virtual.ts
100
+ const PREFIX = "\0virtual:";
101
+ function virtual(modules, cache = {}, opts) {
102
+ const _modules = /* @__PURE__ */ new Map();
103
+ for (const [id, mod] of Object.entries(modules)) {
104
+ cache[id] = mod;
105
+ _modules.set(id, mod);
106
+ _modules.set(resolve(id), mod);
107
+ }
108
+ return {
109
+ name: "virtual",
110
+ resolveId(id, importer) {
111
+ if (id in modules) return {
112
+ id: PREFIX + id,
113
+ ...opts
114
+ };
115
+ if (importer) {
116
+ const resolved = resolve(dirname(importer.startsWith(PREFIX) ? importer.slice(9) : importer), id);
117
+ if (_modules.has(resolved)) return PREFIX + resolved;
118
+ }
119
+ return null;
120
+ },
121
+ async load(id) {
122
+ if (!id.startsWith(PREFIX)) return null;
123
+ const idNoPrefix = id.slice(9);
124
+ if (!_modules.has(idNoPrefix)) return null;
125
+ let m = _modules.get(idNoPrefix);
126
+ if (typeof m === "function") m = await m();
127
+ if (!m) return null;
128
+ cache[id.replace(PREFIX, "")] = m;
129
+ return {
130
+ code: m,
131
+ map: null
132
+ };
133
+ }
134
+ };
135
+ }
136
+
137
+ //#endregion
138
+ //#region src/build/plugins/database.ts
139
+ function database(nitro) {
140
+ if (!nitro.options.experimental.database) return virtual({ "#nitro-internal-virtual/database": () => {
141
+ return `export const connectionConfigs = {};`;
142
+ } }, nitro.vfs);
143
+ const dbConfigs = nitro.options.dev && nitro.options.devDatabase || nitro.options.database;
144
+ const connectorsNames = [...new Set(Object.values(dbConfigs || {}).map((config) => config?.connector))].filter(Boolean);
145
+ for (const name of connectorsNames) if (!connectors[name]) throw new Error(`Database connector "${name}" is invalid.`);
146
+ return virtual({ "#nitro-internal-virtual/database": () => {
147
+ return `
148
+ ${connectorsNames.map((name) => `import ${camelCase(name)}Connector from "${connectors[name]}";`).join("\n")}
149
+
150
+ export const connectionConfigs = {
151
+ ${Object.entries(dbConfigs || {}).map(([name, { connector, options }]) => `${name}: {
152
+ connector: ${camelCase(connector)}Connector,
153
+ options: ${JSON.stringify(options)}
154
+ }`).join(",\n")}
155
+ };
156
+ `;
157
+ } }, nitro.vfs);
158
+ }
159
+
160
+ //#endregion
161
+ //#region src/build/plugins/routing.ts
162
+ const RuntimeRouteRules = [
163
+ "headers",
164
+ "redirect",
165
+ "proxy",
166
+ "cache"
167
+ ];
168
+ function routing(nitro) {
169
+ return virtual({
170
+ "#nitro-internal-virtual/routing": () => {
171
+ const allHandlers = uniqueBy([
172
+ ...Object.values(nitro.routing.routes.routes).flatMap((h) => h.data),
173
+ ...Object.values(nitro.routing.routedMiddleware.routes).map((h) => h.data),
174
+ ...nitro.routing.globalMiddleware
175
+ ], "_importHash");
176
+ return `
177
+ import * as __routeRules__ from "nitro/~internal/runtime/route-rules";
178
+ import * as srvxNode from "srvx/node"
179
+ import * as h3 from "h3";
180
+
181
+ export const findRouteRules = ${nitro.routing.routeRules.compileToString({
182
+ serialize: serializeRouteRule,
183
+ matchAll: true
184
+ })}
185
+
186
+ const multiHandler = (...handlers) => {
187
+ const final = handlers.pop()
188
+ const middleware = handlers.filter(Boolean).map(h => h3.toMiddleware(h));
189
+ return (ev) => h3.callMiddleware(ev, middleware, final);
190
+ }
191
+
192
+ ${allHandlers.filter((h) => !h.lazy).map((h) => `import ${h._importHash} from "${h.handler}";`).join("\n")}
193
+
194
+ ${allHandlers.filter((h) => h.lazy).map((h) => `const ${h._importHash} = h3.defineLazyEventHandler(() => import("${h.handler}")${h.format === "node" ? ".then(m => srvxNode.toFetchHandler(m.default))" : ""});`).join("\n")}
195
+
196
+ export const findRoute = ${nitro.routing.routes.compileToString({ serialize: serializeHandler })}
197
+
198
+ export const findRoutedMiddleware = ${nitro.routing.routedMiddleware.compileToString({
199
+ serialize: serializeHandler,
200
+ matchAll: true
201
+ })};
202
+
203
+ export const globalMiddleware = [
204
+ ${nitro.routing.globalMiddleware.map((h) => h.lazy ? h._importHash : `h3.toEventHandler(${h._importHash})`).join(",")}
205
+ ].filter(Boolean);
206
+ `;
207
+ },
208
+ "#nitro-internal-virtual/routing-meta": () => {
209
+ const routeHandlers = uniqueBy(Object.values(nitro.routing.routes.routes).flatMap((h) => h.data), "_importHash");
210
+ return `
211
+ ${routeHandlers.map((h) => `import ${h._importHash}Meta from "${h.handler}?meta";`).join("\n")}
212
+ export const handlersMeta = [
213
+ ${routeHandlers.map((h) => `{ route: ${JSON.stringify(h.route)}, method: ${JSON.stringify(h.method?.toLowerCase())}, meta: ${h._importHash}Meta }`).join(",\n")}
214
+ ];
215
+ `.trim();
216
+ }
217
+ }, nitro.vfs);
218
+ }
219
+ function uniqueBy(arr, key) {
220
+ return [...new Map(arr.map((item) => [item[key], item])).values()];
221
+ }
222
+ function serializeHandler(h) {
223
+ const meta = Array.isArray(h) ? h[0] : h;
224
+ return `{${[
225
+ `route:${JSON.stringify(meta.route)}`,
226
+ meta.method && `method:${JSON.stringify(meta.method)}`,
227
+ meta.meta && `meta:${JSON.stringify(meta.meta)}`,
228
+ `handler:${Array.isArray(h) ? `multiHandler(${h.map((handler) => serializeHandlerFn(handler)).join(",")})` : serializeHandlerFn(h)}`
229
+ ].filter(Boolean).join(",")}}`;
230
+ }
231
+ function serializeHandlerFn(h) {
232
+ let code = h._importHash;
233
+ if (!h.lazy) {
234
+ if (h.format === "node") code = `srvxNode.toFetchHandler(${code})`;
235
+ code = `h3.toEventHandler(${code})`;
236
+ }
237
+ return code;
238
+ }
239
+ function serializeRouteRule(h) {
240
+ return `[${Object.entries(h).filter(([name, options]) => options !== void 0 && name[0] !== "_").map(([name, options]) => {
241
+ return `{${[
242
+ `name:${JSON.stringify(name)}`,
243
+ `route:${JSON.stringify(h._route)}`,
244
+ h._method && `method:${JSON.stringify(h._method)}`,
245
+ RuntimeRouteRules.includes(name) && `handler:__routeRules__.${name}`,
246
+ `options:${JSON.stringify(options)}`
247
+ ].filter(Boolean).join(",")}}`;
248
+ }).join(",")}]`;
249
+ }
250
+
251
+ //#endregion
252
+ //#region src/build/plugins/route-meta.ts
253
+ const virtualPrefix = "\0nitro-handler-meta:";
254
+ function routeMeta(nitro) {
255
+ return {
256
+ name: "nitro:route-meta",
257
+ async resolveId(id, importer, resolveOpts) {
258
+ if (id.startsWith("\0")) return;
259
+ if (id.endsWith(`?meta`)) {
260
+ const resolved = await this.resolve(id.replace(`?meta`, ``), importer, resolveOpts);
261
+ if (!resolved) return;
262
+ return virtualPrefix + resolved.id;
263
+ }
264
+ },
265
+ load(id) {
266
+ if (id.startsWith(virtualPrefix)) return readFile(id.slice(20), { encoding: "utf8" });
267
+ },
268
+ async transform(code, id) {
269
+ if (!id.startsWith(virtualPrefix)) return;
270
+ let meta = null;
271
+ try {
272
+ const jsCode = transform(id, code).code;
273
+ const ast = this.parse(jsCode);
274
+ for (const node of ast.body) if (node.type === "ExpressionStatement" && node.expression.type === "CallExpression" && node.expression.callee.type === "Identifier" && node.expression.callee.name === "defineRouteMeta" && node.expression.arguments.length === 1) {
275
+ meta = astToObject(node.expression.arguments[0]);
276
+ break;
277
+ }
278
+ } catch (error) {
279
+ nitro.logger.warn(`[handlers-meta] Cannot extra route meta for: ${id}: ${error}`);
280
+ }
281
+ return {
282
+ code: `export default ${JSON.stringify(meta)};`,
283
+ map: null
284
+ };
285
+ }
286
+ };
287
+ }
288
+ function astToObject(node) {
289
+ switch (node.type) {
290
+ case "ObjectExpression": {
291
+ const obj = {};
292
+ for (const prop of node.properties) if (prop.type === "Property") {
293
+ const key = prop.key.name ?? prop.key.value;
294
+ obj[key] = astToObject(prop.value);
295
+ }
296
+ return obj;
297
+ }
298
+ case "ArrayExpression": return node.elements.map((el) => astToObject(el)).filter(Boolean);
299
+ case "Literal": return node.value;
300
+ }
301
+ }
302
+
303
+ //#endregion
304
+ //#region src/build/plugins/server-main.ts
305
+ function serverMain(nitro) {
306
+ return {
307
+ name: "nitro:server-main",
308
+ renderChunk(code, chunk) {
309
+ if (chunk.isEntry) return {
310
+ code: `globalThis.__nitro_main__ = import.meta.url; ${code}`,
311
+ map: null
312
+ };
313
+ }
314
+ };
315
+ }
316
+
317
+ //#endregion
318
+ //#region src/build/plugins/public-assets.ts
319
+ var import_etag$1 = /* @__PURE__ */ __toESM(require_etag(), 1);
320
+ const readAssetHandler = {
321
+ true: "node",
322
+ node: "node",
323
+ false: "null",
324
+ deno: "deno",
325
+ inline: "inline"
326
+ };
327
+ function publicAssets(nitro) {
328
+ return virtual({
329
+ "#nitro-internal-virtual/public-assets-data": async () => {
330
+ const assets = {};
331
+ const files = await glob("**", {
332
+ cwd: nitro.options.output.publicDir,
333
+ absolute: false,
334
+ dot: true
335
+ });
336
+ for (const id of files) {
337
+ let mimeType = src_default.getType(id.replace(/\.(gz|br)$/, "")) || "text/plain";
338
+ if (mimeType.startsWith("text")) mimeType += "; charset=utf-8";
339
+ const fullPath = resolve(nitro.options.output.publicDir, id);
340
+ const assetData = await promises.readFile(fullPath);
341
+ const etag = (0, import_etag$1.default)(assetData);
342
+ const stat$1 = await promises.stat(fullPath);
343
+ const assetId = joinURL(nitro.options.baseURL, decodeURIComponent(id));
344
+ let encoding;
345
+ if (id.endsWith(".gz")) encoding = "gzip";
346
+ else if (id.endsWith(".br")) encoding = "br";
347
+ assets[assetId] = {
348
+ type: nitro._prerenderMeta?.[assetId]?.contentType || mimeType,
349
+ encoding,
350
+ etag,
351
+ mtime: stat$1.mtime.toJSON(),
352
+ size: stat$1.size,
353
+ path: relative(nitro.options.output.serverDir, fullPath),
354
+ data: nitro.options.serveStatic === "inline" ? assetData.toString("base64") : void 0
355
+ };
356
+ }
357
+ return `export default ${JSON.stringify(assets, null, 2)};`;
358
+ },
359
+ "#nitro-internal-virtual/public-assets-node": () => {
360
+ return `
361
+ import { promises as fsp } from 'node:fs'
362
+ import { fileURLToPath } from 'node:url'
363
+ import { resolve, dirname } from 'node:path'
364
+ import assets from '#nitro-internal-virtual/public-assets-data'
365
+ export function readAsset (id) {
366
+ const serverDir = dirname(fileURLToPath(globalThis.__nitro_main__))
367
+ return fsp.readFile(resolve(serverDir, assets[id].path))
368
+ }`;
369
+ },
370
+ "#nitro-internal-virtual/public-assets-deno": () => {
371
+ return `
372
+ import assets from '#nitro-internal-virtual/public-assets-data'
373
+ export function readAsset (id) {
374
+ // https://deno.com/deploy/docs/serve-static-assets
375
+ const path = '.' + decodeURIComponent(new URL(\`../public\${id}\`, 'file://').pathname)
376
+ return Deno.readFile(path);
377
+ }`;
378
+ },
379
+ "#nitro-internal-virtual/public-assets-null": () => {
380
+ return `
381
+ export function readAsset (id) {
382
+ return Promise.resolve(null);
383
+ }`;
384
+ },
385
+ "#nitro-internal-virtual/public-assets-inline": () => {
386
+ return `
387
+ import assets from '#nitro-internal-virtual/public-assets-data'
388
+ export function readAsset (id) {
389
+ if (!assets[id]) { return undefined }
390
+ if (assets[id]._data) { return assets[id]._data }
391
+ if (!assets[id].data) { return assets[id].data }
392
+ assets[id]._data = Uint8Array.from(atob(assets[id].data), (c) => c.charCodeAt(0))
393
+ return assets[id]._data
394
+ }`;
395
+ },
396
+ "#nitro-internal-virtual/public-assets": () => {
397
+ const publicAssetBases = Object.fromEntries(nitro.options.publicAssets.filter((dir) => !dir.fallthrough && dir.baseURL !== "/").map((dir) => [withTrailingSlash(joinURL(nitro.options.baseURL, dir.baseURL || "/")), { maxAge: dir.maxAge }]));
398
+ return `
399
+ import assets from '#nitro-internal-virtual/public-assets-data'
400
+ export { readAsset } from "${`#nitro-internal-virtual/public-assets-${readAssetHandler[nitro.options.serveStatic] || "null"}`}"
401
+ export const publicAssetBases = ${JSON.stringify(publicAssetBases)}
402
+
403
+ export function isPublicAssetURL(id = '') {
404
+ if (assets[id]) {
405
+ return true
406
+ }
407
+ for (const base in publicAssetBases) {
408
+ if (id.startsWith(base)) { return true }
409
+ }
410
+ return false
411
+ }
412
+
413
+ export function getPublicAssetMeta(id = '') {
414
+ for (const base in publicAssetBases) {
415
+ if (id.startsWith(base)) { return publicAssetBases[base] }
416
+ }
417
+ return {}
418
+ }
419
+
420
+ export function getAsset (id) {
421
+ return assets[id]
422
+ }
423
+ `;
424
+ }
425
+ }, nitro.vfs);
426
+ }
427
+
428
+ //#endregion
429
+ //#region src/build/plugins/server-assets.ts
430
+ var import_etag = /* @__PURE__ */ __toESM(require_etag(), 1);
431
+ function serverAssets(nitro) {
432
+ if (nitro.options.dev || nitro.options.preset === "nitro-prerender") return virtual({ "#nitro-internal-virtual/server-assets": getAssetsDev(nitro) }, nitro.vfs);
433
+ return virtual({ "#nitro-internal-virtual/server-assets": async () => {
434
+ const assets = {};
435
+ for (const asset of nitro.options.serverAssets) {
436
+ const files = await glob(asset.pattern || "**/*", {
437
+ cwd: asset.dir,
438
+ absolute: false,
439
+ ignore: asset.ignore
440
+ });
441
+ for (const _id of files) {
442
+ const fsPath = resolve(asset.dir, _id);
443
+ const id = asset.baseName + "/" + _id;
444
+ assets[id] = {
445
+ fsPath,
446
+ meta: {}
447
+ };
448
+ let type = src_default.getType(id) || "text/plain";
449
+ if (type.startsWith("text")) type += "; charset=utf-8";
450
+ const etag = (0, import_etag.default)(await promises.readFile(fsPath));
451
+ const mtime = await promises.stat(fsPath).then((s) => s.mtime.toJSON());
452
+ assets[id].meta = {
453
+ type,
454
+ etag,
455
+ mtime
456
+ };
457
+ }
458
+ }
459
+ return getAssetProd(assets);
460
+ } }, nitro.vfs);
461
+ }
462
+ function getAssetsDev(nitro) {
463
+ return `
464
+ import { createStorage } from 'unstorage'
465
+ import fsDriver from 'unstorage/drivers/fs'
466
+
467
+ const serverAssets = ${JSON.stringify(nitro.options.serverAssets)}
468
+
469
+ export const assets = createStorage()
470
+
471
+ for (const asset of serverAssets) {
472
+ assets.mount(asset.baseName, fsDriver({ base: asset.dir, ignore: (asset?.ignore || []) }))
473
+ }`;
474
+ }
475
+ function getAssetProd(assets) {
476
+ return `
477
+ const _assets = {\n${Object.entries(assets).map(([id, asset]) => ` [${JSON.stringify(normalizeKey(id))}]: {\n import: () => import(${JSON.stringify("raw:" + asset.fsPath)}).then(r => r.default || r),\n meta: ${JSON.stringify(asset.meta)}\n }`).join(",\n")}\n}
478
+
479
+ const normalizeKey = ${normalizeKey.toString()}
480
+
481
+ export const assets = {
482
+ getKeys() {
483
+ return Promise.resolve(Object.keys(_assets))
484
+ },
485
+ hasItem (id) {
486
+ id = normalizeKey(id)
487
+ return Promise.resolve(id in _assets)
488
+ },
489
+ getItem (id) {
490
+ id = normalizeKey(id)
491
+ return Promise.resolve(_assets[id] ? _assets[id].import() : null)
492
+ },
493
+ getMeta (id) {
494
+ id = normalizeKey(id)
495
+ return Promise.resolve(_assets[id] ? _assets[id].meta : {})
496
+ }
497
+ }
498
+ `;
499
+ }
500
+
501
+ //#endregion
502
+ //#region src/build/plugins/storage.ts
503
+ function storage(nitro) {
504
+ const mounts = [];
505
+ const storageMounts = nitro.options.dev || nitro.options.preset === "nitro-prerender" ? {
506
+ ...nitro.options.storage,
507
+ ...nitro.options.devStorage
508
+ } : nitro.options.storage;
509
+ for (const path in storageMounts) {
510
+ const mount = storageMounts[path];
511
+ mounts.push({
512
+ path,
513
+ driver: builtinDrivers[mount.driver] || mount.driver,
514
+ opts: mount
515
+ });
516
+ }
517
+ const driverImports = [...new Set(mounts.map((m) => m.driver))];
518
+ return virtual({ "#nitro-internal-virtual/storage": `
519
+ import { createStorage } from 'unstorage'
520
+ import { assets } from '#nitro-internal-virtual/server-assets'
521
+
522
+ ${driverImports.map((i) => genImport(i, genSafeVariableName(i))).join("\n")}
523
+
524
+ export function initStorage() {
525
+ const storage = createStorage({})
526
+ storage.mount('/assets', assets)
527
+ ${mounts.map((m) => `storage.mount('${m.path}', ${genSafeVariableName(m.driver)}(${JSON.stringify(m.opts)}))`).join("\n")}
528
+ return storage
529
+ }
530
+ ` }, nitro.vfs);
531
+ }
532
+
533
+ //#endregion
534
+ //#region src/build/plugins/error-handler.ts
535
+ function errorHandler(nitro) {
536
+ return virtual({ "#nitro-internal-virtual/error-handler": () => {
537
+ const errorHandlers = Array.isArray(nitro.options.errorHandler) ? nitro.options.errorHandler : [nitro.options.errorHandler];
538
+ const builtinHandler = join(runtimeDir, `internal/error/${nitro.options.dev ? "dev" : "prod"}`);
539
+ return `
540
+ ${errorHandlers.map((h, i) => `import errorHandler$${i} from "${h}";`).join("\n")}
541
+
542
+ const errorHandlers = [${errorHandlers.map((_, i) => `errorHandler$${i}`).join(", ")}];
543
+
544
+ import { defaultHandler } from "${builtinHandler}";
545
+
546
+ export default async function(error, event) {
547
+ for (const handler of errorHandlers) {
548
+ try {
549
+ const response = await handler(error, event, { defaultHandler });
550
+ if (response) {
551
+ return response;
552
+ }
553
+ } catch(error) {
554
+ // Handler itself thrown, log and continue
555
+ console.error(error);
556
+ }
557
+ }
558
+ // H3 will handle fallback
559
+ }
560
+ `;
561
+ } }, nitro.vfs);
562
+ }
563
+
564
+ //#endregion
565
+ //#region src/build/plugins/renderer-template.ts
566
+ function rendererTemplate(nitro) {
567
+ return virtual({ "#nitro-internal-virtual/renderer-template": async () => {
568
+ const template = nitro.options.renderer?.template;
569
+ if (typeof template !== "string") return `
570
+ export const rendererTemplate = () => '<!-- renderer.template is not set -->';
571
+ export const rendererTemplateFile = undefined;
572
+ export const isStaticTemplate = true;`;
573
+ if (nitro.options.dev) return `
574
+ import { readFile } from 'node:fs/promises';
575
+ export const rendererTemplate = () => readFile(${JSON.stringify(template)}, "utf8");
576
+ export const rendererTemplateFile = ${JSON.stringify(template)};
577
+ export const isStaticTemplate = ${JSON.stringify(nitro.options.renderer?.static)};
578
+ `;
579
+ else {
580
+ const html = await readFile(template, "utf8");
581
+ if (nitro.options.renderer?.static ?? !hasTemplateSyntax(html)) return `
582
+ import { HTTPResponse } from "h3";
583
+ export const rendererTemplate = () => new HTTPResponse(${JSON.stringify(html)}, { headers: { "content-type": "text/html; charset=utf-8" } });
584
+ `;
585
+ else return `
586
+ import { renderToResponse } from 'rendu'
587
+ import { serverFetch } from 'nitro/app'
588
+ const template = ${compileTemplateToString(html, { contextKeys: [...RENDER_CONTEXT_KEYS] })};
589
+ export const rendererTemplate = (request) => renderToResponse(template, { request, context: { serverFetch } })
590
+ `;
591
+ }
592
+ } }, nitro.vfs);
593
+ }
594
+
595
+ //#endregion
596
+ //#region src/build/plugins/feature-flags.ts
597
+ function featureFlags(nitro) {
598
+ return virtual({ "#nitro-internal-virtual/feature-flags": () => {
599
+ const featureFlags$1 = {
600
+ hasRoutes: nitro.routing.routes.hasRoutes(),
601
+ hasRouteRules: nitro.routing.routeRules.hasRoutes(),
602
+ hasRoutedMiddleware: nitro.routing.routedMiddleware.hasRoutes(),
603
+ hasGlobalMiddleware: nitro.routing.globalMiddleware.length > 0,
604
+ hasPlugins: nitro.options.plugins.length > 0,
605
+ hasHooks: nitro.options.features?.runtimeHooks ?? nitro.options.plugins.length > 0,
606
+ hasWebSocket: nitro.options.features?.websocket ?? nitro.options.experimental.websocket ?? false
607
+ };
608
+ return Object.entries(featureFlags$1).map(([key, value]) => `export const ${key} = ${Boolean(value)};`).join("\n");
609
+ } }, nitro.vfs);
610
+ }
611
+
612
+ //#endregion
613
+ //#region src/build/plugins/resolve.ts
614
+ const subpathMap = {
615
+ "nitro/h3": "h3",
616
+ "nitro/deps/h3": "h3",
617
+ "nitro/deps/ofetch": "ofetch"
618
+ };
619
+ function nitroResolveIds() {
620
+ return {
621
+ name: "nitro:resolve-ids",
622
+ resolveId: {
623
+ order: "pre",
624
+ handler(id, importer, rOpts) {
625
+ if (importer && importer.startsWith("\0virtual:#nitro-internal-virtual")) return this.resolve(id, runtimeDir, { skipSelf: true });
626
+ const mappedId = subpathMap[id];
627
+ if (mappedId) return this.resolve(mappedId, runtimeDir, { skipSelf: true });
628
+ }
629
+ }
630
+ };
631
+ }
632
+
633
+ //#endregion
634
+ //#region src/build/plugins/sourcemap-min.ts
635
+ function sourcemapMinify() {
636
+ return {
637
+ name: "nitro:sourcemap-minify",
638
+ generateBundle(_options, bundle) {
639
+ for (const [key, asset] of Object.entries(bundle)) {
640
+ if (!key.endsWith(".map") || !("source" in asset) || typeof asset.source !== "string") continue;
641
+ const sourcemap = JSON.parse(asset.source);
642
+ delete sourcemap.sourcesContent;
643
+ delete sourcemap.x_google_ignoreList;
644
+ if ((sourcemap.sources || []).some((s) => s.includes("node_modules"))) sourcemap.mappings = "";
645
+ asset.source = JSON.stringify(sourcemap);
646
+ }
647
+ }
648
+ };
649
+ }
650
+
651
+ //#endregion
652
+ //#region src/build/plugins/raw.ts
653
+ const HELPER_ID = "virtual:raw-helpers";
654
+ const RESOLVED_RAW_PREFIX = "virtual:raw:";
655
+ function raw() {
656
+ return {
657
+ name: "raw",
658
+ resolveId: {
659
+ order: "pre",
660
+ async handler(id, importer, resolveOpts) {
661
+ if (id === HELPER_ID) return id;
662
+ if (id.startsWith("raw:")) return { id: RESOLVED_RAW_PREFIX + (await this.resolve(id.slice(4), importer, resolveOpts))?.id };
663
+ }
664
+ },
665
+ load: {
666
+ order: "pre",
667
+ handler(id) {
668
+ if (id === HELPER_ID) return getHelpers();
669
+ if (id.startsWith(RESOLVED_RAW_PREFIX)) return promises.readFile(id.slice(12), isBinary(id) ? "binary" : "utf8");
670
+ }
671
+ },
672
+ transform: {
673
+ order: "pre",
674
+ handler(code, id) {
675
+ if (!id.startsWith(RESOLVED_RAW_PREFIX)) return;
676
+ if (isBinary(id)) return {
677
+ code: `import {base64ToUint8Array } from "${HELPER_ID}" \n export default base64ToUint8Array("${Buffer.from(code, "binary").toString("base64")}")`,
678
+ map: null
679
+ };
680
+ return {
681
+ code: `export default ${JSON.stringify(code)}`,
682
+ map: null,
683
+ moduleType: "js"
684
+ };
685
+ }
686
+ }
687
+ };
688
+ }
689
+ function isBinary(id) {
690
+ const idMime = src_default.getType(id) || "";
691
+ if (idMime.startsWith("text/")) return false;
692
+ if (/application\/(json|sql|xml|yaml)/.test(idMime)) return false;
693
+ return true;
694
+ }
695
+ function getHelpers() {
696
+ return String.raw`
697
+ export function base64ToUint8Array(str) {
698
+ const data = atob(str);
699
+ const size = data.length;
700
+ const bytes = new Uint8Array(size);
701
+ for (let i = 0; i < size; i++) {
702
+ bytes[i] = data.charCodeAt(i);
703
+ }
704
+ return bytes;
705
+ }
706
+ `;
707
+ }
708
+
709
+ //#endregion
710
+ //#region src/build/plugins/runtime-config.ts
711
+ function runtimeConfig(nitro) {
712
+ return virtual({ "#nitro-internal-virtual/runtime-config": () => {
713
+ return `export const runtimeConfig = ${JSON.stringify(nitro.options.runtimeConfig || {})};`;
714
+ } }, nitro.vfs);
715
+ }
716
+
717
+ //#endregion
718
+ //#region src/build/plugins.ts
719
+ function baseBuildPlugins(nitro, base) {
720
+ const plugins = [];
721
+ if (nitro.options.imports) plugins.push(unplugin.rollup(nitro.options.imports));
722
+ if (nitro.options.experimental.wasm) plugins.push(unwasm(nitro.options.wasm || {}));
723
+ plugins.push(serverMain(nitro));
724
+ const nitroPlugins = [...new Set(nitro.options.plugins)];
725
+ plugins.push(virtual({ "#nitro-internal-virtual/plugins": `
726
+ ${nitroPlugins.map((plugin) => `import _${hash(plugin).replace(/-/g, "")} from '${plugin}';`).join("\n")}
727
+
728
+ export const plugins = [
729
+ ${nitroPlugins.map((plugin) => `_${hash(plugin).replace(/-/g, "")}`).join(",\n")}
730
+ ]
731
+ ` }, nitro.vfs));
732
+ plugins.push(featureFlags(nitro));
733
+ plugins.push(nitroResolveIds());
734
+ plugins.push(serverAssets(nitro));
735
+ plugins.push(publicAssets(nitro));
736
+ plugins.push(storage(nitro));
737
+ plugins.push(database(nitro));
738
+ plugins.push(routing(nitro));
739
+ plugins.push(raw());
740
+ if (nitro.options.experimental.openAPI) plugins.push(routeMeta(nitro));
741
+ plugins.push(runtimeConfig(nitro));
742
+ plugins.push(errorHandler(nitro));
743
+ plugins.push(virtual({ "#nitro-internal-pollyfills": base.env.polyfill.map((p) => `import '${p}';`).join("\n") || `/* No polyfills */` }, nitro.vfs, { moduleSideEffects: true }));
744
+ plugins.push(virtual(nitro.options.virtual, nitro.vfs));
745
+ if (nitro.options.renderer?.template) plugins.push(rendererTemplate(nitro));
746
+ plugins.push(replace({
747
+ preventAssignment: true,
748
+ values: base.replacements
749
+ }));
750
+ if (!nitro.options.noExternals) plugins.push(rollupNodeFileTrace(defu(nitro.options.externals, {
751
+ outDir: nitro.options.output.serverDir,
752
+ moduleDirectories: nitro.options.nodeModulesDirs,
753
+ external: nitro.options.nodeModulesDirs,
754
+ inline: [...base.noExternal],
755
+ traceOptions: {
756
+ base: "/",
757
+ processCwd: nitro.options.rootDir,
758
+ exportsOnly: true
759
+ },
760
+ traceAlias: {
761
+ "h3-nightly": "h3",
762
+ ...nitro.options.externals?.traceAlias
763
+ },
764
+ exportConditions: nitro.options.exportConditions,
765
+ writePackageJson: true
766
+ })));
767
+ if (nitro.options.sourcemap && !nitro.options.dev && nitro.options.experimental.sourcemapMinify !== false) plugins.push(sourcemapMinify());
768
+ return plugins;
769
+ }
770
+
771
+ //#endregion
772
+ export { baseBuildConfig as n, baseBuildPlugins as t };