@lomray/vite-ssr-boost 7.1.0 → 8.0.0-beta.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 (248) hide show
  1. package/README.md +18 -1
  2. package/adapters/body.d.ts +5 -0
  3. package/adapters/body.js +2 -0
  4. package/adapters/body.js.map +1 -0
  5. package/adapters/compression.d.ts +11 -0
  6. package/adapters/compression.js +2 -0
  7. package/adapters/compression.js.map +1 -0
  8. package/adapters/edge.d.ts +11 -0
  9. package/adapters/edge.js +2 -0
  10. package/adapters/edge.js.map +1 -0
  11. package/adapters/express/create-request.d.ts +11 -0
  12. package/adapters/express/create-request.js +2 -0
  13. package/adapters/express/create-request.js.map +1 -0
  14. package/adapters/express/entry.d.ts +55 -0
  15. package/adapters/express/entry.js.map +1 -0
  16. package/{services → adapters/express}/prepare-server.d.ts +15 -40
  17. package/adapters/express/prepare-server.js +2 -0
  18. package/adapters/express/prepare-server.js.map +1 -0
  19. package/adapters/express/render.d.ts +63 -0
  20. package/adapters/express/render.js +2 -0
  21. package/adapters/express/render.js.map +1 -0
  22. package/adapters/express/server.d.ts +15 -0
  23. package/adapters/express/server.js +2 -0
  24. package/adapters/express/server.js.map +1 -0
  25. package/adapters/express.d.ts +11 -0
  26. package/adapters/express.js +2 -0
  27. package/adapters/express.js.map +1 -0
  28. package/adapters/fastify.d.ts +23 -0
  29. package/adapters/fastify.js +2 -0
  30. package/adapters/fastify.js.map +1 -0
  31. package/adapters/hono.d.ts +13 -0
  32. package/adapters/hono.js +2 -0
  33. package/adapters/hono.js.map +1 -0
  34. package/adapters/node.d.ts +19 -0
  35. package/adapters/node.js +2 -0
  36. package/adapters/node.js.map +1 -0
  37. package/browser/entry.d.ts +9 -9
  38. package/browser/entry.js +1 -1
  39. package/browser/entry.js.map +1 -1
  40. package/cli/build.d.ts +2 -2
  41. package/cli/build.js.map +1 -1
  42. package/cli/helpers/keyboard-input.d.ts +1 -1
  43. package/cli/helpers/keyboard-input.js +1 -1
  44. package/cli/helpers/keyboard-input.js.map +1 -1
  45. package/cli/helpers/vite-reset-cache.d.ts +1 -1
  46. package/cli/helpers/vite-reset-cache.js.map +1 -1
  47. package/cli/interfaces/actions.d.ts +8 -9
  48. package/cli/run-amplify-build.d.ts +1 -1
  49. package/cli/run-amplify-build.js.map +1 -1
  50. package/cli/run-dev.d.ts +3 -4
  51. package/cli/run-dev.js +1 -1
  52. package/cli/run-dev.js.map +1 -1
  53. package/cli/run-docker-build.d.ts +2 -2
  54. package/cli/run-docker-build.js.map +1 -1
  55. package/cli/run-prod.d.ts +5 -6
  56. package/cli/run-prod.js +1 -1
  57. package/cli/run-prod.js.map +1 -1
  58. package/cli/run-serverless.d.ts +3 -3
  59. package/cli/run-serverless.js +1 -1
  60. package/cli/run-serverless.js.map +1 -1
  61. package/cli/run-vercel-build.d.ts +1 -1
  62. package/cli/run-vercel-build.js.map +1 -1
  63. package/cli.js +1 -1
  64. package/cli.js.map +1 -1
  65. package/components/navigate.d.ts +3 -3
  66. package/components/navigate.js.map +1 -1
  67. package/components/only-client.d.ts +2 -2
  68. package/components/only-client.js +1 -1
  69. package/components/only-client.js.map +1 -1
  70. package/components/render-client.d.ts +4 -4
  71. package/components/render-client.js +1 -1
  72. package/components/render-client.js.map +1 -1
  73. package/components/response-status.d.ts +2 -2
  74. package/components/response-status.js +1 -1
  75. package/components/response-status.js.map +1 -1
  76. package/components/scroll-to-top.d.ts +2 -2
  77. package/components/scroll-to-top.js +1 -1
  78. package/components/scroll-to-top.js.map +1 -1
  79. package/components/with-suspense.d.ts +3 -3
  80. package/components/with-suspense.js.map +1 -1
  81. package/constants/cli-actions.d.ts +1 -1
  82. package/constants/cli-actions.js.map +1 -1
  83. package/constants/cli-context.d.ts +4 -5
  84. package/constants/cli-context.js.map +1 -1
  85. package/constants/cli-name.d.ts +1 -1
  86. package/constants/cli-name.js.map +1 -1
  87. package/constants/cli-shortcuts.d.ts +2 -2
  88. package/constants/cli-shortcuts.js +1 -1
  89. package/constants/cli-shortcuts.js.map +1 -1
  90. package/constants/common.js.map +1 -1
  91. package/constants/plugin-name.d.ts +1 -1
  92. package/constants/plugin-name.js.map +1 -1
  93. package/constants/stream-error.d.ts +1 -1
  94. package/constants/stream-error.js.map +1 -1
  95. package/context/server.d.ts +3 -4
  96. package/context/server.js.map +1 -1
  97. package/core/compose-html.d.ts +5 -0
  98. package/core/compose-html.js +2 -0
  99. package/core/compose-html.js.map +1 -0
  100. package/core/early-hints.d.ts +6 -0
  101. package/core/early-hints.js +2 -0
  102. package/core/early-hints.js.map +1 -0
  103. package/core/handler.d.ts +30 -0
  104. package/core/handler.js +2 -0
  105. package/core/handler.js.map +1 -0
  106. package/core/head-response.d.ts +5 -0
  107. package/core/head-response.js +2 -0
  108. package/core/head-response.js.map +1 -0
  109. package/core/headers.d.ts +12 -0
  110. package/core/headers.js +2 -0
  111. package/core/headers.js.map +1 -0
  112. package/core/render.d.ts +101 -0
  113. package/core/render.js +2 -0
  114. package/core/render.js.map +1 -0
  115. package/core/transform-html.d.ts +7 -0
  116. package/core/transform-html.js +2 -0
  117. package/core/transform-html.js.map +1 -0
  118. package/core/types.d.ts +7 -0
  119. package/core/types.js +2 -0
  120. package/core/types.js.map +1 -0
  121. package/edge/render-to-stream.d.ts +6 -0
  122. package/edge/render-to-stream.js +2 -0
  123. package/edge/render-to-stream.js.map +1 -0
  124. package/helpers/build-custom-state.d.ts +2 -3
  125. package/helpers/build-custom-state.js +1 -1
  126. package/helpers/build-custom-state.js.map +1 -1
  127. package/helpers/build-router-state.d.ts +2 -2
  128. package/helpers/build-router-state.js.map +1 -1
  129. package/helpers/create-focus-only.d.ts +3 -3
  130. package/helpers/create-focus-only.js.map +1 -1
  131. package/helpers/dev-marker.d.ts +1 -1
  132. package/helpers/dev-marker.js.map +1 -1
  133. package/helpers/get-server-state.d.ts +1 -1
  134. package/helpers/get-server-state.js.map +1 -1
  135. package/helpers/html-escape.d.ts +1 -1
  136. package/helpers/html-escape.js +1 -1
  137. package/helpers/html-escape.js.map +1 -1
  138. package/helpers/import-route.d.ts +7 -7
  139. package/helpers/import-route.js +1 -1
  140. package/helpers/import-route.js.map +1 -1
  141. package/helpers/is-route-file.d.ts +1 -1
  142. package/helpers/is-route-file.js.map +1 -1
  143. package/helpers/obtain-stream-error.d.ts +3 -3
  144. package/helpers/obtain-stream-error.js +1 -1
  145. package/helpers/obtain-stream-error.js.map +1 -1
  146. package/helpers/plugin-config.d.ts +5 -5
  147. package/helpers/plugin-config.js +1 -1
  148. package/helpers/plugin-config.js.map +1 -1
  149. package/helpers/print-server-info.d.ts +3 -4
  150. package/helpers/print-server-info.js +1 -1
  151. package/helpers/print-server-info.js.map +1 -1
  152. package/helpers/print-server-urls.d.ts +2 -2
  153. package/helpers/print-server-urls.js +1 -1
  154. package/helpers/print-server-urls.js.map +1 -1
  155. package/helpers/process-stop.d.ts +1 -1
  156. package/helpers/process-stop.js.map +1 -1
  157. package/helpers/resolve-server-urls.d.ts +3 -4
  158. package/helpers/resolve-server-urls.js +1 -1
  159. package/helpers/resolve-server-urls.js.map +1 -1
  160. package/helpers/serialize-errors.d.ts +2 -2
  161. package/helpers/serialize-errors.js.map +1 -1
  162. package/helpers/vite-aliases.d.ts +2 -2
  163. package/helpers/vite-aliases.js +1 -1
  164. package/helpers/vite-aliases.js.map +1 -1
  165. package/interfaces/fc-route.d.ts +4 -4
  166. package/interfaces/fc-route.js.map +1 -1
  167. package/interfaces/fc.d.ts +3 -4
  168. package/interfaces/route-object.d.ts +6 -6
  169. package/node/compress-response.d.ts +6 -0
  170. package/node/compress-response.js +2 -0
  171. package/node/compress-response.js.map +1 -0
  172. package/node/create-headers.d.ts +6 -0
  173. package/node/create-headers.js +2 -0
  174. package/node/create-headers.js.map +1 -0
  175. package/node/create-request.d.ts +13 -0
  176. package/node/create-request.js +2 -0
  177. package/node/create-request.js.map +1 -0
  178. package/node/http.d.ts +4 -0
  179. package/node/http.js +2 -0
  180. package/node/http.js.map +1 -0
  181. package/node/render-to-stream.d.ts +6 -0
  182. package/node/render-to-stream.js +2 -0
  183. package/node/render-to-stream.js.map +1 -0
  184. package/node/request-signal.d.ts +10 -0
  185. package/node/request-signal.js +2 -0
  186. package/node/request-signal.js.map +1 -0
  187. package/node/split-link-header.d.ts +5 -0
  188. package/node/split-link-header.js +2 -0
  189. package/node/split-link-header.js.map +1 -0
  190. package/node/write-early-hints.d.ts +6 -0
  191. package/node/write-early-hints.js +2 -0
  192. package/node/write-early-hints.js.map +1 -0
  193. package/node/write-fetch-response.d.ts +11 -0
  194. package/node/write-fetch-response.js +2 -0
  195. package/node/write-fetch-response.js.map +1 -0
  196. package/package.json +89 -27
  197. package/plugin.d.ts +7 -7
  198. package/plugin.js.map +1 -1
  199. package/plugins/create-spa-index.d.ts +3 -3
  200. package/plugins/create-spa-index.js.map +1 -1
  201. package/plugins/handle-custom-entrypoint.d.ts +4 -4
  202. package/plugins/handle-custom-entrypoint.js +1 -1
  203. package/plugins/handle-custom-entrypoint.js.map +1 -1
  204. package/plugins/make-aliases.d.ts +3 -3
  205. package/plugins/make-aliases.js +1 -1
  206. package/plugins/make-aliases.js.map +1 -1
  207. package/plugins/normalize-route.d.ts +3 -3
  208. package/plugins/normalize-route.js.map +1 -1
  209. package/services/build.d.ts +5 -51
  210. package/services/build.js +1 -1
  211. package/services/build.js.map +1 -1
  212. package/services/logger.d.ts +2 -30
  213. package/services/logger.js.map +1 -1
  214. package/services/parse-routes.d.ts +5 -42
  215. package/services/parse-routes.js +1 -1
  216. package/services/parse-routes.js.map +1 -1
  217. package/services/path-normalize.d.ts +3 -18
  218. package/services/path-normalize.js +1 -1
  219. package/services/path-normalize.js.map +1 -1
  220. package/services/server-api.d.ts +1 -7
  221. package/services/server-api.js.map +1 -1
  222. package/services/server-config.d.ts +7 -52
  223. package/services/server-config.js +1 -1
  224. package/services/server-config.js.map +1 -1
  225. package/services/ssr-manifest.d.ts +20 -60
  226. package/services/ssr-manifest.js +1 -1
  227. package/services/ssr-manifest.js.map +1 -1
  228. package/workflow/Dockerfile +1 -1
  229. package/helpers/handle-response.d.ts +0 -7
  230. package/helpers/handle-response.js +0 -2
  231. package/helpers/handle-response.js.map +0 -1
  232. package/node/create-fetch-request.d.ts +0 -7
  233. package/node/create-fetch-request.js +0 -2
  234. package/node/create-fetch-request.js.map +0 -1
  235. package/node/entry.d.ts +0 -63
  236. package/node/entry.js.map +0 -1
  237. package/node/render.d.ts +0 -64
  238. package/node/render.js +0 -2
  239. package/node/render.js.map +0 -1
  240. package/node/server.d.ts +0 -16
  241. package/node/server.js +0 -2
  242. package/node/server.js.map +0 -1
  243. package/node/write-response.d.ts +0 -14
  244. package/node/write-response.js +0 -2
  245. package/node/write-response.js.map +0 -1
  246. package/services/prepare-server.js +0 -2
  247. package/services/prepare-server.js.map +0 -1
  248. /package/{node → adapters/express}/entry.js +0 -0
@@ -1,2 +1,2 @@
1
- import e from"../constants/stream-error.js";const r=r=>{const o=(r?.message??"Unknown.").replace("Error: ","");return"The render was aborted by the server without a reason."===o?{code:e.RenderAborted,message:o,original:r}:"The destination stream closed early."===o?{code:e.RenderSkip,message:o,original:r}:{code:e.Unknown,message:o||"Unknown error",original:r}};export{r as default};
1
+ import e from"../constants/stream-error.js";const r=r=>{const o=(r?.message??"Unknown.").replace("Error: ","");return"AbortError"===r?.name||"The render was aborted by the server without a reason."===o?{code:e.RenderAborted,message:o,original:r}:"The destination stream closed early."===o?{code:e.RenderSkip,message:o,original:r}:{code:e.Unknown,message:o||"Unknown error",original:r}};export{r as default};
2
2
  //# sourceMappingURL=obtain-stream-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"obtain-stream-error.js","sources":["../../src/helpers/obtain-stream-error.ts"],"sourcesContent":["import StreamError from '@constants/stream-error';\n\nexport interface IObtainStreamErrorOut {\n code: StreamError;\n message: string;\n original: unknown;\n}\n\n/**\n * Get react stream error\n */\nconst obtainStreamError = (err: unknown): IObtainStreamErrorOut => {\n const message = ((err as Error)?.message ?? 'Unknown.').replace('Error: ', '');\n\n if (message === 'The render was aborted by the server without a reason.') {\n return {\n code: StreamError.RenderAborted,\n message,\n original: err,\n };\n } else if (message === 'The destination stream closed early.') {\n return {\n code: StreamError.RenderSkip,\n message,\n original: err,\n };\n }\n\n return {\n code: StreamError.Unknown,\n message: message || 'Unknown error',\n original: err,\n };\n};\n\nexport default obtainStreamError;\n"],"names":["obtainStreamError","err","message","replace","code","StreamError","RenderAborted","original","RenderSkip","Unknown"],"mappings":"4CAWA,MAAMA,EAAqBC,IACzB,MAAMC,GAAYD,GAAeC,SAAW,YAAYC,QAAQ,UAAW,IAE3E,MAAgB,2DAAZD,EACK,CACLE,KAAMC,EAAYC,cAClBJ,UACAK,SAAUN,GAES,yCAAZC,EACF,CACLE,KAAMC,EAAYG,WAClBN,UACAK,SAAUN,GAIP,CACLG,KAAMC,EAAYI,QAClBP,QAASA,GAAW,gBACpBK,SAAUN,EACX"}
1
+ {"version":3,"file":"obtain-stream-error.js","sources":["../../src/helpers/obtain-stream-error.ts"],"sourcesContent":[null],"names":["obtainStreamError","err","message","replace","name","code","StreamError","RenderAborted","original","RenderSkip","Unknown"],"mappings":"4CAWA,MAAMA,EAAqBC,IACzB,MAAMC,GAAYD,GAAeC,SAAW,YAAYC,QAAQ,UAAW,IAE3E,MAC2B,eAAxBF,GAAeG,MACJ,2DAAZF,EAEO,CACLG,KAAMC,EAAYC,cAClBL,UACAM,SAAUP,GAES,yCAAZC,EACF,CACLG,KAAMC,EAAYG,WAClBP,UACAM,SAAUP,GAIP,CACLI,KAAMC,EAAYI,QAClBR,QAASA,GAAW,gBACpBM,SAAUP"}
@@ -1,7 +1,7 @@
1
- import { ResolvedConfig } from 'vite';
2
- import CliActions from "../constants/cli-actions.js";
3
- import { IPluginOptions } from "../plugin.js";
4
- interface IPluginConfig extends Required<IPluginOptions> {
1
+ import type { ResolvedConfig } from 'vite';
2
+ import type CliActions from '../constants/cli-actions.js';
3
+ import type { IPluginOptions } from '../plugin.js';
4
+ export interface IPluginConfig extends Required<IPluginOptions> {
5
5
  pluginPath: string;
6
6
  action: CliActions;
7
7
  isDev: boolean;
@@ -10,4 +10,4 @@ interface IPluginConfig extends Required<IPluginOptions> {
10
10
  * Get plugin config from vite config
11
11
  */
12
12
  declare function getPluginConfig(viteConfig: ResolvedConfig): IPluginConfig;
13
- export { getPluginConfig as default, IPluginConfig };
13
+ export default getPluginConfig;
@@ -1,2 +1,2 @@
1
- import n from"../constants/plugin-name.js";function t(t){const o=t.plugins.find((t=>t.name===n)),i=o?.pluginOptions;if(!i)throw new Error(`Failed to get to plugin config. Make sure you add the plugin '${n}' to the VITE config.`);return i}export{t as default};
1
+ import n from"../constants/plugin-name.js";function t(t){const o=t.plugins.find(t=>t.name===n),i=o?.pluginOptions;if(!i)throw new Error(`Failed to get to plugin config. Make sure you add the plugin '${n}' to the VITE config.`);return i}export{t as default};
2
2
  //# sourceMappingURL=plugin-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-config.js","sources":["../../src/helpers/plugin-config.ts"],"sourcesContent":["import type { ResolvedConfig } from 'vite';\nimport type CliActions from '@constants/cli-actions';\nimport PLUGIN_NAME from '@constants/plugin-name';\nimport type { IPluginOptions } from '../plugin';\n\nexport interface IPluginConfig extends Required<IPluginOptions> {\n pluginPath: string;\n action: CliActions;\n isDev: boolean;\n}\n\n/**\n * Get plugin config from vite config\n */\nfunction getPluginConfig(viteConfig: ResolvedConfig): IPluginConfig {\n const pluginConfig = viteConfig.plugins.find(\n (plugin) => plugin.name === PLUGIN_NAME,\n ) as ResolvedConfig['plugins'][number] & { pluginOptions?: IPluginConfig };\n const pluginOptions = pluginConfig?.pluginOptions;\n\n if (!pluginOptions) {\n throw new Error(\n `Failed to get to plugin config. Make sure you add the plugin '${PLUGIN_NAME}' to the VITE config.`,\n );\n }\n\n return pluginOptions;\n}\n\nexport default getPluginConfig;\n"],"names":["getPluginConfig","viteConfig","pluginConfig","plugins","find","plugin","name","PLUGIN_NAME","pluginOptions","Error"],"mappings":"2CAcA,SAASA,EAAgBC,GACvB,MAAMC,EAAeD,EAAWE,QAAQC,MACrCC,GAAWA,EAAOC,OAASC,IAExBC,EAAgBN,GAAcM,cAEpC,IAAKA,EACH,MAAM,IAAIC,MACR,iEAAiEF,0BAIrE,OAAOC,CACT"}
1
+ {"version":3,"file":"plugin-config.js","sources":["../../src/helpers/plugin-config.ts"],"sourcesContent":[null],"names":["getPluginConfig","viteConfig","pluginConfig","plugins","find","plugin","name","PLUGIN_NAME","pluginOptions","Error"],"mappings":"2CAcA,SAASA,EAAgBC,GACvB,MAAMC,EAAeD,EAAWE,QAAQC,KACrCC,GAAWA,EAAOC,OAASC,GAExBC,EAAgBN,GAAcM,cAEpC,IAAKA,EACH,MAAM,IAAIC,MACR,iEAAiEF,0BAIrE,OAAOC,CACT"}
@@ -1,6 +1,5 @@
1
- /// <reference types="node" />
2
- import { Server } from 'node:net';
3
- import ServerConfig from "../services/server-config.js";
1
+ import type { Server } from 'node:net';
2
+ import type ServerConfig from '../services/server-config.js';
4
3
  interface IPrintServerInfoParams {
5
4
  version?: string;
6
5
  server?: Server;
@@ -9,4 +8,4 @@ interface IPrintServerInfoParams {
9
8
  * Print server info
10
9
  */
11
10
  declare function printServerInfo(config: ServerConfig, { server, version }?: IPrintServerInfoParams): Promise<void>;
12
- export { printServerInfo as default };
11
+ export default printServerInfo;
@@ -1,2 +1,2 @@
1
- import e from"node:fs";import{performance as o}from"node:perf_hooks";import r from"chalk";import s from"../constants/cli-actions.js";import t from"../constants/cli-name.js";import{getMarkerFile as i}from"./dev-marker.js";import n from"./print-server-urls.js";import m from"./resolve-server-urls.js";async function a(a,{server:d,version:l="unknown"}={}){const{action:p}=a.getPluginConfig()??{},{isProd:f,host:c,root:g,isSPA:v}=a.getParams(),h=i(g),u=a.getLogger(),w=global.viteBoostStartTime??o.now(),b=r.dim(`ready in ${r.reset(r.bold(Math.ceil(o.now()-w)))} ms`);u.info(`\n ${r.green(`${r.bold(t.toUpperCase())} v${l}`)} ${b}\n`,{clear:!u.hasWarned});const S=a.getVite()?.config,$=!S?.mode&&!e.existsSync(h),j=d?await m(d,{host:c,isHttps:Boolean(S?.server.https),rawBase:S?.rawBase}):null,P=S?.mode||$?a.mode:`production ${r.red("NODE_ENV=development")}`,k=v?"SPA":"SSR";if(u.info(r.dim(r.green(" ➜"))+r.dim(" Mode: ")+r.blue(P)),u.info(r.dim(r.green(" ➜"))+r.dim(" Type: ")+r.blue(k)),f)j&&n(j,(e=>u.info(e)));else{const e=a.getVite();e.resolvedUrls=j,e.printUrls()}p===s.dev&&u.info(r.dim(r.green(" ➜"))+r.dim(" press ")+r.bold("h")+r.dim(" to show help"))}export{a as default};
1
+ import e from"node:fs";import{performance as o}from"node:perf_hooks";import r from"chalk";import s from"../constants/cli-actions.js";import t from"../constants/cli-name.js";import{getMarkerFile as i}from"./dev-marker.js";import n from"./print-server-urls.js";import m from"./resolve-server-urls.js";async function a(a,{server:d,version:l="unknown"}={}){const{action:p}=a.getPluginConfig()??{},{isProd:f,host:c,root:g,isSPA:v}=a.getParams(),h=i(g),u=a.getLogger(),w=global.viteBoostStartTime??o.now(),b=r.dim(`ready in ${r.reset(r.bold(Math.ceil(o.now()-w)))} ms`);u.info(`\n ${r.green(`${r.bold(t.toUpperCase())} v${l}`)} ${b}\n`,{clear:!u.hasWarned});const S=a.getVite()?.config,$=!S?.mode&&!e.existsSync(h),j=d?await m(d,{host:c,isHttps:Boolean(S?.server.https),rawBase:S?.rawBase}):null,P=S?.mode||$?a.mode:`production ${r.red("NODE_ENV=development")}`,k=v?"SPA":"SSR";if(u.info(r.dim(r.green(" ➜"))+r.dim(" Mode: ")+r.blue(P)),u.info(r.dim(r.green(" ➜"))+r.dim(" Type: ")+r.blue(k)),f)j&&n(j,e=>u.info(e));else{const e=a.getVite();e.resolvedUrls=j,e.printUrls()}p===s.dev&&u.info(r.dim(r.green(" ➜"))+r.dim(" press ")+r.bold("h")+r.dim(" to show help"))}export{a as default};
2
2
  //# sourceMappingURL=print-server-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"print-server-info.js","sources":["../../src/helpers/print-server-info.ts"],"sourcesContent":["import fs from 'node:fs';\nimport type { Server } from 'node:net';\nimport { performance } from 'node:perf_hooks';\nimport chalk from 'chalk';\nimport type { ResolvedConfig } from 'vite';\nimport CliActions from '@constants/cli-actions';\nimport cliName from '@constants/cli-name';\nimport { getMarkerFile } from '@helpers/dev-marker';\nimport printServerUrls from '@helpers/print-server-urls';\nimport resolveServerUrls from '@helpers/resolve-server-urls';\nimport type ServerConfig from '@services/server-config';\n\ninterface IPrintServerInfoParams {\n version?: string;\n server?: Server;\n}\n\n/**\n * Print server info\n */\nasync function printServerInfo(\n config: ServerConfig,\n { server, version = 'unknown' }: IPrintServerInfoParams = {},\n): Promise<void> {\n const { action } = config.getPluginConfig() ?? {};\n const { isProd, host, root, isSPA } = config.getParams();\n const devMarker = getMarkerFile(root);\n\n const Logger = config.getLogger();\n const perfStart = global.viteBoostStartTime ?? performance.now();\n const startupDurationString = chalk.dim(\n `ready in ${chalk.reset(chalk.bold(Math.ceil(performance.now() - perfStart)))} ms`,\n );\n\n Logger.info(\n `\\n ${chalk.green(\n `${chalk.bold(cliName.toUpperCase())} v${version}`,\n )} ${startupDurationString}\\n`,\n { clear: !Logger.hasWarned },\n );\n\n const viteConfig = config.getVite()?.config as\n | (ResolvedConfig & { rawBase?: string })\n | undefined;\n const isProdBuild = !viteConfig?.mode && !fs.existsSync(devMarker);\n const resolvedUrls = server\n ? await resolveServerUrls(server, {\n host,\n isHttps: Boolean(viteConfig?.server.https),\n rawBase: viteConfig?.rawBase,\n })\n : null;\n const mode =\n viteConfig?.mode || isProdBuild\n ? config.mode\n : `production ${chalk.red('NODE_ENV=development')}`;\n const type = isSPA ? 'SPA' : 'SSR';\n\n Logger.info(chalk.dim(chalk.green(' ➜')) + chalk.dim(' Mode: ') + chalk.blue(mode));\n Logger.info(chalk.dim(chalk.green(' ➜')) + chalk.dim(' Type: ') + chalk.blue(type));\n\n if (!isProd) {\n const vite = config.getVite()!;\n\n vite.resolvedUrls = resolvedUrls;\n vite.printUrls();\n } else if (resolvedUrls) {\n printServerUrls(resolvedUrls, (msg) => Logger.info(msg));\n }\n\n if (action === CliActions.dev) {\n Logger.info(\n chalk.dim(chalk.green(' ➜')) +\n chalk.dim(' press ') +\n chalk.bold('h') +\n chalk.dim(' to show help'),\n );\n }\n}\n\nexport default printServerInfo;\n"],"names":["async","printServerInfo","config","server","version","action","getPluginConfig","isProd","host","root","isSPA","getParams","devMarker","getMarkerFile","Logger","getLogger","perfStart","global","viteBoostStartTime","performance","now","startupDurationString","chalk","dim","reset","bold","Math","ceil","info","green","cliName","toUpperCase","clear","hasWarned","viteConfig","getVite","isProdBuild","mode","fs","existsSync","resolvedUrls","resolveServerUrls","isHttps","Boolean","https","rawBase","red","type","blue","printServerUrls","msg","vite","printUrls","CliActions","dev"],"mappings":"2SAoBAA,eAAeC,EACbC,GACAC,OAAEA,EAAMC,QAAEA,EAAU,WAAsC,IAE1D,MAAMC,OAAEA,GAAWH,EAAOI,mBAAqB,CAAA,GACzCC,OAAEA,EAAMC,KAAEA,EAAIC,KAAEA,EAAIC,MAAEA,GAAUR,EAAOS,YACvCC,EAAYC,EAAcJ,GAE1BK,EAASZ,EAAOa,YAChBC,EAAYC,OAAOC,oBAAsBC,EAAYC,MACrDC,EAAwBC,EAAMC,IAClC,YAAYD,EAAME,MAAMF,EAAMG,KAAKC,KAAKC,KAAKR,EAAYC,MAAQJ,WAGnEF,EAAOc,KACL,OAAON,EAAMO,MACX,GAAGP,EAAMG,KAAKK,EAAQC,mBAAmB3B,SACrCiB,MACN,CAAEW,OAAQlB,EAAOmB,YAGnB,MAAMC,EAAahC,EAAOiC,WAAWjC,OAG/BkC,GAAeF,GAAYG,OAASC,EAAGC,WAAW3B,GAClD4B,EAAerC,QACXsC,EAAkBtC,EAAQ,CAC9BK,OACAkC,QAASC,QAAQT,GAAY/B,OAAOyC,OACpCC,QAASX,GAAYW,UAEvB,KACER,EACJH,GAAYG,MAAQD,EAChBlC,EAAOmC,KACP,cAAcf,EAAMwB,IAAI,0BACxBC,EAAOrC,EAAQ,MAAQ,MAK7B,GAHAI,EAAOc,KAAKN,EAAMC,IAAID,EAAMO,MAAM,QAAUP,EAAMC,IAAI,eAAiBD,EAAM0B,KAAKX,IAClFvB,EAAOc,KAAKN,EAAMC,IAAID,EAAMO,MAAM,QAAUP,EAAMC,IAAI,eAAiBD,EAAM0B,KAAKD,IAE7ExC,EAKMiC,GACTS,EAAgBT,GAAeU,GAAQpC,EAAOc,KAAKsB,SANxC,CACX,MAAMC,EAAOjD,EAAOiC,UAEpBgB,EAAKX,aAAeA,EACpBW,EAAKC,WACP,CAII/C,IAAWgD,EAAWC,KACxBxC,EAAOc,KACLN,EAAMC,IAAID,EAAMO,MAAM,QACpBP,EAAMC,IAAI,YACVD,EAAMG,KAAK,KACXH,EAAMC,IAAI,iBAGlB"}
1
+ {"version":3,"file":"print-server-info.js","sources":["../../src/helpers/print-server-info.ts"],"sourcesContent":[null],"names":["async","printServerInfo","config","server","version","action","getPluginConfig","isProd","host","root","isSPA","getParams","devMarker","getMarkerFile","Logger","getLogger","perfStart","global","viteBoostStartTime","performance","now","startupDurationString","chalk","dim","reset","bold","Math","ceil","info","green","cliName","toUpperCase","clear","hasWarned","viteConfig","getVite","isProdBuild","mode","fs","existsSync","resolvedUrls","resolveServerUrls","isHttps","Boolean","https","rawBase","red","type","blue","printServerUrls","msg","vite","printUrls","CliActions","dev"],"mappings":"2SAoBAA,eAAeC,EACbC,GACAC,OAAEA,EAAMC,QAAEA,EAAU,WAAsC,IAE1D,MAAMC,OAAEA,GAAWH,EAAOI,mBAAqB,CAAA,GACzCC,OAAEA,EAAMC,KAAEA,EAAIC,KAAEA,EAAIC,MAAEA,GAAUR,EAAOS,YACvCC,EAAYC,EAAcJ,GAE1BK,EAASZ,EAAOa,YAChBC,EAAYC,OAAOC,oBAAsBC,EAAYC,MACrDC,EAAwBC,EAAMC,IAClC,YAAYD,EAAME,MAAMF,EAAMG,KAAKC,KAAKC,KAAKR,EAAYC,MAAQJ,WAGnEF,EAAOc,KACL,OAAON,EAAMO,MACX,GAAGP,EAAMG,KAAKK,EAAQC,mBAAmB3B,SACrCiB,MACN,CAAEW,OAAQlB,EAAOmB,YAGnB,MAAMC,EAAkEhC,EAAOiC,WAAWjC,OACpFkC,GAAeF,GAAYG,OAASC,EAAGC,WAAW3B,GAClD4B,EAAerC,QACXsC,EAAkBtC,EAAQ,CAC9BK,OACAkC,QAASC,QAAQT,GAAY/B,OAAOyC,OACpCC,QAASX,GAAYW,UAEvB,KACER,EACJH,GAAYG,MAAQD,EAChBlC,EAAOmC,KACP,cAAcf,EAAMwB,IAAI,0BACxBC,EAAOrC,EAAQ,MAAQ,MAK7B,GAHAI,EAAOc,KAAKN,EAAMC,IAAID,EAAMO,MAAM,QAAUP,EAAMC,IAAI,eAAiBD,EAAM0B,KAAKX,IAClFvB,EAAOc,KAAKN,EAAMC,IAAID,EAAMO,MAAM,QAAUP,EAAMC,IAAI,eAAiBD,EAAM0B,KAAKD,IAE7ExC,EAKMiC,GACTS,EAAgBT,EAAeU,GAAQpC,EAAOc,KAAKsB,QANxC,CACX,MAAMC,EAAOjD,EAAOiC,UAEpBgB,EAAKX,aAAeA,EACpBW,EAAKC,WACP,CAII/C,IAAWgD,EAAWC,KACxBxC,EAAOc,KACLN,EAAMC,IAAID,EAAMO,MAAM,QACpBP,EAAMC,IAAI,YACVD,EAAMG,KAAK,KACXH,EAAMC,IAAI,iBAGlB"}
@@ -1,8 +1,8 @@
1
- import { Logger, ResolvedServerUrls } from 'vite';
1
+ import type { Logger, ResolvedServerUrls } from 'vite';
2
2
  /**
3
3
  * Print server urls
4
4
  * @see https://github.com/vitejs/vite/blob/711dd807610b39538e9955970145d52e4ca1d8c0/packages/vite/src/node/logger.ts#LL142C1-L162C2
5
5
  * vite not export this function
6
6
  */
7
7
  declare function printServerUrls(urls: ResolvedServerUrls, info: Logger['info']): void;
8
- export { printServerUrls as default };
8
+ export default printServerUrls;
@@ -1,2 +1,2 @@
1
- import o from"chalk";function e(e,n){const r=e=>o.cyan(e.replace(/:(\d+)\//,((e,n)=>`:${o.bold(n)}/`)));for(const c of e.local)n(` ${o.green("➜")} ${o.bold("Local")}: ${r(c)}`);for(const c of e.network)n(` ${o.green("➜")} ${o.bold("Network")}: ${r(c)}`);n("\n")}export{e as default};
1
+ import o from"chalk";function e(e,n){const r=e=>o.cyan(e.replace(/:(\d+)\//,(e,n)=>`:${o.bold(n)}/`));for(const c of e.local)n(` ${o.green("➜")} ${o.bold("Local")}: ${r(c)}`);for(const c of e.network)n(` ${o.green("➜")} ${o.bold("Network")}: ${r(c)}`);n("\n")}export{e as default};
2
2
  //# sourceMappingURL=print-server-urls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"print-server-urls.js","sources":["../../src/helpers/print-server-urls.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { Logger, ResolvedServerUrls } from 'vite';\n\n/**\n * Print server urls\n * @see https://github.com/vitejs/vite/blob/711dd807610b39538e9955970145d52e4ca1d8c0/packages/vite/src/node/logger.ts#LL142C1-L162C2\n * vite not export this function\n */\nfunction printServerUrls(urls: ResolvedServerUrls, info: Logger['info']): void {\n const colorUrl = (url: string) =>\n chalk.cyan(url.replace(/:(\\d+)\\//, (_, port) => `:${chalk.bold(port)}/`));\n for (const url of urls.local) {\n info(` ${chalk.green('➜')} ${chalk.bold('Local')}: ${colorUrl(url)}`);\n }\n for (const url of urls.network) {\n info(` ${chalk.green('➜')} ${chalk.bold('Network')}: ${colorUrl(url)}`);\n }\n\n info('\\n');\n}\n\nexport default printServerUrls;\n"],"names":["printServerUrls","urls","info","colorUrl","url","chalk","cyan","replace","_","port","bold","local","green","network"],"mappings":"qBAQA,SAASA,EAAgBC,EAA0BC,GACjD,MAAMC,EAAYC,GAChBC,EAAMC,KAAKF,EAAIG,QAAQ,YAAY,CAACC,EAAGC,IAAS,IAAIJ,EAAMK,KAAKD,SACjE,IAAK,MAAML,KAAOH,EAAKU,MACrBT,EAAK,KAAKG,EAAMO,MAAM,SAASP,EAAMK,KAAK,eAAeP,EAASC,MAEpE,IAAK,MAAMA,KAAOH,EAAKY,QACrBX,EAAK,KAAKG,EAAMO,MAAM,SAASP,EAAMK,KAAK,eAAeP,EAASC,MAGpEF,EAAK,KACP"}
1
+ {"version":3,"file":"print-server-urls.js","sources":["../../src/helpers/print-server-urls.ts"],"sourcesContent":[null],"names":["printServerUrls","urls","info","colorUrl","url","chalk","cyan","replace","_","port","bold","local","green","network"],"mappings":"qBAQA,SAASA,EAAgBC,EAA0BC,GACjD,MAAMC,EAAYC,GAChBC,EAAMC,KAAKF,EAAIG,QAAQ,WAAY,CAACC,EAAGC,IAAS,IAAIJ,EAAMK,KAAKD,QACjE,IAAK,MAAML,KAAOH,EAAKU,MACrBT,EAAK,KAAKG,EAAMO,MAAM,SAASP,EAAMK,KAAK,eAAeP,EAASC,MAEpE,IAAK,MAAMA,KAAOH,EAAKY,QACrBX,EAAK,KAAKG,EAAMO,MAAM,SAASP,EAAMK,KAAK,eAAeP,EAASC,MAGpEF,EAAK,KACP"}
@@ -2,4 +2,4 @@
2
2
  * Stop node process
3
3
  */
4
4
  declare const processStop: (code?: number | string | null, isOnlyError?: boolean) => void;
5
- export { processStop as default };
5
+ export default processStop;
@@ -1 +1 @@
1
- {"version":3,"file":"process-stop.js","sources":["../../src/helpers/process-stop.ts"],"sourcesContent":["import process from 'node:process';\n\n/**\n * Stop node process\n */\nconst processStop = (code: number | string | null = 0, isOnlyError = false): void => {\n if (isOnlyError && (code === 0 || code === null)) {\n return;\n }\n\n if (typeof code === 'string') {\n console.error(code);\n\n return process.exit(1);\n }\n\n process.exit(code === null ? 0 : code);\n};\n\nexport default processStop;\n"],"names":["processStop","code","isOnlyError","console","error","process","exit"],"mappings":"4BAKA,MAAMA,EAAc,CAACC,EAA+B,EAAGC,GAAc,KACnE,IAAIA,GAAyB,IAATD,GAAuB,OAATA,EAIlC,MAAoB,iBAATA,GACTE,QAAQC,MAAMH,GAEPI,EAAQC,KAAK,SAGtBD,EAAQC,KAAc,OAATL,EAAgB,EAAIA,EAAK"}
1
+ {"version":3,"file":"process-stop.js","sources":["../../src/helpers/process-stop.ts"],"sourcesContent":[null],"names":["processStop","code","isOnlyError","console","error","process","exit"],"mappings":"4BAKA,MAAMA,EAAc,CAACC,EAA+B,EAAGC,GAAc,KACnE,IAAIA,GAAyB,IAATD,GAAuB,OAATA,EAIlC,MAAoB,iBAATA,GACTE,QAAQC,MAAMH,GAEPI,EAAQC,KAAK,SAGtBD,EAAQC,KAAc,OAATL,EAAgB,EAAIA"}
@@ -1,6 +1,5 @@
1
- /// <reference types="node" />
2
- import { Server } from 'node:net';
3
- import { ResolvedServerUrls } from 'vite';
1
+ import type { Server } from 'node:net';
2
+ import type { ResolvedServerUrls } from 'vite';
4
3
  interface IResolveServerUrlsOptions {
5
4
  host: string;
6
5
  isHttps?: boolean;
@@ -12,4 +11,4 @@ interface IResolveServerUrlsOptions {
12
11
  * vite not export this function
13
12
  */
14
13
  declare function resolveServerUrls(server: Server, options: IResolveServerUrlsOptions): Promise<ResolvedServerUrls>;
15
- export { resolveServerUrls as default };
14
+ export default resolveServerUrls;
@@ -1,2 +1,2 @@
1
- import{promises as s}from"node:dns";import o from"node:os";const t=new Set(["localhost","127.0.0.1","::1","0000:0000:0000:0000:0000:0000:0000:0001"]),a=new Set(["0.0.0.0","::","0000:0000:0000:0000:0000:0000:0000:0000"]);async function e(o){let t;t=void 0===o||!1===o?"localhost":!0===o?void 0:o;let e=void 0===t||a.has(t)?"localhost":t;if("localhost"===t){const o=await async function(){const[o,t]=await Promise.all([s.lookup("localhost"),s.lookup("localhost",{verbatim:!0})]);return o.family===t.family&&o.address===t.address?void 0:o.address}();o&&(e=o)}return{host:t,name:e}}async function l(s,l){const n=s.address();if("object"!=typeof(r=n)||!Boolean(r?.address))return{local:[],network:[]};var r;const{host:c,isHttps:d,rawBase:i}=l,h=[],f=[],u=await e(c),p=d?"https":"http",{port:m}=n,$="./"!==i&&""!==i&&i?i:"/";if(void 0===u.host||a.has(u.host))Object.values(o.networkInterfaces()).flatMap((s=>s??[])).filter((s=>s&&s.address&&("IPv4"===s.family||4===s.family))).forEach((s=>{let o=s.address.replace("127.0.0.1",u.name);o.includes(":")&&(o=`[${o}]`);const t=`${p}://${o}:${m}${$}`;s.address.includes("127.0.0.1")?h.push(t):f.push(t)}));else{let s=u.name;s.includes(":")&&(s=`[${s}]`);const o=`${p}://${s}:${m}${$}`;t.has(u.host)?h.push(o):f.push(o)}return{local:h,network:f}}export{l as default};
1
+ import{promises as s}from"node:dns";import o from"node:os";const t=new Set(["localhost","127.0.0.1","::1","0000:0000:0000:0000:0000:0000:0000:0001"]),a=new Set(["0.0.0.0","::","0000:0000:0000:0000:0000:0000:0000:0000"]);async function e(o){let t;t=void 0===o||!1===o?"localhost":!0===o?void 0:o;let e=void 0===t||a.has(t)?"localhost":t;if("localhost"===t){const o=await async function(){const[o,t]=await Promise.all([s.lookup("localhost"),s.lookup("localhost",{verbatim:!0})]);return o.family===t.family&&o.address===t.address?void 0:o.address}();o&&(e=o)}return{host:t,name:e}}async function l(s,l){const n=s.address();if("object"!=typeof(r=n)||!Boolean(r?.address))return{local:[],network:[]};var r;const{host:c,isHttps:d,rawBase:i}=l,h=[],f=[],u=await e(c),p=d?"https":"http",{port:m}=n,$="./"!==i&&""!==i&&i?i:"/";if(void 0===u.host||a.has(u.host))Object.values(o.networkInterfaces()).flatMap(s=>s??[]).filter(s=>s&&s.address&&("IPv4"===s.family||4===s.family)).forEach(s=>{let o=s.address.replace("127.0.0.1",u.name);o.includes(":")&&(o=`[${o}]`);const t=`${p}://${o}:${m}${$}`;s.address.includes("127.0.0.1")?h.push(t):f.push(t)});else{let s=u.name;s.includes(":")&&(s=`[${s}]`);const o=`${p}://${s}:${m}${$}`;t.has(u.host)?h.push(o):f.push(o)}return{local:h,network:f}}export{l as default};
2
2
  //# sourceMappingURL=resolve-server-urls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-server-urls.js","sources":["../../src/helpers/resolve-server-urls.ts"],"sourcesContent":["import { promises as dns } from 'node:dns';\nimport type { AddressInfo, Server } from 'node:net';\nimport os from 'node:os';\nimport type { ResolvedServerUrls } from 'vite';\n\ninterface IHostname {\n host: string | undefined;\n name: string;\n}\n\nconst loopbackHosts = new Set([\n 'localhost',\n '127.0.0.1',\n '::1',\n '0000:0000:0000:0000:0000:0000:0000:0001',\n]);\n\nconst wildcardHosts = new Set(['0.0.0.0', '::', '0000:0000:0000:0000:0000:0000:0000:0000']);\n\n/**\n * @see https://github.com/vitejs/vite/blob/main/packages/vite/src/node/utils.ts#LL819C8-L830C2\n */\nasync function getLocalhostAddressIfDiffersFromDNS(): Promise<string | undefined> {\n const [nodeResult, dnsResult] = await Promise.all([\n dns.lookup('localhost'),\n dns.lookup('localhost', { verbatim: true }),\n ]);\n const isSame = nodeResult.family === dnsResult.family && nodeResult.address === dnsResult.address;\n\n return isSame ? undefined : nodeResult.address;\n}\n\n/**\n * Resolve hostname\n * @see https://github.com/vitejs/vite/blob/main/packages/vite/src/node/utils.ts#LL852C1-L878C2\n * vite not export this function\n */\nasync function resolveHostname(optionsHost: string | boolean | undefined): Promise<IHostname> {\n let host: string | undefined;\n\n if (optionsHost === undefined || optionsHost === false) {\n // Use a secure default\n host = 'localhost';\n } else if (optionsHost === true) {\n // If passed --host in the CLI without arguments\n host = undefined; // undefined typically means 0.0.0.0 or :: (listen on all IPs)\n } else {\n host = optionsHost;\n }\n\n // Set host name to localhost when possible\n let name = host === undefined || wildcardHosts.has(host) ? 'localhost' : host;\n\n if (host === 'localhost') {\n // See #8647 for more details.\n const localhostAddr = await getLocalhostAddressIfDiffersFromDNS();\n\n if (localhostAddr) {\n name = localhostAddr;\n }\n }\n\n return { host, name };\n}\n\ninterface IResolveServerUrlsOptions {\n host: string;\n isHttps?: boolean;\n rawBase?: string;\n}\n\n/**\n * Resolve server urls\n * @see https://github.com/vitejs/vite/blob/main/packages/vite/src/node/utils.ts#L956\n * vite not export this function\n */\nasync function resolveServerUrls(\n server: Server,\n options: IResolveServerUrlsOptions,\n): Promise<ResolvedServerUrls> {\n const address = server.address();\n\n const isAddressInfo = (x: AddressInfo | null | string): x is AddressInfo =>\n (typeof x === 'object' && Boolean(x?.address)) || false;\n\n if (!isAddressInfo(address)) {\n return { local: [], network: [] };\n }\n\n const { host, isHttps, rawBase } = options;\n\n const local: string[] = [];\n const network: string[] = [];\n const hostname = await resolveHostname(host);\n const protocol = isHttps ? 'https' : 'http';\n const { port } = address;\n const base = rawBase === './' || rawBase === '' || !rawBase ? '/' : rawBase;\n\n if (hostname.host !== undefined && !wildcardHosts.has(hostname.host)) {\n let hostnameName = hostname.name;\n\n // ipv6 host\n if (hostnameName.includes(':')) {\n hostnameName = `[${hostnameName}]`;\n }\n\n const addressUrl = `${protocol}://${hostnameName}:${port}${base}`;\n\n if (loopbackHosts.has(hostname.host)) {\n local.push(addressUrl);\n } else {\n network.push(addressUrl);\n }\n } else {\n Object.values(os.networkInterfaces())\n .flatMap((nInterface) => nInterface ?? [])\n .filter(\n (detail) =>\n detail &&\n detail.address &&\n (detail.family === 'IPv4' ||\n // @ts-expect-error Node 18.0 - 18.3 returns number\n detail.family === 4),\n )\n .forEach((detail) => {\n let resultHost = detail.address.replace('127.0.0.1', hostname.name);\n\n // ipv6 host\n if (resultHost.includes(':')) {\n resultHost = `[${resultHost}]`;\n }\n\n const url = `${protocol}://${resultHost}:${port}${base}`;\n\n if (detail.address.includes('127.0.0.1')) {\n local.push(url);\n } else {\n network.push(url);\n }\n });\n }\n\n return { local, network };\n}\n\nexport default resolveServerUrls;\n"],"names":["loopbackHosts","Set","wildcardHosts","async","resolveHostname","optionsHost","host","undefined","name","has","localhostAddr","nodeResult","dnsResult","Promise","all","dns","lookup","verbatim","family","address","getLocalhostAddressIfDiffersFromDNS","resolveServerUrls","server","options","x","Boolean","local","network","isHttps","rawBase","hostname","protocol","port","base","Object","values","os","networkInterfaces","flatMap","nInterface","filter","detail","forEach","resultHost","replace","includes","url","push","hostnameName","addressUrl"],"mappings":"2DAUA,MAAMA,EAAgB,IAAIC,IAAI,CAC5B,YACA,YACA,MACA,4CAGIC,EAAgB,IAAID,IAAI,CAAC,UAAW,KAAM,4CAoBhDE,eAAeC,EAAgBC,GAC7B,IAAIC,EAIFA,OAFkBC,IAAhBF,IAA6C,IAAhBA,EAExB,aACkB,IAAhBA,OAEFE,EAEAF,EAIT,IAAIG,OAAgBD,IAATD,GAAsBJ,EAAcO,IAAIH,GAAQ,YAAcA,EAEzE,GAAa,cAATA,EAAsB,CAExB,MAAMI,QAjCVP,iBACE,MAAOQ,EAAYC,SAAmBC,QAAQC,IAAI,CAChDC,EAAIC,OAAO,aACXD,EAAIC,OAAO,YAAa,CAAEC,UAAU,MAItC,OAFeN,EAAWO,SAAWN,EAAUM,QAAUP,EAAWQ,UAAYP,EAAUO,aAE1EZ,EAAYI,EAAWQ,OACzC,CAyBgCC,GAExBV,IACFF,EAAOE,EAEX,CAEA,MAAO,CAAEJ,OAAME,OACjB,CAaAL,eAAekB,EACbC,EACAC,GAEA,MAAMJ,EAAUG,EAAOH,UAKvB,GAFgB,iBADOK,EAGJL,KAFSM,QAAQD,GAAGL,SAGrC,MAAO,CAAEO,MAAO,GAAIC,QAAS,IAJT,IAACH,EAOvB,MAAMlB,KAAEA,EAAIsB,QAAEA,EAAOC,QAAEA,GAAYN,EAE7BG,EAAkB,GAClBC,EAAoB,GACpBG,QAAiB1B,EAAgBE,GACjCyB,EAAWH,EAAU,QAAU,QAC/BI,KAAEA,GAASb,EACXc,EAAmB,OAAZJ,GAAgC,KAAZA,GAAmBA,EAAgBA,EAAN,IAE9D,QAAsBtB,IAAlBuB,EAASxB,MAAuBJ,EAAcO,IAAIqB,EAASxB,MAgB7D4B,OAAOC,OAAOC,EAAGC,qBACdC,SAASC,GAAeA,GAAc,KACtCC,QACEC,GACCA,GACAA,EAAOtB,UACY,SAAlBsB,EAAOvB,QAEY,IAAlBuB,EAAOvB,UAEZwB,SAASD,IACR,IAAIE,EAAaF,EAAOtB,QAAQyB,QAAQ,YAAad,EAAStB,MAG1DmC,EAAWE,SAAS,OACtBF,EAAa,IAAIA,MAGnB,MAAMG,EAAM,GAAGf,OAAcY,KAAcX,IAAOC,IAE9CQ,EAAOtB,QAAQ0B,SAAS,aAC1BnB,EAAMqB,KAAKD,GAEXnB,EAAQoB,KAAKD,EACf,QAxCgE,CACpE,IAAIE,EAAelB,EAAStB,KAGxBwC,EAAaH,SAAS,OACxBG,EAAe,IAAIA,MAGrB,MAAMC,EAAa,GAAGlB,OAAciB,KAAgBhB,IAAOC,IAEvDjC,EAAcS,IAAIqB,EAASxB,MAC7BoB,EAAMqB,KAAKE,GAEXtB,EAAQoB,KAAKE,EAEjB,CA6BA,MAAO,CAAEvB,QAAOC,UAClB"}
1
+ {"version":3,"file":"resolve-server-urls.js","sources":["../../src/helpers/resolve-server-urls.ts"],"sourcesContent":[null],"names":["loopbackHosts","Set","wildcardHosts","async","resolveHostname","optionsHost","host","undefined","name","has","localhostAddr","nodeResult","dnsResult","Promise","all","dns","lookup","verbatim","family","address","getLocalhostAddressIfDiffersFromDNS","resolveServerUrls","server","options","x","Boolean","local","network","isHttps","rawBase","hostname","protocol","port","base","Object","values","os","networkInterfaces","flatMap","nInterface","filter","detail","forEach","resultHost","replace","includes","url","push","hostnameName","addressUrl"],"mappings":"2DAUA,MAAMA,EAAgB,IAAIC,IAAI,CAC5B,YACA,YACA,MACA,4CAGIC,EAAgB,IAAID,IAAI,CAAC,UAAW,KAAM,4CAoBhDE,eAAeC,EAAgBC,GAC7B,IAAIC,EAIFA,OAFkBC,IAAhBF,IAA6C,IAAhBA,EAExB,aACkB,IAAhBA,OAEFE,EAEAF,EAIT,IAAIG,OAAgBD,IAATD,GAAsBJ,EAAcO,IAAIH,GAAQ,YAAcA,EAEzE,GAAa,cAATA,EAAsB,CAExB,MAAMI,QAjCVP,iBACE,MAAOQ,EAAYC,SAAmBC,QAAQC,IAAI,CAChDC,EAAIC,OAAO,aACXD,EAAIC,OAAO,YAAa,CAAEC,UAAU,MAItC,OAFeN,EAAWO,SAAWN,EAAUM,QAAUP,EAAWQ,UAAYP,EAAUO,aAE1EZ,EAAYI,EAAWQ,OACzC,CAyBgCC,GAExBV,IACFF,EAAOE,EAEX,CAEA,MAAO,CAAEJ,OAAME,OACjB,CAaAL,eAAekB,EACbC,EACAC,GAEA,MAAMJ,EAAUG,EAAOH,UAKvB,GAFgB,iBADOK,EAGJL,KAFSM,QAAQD,GAAGL,SAGrC,MAAO,CAAEO,MAAO,GAAIC,QAAS,IAJT,IAACH,EAOvB,MAAMlB,KAAEA,EAAIsB,QAAEA,EAAOC,QAAEA,GAAYN,EAE7BG,EAAkB,GAClBC,EAAoB,GACpBG,QAAiB1B,EAAgBE,GACjCyB,EAAWH,EAAU,QAAU,QAC/BI,KAAEA,GAASb,EACXc,EAAmB,OAAZJ,GAAgC,KAAZA,GAAmBA,EAAgBA,EAAN,IAE9D,QAAsBtB,IAAlBuB,EAASxB,MAAuBJ,EAAcO,IAAIqB,EAASxB,MAgB7D4B,OAAOC,OAAOC,EAAGC,qBACdC,QAASC,GAAeA,GAAc,IACtCC,OACEC,GACCA,GACAA,EAAOtB,UACY,SAAlBsB,EAAOvB,QAEY,IAAlBuB,EAAOvB,SAEZwB,QAASD,IACR,IAAIE,EAAaF,EAAOtB,QAAQyB,QAAQ,YAAad,EAAStB,MAG1DmC,EAAWE,SAAS,OACtBF,EAAa,IAAIA,MAGnB,MAAMG,EAAM,GAAGf,OAAcY,KAAcX,IAAOC,IAE9CQ,EAAOtB,QAAQ0B,SAAS,aAC1BnB,EAAMqB,KAAKD,GAEXnB,EAAQoB,KAAKD,SAvCiD,CACpE,IAAIE,EAAelB,EAAStB,KAGxBwC,EAAaH,SAAS,OACxBG,EAAe,IAAIA,MAGrB,MAAMC,EAAa,GAAGlB,OAAciB,KAAgBhB,IAAOC,IAEvDjC,EAAcS,IAAIqB,EAASxB,MAC7BoB,EAAMqB,KAAKE,GAEXtB,EAAQoB,KAAKE,EAEjB,CA6BA,MAAO,CAAEvB,QAAOC,UAClB"}
@@ -1,8 +1,8 @@
1
- import { StaticHandlerContext } from 'react-router';
1
+ import type { StaticHandlerContext } from 'react-router';
2
2
  /**
3
3
  * Serialize react router errors
4
4
  * @see https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/server.tsx#LL166C1-L188C2
5
5
  * https://github.com/remix-run/react-router/blob/main/LICENSE.md
6
6
  */
7
7
  declare function serializeErrors(errors: StaticHandlerContext['errors']): StaticHandlerContext['errors'];
8
- export { serializeErrors as default };
8
+ export default serializeErrors;
@@ -1 +1 @@
1
- {"version":3,"file":"serialize-errors.js","sources":["../../src/helpers/serialize-errors.ts"],"sourcesContent":["import { isRouteErrorResponse } from 'react-router';\nimport type { StaticHandlerContext } from 'react-router';\n\n/**\n * Serialize react router errors\n * @see https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/server.tsx#LL166C1-L188C2\n * https://github.com/remix-run/react-router/blob/main/LICENSE.md\n */\nfunction serializeErrors(errors: StaticHandlerContext['errors']): StaticHandlerContext['errors'] {\n if (!errors) {\n return null;\n }\n\n const entries = Object.entries(errors);\n const serialized: StaticHandlerContext['errors'] = {};\n for (const [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // deserializeErrors in react-router-dom/index.tsx :)\n if (isRouteErrorResponse(val)) {\n serialized[key] = { ...val, __type: 'RouteErrorResponse' };\n } else if (val instanceof Error) {\n // Do not serialize stack traces from SSR for security reasons\n serialized[key] = {\n message: val.message,\n __type: 'Error',\n };\n } else {\n serialized[key] = val as unknown;\n }\n }\n\n return serialized;\n}\n\nexport default serializeErrors;\n"],"names":["serializeErrors","errors","entries","Object","serialized","key","val","isRouteErrorResponse","__type","Error","message"],"mappings":"oDAQA,SAASA,EAAgBC,GACvB,IAAKA,EACH,OAAO,KAGT,MAAMC,EAAUC,OAAOD,QAAQD,GACzBG,EAA6C,CAAA,EACnD,IAAK,MAAOC,EAAKC,KAAQJ,EAGnBK,EAAqBD,GACvBF,EAAWC,GAAO,IAAKC,EAAKE,OAAQ,sBAC3BF,aAAeG,MAExBL,EAAWC,GAAO,CAChBK,QAASJ,EAAII,QACbF,OAAQ,SAGVJ,EAAWC,GAAOC,EAItB,OAAOF,CACT"}
1
+ {"version":3,"file":"serialize-errors.js","sources":["../../src/helpers/serialize-errors.ts"],"sourcesContent":[null],"names":["serializeErrors","errors","entries","Object","serialized","key","val","isRouteErrorResponse","__type","Error","message"],"mappings":"oDAQA,SAASA,EAAgBC,GACvB,IAAKA,EACH,OAAO,KAGT,MAAMC,EAAUC,OAAOD,QAAQD,GACzBG,EAA6C,CAAA,EACnD,IAAK,MAAOC,EAAKC,KAAQJ,EAGnBK,EAAqBD,GACvBF,EAAWC,GAAO,IAAKC,EAAKE,OAAQ,sBAC3BF,aAAeG,MAExBL,EAAWC,GAAO,CAChBK,QAASJ,EAAII,QACbF,OAAQ,SAGVJ,EAAWC,GAAOC,EAItB,OAAOF,CACT"}
@@ -1,6 +1,6 @@
1
- import { Alias } from 'vite';
1
+ import type { Alias } from 'vite';
2
2
  /**
3
3
  * Set vite aliases
4
4
  */
5
5
  declare const viteAliases: (aliases: [string, string][], root?: string) => Alias[];
6
- export { viteAliases as default };
6
+ export default viteAliases;
@@ -1,2 +1,2 @@
1
- import{fileURLToPath as e,URL as r,pathToFileURL as t}from"node:url";const a=e=>e.replace("./","/").replace(/([^:]\/)\/+/g,"$1"),o=(o,p="")=>o.map((([o,l])=>({find:o,replacement:e(new r(t(`${p}${a(l)}`).toString(),import.meta.url))})));export{o as default};
1
+ import{fileURLToPath as e,URL as r,pathToFileURL as t}from"node:url";const a=e=>e.replace("./","/").replace(/([^:]\/)\/+/g,"$1"),o=(o,p="")=>o.map(([o,l])=>({find:o,replacement:e(new r(t(`${p}${a(l)}`).toString(),import.meta.url))}));export{o as default};
2
2
  //# sourceMappingURL=vite-aliases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-aliases.js","sources":["../../src/helpers/vite-aliases.ts"],"sourcesContent":["import { fileURLToPath, pathToFileURL, URL } from 'node:url';\nimport type { Alias } from 'vite';\n\nconst cleanupPath = (path: string) => path.replace('./', '/').replace(/([^:]\\/)\\/+/g, '$1');\n\n/**\n * Set vite aliases\n */\nconst viteAliases = (aliases: [string, string][], root = ''): Alias[] =>\n aliases.map(([find, path]) => ({\n find,\n replacement: fileURLToPath(\n new URL(pathToFileURL(`${root}${cleanupPath(path)}`).toString(), import.meta.url),\n ),\n }));\n\nexport default viteAliases;\n"],"names":["cleanupPath","path","replace","viteAliases","aliases","root","map","find","replacement","fileURLToPath","URL","pathToFileURL","toString","url"],"mappings":"qEAGA,MAAMA,EAAeC,GAAiBA,EAAKC,QAAQ,KAAM,KAAKA,QAAQ,eAAgB,MAKhFC,EAAc,CAACC,EAA6BC,EAAO,KACvDD,EAAQE,KAAI,EAAEC,EAAMN,MAAK,CACvBM,OACAC,YAAaC,EACX,IAAIC,EAAIC,EAAc,GAAGN,IAAOL,EAAYC,MAASW,uBAAwBC"}
1
+ {"version":3,"file":"vite-aliases.js","sources":["../../src/helpers/vite-aliases.ts"],"sourcesContent":[null],"names":["cleanupPath","path","replace","viteAliases","aliases","root","map","find","replacement","fileURLToPath","URL","pathToFileURL","toString","url"],"mappings":"qEAGA,MAAMA,EAAeC,GAAiBA,EAAKC,QAAQ,KAAM,KAAKA,QAAQ,eAAgB,MAKhFC,EAAc,CAACC,EAA6BC,EAAO,KACvDD,EAAQE,IAAI,EAAEC,EAAMN,MAAK,CACvBM,OACAC,YAAaC,EACX,IAAIC,EAAIC,EAAc,GAAGN,IAAOL,EAAYC,MAASW,uBAAwBC"}
@@ -1,7 +1,7 @@
1
- import { FC, PropsWithChildren } from 'react';
2
- import { RouteObject } from 'react-router';
3
- import { FCC } from "./fc.js";
4
- import { IRequestContext } from "../node/render.js";
1
+ import type { FC, PropsWithChildren } from 'react';
2
+ import type { RouteObject } from 'react-router';
3
+ import type { IRequestContext } from '../adapters/express/render.js';
4
+ import type { FCC } from './fc.js';
5
5
  declare module 'react-router' {
6
6
  interface LoaderFunctionArgs {
7
7
  context?: IRequestContext;
@@ -1 +1 @@
1
- {"version":3,"file":"fc-route.js","sources":["../../src/interfaces/fc-route.ts"],"sourcesContent":["import type { FC, PropsWithChildren } from 'react';\nimport type { RouteObject } from 'react-router';\nimport type { FCC } from '@interfaces/fc';\nimport type { IRequestContext } from '@node/render';\n\ndeclare module 'react-router' {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n export interface LoaderFunctionArgs {\n context?: IRequestContext;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n export interface ActionFunctionArgs {\n context?: IRequestContext;\n }\n}\n\nconst keys = ['loader', 'action', 'ErrorBoundary', 'errorElement'] as const;\n\ntype IRouteParams = Pick<RouteObject, (typeof keys)[number]> & {\n Suspense?: FCC<Record<string, any>>;\n};\n\ntype FCRoute<TProps = Record<string, any>> = FC<TProps> & IRouteParams;\ntype FCCRoute<TProps = Record<string, any>> = FC<PropsWithChildren<TProps>> & IRouteParams;\n\nexport type { FCRoute, FCCRoute, IRouteParams };\n\nexport { keys };\n"],"names":["keys"],"mappings":"AAiBA,MAAMA,EAAO,CAAC,SAAU,SAAU,gBAAiB"}
1
+ {"version":3,"file":"fc-route.js","sources":["../../src/interfaces/fc-route.ts"],"sourcesContent":[null],"names":["keys"],"mappings":"AAiBA,MAAMA,EAAO,CAAC,SAAU,SAAU,gBAAiB"}
@@ -1,4 +1,3 @@
1
- import { FC, PropsWithChildren } from 'react';
2
- type FCC<T extends Record<string, any>> = FC<PropsWithChildren<T>>;
3
- type FCAny<T extends Record<string, any>> = FC<T> | FCC<T>;
4
- export { FCC, FCAny };
1
+ import type { FC, PropsWithChildren } from 'react';
2
+ export type FCC<T extends Record<string, any>> = FC<PropsWithChildren<T>>;
3
+ export type FCAny<T extends Record<string, any>> = FC<T> | FCC<T>;
@@ -1,13 +1,13 @@
1
- import { RouteObject, LazyRouteFunction, RouterInit } from 'react-router';
2
- import { IDynamicRoute } from "../helpers/import-route.js";
1
+ import type { RouteObject, LazyRouteFunction, RouterInit } from 'react-router';
2
+ import type { IDynamicRoute } from '../helpers/import-route.js';
3
3
  type LazyRoute = LazyRouteFunction<RouterInit['routes'][number]>;
4
- type TOnlyClientProp = RouteObject['Component'] | RouteObject['element'];
5
- type TRouteObjectNR = Omit<RouteObject, 'lazy' | 'children'> & {
4
+ export type TOnlyClientProp = RouteObject['Component'] | RouteObject['element'];
5
+ export type TRouteObjectNR = Omit<RouteObject, 'lazy' | 'children'> & {
6
6
  lazy?: IDynamicRoute | LazyRoute;
7
7
  onlyClient?: TOnlyClientProp;
8
8
  children?: TRouteObject[];
9
9
  };
10
- type TRouteObject = (Omit<RouteObject, 'lazy'> & {
10
+ export type TRouteObject = (Omit<RouteObject, 'lazy'> & {
11
11
  lazy: LazyRoute;
12
12
  }) | TRouteObjectNR;
13
- export { TOnlyClientProp, TRouteObjectNR, TRouteObject };
13
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { TCompression } from '../adapters/compression.js';
2
+ /**
3
+ * Flush each compressed chunk so browsers can render the shell while React is suspended.
4
+ */
5
+ declare const compressNodeResponse: (request: Request, response: Response, compression?: TCompression) => Response;
6
+ export default compressNodeResponse;
@@ -0,0 +1,2 @@
1
+ import{Writable as e,Readable as r}from"node:stream";import{constants as t,createGzip as a,createDeflate as o}from"node:zlib";import s from"../adapters/compression.js";const i=(i,m,b)=>s(i,m,b,s=>{const i=("gzip"===s?a:o)({flush:t.Z_SYNC_FLUSH});return{readable:r.toWeb(i,{strategy:{highWaterMark:i.readableHighWaterMark,size:e=>e.byteLength}}),writable:e.toWeb(i)}});export{i as default};
2
+ //# sourceMappingURL=compress-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-response.js","sources":["../../src/node/compress-response.ts"],"sourcesContent":[null],"names":["compressNodeResponse","request","response","compression","compressResponse","format","stream","createGzip","createDeflate","flush","constants","Z_SYNC_FLUSH","readable","Readable","toWeb","strategy","highWaterMark","readableHighWaterMark","size","chunk","byteLength","writable","Writable"],"mappings":"wKAQA,MAAMA,EAAuB,CAC3BC,EACAC,EACAC,IAEAC,EAAiBH,EAASC,EAAUC,EAAcE,IAChD,MACMC,GADoB,SAAXD,EAAoBE,EAAaC,GAC1B,CAAEC,MAAOC,EAAUC,eAEzC,MAAO,CACLC,SAAUC,EAASC,MAAMR,EAAQ,CAC/BS,SAAU,CACRC,cAAeV,EAAOW,sBACtBC,KAAOC,GAAsBA,EAAMC,cAGvCC,SAAUC,EAASR,MAAMR"}
@@ -0,0 +1,6 @@
1
+ type TNodeHeaders = Record<string, string | string[] | number | undefined>;
2
+ /**
3
+ * Convert Node headers to Fetch headers, excluding HTTP/2 pseudo-headers.
4
+ */
5
+ declare const createHeaders: (values: TNodeHeaders) => Headers;
6
+ export default createHeaders;
@@ -0,0 +1,2 @@
1
+ const e=e=>{const t=new Headers;for(const[r,s]of Object.entries(e))if(!r.startsWith(":")&&void 0!==s)if(Array.isArray(s))for(const e of s)t.append(r,e);else t.set(r,"number"==typeof s?String(s):s);return t};export{e as default};
2
+ //# sourceMappingURL=create-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-headers.js","sources":["../../src/node/create-headers.ts"],"sourcesContent":[null],"names":["createHeaders","values","headers","Headers","name","value","Object","entries","startsWith","undefined","Array","isArray","item","append","set","String"],"mappings":"AAKA,MAAMA,EAAiBC,IACrB,MAAMC,EAAU,IAAIC,QAEpB,IAAK,MAAOC,EAAMC,KAAUC,OAAOC,QAAQN,GACzC,IAAIG,EAAKI,WAAW,WAAkBC,IAAVJ,EAI5B,GAAIK,MAAMC,QAAQN,GAChB,IAAK,MAAMO,KAAQP,EACjBH,EAAQW,OAAOT,EAAMQ,QAGvBV,EAAQY,IAAIV,EAAuB,iBAAVC,EAAqBU,OAAOV,GAASA,GAIlE,OAAOH"}
@@ -0,0 +1,13 @@
1
+ import type { TIncomingMessage } from './http.js';
2
+ interface ICreateRequestOptions {
3
+ body?: BodyInit | null;
4
+ origin?: string;
5
+ signal?: AbortSignal;
6
+ url?: string;
7
+ }
8
+ /**
9
+ * Preserve the Node request URL, body and cancellation signal for Fetch handlers.
10
+ */
11
+ declare const createRequest: (req: TIncomingMessage, options?: ICreateRequestOptions) => Request;
12
+ export type { ICreateRequestOptions };
13
+ export default createRequest;
@@ -0,0 +1,2 @@
1
+ import e from"./create-headers.js";const t=(t,o={})=>{const{body:n,origin:r,signal:s}=o,d=e(t.headers),a=t.socket&&"encrypted"in t.socket&&t.socket.encrypted?"https":"http",h=t.headers[":authority"],i=d.get("host")??("string"==typeof h?h:null),l=new URL(r??`${a}://${i}`).origin,c=o.url??t.url??"/",p=new URL(c.startsWith("/")?l+c:c,l),y={headers:d,method:t.method,signal:s};return"GET"!==t.method&&"HEAD"!==t.method&&("body"in o?(d.delete("Content-Length"),n instanceof FormData&&d.delete("Content-Type"),y.body=n):y.body=t,y.duplex="half"),new Request(p,y)};export{t as default};
2
+ //# sourceMappingURL=create-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-request.js","sources":["../../src/node/create-request.ts"],"sourcesContent":[null],"names":["createRequest","req","options","body","origin","signal","headers","createHeaders","protocol","socket","encrypted","authority","host","get","requestOrigin","URL","target","url","startsWith","init","method","delete","FormData","duplex","Request"],"mappings":"mCAaA,MAAMA,EAAgB,CAACC,EAAuBC,EAAiC,MAC7E,MAAMC,KAAEA,EAAIC,OAAEA,EAAMC,OAAEA,GAAWH,EAC3BI,EAAUC,EAAcN,EAAIK,SAC5BE,EACJP,EAAIQ,QAAU,cAAeR,EAAIQ,QAAUR,EAAIQ,OAAOC,UAAY,QAAU,OACxEC,EAAYV,EAAIK,QAAQ,cACxBM,EAAON,EAAQO,IAAI,UAAiC,iBAAdF,EAAyBA,EAAY,MAC3EG,EAAgB,IAAIC,IAAIX,GAAU,GAAGI,OAAcI,KAAQR,OAC3DY,EAASd,EAAQe,KAAOhB,EAAIgB,KAAO,IAKnCA,EAAM,IAAIF,IAAIC,EAAOE,WAAW,KAAOJ,EAAgBE,EAASA,EAAQF,GACxEK,EAA0C,CAC9Cb,UACAc,OAAQnB,EAAImB,OACZf,UAsBF,MAnBmB,QAAfJ,EAAImB,QAAmC,SAAfnB,EAAImB,SAC1B,SAAUlB,GACZI,EAAQe,OAAO,kBAEXlB,aAAgBmB,UAIlBhB,EAAQe,OAAO,gBAGjBF,EAAKhB,KAAOA,GAEZgB,EAAKhB,KAAOF,EAGdkB,EAAKI,OAAS,QAGT,IAAIC,QAAQP,EAAKE"}
package/node/http.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { Http2ServerRequest, Http2ServerResponse } from 'node:http2';
3
+ export type TIncomingMessage = IncomingMessage | Http2ServerRequest;
4
+ export type TServerResponse = ServerResponse | Http2ServerResponse;
package/node/http.js ADDED
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { TRenderToStream } from '../core/render.js';
2
+ /**
3
+ * Adapt React pipeable rendering to Fetch streams with byte-based backpressure.
4
+ */
5
+ declare const renderToStream: TRenderToStream;
6
+ export default renderToStream;
@@ -0,0 +1,2 @@
1
+ import{PassThrough as r,Readable as e}from"node:stream";import{renderToPipeableStream as t}from"react-dom/server";const o=(o,n)=>{const a=new r,s=e.toWeb(a,{strategy:{highWaterMark:a.readableHighWaterMark,size:r=>r.byteLength}});let i,l,c,d;const g=new Promise((r,e)=>{i=e,c=r}),h=new Promise((r,e)=>{l=e,d=r});g.catch(()=>{}),h.catch(()=>{});let m=!1,b=!1;const E=t(o,{onAllReady:c,onError:n.onError,onShellError:r=>{const e=r instanceof Error?r:new Error(String(r));m=!0,i(e),l(e)},onShellReady:()=>{m=!0,d()}}),f=r=>{if(!b){if(b=!0,!m){m=!0;const e=r instanceof Error?r:new Error("string"==typeof r?r:"Render aborted");l(e),i(e)}E.abort(r)}},y=()=>f(n.signal.reason),p=()=>n.signal.removeEventListener("abort",y);n.signal.aborted?y():n.signal.addEventListener("abort",y,{once:!0}),g.then(p,p);let w=!1;return{allReady:g,abort:f,shellReady:h,start:()=>{w||(w=!0,E.pipe(a))},stream:s}};export{o as default};
2
+ //# sourceMappingURL=render-to-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-to-stream.js","sources":["../../src/node/render-to-stream.ts"],"sourcesContent":[null],"names":["renderToStream","node","options","destination","PassThrough","stream","Readable","toWeb","strategy","highWaterMark","readableHighWaterMark","size","chunk","byteLength","rejectAll","rejectShell","resolveAll","resolveShell","allReady","Promise","resolve","reject","shellReady","catch","hasShellSettled","hasAborted","rendered","renderToPipeableStream","onAllReady","onError","onShellError","error","shellError","Error","String","onShellReady","abort","reason","onAbort","signal","cleanup","removeEventListener","aborted","addEventListener","once","then","hasStarted","start","pipe"],"mappings":"kHAOA,MAAMA,EAAkC,CAACC,EAAMC,KAC7C,MAAMC,EAAc,IAAIC,EAClBC,EAASC,EAASC,MAAMJ,EAAa,CACzCK,SAAU,CACRC,cAAeN,EAAYO,sBAK3BC,KAAOC,GAAsBA,EAAMC,cAGvC,IAAIC,EACAC,EACAC,EACAC,EAKJ,MAAMC,EAAW,IAAIC,QAAc,CAACC,EAASC,KAC3CP,EAAYO,EACZL,EAAaI,IAMTE,EAAa,IAAIH,QAAc,CAACC,EAASC,KAC7CN,EAAcM,EACdJ,EAAeG,IAGZF,EAASK,MAAM,QACfD,EAAWC,MAAM,QAEtB,IAAIC,GAAkB,EAClBC,GAAa,EACjB,MAAMC,EAAWC,EAAuB1B,EAAM,CAC5C2B,WAAYZ,EACZa,QAAS3B,EAAQ2B,QAKjBC,aAAeC,IACb,MAAMC,EAAaD,aAAiBE,MAAQF,EAAQ,IAAIE,MAAMC,OAAOH,IAErEP,GAAkB,EAClBV,EAAUkB,GACVjB,EAAYiB,IAMdG,aAAc,KACZX,GAAkB,EAClBP,OAOEmB,EAASC,IACb,IAAIZ,EAAJ,CASA,GALAA,GAAa,GAKRD,EAAiB,CACpBA,GAAkB,EAClB,MACMO,EAAQM,aAAkBJ,MAAQI,EAAS,IAAIJ,MADnB,iBAAXI,EAAsBA,EAAS,kBAGtDtB,EAAYgB,GACZjB,EAAUiB,EACZ,CAEAL,EAASU,MAAMC,EAhBf,GAsBIC,EAAU,IAAYF,EAAMlC,EAAQqC,OAAOF,QAK3CG,EAAU,IAAYtC,EAAQqC,OAAOE,oBAAoB,QAASH,GAEpEpC,EAAQqC,OAAOG,QACjBJ,IAEApC,EAAQqC,OAAOI,iBAAiB,QAASL,EAAS,CAAEM,MAAM,IAGvD1B,EAAS2B,KAAKL,EAASA,GAC5B,IAAIM,GAAa,EAEjB,MAAO,CACL5B,WACAkB,QACAd,aAKAyB,MAAO,KACAD,IACHA,GAAa,EACbpB,EAASsB,KAAK7C,KAGlBE"}
@@ -0,0 +1,10 @@
1
+ import type { TIncomingMessage, TServerResponse } from './http.js';
2
+ interface IRequestSignal {
3
+ dispose: () => void;
4
+ signal: AbortSignal;
5
+ }
6
+ /**
7
+ * Expose incomplete Node requests and disconnected responses as an AbortSignal.
8
+ */
9
+ declare const createRequestSignal: (req: TIncomingMessage, res: TServerResponse) => IRequestSignal;
10
+ export default createRequestSignal;
@@ -0,0 +1,2 @@
1
+ const o=(o,e)=>{const t=new AbortController,r=()=>t.abort(),n=()=>{e.writableEnded||r()};return o.once("aborted",r),e.once("close",n),(o.aborted||e.destroyed)&&r(),{dispose:()=>{o.off("aborted",r),e.off("close",n)},signal:t.signal}};export{o as default};
2
+ //# sourceMappingURL=request-signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-signal.js","sources":["../../src/node/request-signal.ts"],"sourcesContent":[null],"names":["createRequestSignal","req","res","controller","AbortController","abort","onClose","writableEnded","once","aborted","destroyed","dispose","off","signal"],"mappings":"AAUA,MAAMA,EAAsB,CAACC,EAAuBC,KAClD,MAAMC,EAAa,IAAIC,gBAKjBC,EAAQ,IAAYF,EAAWE,QAK/BC,EAAU,KACTJ,EAAIK,eACPF,KAmBJ,OAPAJ,EAAIO,KAAK,UAAWH,GACpBH,EAAIM,KAAK,QAASF,IAEdL,EAAIQ,SAAWP,EAAIQ,YACrBL,IAGK,CAAEM,QAZO,KACdV,EAAIW,IAAI,UAAWP,GACnBH,EAAIU,IAAI,QAASN,IAUDO,OAAQV,EAAWU"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Split Link entries while preserving commas inside URLs and quoted parameters.
3
+ */
4
+ declare const splitLinkHeader: (header: string) => string[];
5
+ export default splitLinkHeader;
@@ -0,0 +1,2 @@
1
+ const t=t=>{const e=[];let l=0,s=!1,o=!1,r=0;for(let n=0;n<t.length;n+=1){const a=t[n];s?s=!1:"\\"===a&&o?s=!0:'"'===a?o=!o:o||"<"!==a?o||">"!==a?o||0!==l||","!==a||(e.push(t.slice(r,n).trim()),r=n+1):l=Math.max(0,l-1):l+=1}return e.push(t.slice(r).trim()),e.filter(Boolean)};export{t as default};
2
+ //# sourceMappingURL=split-link-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-link-header.js","sources":["../../src/node/split-link-header.ts"],"sourcesContent":[null],"names":["splitLinkHeader","header","links","angleDepth","isEscaped","isQuoted","start","index","length","char","push","slice","trim","Math","max","filter","Boolean"],"mappings":"AAGA,MAAMA,EAAmBC,IACvB,MAAMC,EAAkB,GACxB,IAAIC,EAAa,EACbC,GAAY,EACZC,GAAW,EACXC,EAAQ,EAEZ,IAAK,IAAIC,EAAQ,EAAGA,EAAQN,EAAOO,OAAQD,GAAS,EAAG,CACrD,MAAME,EAAOR,EAAOM,GAEhBH,EACFA,GAAY,EACM,OAATK,GAAiBJ,EAC1BD,GAAY,EACM,MAATK,EACTJ,GAAYA,EACFA,GAAqB,MAATI,EAEZJ,GAAqB,MAATI,EAEZJ,GAA2B,IAAfF,GAA6B,MAATM,IAC1CP,EAAMQ,KAAKT,EAAOU,MAAML,EAAOC,GAAOK,QACtCN,EAAQC,EAAQ,GAHhBJ,EAAaU,KAAKC,IAAI,EAAGX,EAAa,GAFtCA,GAAc,CAOlB,CAIA,OAFAD,EAAMQ,KAAKT,EAAOU,MAAML,GAAOM,QAExBV,EAAMa,OAAOC"}
@@ -0,0 +1,6 @@
1
+ import type { TServerResponse } from './http.js';
2
+ /**
3
+ * Send Node early hints with distinct Link entries when the transport supports them.
4
+ */
5
+ declare const writeEarlyHints: (res: TServerResponse, headers: Headers) => void;
6
+ export default writeEarlyHints;
@@ -0,0 +1,2 @@
1
+ import{getHeaderEntries as e}from"../core/headers.js";import t from"./split-link-header.js";const r=(r,i)=>{if(r.headersSent||"function"!=typeof r.writeEarlyHints)return;const n=Object.fromEntries(e(i)),s=i.get("Link");s&&(n.link=t(s)),Object.keys(n).length&&r.writeEarlyHints(n)};export{r as default};
2
+ //# sourceMappingURL=write-early-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-early-hints.js","sources":["../../src/node/write-early-hints.ts"],"sourcesContent":[null],"names":["writeEarlyHints","res","headers","headersSent","hints","Object","fromEntries","getHeaderEntries","link","get","splitLinkHeader","keys","length"],"mappings":"4FAOA,MAAMA,EAAkB,CAACC,EAAsBC,KAC7C,GAAID,EAAIE,aAA8C,mBAAxBF,EAAID,gBAChC,OAGF,MAAMI,EAA2CC,OAAOC,YAAYC,EAAiBL,IAC/EM,EAAON,EAAQO,IAAI,QAErBD,IACFJ,EAAMI,KAAOE,EAAgBF,IAG3BH,OAAOM,KAAKP,GAAOQ,QACrBX,EAAID,gBAAgBI"}
@@ -0,0 +1,11 @@
1
+ import type { TServerResponse } from './http.js';
2
+ /**
3
+ * Write Fetch status and headers while preserving existing transport cookies.
4
+ */
5
+ declare const writeFetchHeaders: (res: TServerResponse, response: Response) => void;
6
+ /**
7
+ * Write the Fetch body with backpressure and cancel unread data on disconnect.
8
+ */
9
+ declare const writeFetchResponse: (res: TServerResponse, response: Response) => Promise<void>;
10
+ export { writeFetchHeaders };
11
+ export default writeFetchResponse;
@@ -0,0 +1,2 @@
1
+ import{getHeaderEntries as e,getSetCookieHeaders as r}from"../core/headers.js";const a="Set-Cookie",o=(o,d)=>{o.statusCode=d.status,e(d.headers).forEach(([e,r])=>o.setHeader(e,r));const t=r(d.headers);if("function"==typeof o.appendHeader)t.forEach(e=>o.appendHeader(a,e));else if(t.length){const e=o.getHeader(a),r=Array.isArray(e)?e:[String(e)];o.setHeader(a,e?[...r,...t]:t)}},d=e=>new Promise((r,a)=>{const o=()=>{e.off("close",d),e.off("drain",t),e.off("error",n)},d=()=>{o(),a(new Error("Response closed before drain."))},t=()=>{o(),r()},n=e=>{o(),a(e)};e.once("close",d),e.once("drain",t),e.once("error",n)}),t=async(e,r)=>{if(e.destroyed||e.writableEnded)return void await(r.body?.cancel());if(e.headersSent||o(e,r),!r.body||"HEAD"===e.req?.method||[204,205,304].includes(e.statusCode))return await(r.body?.cancel()),void e.end();const a=r.body.getReader(),t=()=>{e.writableEnded||a.cancel().catch(()=>{})};e.once("close",t);try{for(;;){const r=await a.read();if(r.done)break;if(e.destroyed||e.writableEnded)return void await a.cancel();e.write(r.value)||await d(e),e.flush?.()}e.destroyed||e.writableEnded||e.end()}catch(r){await a.cancel(r).catch(()=>{}),e.destroyed||e.destroy(r)}finally{e.off("close",t),a.releaseLock()}};export{t as default,o as writeFetchHeaders};
2
+ //# sourceMappingURL=write-fetch-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-fetch-response.js","sources":["../../src/node/write-fetch-response.ts"],"sourcesContent":[null],"names":["SET_COOKIE","writeFetchHeaders","res","response","statusCode","status","getHeaderEntries","headers","forEach","name","value","setHeader","cookies","getSetCookieHeaders","appendHeader","cookie","length","existing","getHeader","previousCookies","Array","isArray","String","waitForDrain","Promise","resolve","reject","cleanup","off","onClose","onDrain","onError","Error","error","once","writeFetchResponse","async","destroyed","writableEnded","body","cancel","headersSent","req","method","includes","end","reader","getReader","catch","chunk","read","done","write","flush","destroy","releaseLock"],"mappings":"+EAGA,MAAMA,EAAa,aAKbC,EAAoB,CAACC,EAAsBC,KAC/CD,EAAIE,WAAaD,EAASE,OAC1BC,EAAiBH,EAASI,SAASC,QAAQ,EAAEC,EAAMC,KAAWR,EAAIS,UAAUF,EAAMC,IAClF,MAAME,EAAUC,EAAoBV,EAASI,SAE7C,GAAgC,mBAArBL,EAAIY,aACbF,EAAQJ,QAASO,GAAWb,EAAIY,aAAad,EAAYe,SACpD,GAAIH,EAAQI,OAAQ,CAIzB,MAAMC,EAAWf,EAAIgB,UAAUlB,GACzBmB,EAAkBC,MAAMC,QAAQJ,GAAYA,EAAW,CAACK,OAAOL,IAErEf,EAAIS,UAAUX,EAAYiB,EAAW,IAAIE,KAAoBP,GAAWA,EAC1E,GAMIW,EAAgBrB,GACpB,IAAIsB,QAAQ,CAACC,EAASC,KAIpB,MAAMC,EAAU,KACdzB,EAAI0B,IAAI,QAASC,GACjB3B,EAAI0B,IAAI,QAASE,GACjB5B,EAAI0B,IAAI,QAASG,IAMbF,EAAU,KACdF,IACAD,EAAO,IAAIM,MAAM,mCAMbF,EAAU,KACdH,IACAF,KAMIM,EAAWE,IACfN,IACAD,EAAOO,IAGT/B,EAAIgC,KAAK,QAASL,GAClB3B,EAAIgC,KAAK,QAASJ,GAClB5B,EAAIgC,KAAK,QAASH,KAMhBI,EAAqBC,MAAOlC,EAAsBC,KACtD,GAAID,EAAImC,WAAanC,EAAIoC,cAGvB,kBAFMnC,EAASoC,MAAMC,UASvB,GAJKtC,EAAIuC,aACPxC,EAAkBC,EAAKC,IAGpBA,EAASoC,MAA4B,SAApBrC,EAAIwC,KAAKC,QAAqB,CAAC,IAAK,IAAK,KAAKC,SAAS1C,EAAIE,YAI/E,aAHMD,EAASoC,MAAMC,eACrBtC,EAAI2C,MAKN,MAAMC,EAAS3C,EAASoC,KAAKQ,YAKvBlB,EAAU,KACT3B,EAAIoC,eACFQ,EAAON,SAASQ,MAAM,SAI/B9C,EAAIgC,KAAK,QAASL,GAElB,IACE,OAAa,CACX,MAAMoB,QAAcH,EAAOI,OAE3B,GAAID,EAAME,KACR,MAGF,GAAIjD,EAAImC,WAAanC,EAAIoC,cAGvB,kBAFMQ,EAAON,SAKVtC,EAAIkD,MAAMH,EAAMvC,cACba,EAAarB,GAMpBA,EAAiDmD,SACpD,CAEKnD,EAAImC,WAAcnC,EAAIoC,eACzBpC,EAAI2C,KAER,CAAE,MAAOZ,SACDa,EAAON,OAAOP,GAAOe,MAAM,QAE5B9C,EAAImC,WACPnC,EAAIoD,QAAQrB,EAEhB,SACE/B,EAAI0B,IAAI,QAASC,GACjBiB,EAAOS,aACT"}