nitro 3.0.1-alpha.0 → 3.0.1-alpha.2

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 (316) hide show
  1. package/README.md +2 -0
  2. package/dist/_build/common.mjs +24940 -0
  3. package/dist/_build/rolldown.mjs +172 -0
  4. package/dist/_build/rollup.mjs +201 -0
  5. package/dist/_build/vite.build.mjs +16 -0
  6. package/dist/_chunks/dev.mjs +707 -0
  7. package/dist/_chunks/nitro.mjs +1191 -0
  8. package/dist/_chunks/nitro2.mjs +101 -0
  9. package/dist/_chunks/utils.mjs +254 -0
  10. package/dist/_common.mjs +45 -0
  11. package/dist/_dev.d.mts +12 -0
  12. package/dist/_libs/c12+giget+readdirp+chokidar.d.mts +214 -0
  13. package/dist/_libs/citty.mjs +363 -0
  14. package/dist/_libs/commondir+is-reference.mjs +1300 -0
  15. package/dist/_libs/compatx.d.mts +47 -0
  16. package/dist/_libs/compatx.mjs +46 -0
  17. package/dist/_libs/confbox.mjs +2509 -0
  18. package/dist/_libs/esbuild.d.mts +20 -0
  19. package/dist/_libs/escape-string-regexp.mjs +8 -0
  20. package/dist/_libs/estree-walker.mjs +187 -0
  21. package/dist/_libs/hasown+resolve+deepmerge.mjs +1972 -0
  22. package/dist/_libs/httpxy.d.mts +79 -0
  23. package/dist/_libs/httpxy.mjs +415 -0
  24. package/dist/_libs/klona.mjs +38 -0
  25. package/dist/_libs/magic-string.d.mts +220 -0
  26. package/dist/_libs/mlly.d.mts +57 -0
  27. package/dist/_libs/nypm+giget+tinyexec.mjs +3603 -0
  28. package/dist/_libs/pkg-types.d.mts +23 -0
  29. package/dist/_libs/plugin-alias.mjs +66 -0
  30. package/dist/_libs/plugin-inject.mjs +135 -0
  31. package/dist/_libs/plugin-json.mjs +36 -0
  32. package/dist/_libs/pluginutils+plugin-commonjs.d.mts +241 -0
  33. package/dist/_libs/pluginutils.mjs +652 -0
  34. package/dist/_libs/rc9+c12+dotenv.mjs +972 -0
  35. package/dist/_libs/readdirp+chokidar.mjs +1611 -0
  36. package/dist/_libs/remapping.mjs +117 -0
  37. package/dist/_libs/resolve-uri+gen-mapping.mjs +448 -0
  38. package/dist/_libs/rou3.d.mts +43 -0
  39. package/dist/_libs/rou3.mjs +322 -0
  40. package/dist/_libs/std-env.d.mts +4 -0
  41. package/dist/_libs/tsconfck.mjs +832 -0
  42. package/dist/_libs/ultrahtml.mjs +138 -0
  43. package/dist/_libs/unimport+unplugin.mjs +1785 -0
  44. package/dist/_libs/unplugin+unimport.d.mts +426 -0
  45. package/dist/_libs/unwasm.d.mts +29 -0
  46. package/dist/_presets.mjs +1802 -0
  47. package/dist/builder.d.mts +63 -0
  48. package/dist/builder.mjs +9 -0
  49. package/dist/cli/_chunks/build.mjs +48 -0
  50. package/dist/cli/_chunks/common.mjs +15 -0
  51. package/dist/cli/_chunks/dev.mjs +62 -0
  52. package/dist/cli/_chunks/list.mjs +27 -0
  53. package/dist/cli/_chunks/prepare.mjs +19 -0
  54. package/dist/cli/_chunks/run.mjs +55 -0
  55. package/dist/cli/_chunks/task.mjs +16 -0
  56. package/dist/cli/index.d.mts +1 -1
  57. package/dist/cli/index.mjs +20 -476
  58. package/dist/node_modules/@poppinss/colors/build/index.js +130 -160
  59. package/dist/node_modules/@poppinss/colors/package.json +20 -18
  60. package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +1 -1
  61. package/dist/node_modules/@poppinss/dumper/package.json +1 -1
  62. package/dist/node_modules/@poppinss/exception/build/index.js +36 -55
  63. package/dist/node_modules/@poppinss/exception/package.json +19 -16
  64. package/dist/node_modules/@sindresorhus/is/distribution/index.js +47 -6
  65. package/dist/node_modules/@sindresorhus/is/package.json +1 -1
  66. package/dist/node_modules/@speed-highlight/core/dist/index.js +2 -2
  67. package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -2
  68. package/dist/node_modules/@speed-highlight/core/package.json +8 -4
  69. package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
  70. package/dist/node_modules/cookie-es/package.json +37 -0
  71. package/dist/node_modules/hookable/dist/index.mjs +244 -268
  72. package/dist/node_modules/hookable/package.json +29 -26
  73. package/dist/node_modules/rendu/dist/index.mjs +380 -0
  74. package/dist/node_modules/rendu/package.json +47 -0
  75. package/dist/node_modules/ufo/dist/index.mjs +16 -9
  76. package/dist/node_modules/ufo/package.json +15 -14
  77. package/dist/node_modules/unctx/package.json +16 -16
  78. package/dist/node_modules/youch/build/{chunk-4XB2BYKC.js → chunk-7QV3D5YX.js} +2 -4
  79. package/dist/node_modules/youch/build/{chunk-PUHGL6HA.js → chunk-AUGPHE32.js} +2 -4
  80. package/dist/node_modules/youch/build/{chunk-VE4LENUR.js → chunk-CM7DWJNZ.js} +4 -5
  81. package/dist/node_modules/youch/build/{chunk-JAN2TFI2.js → chunk-EJH674NB.js} +6 -5
  82. package/dist/node_modules/youch/build/{chunk-EUJBVOYB.js → chunk-OIJ3WD7L.js} +2 -4
  83. package/dist/node_modules/youch/build/{chunk-HFSXRSKS.js → chunk-P36L72PL.js} +5 -3
  84. package/dist/node_modules/youch/build/{chunk-4YEN7HVQ.js → chunk-PE3GG3TN.js} +5 -1
  85. package/dist/node_modules/youch/build/{chunk-PINJDICN.js → chunk-X53OIOJH.js} +2 -4
  86. package/dist/node_modules/youch/build/index.js +22 -15
  87. package/dist/node_modules/youch/build/public/error_info/style.css +1 -0
  88. package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
  89. package/dist/node_modules/youch/build/public/error_stack/script.js +20 -22
  90. package/dist/node_modules/youch/build/public/error_stack/style.css +2 -3
  91. package/dist/node_modules/youch/build/public/header/script.js +0 -2
  92. package/dist/node_modules/youch/build/public/layout/script.js +0 -8
  93. package/dist/node_modules/youch/build/public/layout/style.css +4 -0
  94. package/dist/node_modules/youch/package.json +16 -17
  95. package/dist/presets/_nitro/runtime/nitro-dev.d.mts +2 -1
  96. package/dist/presets/_nitro/runtime/nitro-dev.mjs +47 -42
  97. package/dist/presets/_nitro/runtime/nitro-prerenderer.d.mts +3 -3
  98. package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +11 -15
  99. package/dist/presets/_nitro/runtime/service-worker.d.mts +2 -1
  100. package/dist/presets/_nitro/runtime/service-worker.mjs +17 -14
  101. package/dist/presets/aws-amplify/runtime/aws-amplify.d.mts +2 -1
  102. package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +8 -7
  103. package/dist/presets/aws-lambda/runtime/_utils.d.mts +3 -13
  104. package/dist/presets/aws-lambda/runtime/_utils.mjs +95 -81
  105. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.d.mts +2 -3
  106. package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +25 -29
  107. package/dist/presets/aws-lambda/runtime/aws-lambda.d.mts +1 -1
  108. package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +9 -9
  109. package/dist/presets/azure/runtime/_utils.mjs +43 -43
  110. package/dist/presets/azure/runtime/azure-swa.d.mts +3 -3
  111. package/dist/presets/azure/runtime/azure-swa.mjs +25 -23
  112. package/dist/presets/bun/runtime/bun.d.mts +3 -1
  113. package/dist/presets/bun/runtime/bun.mjs +34 -22
  114. package/dist/presets/cloudflare/runtime/_module-handler.d.mts +12 -9
  115. package/dist/presets/cloudflare/runtime/_module-handler.mjs +84 -90
  116. package/dist/presets/cloudflare/runtime/cloudflare-durable.d.mts +7 -15
  117. package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +62 -64
  118. package/dist/presets/cloudflare/runtime/cloudflare-module.d.mts +2 -8
  119. package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +15 -18
  120. package/dist/presets/cloudflare/runtime/cloudflare-pages.d.mts +13 -13
  121. package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +35 -43
  122. package/dist/presets/cloudflare/runtime/plugin.dev.d.mts +2 -2
  123. package/dist/presets/cloudflare/runtime/plugin.dev.mjs +89 -82
  124. package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
  125. package/dist/presets/deno/runtime/deno-deploy.d.mts +5 -1
  126. package/dist/presets/deno/runtime/deno-deploy.mjs +15 -13
  127. package/dist/presets/deno/runtime/deno-server.d.mts +1 -4
  128. package/dist/presets/deno/runtime/deno-server.mjs +32 -53
  129. package/dist/presets/netlify/runtime/netlify-edge.d.mts +2 -2
  130. package/dist/presets/netlify/runtime/netlify-edge.mjs +18 -14
  131. package/dist/presets/netlify/runtime/netlify.d.mts +3 -2
  132. package/dist/presets/netlify/runtime/netlify.mjs +15 -19
  133. package/dist/presets/node/runtime/node-cluster.d.mts +3 -1
  134. package/dist/presets/node/runtime/node-cluster.mjs +49 -54
  135. package/dist/presets/node/runtime/node-middleware.d.mts +3 -4
  136. package/dist/presets/node/runtime/node-middleware.mjs +9 -9
  137. package/dist/presets/node/runtime/node-server.d.mts +1 -1
  138. package/dist/presets/node/runtime/node-server.mjs +36 -34
  139. package/dist/presets/standard/runtime/server.d.mts +2 -4
  140. package/dist/presets/standard/runtime/server.mjs +3 -5
  141. package/dist/presets/stormkit/runtime/stormkit.d.mts +14 -14
  142. package/dist/presets/stormkit/runtime/stormkit.mjs +22 -22
  143. package/dist/presets/vercel/runtime/isr.d.mts +2 -0
  144. package/dist/presets/vercel/runtime/isr.mjs +19 -0
  145. package/dist/presets/vercel/runtime/vercel.node.d.mts +3 -0
  146. package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
  147. package/dist/presets/vercel/runtime/vercel.web.d.mts +8 -0
  148. package/dist/presets/vercel/runtime/vercel.web.mjs +25 -0
  149. package/dist/presets/winterjs/runtime/winterjs.d.mts +2 -1
  150. package/dist/presets/winterjs/runtime/winterjs.mjs +74 -70
  151. package/dist/presets/zeabur/runtime/zeabur.d.mts +2 -2
  152. package/dist/presets/zeabur/runtime/zeabur.mjs +2 -2
  153. package/dist/runtime/app.d.mts +1 -0
  154. package/dist/runtime/app.mjs +1 -0
  155. package/dist/runtime/cache.d.mts +1 -0
  156. package/dist/runtime/cache.mjs +1 -0
  157. package/dist/runtime/config.d.mts +3 -0
  158. package/dist/runtime/config.mjs +4 -0
  159. package/dist/runtime/context.d.mts +1 -0
  160. package/dist/runtime/context.mjs +1 -0
  161. package/dist/runtime/database.d.mts +1 -0
  162. package/dist/runtime/database.mjs +1 -0
  163. package/dist/runtime/internal/app.d.mts +15 -1
  164. package/dist/runtime/internal/app.mjs +199 -144
  165. package/dist/runtime/internal/cache.d.mts +9 -5
  166. package/dist/runtime/internal/cache.mjs +248 -219
  167. package/dist/runtime/internal/context.d.mts +9 -9
  168. package/dist/runtime/internal/context.mjs +17 -10
  169. package/dist/runtime/internal/database.mjs +9 -11
  170. package/dist/runtime/internal/error/dev.d.mts +4 -4
  171. package/dist/runtime/internal/error/dev.mjs +106 -105
  172. package/dist/runtime/internal/error/hooks.d.mts +1 -0
  173. package/dist/runtime/internal/error/hooks.mjs +9 -0
  174. package/dist/runtime/internal/error/prod.d.mts +5 -4
  175. package/dist/runtime/internal/error/prod.mjs +51 -59
  176. package/dist/runtime/internal/error/utils.d.mts +4 -4
  177. package/dist/runtime/internal/error/utils.mjs +1 -1
  178. package/dist/runtime/internal/meta.d.mts +1 -1
  179. package/dist/runtime/internal/meta.mjs +1 -1
  180. package/dist/runtime/internal/plugin.d.mts +2 -2
  181. package/dist/runtime/internal/plugin.mjs +1 -1
  182. package/dist/runtime/internal/route-rules.d.mts +4 -8
  183. package/dist/runtime/internal/route-rules.mjs +54 -52
  184. package/dist/runtime/internal/routes/dev-tasks.d.mts +1 -2
  185. package/dist/runtime/internal/routes/dev-tasks.mjs +17 -19
  186. package/dist/runtime/internal/routes/openapi.mjs +82 -88
  187. package/dist/runtime/internal/routes/renderer-template.d.mts +1 -1
  188. package/dist/runtime/internal/routes/renderer-template.dev.d.mts +1 -2
  189. package/dist/runtime/internal/routes/renderer-template.dev.mjs +15 -17
  190. package/dist/runtime/internal/routes/renderer-template.mjs +2 -2
  191. package/dist/runtime/internal/routes/scalar.mjs +22 -23
  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 +44 -39
  195. package/dist/runtime/internal/static.mjs +63 -74
  196. package/dist/runtime/internal/storage.mjs +3 -3
  197. package/dist/runtime/internal/task.d.mts +6 -6
  198. package/dist/runtime/internal/task.mjs +57 -61
  199. package/dist/runtime/internal/vite/dev-entry.mjs +11 -2
  200. package/dist/runtime/internal/vite/{dev-worker.mjs → node-runner.mjs} +54 -57
  201. package/dist/runtime/internal/vite/ssr-renderer.mjs +3 -1
  202. package/{lib/runtime-meta.d.mts → dist/runtime/meta.d.mts} +2 -2
  203. package/dist/runtime/meta.mjs +26 -0
  204. package/dist/runtime/nitro.d.mts +9 -0
  205. package/dist/runtime/nitro.mjs +32 -0
  206. package/dist/runtime/runtime-config.d.mts +1 -0
  207. package/dist/runtime/runtime-config.mjs +1 -0
  208. package/dist/runtime/storage.d.mts +1 -0
  209. package/dist/runtime/storage.mjs +1 -0
  210. package/dist/runtime/task.d.mts +1 -0
  211. package/dist/runtime/task.mjs +1 -0
  212. package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
  213. package/dist/runtime/virtual/database.d.mts +8 -0
  214. package/dist/runtime/virtual/database.mjs +2 -0
  215. package/dist/runtime/virtual/error-handler.d.mts +6 -0
  216. package/dist/runtime/virtual/error-handler.mjs +9 -0
  217. package/dist/runtime/virtual/feature-flags.d.mts +7 -0
  218. package/dist/runtime/virtual/feature-flags.mjs +7 -0
  219. package/dist/runtime/virtual/plugins.d.mts +3 -0
  220. package/dist/runtime/virtual/plugins.mjs +2 -0
  221. package/dist/runtime/virtual/polyfills.d.mts +3 -0
  222. package/dist/runtime/virtual/polyfills.mjs +2 -0
  223. package/dist/runtime/virtual/public-assets.d.mts +9 -0
  224. package/dist/runtime/virtual/public-assets.mjs +8 -0
  225. package/dist/runtime/virtual/renderer-template.d.mts +4 -0
  226. package/dist/runtime/virtual/renderer-template.mjs +7 -0
  227. package/dist/runtime/virtual/routing-meta.d.mts +7 -0
  228. package/dist/runtime/virtual/routing-meta.mjs +2 -0
  229. package/dist/runtime/virtual/routing.d.mts +8 -0
  230. package/dist/runtime/virtual/routing.mjs +11 -0
  231. package/dist/runtime/virtual/runtime-config.d.mts +3 -0
  232. package/dist/runtime/virtual/runtime-config.mjs +5 -0
  233. package/dist/runtime/virtual/server-assets.d.mts +6 -0
  234. package/dist/runtime/virtual/server-assets.mjs +12 -0
  235. package/dist/runtime/virtual/storage.d.mts +3 -0
  236. package/dist/runtime/virtual/storage.mjs +5 -0
  237. package/dist/runtime/virtual/tasks.d.mts +10 -0
  238. package/dist/runtime/virtual/tasks.mjs +3 -0
  239. package/dist/runtime/vite.d.mts +8 -0
  240. package/dist/runtime/vite.mjs +9 -0
  241. package/dist/types/index.d.mts +2561 -2312
  242. package/dist/types/index.mjs +10 -0
  243. package/dist/vite.d.mts +44 -51
  244. package/dist/vite.mjs +737 -68
  245. package/lib/tsconfig.json +27 -0
  246. package/lib/vite.types.d.mts +26 -0
  247. package/lib/vite.types.mjs +2 -0
  248. package/package.json +118 -101
  249. package/dist/_chunks/app.mjs +0 -19797
  250. package/dist/_chunks/build.mjs +0 -84
  251. package/dist/_chunks/build2.mjs +0 -318
  252. package/dist/_chunks/build3.mjs +0 -6452
  253. package/dist/_chunks/detect-acorn.mjs +0 -503
  254. package/dist/_chunks/index.mjs +0 -22242
  255. package/dist/_chunks/index2.mjs +0 -297
  256. package/dist/_chunks/index3.mjs +0 -1058
  257. package/dist/_chunks/index4.mjs +0 -1206
  258. package/dist/_chunks/info.mjs +0 -11157
  259. package/dist/_chunks/json5.mjs +0 -68
  260. package/dist/_chunks/jsonc.mjs +0 -51
  261. package/dist/_chunks/pathe.M-eThtNZ.mjs +0 -204
  262. package/dist/_chunks/plugin.mjs +0 -960
  263. package/dist/_chunks/server.mjs +0 -254
  264. package/dist/_chunks/snapshot.mjs +0 -284
  265. package/dist/_chunks/toml.mjs +0 -259
  266. package/dist/_chunks/yaml.mjs +0 -86
  267. package/dist/cli/build.mjs +0 -54
  268. package/dist/cli/common.mjs +0 -13
  269. package/dist/cli/dev.mjs +0 -95
  270. package/dist/cli/index2.mjs +0 -17
  271. package/dist/cli/list.mjs +0 -34
  272. package/dist/cli/prepare.mjs +0 -24
  273. package/dist/cli/run.mjs +0 -60
  274. package/dist/index.d.mts +0 -52
  275. package/dist/index.mjs +0 -55
  276. package/dist/node_modules/cookie/dist/index.js +0 -239
  277. package/dist/node_modules/cookie/package.json +0 -42
  278. package/dist/node_modules/kleur/index.js +0 -110
  279. package/dist/node_modules/klona/dist/index.mjs +0 -81
  280. package/dist/node_modules/klona/full/index.mjs +0 -53
  281. package/dist/node_modules/klona/package.json +0 -74
  282. package/dist/node_modules/std-env/dist/index.mjs +0 -1
  283. package/dist/node_modules/std-env/package.json +0 -46
  284. package/dist/node_modules/youch/build/chunk-OSUFJZHZ.js +0 -6
  285. package/dist/presets/vercel/runtime/vercel.d.mts +0 -8
  286. package/dist/presets/vercel/runtime/vercel.mjs +0 -17
  287. package/dist/presets.mjs +0 -2460
  288. package/dist/runtime/index.d.mts +0 -11
  289. package/dist/runtime/index.mjs +0 -17
  290. package/dist/runtime/internal/debug.d.mts +0 -2
  291. package/dist/runtime/internal/debug.mjs +0 -5
  292. package/dist/runtime/internal/empty.d.mts +0 -0
  293. package/dist/runtime/internal/index.d.mts +0 -3
  294. package/dist/runtime/internal/index.mjs +0 -3
  295. package/dist/runtime/internal/lib/http-graceful-shutdown.d.mts +0 -16
  296. package/dist/runtime/internal/lib/http-graceful-shutdown.mjs +0 -213
  297. package/dist/runtime/internal/renderer.d.mts +0 -3
  298. package/dist/runtime/internal/renderer.mjs +0 -36
  299. package/dist/runtime/internal/shutdown.d.mts +0 -9
  300. package/dist/runtime/internal/shutdown.mjs +0 -34
  301. package/dist/runtime/internal/utils.d.mts +0 -1
  302. package/dist/runtime/internal/utils.mjs +0 -15
  303. package/dist/runtime/internal/vite/dev-entry.d.mts +0 -1
  304. package/dist/runtime/internal/vite/prod-setup.d.mts +0 -4
  305. package/dist/runtime/internal/vite/prod-setup.mjs +0 -55
  306. package/dist/runtime/internal/vite/ssr-renderer.d.mts +0 -4
  307. package/lib/config.d.mts +0 -9
  308. package/lib/config.mjs +0 -5
  309. package/lib/deps/ofetch.mjs +0 -1
  310. package/lib/deps/ofetch.mts +0 -1
  311. package/lib/meta.d.mts +0 -5
  312. package/lib/meta.mjs +0 -21
  313. package/lib/runtime-meta.mjs +0 -38
  314. /package/dist/runtime/{internal/vite/dev-worker.d.mts → virtual/_runtime_warn.d.mts} +0 -0
  315. /package/lib/{deps/h3.d.mts → h3.d.mts} +0 -0
  316. /package/lib/{deps/h3.mjs → h3.mjs} +0 -0
@@ -1,89 +1,96 @@
1
- const _proxy = _getPlatformProxy().catch((error) => {
2
- console.error("Failed to initialize wrangler bindings proxy", error);
3
- return _createStubProxy();
4
- }).then((proxy) => {
5
- globalThis.__env__ = proxy.env;
6
- return proxy;
7
- });
8
- globalThis.__env__ = _proxy.then((proxy) => proxy.env);
9
- export default (function(nitroApp) {
10
- nitroApp.hooks.hook("request", async (event) => {
11
- event.req.context ??= {};
12
- const proxy = await _proxy;
13
- event.req.context.cf = proxy.cf;
14
- event.req.context.waitUntil = proxy.ctx.waitUntil.bind(proxy.ctx);
15
- const request = new Request(event.req.url);
16
- request.cf = proxy.cf;
17
- event.req.context.cloudflare = {
18
- ...event.req.context.cloudflare,
19
- request,
20
- env: proxy.env,
21
- context: proxy.ctx
22
- };
23
- });
24
- nitroApp.hooks._hooks.request.unshift(nitroApp.hooks._hooks.request.pop());
25
- nitroApp.hooks.hook("close", () => {
26
- return _proxy?.then((proxy) => proxy.dispose);
27
- });
1
+ import { useRuntimeConfig } from "nitro/runtime-config";
2
+ const proxy = await _getPlatformProxy().catch((error) => {
3
+ console.error("Failed to initialize wrangler bindings proxy", error);
4
+ return _createStubProxy();
28
5
  });
6
+ globalThis.__env__ = proxy.env;
7
+ globalThis.__wait_until__ = proxy.ctx.waitUntil.bind(proxy.ctx);
8
+ const cloudflareDevPlugin = function(nitroApp) {
9
+ nitroApp.hooks.hook("request", async (event) => {
10
+ event.req.context ??= {};
11
+ // Inject the various cf values from the proxy in event and event.context
12
+ event.req.context.cf = proxy.cf;
13
+ event.req.context.waitUntil = proxy.ctx.waitUntil.bind(proxy.ctx);
14
+ const request = event.req;
15
+ request.cf = proxy.cf;
16
+ event.req.context.cloudflare = {
17
+ ...event.req.context.cloudflare,
18
+ request,
19
+ env: proxy.env,
20
+ context: proxy.ctx
21
+ };
22
+ // Replicate Nitro production behavior
23
+ // https://github.com/unjs/nitro/blob/main/src/runtime/entries/cloudflare-pages.ts#L55
24
+ // https://github.com/unjs/nitro/blob/main/src/runtime/app.ts#L120
25
+ // TODO: Update for v3
26
+ // (event.node.req as any).__unenv__ = {
27
+ // ...(event.node.req as any).__unenv__,
28
+ // waitUntil: event.context.waitUntil,
29
+ // };
30
+ });
31
+ // https://github.com/pi0/nitro-cloudflare-dev/issues/5
32
+ // https://github.com/unjs/hookable/issues/98
33
+ // @ts-expect-error
34
+ nitroApp.hooks._hooks.request.unshift(nitroApp.hooks._hooks.request.pop());
35
+ // Dispose proxy when Nitro is closed
36
+ nitroApp.hooks.hook("close", () => {
37
+ return proxy?.dispose();
38
+ });
39
+ };
40
+ export default cloudflareDevPlugin;
29
41
  async function _getPlatformProxy() {
30
- const { useRuntimeConfig } = await import("nitro/runtime");
31
- const pkg = "wrangler";
32
- const { getPlatformProxy } = await import(
33
- /* @vite-ignore */
34
- pkg
35
- ).catch(
36
- () => {
37
- throw new Error(
38
- "Package `wrangler` not found, please install it with: `npx nypm@latest add -D wrangler`"
39
- );
40
- }
41
- );
42
- const runtimeConfig = useRuntimeConfig();
43
- const proxyOptions = {
44
- configPath: runtimeConfig.wrangler.configPath,
45
- persist: { path: runtimeConfig.wrangler.persistDir }
46
- };
47
- if (runtimeConfig.wrangler.environment) {
48
- proxyOptions.environment = runtimeConfig.wrangler.environment;
49
- }
50
- const proxy = await getPlatformProxy(proxyOptions);
51
- return proxy;
42
+ const pkg = "wrangler";
43
+ const { getPlatformProxy } = await import(
44
+ /* @vite-ignore */
45
+ pkg
46
+ ).catch(() => {
47
+ throw new Error("Package `wrangler` not found, please install it with: `npx nypm@latest add -D wrangler`");
48
+ });
49
+ const runtimeConfig = useRuntimeConfig();
50
+ const proxyOptions = {
51
+ configPath: runtimeConfig.wrangler.configPath,
52
+ persist: { path: runtimeConfig.wrangler.persistDir }
53
+ };
54
+ // TODO: investigate why
55
+ // https://github.com/pi0/nitro-cloudflare-dev/issues/51
56
+ if (runtimeConfig.wrangler.environment) {
57
+ proxyOptions.environment = runtimeConfig.wrangler.environment;
58
+ }
59
+ const proxy = await getPlatformProxy(proxyOptions);
60
+ return proxy;
52
61
  }
53
62
  function _createStubProxy() {
54
- return {
55
- env: {},
56
- cf: {},
57
- ctx: {
58
- waitUntil() {
59
- },
60
- passThroughOnException() {
61
- },
62
- props: {}
63
- },
64
- caches: {
65
- open() {
66
- const result = Promise.resolve(new _CacheStub());
67
- return result;
68
- },
69
- get default() {
70
- return new _CacheStub();
71
- }
72
- },
73
- dispose: () => Promise.resolve()
74
- };
63
+ return {
64
+ env: {},
65
+ cf: {},
66
+ ctx: {
67
+ waitUntil() {},
68
+ passThroughOnException() {},
69
+ props: {}
70
+ },
71
+ caches: {
72
+ open() {
73
+ const result = Promise.resolve(new _CacheStub());
74
+ return result;
75
+ },
76
+ get default() {
77
+ return new _CacheStub();
78
+ }
79
+ },
80
+ dispose: () => Promise.resolve()
81
+ };
75
82
  }
76
83
  class _CacheStub {
77
- delete() {
78
- const result = Promise.resolve(false);
79
- return result;
80
- }
81
- match() {
82
- const result = Promise.resolve(void 0);
83
- return result;
84
- }
85
- put() {
86
- const result = Promise.resolve();
87
- return result;
88
- }
84
+ delete() {
85
+ const result = Promise.resolve(false);
86
+ return result;
87
+ }
88
+ match() {
89
+ const result = Promise.resolve(undefined);
90
+ return result;
91
+ }
92
+ put() {
93
+ const result = Promise.resolve();
94
+ return result;
95
+ }
89
96
  }
@@ -0,0 +1,27 @@
1
+ // Shim for "cloudflare:workers" import in dev environment
2
+
3
+ // unenv shim respects __env__
4
+ export { env } from "unenv/node/internal/process/env";
5
+
6
+ export async function waitUntil(promise) {
7
+ await globalThis.__wait_until__?.(promise);
8
+ }
9
+
10
+ export function withEnv(newEnv, fn) {
11
+ throw new Error("cf.withEnv is not implemented in dev env currently.");
12
+ }
13
+
14
+ class NotImplemented {
15
+ constructor() {
16
+ throw new Error("Not implemented in dev env currently.");
17
+ }
18
+ }
19
+
20
+ export class DurableObject extends NotImplemented {}
21
+ export class RpcPromise extends NotImplemented {}
22
+ export class RpcProperty extends NotImplemented {}
23
+ export class RpcStub extends NotImplemented {}
24
+ export class RpcTarget extends NotImplemented {}
25
+ export class ServiceStub extends NotImplemented {}
26
+ export class WorkerEntrypoint extends NotImplemented {}
27
+ export class WorkflowEntrypoint extends NotImplemented {}
@@ -1 +1,5 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
+ import type { Deno as _Deno } from "@deno/types";
3
+ declare global {
4
+ var Deno: typeof _Deno;
5
+ }
@@ -1,17 +1,19 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
1
+ import "#nitro/virtual/polyfills";
3
2
  import wsAdapter from "crossws/adapters/deno";
3
+ import { useNitroApp } from "nitro/app";
4
+ import { resolveWebsocketHooks } from "#nitro/runtime/app";
4
5
  const nitroApp = useNitroApp();
5
- const ws = import.meta._websocket ? (
6
- // @ts-expect-error
7
- wsAdapter(nitroApp.h3App.websocket)
8
- ) : void 0;
6
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
7
+ // TODO: Migrate to srvx to provide request IP
9
8
  Deno.serve((denoReq, info) => {
10
- const req = denoReq;
11
- req.runtime ??= { name: "deno" };
12
- req.runtime.deno ??= { info };
13
- if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
14
- return ws.handleUpgrade(req, info);
15
- }
16
- return nitroApp.fetch(req);
9
+ // srvx compatibility
10
+ const req = denoReq;
11
+ req.runtime ??= { name: "deno" };
12
+ req.runtime.deno ??= { info };
13
+ // TODO: Support remoteAddr
14
+ // https://crossws.unjs.io/adapters/deno
15
+ if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
16
+ return ws.handleUpgrade(req, info);
17
+ }
18
+ return nitroApp.fetch(req);
17
19
  });
@@ -1,6 +1,3 @@
1
- import "#nitro-internal-pollyfills";
2
- declare global {
3
- const Deno: typeof import("@deno/types").Deno;
4
- }
1
+ import "#nitro/virtual/polyfills";
5
2
  declare const _default: {};
6
3
  export default _default;
@@ -1,59 +1,38 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
3
- import { useRuntimeConfig } from "nitro/runtime";
4
- import { startScheduleRunner } from "nitro/runtime/internal";
1
+ import "#nitro/virtual/polyfills";
2
+ import { serve } from "srvx/deno";
5
3
  import wsAdapter from "crossws/adapters/deno";
6
- import destr from "destr";
4
+ import { useNitroApp } from "nitro/app";
5
+ import { startScheduleRunner } from "#nitro/runtime/task";
6
+ import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
7
+ import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
+ const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
9
+ const host = process.env.NITRO_HOST || process.env.HOST;
10
+ const cert = process.env.NITRO_SSL_CERT;
11
+ const key = process.env.NITRO_SSL_KEY;
12
+ // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
7
13
  const nitroApp = useNitroApp();
8
- if (Deno.env.get("DEBUG")) {
9
- addEventListener(
10
- "unhandledrejection",
11
- (event) => console.error("[unhandledRejection]", event.reason)
12
- );
13
- addEventListener(
14
- "error",
15
- (event) => console.error("[uncaughtException]", event.error)
16
- );
17
- } else {
18
- addEventListener(
19
- "unhandledrejection",
20
- (err) => console.error("[unhandledRejection] " + err)
21
- );
22
- addEventListener(
23
- "error",
24
- (event) => console.error("[uncaughtException] " + event.error)
25
- );
26
- }
27
- const serveOptions = {
28
- key: Deno.env.get("NITRO_SSL_KEY"),
29
- cert: Deno.env.get("NITRO_SSL_CERT"),
30
- port: destr(Deno.env.get("NITRO_PORT") || Deno.env.get("PORT")) || 3e3,
31
- hostname: Deno.env.get("NITRO_HOST") || Deno.env.get("HOST"),
32
- onListen: (opts) => {
33
- const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, "");
34
- const url = `${opts.hostname}:${opts.port}${baseURL}`;
35
- console.log(`Listening ${url}`);
36
- }
37
- };
38
- if (!serveOptions.key || !serveOptions.cert) {
39
- delete serveOptions.key;
40
- delete serveOptions.cert;
41
- }
42
- Deno.serve(serveOptions, handler);
43
- const ws = import.meta._websocket ? (
44
- // @ts-expect-error
45
- wsAdapter(nitroApp.h3App.websocket)
46
- ) : void 0;
47
- async function handler(denoReq, info) {
48
- const req = denoReq;
49
- req.runtime ??= { name: "deno" };
50
- req.runtime.deno ??= { info };
51
- if (import.meta._websocket && req.headers.get("upgrade") === "websocket") {
52
- return ws.handleUpgrade(req, info);
53
- }
54
- return nitroApp.fetch(req);
14
+ let _fetch = nitroApp.fetch;
15
+ if (import.meta._websocket) {
16
+ const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
17
+ _fetch = (req) => {
18
+ if (req.headers.get("upgrade") === "websocket") {
19
+ return handleUpgrade(req, req.runtime.deno.info);
20
+ }
21
+ return nitroApp.fetch(req);
22
+ };
55
23
  }
24
+ serve({
25
+ port,
26
+ hostname: host,
27
+ tls: cert && key ? {
28
+ cert,
29
+ key
30
+ } : undefined,
31
+ fetch: _fetch
32
+ });
33
+ trapUnhandledErrors();
34
+ // Scheduled tasks
56
35
  if (import.meta._tasks) {
57
- startScheduleRunner();
36
+ startScheduleRunner();
58
37
  }
59
38
  export default {};
@@ -1,3 +1,3 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import type { Context } from "@netlify/edge-functions";
3
- export default function netlifyEdge(netlifyReq: Request, context: Context): Promise<any>;
3
+ export default function netlifyEdge(netlifyReq: Request, context: Context);
@@ -1,17 +1,21 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
3
- import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets";
1
+ import "#nitro/virtual/polyfills";
2
+ import { useNitroApp } from "nitro/app";
3
+ import { isPublicAssetURL } from "#nitro/virtual/public-assets";
4
4
  const nitroApp = useNitroApp();
5
+ // https://docs.netlify.com/edge-functions/api/
5
6
  export default async function netlifyEdge(netlifyReq, context) {
6
- const req = netlifyReq;
7
- req.runtime ??= { name: "netlify-edge" };
8
- req.runtime.netlify ??= { context };
9
- const url = new URL(req.url);
10
- if (isPublicAssetURL(url.pathname)) {
11
- return;
12
- }
13
- if (!req.headers.has("x-forwarded-proto") && url.protocol === "https:") {
14
- req.headers.set("x-forwarded-proto", "https");
15
- }
16
- return nitroApp.fetch(req);
7
+ // srvx compatibility
8
+ const req = netlifyReq;
9
+ req.ip = context.ip;
10
+ req.runtime ??= { name: "netlify-edge" };
11
+ // @ts-expect-error (add to srvx types)
12
+ req.runtime.netlify ??= { context };
13
+ const url = new URL(req.url);
14
+ if (isPublicAssetURL(url.pathname)) {
15
+ return;
16
+ }
17
+ if (!req.headers.has("x-forwarded-proto") && url.protocol === "https:") {
18
+ req.headers.set("x-forwarded-proto", "https");
19
+ }
20
+ return nitroApp.fetch(req);
17
21
  }
@@ -1,3 +1,4 @@
1
- import "#nitro-internal-pollyfills";
2
- declare const handler: (req: Request) => Promise<Response>;
1
+ import "#nitro/virtual/polyfills";
2
+ import type { ServerRequest } from "srvx";
3
+ declare const handler: (req: ServerRequest) => Promise<Response>;
3
4
  export default handler;
@@ -1,24 +1,20 @@
1
- import "#nitro-internal-pollyfills";
2
- import { useNitroApp } from "nitro/runtime";
1
+ import "#nitro/virtual/polyfills";
2
+ import { useNitroApp } from "nitro/app";
3
3
  const nitroApp = useNitroApp();
4
4
  const ONE_YEAR_IN_SECONDS = 365 * 24 * 60 * 60;
5
5
  const handler = async (req) => {
6
- const response = await nitroApp.fetch(req);
7
- const isr = (req.context?.routeRules || {})?.isr?.options;
8
- if (isr) {
9
- const maxAge = typeof isr === "number" ? isr : ONE_YEAR_IN_SECONDS;
10
- const revalidateDirective = typeof isr === "number" ? `stale-while-revalidate=${ONE_YEAR_IN_SECONDS}` : "must-revalidate";
11
- if (!response.headers.has("Cache-Control")) {
12
- response.headers.set(
13
- "Cache-Control",
14
- "public, max-age=0, must-revalidate"
15
- );
16
- }
17
- response.headers.set(
18
- "Netlify-CDN-Cache-Control",
19
- `public, max-age=${maxAge}, ${revalidateDirective}, durable`
20
- );
21
- }
22
- return response;
6
+ req.runtime ??= { name: "netlify" };
7
+ req.ip = req.headers.get("x-nf-client-connection-ip") || undefined;
8
+ const response = await nitroApp.fetch(req);
9
+ const isr = (req.context?.routeRules || {})?.isr?.options;
10
+ if (isr) {
11
+ const maxAge = typeof isr === "number" ? isr : ONE_YEAR_IN_SECONDS;
12
+ const revalidateDirective = typeof isr === "number" ? `stale-while-revalidate=${ONE_YEAR_IN_SECONDS}` : "must-revalidate";
13
+ if (!response.headers.has("Cache-Control")) {
14
+ response.headers.set("Cache-Control", "public, max-age=0, must-revalidate");
15
+ }
16
+ response.headers.set("Netlify-CDN-Cache-Control", `public, max-age=${maxAge}, ${revalidateDirective}, durable`);
17
+ }
18
+ return response;
23
19
  };
24
20
  export default handler;
@@ -1 +1,3 @@
1
- export {};
1
+ import "#nitro/virtual/polyfills";
2
+ declare const _default: {};
3
+ export default _default;
@@ -1,58 +1,53 @@
1
+ import "#nitro/virtual/polyfills";
1
2
  import cluster from "node:cluster";
2
- import os from "node:os";
3
- import {
4
- getGracefulShutdownConfig,
5
- trapUnhandledNodeErrors
6
- } from "nitro/runtime/internal";
7
- function runMaster() {
8
- const numberOfWorkers = Number.parseInt(process.env.NITRO_CLUSTER_WORKERS || "") || (os.cpus().length > 0 ? os.cpus().length : 1);
9
- for (let i = 0; i < numberOfWorkers; i++) {
10
- cluster.fork();
11
- }
12
- let isShuttingDown = false;
13
- cluster.on("exit", () => {
14
- if (!isShuttingDown) {
15
- cluster.fork();
16
- }
17
- });
18
- const shutdownConfig = getGracefulShutdownConfig();
19
- if (!shutdownConfig.disabled) {
20
- async function onShutdown() {
21
- if (isShuttingDown) {
22
- return;
23
- }
24
- isShuttingDown = true;
25
- await new Promise((resolve) => {
26
- const timeout = setTimeout(() => {
27
- console.warn("Timeout reached for graceful shutdown. Forcing exit.");
28
- resolve();
29
- }, shutdownConfig.timeout);
30
- cluster.on("exit", () => {
31
- if (Object.values(cluster.workers || {}).every((w) => !w || w.isDead())) {
32
- clearTimeout(timeout);
33
- resolve();
34
- } else {
35
- }
36
- });
37
- });
38
- if (shutdownConfig.forceExit) {
39
- process.exit(0);
40
- }
41
- }
42
- for (const signal of shutdownConfig.signals) {
43
- process.once(signal, onShutdown);
44
- }
45
- }
3
+ import { NodeRequest, serve } from "srvx/node";
4
+ import wsAdapter from "crossws/adapters/node";
5
+ import { useNitroApp } from "nitro/app";
6
+ import { startScheduleRunner } from "#nitro/runtime/task";
7
+ import { trapUnhandledErrors } from "#nitro/runtime/error/hooks";
8
+ import { resolveWebsocketHooks } from "#nitro/runtime/app";
9
+ const port = Number.parseInt(process.env.NITRO_PORT || process.env.PORT || "") || 3e3;
10
+ const host = process.env.NITRO_HOST || process.env.HOST;
11
+ const cert = process.env.NITRO_SSL_CERT;
12
+ const key = process.env.NITRO_SSL_KEY;
13
+ // const socketPath = process.env.NITRO_UNIX_SOCKET; // TODO
14
+ const clusterId = cluster.isWorker && process.env.WORKER_ID;
15
+ if (clusterId) {
16
+ console.log(`Worker #${clusterId} started`);
46
17
  }
47
- function runWorker() {
48
- import("./node-server.mjs").catch((error) => {
49
- console.error(error);
50
- process.exit(1);
51
- });
18
+ const nitroApp = useNitroApp();
19
+ const server = serve({
20
+ port,
21
+ hostname: host,
22
+ tls: cert && key ? {
23
+ cert,
24
+ key
25
+ } : undefined,
26
+ node: { exclusive: false },
27
+ silent: clusterId ? clusterId !== "1" : undefined,
28
+ fetch: nitroApp.fetch
29
+ });
30
+ if (import.meta._websocket) {
31
+ const { handleUpgrade } = wsAdapter({ resolve: resolveWebsocketHooks });
32
+ server.node.server.on("upgrade", (req, socket, head) => {
33
+ handleUpgrade(
34
+ req,
35
+ socket,
36
+ head,
37
+ // @ts-expect-error (upgrade is not typed)
38
+ new NodeRequest({
39
+ req,
40
+ upgrade: {
41
+ socket,
42
+ head
43
+ }
44
+ })
45
+ );
46
+ });
52
47
  }
53
- trapUnhandledNodeErrors();
54
- if (cluster.isPrimary) {
55
- runMaster();
56
- } else {
57
- runWorker();
48
+ trapUnhandledErrors();
49
+ // Scheduled tasks
50
+ if (import.meta._tasks) {
51
+ startScheduleRunner();
58
52
  }
53
+ export default {};
@@ -1,4 +1,3 @@
1
- import "#nitro-internal-pollyfills";
2
- export declare const middleware: any;
3
- /** @experimental */
4
- export declare const websocket: undefined;
1
+ import "#nitro/virtual/polyfills";
2
+ export declare const middleware: unknown;
3
+ export declare const handleUpgrade: unknown;
@@ -1,14 +1,14 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  import { toNodeHandler } from "srvx/node";
3
- import { useNitroApp } from "nitro/runtime";
4
- import {
5
- startScheduleRunner,
6
- trapUnhandledNodeErrors
7
- } from "nitro/runtime/internal";
3
+ import wsAdapter from "crossws/adapters/node";
4
+ import { useNitroApp } from "nitro/app";
5
+ import { startScheduleRunner } from "#nitro/runtime/task";
6
+ import { resolveWebsocketHooks } from "#nitro/runtime/app";
8
7
  const nitroApp = useNitroApp();
9
8
  export const middleware = toNodeHandler(nitroApp.fetch);
10
- export const websocket = import.meta._websocket ? void 0 : void 0;
11
- trapUnhandledNodeErrors();
9
+ const ws = import.meta._websocket ? wsAdapter({ resolve: resolveWebsocketHooks }) : undefined;
10
+ export const handleUpgrade = ws?.handleUpgrade;
11
+ // Scheduled tasks
12
12
  if (import.meta._tasks) {
13
- startScheduleRunner();
13
+ startScheduleRunner();
14
14
  }
@@ -1,3 +1,3 @@
1
- import "#nitro-internal-pollyfills";
1
+ import "#nitro/virtual/polyfills";
2
2
  declare const _default: {};
3
3
  export default _default;