vite-plugin-react-server 1.1.20 → 1.2.0-alpha.0

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 (783) hide show
  1. package/README.md +102 -395
  2. package/dist/_virtual/dynamic-import-helper.js +1 -1
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +5 -2
  6. package/dist/index.js +1 -1
  7. package/dist/package.json +58 -25
  8. package/dist/plugin/components/{css-collector-elements.d.ts → css.d.ts} +2 -2
  9. package/dist/plugin/components/css.d.ts.map +1 -0
  10. package/dist/plugin/components/css.js +33 -0
  11. package/dist/plugin/components/html.d.ts +1 -1
  12. package/dist/plugin/components/html.d.ts.map +1 -1
  13. package/dist/plugin/components/html.js +5 -5
  14. package/dist/plugin/components/index.d.ts +3 -3
  15. package/dist/plugin/components/index.d.ts.map +1 -1
  16. package/dist/plugin/components/index.js +9 -3
  17. package/dist/plugin/components/root.d.ts +7 -0
  18. package/dist/plugin/components/root.d.ts.map +1 -0
  19. package/dist/plugin/components/root.js +18 -0
  20. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js +1 -1
  21. package/dist/plugin/config/autoDiscover/customWorkerFiles.js +1 -1
  22. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js +1 -1
  23. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts +5 -4
  24. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
  25. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +26 -7
  26. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts +25 -2
  27. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -1
  28. package/dist/plugin/config/autoDiscover/resolveBuildPages.js +84 -5
  29. package/dist/plugin/config/createModuleID.d.ts +3 -6
  30. package/dist/plugin/config/createModuleID.d.ts.map +1 -1
  31. package/dist/plugin/config/createModuleID.js +42 -32
  32. package/dist/plugin/config/defaults.d.ts +199 -121
  33. package/dist/plugin/config/defaults.d.ts.map +1 -1
  34. package/dist/plugin/config/defaults.js +155 -89
  35. package/dist/plugin/config/extMap.d.ts +6 -2
  36. package/dist/plugin/config/extMap.d.ts.map +1 -1
  37. package/dist/plugin/config/extMap.js +38 -48
  38. package/dist/plugin/config/flightBindings.d.ts +4 -0
  39. package/dist/plugin/config/flightBindings.d.ts.map +1 -0
  40. package/dist/plugin/config/flightBindings.js +215 -0
  41. package/dist/plugin/config/getCondition.d.ts +2 -0
  42. package/dist/plugin/config/getCondition.d.ts.map +1 -1
  43. package/dist/plugin/config/getCondition.js +4 -2
  44. package/dist/plugin/config/getPaths.js +1 -1
  45. package/dist/plugin/config/index.d.ts +17 -4
  46. package/dist/plugin/config/index.d.ts.map +1 -1
  47. package/dist/plugin/config/index.js +29 -7
  48. package/dist/plugin/config/interpolatePattern.d.ts +13 -0
  49. package/dist/plugin/config/interpolatePattern.d.ts.map +1 -0
  50. package/dist/plugin/config/interpolatePattern.js +13 -0
  51. package/dist/plugin/config/mimeTypes.js +1 -1
  52. package/dist/plugin/config/parsePattern.d.ts +25 -0
  53. package/dist/plugin/config/parsePattern.d.ts.map +1 -0
  54. package/dist/plugin/config/parsePattern.js +30 -0
  55. package/dist/plugin/config/resolveAllowedDirectives.d.ts +26 -0
  56. package/dist/plugin/config/resolveAllowedDirectives.d.ts.map +1 -0
  57. package/dist/plugin/config/resolveAllowedDirectives.js +35 -0
  58. package/dist/plugin/config/resolveDirectiveMatcher.d.ts +25 -0
  59. package/dist/plugin/config/resolveDirectiveMatcher.d.ts.map +1 -0
  60. package/dist/plugin/config/resolveDirectiveMatcher.js +33 -0
  61. package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
  62. package/dist/plugin/config/resolveEnv.js +14 -4
  63. package/dist/plugin/config/resolveOptions.d.ts +13 -3
  64. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  65. package/dist/plugin/config/resolveOptions.js +228 -206
  66. package/dist/plugin/config/resolvePages.js +1 -1
  67. package/dist/plugin/config/resolvePatternWithValues.d.ts +39 -0
  68. package/dist/plugin/config/resolvePatternWithValues.d.ts.map +1 -0
  69. package/dist/plugin/config/resolvePatternWithValues.js +36 -0
  70. package/dist/plugin/config/resolveRegExp.d.ts +29 -0
  71. package/dist/plugin/config/resolveRegExp.d.ts.map +1 -0
  72. package/dist/plugin/config/resolveRegExp.js +39 -0
  73. package/dist/plugin/config/resolveUrlOption.d.ts +37 -6
  74. package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -1
  75. package/dist/plugin/config/resolveUrlOption.js +42 -12
  76. package/dist/plugin/config/resolveUserConfig.d.ts +5 -4
  77. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  78. package/dist/plugin/config/resolveUserConfig.js +86 -40
  79. package/dist/plugin/env/plugin.d.ts +6 -0
  80. package/dist/plugin/env/plugin.d.ts.map +1 -1
  81. package/dist/plugin/env/plugin.js +111 -93
  82. package/dist/plugin/error/directiveError.d.ts +13 -0
  83. package/dist/plugin/error/directiveError.d.ts.map +1 -0
  84. package/dist/plugin/error/directiveError.js +21 -0
  85. package/dist/plugin/error/enhanceError.d.ts +14 -0
  86. package/dist/plugin/error/enhanceError.d.ts.map +1 -0
  87. package/dist/plugin/error/enhanceError.js +24 -0
  88. package/dist/plugin/error/index.d.ts +4 -0
  89. package/dist/plugin/error/index.d.ts.map +1 -0
  90. package/dist/plugin/error/index.js +9 -0
  91. package/dist/plugin/error/logError.d.ts +3 -0
  92. package/dist/plugin/error/logError.d.ts.map +1 -0
  93. package/dist/plugin/error/logError.js +47 -0
  94. package/dist/plugin/error/serializeError.d.ts +7 -0
  95. package/dist/plugin/error/serializeError.d.ts.map +1 -0
  96. package/dist/plugin/error/serializeError.js +37 -0
  97. package/dist/plugin/error/toError.d.ts +1 -8
  98. package/dist/plugin/error/toError.d.ts.map +1 -1
  99. package/dist/plugin/error/toError.js +62 -34
  100. package/dist/plugin/file-preserver/plugin.js +93 -105
  101. package/dist/plugin/getNodeEnv.d.ts +11 -0
  102. package/dist/plugin/getNodeEnv.d.ts.map +1 -0
  103. package/dist/plugin/getNodeEnv.js +17 -0
  104. package/dist/plugin/helpers/cleanObject.d.ts.map +1 -1
  105. package/dist/plugin/helpers/cleanObject.js +2 -1
  106. package/dist/plugin/helpers/collectManifestCss.js +1 -1
  107. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +6 -4
  108. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
  109. package/dist/plugin/helpers/collectViteModuleGraphCss.js +15 -9
  110. package/dist/plugin/helpers/createCssProps.d.ts +3 -4
  111. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
  112. package/dist/plugin/helpers/createCssProps.js +16 -4
  113. package/dist/plugin/helpers/createEventHandler.d.ts +2 -2
  114. package/dist/plugin/helpers/createEventHandler.d.ts.map +1 -1
  115. package/dist/plugin/helpers/createEventHandler.js +1 -1
  116. package/dist/plugin/helpers/createHandler.d.ts +10 -8
  117. package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
  118. package/dist/plugin/helpers/createHandler.js +11 -5
  119. package/dist/plugin/helpers/createRscStream.d.ts +18 -5
  120. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
  121. package/dist/plugin/helpers/createRscStream.js +48 -14
  122. package/dist/plugin/helpers/formatMetrics.d.ts +1 -5
  123. package/dist/plugin/helpers/formatMetrics.d.ts.map +1 -1
  124. package/dist/plugin/helpers/formatMetrics.js +2 -39
  125. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  126. package/dist/plugin/helpers/getBundleManifest.js +9 -2
  127. package/dist/plugin/helpers/getRouteFiles.d.ts +30 -2
  128. package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -1
  129. package/dist/plugin/helpers/getRouteFiles.js +70 -7
  130. package/dist/plugin/helpers/handleServerAction.d.ts +8 -7
  131. package/dist/plugin/helpers/handleServerAction.d.ts.map +1 -1
  132. package/dist/plugin/helpers/handleServerAction.js +5 -2
  133. package/dist/plugin/helpers/hydrateUserOptions.d.ts +9 -0
  134. package/dist/plugin/helpers/hydrateUserOptions.d.ts.map +1 -0
  135. package/dist/plugin/helpers/hydrateUserOptions.js +22 -0
  136. package/dist/plugin/helpers/index.d.ts +2 -0
  137. package/dist/plugin/helpers/index.d.ts.map +1 -1
  138. package/dist/plugin/helpers/index.js +31 -31
  139. package/dist/plugin/helpers/inputNormalizer.d.ts +1 -1
  140. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  141. package/dist/plugin/helpers/inputNormalizer.js +33 -20
  142. package/dist/plugin/helpers/metrics.d.ts +4 -10
  143. package/dist/plugin/helpers/metrics.d.ts.map +1 -1
  144. package/dist/plugin/helpers/metrics.js +3 -59
  145. package/dist/plugin/helpers/moduleRefs.js +1 -1
  146. package/dist/plugin/helpers/moduleResolver.d.ts +24 -2
  147. package/dist/plugin/helpers/moduleResolver.d.ts.map +1 -1
  148. package/dist/plugin/helpers/moduleResolver.js +61 -22
  149. package/dist/plugin/helpers/requestInfo.d.ts +28 -1
  150. package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
  151. package/dist/plugin/helpers/requestInfo.js +43 -30
  152. package/dist/plugin/helpers/requestToRoute.d.ts +1 -1
  153. package/dist/plugin/helpers/requestToRoute.d.ts.map +1 -1
  154. package/dist/plugin/helpers/requestToRoute.js +17 -9
  155. package/dist/plugin/helpers/resolveComponent.d.ts +57 -0
  156. package/dist/plugin/helpers/resolveComponent.d.ts.map +1 -0
  157. package/dist/plugin/helpers/resolveComponent.js +71 -0
  158. package/dist/plugin/helpers/resolveComponents.d.ts +27 -0
  159. package/dist/plugin/helpers/resolveComponents.d.ts.map +1 -0
  160. package/dist/plugin/helpers/resolveComponents.js +137 -0
  161. package/dist/plugin/helpers/resolvePage.d.ts +15 -11
  162. package/dist/plugin/helpers/resolvePage.d.ts.map +1 -1
  163. package/dist/plugin/helpers/resolvePage.js +11 -7
  164. package/dist/plugin/helpers/resolvePageAndProps.d.ts +3 -10
  165. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
  166. package/dist/plugin/helpers/resolvePageAndProps.js +28 -18
  167. package/dist/plugin/helpers/resolveProps.d.ts +13 -7
  168. package/dist/plugin/helpers/resolveProps.d.ts.map +1 -1
  169. package/dist/plugin/helpers/resolveProps.js +55 -25
  170. package/dist/plugin/helpers/resolveUserComponents.d.ts +33 -0
  171. package/dist/plugin/helpers/resolveUserComponents.d.ts.map +1 -0
  172. package/dist/plugin/helpers/resolveUserComponents.js +163 -0
  173. package/dist/plugin/helpers/serializeUserOptions.d.ts +7 -7
  174. package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -1
  175. package/dist/plugin/helpers/serializeUserOptions.js +127 -42
  176. package/dist/plugin/helpers/stashReturnValue.d.ts +2 -1
  177. package/dist/plugin/helpers/stashReturnValue.d.ts.map +1 -1
  178. package/dist/plugin/helpers/stashReturnValue.js +6 -3
  179. package/dist/plugin/helpers/tryManifest.d.ts +1 -2
  180. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  181. package/dist/plugin/helpers/tryManifest.js +1 -1
  182. package/dist/plugin/loader/createDefaultLoader.d.ts +19 -8
  183. package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -1
  184. package/dist/plugin/loader/createDefaultLoader.js +69 -107
  185. package/dist/plugin/loader/createTransformer.d.ts +6 -0
  186. package/dist/plugin/loader/createTransformer.d.ts.map +1 -0
  187. package/dist/plugin/loader/createTransformer.js +97 -0
  188. package/dist/plugin/loader/{css-loader.development.d.ts → css-loader.d.ts} +6 -8
  189. package/dist/plugin/loader/css-loader.d.ts.map +1 -0
  190. package/dist/plugin/loader/css-loader.js +134 -0
  191. package/dist/plugin/loader/directives/addLocalExportedNames.d.ts +4 -0
  192. package/dist/plugin/loader/directives/addLocalExportedNames.d.ts.map +1 -0
  193. package/dist/plugin/loader/directives/addLocalExportedNames.js +57 -0
  194. package/dist/plugin/loader/directives/analyzeDirectives.d.ts +9 -0
  195. package/dist/plugin/loader/directives/analyzeDirectives.d.ts.map +1 -0
  196. package/dist/plugin/loader/directives/analyzeDirectives.js +221 -0
  197. package/dist/plugin/loader/directives/analyzeModule.d.ts +11 -0
  198. package/dist/plugin/loader/directives/analyzeModule.d.ts.map +1 -0
  199. package/dist/plugin/loader/directives/analyzeModule.js +34 -0
  200. package/dist/plugin/loader/directives/collectExports.d.ts +13 -0
  201. package/dist/plugin/loader/directives/collectExports.d.ts.map +1 -0
  202. package/dist/plugin/loader/directives/collectExports.js +116 -0
  203. package/dist/plugin/loader/directives/collectExportsFromModule.d.ts +6 -0
  204. package/dist/plugin/loader/directives/collectExportsFromModule.d.ts.map +1 -0
  205. package/dist/plugin/loader/directives/collectExportsFromModule.js +24 -0
  206. package/dist/plugin/loader/directives/findDirectiveMatches.d.ts +3 -0
  207. package/dist/plugin/loader/directives/findDirectiveMatches.d.ts.map +1 -0
  208. package/dist/plugin/loader/directives/findDirectiveMatches.js +46 -0
  209. package/dist/plugin/loader/directives/getExportedName.d.ts +3 -0
  210. package/dist/plugin/loader/directives/getExportedName.d.ts.map +1 -0
  211. package/dist/plugin/loader/directives/getExportedName.js +59 -0
  212. package/dist/plugin/loader/directives/getExports.d.ts +7 -0
  213. package/dist/plugin/loader/directives/getExports.d.ts.map +1 -0
  214. package/dist/plugin/loader/directives/getExports.js +28 -0
  215. package/dist/plugin/loader/directives/getFunctionBody.d.ts +3 -0
  216. package/dist/plugin/loader/directives/getFunctionBody.d.ts.map +1 -0
  217. package/dist/plugin/loader/directives/getFunctionBody.js +31 -0
  218. package/dist/plugin/loader/directives/getFunctionName.d.ts +10 -0
  219. package/dist/plugin/loader/directives/getFunctionName.d.ts.map +1 -0
  220. package/dist/plugin/loader/directives/getFunctionName.js +42 -0
  221. package/dist/plugin/loader/directives/getQualifiedName.d.ts +3 -0
  222. package/dist/plugin/loader/directives/getQualifiedName.d.ts.map +1 -0
  223. package/dist/plugin/loader/directives/getQualifiedName.js +65 -0
  224. package/dist/plugin/loader/directives/index.d.ts +14 -0
  225. package/dist/plugin/loader/directives/index.d.ts.map +1 -0
  226. package/dist/plugin/loader/directives/index.js +18 -0
  227. package/dist/plugin/loader/directives/processFunctionNode.d.ts +4 -0
  228. package/dist/plugin/loader/directives/processFunctionNode.d.ts.map +1 -0
  229. package/dist/plugin/loader/directives/processFunctionNode.js +86 -0
  230. package/dist/plugin/loader/directives/typeGuards.d.ts +37 -0
  231. package/dist/plugin/loader/directives/typeGuards.d.ts.map +1 -0
  232. package/dist/plugin/loader/directives/typeGuards.js +100 -0
  233. package/dist/plugin/loader/directives/types.d.ts +154 -0
  234. package/dist/plugin/loader/directives/types.d.ts.map +1 -0
  235. package/dist/plugin/loader/directives/utils.d.ts +14 -0
  236. package/dist/plugin/loader/directives/utils.d.ts.map +1 -0
  237. package/dist/plugin/loader/directives/utils.js +21 -0
  238. package/dist/plugin/loader/env-loader.d.ts +11 -0
  239. package/dist/plugin/loader/env-loader.d.ts.map +1 -0
  240. package/dist/plugin/loader/env-loader.js +65 -0
  241. package/dist/plugin/loader/index.d.ts +8 -1
  242. package/dist/plugin/loader/index.d.ts.map +1 -1
  243. package/dist/plugin/loader/index.js +13 -4
  244. package/dist/plugin/loader/parse.d.ts +11 -2
  245. package/dist/plugin/loader/parse.d.ts.map +1 -1
  246. package/dist/plugin/loader/parse.js +29 -6
  247. package/dist/plugin/loader/react-loader.d.ts +22 -1
  248. package/dist/plugin/loader/react-loader.d.ts.map +1 -1
  249. package/dist/plugin/loader/react-loader.js +169 -6
  250. package/dist/plugin/loader/removeDirectives.d.ts +5 -0
  251. package/dist/plugin/loader/removeDirectives.d.ts.map +1 -0
  252. package/dist/plugin/loader/removeDirectives.js +17 -0
  253. package/dist/plugin/loader/removeRanges.d.ts +5 -0
  254. package/dist/plugin/loader/removeRanges.d.ts.map +1 -0
  255. package/dist/plugin/loader/removeRanges.js +20 -0
  256. package/dist/plugin/loader/sourceMap.d.ts +16 -24
  257. package/dist/plugin/loader/sourceMap.d.ts.map +1 -1
  258. package/dist/plugin/loader/sourceMap.js +125 -97
  259. package/dist/plugin/loader/transformClientModule.d.ts +10 -0
  260. package/dist/plugin/loader/transformClientModule.d.ts.map +1 -0
  261. package/dist/plugin/loader/transformClientModule.js +46 -0
  262. package/dist/plugin/loader/transformModule.d.ts +6 -0
  263. package/dist/plugin/loader/transformModule.d.ts.map +1 -0
  264. package/dist/plugin/loader/transformModule.js +33 -0
  265. package/dist/plugin/loader/transformModuleIfNeeded.d.ts +12 -1
  266. package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -1
  267. package/dist/plugin/loader/transformModuleIfNeeded.js +9 -20
  268. package/dist/plugin/loader/transformServerModule.d.ts +11 -0
  269. package/dist/plugin/loader/transformServerModule.d.ts.map +1 -0
  270. package/dist/plugin/loader/transformServerModule.js +84 -0
  271. package/dist/plugin/loader/transformWithAcornLoose.d.ts +12 -0
  272. package/dist/plugin/loader/transformWithAcornLoose.d.ts.map +1 -0
  273. package/dist/plugin/loader/transformWithAcornLoose.js +18 -0
  274. package/dist/plugin/loader/types.d.ts +59 -12
  275. package/dist/plugin/loader/types.d.ts.map +1 -1
  276. package/dist/plugin/metrics/collectStreamMetrics.d.ts +9 -0
  277. package/dist/plugin/metrics/collectStreamMetrics.d.ts.map +1 -0
  278. package/dist/plugin/metrics/collectStreamMetrics.js +35 -0
  279. package/dist/plugin/metrics/createRenderMetrics.d.ts +3 -0
  280. package/dist/plugin/metrics/createRenderMetrics.d.ts.map +1 -0
  281. package/dist/plugin/metrics/createRenderMetrics.js +24 -0
  282. package/dist/plugin/metrics/createStreamMetrics.d.ts +3 -0
  283. package/dist/plugin/metrics/createStreamMetrics.d.ts.map +1 -0
  284. package/dist/plugin/metrics/createStreamMetrics.js +19 -0
  285. package/dist/plugin/metrics/formatMetrics.d.ts +6 -3
  286. package/dist/plugin/metrics/formatMetrics.d.ts.map +1 -1
  287. package/dist/plugin/metrics/formatMetrics.js +5 -2
  288. package/dist/plugin/metrics/index.d.ts +3 -1
  289. package/dist/plugin/metrics/index.d.ts.map +1 -1
  290. package/dist/plugin/metrics/index.js +9 -1
  291. package/dist/plugin/metrics/types.d.ts +23 -0
  292. package/dist/plugin/metrics/types.d.ts.map +1 -0
  293. package/dist/plugin/metrics/types.js +1 -0
  294. package/dist/plugin/plugin.client.d.ts +23 -2
  295. package/dist/plugin/plugin.client.d.ts.map +1 -1
  296. package/dist/plugin/plugin.client.js +30 -17
  297. package/dist/plugin/plugin.server.d.ts +13 -2
  298. package/dist/plugin/plugin.server.d.ts.map +1 -1
  299. package/dist/plugin/plugin.server.js +7 -4
  300. package/dist/plugin/preserver/plugin.d.ts +2 -2
  301. package/dist/plugin/preserver/plugin.d.ts.map +1 -1
  302. package/dist/plugin/preserver/plugin.js +33 -29
  303. package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts +11 -0
  304. package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts.map +1 -0
  305. package/dist/plugin/react-client/cleanupWorkerServerAction.js +18 -0
  306. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts +9 -9
  307. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -1
  308. package/dist/plugin/react-client/configureWorkerRequestHandler.js +25 -14
  309. package/dist/plugin/react-client/createMessageHandlers.d.ts +1 -1
  310. package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
  311. package/dist/plugin/react-client/createMessageHandlers.js +15 -3
  312. package/dist/plugin/react-client/createWorkerStream.d.ts +12 -10
  313. package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
  314. package/dist/plugin/react-client/createWorkerStream.js +27 -29
  315. package/dist/plugin/react-client/handleWorkerRscStream.d.ts +13 -8
  316. package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -1
  317. package/dist/plugin/react-client/handleWorkerRscStream.js +59 -24
  318. package/dist/plugin/react-client/handleWorkerServerAction.d.ts +2 -1
  319. package/dist/plugin/react-client/handleWorkerServerAction.d.ts.map +1 -1
  320. package/dist/plugin/react-client/handleWorkerServerAction.js +43 -28
  321. package/dist/plugin/react-client/index.d.ts +4 -1
  322. package/dist/plugin/react-client/index.d.ts.map +1 -1
  323. package/dist/plugin/react-client/index.js +10 -1
  324. package/dist/plugin/react-client/plugin.d.ts +5 -3
  325. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  326. package/dist/plugin/react-client/plugin.js +9 -11
  327. package/dist/plugin/react-client/restartWorker.d.ts +5 -4
  328. package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
  329. package/dist/plugin/react-client/restartWorker.js +12 -10
  330. package/dist/plugin/react-server/configureReactServer.d.ts +5 -4
  331. package/dist/plugin/react-server/configureReactServer.d.ts.map +1 -1
  332. package/dist/plugin/react-server/configureReactServer.js +98 -43
  333. package/dist/plugin/react-server/handleServerAction.d.ts +3 -2
  334. package/dist/plugin/react-server/handleServerAction.d.ts.map +1 -1
  335. package/dist/plugin/react-server/handleServerAction.js +14 -20
  336. package/dist/plugin/react-server/plugin.d.ts +3 -4
  337. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  338. package/dist/plugin/react-server/plugin.js +14 -17
  339. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +8 -6
  340. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -1
  341. package/dist/plugin/react-static/collectHtmlWorkerContent.js +4 -4
  342. package/dist/plugin/react-static/collectRscContent.d.ts +8 -6
  343. package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -1
  344. package/dist/plugin/react-static/collectRscContent.js +4 -4
  345. package/dist/plugin/react-static/configurePreviewServer.d.ts +6 -4
  346. package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -1
  347. package/dist/plugin/react-static/configurePreviewServer.js +38 -31
  348. package/dist/plugin/react-static/createBuildLoader.d.ts +5 -5
  349. package/dist/plugin/react-static/createBuildLoader.d.ts.map +1 -1
  350. package/dist/plugin/react-static/createBuildLoader.js +122 -30
  351. package/dist/plugin/react-static/fileWriter.js +1 -1
  352. package/dist/plugin/react-static/plugin.d.ts +3 -4
  353. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  354. package/dist/plugin/react-static/plugin.js +62 -47
  355. package/dist/plugin/react-static/renderPage.d.ts +4 -2
  356. package/dist/plugin/react-static/renderPage.d.ts.map +1 -1
  357. package/dist/plugin/react-static/renderPage.js +33 -17
  358. package/dist/plugin/react-static/renderPages.d.ts +4 -2
  359. package/dist/plugin/react-static/renderPages.d.ts.map +1 -1
  360. package/dist/plugin/react-static/renderPages.js +7 -6
  361. package/dist/plugin/react-static/renderStreams.d.ts +5 -22
  362. package/dist/plugin/react-static/renderStreams.d.ts.map +1 -1
  363. package/dist/plugin/react-static/renderStreams.js +6 -6
  364. package/dist/plugin/react-static/rscToHtmlStream.d.ts.map +1 -1
  365. package/dist/plugin/react-static/rscToHtmlStream.js +1 -1
  366. package/dist/plugin/react-static/temporaryReferences.js +1 -1
  367. package/dist/plugin/react-static/types.d.ts +0 -1
  368. package/dist/plugin/react-static/types.d.ts.map +1 -1
  369. package/dist/plugin/root.js +1 -1
  370. package/dist/plugin/transformer/plugin.js +1 -1
  371. package/dist/plugin/transformer/plugin.server.d.ts +5 -3
  372. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
  373. package/dist/plugin/transformer/plugin.server.js +43 -44
  374. package/dist/plugin/types/css-tracking.d.ts +2 -2
  375. package/dist/plugin/types/css-tracking.d.ts.map +1 -1
  376. package/dist/plugin/types.d.ts +452 -192
  377. package/dist/plugin/types.d.ts.map +1 -1
  378. package/dist/plugin/types.js +2 -1
  379. package/dist/plugin/utils/callServer.js +1 -1
  380. package/dist/plugin/utils/createCallServer.d.ts +1 -1
  381. package/dist/plugin/utils/createCallServer.d.ts.map +1 -1
  382. package/dist/plugin/utils/createCallServer.js +1 -1
  383. package/dist/plugin/utils/createReactFetcher.d.ts +2 -3
  384. package/dist/plugin/utils/createReactFetcher.d.ts.map +1 -1
  385. package/dist/plugin/utils/createReactFetcher.js +1 -1
  386. package/dist/plugin/utils/env.js +1 -1
  387. package/dist/plugin/utils/envUrls.node.js +1 -1
  388. package/dist/plugin/utils/index.d.ts +1 -0
  389. package/dist/plugin/utils/index.d.ts.map +1 -1
  390. package/dist/plugin/utils/index.js +12 -5
  391. package/dist/plugin/utils/routeToURL.d.ts +12 -0
  392. package/dist/plugin/utils/routeToURL.d.ts.map +1 -0
  393. package/dist/plugin/utils/routeToURL.js +26 -0
  394. package/dist/plugin/utils/urls.d.ts.map +1 -1
  395. package/dist/plugin/utils/urls.js +5 -3
  396. package/dist/plugin/vendor/index.js +7 -1
  397. package/dist/plugin/vendor/vendor.client.js +1 -1
  398. package/dist/plugin/vendor/vendor.js +1 -1
  399. package/dist/plugin/vendor/vendor.server.js +1 -1
  400. package/dist/plugin/worker/createWorker.d.ts +31 -17
  401. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  402. package/dist/plugin/worker/createWorker.js +18 -12
  403. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts +2 -2
  404. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -1
  405. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +5 -2
  406. package/dist/plugin/worker/html/html-worker.development.js +3 -3
  407. package/dist/plugin/worker/html/html-worker.production.js +1 -1
  408. package/dist/plugin/worker/html/index.d.ts +1 -1
  409. package/dist/plugin/worker/html/index.d.ts.map +1 -1
  410. package/dist/plugin/worker/html/index.js +1 -1
  411. package/dist/plugin/worker/html/messageHandler.d.ts +1 -1
  412. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  413. package/dist/plugin/worker/html/messageHandler.js +9 -11
  414. package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts +3 -0
  415. package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts.map +1 -0
  416. package/dist/plugin/worker/html/sendHtmlWorkerMessage.js +2 -0
  417. package/dist/plugin/worker/html/types.d.ts +20 -2
  418. package/dist/plugin/worker/html/types.d.ts.map +1 -1
  419. package/dist/plugin/worker/index.d.ts +3 -0
  420. package/dist/plugin/worker/index.d.ts.map +1 -0
  421. package/dist/plugin/worker/index.js +7 -0
  422. package/dist/plugin/worker/registerLoaders.js +2 -2
  423. package/dist/plugin/worker/rsc/handleRender.d.ts +4 -3
  424. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
  425. package/dist/plugin/worker/rsc/handleRender.js +54 -32
  426. package/dist/plugin/worker/rsc/handlers.d.ts.map +1 -1
  427. package/dist/plugin/worker/rsc/handlers.js +19 -15
  428. package/dist/plugin/worker/rsc/index.d.ts +1 -1
  429. package/dist/plugin/worker/rsc/index.d.ts.map +1 -1
  430. package/dist/plugin/worker/rsc/index.js +1 -1
  431. package/dist/plugin/worker/rsc/messageHandler.d.ts +1 -1
  432. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  433. package/dist/plugin/worker/rsc/messageHandler.js +16 -4
  434. package/dist/plugin/worker/rsc/rsc-worker.development.js +77 -11
  435. package/dist/plugin/worker/rsc/rsc-worker.production.js +1 -1
  436. package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts +3 -0
  437. package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts.map +1 -0
  438. package/dist/plugin/worker/rsc/sendRscWorkerMessage.js +11 -0
  439. package/dist/plugin/worker/rsc/state.js +1 -1
  440. package/dist/plugin/worker/rsc/types.d.ts +95 -0
  441. package/dist/plugin/worker/rsc/types.d.ts.map +1 -0
  442. package/dist/plugin/worker/rsc/types.js +1 -0
  443. package/dist/plugin/worker/rsc/userOptions.d.ts +1 -1
  444. package/dist/plugin/worker/rsc/userOptions.d.ts.map +1 -1
  445. package/dist/plugin/worker/rsc/userOptions.js +3 -4
  446. package/dist/plugin/worker/sendMessage.d.ts +3 -4
  447. package/dist/plugin/worker/sendMessage.d.ts.map +1 -1
  448. package/dist/plugin/worker/sendMessage.js +15 -5
  449. package/dist/plugin/worker/types.d.ts +109 -260
  450. package/dist/plugin/worker/types.d.ts.map +1 -1
  451. package/dist/server.js +1 -1
  452. package/dist/tsconfig.tsbuildinfo +1 -1
  453. package/package.json +58 -25
  454. package/plugin/components/{css-collector-elements.tsx → css.tsx} +3 -3
  455. package/plugin/components/html.tsx +4 -4
  456. package/plugin/components/index.ts +3 -3
  457. package/plugin/components/root.tsx +20 -0
  458. package/plugin/config/autoDiscover/resolveAutoDiscover.ts +173 -134
  459. package/plugin/config/autoDiscover/resolveBuildPages.ts +120 -7
  460. package/plugin/config/createModuleID.ts +60 -39
  461. package/plugin/config/defaults.tsx +184 -95
  462. package/plugin/config/extMap.ts +51 -56
  463. package/plugin/config/flightBindings.ts +221 -0
  464. package/plugin/config/getCondition.ts +6 -0
  465. package/plugin/config/index.ts +17 -4
  466. package/plugin/config/interpolatePattern.ts +19 -0
  467. package/plugin/config/parsePattern.ts +81 -0
  468. package/plugin/config/resolveAllowedDirectives.ts +59 -0
  469. package/plugin/config/resolveDirectiveMatcher.ts +57 -0
  470. package/plugin/config/resolveEnv.ts +5 -10
  471. package/plugin/config/resolveOptions.ts +415 -299
  472. package/plugin/config/resolvePatternWithValues.ts +70 -0
  473. package/plugin/config/resolveRegExp.ts +89 -0
  474. package/plugin/config/resolveUrlOption.ts +92 -20
  475. package/plugin/config/resolveUserConfig.ts +417 -351
  476. package/plugin/env/plugin.ts +71 -7
  477. package/plugin/error/directiveError.ts +29 -0
  478. package/plugin/error/enhanceError.ts +41 -0
  479. package/plugin/error/index.ts +3 -0
  480. package/plugin/error/logError.ts +45 -0
  481. package/plugin/error/serializeError.ts +34 -0
  482. package/plugin/error/toError.ts +75 -45
  483. package/plugin/file-preserver/plugin.ts +3 -3
  484. package/plugin/getNodeEnv.ts +24 -0
  485. package/plugin/helpers/cleanObject.ts +2 -1
  486. package/plugin/helpers/collectViteModuleGraphCss.ts +138 -118
  487. package/plugin/helpers/createCssProps.tsx +41 -20
  488. package/plugin/helpers/createEventHandler.ts +1 -1
  489. package/plugin/helpers/createHandler.ts +40 -12
  490. package/plugin/helpers/createRscStream.tsx +97 -35
  491. package/plugin/helpers/formatMetrics.ts +2 -37
  492. package/plugin/helpers/getBundleManifest.ts +10 -1
  493. package/plugin/helpers/getRouteFiles.ts +112 -8
  494. package/plugin/helpers/handleServerAction.ts +10 -6
  495. package/plugin/helpers/hydrateUserOptions.ts +23 -0
  496. package/plugin/helpers/index.ts +4 -0
  497. package/plugin/helpers/inputNormalizer.ts +44 -24
  498. package/plugin/helpers/metrics.ts +4 -64
  499. package/plugin/helpers/moduleResolver.ts +74 -19
  500. package/plugin/helpers/requestInfo.ts +72 -52
  501. package/plugin/helpers/requestToRoute.ts +38 -12
  502. package/plugin/helpers/resolveComponent.ts +173 -0
  503. package/plugin/helpers/resolveComponents.ts +185 -0
  504. package/plugin/helpers/resolvePage.ts +35 -29
  505. package/plugin/helpers/resolvePageAndProps.ts +82 -61
  506. package/plugin/helpers/resolveProps.ts +100 -37
  507. package/plugin/helpers/resolveUserComponents.ts +190 -0
  508. package/plugin/helpers/serializeUserOptions.ts +190 -69
  509. package/plugin/helpers/stashReturnValue.ts +7 -4
  510. package/plugin/helpers/tryManifest.ts +1 -1
  511. package/plugin/loader/createDefaultLoader.ts +119 -119
  512. package/plugin/loader/createTransformer.ts +118 -0
  513. package/plugin/loader/css-loader.ts +206 -0
  514. package/plugin/loader/directives/addLocalExportedNames.ts +78 -0
  515. package/plugin/loader/directives/analyzeDirectives.ts +298 -0
  516. package/plugin/loader/directives/analyzeModule.ts +39 -0
  517. package/plugin/loader/directives/collectExports.ts +181 -0
  518. package/plugin/loader/directives/collectExportsFromModule.ts +25 -0
  519. package/plugin/loader/directives/findDirectiveMatches.ts +58 -0
  520. package/plugin/loader/directives/getExportedName.ts +73 -0
  521. package/plugin/loader/directives/getExports.ts +27 -0
  522. package/plugin/loader/directives/getFunctionBody.ts +32 -0
  523. package/plugin/loader/directives/getFunctionName.ts +70 -0
  524. package/plugin/loader/directives/getQualifiedName.ts +76 -0
  525. package/plugin/loader/directives/index.ts +13 -0
  526. package/plugin/loader/directives/processFunctionNode.ts +97 -0
  527. package/plugin/loader/directives/typeGuards.ts +160 -0
  528. package/plugin/loader/directives/types.ts +174 -0
  529. package/plugin/loader/directives/utils.ts +35 -0
  530. package/plugin/loader/{env-loader.development.ts → env-loader.ts} +8 -22
  531. package/plugin/loader/index.ts +8 -6
  532. package/plugin/loader/parse.ts +42 -12
  533. package/plugin/loader/react-loader.ts +255 -4
  534. package/plugin/loader/removeDirectives.ts +14 -0
  535. package/plugin/loader/removeRanges.ts +21 -0
  536. package/plugin/loader/sourceMap.ts +174 -84
  537. package/plugin/loader/transformClientModule.ts +64 -0
  538. package/plugin/loader/transformModule.ts +54 -0
  539. package/plugin/loader/transformModuleIfNeeded.ts +40 -40
  540. package/plugin/loader/transformServerModule.ts +136 -0
  541. package/plugin/loader/transformWithAcornLoose.ts +27 -0
  542. package/plugin/loader/types.ts +65 -13
  543. package/plugin/metrics/collectStreamMetrics.ts +38 -0
  544. package/plugin/metrics/createRenderMetrics.ts +17 -0
  545. package/plugin/metrics/createStreamMetrics.ts +14 -0
  546. package/plugin/metrics/formatMetrics.ts +7 -3
  547. package/plugin/metrics/index.ts +3 -1
  548. package/plugin/metrics/types.ts +24 -0
  549. package/plugin/plugin.client.ts +39 -15
  550. package/plugin/plugin.server.ts +39 -18
  551. package/plugin/preserver/plugin.ts +42 -42
  552. package/plugin/react-client/cleanupWorkerServerAction.ts +33 -0
  553. package/plugin/react-client/configureWorkerRequestHandler.ts +212 -201
  554. package/plugin/react-client/createMessageHandlers.ts +17 -3
  555. package/plugin/react-client/createWorkerStream.ts +55 -51
  556. package/plugin/react-client/handleWorkerRscStream.ts +141 -61
  557. package/plugin/react-client/handleWorkerServerAction.ts +59 -37
  558. package/plugin/react-client/index.ts +4 -1
  559. package/plugin/react-client/plugin.ts +17 -18
  560. package/plugin/react-client/restartWorker.ts +75 -70
  561. package/plugin/react-server/configureReactServer.ts +200 -142
  562. package/plugin/react-server/handleServerAction.ts +156 -160
  563. package/plugin/react-server/plugin.ts +18 -25
  564. package/plugin/react-static/collectHtmlWorkerContent.ts +109 -102
  565. package/plugin/react-static/collectRscContent.ts +55 -51
  566. package/plugin/react-static/configurePreviewServer.ts +110 -100
  567. package/plugin/react-static/createBuildLoader.ts +157 -48
  568. package/plugin/react-static/plugin.ts +368 -357
  569. package/plugin/react-static/renderPage.ts +43 -24
  570. package/plugin/react-static/renderPages.ts +21 -14
  571. package/plugin/react-static/renderStreams.ts +13 -15
  572. package/plugin/react-static/rscToHtmlStream.ts +4 -6
  573. package/plugin/react-static/types.ts +0 -3
  574. package/plugin/transformer/README.md +82 -8
  575. package/plugin/transformer/plugin.server.ts +55 -82
  576. package/plugin/types/css-tracking.ts +1 -1
  577. package/plugin/types/global.d.ts +2 -2
  578. package/plugin/types/react-server-dom-esm.d.ts +12 -13
  579. package/plugin/types.ts +685 -309
  580. package/plugin/utils/createCallServer.ts +5 -5
  581. package/plugin/utils/createReactFetcher.ts +4 -6
  582. package/plugin/utils/index.ts +2 -1
  583. package/plugin/utils/routeToURL.ts +34 -0
  584. package/plugin/utils/urls.ts +9 -6
  585. package/plugin/worker/createWorker.ts +67 -34
  586. package/plugin/worker/html/README.md +10 -0
  587. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +7 -4
  588. package/plugin/worker/html/html-worker.development.tsx +4 -3
  589. package/plugin/worker/html/index.ts +3 -1
  590. package/plugin/worker/html/messageHandler.tsx +10 -16
  591. package/plugin/worker/html/sendHtmlWorkerMessage.ts +8 -0
  592. package/plugin/worker/html/types.ts +67 -1
  593. package/plugin/worker/index.ts +2 -0
  594. package/plugin/worker/registerLoaders.ts +3 -3
  595. package/plugin/worker/rsc/README.md +203 -1
  596. package/plugin/worker/rsc/handleRender.ts +76 -39
  597. package/plugin/worker/rsc/handlers.ts +30 -22
  598. package/plugin/worker/rsc/index.ts +2 -0
  599. package/plugin/worker/rsc/messageHandler.tsx +17 -10
  600. package/plugin/worker/rsc/rsc-worker.development.ts +104 -17
  601. package/plugin/worker/rsc/sendRscWorkerMessage.ts +7 -0
  602. package/plugin/worker/rsc/state.ts +1 -1
  603. package/plugin/worker/rsc/types.ts +185 -0
  604. package/plugin/worker/rsc/userOptions.ts +2 -3
  605. package/plugin/worker/sendMessage.ts +23 -14
  606. package/plugin/worker/types.ts +131 -386
  607. package/scripts/check-react-version.mjs +3 -3
  608. package/scripts/fix-unused-imports.mjs +77 -0
  609. package/tsconfig.json +1 -1
  610. package/dist/_virtual/dynamic-import-helper.js.map +0 -1
  611. package/dist/client.js.map +0 -1
  612. package/dist/index.js.map +0 -1
  613. package/dist/plugin/components/css-collector-elements.d.ts.map +0 -1
  614. package/dist/plugin/components/css-collector-elements.js +0 -33
  615. package/dist/plugin/components/css-collector-elements.js.map +0 -1
  616. package/dist/plugin/components/css-collector.d.ts +0 -7
  617. package/dist/plugin/components/css-collector.d.ts.map +0 -1
  618. package/dist/plugin/components/css-collector.js +0 -18
  619. package/dist/plugin/components/css-collector.js.map +0 -1
  620. package/dist/plugin/components/html.js.map +0 -1
  621. package/dist/plugin/components.js +0 -9
  622. package/dist/plugin/components.js.map +0 -1
  623. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js.map +0 -1
  624. package/dist/plugin/config/autoDiscover/customWorkerFiles.js.map +0 -1
  625. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js.map +0 -1
  626. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js.map +0 -1
  627. package/dist/plugin/config/autoDiscover/resolveBuildPages.js.map +0 -1
  628. package/dist/plugin/config/defaults.js.map +0 -1
  629. package/dist/plugin/config/extMap.js.map +0 -1
  630. package/dist/plugin/config/getCondition.js.map +0 -1
  631. package/dist/plugin/config/getPaths.js.map +0 -1
  632. package/dist/plugin/config/mimeTypes.js.map +0 -1
  633. package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts +0 -5
  634. package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts.map +0 -1
  635. package/dist/plugin/config/resolveAutoDiscoverMatcher.js +0 -25
  636. package/dist/plugin/config/resolveAutoDiscoverMatcher.js.map +0 -1
  637. package/dist/plugin/config/resolveEnv.js.map +0 -1
  638. package/dist/plugin/config/resolveOptions.js.map +0 -1
  639. package/dist/plugin/config/resolvePages.js.map +0 -1
  640. package/dist/plugin/config/resolveUrlOption.js.map +0 -1
  641. package/dist/plugin/config/resolveUserConfig.js.map +0 -1
  642. package/dist/plugin/config.js +0 -17
  643. package/dist/plugin/config.js.map +0 -1
  644. package/dist/plugin/env.js +0 -79
  645. package/dist/plugin/env.js.map +0 -1
  646. package/dist/plugin/error/toError.js.map +0 -1
  647. package/dist/plugin/file-preserver.js +0 -96
  648. package/dist/plugin/file-preserver.js.map +0 -1
  649. package/dist/plugin/helpers/cleanObject.js.map +0 -1
  650. package/dist/plugin/helpers/collectManifestCss.js.map +0 -1
  651. package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +0 -1
  652. package/dist/plugin/helpers/createCssProps.js.map +0 -1
  653. package/dist/plugin/helpers/createEventHandler.js.map +0 -1
  654. package/dist/plugin/helpers/createHandler.js.map +0 -1
  655. package/dist/plugin/helpers/createRscStream.js.map +0 -1
  656. package/dist/plugin/helpers/formatMetrics.js.map +0 -1
  657. package/dist/plugin/helpers/getBundleManifest.js.map +0 -1
  658. package/dist/plugin/helpers/getRouteFiles.js.map +0 -1
  659. package/dist/plugin/helpers/handleServerAction.js.map +0 -1
  660. package/dist/plugin/helpers/inputNormalizer.js.map +0 -1
  661. package/dist/plugin/helpers/metrics.js.map +0 -1
  662. package/dist/plugin/helpers/moduleRefs.js.map +0 -1
  663. package/dist/plugin/helpers/requestInfo.js.map +0 -1
  664. package/dist/plugin/helpers/requestToRoute.js.map +0 -1
  665. package/dist/plugin/helpers/resolvePage.js.map +0 -1
  666. package/dist/plugin/helpers/resolvePageAndProps.js.map +0 -1
  667. package/dist/plugin/helpers/resolveProps.js.map +0 -1
  668. package/dist/plugin/helpers/serializeUserOptions.js.map +0 -1
  669. package/dist/plugin/helpers/sourceMap.d.ts +0 -8
  670. package/dist/plugin/helpers/sourceMap.d.ts.map +0 -1
  671. package/dist/plugin/helpers/sourceMap.js +0 -136
  672. package/dist/plugin/helpers/stashReturnValue.js.map +0 -1
  673. package/dist/plugin/helpers/tryManifest.js.map +0 -1
  674. package/dist/plugin/helpers.js +0 -27
  675. package/dist/plugin/helpers.js.map +0 -1
  676. package/dist/plugin/loader/css-loader.development.d.ts.map +0 -1
  677. package/dist/plugin/loader/css-loader.development.js +0 -76
  678. package/dist/plugin/loader/css-loader.development.js.map +0 -1
  679. package/dist/plugin/loader/css-loader.production.d.ts +0 -31
  680. package/dist/plugin/loader/css-loader.production.d.ts.map +0 -1
  681. package/dist/plugin/loader/css-loader.production.js +0 -45
  682. package/dist/plugin/loader/css-loader.production.js.map +0 -1
  683. package/dist/plugin/loader/env-loader.development.d.ts +0 -13
  684. package/dist/plugin/loader/env-loader.development.d.ts.map +0 -1
  685. package/dist/plugin/loader/env-loader.development.js +0 -68
  686. package/dist/plugin/loader/handleExports.d.ts +0 -40
  687. package/dist/plugin/loader/handleExports.d.ts.map +0 -1
  688. package/dist/plugin/loader/handleExports.js +0 -209
  689. package/dist/plugin/loader/handleExports.js.map +0 -1
  690. package/dist/plugin/loader/parse.js.map +0 -1
  691. package/dist/plugin/loader/react-loader.client.d.ts +0 -2
  692. package/dist/plugin/loader/react-loader.client.d.ts.map +0 -1
  693. package/dist/plugin/loader/react-loader.client.js +0 -2
  694. package/dist/plugin/loader/react-loader.js.map +0 -1
  695. package/dist/plugin/loader/react-loader.server.d.ts +0 -21
  696. package/dist/plugin/loader/react-loader.server.d.ts.map +0 -1
  697. package/dist/plugin/loader/react-loader.server.js +0 -131
  698. package/dist/plugin/loader/transformModuleIfNeeded.js.map +0 -1
  699. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts +0 -48
  700. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts.map +0 -1
  701. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +0 -428
  702. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +0 -1
  703. package/dist/plugin/metrics/formatMetrics.js.map +0 -1
  704. package/dist/plugin/metrics.js +0 -7
  705. package/dist/plugin/metrics.js.map +0 -1
  706. package/dist/plugin/plugin.client.js.map +0 -1
  707. package/dist/plugin/plugin.server.js.map +0 -1
  708. package/dist/plugin/preserver/plugin.js.map +0 -1
  709. package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +0 -1
  710. package/dist/plugin/react-client/createMessageHandlers.js.map +0 -1
  711. package/dist/plugin/react-client/createWorkerStream.js.map +0 -1
  712. package/dist/plugin/react-client/handleWorkerRscStream.js.map +0 -1
  713. package/dist/plugin/react-client/handleWorkerServerAction.js.map +0 -1
  714. package/dist/plugin/react-client/plugin.js.map +0 -1
  715. package/dist/plugin/react-client/restartWorker.js.map +0 -1
  716. package/dist/plugin/react-server/configureReactServer.js.map +0 -1
  717. package/dist/plugin/react-server/handleServerAction.js.map +0 -1
  718. package/dist/plugin/react-server/plugin.js.map +0 -1
  719. package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +0 -1
  720. package/dist/plugin/react-static/collectRscContent.js.map +0 -1
  721. package/dist/plugin/react-static/configurePreviewServer.js.map +0 -1
  722. package/dist/plugin/react-static/createBuildLoader.js.map +0 -1
  723. package/dist/plugin/react-static/fileWriter.js.map +0 -1
  724. package/dist/plugin/react-static/plugin.js.map +0 -1
  725. package/dist/plugin/react-static/renderPage.js.map +0 -1
  726. package/dist/plugin/react-static/renderPages.js.map +0 -1
  727. package/dist/plugin/react-static/renderStreams.js.map +0 -1
  728. package/dist/plugin/react-static/rscToHtmlStream.js.map +0 -1
  729. package/dist/plugin/react-static/temporaryReferences.js.map +0 -1
  730. package/dist/plugin/root.js.map +0 -1
  731. package/dist/plugin/source-map/createMappingsSerializer.d.ts +0 -2
  732. package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +0 -1
  733. package/dist/plugin/source-map/createMappingsSerializer.js +0 -129
  734. package/dist/plugin/source-map/createMappingsSerializer.js.map +0 -1
  735. package/dist/plugin/source-map/readMappings.d.ts +0 -2
  736. package/dist/plugin/source-map/readMappings.d.ts.map +0 -1
  737. package/dist/plugin/source-map/readMappings.js +0 -200
  738. package/dist/plugin/transformer/plugin.client.d.ts +0 -2
  739. package/dist/plugin/transformer/plugin.client.d.ts.map +0 -1
  740. package/dist/plugin/transformer/plugin.js.map +0 -1
  741. package/dist/plugin/transformer/plugin.server.js.map +0 -1
  742. package/dist/plugin/utils/callServer.js.map +0 -1
  743. package/dist/plugin/utils/createCallServer.js.map +0 -1
  744. package/dist/plugin/utils/createReactFetcher.js.map +0 -1
  745. package/dist/plugin/utils/env.js.map +0 -1
  746. package/dist/plugin/utils/envUrls.node.js.map +0 -1
  747. package/dist/plugin/utils/urls.js.map +0 -1
  748. package/dist/plugin/utils.js +0 -11
  749. package/dist/plugin/utils.js.map +0 -1
  750. package/dist/plugin/vendor/vendor.client.js.map +0 -1
  751. package/dist/plugin/vendor/vendor.js.map +0 -1
  752. package/dist/plugin/vendor/vendor.server.js.map +0 -1
  753. package/dist/plugin/vendor.js +0 -7
  754. package/dist/plugin/vendor.js.map +0 -1
  755. package/dist/plugin/worker/createWorker.js.map +0 -1
  756. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +0 -1
  757. package/dist/plugin/worker/html/html-worker.development.js.map +0 -1
  758. package/dist/plugin/worker/html/html-worker.production.js.map +0 -1
  759. package/dist/plugin/worker/html/index.js.map +0 -1
  760. package/dist/plugin/worker/html/messageHandler.js.map +0 -1
  761. package/dist/plugin/worker/rsc/handleRender.js.map +0 -1
  762. package/dist/plugin/worker/rsc/handlers.js.map +0 -1
  763. package/dist/plugin/worker/rsc/index.js.map +0 -1
  764. package/dist/plugin/worker/rsc/messageHandler.js.map +0 -1
  765. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +0 -1
  766. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +0 -1
  767. package/dist/plugin/worker/rsc/state.js.map +0 -1
  768. package/dist/plugin/worker/rsc/userOptions.js.map +0 -1
  769. package/dist/plugin/worker/sendMessage.js.map +0 -1
  770. package/dist/server.js.map +0 -1
  771. package/plugin/components/css-collector.tsx +0 -20
  772. package/plugin/config/resolveAutoDiscoverMatcher.ts +0 -23
  773. package/plugin/helpers/sourceMap.ts +0 -182
  774. package/plugin/loader/css-loader.development.ts +0 -135
  775. package/plugin/loader/css-loader.production.ts +0 -84
  776. package/plugin/loader/handleExports.ts +0 -309
  777. package/plugin/loader/react-loader.client.ts +0 -1
  778. package/plugin/loader/react-loader.server.ts +0 -185
  779. package/plugin/loader/transformModuleWithPreservedFunctions.ts +0 -593
  780. package/plugin/source-map/createMappingsSerializer.ts +0 -181
  781. package/plugin/source-map/readMappings.ts +0 -194
  782. package/plugin/transformer/plugin.client.ts +0 -0
  783. /package/dist/plugin/{transformer/plugin.client.js → loader/directives/types.js} +0 -0
@@ -5,9 +5,10 @@
5
5
  */
6
6
  import { join } from 'node:path';
7
7
  import { DEFAULT_CONFIG } from './defaults.js';
8
+ import { getNodeEnv } from '../getNodeEnv.js';
8
9
 
9
- let stashedUserConfig = {};
10
- function resolveUserConfig({
10
+ const stashedUserConfig = {};
11
+ const resolveUserConfig = function _resolveUserConfig({
11
12
  condition,
12
13
  config,
13
14
  configEnv,
@@ -24,29 +25,55 @@ function resolveUserConfig({
24
25
  };
25
26
  }
26
27
  const root = config.root ?? userOptions.projectRoot ?? process.cwd();
27
- const handleSsrName = (info, input, fallback, ssr2) => {
28
- if ("source" in info && info.source === "") {
28
+ const handleSsrEntryName = (info, input, fallback, ssr2) => {
29
+ if (!ssr2 || !input) {
30
+ if (typeof fallback === "function") {
31
+ return fallback(info, false);
32
+ }
33
+ return userOptions.normalizer(info.name)[0];
34
+ }
35
+ const normalized = userOptions.normalizer(input);
36
+ let value = normalized[1];
37
+ if (value.startsWith(userOptions.moduleBasePath)) {
38
+ value = value.slice(userOptions.moduleBasePath.length);
39
+ }
40
+ const entry = autoDiscoveredFiles.staticManifest[value];
41
+ if (entry) {
42
+ return entry.file;
43
+ }
44
+ return fallback(info, true);
45
+ };
46
+ const handleSsrAssetName = (info, input, fallback, ssr2) => {
47
+ if (info.source === "") {
29
48
  return "";
30
49
  }
31
- if (!ssr2 || !input) {
32
- return fallback(info, false);
50
+ const isCssFile = input?.endsWith(".css") || info.names?.some((name) => name.endsWith(".css"));
51
+ if (!ssr2 || !input || isCssFile) {
52
+ if (typeof fallback === "function") {
53
+ return fallback(info, ssr2);
54
+ }
55
+ return userOptions.normalizer(info.names[0])[0];
33
56
  }
34
- let [id, value] = userOptions.normalizer(input);
57
+ const normalized = userOptions.normalizer(input);
58
+ const id = normalized[0];
59
+ let value = normalized[1];
35
60
  if (value.startsWith(userOptions.moduleBasePath)) {
36
61
  value = value.slice(userOptions.moduleBasePath.length);
37
62
  }
38
63
  const entry = autoDiscoveredFiles.staticManifest[value];
39
- if (entry?.name && info.type === "asset" && userOptions.autoDiscover.cssPattern(value)) {
40
- const found = entry.css?.find((css) => css.startsWith(id));
41
- if (found) {
42
- return found;
64
+ if (entry) {
65
+ if (entry?.name && userOptions.autoDiscover.cssPattern.test(value)) {
66
+ const found = entry.css?.find((css) => css.startsWith(id));
67
+ if (found) {
68
+ return join(userOptions.build.assetsDir, found);
69
+ } else {
70
+ return join(userOptions.build.assetsDir, entry.file);
71
+ }
43
72
  } else {
44
73
  return entry.file;
45
74
  }
46
- } else if (entry) {
47
- return entry.file;
48
75
  }
49
- return fallback(info, true);
76
+ return fallback(info, ssr2);
50
77
  };
51
78
  const userDefinedOutput = config.build?.rollupOptions?.output;
52
79
  const hasOtherOutput = Array.isArray(userDefinedOutput) && userDefinedOutput.length > 1;
@@ -58,14 +85,14 @@ function resolveUserConfig({
58
85
  );
59
86
  const userDefinedChunkFileNames = hasValidOutput ? "chunkFileNames" in userDefinedOutput ? userDefinedOutput.chunkFileNames : void 0 : void 0;
60
87
  const userDefinedEntryFileNames = hasValidOutput ? "entryFileNames" in userDefinedOutput ? userDefinedOutput.entryFileNames : void 0 : void 0;
61
- let stashedReturns = {};
88
+ const stashedReturns = {};
62
89
  const pluginOutput = {
63
90
  preserveModulesRoot: userOptions.build.preserveModulesRoot ? userOptions.moduleBase : void 0,
64
91
  entryFileNames: userDefinedEntryFileNames ?? ((info) => {
65
- const input = info.facadeModuleId ?? info.name + userOptions.autoDiscover.moduleExtension;
92
+ const input = info.facadeModuleId ?? info.name + userOptions.build.moduleExtension;
66
93
  const inputId = input + (ssr ? "-ssr" : "");
67
94
  if (!stashedReturns[inputId]) {
68
- const r = handleSsrName(
95
+ const r = handleSsrEntryName(
69
96
  info,
70
97
  input,
71
98
  userOptions.build.entryFile,
@@ -74,45 +101,63 @@ function resolveUserConfig({
74
101
  if (userOptions.verbose) {
75
102
  console.log("entryFileNames", input, r);
76
103
  }
77
- stashedReturns[inputId] = r;
104
+ stashedReturns[inputId] = r ?? info.name;
78
105
  }
79
- return stashedReturns[inputId].slice(Number(stashedReturns[inputId].startsWith("/")));
106
+ return stashedReturns[inputId].slice(
107
+ Number(stashedReturns[inputId].startsWith("/"))
108
+ );
80
109
  }),
81
- assetFileNames: process.env["VITEST"] ? void 0 : userDefinedAssetFileNames ?? ((i) => {
82
- const input = i.originalFileNames[0];
110
+ assetFileNames: process.env["VITEST"] ? void 0 : userDefinedAssetFileNames ?? ((info) => {
111
+ const input = info.originalFileNames[0];
83
112
  const inputId = input + (ssr ? "-ssr" : "");
84
113
  if (!stashedReturns[inputId]) {
85
- const r = handleSsrName(i, input, userOptions.build.assetFile, ssr);
114
+ const r = handleSsrAssetName(
115
+ info,
116
+ input,
117
+ userOptions.build.assetFile,
118
+ ssr
119
+ );
86
120
  if (userOptions.verbose) {
87
- console.log("assetFileNames", input, stashedReturns[input]);
121
+ console.log("assetFileNames", input, r);
88
122
  }
89
- stashedReturns[inputId] = r;
123
+ stashedReturns[inputId] = r ?? join(userOptions.build.assetsDir, userOptions.normalizer(input)[0]);
90
124
  }
91
- return stashedReturns[inputId].slice(Number(stashedReturns[inputId].startsWith("/")));
125
+ return stashedReturns[inputId].slice(
126
+ Number(stashedReturns[inputId].startsWith("/"))
127
+ );
92
128
  }),
93
129
  chunkFileNames: userDefinedChunkFileNames ?? ((info) => {
94
- const input = info.facadeModuleId ?? info.name + userOptions.autoDiscover.moduleExtension;
130
+ const input = info.facadeModuleId ?? info.name + userOptions.autoDiscover.modulePattern.source;
95
131
  const inputId = input + (ssr ? "-ssr" : "");
96
132
  if (!stashedReturns[inputId]) {
97
- const r = handleSsrName(
133
+ const r = handleSsrEntryName(
98
134
  info,
99
135
  input,
100
136
  userOptions.build.chunkFile,
101
137
  ssr
102
138
  );
103
139
  if (userOptions.verbose) {
104
- console.log("chunkFileNames", input, stashedReturns[input]);
140
+ console.log("chunkFileNames", input, stashedReturns[inputId]);
105
141
  }
106
- stashedReturns[inputId] = r;
142
+ stashedReturns[inputId] = r ?? info.name;
107
143
  }
108
- return stashedReturns[inputId].slice(Number(stashedReturns[inputId].startsWith("/")));
144
+ return stashedReturns[inputId].slice(
145
+ Number(stashedReturns[inputId].startsWith("/"))
146
+ );
109
147
  }),
110
148
  format: "esm",
111
149
  exports: "named"
112
150
  };
113
- let newOutput = Array.isArray(config.build?.rollupOptions?.output) ? [...config.build?.rollupOptions?.output, pluginOutput] : typeof config.build?.rollupOptions?.output === "object" && config.build?.rollupOptions?.output !== null ? [config.build?.rollupOptions?.output, pluginOutput] : pluginOutput;
151
+ const newOutput = Array.isArray(config.build?.rollupOptions?.output) ? [...config.build?.rollupOptions?.output || null, pluginOutput] : typeof config.build?.rollupOptions?.output === "object" && config.build?.rollupOptions?.output !== null ? [config.build?.rollupOptions?.output, pluginOutput] : pluginOutput;
114
152
  const vitePrefix = config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
115
- const mode = config.mode ?? process.env[`${vitePrefix}MODE`] ?? process.env["NODE_ENV"] ?? "production";
153
+ const nodeEnv = getNodeEnv();
154
+ let mode = config.mode ?? process.env[`${vitePrefix}MODE`] ?? process.env["NODE_ENV"] ?? nodeEnv;
155
+ if (mode !== nodeEnv) {
156
+ if (typeof config.mode === "string" && nodeEnv !== "production") {
157
+ throw new Error(`Mode ${mode} must be equal to NODE_ENV ${nodeEnv}.`);
158
+ }
159
+ mode = nodeEnv;
160
+ }
116
161
  const minify = config.build?.minify;
117
162
  const srrConfig = {
118
163
  ...config.ssr,
@@ -133,11 +178,11 @@ function resolveUserConfig({
133
178
  }
134
179
  };
135
180
  let publicOrigin = userOptions.publicOrigin ?? process.env[`${vitePrefix}PUBLIC_ORIGIN`] ?? "";
136
- let PROD = mode === "production";
137
- let DEV = mode === "development";
138
- let port = typeof config.server?.port === "number" ? config.server?.port : 5173;
139
- let strictPort = config.server?.strictPort ?? true;
140
- let host = typeof config.server?.host === "string" ? config.server?.host : "localhost";
181
+ const PROD = mode === "production";
182
+ const DEV = mode === "development";
183
+ const port = typeof config.server?.port === "number" ? config.server?.port : 5173;
184
+ const strictPort = config.server?.strictPort ?? true;
185
+ const host = typeof config.server?.host === "string" ? config.server?.host : "localhost";
141
186
  if (configEnv.command === "serve" && !configEnv.isPreview) {
142
187
  if (strictPort) {
143
188
  publicOrigin = `http${config.server?.https ? "s" : ""}://${host}:${port}`;
@@ -155,6 +200,7 @@ function resolveUserConfig({
155
200
  } : {};
156
201
  const define = {
157
202
  ...config.define,
203
+ [`import.meta.env.BASE_URL`]: `"${userOptions.moduleBaseURL}"`,
158
204
  [`import.meta.env.PUBLIC_ORIGIN`]: `"${publicOrigin}"`,
159
205
  ...ssrDefine
160
206
  };
@@ -169,7 +215,7 @@ function resolveUserConfig({
169
215
  ...config,
170
216
  root,
171
217
  mode,
172
- base: userOptions.moduleBaseURL,
218
+ base: config.base ?? userOptions.moduleBaseURL,
173
219
  envPrefix: vitePrefix,
174
220
  resolve: {
175
221
  ...config.resolve,
@@ -269,7 +315,7 @@ function resolveUserConfig({
269
315
  userConfig: serverConfig
270
316
  };
271
317
  }
272
- }
318
+ };
273
319
 
274
320
  export { resolveUserConfig };
275
- //# sourceMappingURL=resolveUserConfig.js.map
321
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVVzZXJDb25maWcuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9jb25maWcvcmVzb2x2ZVVzZXJDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFVzZXJDb25maWcgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHR5cGUge1xuICBSZXNvbHZlZFVzZXJDb25maWcsXG4gIFJlc29sdmVkVXNlck9wdGlvbnMsXG4gIEF1dG9EaXNjb3ZlcmVkRmlsZXMsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgT3V0cHV0T3B0aW9ucywgUHJlUmVuZGVyZWRBc3NldCwgUHJlUmVuZGVyZWRDaHVuayB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB7IERFRkFVTFRfQ09ORklHIH0gZnJvbSBcIi4vZGVmYXVsdHMuanNcIjtcbmltcG9ydCB7IGdldE5vZGVFbnYgfSBmcm9tIFwiLi4vZ2V0Tm9kZUVudi5qc1wiO1xuXG5jb25zdCBzdGFzaGVkVXNlckNvbmZpZzogUmVjb3JkPHN0cmluZywgUmVzb2x2ZWRVc2VyQ29uZmlnIHwgbnVsbD4gPSB7fTtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZVVzZXJDb25maWdQcm9wcyA9IHtcbiAgY29uZGl0aW9uOiBcInJlYWN0LWNsaWVudFwiIHwgXCJyZWFjdC1zZXJ2ZXJcIjtcbiAgY29uZmlnOiBVc2VyQ29uZmlnO1xuICBjb25maWdFbnY6IENvbmZpZ0VudjtcbiAgdXNlck9wdGlvbnM6IFJlc29sdmVkVXNlck9wdGlvbnM7XG4gIGF1dG9EaXNjb3ZlcmVkRmlsZXM6IFBpY2s8QXV0b0Rpc2NvdmVyZWRGaWxlcywgXCJpbnB1dHNcIiB8IFwic3RhdGljTWFuaWZlc3RcIj47XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlVXNlckNvbmZpZ1JldHVybiA9XG4gIHwgeyB0eXBlOiBcInN1Y2Nlc3NcIjsgdXNlckNvbmZpZzogUmVzb2x2ZWRVc2VyQ29uZmlnIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IEVycm9yIH07XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVVc2VyQ29uZmlnRm4gPSAoXG4gIHByb3BzOiBSZXNvbHZlVXNlckNvbmZpZ1Byb3BzXG4pID0+IFJlc29sdmVVc2VyQ29uZmlnUmV0dXJuO1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVVzZXJDb25maWc6IFJlc29sdmVVc2VyQ29uZmlnRm4gPVxuICBmdW5jdGlvbiBfcmVzb2x2ZVVzZXJDb25maWcoe1xuICAgIGNvbmRpdGlvbixcbiAgICBjb25maWcsXG4gICAgY29uZmlnRW52LFxuICAgIHVzZXJPcHRpb25zLFxuICAgIGF1dG9EaXNjb3ZlcmVkRmlsZXMsXG4gIH0pIHtcbiAgICBjb25zdCBzc3IgPVxuICAgICAgdHlwZW9mIGNvbmZpZy5idWlsZD8uc3NyID09PSBcImJvb2xlYW5cIlxuICAgICAgICA/IGNvbmZpZy5idWlsZD8uc3NyXG4gICAgICAgIDogQm9vbGVhbihjb25maWdFbnYuaXNTc3JCdWlsZCkgfHxcbiAgICAgICAgICBjb25kaXRpb24gPT09IFwicmVhY3Qtc2VydmVyXCIgfHxcbiAgICAgICAgICAodHlwZW9mIHByb2Nlc3MuZW52W1wiVklURV9TU1JcIl0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcHJvY2Vzcy5lbnZbXCJWSVRFX1NTUlwiXSA9PT0gXCJ0cnVlXCIgfHxcbiAgICAgICAgICAgICAgcHJvY2Vzcy5lbnZbXCJWSVRFX1NTUlwiXSA9PT0gXCIxXCJcbiAgICAgICAgICAgIDogQm9vbGVhbihwcm9jZXNzLmVudltcIlZJVEVfU1NSXCJdKSk7XG4gICAgY29uc3QgZW52RGlyID1cbiAgICAgIGNvbmRpdGlvbiA9PT0gXCJyZWFjdC1jbGllbnRcIiAmJiBzc3JcbiAgICAgICAgPyB1c2VyT3B0aW9ucy5idWlsZC5jbGllbnRcbiAgICAgICAgOiBjb25kaXRpb24gPT09IFwicmVhY3QtY2xpZW50XCJcbiAgICAgICAgPyB1c2VyT3B0aW9ucy5idWlsZC5zdGF0aWNcbiAgICAgICAgOiB1c2VyT3B0aW9ucy5idWlsZC5zZXJ2ZXI7XG4gICAgY29uc3QgZW52SWQgPSBgJHtlbnZEaXJ9JHtzc3IgPyBcIi1zc3JcIiA6IFwiXCJ9YDtcblxuICAgIGlmIChzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICB1c2VyQ29uZmlnOiBzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEdldCBleGlzdGluZyBpbnB1dHNcbiAgICBjb25zdCByb290ID0gY29uZmlnLnJvb3QgPz8gdXNlck9wdGlvbnMucHJvamVjdFJvb3QgPz8gcHJvY2Vzcy5jd2QoKTtcblxuICAgIGNvbnN0IGhhbmRsZVNzckVudHJ5TmFtZSA9IChcbiAgICAgIGluZm86IFByZVJlbmRlcmVkQ2h1bmssXG4gICAgICBpbnB1dDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIGZhbGxiYWNrOiAoaW5mbzogUHJlUmVuZGVyZWRDaHVuaywgc3NyOiBib29sZWFuKSA9PiBzdHJpbmcsXG4gICAgICBzc3I6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIGlmICghc3NyIHx8ICFpbnB1dCkge1xuICAgICAgICBpZiAodHlwZW9mIGZhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsbGJhY2soaW5mbywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyT3B0aW9ucy5ub3JtYWxpemVyKGluZm8ubmFtZSlbMF07XG4gICAgICB9XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gdXNlck9wdGlvbnMubm9ybWFsaXplcihpbnB1dCk7XG4gICAgICBsZXQgdmFsdWUgPSBub3JtYWxpemVkWzFdO1xuICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgodXNlck9wdGlvbnMubW9kdWxlQmFzZVBhdGgpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UodXNlck9wdGlvbnMubW9kdWxlQmFzZVBhdGgubGVuZ3RoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5ID0gYXV0b0Rpc2NvdmVyZWRGaWxlcy5zdGF0aWNNYW5pZmVzdFt2YWx1ZV07XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmZpbGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsbGJhY2soaW5mbywgdHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVNzckFzc2V0TmFtZSA9IChcbiAgICAgIGluZm86IFByZVJlbmRlcmVkQXNzZXQsXG4gICAgICBpbnB1dDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIGZhbGxiYWNrOiAoaW5mbzogUHJlUmVuZGVyZWRBc3NldCwgc3NyOiBib29sZWFuKSA9PiBzdHJpbmcsXG4gICAgICBzc3I6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIGlmIChpbmZvLnNvdXJjZSA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIENTUyBmaWxlXG4gICAgICBjb25zdCBpc0Nzc0ZpbGUgPSBpbnB1dD8uZW5kc1dpdGgoJy5jc3MnKSB8fCBcbiAgICAgICAgaW5mby5uYW1lcz8uc29tZShuYW1lID0+IG5hbWUuZW5kc1dpdGgoJy5jc3MnKSk7XG4gICAgICBcbiAgICAgIGlmICghc3NyIHx8ICFpbnB1dCB8fCBpc0Nzc0ZpbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKGluZm8sIHNzcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXJPcHRpb25zLm5vcm1hbGl6ZXIoaW5mby5uYW1lc1swXSlbMF07XG4gICAgICB9XG4gICAgICBcbiAgICAgIFxuICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgaGF2ZSBhIHN0YXRpYyBtYW5pZmVzdCBlbnRyeSBmb3IgY29uc2lzdGVudCBtb2R1bGUgSUQgcmVzb2x1dGlvblxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHVzZXJPcHRpb25zLm5vcm1hbGl6ZXIoaW5wdXQpO1xuICAgICAgY29uc3QgaWQgPSBub3JtYWxpemVkWzBdO1xuICAgICAgbGV0IHZhbHVlID0gbm9ybWFsaXplZFsxXTtcbiAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKHVzZXJPcHRpb25zLm1vZHVsZUJhc2VQYXRoKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHVzZXJPcHRpb25zLm1vZHVsZUJhc2VQYXRoLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGVudHJ5ID0gYXV0b0Rpc2NvdmVyZWRGaWxlcy5zdGF0aWNNYW5pZmVzdFt2YWx1ZV07XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgLy8gRm9yIENTUyBmaWxlcywgbG9vayBmb3IgYSBzcGVjaWZpYyBDU1MgZmlsZSB0aGF0IG1hdGNoZXMgb3VyIG5vcm1hbGl6ZWQgSURcbiAgICAgICAgaWYgKGVudHJ5Py5uYW1lICYmIHVzZXJPcHRpb25zLmF1dG9EaXNjb3Zlci5jc3NQYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBlbnRyeS5jc3M/LmZpbmQoKGNzcykgPT4gY3NzLnN0YXJ0c1dpdGgoaWQgYXMgc3RyaW5nKSk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gam9pbih1c2VyT3B0aW9ucy5idWlsZC5hc3NldHNEaXIsIGZvdW5kKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGpvaW4odXNlck9wdGlvbnMuYnVpbGQuYXNzZXRzRGlyLCBlbnRyeS5maWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIG90aGVyIGFzc2V0cywgdXNlIHRoZSBlbnRyeSBmaWxlXG4gICAgICAgICAgcmV0dXJuIGVudHJ5LmZpbGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSB1c2VyJ3MgYXNzZXRGaWxlIGZ1bmN0aW9uIGZvciBjb25zaXN0ZW50IGJlaGF2aW9yXG4gICAgICByZXR1cm4gZmFsbGJhY2soaW5mbywgc3NyKTtcbiAgICB9O1xuICAgIGNvbnN0IHVzZXJEZWZpbmVkT3V0cHV0ID0gY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vdXRwdXQ7XG4gICAgY29uc3QgaGFzT3RoZXJPdXRwdXQgPVxuICAgICAgQXJyYXkuaXNBcnJheSh1c2VyRGVmaW5lZE91dHB1dCkgJiYgdXNlckRlZmluZWRPdXRwdXQubGVuZ3RoID4gMTtcbiAgICBjb25zdCBoYXNWYWxpZE91dHB1dCA9IHVzZXJEZWZpbmVkT3V0cHV0ICYmICFoYXNPdGhlck91dHB1dDtcbiAgICBjb25zdCBoYXNPYmplY3RPdXRwdXQgPVxuICAgICAgdXNlckRlZmluZWRPdXRwdXQgJiZcbiAgICAgICFoYXNPdGhlck91dHB1dCAmJlxuICAgICAgdHlwZW9mIHVzZXJEZWZpbmVkT3V0cHV0ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB1c2VyRGVmaW5lZE91dHB1dCAhPT0gbnVsbDtcblxuICAgIGNvbnN0IHVzZXJEZWZpbmVkQXNzZXRGaWxlTmFtZXMgPSBoYXNPYmplY3RPdXRwdXRcbiAgICAgID8gXCJhc3NldEZpbGVOYW1lc1wiIGluIHVzZXJEZWZpbmVkT3V0cHV0XG4gICAgICAgID8gdXNlckRlZmluZWRPdXRwdXQuYXNzZXRGaWxlTmFtZXNcbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIDogLy8gZmluZCB0aGUgb3RoZXIgYXNzZXQgZmlsZSBuYW1lc1xuICAgICAgaGFzT3RoZXJPdXRwdXRcbiAgICAgID8gKHVzZXJEZWZpbmVkT3V0cHV0LmZpbmQoKG8pID0+IG8uYXNzZXRGaWxlTmFtZXMpIGFzIE91dHB1dE9wdGlvbnMpXG4gICAgICAgICAgLmFzc2V0RmlsZU5hbWVzXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHVzZXJEZWZpbmVkQ2h1bmtGaWxlTmFtZXMgPSBoYXNWYWxpZE91dHB1dFxuICAgICAgPyBcImNodW5rRmlsZU5hbWVzXCIgaW4gdXNlckRlZmluZWRPdXRwdXRcbiAgICAgICAgPyB1c2VyRGVmaW5lZE91dHB1dC5jaHVua0ZpbGVOYW1lc1xuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdXNlckRlZmluZWRFbnRyeUZpbGVOYW1lcyA9IGhhc1ZhbGlkT3V0cHV0XG4gICAgICA/IFwiZW50cnlGaWxlTmFtZXNcIiBpbiB1c2VyRGVmaW5lZE91dHB1dFxuICAgICAgICA/IHVzZXJEZWZpbmVkT3V0cHV0LmVudHJ5RmlsZU5hbWVzXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHN0YXNoZWRSZXR1cm5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgY29uc3QgcGx1Z2luT3V0cHV0ID0ge1xuICAgICAgcHJlc2VydmVNb2R1bGVzUm9vdDogdXNlck9wdGlvbnMuYnVpbGQucHJlc2VydmVNb2R1bGVzUm9vdFxuICAgICAgICA/IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBlbnRyeUZpbGVOYW1lczpcbiAgICAgICAgdXNlckRlZmluZWRFbnRyeUZpbGVOYW1lcyA/P1xuICAgICAgICAoKGluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBpbnB1dCA9XG4gICAgICAgICAgICBpbmZvLmZhY2FkZU1vZHVsZUlkID8/XG4gICAgICAgICAgICBpbmZvLm5hbWUgKyB1c2VyT3B0aW9ucy5idWlsZC5tb2R1bGVFeHRlbnNpb247XG4gICAgICAgICAgY29uc3QgaW5wdXRJZCA9IGlucHV0ICsgKHNzciA/IFwiLXNzclwiIDogXCJcIik7XG4gICAgICAgICAgaWYgKCFzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSkge1xuICAgICAgICAgICAgY29uc3QgciA9IGhhbmRsZVNzckVudHJ5TmFtZShcbiAgICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgIHVzZXJPcHRpb25zLmJ1aWxkLmVudHJ5RmlsZSxcbiAgICAgICAgICAgICAgc3NyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHVzZXJPcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlbnRyeUZpbGVOYW1lc1wiLCBpbnB1dCwgcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSA9IHIgPz8gaW5mby5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBlbXB0eSBiYXNlUGF0aCwgaXQgd2lsbCBub3QgYmUgc2xpY2VkIGZyb20gdGhlIHBhdGgsIHNvLCB3ZSBuZWVkIHRvIHNsaWNlIGl0IGhlcmVcbiAgICAgICAgICAvLyBhdCB0aGUgbGFzdCBwb3NzaWJsZSBtb21lbnQgYXMgdG8gbm90IGNvbmZ1c2UgdGhlIHJlc3Qgb2YgdGhlIGxvZ2ljIGFyb3VuZCB0aGUgYmFzZVBhdGhcbiAgICAgICAgICByZXR1cm4gc3Rhc2hlZFJldHVybnNbaW5wdXRJZF0uc2xpY2UoXG4gICAgICAgICAgICBOdW1iZXIoc3Rhc2hlZFJldHVybnNbaW5wdXRJZF0uc3RhcnRzV2l0aChcIi9cIikpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICBhc3NldEZpbGVOYW1lczogcHJvY2Vzcy5lbnZbXCJWSVRFU1RcIl1cbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiB1c2VyRGVmaW5lZEFzc2V0RmlsZU5hbWVzID8/XG4gICAgICAgICAgKChpbmZvKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IGluZm8ub3JpZ2luYWxGaWxlTmFtZXNbMF07XG4gICAgICAgICAgICBjb25zdCBpbnB1dElkID0gaW5wdXQgKyAoc3NyID8gXCItc3NyXCIgOiBcIlwiKTtcblxuICAgICAgICAgICAgaWYgKCFzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSkge1xuICAgICAgICAgICAgICBjb25zdCByID0gaGFuZGxlU3NyQXNzZXROYW1lKFxuICAgICAgICAgICAgICAgIGluZm8sXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgdXNlck9wdGlvbnMuYnVpbGQuYXNzZXRGaWxlLFxuICAgICAgICAgICAgICAgIHNzclxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKHVzZXJPcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFzc2V0RmlsZU5hbWVzXCIsIGlucHV0LCByKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSA9IHIgPz8gam9pbih1c2VyT3B0aW9ucy5idWlsZC5hc3NldHNEaXIsIHVzZXJPcHRpb25zLm5vcm1hbGl6ZXIoaW5wdXQpWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGVtcHR5IGJhc2VQYXRoLCBpdCB3aWxsIG5vdCBiZSBzbGljZWQgZnJvbSB0aGUgcGF0aCwgc28sIHdlIG5lZWQgdG8gc2xpY2UgaXQgaGVyZVxuICAgICAgICAgICAgLy8gYXQgdGhlIGxhc3QgcG9zc2libGUgbW9tZW50IGFzIHRvIG5vdCBjb25mdXNlIHRoZSByZXN0IG9mIHRoZSBsb2dpYyBhcm91bmQgdGhlIGJhc2VQYXRoXG4gICAgICAgICAgICByZXR1cm4gc3Rhc2hlZFJldHVybnNbaW5wdXRJZF0uc2xpY2UoXG4gICAgICAgICAgICAgIE51bWJlcihzdGFzaGVkUmV0dXJuc1tpbnB1dElkXS5zdGFydHNXaXRoKFwiL1wiKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICBjaHVua0ZpbGVOYW1lczpcbiAgICAgICAgdXNlckRlZmluZWRDaHVua0ZpbGVOYW1lcyA/P1xuICAgICAgICAoKGluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBpbnB1dCA9XG4gICAgICAgICAgICBpbmZvLmZhY2FkZU1vZHVsZUlkID8/XG4gICAgICAgICAgICBpbmZvLm5hbWUgKyB1c2VyT3B0aW9ucy5hdXRvRGlzY292ZXIubW9kdWxlUGF0dGVybi5zb3VyY2U7XG4gICAgICAgICAgY29uc3QgaW5wdXRJZCA9IGlucHV0ICsgKHNzciA/IFwiLXNzclwiIDogXCJcIik7XG5cbiAgICAgICAgICBpZiAoIXN0YXNoZWRSZXR1cm5zW2lucHV0SWRdKSB7XG4gICAgICAgICAgICBjb25zdCByID0gaGFuZGxlU3NyRW50cnlOYW1lKFxuICAgICAgICAgICAgICBpbmZvLFxuICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgdXNlck9wdGlvbnMuYnVpbGQuY2h1bmtGaWxlLFxuICAgICAgICAgICAgICBzc3JcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICh1c2VyT3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2h1bmtGaWxlTmFtZXNcIiwgaW5wdXQsIHN0YXNoZWRSZXR1cm5zW2lucHV0SWRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXNoZWRSZXR1cm5zW2lucHV0SWRdID0gciA/PyBpbmZvLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGVtcHR5IGJhc2VQYXRoLCBpdCB3aWxsIG5vdCBiZSBzbGljZWQgZnJvbSB0aGUgcGF0aCwgc28sIHdlIG5lZWQgdG8gc2xpY2UgaXQgaGVyZVxuICAgICAgICAgIC8vIGF0IHRoZSBsYXN0IHBvc3NpYmxlIG1vbWVudCBhcyB0byBub3QgY29uZnVzZSB0aGUgcmVzdCBvZiB0aGUgbG9naWMgYXJvdW5kIHRoZSBiYXNlUGF0aFxuICAgICAgICAgIHJldHVybiBzdGFzaGVkUmV0dXJuc1tpbnB1dElkXS5zbGljZShcbiAgICAgICAgICAgIE51bWJlcihzdGFzaGVkUmV0dXJuc1tpbnB1dElkXS5zdGFydHNXaXRoKFwiL1wiKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIGZvcm1hdDogXCJlc21cIixcbiAgICAgIGV4cG9ydHM6IFwibmFtZWRcIixcbiAgICB9IHNhdGlzZmllcyBPdXRwdXRPcHRpb25zO1xuXG4gICAgY29uc3QgbmV3T3V0cHV0ID0gQXJyYXkuaXNBcnJheShjb25maWcuYnVpbGQ/LnJvbGx1cE9wdGlvbnM/Lm91dHB1dClcbiAgICAgID8gWy4uLihjb25maWcuYnVpbGQ/LnJvbGx1cE9wdGlvbnM/Lm91dHB1dCB8fCBudWxsKSwgcGx1Z2luT3V0cHV0XVxuICAgICAgOiB0eXBlb2YgY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vdXRwdXQgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vdXRwdXQgIT09IG51bGxcbiAgICAgID8gW2NvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8ub3V0cHV0LCBwbHVnaW5PdXRwdXRdXG4gICAgICA6IHBsdWdpbk91dHB1dDtcbiAgICBjb25zdCB2aXRlUHJlZml4ID0gY29uZmlnLmVudlByZWZpeCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYO1xuICAgIGNvbnN0IG5vZGVFbnYgPSBnZXROb2RlRW52KCk7XG4gICAgbGV0IG1vZGUgPVxuICAgICAgY29uZmlnLm1vZGUgPz9cbiAgICAgIHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9TU9ERWBdID8/XG4gICAgICBwcm9jZXNzLmVudltcIk5PREVfRU5WXCJdID8/XG4gICAgICBub2RlRW52O1xuXG4gICAgaWYgKG1vZGUgIT09IG5vZGVFbnYpIHtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnLm1vZGUgPT09IFwic3RyaW5nXCIgJiYgbm9kZUVudiAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlICR7bW9kZX0gbXVzdCBiZSBlcXVhbCB0byBOT0RFX0VOViAke25vZGVFbnZ9LmApO1xuICAgICAgfVxuICAgICAgbW9kZSA9IG5vZGVFbnY7XG4gICAgfVxuICAgIGNvbnN0IG1pbmlmeSA9IGNvbmZpZy5idWlsZD8ubWluaWZ5O1xuXG4gICAgY29uc3Qgc3JyQ29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLnNzcixcbiAgICAgIHRhcmdldDogY29uZmlnLnNzcj8udGFyZ2V0ID8/IFwibm9kZVwiLFxuICAgICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICAgIC4uLmNvbmZpZy5zc3I/Lm9wdGltaXplRGVwcyxcbiAgICAgICAgaW5jbHVkZTogY29uZmlnLnNzcj8ub3B0aW1pemVEZXBzPy5pbmNsdWRlID8/IFtcbiAgICAgICAgICBcInJlYWN0XCIsXG4gICAgICAgICAgXCJyZWFjdC1kb21cIixcbiAgICAgICAgICBcInJlYWN0LXNlcnZlci1kb20tZXNtL2NsaWVudFwiLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgLi4uY29uZmlnLnNzcj8ucmVzb2x2ZSxcbiAgICAgICAgZXh0ZXJuYWxDb25kaXRpb25zOiBjb25maWcuc3NyPy5yZXNvbHZlPy5leHRlcm5hbENvbmRpdGlvbnMgPz8gW1xuICAgICAgICAgIFwicmVhY3Qtc2VydmVyXCIsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gICAgbGV0IHB1YmxpY09yaWdpbiA9XG4gICAgICB1c2VyT3B0aW9ucy5wdWJsaWNPcmlnaW4gPz9cbiAgICAgIHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9UFVCTElDX09SSUdJTmBdID8/XG4gICAgICBcIlwiO1xuICAgIGNvbnN0IFBST0QgPSBtb2RlID09PSBcInByb2R1Y3Rpb25cIjtcbiAgICBjb25zdCBERVYgPSBtb2RlID09PSBcImRldmVsb3BtZW50XCI7XG4gICAgY29uc3QgcG9ydCA9XG4gICAgICB0eXBlb2YgY29uZmlnLnNlcnZlcj8ucG9ydCA9PT0gXCJudW1iZXJcIiA/IGNvbmZpZy5zZXJ2ZXI/LnBvcnQgOiA1MTczO1xuICAgIGNvbnN0IHN0cmljdFBvcnQgPSBjb25maWcuc2VydmVyPy5zdHJpY3RQb3J0ID8/IHRydWU7XG4gICAgY29uc3QgaG9zdCA9XG4gICAgICB0eXBlb2YgY29uZmlnLnNlcnZlcj8uaG9zdCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IGNvbmZpZy5zZXJ2ZXI/Lmhvc3RcbiAgICAgICAgOiBcImxvY2FsaG9zdFwiO1xuICAgIGlmIChjb25maWdFbnYuY29tbWFuZCA9PT0gXCJzZXJ2ZVwiICYmICFjb25maWdFbnYuaXNQcmV2aWV3KSB7XG4gICAgICBpZiAoc3RyaWN0UG9ydCkge1xuICAgICAgICBwdWJsaWNPcmlnaW4gPSBgaHR0cCR7XG4gICAgICAgICAgY29uZmlnLnNlcnZlcj8uaHR0cHMgPyBcInNcIiA6IFwiXCJcbiAgICAgICAgfTovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdWJsaWNPcmlnaW4gPSBcIlwiO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzc3JEZWZpbmUgPSBzc3JcbiAgICAgID8ge1xuICAgICAgICAgIFtgcHJvY2Vzcy5lbnYuJHt2aXRlUHJlZml4fVNTUmBdOiBgJHtzc3J9YCxcbiAgICAgICAgICBbYHByb2Nlc3MuZW52LiR7dml0ZVByZWZpeH1ERVZgXTogYCR7REVWfWAsXG4gICAgICAgICAgW2Bwcm9jZXNzLmVudi4ke3ZpdGVQcmVmaXh9UFJPRGBdOiBgJHtQUk9EfWAsXG4gICAgICAgICAgW2Bwcm9jZXNzLmVudi4ke3ZpdGVQcmVmaXh9TU9ERWBdOiBgXCIke21vZGV9XCJgLFxuICAgICAgICAgIFtgcHJvY2Vzcy5lbnYuJHt2aXRlUHJlZml4fUJBU0VfVVJMYF06IGBcIiR7dXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTH1cImAsXG4gICAgICAgICAgW2Bwcm9jZXNzLmVudi4ke3ZpdGVQcmVmaXh9UFVCTElDX09SSUdJTmBdOiBgXCIke3B1YmxpY09yaWdpbn1cImAsXG4gICAgICAgIH1cbiAgICAgIDoge307XG4gICAgY29uc3QgZGVmaW5lID0ge1xuICAgICAgLi4uY29uZmlnLmRlZmluZSxcbiAgICAgIFtgaW1wb3J0Lm1ldGEuZW52LkJBU0VfVVJMYF06IGBcIiR7dXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTH1cImAsXG4gICAgICBbYGltcG9ydC5tZXRhLmVudi5QVUJMSUNfT1JJR0lOYF06IGBcIiR7cHVibGljT3JpZ2lufVwiYCxcbiAgICAgIC4uLnNzckRlZmluZSxcbiAgICB9O1xuICAgIC8vIHRoZXNlIHdpbGwgbmV2ZXIgYmUgY2xlYW5lZCB1cCwgYmVjYXVzZSwgd2UgYXJlIHJlc29sdmluZyB0aGUgdXNlciBjb25maWdcbiAgICAvLyBhbmQgaXQncyBhc3N1bWVkIHRoZSB0aHJlYWQgY2xvc2VzIGFmdGVyIHRoaXMgYW5kIHdlIGRvbid0IHdhbnRcbiAgICAvLyBpdCB0byBjaGFuZ2UgYWZ0ZXIgdGhlIGNvbmZpZyBoYXMgYmVlbiByZXNvbHZlZFxuICAgIGlmIChwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fUJBU0VfVVJMYF0gIT09IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwpIHtcbiAgICAgIHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9QkFTRV9VUkxgXSA9IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkw7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fVBVQkxJQ19PUklHSU5gXSAhPT0gcHVibGljT3JpZ2luKSB7XG4gICAgICBwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fVBVQkxJQ19PUklHSU5gXSA9IHB1YmxpY09yaWdpbjtcbiAgICB9XG5cbiAgICBpZiAoY29uZGl0aW9uID09PSBcInJlYWN0LWNsaWVudFwiKSB7XG4gICAgICAvLyBjbGllbnQgcGx1Z2luIGJ1aWxkIG9wdGlvbnMgKGNsaWVudCBwbHVnaW4gc3RpbGwgb3V0cHV0cyBzZXJ2ZXIgZmlsZXMpXG4gICAgICBjb25zdCBjbGllbnRDb25maWcgPSB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgcm9vdDogcm9vdCxcbiAgICAgICAgbW9kZTogbW9kZSxcbiAgICAgICAgYmFzZTogY29uZmlnLmJhc2UgPz8gdXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTCxcbiAgICAgICAgZW52UHJlZml4OiB2aXRlUHJlZml4LFxuICAgICAgICByZXNvbHZlOiB7XG4gICAgICAgICAgLi4uY29uZmlnLnJlc29sdmUsXG4gICAgICAgICAgZXh0ZXJuYWw6IGNvbmZpZy5yZXNvbHZlPy5leHRlcm5hbCA/PyBbXG4gICAgICAgICAgICBcInJlYWN0XCIsXG4gICAgICAgICAgICBcInJlYWN0LWRvbVwiLFxuICAgICAgICAgICAgXCJyZWFjdC1zZXJ2ZXItZG9tLWVzbS9jbGllbnRcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBkZWZpbmU6IGRlZmluZSxcbiAgICAgICAgc3NyOiBzcnJDb25maWcsXG4gICAgICAgIHNlcnZlcjoge1xuICAgICAgICAgIC4uLmNvbmZpZy5zZXJ2ZXIsXG4gICAgICAgICAgLy8gY29tbW9uIGRlZmF1bHQgZm9yIHN0cmljdGVyIHNlcnZlciBvcGVyYXRpb25zXG4gICAgICAgICAgLy8gYW5kIGVuc3VyZXMgdGVzdHMgdGhhdCB1c2UgYSBzZXJ2ZXIgd2lsbCBmYWlsIGVhcmx5XG4gICAgICAgICAgLy8gYWxzbywgd2UgY2FuJ3Qgc2V0IHRoZSBwdWJsaWMgb3JpZ2luIHdpdGhvdXQgYSBwb3J0XG4gICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICBzdHJpY3RQb3J0OiBzdHJpY3RQb3J0LFxuICAgICAgICAgIGhvc3Q6IGhvc3QsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGNsaWVudCBidWlsZCBvcHRpb25zXG4gICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgLi4uY29uZmlnLmJ1aWxkLFxuICAgICAgICAgIG1vZHVsZVByZWxvYWQ6IGNvbmZpZy5idWlsZD8ubW9kdWxlUHJlbG9hZCA/PyBmYWxzZSxcbiAgICAgICAgICBlbXB0eU91dERpcjogY29uZmlnLmJ1aWxkPy5lbXB0eU91dERpciA/PyB0cnVlLFxuICAgICAgICAgIG91dERpcjpcbiAgICAgICAgICAgIGNvbmZpZy5idWlsZD8ub3V0RGlyID8/IGpvaW4odXNlck9wdGlvbnMuYnVpbGQub3V0RGlyLCBlbnZEaXIpLFxuICAgICAgICAgIGFzc2V0c0RpcjogY29uZmlnLmJ1aWxkPy5hc3NldHNEaXIgPz8gdXNlck9wdGlvbnMuYnVpbGQuYXNzZXRzRGlyLFxuICAgICAgICAgIGNvcHlQdWJsaWNEaXI6XG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLmJ1aWxkPy5jb3B5UHVibGljRGlyID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICA/IGNvbmZpZy5idWlsZD8uY29weVB1YmxpY0RpclxuICAgICAgICAgICAgICA6ICFzc3IsXG4gICAgICAgICAgLy8gbW9kZXJuIGJyb3dzZXJzXG4gICAgICAgICAgdGFyZ2V0OiBjb25maWcuYnVpbGQ/LnRhcmdldCA/PyBbXCJlc25leHRcIl0sXG4gICAgICAgICAgbWluaWZ5OiBtaW5pZnksXG4gICAgICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICAgICAgLi4uY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zLFxuICAgICAgICAgICAgaW5wdXQ6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYXV0b0Rpc2NvdmVyZWRGaWxlcy5pbnB1dHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlLnNsaWNlKE51bWJlcih2YWx1ZS5zdGFydHNXaXRoKFwiL1wiKSkpLFxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG91dHB1dDogbmV3T3V0cHV0LFxuICAgICAgICAgICAgcHJlc2VydmVFbnRyeVNpZ25hdHVyZXM6XG4gICAgICAgICAgICAgIGNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8ucHJlc2VydmVFbnRyeVNpZ25hdHVyZXMgPz9cbiAgICAgICAgICAgICAgXCJleHBvcnRzLW9ubHlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNzcjogc3NyLFxuICAgICAgICAgIG1hbmlmZXN0OiBjb25maWcuYnVpbGQ/Lm1hbmlmZXN0ID8/IGAudml0ZS9tYW5pZmVzdC5qc29uYCxcbiAgICAgICAgICBzc3JNYW5pZmVzdDogY29uZmlnLmJ1aWxkPy5zc3JNYW5pZmVzdCA/PyBgLnZpdGUvc3NyLW1hbmlmZXN0Lmpzb25gLFxuICAgICAgICAgIHNzckVtaXRBc3NldHM6IGNvbmZpZy5idWlsZD8uc3NyRW1pdEFzc2V0cyA/PyB0cnVlLFxuICAgICAgICAgIGNzc0NvZGVTcGxpdDpcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdCA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgPyBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdFxuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9IHNhdGlzZmllcyBSZXNvbHZlZFVzZXJDb25maWc7XG4gICAgICBzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0gPSBjbGllbnRDb25maWc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgdXNlckNvbmZpZzogY2xpZW50Q29uZmlnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VydmVyQ29uZmlnID0ge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgIGJhc2U6IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwsXG4gICAgICAgIGVudlByZWZpeDogdml0ZVByZWZpeCxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgIC4uLmNvbmZpZy5yZXNvbHZlLFxuICAgICAgICAgIGV4dGVybmFsQ29uZGl0aW9uczogY29uZmlnLnJlc29sdmU/LmV4dGVybmFsQ29uZGl0aW9ucyA/PyBbXG4gICAgICAgICAgICBcInJlYWN0LXNlcnZlclwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmluZTogZGVmaW5lLFxuICAgICAgICBzc3I6IHNyckNvbmZpZyxcbiAgICAgICAgLy8gc2VydmVyIGJ1aWxkIG9wdGlvbnNcbiAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAuLi5jb25maWcuYnVpbGQsXG4gICAgICAgICAgbW9kdWxlUHJlbG9hZDogY29uZmlnLmJ1aWxkPy5tb2R1bGVQcmVsb2FkID8/IGZhbHNlLFxuICAgICAgICAgIGVtcHR5T3V0RGlyOiBjb25maWcuYnVpbGQ/LmVtcHR5T3V0RGlyID8/IHRydWUsXG4gICAgICAgICAgb3V0RGlyOlxuICAgICAgICAgICAgY29uZmlnLmJ1aWxkPy5vdXREaXIgPz8gam9pbih1c2VyT3B0aW9ucy5idWlsZC5vdXREaXIsIGVudkRpciksXG4gICAgICAgICAgdGFyZ2V0OiBjb25maWcuYnVpbGQ/LnRhcmdldCA/PyBcIm5vZGUxOFwiLFxuICAgICAgICAgIG1pbmlmeTogbWluaWZ5LFxuICAgICAgICAgIHNzcjogc3NyLFxuICAgICAgICAgIG1hbmlmZXN0OiBjb25maWcuYnVpbGQ/Lm1hbmlmZXN0ID8/IGAudml0ZS9tYW5pZmVzdC5qc29uYCxcbiAgICAgICAgICBzc3JNYW5pZmVzdDogY29uZmlnLmJ1aWxkPy5zc3JNYW5pZmVzdCA/PyBgLnZpdGUvc3NyLW1hbmlmZXN0Lmpzb25gLFxuICAgICAgICAgIHNzckVtaXRBc3NldHM6XG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLmJ1aWxkPy5zc3JFbWl0QXNzZXRzID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICA/IGNvbmZpZy5idWlsZD8uc3NyRW1pdEFzc2V0c1xuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgY29weVB1YmxpY0RpcjpcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuYnVpbGQ/LmNvcHlQdWJsaWNEaXIgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgID8gY29uZmlnLmJ1aWxkPy5jb3B5UHVibGljRGlyXG4gICAgICAgICAgICAgIDogIXNzcixcbiAgICAgICAgICBhc3NldHNEaXI6IGNvbmZpZy5idWlsZD8uYXNzZXRzRGlyID8/IHVzZXJPcHRpb25zLmJ1aWxkLmFzc2V0c0RpcixcbiAgICAgICAgICAvLyBFbnN1cmUgQ1NTIGZpbGVzIGFyZSBvdXRwdXQgdG8gc3RhdGljIGRpcmVjdG9yeVxuICAgICAgICAgIGNzc0NvZGVTcGxpdDpcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdCA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgPyBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdFxuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICAgICAgLi4uY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zLFxuICAgICAgICAgICAgaW5wdXQ6IGF1dG9EaXNjb3ZlcmVkRmlsZXMuaW5wdXRzLFxuICAgICAgICAgICAgcHJlc2VydmVFbnRyeVNpZ25hdHVyZXM6XG4gICAgICAgICAgICAgIGNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8ucHJlc2VydmVFbnRyeVNpZ25hdHVyZXMgPz8gXCJzdHJpY3RcIixcbiAgICAgICAgICAgIG91dHB1dDogbmV3T3V0cHV0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9IHNhdGlzZmllcyBSZXNvbHZlZFVzZXJDb25maWc7XG4gICAgICBzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0gPSBzZXJ2ZXJDb25maWc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgdXNlckNvbmZpZzogc2VydmVyQ29uZmlnLFxuICAgICAgfTtcbiAgICB9XG4gIH07XG4iXSwibmFtZXMiOlsic3NyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFXQSxNQUFNLG9CQUErRCxFQUFDO0FBa0J6RCxNQUFBLGlCQUFBLEdBQ1gsU0FBUyxrQkFBbUIsQ0FBQTtBQUFBLEVBQzFCLFNBQUE7QUFBQSxFQUNBLE1BQUE7QUFBQSxFQUNBLFNBQUE7QUFBQSxFQUNBLFdBQUE7QUFBQSxFQUNBO0FBQ0YsQ0FBRyxFQUFBO0FBQ0QsRUFBQSxNQUFNLEdBQ0osR0FBQSxPQUFPLE1BQU8sQ0FBQSxLQUFBLEVBQU8sUUFBUSxTQUN6QixHQUFBLE1BQUEsQ0FBTyxLQUFPLEVBQUEsR0FBQSxHQUNkLFFBQVEsU0FBVSxDQUFBLFVBQVUsQ0FDNUIsSUFBQSxTQUFBLEtBQWMsbUJBQ2IsT0FBTyxPQUFBLENBQVEsR0FBSSxDQUFBLFVBQVUsTUFBTSxRQUNoQyxHQUFBLE9BQUEsQ0FBUSxHQUFJLENBQUEsVUFBVSxNQUFNLE1BQzVCLElBQUEsT0FBQSxDQUFRLEdBQUksQ0FBQSxVQUFVLE1BQU0sR0FDNUIsR0FBQSxPQUFBLENBQVEsT0FBUSxDQUFBLEdBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBO0FBQ3pDLEVBQUEsTUFBTSxNQUNKLEdBQUEsU0FBQSxLQUFjLGNBQWtCLElBQUEsR0FBQSxHQUM1QixXQUFZLENBQUEsS0FBQSxDQUFNLE1BQ2xCLEdBQUEsU0FBQSxLQUFjLGNBQ2QsR0FBQSxXQUFBLENBQVksS0FBTSxDQUFBLE1BQUEsR0FDbEIs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
@@ -1,4 +1,10 @@
1
1
  import type { Plugin } from "vite";
2
+ import type { ConfigEnv } from "vite";
3
+ /**
4
+ * Reconstruct ConfigEnv from process.argv and environment variables
5
+ * This allows us to determine the config environment before the config hook runs
6
+ */
7
+ export declare const createConfigEnv: () => ConfigEnv;
2
8
  /**
3
9
  * This plugin can be used to set up the environment defined in the env file
4
10
  * and the `define` clause in the vite config to be directly assigned to the process.env,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/env/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAiBnC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAqElC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/env/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,SA0BlC,CAAC;AA4CF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAqElC"}
@@ -1,97 +1,115 @@
1
- import { resolveConfigDefine, resolveEnv } from "../config/resolveEnv.js";
2
- import { DEFAULT_CONFIG } from "../config/defaults.js";
3
- import { userProjectRoot } from "../root.js";
4
- const isBuild = process.argv[process.argv.length - 1] === "build";
5
- const isPreview = process.argv.findIndex((arg) => arg === "preview") !== -1;
6
- // Set up environment variables from .env files as early as possible
7
- // This is to ensure that the env variables are available even in the config file,
8
- // and you can use process.env to configure the plugin.
9
- const cleanupInitialUserConfigEnv = resolveEnv(process.env["NODE_ENV"] || (isBuild || isPreview ? "production" : "development"), userProjectRoot, DEFAULT_CONFIG.ENV_PREFIX);
10
1
  /**
11
- * This plugin can be used to set up the environment defined in the env file
12
- * and the `define` clause in the vite config to be directly assigned to the process.env,
13
- * making it available in workers, server components and plugin hooks like config, configureServer, etc.
14
- *
15
- * You can also set these variable in the package.json script like `VITE_PUBLIC_ORIGIN=https://example.com npm run build`
16
- * The default ones like `VITE_DEV` etc, are set to the default values if not defined in the env file or the `define` clause.
17
- *
18
- * If they do end up in the build, the define clause replaces process.env.VITE_BASE_URL etc, same like it
19
- * replaces `import.meta.env.BASE_URL`.
20
- *
21
- * While using node.process.env is dangerous as it may expose valuable information to the client, the define clause
22
- * replaces them in the build so it's safe as long as you stick to simple stuff like const baseUrl = process.env.VITE_BASE_URL
23
- * would be the same as writing const baseUrl = import.meta.env.BASE_URL. But this plugin doesn't enable that feature nor does
24
- * it return any config, it just sets the process.env variables at a early momemt and deletes them after the build unless they were
25
- * already set in the environment.
26
- *
27
- * This plugin will not override process.env variable that were previously set, and will remove any values that it did set after the bundle closes.
28
- * ```example
29
- * const config = {
30
- * moduleBase: 'src',
31
- * // loaded from either .env file or existing process.env, based on the NODE_ENV
32
- * publicOrigin: process.env.VITE_PUBLIC_ORIGIN,
33
- * }
34
- * ```
35
- * @returns
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
36
5
  */
37
- export function envPlugin() {
38
- let cleanupEnv;
39
- let vitePrefix = DEFAULT_CONFIG.ENV_PREFIX;
40
- return {
41
- name: "vite-plugin-react-server:env",
42
- enforce: "pre",
43
- config(config, { mode }) {
44
- if (config.envPrefix) {
45
- if (typeof config.envPrefix === "string") {
46
- vitePrefix = config.envPrefix;
47
- }
48
- else if (Array.isArray(config.envPrefix)) {
49
- vitePrefix = config.envPrefix[0];
50
- }
51
- }
52
- const invalidEnv = (mode !== undefined && mode !== process.env[`${vitePrefix}MODE`]) ||
53
- (config.root !== undefined && config.root !== userProjectRoot);
54
- if (invalidEnv) {
55
- cleanupInitialUserConfigEnv();
56
- }
57
- // Clean up any previous env setup
58
- const cleanupUserConfigEnv = invalidEnv
59
- ? resolveEnv(mode || process.env[`${vitePrefix}MODE`] || "production", config.root ?? userProjectRoot, vitePrefix)
60
- : cleanupInitialUserConfigEnv;
61
- const cleanupUserConfig = resolveConfigDefine(config);
62
- // Combine cleanup functions
63
- cleanupEnv = () => {
64
- cleanupUserConfig();
65
- cleanupUserConfigEnv();
66
- };
67
- },
68
- closeBundle() {
69
- // Clean up environment variables when the bundle is closed
70
- cleanupEnv?.();
71
- },
72
- configureServer(server) {
73
- let envPrefix = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
74
- let publicOrigin = process.env[`${envPrefix}PUBLIC_ORIGIN`] ?? "";
75
- let desiredPort = server.config.server.port;
76
- let shouldUpdatePublicOrigin = false;
77
- if (publicOrigin && publicOrigin.includes(`:${desiredPort}`)) {
78
- shouldUpdatePublicOrigin = true;
79
- }
80
- // Listen for when the server actually starts
81
- if (shouldUpdatePublicOrigin) {
82
- server.httpServer?.once("listening", () => {
83
- const address = server.httpServer?.address();
84
- if (address && typeof address !== "string") {
85
- const port = address.port;
86
- if (port !== desiredPort) {
87
- let envPrefix = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
88
- const newOrigin = publicOrigin.replace(`:${desiredPort}`, `:${port}`);
89
- process.env[`${envPrefix}PUBLIC_ORIGIN`] = newOrigin;
90
- console.warn("PUBLIC_ORIGIN did not match the port: " + port);
91
- }
92
- }
93
- });
94
- }
6
+ import { resolveEnv, resolveConfigDefine } from '../config/resolveEnv.js';
7
+ import { DEFAULT_CONFIG } from '../config/defaults.js';
8
+ import { userProjectRoot } from '../root.js';
9
+ import { getNodeEnv } from '../getNodeEnv.js';
10
+
11
+ const createConfigEnv = () => {
12
+ const argv = process.argv;
13
+ let command = "serve";
14
+ if (argv.includes("build")) {
15
+ command = "build";
16
+ } else if (argv.includes("dev") || argv.includes("serve") || argv.includes("preview")) {
17
+ command = "serve";
18
+ }
19
+ let mode = getNodeEnv();
20
+ const modeIndex = argv.findIndex((arg) => arg === "--mode" || arg === "-m");
21
+ if (modeIndex !== -1 && argv[modeIndex + 1]) {
22
+ mode = argv[modeIndex + 1];
23
+ }
24
+ const isSsrBuild = argv.includes("--ssr");
25
+ return {
26
+ command,
27
+ mode,
28
+ isSsrBuild
29
+ };
30
+ };
31
+ function getArgValue(argName) {
32
+ const equalsArg = process.argv.find((arg) => arg.startsWith(`--${argName}=`));
33
+ if (equalsArg) {
34
+ return equalsArg.substring(`--${argName}=`.length);
35
+ }
36
+ const argIndex = process.argv.findIndex((arg) => arg === `--${argName}`);
37
+ if (argIndex !== -1 && argIndex + 1 < process.argv.length) {
38
+ const value = process.argv[argIndex + 1];
39
+ if (value && !value.startsWith("--")) {
40
+ return value;
41
+ }
42
+ }
43
+ return void 0;
44
+ }
45
+ const isBuild = process.argv.includes("build");
46
+ const isPreview = process.argv.includes("preview");
47
+ const detectedMode = getArgValue("mode");
48
+ const cleanupInitialUserConfigEnv = resolveEnv(
49
+ detectedMode || process.env["NODE_ENV"] || (isBuild || isPreview ? "production" : "development"),
50
+ userProjectRoot,
51
+ DEFAULT_CONFIG.ENV_PREFIX
52
+ );
53
+ function envPlugin() {
54
+ let cleanupEnv;
55
+ let vitePrefix = DEFAULT_CONFIG.ENV_PREFIX;
56
+ return {
57
+ name: "vite-plugin-react-server:env",
58
+ enforce: "pre",
59
+ config(config, { mode }) {
60
+ if (config.envPrefix) {
61
+ if (typeof config.envPrefix === "string") {
62
+ vitePrefix = config.envPrefix;
63
+ } else if (Array.isArray(config.envPrefix)) {
64
+ vitePrefix = config.envPrefix[0];
95
65
  }
96
- };
66
+ }
67
+ const invalidEnv = mode !== void 0 && mode !== process.env[`${vitePrefix}MODE`] || config.root !== void 0 && config.root !== userProjectRoot;
68
+ if (invalidEnv) {
69
+ cleanupInitialUserConfigEnv();
70
+ }
71
+ const cleanupUserConfigEnv = invalidEnv ? resolveEnv(
72
+ mode || process.env[`${vitePrefix}MODE`] || "production",
73
+ config.root ?? userProjectRoot,
74
+ vitePrefix
75
+ ) : cleanupInitialUserConfigEnv;
76
+ const cleanupUserConfig = resolveConfigDefine(config);
77
+ cleanupEnv = () => {
78
+ cleanupUserConfig();
79
+ cleanupUserConfigEnv();
80
+ };
81
+ },
82
+ closeBundle() {
83
+ cleanupEnv?.();
84
+ },
85
+ configureServer(server) {
86
+ const envPrefix = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
87
+ const publicOrigin = process.env[`${envPrefix}PUBLIC_ORIGIN`] ?? "";
88
+ const desiredPort = server.config.server.port;
89
+ let shouldUpdatePublicOrigin = false;
90
+ if (publicOrigin && publicOrigin.includes(`:${desiredPort}`)) {
91
+ shouldUpdatePublicOrigin = true;
92
+ }
93
+ if (shouldUpdatePublicOrigin) {
94
+ server.httpServer?.once("listening", () => {
95
+ const address = server.httpServer?.address();
96
+ if (address && typeof address !== "string") {
97
+ const port = address.port;
98
+ if (port !== desiredPort) {
99
+ const envPrefix2 = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
100
+ const newOrigin = publicOrigin.replace(
101
+ `:${desiredPort}`,
102
+ `:${port}`
103
+ );
104
+ process.env[`${envPrefix2}PUBLIC_ORIGIN`] = newOrigin;
105
+ console.warn("PUBLIC_ORIGIN did not match the port: " + port);
106
+ }
107
+ }
108
+ });
109
+ }
110
+ }
111
+ };
97
112
  }
113
+
114
+ export { createConfigEnv, envPlugin };
115
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vZW52L3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgeyByZXNvbHZlQ29uZmlnRGVmaW5lLCByZXNvbHZlRW52IH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlRW52LmpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0NPTkZJRyB9IGZyb20gXCIuLi9jb25maWcvZGVmYXVsdHMuanNcIjtcbmltcG9ydCB7IHVzZXJQcm9qZWN0Um9vdCB9IGZyb20gXCIuLi9yb290LmpzXCI7XG5pbXBvcnQgeyBnZXROb2RlRW52IH0gZnJvbSBcIi4uL2dldE5vZGVFbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52IH0gZnJvbSBcInZpdGVcIjtcblxuLyoqXG4gKiBSZWNvbnN0cnVjdCBDb25maWdFbnYgZnJvbSBwcm9jZXNzLmFyZ3YgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICogVGhpcyBhbGxvd3MgdXMgdG8gZGV0ZXJtaW5lIHRoZSBjb25maWcgZW52aXJvbm1lbnQgYmVmb3JlIHRoZSBjb25maWcgaG9vayBydW5zXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDb25maWdFbnYgPSAoKTogQ29uZmlnRW52ID0+IHtcbiAgY29uc3QgYXJndiA9IHByb2Nlc3MuYXJndjtcbiAgXG4gIC8vIERldGVjdCBjb21tYW5kIGZyb20gYXJndlxuICBsZXQgY29tbWFuZDogJ2J1aWxkJyB8ICdzZXJ2ZScgPSAnc2VydmUnO1xuICBpZiAoYXJndi5pbmNsdWRlcygnYnVpbGQnKSkge1xuICAgIGNvbW1hbmQgPSAnYnVpbGQnO1xuICB9IGVsc2UgaWYgKGFyZ3YuaW5jbHVkZXMoJ2RldicpIHx8IGFyZ3YuaW5jbHVkZXMoJ3NlcnZlJykgfHwgYXJndi5pbmNsdWRlcygncHJldmlldycpKSB7XG4gICAgY29tbWFuZCA9ICdzZXJ2ZSc7XG4gIH1cbiAgXG4gIC8vIERldGVjdCBtb2RlIGZyb20gYXJndiBvciBlbnZpcm9ubWVudFxuICBsZXQgbW9kZTogc3RyaW5nID0gZ2V0Tm9kZUVudigpO1xuICBjb25zdCBtb2RlSW5kZXggPSBhcmd2LmZpbmRJbmRleChhcmcgPT4gYXJnID09PSAnLS1tb2RlJyB8fCBhcmcgPT09ICctbScpO1xuICBpZiAobW9kZUluZGV4ICE9PSAtMSAmJiBhcmd2W21vZGVJbmRleCArIDFdKSB7XG4gICAgbW9kZSA9IGFyZ3ZbbW9kZUluZGV4ICsgMV07XG4gIH1cbiAgXG4gIC8vIERldGVjdCBTU1IgYnVpbGRcbiAgY29uc3QgaXNTc3JCdWlsZCA9IGFyZ3YuaW5jbHVkZXMoJy0tc3NyJyk7XG4gIFxuICByZXR1cm4ge1xuICAgIGNvbW1hbmQsXG4gICAgbW9kZSxcbiAgICBpc1NzckJ1aWxkXG4gIH07XG59O1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBwYXJzZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGluIGJvdGggZm9ybWF0czpcbiAqIC0tYXJnIHZhbHVlIChzcGFjZS1zZXBhcmF0ZWQpIGFuZCAtLWFyZz12YWx1ZSAoZXF1YWxzLXNlcGFyYXRlZClcbiAqIEhhbmRsZXMgYW55IElGUyBjaGFyYWN0ZXJzIGFuZCBlZGdlIGNhc2VzXG4gKi9cbmZ1bmN0aW9uIGdldEFyZ1ZhbHVlKGFyZ05hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIENoZWNrIGZvciAtLWFyZz12YWx1ZSBmb3JtYXQgZmlyc3QgKGhhbmRsZXMgYW55IGNoYXJhY3RlciBhZnRlciA9KVxuICBjb25zdCBlcXVhbHNBcmcgPSBwcm9jZXNzLmFyZ3YuZmluZCgoYXJnKSA9PiBhcmcuc3RhcnRzV2l0aChgLS0ke2FyZ05hbWV9PWApKTtcbiAgaWYgKGVxdWFsc0FyZykge1xuICAgIHJldHVybiBlcXVhbHNBcmcuc3Vic3RyaW5nKGAtLSR7YXJnTmFtZX09YC5sZW5ndGgpO1xuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgLS1hcmcgdmFsdWUgZm9ybWF0IChoYW5kbGVzIGFueSBJRlMgY2hhcmFjdGVycylcbiAgY29uc3QgYXJnSW5kZXggPSBwcm9jZXNzLmFyZ3YuZmluZEluZGV4KChhcmcpID0+IGFyZyA9PT0gYC0tJHthcmdOYW1lfWApO1xuICBpZiAoYXJnSW5kZXggIT09IC0xICYmIGFyZ0luZGV4ICsgMSA8IHByb2Nlc3MuYXJndi5sZW5ndGgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuYXJndlthcmdJbmRleCArIDFdO1xuICAgIC8vIE9ubHkgcmV0dXJuIGlmIHRoZSBuZXh0IGFyZ3VtZW50IGRvZXNuJ3Qgc3RhcnQgd2l0aCAtLSAoaXNuJ3QgYW5vdGhlciBmbGFnKVxuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5jb25zdCBpc0J1aWxkID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiYnVpbGRcIik7XG5jb25zdCBpc1ByZXZpZXcgPSBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoXCJwcmV2aWV3XCIpO1xuXG5cbi8vIFNldCB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSAuZW52IGZpbGVzIGFzIGVhcmx5IGFzIHBvc3NpYmxlXG4vLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBlbnYgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgZXZlbiBpbiB0aGUgY29uZmlnIGZpbGUsXG4vLyBhbmQgeW91IGNhbiB1c2UgcHJvY2Vzcy5lbnYgdG8gY29uZmlndXJlIHRoZSBwbHVnaW4uXG5cbi8vIERldGVjdCBtb2RlIGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuY29uc3QgZGV0ZWN0ZWRNb2RlID0gZ2V0QXJnVmFsdWUoXCJtb2RlXCIpO1xuXG5jb25zdCBjbGVhbnVwSW5pdGlhbFVzZXJDb25maWdFbnYgPSByZXNvbHZlRW52KFxuICBkZXRlY3RlZE1vZGUgfHwgcHJvY2Vzcy5lbnZbXCJOT0RFX0VOVlwiXSB8fCAoaXNCdWlsZCB8fCBpc1ByZXZpZXcgPyBcInByb2R1Y3Rpb25cIiA6IFwiZGV2ZWxvcG1lbnRcIiksXG4gIHVzZXJQcm9qZWN0Um9vdCxcbiAgREVGQVVMVF9DT05GSUcuRU5WX1BSRUZJWFxuKTtcblxuLyoqXG4gKiBUaGlzIHBsdWdpbiBjYW4gYmUgdXNlZCB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50IGRlZmluZWQgaW4gdGhlIGVudiBmaWxlXG4gKiBhbmQgdGhlIGBkZWZpbmVgIGNsYXVzZSBpbiB0aGUgdml0ZSBjb25maWcgdG8gYmUgZGlyZWN0bHkgYXNzaWduZWQgdG8gdGhlIHByb2Nlc3MuZW52LFxuICogbWFraW5nIGl0IGF2YWlsYWJsZSBpbiB3b3JrZXJzLCBzZXJ2ZXIgY29tcG9uZW50cyBhbmQgcGx1Z2luIGhvb2tzIGxpa2UgY29uZmlnLCBjb25maWd1cmVTZXJ2ZXIsIGV0Yy5cbiAqXG4gKiBZb3UgY2FuIGFsc28gc2V0IHRoZXNlIHZhcmlhYmxlIGluIHRoZSBwYWNrYWdlLmpzb24gc2NyaXB0IGxpa2UgYFZJVEVfUFVCTElDX09SSUdJTj1odHRwczovL2V4YW1wbGUuY29tIG5wbSBydW4gYnVpbGRgXG4gKiBUaGUgZGVmYXVsdCBvbmVzIGxpa2UgYFZJVEVfREVWYCBldGMsIGFyZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWVzIGlmIG5vdCBkZWZpbmVkIGluIHRoZSBlbnYgZmlsZSBvciB0aGUgYGRlZmluZWAgY2xhdXNlLlxuICpcbiAqIElmIHRoZXkgZG8gZW5kIHVwIGluIHRoZSBidWlsZCwgdGhlIGRlZmluZSBjbGF1c2UgcmVwbGFjZXMgcHJvY2Vzcy5lbnYuVklURV9CQVNFX1VSTCBldGMsIHNhbWUgbGlrZSBpdFxuICogcmVwbGFjZXMgYGltcG9ydC5tZXRhLmVudi5CQVNFX1VSTGAuXG4gKlxuICogV2hpbGUgdXNpbmcgbm9kZS5wcm9jZXNzLmVudiBpcyBkYW5nZXJvdXMgYXMgaXQgbWF5IGV4cG9zZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiB0byB0aGUgY2xpZW50LCB0aGUgZGVmaW5lIGNsYXVzZVxuICogcmVwbGFjZXMgdGhlbSBpbiB0aGUgYnVpbGQgc28gaXQncyBzYWZlIGFzIGxvbmcgYXMgeW91IHN0aWNrIHRvIHNpbXBsZSBzdHVmZiBsaWtlIGNvbnN0IGJhc2VVcmwgPSBwcm9jZXNzLmVudi5WSVRFX0JBU0VfVVJMXG4gKiB3b3VsZCBiZSB0aGUgc2FtZSBhcyB3cml0aW5nIGNvbnN0IGJhc2VVcmwgPSBpbXBvcnQubWV0YS5lbnYuQkFTRV9VUkwuIEJ1dCB0aGlzIHBsdWdpbiBkb2Vzbid0IGVuYWJsZSB0aGF0IGZlYXR1cmUgbm9yIGRvZXNcbiAqIGl0IHJldHVybiBhbnkgY29uZmlnLCBpdCBqdXN0IHNldHMgdGhlIHByb2Nlc3MuZW52IHZhcmlhYmxlcyBhdCBhIGVhcmx5IG1vbWVtdCBhbmQgZGVsZXRlcyB0aGVtIGFmdGVyIHRoZSBidWlsZCB1bmxlc3MgdGhleSB3ZXJlXG4gKiBhbHJlYWR5IHNldCBpbiB0aGUgZW52aXJvbm1lbnQuXG4gKiBcbiAqIFRoaXMgcGx1Z2luIHdpbGwgbm90IG92ZXJyaWRlIHByb2Nlc3MuZW52IHZhcmlhYmxlIHRoYXQgd2VyZSBwcmV2aW91c2x5IHNldCwgYW5kIHdpbGwgcmVtb3ZlIGFueSB2YWx1ZXMgdGhhdCBpdCBkaWQgc2V0IGFmdGVyIHRoZSBidW5kbGUgY2xvc2VzLlxuICogYGBgZXhhbXBsZVxuICogY29uc3QgY29uZmlnID0ge1xuICogICAgbW9kdWxlQmFzZTogJ3NyYycsXG4gKiAgICAvLyBsb2FkZWQgZnJvbSBlaXRoZXIgLmVudiBmaWxlIG9yIGV4aXN0aW5nIHByb2Nlc3MuZW52LCBiYXNlZCBvbiB0aGUgTk9ERV9FTlZcbiAqICAgIHB1YmxpY09yaWdpbjogcHJvY2Vzcy5lbnYuVklURV9QVUJMSUNfT1JJR0lOLFxuICogfVxuICogYGBgXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZW52UGx1Z2luKCk6IFBsdWdpbiB7XG4gIGxldCBjbGVhbnVwRW52OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIGxldCB2aXRlUHJlZml4ID0gREVGQVVMVF9DT05GSUcuRU5WX1BSRUZJWCBhcyBzdHJpbmc7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ2aXRlLXBsdWdpbi1yZWFjdC1zZXJ2ZXI6ZW52XCIsXG4gICAgZW5mb3JjZTogXCJwcmVcIixcbiAgICBjb25maWcoY29uZmlnLCB7IG1vZGUgfSkge1xuICAgICAgaWYoY29uZmlnLmVudlByZWZpeCkge1xuICAgICAgICBpZih0eXBlb2YgY29uZmlnLmVudlByZWZpeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHZpdGVQcmVmaXggPSBjb25maWcuZW52UHJlZml4O1xuICAgICAgICB9IGVsc2UgaWYoQXJyYXkuaXNBcnJheShjb25maWcuZW52UHJlZml4KSkge1xuICAgICAgICAgIHZpdGVQcmVmaXggPSBjb25maWcuZW52UHJlZml4WzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBpbnZhbGlkRW52ID1cbiAgICAgICAgKG1vZGUgIT09IHVuZGVmaW5lZCAmJiBtb2RlICE9PSBwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fU1PREVgXSkgfHxcbiAgICAgICAgKGNvbmZpZy5yb290ICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLnJvb3QgIT09IHVzZXJQcm9qZWN0Um9vdCk7XG4gICAgICBpZiAoaW52YWxpZEVudikge1xuICAgICAgICBjbGVhbnVwSW5pdGlhbFVzZXJDb25maWdFbnYoKTtcbiAgICAgIH1cbiAgICAgIC8vIENsZWFuIHVwIGFueSBwcmV2aW91cyBlbnYgc2V0dXBcbiAgICAgIGNvbnN0IGNsZWFudXBVc2VyQ29uZmlnRW52ID0gaW52YWxpZEVudlxuICAgICAgICA/IHJlc29sdmVFbnYoXG4gICAgICAgICAgICBtb2RlIHx8IHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9TU9ERWBdIHx8IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgICAgY29uZmlnLnJvb3QgPz8gdXNlclByb2plY3RSb290LFxuICAgICAgICAgICAgdml0ZVByZWZpeFxuICAgICAgICAgIClcbiAgICAgICAgOiBjbGVhbnVwSW5pdGlhbFVzZXJDb25maWdFbnY7XG4gICAgICBjb25zdCBjbGVhbnVwVXNlckNvbmZpZyA9IHJlc29sdmVDb25maWdEZWZpbmUoY29uZmlnKTtcblxuICAgICAgLy8gQ29tYmluZSBjbGVhbnVwIGZ1bmN0aW9uc1xuICAgICAgY2xlYW51cEVudiA9ICgpID0+IHtcbiAgICAgICAgY2xlYW51cFVzZXJDb25maWcoKTtcbiAgICAgICAgY2xlYW51cFVzZXJDb25maWdFbnYoKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBjbG9zZUJ1bmRsZSgpIHtcbiAgICAgIC8vIENsZWFuIHVwIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGVuIHRoZSBidW5kbGUgaXMgY2xvc2VkXG4gICAgICBjbGVhbnVwRW52Py4oKTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXIpIHtcbiAgICAgIGNvbnN0IGVudlByZWZpeCA9IEFycmF5LmlzQXJyYXkoc2VydmVyLmNvbmZpZy5lbnZQcmVmaXgpID8gc2VydmVyLmNvbmZpZy5lbnZQcmVmaXhbMF0gOiBzZXJ2ZXIuY29uZmlnLmVudlByZWZpeCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYO1xuICAgICAgY29uc3QgcHVibGljT3JpZ2luID0gcHJvY2Vzcy5lbnZbYCR7ZW52UHJlZml4fVBVQkxJQ19PUklHSU5gXSA/PyBcIlwiXG5cbiAgICAgIGNvbnN0IGRlc2lyZWRQb3J0ID0gc2VydmVyLmNvbmZpZy5zZXJ2ZXIucG9ydDtcbiAgICAgIGxldCBzaG91bGRVcGRhdGVQdWJsaWNPcmlnaW4gPSBmYWxzZTtcbiAgICAgIGlmIChwdWJsaWNPcmlnaW4gJiYgcHVibGljT3JpZ2luLmluY2x1ZGVzKGA6JHtkZXNpcmVkUG9ydH1gKSkge1xuICAgICAgICBzaG91bGRVcGRhdGVQdWJsaWNPcmlnaW4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuIGZvciB3aGVuIHRoZSBzZXJ2ZXIgYWN0dWFsbHkgc3RhcnRzXG4gICAgICBpZiAoc2hvdWxkVXBkYXRlUHVibGljT3JpZ2luKSB7XG4gICAgICAgIHNlcnZlci5odHRwU2VydmVyPy5vbmNlKFwibGlzdGVuaW5nXCIsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzID0gc2VydmVyLmh0dHBTZXJ2ZXI/LmFkZHJlc3MoKTtcbiAgICAgICAgICBpZiAoYWRkcmVzcyAmJiB0eXBlb2YgYWRkcmVzcyAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgcG9ydCA9IGFkZHJlc3MucG9ydDtcbiAgICAgICAgICAgIGlmIChwb3J0ICE9PSBkZXNpcmVkUG9ydCkge1xuICAgICAgICAgICAgICBjb25zdCBlbnZQcmVmaXggPSBBcnJheS5pc0FycmF5KHNlcnZlci5jb25maWcuZW52UHJlZml4KSA/IHNlcnZlci5jb25maWcuZW52UHJlZml4WzBdIDogc2VydmVyLmNvbmZpZy5lbnZQcmVmaXggPz8gREVGQVVMVF9DT05GSUcuRU5WX1BSRUZJWDtcbiAgICAgICAgICAgICAgY29uc3QgbmV3T3JpZ2luID0gcHVibGljT3JpZ2luLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYDoke2Rlc2lyZWRQb3J0fWAsXG4gICAgICAgICAgICAgICAgYDoke3BvcnR9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBwcm9jZXNzLmVudltgJHtlbnZQcmVmaXh9UFVCTElDX09SSUdJTmBdID0gbmV3T3JpZ2luXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlBVQkxJQ19PUklHSU4gZGlkIG5vdCBtYXRjaCB0aGUgcG9ydDogXCIgKyBwb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1c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
@@ -0,0 +1,13 @@
1
+ import type { DirectiveMatch } from "../loader/directives/types.js";
2
+ export declare const DIRECTIVE_ERRORS: {
3
+ readonly FILE_LEVEL: {
4
+ readonly NOT_AT_TOP: "'use {directive}' directive must be at the top of the file, before any other statements.";
5
+ readonly MIXED_DIRECTIVES: "Cannot use both 'use client' and 'use server' directives in the same file";
6
+ };
7
+ readonly FUNCTION_LEVEL: {
8
+ readonly CLIENT_NOT_ALLOWED: "Directive 'use client' is not allowed at function level. Only 'use server' is allowed at the start of async functions.";
9
+ readonly SERVER_NOT_ASYNC: "'use server' directive is only allowed at the start of async functions";
10
+ };
11
+ };
12
+ export declare function isFileLevelWarning(warning: DirectiveMatch): boolean;
13
+ //# sourceMappingURL=directiveError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directiveError.d.ts","sourceRoot":"","sources":["../../../plugin/error/directiveError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpE,eAAO,MAAM,gBAAgB;;;;;;;;;CAanB,CAAC;AAGX,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CASnE"}
@@ -0,0 +1,21 @@
1
+ // Error types for better maintainability
2
+ export const DIRECTIVE_ERRORS = {
3
+ FILE_LEVEL: {
4
+ NOT_AT_TOP: "'use {directive}' directive must be at the top of the file, before any other statements.",
5
+ MIXED_DIRECTIVES: "Cannot use both 'use client' and 'use server' directives in the same file",
6
+ },
7
+ FUNCTION_LEVEL: {
8
+ CLIENT_NOT_ALLOWED: "Directive 'use client' is not allowed at function level. Only 'use server' is allowed at the start of async functions.",
9
+ SERVER_NOT_ASYNC: "'use server' directive is only allowed at the start of async functions",
10
+ },
11
+ };
12
+ // Helper to check if a warning is about file-level issues
13
+ export function isFileLevelWarning(warning) {
14
+ if (!warning.message)
15
+ return false;
16
+ return (warning.message ===
17
+ DIRECTIVE_ERRORS.FILE_LEVEL.NOT_AT_TOP.replace("{directive}", "client") ||
18
+ warning.message ===
19
+ DIRECTIVE_ERRORS.FILE_LEVEL.NOT_AT_TOP.replace("{directive}", "server") ||
20
+ warning.message === DIRECTIVE_ERRORS.FILE_LEVEL.MIXED_DIRECTIVES);
21
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Creates a new error with context from any input.
3
+ * Always creates a fresh stack trace and sets the original as the cause.
4
+ * This is the preferred way to wrap errors with context.
5
+ */
6
+ export declare function enhanceError(originalError: Error | string | {
7
+ message: string;
8
+ }, captureStackTraceFunction: Function, context?: string): Error;
9
+ /**
10
+ * Creates a new error with context and captured stack trace
11
+ * Useful for creating contextual errors at specific points in the code
12
+ */
13
+ export declare function createContextualError(message: string, context?: string, captureStackTraceFunction?: Function): Error;
14
+ //# sourceMappingURL=enhanceError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanceError.d.ts","sourceRoot":"","sources":["../../../plugin/error/enhanceError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,EACjD,yBAAyB,EAAE,QAAQ,EACnC,OAAO,GAAE,MAAuC,GAC/C,KAAK,CASP;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAW,EACpB,yBAAyB,CAAC,EAAE,QAAQ,GACnC,KAAK,CAYP"}