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
@@ -0,0 +1,79 @@
1
+ import http, { IncomingMessage, OutgoingMessage } from "node:http";
2
+ import { EventEmitter } from "node:events";
3
+ import * as stream from "node:stream";
4
+
5
+ //#region node_modules/.pnpm/httpxy@0.1.7/node_modules/httpxy/dist/index.d.ts
6
+ interface ProxyTargetDetailed {
7
+ host: string;
8
+ port: number;
9
+ protocol?: string;
10
+ hostname?: string;
11
+ socketPath?: string;
12
+ key?: string;
13
+ passphrase?: string;
14
+ pfx?: Buffer | string;
15
+ cert?: string;
16
+ ca?: string;
17
+ ciphers?: string;
18
+ secureProtocol?: string;
19
+ }
20
+ type ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed;
21
+ type ProxyTargetUrl = string | Partial<URL>;
22
+ interface ProxyServerOptions {
23
+ /** URL string to be parsed with the url module. */
24
+ target?: ProxyTarget;
25
+ /** URL string to be parsed with the url module. */
26
+ forward?: ProxyTargetUrl;
27
+ /** Object to be passed to http(s).request. */
28
+ agent?: any;
29
+ /** Object to be passed to https.createServer(). */
30
+ ssl?: any;
31
+ /** If you want to proxy websockets. */
32
+ ws?: boolean;
33
+ /** Adds x- forward headers. */
34
+ xfwd?: boolean;
35
+ /** Verify SSL certificate. */
36
+ secure?: boolean;
37
+ /** Explicitly specify if we are proxying to another proxy. */
38
+ toProxy?: boolean;
39
+ /** Specify whether you want to prepend the target's path to the proxy path. */
40
+ prependPath?: boolean;
41
+ /** Specify whether you want to ignore the proxy path of the incoming request. */
42
+ ignorePath?: boolean;
43
+ /** Local interface string to bind for outgoing connections. */
44
+ localAddress?: string;
45
+ /** Changes the origin of the host header to the target URL. */
46
+ changeOrigin?: boolean;
47
+ /** specify whether you want to keep letter case of response header key */
48
+ preserveHeaderKeyCase?: boolean;
49
+ /** Basic authentication i.e. 'user:password' to compute an Authorization header. */
50
+ auth?: string;
51
+ /** Rewrites the location hostname on (301 / 302 / 307 / 308) redirects, Default: null. */
52
+ hostRewrite?: string;
53
+ /** Rewrites the location host/ port on (301 / 302 / 307 / 308) redirects based on requested host/ port.Default: false. */
54
+ autoRewrite?: boolean;
55
+ /** Rewrites the location protocol on (301 / 302 / 307 / 308) redirects to 'http' or 'https'.Default: null. */
56
+ protocolRewrite?: string;
57
+ /** Rewrites domain of set-cookie headers. */
58
+ cookieDomainRewrite?: false | string | {
59
+ [oldDomain: string]: string;
60
+ };
61
+ /** Rewrites path of set-cookie headers. Default: false */
62
+ cookiePathRewrite?: false | string | {
63
+ [oldPath: string]: string;
64
+ };
65
+ /** Object with extra headers to be added to target requests. */
66
+ headers?: {
67
+ [header: string]: string;
68
+ };
69
+ /** Timeout (in milliseconds) when proxy receives no response from target. Default: 120000 (2 minutes) */
70
+ proxyTimeout?: number;
71
+ /** Timeout (in milliseconds) for incoming requests */
72
+ timeout?: number;
73
+ /** If set to true, none of the webOutgoing passes are called and it's your responsibility to appropriately return the response by listening and acting on the proxyRes event */
74
+ selfHandleResponse?: boolean;
75
+ /** Buffer */
76
+ buffer?: stream.Stream;
77
+ }
78
+ //#endregion
79
+ export { ProxyServerOptions as t };
@@ -0,0 +1,415 @@
1
+ import { n as __exportAll } from "../_common.mjs";
2
+ import http from "node:http";
3
+ import https from "node:https";
4
+ import { EventEmitter } from "node:events";
5
+
6
+ //#region node_modules/.pnpm/httpxy@0.1.7/node_modules/httpxy/dist/index.mjs
7
+ var dist_exports = /* @__PURE__ */ __exportAll({
8
+ ProxyServer: () => ProxyServer,
9
+ createProxyServer: () => createProxyServer
10
+ });
11
+ const upgradeHeader = /(^|,)\s*upgrade\s*($|,)/i;
12
+ const isSSL = /^https|wss/;
13
+ function setupOutgoing(outgoing, options, req, forward) {
14
+ outgoing.port = options[forward || "target"].port || (isSSL.test(options[forward || "target"].protocol) ? 443 : 80);
15
+ for (const e of [
16
+ "host",
17
+ "hostname",
18
+ "socketPath",
19
+ "pfx",
20
+ "key",
21
+ "passphrase",
22
+ "cert",
23
+ "ca",
24
+ "ciphers",
25
+ "secureProtocol"
26
+ ]) outgoing[e] = options[forward || "target"][e];
27
+ outgoing.method = options.method || req.method;
28
+ outgoing.headers = { ...req.headers };
29
+ if (options.headers) outgoing.headers = {
30
+ ...outgoing.headers,
31
+ ...options.headers
32
+ };
33
+ if (options.auth) outgoing.auth = options.auth;
34
+ if (options.ca) outgoing.ca = options.ca;
35
+ if (isSSL.test(options[forward || "target"].protocol)) outgoing.rejectUnauthorized = options.secure === void 0 ? true : options.secure;
36
+ outgoing.agent = options.agent || false;
37
+ outgoing.localAddress = options.localAddress;
38
+ if (!outgoing.agent) {
39
+ outgoing.headers = outgoing.headers || {};
40
+ if (typeof outgoing.headers.connection !== "string" || !upgradeHeader.test(outgoing.headers.connection)) outgoing.headers.connection = "close";
41
+ }
42
+ const target = options[forward || "target"];
43
+ const targetPath = target && options.prependPath !== false ? target.pathname || target.path || "" : "";
44
+ const parsed = new URL(req.url, "http://localhost");
45
+ let outgoingPath = options.toProxy ? req.url : parsed.pathname + parsed.search || "";
46
+ outgoingPath = options.ignorePath ? "" : outgoingPath;
47
+ outgoing.path = joinURL(targetPath, outgoingPath);
48
+ if (options.changeOrigin) outgoing.headers.host = requiresPort(outgoing.port, options[forward || "target"].protocol) && !hasPort(outgoing.host) ? outgoing.host + ":" + outgoing.port : outgoing.host;
49
+ return outgoing;
50
+ }
51
+ function joinURL(base, path) {
52
+ if (!base || base === "/") return path || "/";
53
+ if (!path || path === "/") return base || "/";
54
+ const baseHasTrailing = base[base.length - 1] === "/";
55
+ const pathHasLeading = path[0] === "/";
56
+ if (baseHasTrailing && pathHasLeading) return base + path.slice(1);
57
+ if (!baseHasTrailing && !pathHasLeading) return base + "/" + path;
58
+ return base + path;
59
+ }
60
+ function setupSocket(socket) {
61
+ socket.setTimeout(0);
62
+ socket.setNoDelay(true);
63
+ socket.setKeepAlive(true, 0);
64
+ return socket;
65
+ }
66
+ function getPort(req) {
67
+ const res = req.headers.host ? req.headers.host.match(/:(\d+)/) : "";
68
+ if (res) return res[1];
69
+ return hasEncryptedConnection(req) ? "443" : "80";
70
+ }
71
+ function hasEncryptedConnection(req) {
72
+ return Boolean(req.connection.encrypted || req.connection.pair);
73
+ }
74
+ function rewriteCookieProperty(header, config, property) {
75
+ if (Array.isArray(header)) return header.map(function(headerElement) {
76
+ return rewriteCookieProperty(headerElement, config, property);
77
+ });
78
+ return header.replace(new RegExp(String.raw`(;\s*` + property + "=)([^;]+)", "i"), function(match, prefix, previousValue) {
79
+ let newValue;
80
+ if (previousValue in config) newValue = config[previousValue];
81
+ else if ("*" in config) newValue = config["*"];
82
+ else return match;
83
+ return newValue ? prefix + newValue : "";
84
+ });
85
+ }
86
+ function hasPort(host) {
87
+ return !!~host.indexOf(":");
88
+ }
89
+ function requiresPort(_port, _protocol) {
90
+ const protocol = _protocol.split(":")[0];
91
+ const port = +_port;
92
+ if (!port) return false;
93
+ switch (protocol) {
94
+ case "http":
95
+ case "ws": return port !== 80;
96
+ case "https":
97
+ case "wss": return port !== 443;
98
+ case "ftp": return port !== 21;
99
+ case "gopher": return port !== 70;
100
+ case "file": return false;
101
+ }
102
+ return port !== 0;
103
+ }
104
+ function defineProxyMiddleware(m) {
105
+ return m;
106
+ }
107
+ function defineProxyOutgoingMiddleware(m) {
108
+ return m;
109
+ }
110
+ const redirectRegex = /^201|30([1278])$/;
111
+ const webOutgoingMiddleware = [
112
+ defineProxyOutgoingMiddleware((req, res, proxyRes) => {
113
+ if (req.httpVersion === "1.0") delete proxyRes.headers["transfer-encoding"];
114
+ }),
115
+ defineProxyOutgoingMiddleware((req, res, proxyRes) => {
116
+ if (req.httpVersion === "1.0") proxyRes.headers.connection = req.headers.connection || "close";
117
+ else if (req.httpVersion !== "2.0" && !proxyRes.headers.connection) proxyRes.headers.connection = req.headers.connection || "keep-alive";
118
+ }),
119
+ defineProxyOutgoingMiddleware((req, res, proxyRes, options) => {
120
+ if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite) && proxyRes.headers.location && redirectRegex.test(String(proxyRes.statusCode))) {
121
+ const target = new URL(options.target);
122
+ const u = new URL(proxyRes.headers.location);
123
+ if (target.host !== u.host) return;
124
+ if (options.hostRewrite) u.host = options.hostRewrite;
125
+ else if (options.autoRewrite) u.host = req.headers.host;
126
+ if (options.protocolRewrite) u.protocol = options.protocolRewrite;
127
+ proxyRes.headers.location = u.toString();
128
+ }
129
+ }),
130
+ defineProxyOutgoingMiddleware((req, res, proxyRes, options) => {
131
+ let rewriteCookieDomainConfig = options.cookieDomainRewrite;
132
+ let rewriteCookiePathConfig = options.cookiePathRewrite;
133
+ const preserveHeaderKeyCase = options.preserveHeaderKeyCase;
134
+ let rawHeaderKeyMap;
135
+ const setHeader = function(key, header) {
136
+ if (header === void 0) return;
137
+ if (rewriteCookieDomainConfig && key.toLowerCase() === "set-cookie") header = rewriteCookieProperty(header, rewriteCookieDomainConfig, "domain");
138
+ if (rewriteCookiePathConfig && key.toLowerCase() === "set-cookie") header = rewriteCookieProperty(header, rewriteCookiePathConfig, "path");
139
+ res.setHeader(String(key).trim(), header);
140
+ };
141
+ if (typeof rewriteCookieDomainConfig === "string") rewriteCookieDomainConfig = { "*": rewriteCookieDomainConfig };
142
+ if (typeof rewriteCookiePathConfig === "string") rewriteCookiePathConfig = { "*": rewriteCookiePathConfig };
143
+ if (preserveHeaderKeyCase && proxyRes.rawHeaders !== void 0) {
144
+ rawHeaderKeyMap = {};
145
+ for (let i = 0; i < proxyRes.rawHeaders.length; i += 2) {
146
+ const key = proxyRes.rawHeaders[i];
147
+ rawHeaderKeyMap[key.toLowerCase()] = key;
148
+ }
149
+ }
150
+ for (let key of Object.keys(proxyRes.headers)) {
151
+ const header = proxyRes.headers[key];
152
+ if (preserveHeaderKeyCase && rawHeaderKeyMap) key = rawHeaderKeyMap[key] || key;
153
+ setHeader(key, header);
154
+ }
155
+ }),
156
+ defineProxyOutgoingMiddleware((req, res, proxyRes) => {
157
+ if (proxyRes.statusMessage) {
158
+ res.statusCode = proxyRes.statusCode;
159
+ res.statusMessage = proxyRes.statusMessage;
160
+ } else res.statusCode = proxyRes.statusCode;
161
+ })
162
+ ];
163
+ const nativeAgents = {
164
+ http,
165
+ https
166
+ };
167
+ const webIncomingMiddleware = [
168
+ defineProxyMiddleware((req) => {
169
+ if ((req.method === "DELETE" || req.method === "OPTIONS") && !req.headers["content-length"]) {
170
+ req.headers["content-length"] = "0";
171
+ delete req.headers["transfer-encoding"];
172
+ }
173
+ }),
174
+ defineProxyMiddleware((req, res, options) => {
175
+ if (options.timeout) req.socket.setTimeout(options.timeout);
176
+ }),
177
+ defineProxyMiddleware((req, res, options) => {
178
+ if (!options.xfwd) return;
179
+ const encrypted = req.isSpdy || hasEncryptedConnection(req);
180
+ const values = {
181
+ for: req.connection.remoteAddress || req.socket.remoteAddress,
182
+ port: getPort(req),
183
+ proto: encrypted ? "https" : "http"
184
+ };
185
+ for (const header of [
186
+ "for",
187
+ "port",
188
+ "proto"
189
+ ]) req.headers["x-forwarded-" + header] = (req.headers["x-forwarded-" + header] || "") + (req.headers["x-forwarded-" + header] ? "," : "") + values[header];
190
+ req.headers["x-forwarded-host"] = req.headers["x-forwarded-host"] || req.headers.host || "";
191
+ }),
192
+ defineProxyMiddleware((req, res, options, server, head, callback) => {
193
+ server.emit("start", req, res, options.target || options.forward);
194
+ const agents = nativeAgents;
195
+ const http$1 = agents.http;
196
+ const https$1 = agents.https;
197
+ if (options.forward) {
198
+ const forwardReq = (options.forward.protocol === "https:" ? https$1 : http$1).request(setupOutgoing(options.ssl || {}, options, req, "forward"));
199
+ const forwardError = createErrorHandler(forwardReq, options.forward);
200
+ req.on("error", forwardError);
201
+ forwardReq.on("error", forwardError);
202
+ (options.buffer || req).pipe(forwardReq);
203
+ if (!options.target) {
204
+ res.end();
205
+ return;
206
+ }
207
+ }
208
+ const proxyReq = (options.target.protocol === "https:" ? https$1 : http$1).request(setupOutgoing(options.ssl || {}, options, req));
209
+ proxyReq.on("socket", (socket) => {
210
+ if (server && !proxyReq.getHeader("expect")) server.emit("proxyReq", proxyReq, req, res, options);
211
+ });
212
+ if (options.proxyTimeout) proxyReq.setTimeout(options.proxyTimeout, function() {
213
+ proxyReq.abort();
214
+ });
215
+ req.on("aborted", function() {
216
+ proxyReq.abort();
217
+ });
218
+ const proxyError = createErrorHandler(proxyReq, options.target);
219
+ req.on("error", proxyError);
220
+ proxyReq.on("error", proxyError);
221
+ function createErrorHandler(proxyReq2, url) {
222
+ return function proxyError2(err) {
223
+ if (req.socket.destroyed && err.code === "ECONNRESET") {
224
+ server.emit("econnreset", err, req, res, url);
225
+ return proxyReq2.abort();
226
+ }
227
+ if (callback) callback(err, req, res, url);
228
+ else server.emit("error", err, req, res, url);
229
+ };
230
+ }
231
+ (options.buffer || req).pipe(proxyReq);
232
+ proxyReq.on("response", function(proxyRes) {
233
+ if (server) server.emit("proxyRes", proxyRes, req, res);
234
+ if (!res.headersSent && !options.selfHandleResponse) {
235
+ for (const pass of webOutgoingMiddleware) if (pass(req, res, proxyRes, options)) break;
236
+ }
237
+ if (res.finished) {
238
+ if (server) server.emit("end", req, res, proxyRes);
239
+ } else {
240
+ res.on("close", function() {
241
+ proxyRes.destroy();
242
+ });
243
+ proxyRes.on("end", function() {
244
+ if (server) server.emit("end", req, res, proxyRes);
245
+ });
246
+ if (!options.selfHandleResponse) proxyRes.pipe(res);
247
+ }
248
+ });
249
+ })
250
+ ];
251
+ const websocketIncomingMiddleware = [
252
+ defineProxyMiddleware((req, socket) => {
253
+ if (req.method !== "GET" || !req.headers.upgrade) {
254
+ socket.destroy();
255
+ return true;
256
+ }
257
+ if (req.headers.upgrade.toLowerCase() !== "websocket") {
258
+ socket.destroy();
259
+ return true;
260
+ }
261
+ }),
262
+ defineProxyMiddleware((req, socket, options) => {
263
+ if (!options.xfwd) return;
264
+ const values = {
265
+ for: req.connection.remoteAddress || req.socket.remoteAddress,
266
+ port: getPort(req),
267
+ proto: hasEncryptedConnection(req) ? "wss" : "ws"
268
+ };
269
+ for (const header of [
270
+ "for",
271
+ "port",
272
+ "proto"
273
+ ]) req.headers["x-forwarded-" + header] = (req.headers["x-forwarded-" + header] || "") + (req.headers["x-forwarded-" + header] ? "," : "") + values[header];
274
+ }),
275
+ defineProxyMiddleware((req, socket, options, server, head, callback) => {
276
+ const createHttpHeader = function(line, headers) {
277
+ return Object.keys(headers).reduce(function(head2, key) {
278
+ const value = headers[key];
279
+ if (!Array.isArray(value)) {
280
+ head2.push(key + ": " + value);
281
+ return head2;
282
+ }
283
+ for (const element of value) head2.push(key + ": " + element);
284
+ return head2;
285
+ }, [line]).join("\r\n") + "\r\n\r\n";
286
+ };
287
+ setupSocket(socket);
288
+ if (head && head.length > 0) socket.unshift(head);
289
+ const proxyReq = (isSSL.test(options.target.protocol) ? https : http).request(setupOutgoing(options.ssl || {}, options, req));
290
+ if (server) server.emit("proxyReqWs", proxyReq, req, socket, options, head);
291
+ proxyReq.on("error", onOutgoingError);
292
+ proxyReq.on("response", function(res) {
293
+ if (!res.upgrade) {
294
+ socket.write(createHttpHeader("HTTP/" + res.httpVersion + " " + res.statusCode + " " + res.statusMessage, res.headers));
295
+ res.pipe(socket);
296
+ }
297
+ });
298
+ proxyReq.on("upgrade", function(proxyRes, proxySocket, proxyHead) {
299
+ proxySocket.on("error", onOutgoingError);
300
+ proxySocket.on("end", function() {
301
+ server.emit("close", proxyRes, proxySocket, proxyHead);
302
+ });
303
+ socket.on("error", function() {
304
+ proxySocket.end();
305
+ });
306
+ setupSocket(proxySocket);
307
+ if (proxyHead && proxyHead.length > 0) proxySocket.unshift(proxyHead);
308
+ socket.write(createHttpHeader("HTTP/1.1 101 Switching Protocols", proxyRes.headers));
309
+ proxySocket.pipe(socket).pipe(proxySocket);
310
+ server.emit("open", proxySocket);
311
+ server.emit("proxySocket", proxySocket);
312
+ });
313
+ proxyReq.end();
314
+ function onOutgoingError(err) {
315
+ if (callback) callback(err, req, socket);
316
+ else server.emit("error", err, req, socket);
317
+ socket.end();
318
+ }
319
+ })
320
+ ];
321
+ var ProxyServer = class extends EventEmitter {
322
+ _server;
323
+ _webPasses = [...webIncomingMiddleware];
324
+ _wsPasses = [...websocketIncomingMiddleware];
325
+ options;
326
+ web;
327
+ ws;
328
+ /**
329
+ * Creates the proxy server with specified options.
330
+ * @param options - Config object passed to the proxy
331
+ */
332
+ constructor(options = {}) {
333
+ super();
334
+ this.options = options || {};
335
+ this.options.prependPath = options.prependPath !== false;
336
+ this.web = _createProxyFn("web", this);
337
+ this.ws = _createProxyFn("ws", this);
338
+ }
339
+ /**
340
+ * A function that wraps the object in a webserver, for your convenience
341
+ * @param port - Port to listen on
342
+ * @param hostname - The hostname to listen on
343
+ */
344
+ listen(port, hostname) {
345
+ const closure = (req, res) => {
346
+ this.web(req, res);
347
+ };
348
+ this._server = this.options.ssl ? https.createServer(this.options.ssl, closure) : http.createServer(closure);
349
+ if (this.options.ws) this._server.on("upgrade", (req, socket, head) => {
350
+ this._ws(req, socket, head);
351
+ });
352
+ this._server.listen(port, hostname);
353
+ return this;
354
+ }
355
+ /**
356
+ * A function that closes the inner webserver and stops listening on given port
357
+ */
358
+ close(callback) {
359
+ if (this._server) this._server.close((...args) => {
360
+ this._server = void 0;
361
+ if (callback) Reflect.apply(callback, void 0, args);
362
+ });
363
+ }
364
+ before(type, passName, pass) {
365
+ if (type !== "ws" && type !== "web") throw new Error("type must be `web` or `ws`");
366
+ const passes = type === "ws" ? this._wsPasses : this._webPasses;
367
+ let i = false;
368
+ for (const [idx, v] of passes.entries()) if (v.name === passName) i = idx;
369
+ if (i === false) throw new Error("No such pass");
370
+ passes.splice(i, 0, pass);
371
+ }
372
+ after(type, passName, pass) {
373
+ if (type !== "ws" && type !== "web") throw new Error("type must be `web` or `ws`");
374
+ const passes = type === "ws" ? this._wsPasses : this._webPasses;
375
+ let i = false;
376
+ for (const [idx, v] of passes.entries()) if (v.name === passName) i = idx;
377
+ if (i === false) throw new Error("No such pass");
378
+ passes.splice(i++, 0, pass);
379
+ }
380
+ };
381
+ function createProxyServer(options = {}) {
382
+ return new ProxyServer(options);
383
+ }
384
+ function _createProxyFn(type, server) {
385
+ return function(req, res, opts, head) {
386
+ const requestOptions = {
387
+ ...opts,
388
+ ...server.options
389
+ };
390
+ for (const key of ["target", "forward"]) if (typeof requestOptions[key] === "string") requestOptions[key] = new URL(requestOptions[key]);
391
+ if (!requestOptions.target && !requestOptions.forward) return this.emit("error", /* @__PURE__ */ new Error("Must provide a proper URL as target"));
392
+ let _resolve;
393
+ let _reject;
394
+ const callbackPromise = new Promise((resolve, reject) => {
395
+ _resolve = resolve;
396
+ _reject = reject;
397
+ });
398
+ res.on("close", () => {
399
+ _resolve();
400
+ });
401
+ res.on("error", (error) => {
402
+ _reject(error);
403
+ });
404
+ for (const pass of type === "ws" ? server._wsPasses : server._webPasses) if (pass(req, res, requestOptions, server, head, (error) => {
405
+ _reject(error);
406
+ })) {
407
+ _resolve();
408
+ break;
409
+ }
410
+ return callbackPromise;
411
+ };
412
+ }
413
+
414
+ //#endregion
415
+ export { dist_exports as n, createProxyServer as t };
@@ -0,0 +1,38 @@
1
+ //#region node_modules/.pnpm/klona@2.0.6/node_modules/klona/full/index.mjs
2
+ function set(obj, key, val) {
3
+ if (typeof val.value === "object") val.value = klona(val.value);
4
+ if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === "__proto__") Object.defineProperty(obj, key, val);
5
+ else obj[key] = val.value;
6
+ }
7
+ function klona(x) {
8
+ if (typeof x !== "object") return x;
9
+ var i = 0, k, list, tmp, str = Object.prototype.toString.call(x);
10
+ if (str === "[object Object]") tmp = Object.create(x.__proto__ || null);
11
+ else if (str === "[object Array]") tmp = Array(x.length);
12
+ else if (str === "[object Set]") {
13
+ tmp = /* @__PURE__ */ new Set();
14
+ x.forEach(function(val) {
15
+ tmp.add(klona(val));
16
+ });
17
+ } else if (str === "[object Map]") {
18
+ tmp = /* @__PURE__ */ new Map();
19
+ x.forEach(function(val, key) {
20
+ tmp.set(klona(key), klona(val));
21
+ });
22
+ } else if (str === "[object Date]") tmp = /* @__PURE__ */ new Date(+x);
23
+ else if (str === "[object RegExp]") tmp = new RegExp(x.source, x.flags);
24
+ else if (str === "[object DataView]") tmp = new x.constructor(klona(x.buffer));
25
+ else if (str === "[object ArrayBuffer]") tmp = x.slice(0);
26
+ else if (str.slice(-6) === "Array]") tmp = new x.constructor(x);
27
+ if (tmp) {
28
+ for (list = Object.getOwnPropertySymbols(x); i < list.length; i++) set(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));
29
+ for (i = 0, list = Object.getOwnPropertyNames(x); i < list.length; i++) {
30
+ if (Object.hasOwnProperty.call(tmp, k = list[i]) && tmp[k] === x[k]) continue;
31
+ set(tmp, k, Object.getOwnPropertyDescriptor(x, k));
32
+ }
33
+ }
34
+ return tmp || x;
35
+ }
36
+
37
+ //#endregion
38
+ export { klona as t };