vite-plugin-react-server 1.2.0-alpha.0 → 1.2.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 (1165) hide show
  1. package/README.md +211 -59
  2. package/dist/client.d.ts +4 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +4 -4
  5. package/dist/index.d.ts +3 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -10
  8. package/dist/package.json +102 -27
  9. package/dist/plugin/bundle/bundles.d.ts +11 -0
  10. package/dist/plugin/bundle/bundles.d.ts.map +1 -0
  11. package/dist/plugin/bundle/bundles.js +11 -0
  12. package/dist/plugin/bundle/deferredStaticGeneration.d.ts +31 -0
  13. package/dist/plugin/bundle/deferredStaticGeneration.d.ts.map +1 -0
  14. package/dist/plugin/bundle/deferredStaticGeneration.js +44 -0
  15. package/dist/plugin/bundle/manifests.d.ts +20 -0
  16. package/dist/plugin/bundle/manifests.d.ts.map +1 -0
  17. package/dist/plugin/bundle/manifests.js +54 -0
  18. package/dist/plugin/components/css.d.ts +2 -5
  19. package/dist/plugin/components/css.d.ts.map +1 -1
  20. package/dist/plugin/components/css.js +7 -9
  21. package/dist/plugin/components/html.d.ts +2 -3
  22. package/dist/plugin/components/html.d.ts.map +1 -1
  23. package/dist/plugin/components/html.js +3 -3
  24. package/dist/plugin/components/index.d.ts +1 -1
  25. package/dist/plugin/components/index.d.ts.map +1 -1
  26. package/dist/plugin/components/root.d.ts.map +1 -1
  27. package/dist/plugin/components/root.js +4 -4
  28. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.d.ts.map +1 -1
  29. package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js +6 -6
  30. package/dist/plugin/config/autoDiscover/pageAndPropFiles.d.ts.map +1 -1
  31. package/dist/plugin/config/autoDiscover/pageAndPropFiles.js +1 -1
  32. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts +6 -5
  33. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
  34. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +34 -51
  35. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts +5 -1
  36. package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -1
  37. package/dist/plugin/config/autoDiscover/resolveBuildPages.js +124 -52
  38. package/dist/plugin/config/createHandlerOptions.client.d.ts +4 -0
  39. package/dist/plugin/config/createHandlerOptions.client.d.ts.map +1 -0
  40. package/dist/plugin/config/createHandlerOptions.client.js +293 -0
  41. package/dist/plugin/config/createHandlerOptions.d.ts +4 -0
  42. package/dist/plugin/config/createHandlerOptions.d.ts.map +1 -0
  43. package/dist/plugin/config/createHandlerOptions.js +13 -0
  44. package/dist/plugin/config/createHandlerOptions.server.d.ts +4 -0
  45. package/dist/plugin/config/createHandlerOptions.server.d.ts.map +1 -0
  46. package/dist/plugin/config/createHandlerOptions.server.js +344 -0
  47. package/dist/plugin/config/createHandlerOptions.types.d.ts +114 -0
  48. package/dist/plugin/config/createHandlerOptions.types.d.ts.map +1 -0
  49. package/dist/plugin/config/createModuleID.d.ts +1 -1
  50. package/dist/plugin/config/createModuleID.d.ts.map +1 -1
  51. package/dist/plugin/config/createModuleID.js +121 -8
  52. package/dist/plugin/config/defaults.d.ts +152 -17
  53. package/dist/plugin/config/defaults.d.ts.map +1 -1
  54. package/dist/plugin/config/defaults.js +69 -25
  55. package/dist/plugin/config/envPrefixFromConfig.d.ts +3 -0
  56. package/dist/plugin/config/envPrefixFromConfig.d.ts.map +1 -0
  57. package/dist/plugin/config/envPrefixFromConfig.js +8 -0
  58. package/dist/plugin/config/getCondition.d.ts +54 -3
  59. package/dist/plugin/config/getCondition.d.ts.map +1 -1
  60. package/dist/plugin/config/getCondition.js +158 -6
  61. package/dist/plugin/{getNodeEnv.d.ts → config/getNodeEnv.d.ts} +1 -1
  62. package/dist/plugin/config/getNodeEnv.d.ts.map +1 -0
  63. package/dist/plugin/config/getNodeEnv.js +17 -0
  64. package/dist/plugin/config/index.d.ts +43 -1
  65. package/dist/plugin/config/index.d.ts.map +1 -1
  66. package/dist/plugin/config/index.js +9 -4
  67. package/dist/plugin/config/resolveDirectiveMatcher.d.ts +6 -6
  68. package/dist/plugin/config/resolveDirectiveMatcher.d.ts.map +1 -1
  69. package/dist/plugin/config/resolveDirectiveMatcher.js +7 -23
  70. package/dist/plugin/config/resolveEnv.d.ts +1 -1
  71. package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
  72. package/dist/plugin/config/resolveEnv.js +32 -28
  73. package/dist/plugin/config/resolveOptions.d.ts +3 -2
  74. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  75. package/dist/plugin/config/resolveOptions.js +195 -61
  76. package/dist/plugin/config/resolvePages.d.ts +1 -1
  77. package/dist/plugin/config/resolvePages.d.ts.map +1 -1
  78. package/dist/plugin/config/resolvePages.js +1 -1
  79. package/dist/plugin/config/resolvePatternWithValues.d.ts.map +1 -1
  80. package/dist/plugin/config/resolvePatternWithValues.js +7 -26
  81. package/dist/plugin/config/resolveUrlOption.d.ts +1 -1
  82. package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -1
  83. package/dist/plugin/config/resolveUrlOption.js +2 -2
  84. package/dist/plugin/config/resolveUserConfig.d.ts +5 -3
  85. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  86. package/dist/plugin/config/resolveUserConfig.js +221 -70
  87. package/dist/plugin/config/stashedOptionsState.d.ts +66 -0
  88. package/dist/plugin/config/stashedOptionsState.d.ts.map +1 -0
  89. package/dist/plugin/config/stashedOptionsState.js +25 -0
  90. package/dist/plugin/dev-server/cleanupServerAction.client.d.ts +6 -0
  91. package/dist/plugin/dev-server/cleanupServerAction.client.d.ts.map +1 -0
  92. package/dist/plugin/dev-server/cleanupServerAction.client.js +28 -0
  93. package/dist/plugin/dev-server/cleanupServerAction.d.ts +2 -0
  94. package/dist/plugin/dev-server/cleanupServerAction.d.ts.map +1 -0
  95. package/dist/plugin/dev-server/cleanupServerAction.js +4 -0
  96. package/dist/plugin/dev-server/cleanupServerAction.server.d.ts +8 -0
  97. package/dist/plugin/dev-server/cleanupServerAction.server.d.ts.map +1 -0
  98. package/dist/plugin/dev-server/cleanupServerAction.server.js +15 -0
  99. package/dist/plugin/dev-server/configureReactServer.client.d.ts +7 -0
  100. package/dist/plugin/dev-server/configureReactServer.client.d.ts.map +1 -0
  101. package/dist/plugin/dev-server/configureReactServer.client.js +85 -0
  102. package/dist/plugin/dev-server/configureReactServer.d.ts +2 -0
  103. package/dist/plugin/dev-server/configureReactServer.d.ts.map +1 -0
  104. package/dist/plugin/dev-server/configureReactServer.js +13 -0
  105. package/dist/plugin/dev-server/configureReactServer.server.d.ts +3 -0
  106. package/dist/plugin/dev-server/configureReactServer.server.d.ts.map +1 -0
  107. package/dist/plugin/dev-server/configureReactServer.server.js +444 -0
  108. package/dist/plugin/dev-server/configureRequestHandler.client.d.ts +13 -0
  109. package/dist/plugin/dev-server/configureRequestHandler.client.d.ts.map +1 -0
  110. package/dist/plugin/dev-server/configureRequestHandler.client.js +307 -0
  111. package/dist/plugin/dev-server/configureRequestHandler.d.ts +2 -0
  112. package/dist/plugin/dev-server/configureRequestHandler.d.ts.map +1 -0
  113. package/dist/plugin/dev-server/configureRequestHandler.js +4 -0
  114. package/dist/plugin/dev-server/configureRequestHandler.server.d.ts +6 -0
  115. package/dist/plugin/dev-server/configureRequestHandler.server.d.ts.map +1 -0
  116. package/dist/plugin/dev-server/configureRequestHandler.server.js +44 -0
  117. package/dist/plugin/dev-server/handleServerAction.client.d.ts +11 -0
  118. package/dist/plugin/dev-server/handleServerAction.client.d.ts.map +1 -0
  119. package/dist/plugin/dev-server/handleServerAction.client.js +97 -0
  120. package/dist/plugin/dev-server/handleServerAction.d.ts +2 -0
  121. package/dist/plugin/dev-server/handleServerAction.d.ts.map +1 -0
  122. package/dist/plugin/dev-server/handleServerAction.js +13 -0
  123. package/dist/plugin/dev-server/handleServerAction.server.d.ts +3 -0
  124. package/dist/plugin/dev-server/handleServerAction.server.d.ts.map +1 -0
  125. package/dist/plugin/dev-server/handleServerAction.server.js +15 -0
  126. package/dist/plugin/dev-server/index.client.d.ts +7 -0
  127. package/dist/plugin/dev-server/index.client.d.ts.map +1 -0
  128. package/dist/plugin/dev-server/index.client.js +11 -0
  129. package/dist/plugin/dev-server/index.d.ts +4 -0
  130. package/dist/plugin/dev-server/index.d.ts.map +1 -0
  131. package/dist/plugin/dev-server/index.js +19 -0
  132. package/dist/plugin/dev-server/index.server.d.ts +7 -0
  133. package/dist/plugin/dev-server/index.server.d.ts.map +1 -0
  134. package/dist/plugin/dev-server/index.server.js +11 -0
  135. package/dist/plugin/dev-server/plugin.client.d.ts +7 -0
  136. package/dist/plugin/dev-server/plugin.client.d.ts.map +1 -0
  137. package/dist/plugin/dev-server/plugin.client.js +122 -0
  138. package/dist/plugin/dev-server/plugin.server.d.ts +8 -0
  139. package/dist/plugin/dev-server/plugin.server.d.ts.map +1 -0
  140. package/dist/plugin/dev-server/plugin.server.js +108 -0
  141. package/dist/plugin/dev-server/restartWorker.client.d.ts +3 -0
  142. package/dist/plugin/dev-server/restartWorker.client.d.ts.map +1 -0
  143. package/dist/plugin/dev-server/restartWorker.client.js +131 -0
  144. package/dist/plugin/dev-server/restartWorker.d.ts +2 -0
  145. package/dist/plugin/dev-server/restartWorker.d.ts.map +1 -0
  146. package/dist/plugin/dev-server/restartWorker.js +4 -0
  147. package/dist/plugin/dev-server/restartWorker.server.d.ts +3 -0
  148. package/dist/plugin/dev-server/restartWorker.server.d.ts.map +1 -0
  149. package/dist/plugin/dev-server/restartWorker.server.js +88 -0
  150. package/dist/plugin/dev-server/types.d.ts +38 -0
  151. package/dist/plugin/dev-server/types.d.ts.map +1 -0
  152. package/dist/plugin/dev-server/virtualRscHmrPlugin.d.ts +7 -0
  153. package/dist/plugin/dev-server/virtualRscHmrPlugin.d.ts.map +1 -0
  154. package/dist/plugin/dev-server/virtualRscHmrPlugin.js +80 -0
  155. package/dist/plugin/env/createConfigEnv.d.ts +13 -0
  156. package/dist/plugin/env/createConfigEnv.d.ts.map +1 -0
  157. package/dist/plugin/env/createConfigEnv.js +43 -0
  158. package/dist/plugin/env/createEnvPlugin.d.ts +3 -0
  159. package/dist/plugin/env/createEnvPlugin.d.ts.map +1 -0
  160. package/dist/plugin/env/createEnvPlugin.js +59 -0
  161. package/dist/plugin/env/getArgValue.d.ts +8 -0
  162. package/dist/plugin/env/getArgValue.d.ts.map +1 -0
  163. package/dist/plugin/env/getArgValue.js +52 -0
  164. package/dist/plugin/env/getEnvKey.d.ts +46 -0
  165. package/dist/plugin/env/getEnvKey.d.ts.map +1 -0
  166. package/dist/plugin/env/getEnvKey.js +32 -0
  167. package/dist/plugin/env/index.d.ts +5 -0
  168. package/dist/plugin/env/index.d.ts.map +1 -1
  169. package/dist/plugin/env/index.js +7 -0
  170. package/dist/plugin/env/plugin.client.d.ts +2 -0
  171. package/dist/plugin/env/plugin.client.d.ts.map +1 -0
  172. package/dist/plugin/env/plugin.client.js +2 -0
  173. package/dist/plugin/env/plugin.d.ts +4 -34
  174. package/dist/plugin/env/plugin.d.ts.map +1 -1
  175. package/dist/plugin/env/plugin.js +27 -102
  176. package/dist/plugin/env/plugin.server.d.ts +2 -0
  177. package/dist/plugin/env/plugin.server.d.ts.map +1 -0
  178. package/dist/plugin/env/plugin.server.js +2 -0
  179. package/dist/plugin/env/userConfigEnv.d.ts +2 -0
  180. package/dist/plugin/env/userConfigEnv.d.ts.map +1 -0
  181. package/dist/plugin/env/userConfigEnv.js +12 -0
  182. package/dist/plugin/environments/createBuildEventPlugin.d.ts +4 -0
  183. package/dist/plugin/environments/createBuildEventPlugin.d.ts.map +1 -0
  184. package/dist/plugin/environments/createBuildEventPlugin.js +100 -0
  185. package/dist/plugin/environments/createEnvironmentPlugin.d.ts +19 -0
  186. package/dist/plugin/environments/createEnvironmentPlugin.d.ts.map +1 -0
  187. package/dist/plugin/environments/createEnvironmentPlugin.js +257 -0
  188. package/dist/plugin/environments/hashCoordination.d.ts +14 -0
  189. package/dist/plugin/environments/hashCoordination.d.ts.map +1 -0
  190. package/dist/plugin/environments/hashCoordination.js +35 -0
  191. package/dist/plugin/environments/resolveEnvironmentConfig.d.ts +41 -0
  192. package/dist/plugin/environments/resolveEnvironmentConfig.d.ts.map +1 -0
  193. package/dist/plugin/environments/resolveEnvironmentConfig.js +232 -0
  194. package/dist/plugin/error/assertPanic.d.ts +2 -0
  195. package/dist/plugin/error/assertPanic.d.ts.map +1 -0
  196. package/dist/plugin/error/assertPanic.js +15 -0
  197. package/dist/plugin/error/handleError.d.ts +9 -0
  198. package/dist/plugin/error/handleError.d.ts.map +1 -0
  199. package/dist/plugin/error/handleError.js +51 -0
  200. package/dist/plugin/error/index.d.ts +3 -0
  201. package/dist/plugin/error/index.d.ts.map +1 -1
  202. package/dist/plugin/error/index.js +4 -1
  203. package/dist/plugin/error/logError.d.ts +6 -2
  204. package/dist/plugin/error/logError.d.ts.map +1 -1
  205. package/dist/plugin/error/logError.js +35 -34
  206. package/dist/plugin/error/panicThresholdHandler.d.ts +27 -0
  207. package/dist/plugin/error/panicThresholdHandler.d.ts.map +1 -0
  208. package/dist/plugin/error/panicThresholdHandler.js +13 -0
  209. package/dist/plugin/error/serializeError.d.ts +6 -2
  210. package/dist/plugin/error/serializeError.d.ts.map +1 -1
  211. package/dist/plugin/error/serializeError.js +30 -10
  212. package/dist/plugin/error/serializeErrorInfo.d.ts +5 -0
  213. package/dist/plugin/error/serializeErrorInfo.d.ts.map +1 -0
  214. package/dist/plugin/error/serializeErrorInfo.js +19 -0
  215. package/dist/plugin/error/setupGlobalErrorHandler.d.ts +4 -0
  216. package/dist/plugin/error/setupGlobalErrorHandler.d.ts.map +1 -0
  217. package/dist/plugin/error/setupGlobalErrorHandler.js +52 -0
  218. package/dist/plugin/error/shouldPanic.d.ts +6 -0
  219. package/dist/plugin/error/shouldPanic.d.ts.map +1 -0
  220. package/dist/plugin/error/shouldPanic.js +15 -0
  221. package/dist/plugin/error/toError.d.ts +5 -1
  222. package/dist/plugin/error/toError.d.ts.map +1 -1
  223. package/dist/plugin/error/toError.js +43 -19
  224. package/dist/plugin/error/types.d.ts +28 -0
  225. package/dist/plugin/error/types.d.ts.map +1 -0
  226. package/dist/plugin/helpers/collectManifestCss.d.ts.map +1 -1
  227. package/dist/plugin/helpers/collectManifestCss.js +19 -5
  228. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +3 -3
  229. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
  230. package/dist/plugin/helpers/collectViteModuleGraphCss.js +64 -3
  231. package/dist/plugin/helpers/createBufferedRscStream.d.ts +52 -0
  232. package/dist/plugin/helpers/createBufferedRscStream.d.ts.map +1 -0
  233. package/dist/plugin/helpers/createBufferedRscStream.js +147 -0
  234. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
  235. package/dist/plugin/helpers/createCssProps.js +15 -25
  236. package/dist/plugin/helpers/createElementWithReact.d.ts +9 -0
  237. package/dist/plugin/helpers/createElementWithReact.d.ts.map +1 -0
  238. package/dist/plugin/helpers/createElementWithReact.js +87 -0
  239. package/dist/plugin/helpers/createPatternMatcher.d.ts +24 -0
  240. package/dist/plugin/helpers/createPatternMatcher.d.ts.map +1 -0
  241. package/dist/plugin/helpers/createPatternMatcher.js +50 -0
  242. package/dist/plugin/helpers/createRscRenderHelpers.d.ts +16 -0
  243. package/dist/plugin/helpers/createRscRenderHelpers.d.ts.map +1 -0
  244. package/dist/plugin/helpers/createRscRenderHelpers.js +60 -0
  245. package/dist/plugin/helpers/createSafePageComponent.d.ts +36 -0
  246. package/dist/plugin/helpers/createSafePageComponent.d.ts.map +1 -0
  247. package/dist/plugin/helpers/createSafePageComponent.js +50 -0
  248. package/dist/plugin/helpers/createSerializableHandlerOptions.d.ts +60 -0
  249. package/dist/plugin/helpers/createSerializableHandlerOptions.d.ts.map +1 -0
  250. package/dist/plugin/helpers/createSerializableHandlerOptions.js +94 -0
  251. package/dist/plugin/helpers/createSharedLoader.d.ts +44 -0
  252. package/dist/plugin/helpers/createSharedLoader.d.ts.map +1 -0
  253. package/dist/plugin/helpers/createSharedLoader.js +137 -0
  254. package/dist/plugin/helpers/createUnifiedCssProcessor.d.ts +70 -0
  255. package/dist/plugin/helpers/createUnifiedCssProcessor.d.ts.map +1 -0
  256. package/dist/plugin/helpers/createUnifiedCssProcessor.js +89 -0
  257. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  258. package/dist/plugin/helpers/getBundleManifest.js +2 -3
  259. package/dist/plugin/helpers/getRouteFiles.d.ts +2 -2
  260. package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -1
  261. package/dist/plugin/helpers/getRouteFiles.js +67 -36
  262. package/dist/plugin/helpers/handleServerAction.client.d.ts +29 -0
  263. package/dist/plugin/helpers/handleServerAction.client.d.ts.map +1 -0
  264. package/dist/plugin/helpers/handleServerAction.client.js +93 -0
  265. package/dist/plugin/helpers/handleServerAction.d.ts +2 -34
  266. package/dist/plugin/helpers/handleServerAction.d.ts.map +1 -1
  267. package/dist/plugin/helpers/handleServerAction.js +15 -44
  268. package/dist/plugin/helpers/handleServerAction.server.d.ts +25 -0
  269. package/dist/plugin/helpers/handleServerAction.server.d.ts.map +1 -0
  270. package/dist/plugin/helpers/handleServerAction.server.js +80 -0
  271. package/dist/plugin/helpers/handleServerActionHelper.d.ts +61 -0
  272. package/dist/plugin/helpers/handleServerActionHelper.d.ts.map +1 -0
  273. package/dist/plugin/helpers/handleServerActionHelper.js +183 -0
  274. package/dist/plugin/helpers/headlessStreamReuseHandler.d.ts +12 -0
  275. package/dist/plugin/helpers/headlessStreamReuseHandler.d.ts.map +1 -0
  276. package/dist/plugin/helpers/headlessStreamReuseHandler.js +29 -0
  277. package/dist/plugin/helpers/headlessStreamState.d.ts +71 -0
  278. package/dist/plugin/helpers/headlessStreamState.d.ts.map +1 -0
  279. package/dist/plugin/helpers/headlessStreamState.js +81 -0
  280. package/dist/plugin/helpers/hydrateUserOptions.d.ts +1 -1
  281. package/dist/plugin/helpers/hydrateUserOptions.d.ts.map +1 -1
  282. package/dist/plugin/helpers/hydrateUserOptions.js +2 -2
  283. package/dist/plugin/helpers/index.d.ts +12 -5
  284. package/dist/plugin/helpers/index.d.ts.map +1 -1
  285. package/dist/plugin/helpers/index.js +18 -4
  286. package/dist/plugin/helpers/logRenderStart.d.ts +17 -0
  287. package/dist/plugin/helpers/logRenderStart.d.ts.map +1 -0
  288. package/dist/plugin/helpers/logRenderStart.js +13 -0
  289. package/dist/plugin/helpers/mergeMessageWithDefaults.d.ts +90 -0
  290. package/dist/plugin/helpers/mergeMessageWithDefaults.d.ts.map +1 -0
  291. package/dist/plugin/helpers/mergeMessageWithDefaults.js +67 -0
  292. package/dist/plugin/helpers/pipeToResponse.d.ts +19 -0
  293. package/dist/plugin/helpers/pipeToResponse.d.ts.map +1 -0
  294. package/dist/plugin/helpers/pipeToResponse.js +55 -0
  295. package/dist/plugin/helpers/requestInfo.d.ts +6 -4
  296. package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
  297. package/dist/plugin/helpers/requestInfo.js +48 -30
  298. package/dist/plugin/helpers/resolveComponents.client.d.ts +34 -0
  299. package/dist/plugin/helpers/resolveComponents.client.d.ts.map +1 -0
  300. package/dist/plugin/helpers/resolveComponents.client.js +126 -0
  301. package/dist/plugin/helpers/resolveModuleFromManifest.d.ts +36 -0
  302. package/dist/plugin/helpers/resolveModuleFromManifest.d.ts.map +1 -0
  303. package/dist/plugin/helpers/resolveModuleFromManifest.js +60 -0
  304. package/dist/plugin/helpers/resolvePageAndProps.d.ts +23 -2
  305. package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
  306. package/dist/plugin/helpers/resolvePageAndProps.js +150 -9
  307. package/dist/plugin/helpers/resolveRenderUrl.d.ts +11 -0
  308. package/dist/plugin/helpers/resolveRenderUrl.d.ts.map +1 -0
  309. package/dist/plugin/helpers/resolveRenderUrl.js +19 -0
  310. package/dist/plugin/helpers/resolveStreamElements.client.d.ts +14 -0
  311. package/dist/plugin/helpers/resolveStreamElements.client.d.ts.map +1 -0
  312. package/dist/plugin/helpers/resolveStreamElements.client.js +36 -0
  313. package/dist/plugin/helpers/resolveStreamElements.d.ts +3 -0
  314. package/dist/plugin/helpers/resolveStreamElements.d.ts.map +1 -0
  315. package/dist/plugin/helpers/resolveStreamElements.js +13 -0
  316. package/dist/plugin/helpers/resolveStreamElements.server.d.ts +15 -0
  317. package/dist/plugin/helpers/resolveStreamElements.server.d.ts.map +1 -0
  318. package/dist/plugin/helpers/resolveStreamElements.server.js +35 -0
  319. package/dist/plugin/helpers/resolveStreamElements.types.d.ts +22 -0
  320. package/dist/plugin/helpers/resolveStreamElements.types.d.ts.map +1 -0
  321. package/dist/plugin/helpers/resolveStreamElements.types.js +1 -0
  322. package/dist/plugin/helpers/resolveVirtualAndNodeModules.d.ts +15 -0
  323. package/dist/plugin/helpers/resolveVirtualAndNodeModules.d.ts.map +1 -0
  324. package/dist/plugin/helpers/resolveVirtualAndNodeModules.js +45 -0
  325. package/dist/plugin/helpers/resolveWithDefaultRootAndHtml.d.ts +18 -0
  326. package/dist/plugin/helpers/resolveWithDefaultRootAndHtml.d.ts.map +1 -0
  327. package/dist/plugin/helpers/resolveWithDefaultRootAndHtml.js +17 -0
  328. package/dist/plugin/helpers/serializeUserOptions.d.ts +2 -2
  329. package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -1
  330. package/dist/plugin/helpers/serializeUserOptions.js +28 -13
  331. package/dist/plugin/helpers/tryManifest.d.ts +2 -2
  332. package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
  333. package/dist/plugin/helpers/tryManifest.js +12 -6
  334. package/dist/plugin/helpers/validateRscRenderMessage.d.ts +9 -0
  335. package/dist/plugin/helpers/validateRscRenderMessage.d.ts.map +1 -0
  336. package/dist/plugin/helpers/validateRscRenderMessage.js +13 -0
  337. package/dist/plugin/helpers/workerCleanup.d.ts +29 -0
  338. package/dist/plugin/helpers/workerCleanup.d.ts.map +1 -0
  339. package/dist/plugin/helpers/workerCleanup.js +28 -0
  340. package/dist/plugin/helpers/workerManager.d.ts +5 -0
  341. package/dist/plugin/helpers/workerManager.d.ts.map +1 -0
  342. package/dist/plugin/helpers/workerManager.js +18 -0
  343. package/dist/plugin/index.d.ts +4 -1
  344. package/dist/plugin/index.d.ts.map +1 -1
  345. package/dist/plugin/index.js +5 -2
  346. package/dist/plugin/loader/createDefaultLoader.d.ts +1 -1
  347. package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -1
  348. package/dist/plugin/loader/createDefaultLoader.js +2 -22
  349. package/dist/plugin/loader/createTransformer.d.ts.map +1 -1
  350. package/dist/plugin/loader/createTransformer.js +157 -32
  351. package/dist/plugin/loader/directives/analyzeDirectives.d.ts +3 -2
  352. package/dist/plugin/loader/directives/analyzeDirectives.d.ts.map +1 -1
  353. package/dist/plugin/loader/directives/analyzeDirectives.js +53 -26
  354. package/dist/plugin/loader/directives/analyzeModule.d.ts +2 -6
  355. package/dist/plugin/loader/directives/analyzeModule.d.ts.map +1 -1
  356. package/dist/plugin/loader/directives/analyzeModule.js +32 -11
  357. package/dist/plugin/loader/env-loader.d.ts +3 -2
  358. package/dist/plugin/loader/env-loader.d.ts.map +1 -1
  359. package/dist/plugin/loader/env-loader.js +32 -9
  360. package/dist/plugin/loader/parse.d.ts +3 -2
  361. package/dist/plugin/loader/parse.d.ts.map +1 -1
  362. package/dist/plugin/loader/parse.js +2 -2
  363. package/dist/plugin/loader/react-loader.d.ts +4 -4
  364. package/dist/plugin/loader/react-loader.d.ts.map +1 -1
  365. package/dist/plugin/loader/react-loader.js +101 -73
  366. package/dist/plugin/loader/transformClientModule.d.ts +4 -5
  367. package/dist/plugin/loader/transformClientModule.d.ts.map +1 -1
  368. package/dist/plugin/loader/transformClientModule.js +63 -18
  369. package/dist/plugin/loader/transformModule.d.ts.map +1 -1
  370. package/dist/plugin/loader/transformModule.js +82 -14
  371. package/dist/plugin/loader/transformModuleIfNeeded.d.ts +6 -1
  372. package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -1
  373. package/dist/plugin/loader/transformModuleIfNeeded.js +10 -18
  374. package/dist/plugin/loader/transformNonServerEnvironment.d.ts +10 -0
  375. package/dist/plugin/loader/transformNonServerEnvironment.d.ts.map +1 -0
  376. package/dist/plugin/loader/transformNonServerEnvironment.js +74 -0
  377. package/dist/plugin/loader/transformServerModule.d.ts +2 -3
  378. package/dist/plugin/loader/transformServerModule.d.ts.map +1 -1
  379. package/dist/plugin/loader/transformServerModule.js +80 -22
  380. package/dist/plugin/loader/transformWithAcornLoose.js +1 -3
  381. package/dist/plugin/loader/types.d.ts +37 -32
  382. package/dist/plugin/loader/types.d.ts.map +1 -1
  383. package/dist/plugin/metrics/collectStreamMetrics.d.ts +1 -2
  384. package/dist/plugin/metrics/collectStreamMetrics.d.ts.map +1 -1
  385. package/dist/plugin/metrics/collectStreamMetrics.js +1 -1
  386. package/dist/plugin/metrics/convertStreamMetrics.d.ts +3 -0
  387. package/dist/plugin/metrics/convertStreamMetrics.d.ts.map +1 -0
  388. package/dist/plugin/metrics/convertStreamMetrics.js +26 -0
  389. package/dist/plugin/metrics/createModuleResolutionMetrics.d.ts +12 -0
  390. package/dist/plugin/metrics/createModuleResolutionMetrics.d.ts.map +1 -0
  391. package/dist/plugin/metrics/createModuleResolutionMetrics.js +32 -0
  392. package/dist/plugin/metrics/createRenderMetrics.d.ts +2 -2
  393. package/dist/plugin/metrics/createRenderMetrics.d.ts.map +1 -1
  394. package/dist/plugin/metrics/createRenderMetrics.js +45 -13
  395. package/dist/plugin/metrics/createStreamMetrics.d.ts +2 -2
  396. package/dist/plugin/metrics/createStreamMetrics.d.ts.map +1 -1
  397. package/dist/plugin/metrics/createStreamMetrics.js +15 -4
  398. package/dist/plugin/metrics/createWorkerStartupMetrics.d.ts +12 -0
  399. package/dist/plugin/metrics/createWorkerStartupMetrics.d.ts.map +1 -0
  400. package/dist/plugin/metrics/createWorkerStartupMetrics.js +14 -0
  401. package/dist/plugin/metrics/formatMetrics.d.ts +0 -6
  402. package/dist/plugin/metrics/formatMetrics.d.ts.map +1 -1
  403. package/dist/plugin/metrics/formatMetrics.js +7 -29
  404. package/dist/plugin/metrics/index.d.ts +6 -3
  405. package/dist/plugin/metrics/index.d.ts.map +1 -1
  406. package/dist/plugin/metrics/index.js +6 -3
  407. package/dist/plugin/metrics/metricWatcher.d.ts +9 -0
  408. package/dist/plugin/metrics/metricWatcher.d.ts.map +1 -0
  409. package/dist/plugin/metrics/metricWatcher.js +141 -0
  410. package/dist/plugin/metrics/types.d.ts +72 -6
  411. package/dist/plugin/metrics/types.d.ts.map +1 -1
  412. package/dist/plugin/orchestrator/createPluginOrchestrator.client.d.ts +3 -0
  413. package/dist/plugin/orchestrator/createPluginOrchestrator.client.d.ts.map +1 -0
  414. package/dist/plugin/orchestrator/createPluginOrchestrator.client.js +36 -0
  415. package/dist/plugin/orchestrator/createPluginOrchestrator.d.ts +19 -0
  416. package/dist/plugin/orchestrator/createPluginOrchestrator.d.ts.map +1 -0
  417. package/dist/plugin/orchestrator/createPluginOrchestrator.js +13 -0
  418. package/dist/plugin/orchestrator/createPluginOrchestrator.server.d.ts +3 -0
  419. package/dist/plugin/orchestrator/createPluginOrchestrator.server.d.ts.map +1 -0
  420. package/dist/plugin/orchestrator/createPluginOrchestrator.server.js +44 -0
  421. package/dist/plugin/orchestrator/index.d.ts +2 -0
  422. package/dist/plugin/orchestrator/index.d.ts.map +1 -0
  423. package/dist/plugin/orchestrator/index.js +1 -0
  424. package/dist/plugin/orchestrator/plugin.js +7 -0
  425. package/dist/plugin/orchestrator/resolveStrategy.d.ts +19 -0
  426. package/dist/plugin/orchestrator/resolveStrategy.d.ts.map +1 -0
  427. package/dist/plugin/orchestrator/resolveStrategy.js +35 -0
  428. package/dist/plugin/orchestrator/types.d.ts +21 -0
  429. package/dist/plugin/orchestrator/types.d.ts.map +1 -0
  430. package/dist/plugin/orchestrator/types.js +1 -0
  431. package/dist/plugin/plugin.client.d.ts +11 -19
  432. package/dist/plugin/plugin.client.d.ts.map +1 -1
  433. package/dist/plugin/plugin.client.js +28 -29
  434. package/dist/plugin/plugin.d.ts +2 -1
  435. package/dist/plugin/plugin.d.ts.map +1 -1
  436. package/dist/plugin/plugin.js +4 -2
  437. package/dist/plugin/plugin.server.d.ts +13 -11
  438. package/dist/plugin/plugin.server.d.ts.map +1 -1
  439. package/dist/plugin/plugin.server.js +19 -22
  440. package/dist/plugin/process-env.d.ts +19 -6
  441. package/dist/plugin/process-env.d.ts.map +1 -1
  442. package/dist/plugin/process-env.js +17 -0
  443. package/dist/plugin/react-client/createMessageHandlers.d.ts +2 -10
  444. package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
  445. package/dist/plugin/react-client/createMessageHandlers.js +42 -69
  446. package/dist/plugin/react-client/index.client.d.ts +2 -0
  447. package/dist/plugin/react-client/index.client.d.ts.map +1 -0
  448. package/dist/plugin/react-client/index.client.js +1 -0
  449. package/dist/plugin/react-client/index.d.ts +3 -4
  450. package/dist/plugin/react-client/index.d.ts.map +1 -1
  451. package/dist/plugin/react-client/index.js +10 -5
  452. package/dist/plugin/react-client/index.server.d.ts +2 -0
  453. package/dist/plugin/react-client/index.server.d.ts.map +1 -0
  454. package/dist/plugin/react-client/index.server.js +1 -0
  455. package/dist/plugin/react-client/plugin.client.d.ts +15 -0
  456. package/dist/plugin/react-client/plugin.client.d.ts.map +1 -0
  457. package/dist/plugin/react-client/plugin.client.js +98 -0
  458. package/dist/plugin/react-client/plugin.d.ts +2 -5
  459. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  460. package/dist/plugin/react-client/plugin.js +6 -121
  461. package/dist/plugin/react-client/plugin.server.d.ts +15 -0
  462. package/dist/plugin/react-client/plugin.server.d.ts.map +1 -0
  463. package/dist/plugin/react-client/plugin.server.js +93 -0
  464. package/dist/plugin/react-client/types.d.ts +60 -0
  465. package/dist/plugin/react-client/types.d.ts.map +1 -0
  466. package/dist/plugin/react-client/types.js +1 -0
  467. package/dist/plugin/react-server/index.client.d.ts +2 -0
  468. package/dist/plugin/react-server/index.client.d.ts.map +1 -0
  469. package/dist/plugin/react-server/index.client.js +1 -0
  470. package/dist/plugin/react-server/index.d.ts +3 -1
  471. package/dist/plugin/react-server/index.d.ts.map +1 -1
  472. package/dist/plugin/react-server/index.js +13 -1
  473. package/dist/plugin/react-server/index.server.d.ts +2 -0
  474. package/dist/plugin/react-server/index.server.d.ts.map +1 -0
  475. package/dist/plugin/react-server/index.server.js +1 -0
  476. package/dist/plugin/react-server/plugin.client.d.ts +3 -0
  477. package/dist/plugin/react-server/plugin.client.d.ts.map +1 -0
  478. package/dist/plugin/react-server/plugin.client.js +40 -0
  479. package/dist/plugin/react-server/plugin.d.ts +2 -5
  480. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  481. package/dist/plugin/react-server/plugin.js +5 -141
  482. package/dist/plugin/react-server/plugin.server.d.ts +3 -0
  483. package/dist/plugin/react-server/plugin.server.d.ts.map +1 -0
  484. package/dist/plugin/react-server/plugin.server.js +18 -0
  485. package/dist/plugin/react-server/types.d.ts +11 -0
  486. package/dist/plugin/react-server/types.d.ts.map +1 -0
  487. package/dist/plugin/react-server/types.js +1 -0
  488. package/dist/plugin/react-static/collectHtmlContent.d.ts +15 -0
  489. package/dist/plugin/react-static/collectHtmlContent.d.ts.map +1 -0
  490. package/dist/plugin/react-static/collectHtmlContent.js +104 -0
  491. package/dist/plugin/react-static/collectRscContent.d.ts +10 -15
  492. package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -1
  493. package/dist/plugin/react-static/collectRscContent.js +71 -20
  494. package/dist/plugin/react-static/configurePreviewServer.d.ts +1 -7
  495. package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -1
  496. package/dist/plugin/react-static/configurePreviewServer.js +15 -29
  497. package/dist/plugin/react-static/createBuildLoader.client.d.ts +2 -0
  498. package/dist/plugin/react-static/createBuildLoader.client.d.ts.map +1 -0
  499. package/dist/plugin/react-static/createBuildLoader.client.js +7 -0
  500. package/dist/plugin/react-static/createBuildLoader.d.ts +3 -19
  501. package/dist/plugin/react-static/createBuildLoader.d.ts.map +1 -1
  502. package/dist/plugin/react-static/createBuildLoader.js +4 -226
  503. package/dist/plugin/react-static/createBuildLoader.server.d.ts +9 -0
  504. package/dist/plugin/react-static/createBuildLoader.server.d.ts.map +1 -0
  505. package/dist/plugin/react-static/createBuildLoader.server.js +253 -0
  506. package/dist/plugin/react-static/fileWriter.d.ts +3 -14
  507. package/dist/plugin/react-static/fileWriter.d.ts.map +1 -1
  508. package/dist/plugin/react-static/fileWriter.js +233 -42
  509. package/dist/plugin/react-static/index.client.d.ts +7 -0
  510. package/dist/plugin/react-static/index.client.d.ts.map +1 -0
  511. package/dist/plugin/react-static/index.client.js +6 -0
  512. package/dist/plugin/react-static/index.d.ts +7 -1
  513. package/dist/plugin/react-static/index.d.ts.map +1 -1
  514. package/dist/plugin/react-static/index.js +19 -1
  515. package/dist/plugin/react-static/index.server.d.ts +7 -0
  516. package/dist/plugin/react-static/index.server.d.ts.map +1 -0
  517. package/dist/plugin/react-static/index.server.js +6 -0
  518. package/dist/plugin/react-static/plugin.client.d.ts +32 -0
  519. package/dist/plugin/react-static/plugin.client.d.ts.map +1 -0
  520. package/dist/plugin/react-static/plugin.client.js +801 -0
  521. package/dist/plugin/react-static/plugin.d.ts +3 -20
  522. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  523. package/dist/plugin/react-static/plugin.js +4 -365
  524. package/dist/plugin/react-static/plugin.server.d.ts +18 -0
  525. package/dist/plugin/react-static/plugin.server.d.ts.map +1 -0
  526. package/dist/plugin/react-static/plugin.server.js +615 -0
  527. package/dist/plugin/react-static/processCssFilesForPages.d.ts +16 -0
  528. package/dist/plugin/react-static/processCssFilesForPages.d.ts.map +1 -0
  529. package/dist/plugin/react-static/processCssFilesForPages.js +94 -0
  530. package/dist/plugin/react-static/renderPage.client.d.ts +49 -0
  531. package/dist/plugin/react-static/renderPage.client.d.ts.map +1 -0
  532. package/dist/plugin/react-static/renderPage.client.js +555 -0
  533. package/dist/plugin/react-static/renderPage.d.ts +3 -4
  534. package/dist/plugin/react-static/renderPage.d.ts.map +1 -1
  535. package/dist/plugin/react-static/renderPage.js +6 -131
  536. package/dist/plugin/react-static/renderPage.server.d.ts +24 -0
  537. package/dist/plugin/react-static/renderPage.server.d.ts.map +1 -0
  538. package/dist/plugin/react-static/renderPage.server.js +533 -0
  539. package/dist/plugin/react-static/renderPages.d.ts +11 -3
  540. package/dist/plugin/react-static/renderPages.d.ts.map +1 -1
  541. package/dist/plugin/react-static/renderPages.js +533 -92
  542. package/dist/plugin/react-static/renderPagesBatched.d.ts +6 -0
  543. package/dist/plugin/react-static/renderPagesBatched.d.ts.map +1 -0
  544. package/dist/plugin/react-static/renderPagesBatched.js +195 -0
  545. package/dist/plugin/react-static/renderStreams.d.ts +2 -5
  546. package/dist/plugin/react-static/renderStreams.d.ts.map +1 -1
  547. package/dist/plugin/react-static/renderStreams.js +36 -24
  548. package/dist/plugin/react-static/rscToHtmlStream.client.d.ts +12 -0
  549. package/dist/plugin/react-static/rscToHtmlStream.client.d.ts.map +1 -0
  550. package/dist/plugin/react-static/rscToHtmlStream.client.js +32 -0
  551. package/dist/plugin/react-static/rscToHtmlStream.d.ts +3 -21
  552. package/dist/plugin/react-static/rscToHtmlStream.d.ts.map +1 -1
  553. package/dist/plugin/react-static/rscToHtmlStream.js +4 -53
  554. package/dist/plugin/react-static/rscToHtmlStream.server.d.ts +3 -0
  555. package/dist/plugin/react-static/rscToHtmlStream.server.d.ts.map +1 -0
  556. package/dist/plugin/react-static/rscToHtmlStream.server.js +39 -0
  557. package/dist/plugin/react-static/temporaryReferences.client.d.ts +2 -0
  558. package/dist/plugin/react-static/temporaryReferences.client.d.ts.map +1 -0
  559. package/dist/plugin/react-static/temporaryReferences.client.js +1 -0
  560. package/dist/plugin/react-static/temporaryReferences.d.ts +2 -1
  561. package/dist/plugin/react-static/temporaryReferences.d.ts.map +1 -1
  562. package/dist/plugin/react-static/temporaryReferences.js +6 -10
  563. package/dist/plugin/react-static/temporaryReferences.server.d.ts +2 -0
  564. package/dist/plugin/react-static/temporaryReferences.server.d.ts.map +1 -0
  565. package/dist/plugin/react-static/temporaryReferences.server.js +3 -0
  566. package/dist/plugin/react-static/types.d.ts +83 -9
  567. package/dist/plugin/react-static/types.d.ts.map +1 -1
  568. package/dist/plugin/root.d.ts.map +1 -1
  569. package/dist/plugin/root.js +2 -5
  570. package/dist/plugin/stream/MessagePortReadable.d.ts +22 -0
  571. package/dist/plugin/stream/MessagePortReadable.d.ts.map +1 -0
  572. package/dist/plugin/stream/MessagePortReadable.js +101 -0
  573. package/dist/plugin/stream/MessagePortWritable.d.ts +22 -0
  574. package/dist/plugin/stream/MessagePortWritable.d.ts.map +1 -0
  575. package/dist/plugin/stream/MessagePortWritable.js +85 -0
  576. package/dist/plugin/stream/client.js +12 -0
  577. package/dist/plugin/stream/createFromNodeStream.client.d.ts +9 -0
  578. package/dist/plugin/stream/createFromNodeStream.client.d.ts.map +1 -0
  579. package/dist/plugin/stream/createFromNodeStream.client.js +76 -0
  580. package/dist/plugin/stream/createFromNodeStream.d.ts +3 -0
  581. package/dist/plugin/stream/createFromNodeStream.d.ts.map +1 -0
  582. package/dist/plugin/stream/createFromNodeStream.js +6 -0
  583. package/dist/plugin/stream/createFromNodeStream.server.d.ts +9 -0
  584. package/dist/plugin/stream/createFromNodeStream.server.d.ts.map +1 -0
  585. package/dist/plugin/stream/createFromNodeStream.server.js +27 -0
  586. package/dist/plugin/stream/createFromNodeStream.types.d.ts +37 -0
  587. package/dist/plugin/stream/createFromNodeStream.types.d.ts.map +1 -0
  588. package/dist/plugin/stream/createFromNodeStream.types.js +1 -0
  589. package/dist/plugin/stream/createHtmlStream.client.d.ts +3 -0
  590. package/dist/plugin/stream/createHtmlStream.client.d.ts.map +1 -0
  591. package/dist/plugin/stream/createHtmlStream.client.js +42 -0
  592. package/dist/plugin/stream/createHtmlStream.d.ts +3 -0
  593. package/dist/plugin/stream/createHtmlStream.d.ts.map +1 -0
  594. package/dist/plugin/stream/createHtmlStream.js +6 -0
  595. package/dist/plugin/stream/createHtmlStream.server.d.ts +6 -0
  596. package/dist/plugin/stream/createHtmlStream.server.d.ts.map +1 -0
  597. package/dist/plugin/stream/createHtmlStream.server.js +224 -0
  598. package/dist/plugin/stream/createHtmlStream.types.d.ts +43 -0
  599. package/dist/plugin/stream/createHtmlStream.types.d.ts.map +1 -0
  600. package/dist/plugin/stream/createHtmlStream.types.js +1 -0
  601. package/dist/plugin/stream/createMainThreadHandlers.d.ts +11 -0
  602. package/dist/plugin/stream/createMainThreadHandlers.d.ts.map +1 -0
  603. package/dist/plugin/stream/createMainThreadHandlers.js +32 -0
  604. package/dist/plugin/stream/createMessageChannels.d.ts +29 -0
  605. package/dist/plugin/stream/createMessageChannels.d.ts.map +1 -0
  606. package/dist/plugin/stream/createMessageChannels.js +35 -0
  607. package/dist/plugin/stream/createRenderToPipeableStreamHandler.client.d.ts +10 -0
  608. package/dist/plugin/stream/createRenderToPipeableStreamHandler.client.d.ts.map +1 -0
  609. package/dist/plugin/stream/createRenderToPipeableStreamHandler.client.js +188 -0
  610. package/dist/plugin/stream/createRenderToPipeableStreamHandler.d.ts +3 -0
  611. package/dist/plugin/stream/createRenderToPipeableStreamHandler.d.ts.map +1 -0
  612. package/dist/plugin/stream/createRenderToPipeableStreamHandler.js +6 -0
  613. package/dist/plugin/stream/createRenderToPipeableStreamHandler.server.d.ts +45 -0
  614. package/dist/plugin/stream/createRenderToPipeableStreamHandler.server.d.ts.map +1 -0
  615. package/dist/plugin/stream/createRenderToPipeableStreamHandler.server.js +249 -0
  616. package/dist/plugin/stream/createRenderToPipeableStreamHandler.types.d.ts +17 -0
  617. package/dist/plugin/stream/createRenderToPipeableStreamHandler.types.d.ts.map +1 -0
  618. package/dist/plugin/stream/createRenderToPipeableStreamHandler.types.js +1 -0
  619. package/dist/plugin/stream/createRscStream.client.d.ts +18 -0
  620. package/dist/plugin/stream/createRscStream.client.d.ts.map +1 -0
  621. package/dist/plugin/stream/createRscStream.client.js +79 -0
  622. package/dist/plugin/stream/createRscStream.d.ts +2 -0
  623. package/dist/plugin/stream/createRscStream.d.ts.map +1 -0
  624. package/dist/plugin/stream/createRscStream.js +13 -0
  625. package/dist/plugin/stream/createRscStream.server.d.ts +46 -0
  626. package/dist/plugin/stream/createRscStream.server.d.ts.map +1 -0
  627. package/dist/plugin/stream/createRscStream.server.js +113 -0
  628. package/dist/plugin/stream/createRscStream.types.d.ts +134 -0
  629. package/dist/plugin/stream/createRscStream.types.d.ts.map +1 -0
  630. package/dist/plugin/stream/createRscStream.types.js +1 -0
  631. package/dist/plugin/stream/createRscStream.utils.d.ts +54 -0
  632. package/dist/plugin/stream/createRscStream.utils.d.ts.map +1 -0
  633. package/dist/plugin/stream/createRscStream.utils.js +91 -0
  634. package/dist/plugin/stream/createRscWorkerStream.d.ts +41 -0
  635. package/dist/plugin/stream/createRscWorkerStream.d.ts.map +1 -0
  636. package/dist/plugin/stream/createRscWorkerStream.js +120 -0
  637. package/dist/plugin/stream/handleRscStream.client.d.ts +17 -0
  638. package/dist/plugin/stream/handleRscStream.client.d.ts.map +1 -0
  639. package/dist/plugin/stream/handleRscStream.client.js +163 -0
  640. package/dist/plugin/stream/handleRscStream.d.ts +3 -0
  641. package/dist/plugin/stream/handleRscStream.d.ts.map +1 -0
  642. package/dist/plugin/stream/handleRscStream.js +13 -0
  643. package/dist/plugin/stream/handleRscStream.server.d.ts +6 -0
  644. package/dist/plugin/stream/handleRscStream.server.d.ts.map +1 -0
  645. package/dist/plugin/stream/handleRscStream.server.js +70 -0
  646. package/dist/plugin/stream/handleRscStream.types.d.ts +28 -0
  647. package/dist/plugin/stream/handleRscStream.types.d.ts.map +1 -0
  648. package/dist/plugin/stream/handleRscStream.types.js +1 -0
  649. package/dist/plugin/stream/index.client.d.ts +7 -0
  650. package/dist/plugin/stream/index.client.d.ts.map +1 -0
  651. package/dist/plugin/stream/index.client.js +11 -0
  652. package/dist/plugin/stream/index.d.ts +95 -0
  653. package/dist/plugin/stream/index.d.ts.map +1 -0
  654. package/dist/plugin/stream/index.js +21 -0
  655. package/dist/plugin/stream/index.server.d.ts +7 -0
  656. package/dist/plugin/stream/index.server.d.ts.map +1 -0
  657. package/dist/plugin/stream/index.server.js +11 -0
  658. package/dist/plugin/stream/renderRscStream.server.d.ts +21 -0
  659. package/dist/plugin/stream/renderRscStream.server.d.ts.map +1 -0
  660. package/dist/plugin/stream/renderRscStream.server.js +153 -0
  661. package/dist/plugin/stream/renderRscStream.types.d.ts +36 -0
  662. package/dist/plugin/stream/renderRscStream.types.d.ts.map +1 -0
  663. package/dist/plugin/stream/renderRscStream.types.js +1 -0
  664. package/dist/plugin/stream/renderRscStreamHelpers.server.d.ts +9 -0
  665. package/dist/plugin/stream/renderRscStreamHelpers.server.d.ts.map +1 -0
  666. package/dist/plugin/stream/renderRscStreamHelpers.server.js +63 -0
  667. package/dist/plugin/stream/server.js +12 -0
  668. package/dist/plugin/stream/setMaxListeners.d.ts +16 -0
  669. package/dist/plugin/stream/setMaxListeners.d.ts.map +1 -0
  670. package/dist/plugin/stream/setMaxListeners.js +16 -0
  671. package/dist/plugin/transformer/createTransformerPlugin.d.ts +18 -0
  672. package/dist/plugin/transformer/createTransformerPlugin.d.ts.map +1 -0
  673. package/dist/plugin/transformer/createTransformerPlugin.js +269 -0
  674. package/dist/plugin/transformer/plugin.client.d.ts +3 -0
  675. package/dist/plugin/transformer/plugin.client.d.ts.map +1 -0
  676. package/dist/plugin/transformer/plugin.client.js +5 -0
  677. package/dist/plugin/transformer/plugin.server.d.ts +2 -29
  678. package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
  679. package/dist/plugin/transformer/plugin.server.js +5 -104
  680. package/dist/plugin/transformer/transformerEnv.d.ts +15 -0
  681. package/dist/plugin/transformer/transformerEnv.d.ts.map +1 -0
  682. package/dist/plugin/transformer/transformerEnv.js +26 -0
  683. package/dist/plugin/types.d.ts +368 -143
  684. package/dist/plugin/types.d.ts.map +1 -1
  685. package/dist/plugin/types.js +1 -2
  686. package/dist/plugin/utils/callServer.d.ts +1 -1
  687. package/dist/plugin/utils/callServer.d.ts.map +1 -1
  688. package/dist/plugin/utils/createCallServer.d.ts +1 -1
  689. package/dist/plugin/utils/createCallServer.d.ts.map +1 -1
  690. package/dist/plugin/utils/createCallServer.js +4 -9
  691. package/dist/plugin/utils/createReactFetcher.d.ts +43 -2
  692. package/dist/plugin/utils/createReactFetcher.d.ts.map +1 -1
  693. package/dist/plugin/utils/createReactFetcher.js +14 -3
  694. package/dist/plugin/utils/envUrls.node.d.ts.map +1 -1
  695. package/dist/plugin/utils/envUrls.node.js +11 -11
  696. package/dist/plugin/utils/index.client.d.ts +8 -0
  697. package/dist/plugin/utils/index.client.d.ts.map +1 -0
  698. package/dist/plugin/utils/index.client.js +8 -0
  699. package/dist/plugin/utils/index.d.ts +1 -0
  700. package/dist/plugin/utils/index.d.ts.map +1 -1
  701. package/dist/plugin/utils/index.js +3 -2
  702. package/dist/plugin/utils/index.server.d.ts +6 -0
  703. package/dist/plugin/utils/index.server.d.ts.map +1 -0
  704. package/dist/plugin/utils/index.server.js +8 -0
  705. package/dist/plugin/utils/routeToURL.d.ts.map +1 -1
  706. package/dist/plugin/utils/routeToURL.js +4 -4
  707. package/dist/plugin/utils/urls.d.ts +1 -1
  708. package/dist/plugin/utils/urls.d.ts.map +1 -1
  709. package/dist/plugin/utils/urls.js +29 -8
  710. package/dist/plugin/utils/useRscHmr.d.ts +39 -0
  711. package/dist/plugin/utils/useRscHmr.d.ts.map +1 -0
  712. package/dist/plugin/utils/useRscHmr.js +27 -0
  713. package/dist/plugin/vendor/vendor.client.d.ts +3 -3
  714. package/dist/plugin/vendor/vendor.client.d.ts.map +1 -1
  715. package/dist/plugin/vendor/vendor.client.js +7 -6
  716. package/dist/plugin/vendor/vendor.d.ts +1 -1
  717. package/dist/plugin/vendor/vendor.d.ts.map +1 -1
  718. package/dist/plugin/vendor/vendor.js +4 -6
  719. package/dist/plugin/vendor/vendor.server.d.ts +4 -2
  720. package/dist/plugin/vendor/vendor.server.d.ts.map +1 -1
  721. package/dist/plugin/vendor/vendor.server.js +2 -3
  722. package/dist/plugin/vendor/vendor.static.d.ts +4 -0
  723. package/dist/plugin/vendor/vendor.static.d.ts.map +1 -0
  724. package/dist/plugin/vendor/vendor.static.js +15 -0
  725. package/dist/plugin/worker/createWorker.d.ts +16 -5
  726. package/dist/plugin/worker/createWorker.d.ts.map +1 -1
  727. package/dist/plugin/worker/createWorker.js +207 -30
  728. package/dist/plugin/worker/html/handleHtmlRender.d.ts +14 -0
  729. package/dist/plugin/worker/html/handleHtmlRender.d.ts.map +1 -0
  730. package/dist/plugin/worker/html/handleHtmlRender.js +190 -0
  731. package/dist/plugin/worker/html/html-worker.development.js +9 -26
  732. package/dist/plugin/worker/html/html-worker.js +4 -4
  733. package/dist/plugin/worker/html/html-worker.production.js +7 -13
  734. package/dist/plugin/worker/html/index.d.ts +1 -1
  735. package/dist/plugin/worker/html/index.js +6 -2
  736. package/dist/plugin/worker/html/messageHandler.d.ts +1 -1
  737. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  738. package/dist/plugin/worker/html/messageHandler.js +291 -104
  739. package/dist/plugin/worker/html/state.d.ts +10 -0
  740. package/dist/plugin/worker/html/state.d.ts.map +1 -0
  741. package/dist/plugin/worker/html/state.js +28 -0
  742. package/dist/plugin/worker/html/types.d.ts +52 -23
  743. package/dist/plugin/worker/html/types.d.ts.map +1 -1
  744. package/dist/plugin/worker/index.js +1 -1
  745. package/dist/plugin/worker/rsc/createBundleLoader.d.ts +22 -0
  746. package/dist/plugin/worker/rsc/createBundleLoader.d.ts.map +1 -0
  747. package/dist/plugin/worker/rsc/createBundleLoader.js +55 -0
  748. package/dist/plugin/worker/rsc/createRscWorkerLoader.d.ts +23 -0
  749. package/dist/plugin/worker/rsc/createRscWorkerLoader.d.ts.map +1 -0
  750. package/dist/plugin/worker/rsc/createRscWorkerLoader.js +79 -0
  751. package/dist/plugin/worker/rsc/handleRscRender.d.ts +32 -0
  752. package/dist/plugin/worker/rsc/handleRscRender.d.ts.map +1 -0
  753. package/dist/plugin/worker/rsc/handleRscRender.js +349 -0
  754. package/dist/plugin/worker/rsc/handlers.d.ts +8 -2
  755. package/dist/plugin/worker/rsc/handlers.d.ts.map +1 -1
  756. package/dist/plugin/worker/rsc/handlers.js +137 -200
  757. package/dist/plugin/worker/rsc/hydrateRscRenderMessage.d.ts +118 -0
  758. package/dist/plugin/worker/rsc/hydrateRscRenderMessage.d.ts.map +1 -0
  759. package/dist/plugin/worker/rsc/hydrateRscRenderMessage.js +61 -0
  760. package/dist/plugin/worker/rsc/messageHandler.d.ts +1 -1
  761. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  762. package/dist/plugin/worker/rsc/messageHandler.js +927 -47
  763. package/dist/plugin/worker/rsc/rsc-worker.development.js +153 -148
  764. package/dist/plugin/worker/rsc/rsc-worker.js +2 -3
  765. package/dist/plugin/worker/rsc/rsc-worker.production.js +240 -15
  766. package/dist/plugin/worker/rsc/state.d.ts +6 -0
  767. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  768. package/dist/plugin/worker/rsc/state.js +37 -5
  769. package/dist/plugin/worker/rsc/types.d.ts +73 -12
  770. package/dist/plugin/worker/rsc/types.d.ts.map +1 -1
  771. package/dist/plugin/worker/rsc/workerUserOptions.d.ts +10 -0
  772. package/dist/plugin/worker/rsc/workerUserOptions.d.ts.map +1 -0
  773. package/dist/plugin/worker/rsc/workerUserOptions.js +39 -0
  774. package/dist/plugin/worker/sendMessage.d.ts +2 -3
  775. package/dist/plugin/worker/sendMessage.d.ts.map +1 -1
  776. package/dist/plugin/worker/sendMessage.js +24 -38
  777. package/dist/plugin/worker/types.d.ts +42 -56
  778. package/dist/plugin/worker/types.d.ts.map +1 -1
  779. package/dist/plugin/worker/worker-handlers.server.d.ts +2 -0
  780. package/dist/plugin/worker/worker-handlers.server.d.ts.map +1 -0
  781. package/dist/plugin/worker/worker-handlers.server.js +1 -0
  782. package/dist/server.d.ts +5 -1
  783. package/dist/server.d.ts.map +1 -1
  784. package/dist/server.js +4 -6
  785. package/dist/static.js +11 -0
  786. package/dist/tsconfig.tsbuildinfo +1 -1
  787. package/package.json +102 -27
  788. package/plugin/bundle/bundles.ts +22 -0
  789. package/plugin/bundle/deferredStaticGeneration.ts +48 -0
  790. package/plugin/bundle/manifests.ts +73 -0
  791. package/plugin/components/css.tsx +3 -7
  792. package/plugin/components/html.tsx +4 -3
  793. package/plugin/components/index.ts +1 -1
  794. package/plugin/components/root.tsx +3 -3
  795. package/plugin/config/autoDiscover/createGlobAutoDiscover.ts +10 -5
  796. package/plugin/config/autoDiscover/pageAndPropFiles.ts +4 -2
  797. package/plugin/config/autoDiscover/resolveAutoDiscover.ts +64 -79
  798. package/plugin/config/autoDiscover/resolveBuildPages.ts +181 -69
  799. package/plugin/config/createHandlerOptions.client.ts +403 -0
  800. package/plugin/config/createHandlerOptions.server.ts +477 -0
  801. package/plugin/config/createHandlerOptions.ts +46 -0
  802. package/plugin/config/createHandlerOptions.types.ts +119 -0
  803. package/plugin/config/createModuleID.ts +201 -10
  804. package/plugin/config/defaults.tsx +108 -55
  805. package/plugin/config/envPrefixFromConfig.ts +10 -0
  806. package/plugin/config/getCondition.ts +267 -10
  807. package/plugin/{getNodeEnv.ts → config/getNodeEnv.ts} +4 -2
  808. package/plugin/config/index.ts +60 -1
  809. package/plugin/config/resolveDirectiveMatcher.ts +13 -34
  810. package/plugin/config/resolveEnv.ts +37 -33
  811. package/plugin/config/resolveOptions.ts +375 -154
  812. package/plugin/config/resolvePages.ts +1 -1
  813. package/plugin/config/resolvePatternWithValues.ts +6 -26
  814. package/plugin/config/resolveUrlOption.ts +2 -2
  815. package/plugin/config/resolveUserConfig.ts +359 -124
  816. package/plugin/config/stashedOptionsState.ts +144 -0
  817. package/plugin/dev-server/cleanupServerAction.client.ts +47 -0
  818. package/plugin/dev-server/cleanupServerAction.server.ts +24 -0
  819. package/plugin/dev-server/cleanupServerAction.ts +8 -0
  820. package/plugin/dev-server/configureReactServer.client.ts +107 -0
  821. package/plugin/dev-server/configureReactServer.server.ts +558 -0
  822. package/plugin/dev-server/configureReactServer.ts +8 -0
  823. package/plugin/dev-server/configureRequestHandler.client.ts +382 -0
  824. package/plugin/dev-server/configureRequestHandler.server.ts +46 -0
  825. package/plugin/dev-server/configureRequestHandler.ts +8 -0
  826. package/plugin/dev-server/handleServerAction.client.ts +126 -0
  827. package/plugin/dev-server/handleServerAction.server.ts +10 -0
  828. package/plugin/dev-server/handleServerAction.ts +8 -0
  829. package/plugin/dev-server/index.client.ts +6 -0
  830. package/plugin/dev-server/index.server.ts +6 -0
  831. package/plugin/dev-server/index.ts +20 -0
  832. package/plugin/dev-server/plugin.client.ts +160 -0
  833. package/plugin/dev-server/plugin.server.ts +133 -0
  834. package/plugin/dev-server/restartWorker.client.ts +155 -0
  835. package/plugin/dev-server/restartWorker.server.ts +108 -0
  836. package/plugin/dev-server/restartWorker.ts +8 -0
  837. package/plugin/dev-server/types.ts +78 -0
  838. package/plugin/dev-server/virtualRscHmrPlugin.ts +82 -0
  839. package/plugin/env/createConfigEnv.ts +59 -0
  840. package/plugin/env/createEnvPlugin.ts +76 -0
  841. package/plugin/env/getArgValue.ts +56 -0
  842. package/plugin/env/getEnvKey.ts +80 -0
  843. package/plugin/env/index.ts +14 -1
  844. package/plugin/env/plugin.client.ts +3 -0
  845. package/plugin/env/plugin.server.ts +4 -0
  846. package/plugin/env/plugin.ts +40 -164
  847. package/plugin/env/userConfigEnv.ts +22 -0
  848. package/plugin/environments/createBuildEventPlugin.ts +117 -0
  849. package/plugin/environments/createEnvironmentPlugin.ts +332 -0
  850. package/plugin/environments/hashCoordination.ts +39 -0
  851. package/plugin/environments/resolveEnvironmentConfig.ts +320 -0
  852. package/plugin/error/assertPanic.ts +9 -0
  853. package/plugin/error/handleError.ts +63 -0
  854. package/plugin/error/index.ts +4 -1
  855. package/plugin/error/logError.ts +64 -40
  856. package/plugin/error/panicThresholdHandler.ts +52 -0
  857. package/plugin/error/serializeError.ts +36 -11
  858. package/plugin/error/serializeErrorInfo.ts +17 -0
  859. package/plugin/error/setupGlobalErrorHandler.ts +71 -0
  860. package/plugin/error/shouldPanic.ts +14 -0
  861. package/plugin/error/toError.ts +59 -19
  862. package/plugin/error/types.ts +32 -0
  863. package/plugin/helpers/README.md +112 -0
  864. package/plugin/helpers/collectManifestCss.ts +24 -5
  865. package/plugin/helpers/collectViteModuleGraphCss.ts +83 -9
  866. package/plugin/helpers/createBufferedRscStream.ts +194 -0
  867. package/plugin/helpers/createCssProps.tsx +22 -41
  868. package/plugin/helpers/createElementWithReact.tsx +121 -0
  869. package/plugin/helpers/createPatternMatcher.ts +100 -0
  870. package/plugin/helpers/createRscRenderHelpers.ts +77 -0
  871. package/plugin/helpers/createSafePageComponent.ts +64 -0
  872. package/plugin/helpers/createSerializableHandlerOptions.ts +183 -0
  873. package/plugin/helpers/createSharedLoader.ts +207 -0
  874. package/plugin/helpers/createUnifiedCssProcessor.ts +175 -0
  875. package/plugin/helpers/getBundleManifest.ts +2 -3
  876. package/plugin/helpers/getRouteFiles.ts +94 -48
  877. package/plugin/helpers/handleServerAction.client.ts +145 -0
  878. package/plugin/helpers/handleServerAction.server.ts +151 -0
  879. package/plugin/helpers/handleServerAction.ts +19 -78
  880. package/plugin/helpers/handleServerActionHelper.ts +270 -0
  881. package/plugin/helpers/headlessStreamReuseHandler.ts +48 -0
  882. package/plugin/helpers/headlessStreamState.ts +122 -0
  883. package/plugin/helpers/hydrateUserOptions.ts +2 -2
  884. package/plugin/helpers/index.ts +32 -5
  885. package/plugin/helpers/logRenderStart.ts +26 -0
  886. package/plugin/helpers/mergeMessageWithDefaults.ts +80 -0
  887. package/plugin/helpers/pipeToResponse.ts +77 -0
  888. package/plugin/helpers/requestInfo.ts +59 -39
  889. package/plugin/helpers/resolveComponents.client.ts +183 -0
  890. package/plugin/helpers/resolveModuleFromManifest.ts +99 -0
  891. package/plugin/helpers/resolvePageAndProps.ts +237 -50
  892. package/plugin/helpers/resolveRenderUrl.ts +26 -0
  893. package/plugin/helpers/resolveStreamElements.client.ts +50 -0
  894. package/plugin/helpers/resolveStreamElements.server.ts +43 -0
  895. package/plugin/helpers/resolveStreamElements.ts +13 -0
  896. package/plugin/helpers/resolveStreamElements.types.ts +29 -0
  897. package/plugin/helpers/resolveVirtualAndNodeModules.ts +75 -0
  898. package/plugin/helpers/resolveWithDefaultRootAndHtml.ts +25 -0
  899. package/plugin/helpers/serializeUserOptions.ts +37 -15
  900. package/plugin/helpers/tryManifest.ts +15 -6
  901. package/plugin/helpers/validateRscRenderMessage.ts +13 -0
  902. package/plugin/helpers/workerCleanup.ts +85 -0
  903. package/plugin/helpers/workerManager.ts +16 -0
  904. package/plugin/index.ts +6 -2
  905. package/plugin/loader/createDefaultLoader.ts +0 -21
  906. package/plugin/loader/createTransformer.ts +232 -46
  907. package/plugin/loader/directives/analyzeDirectives.ts +163 -73
  908. package/plugin/loader/directives/analyzeModule.ts +46 -19
  909. package/plugin/loader/env-loader.ts +56 -14
  910. package/plugin/loader/parse.ts +2 -2
  911. package/plugin/loader/react-loader.ts +133 -85
  912. package/plugin/loader/transformClientModule.ts +84 -26
  913. package/plugin/loader/transformModule.ts +103 -18
  914. package/plugin/loader/transformModuleIfNeeded.ts +20 -23
  915. package/plugin/loader/transformNonServerEnvironment.ts +103 -0
  916. package/plugin/loader/transformServerModule.ts +132 -37
  917. package/plugin/loader/types.ts +31 -23
  918. package/plugin/metrics/collectStreamMetrics.ts +1 -2
  919. package/plugin/metrics/convertStreamMetrics.ts +28 -0
  920. package/plugin/metrics/createModuleResolutionMetrics.ts +38 -0
  921. package/plugin/metrics/createRenderMetrics.ts +46 -13
  922. package/plugin/metrics/createStreamMetrics.ts +16 -6
  923. package/plugin/metrics/createWorkerStartupMetrics.ts +38 -0
  924. package/plugin/metrics/formatMetrics.ts +5 -33
  925. package/plugin/metrics/index.ts +6 -3
  926. package/plugin/metrics/metricWatcher.ts +216 -0
  927. package/plugin/metrics/types.ts +87 -8
  928. package/plugin/orchestrator/createPluginOrchestrator.client.ts +47 -0
  929. package/plugin/orchestrator/createPluginOrchestrator.server.ts +55 -0
  930. package/plugin/orchestrator/createPluginOrchestrator.ts +29 -0
  931. package/plugin/orchestrator/index.ts +1 -0
  932. package/plugin/orchestrator/resolveStrategy.ts +53 -0
  933. package/plugin/orchestrator/types.ts +24 -0
  934. package/plugin/plugin.client.ts +30 -32
  935. package/plugin/plugin.server.ts +38 -45
  936. package/plugin/plugin.ts +8 -2
  937. package/plugin/process-env.ts +30 -6
  938. package/plugin/react-client/createMessageHandlers.ts +9 -34
  939. package/plugin/react-client/index.client.ts +1 -0
  940. package/plugin/react-client/index.server.ts +1 -0
  941. package/plugin/react-client/index.ts +13 -4
  942. package/plugin/react-client/plugin.client.ts +124 -0
  943. package/plugin/react-client/plugin.server.ts +108 -0
  944. package/plugin/react-client/plugin.ts +13 -152
  945. package/plugin/react-client/types.ts +95 -0
  946. package/plugin/react-server/index.client.ts +1 -0
  947. package/plugin/react-server/index.server.ts +1 -0
  948. package/plugin/react-server/index.ts +13 -1
  949. package/plugin/react-server/plugin.client.ts +54 -0
  950. package/plugin/react-server/plugin.server.ts +27 -0
  951. package/plugin/react-server/plugin.ts +8 -183
  952. package/plugin/react-server/types.ts +24 -0
  953. package/plugin/react-static/collectHtmlContent.ts +131 -0
  954. package/plugin/react-static/collectRscContent.ts +92 -49
  955. package/plugin/react-static/configurePreviewServer.ts +20 -41
  956. package/plugin/react-static/createBuildLoader.client.ts +7 -0
  957. package/plugin/react-static/createBuildLoader.server.ts +333 -0
  958. package/plugin/react-static/createBuildLoader.ts +8 -300
  959. package/plugin/react-static/fileWriter.ts +303 -64
  960. package/plugin/react-static/index.client.ts +6 -0
  961. package/plugin/react-static/index.server.ts +6 -0
  962. package/plugin/react-static/index.ts +25 -1
  963. package/plugin/react-static/plugin.client.ts +932 -0
  964. package/plugin/react-static/plugin.server.ts +713 -0
  965. package/plugin/react-static/plugin.ts +8 -446
  966. package/plugin/react-static/processCssFilesForPages.ts +148 -0
  967. package/plugin/react-static/renderPage.client.ts +640 -0
  968. package/plugin/react-static/renderPage.server.ts +655 -0
  969. package/plugin/react-static/renderPage.ts +10 -172
  970. package/plugin/react-static/renderPages.ts +736 -139
  971. package/plugin/react-static/renderPagesBatched.ts +264 -0
  972. package/plugin/react-static/renderStreams.ts +12 -16
  973. package/plugin/react-static/rscToHtmlStream.client.ts +61 -0
  974. package/plugin/react-static/rscToHtmlStream.server.ts +66 -0
  975. package/plugin/react-static/rscToHtmlStream.ts +8 -80
  976. package/plugin/react-static/temporaryReferences.client.ts +1 -0
  977. package/plugin/react-static/temporaryReferences.server.ts +5 -0
  978. package/plugin/react-static/temporaryReferences.ts +11 -2
  979. package/plugin/react-static/types.ts +202 -8
  980. package/plugin/root.ts +1 -3
  981. package/plugin/stream/MessagePortReadable.ts +131 -0
  982. package/plugin/stream/MessagePortWritable.ts +104 -0
  983. package/plugin/stream/createFromNodeStream.client.ts +90 -0
  984. package/plugin/stream/createFromNodeStream.server.ts +30 -0
  985. package/plugin/stream/createFromNodeStream.ts +13 -0
  986. package/plugin/stream/createFromNodeStream.types.ts +53 -0
  987. package/plugin/stream/createHtmlStream.client.ts +47 -0
  988. package/plugin/stream/createHtmlStream.server.ts +312 -0
  989. package/plugin/stream/createHtmlStream.ts +13 -0
  990. package/plugin/stream/createHtmlStream.types.ts +63 -0
  991. package/plugin/stream/createMainThreadHandlers.ts +44 -0
  992. package/plugin/stream/createMessageChannels.ts +52 -0
  993. package/plugin/stream/createRenderToPipeableStreamHandler.client.ts +224 -0
  994. package/plugin/stream/createRenderToPipeableStreamHandler.server.ts +358 -0
  995. package/plugin/stream/createRenderToPipeableStreamHandler.ts +13 -0
  996. package/plugin/stream/createRenderToPipeableStreamHandler.types.ts +69 -0
  997. package/plugin/stream/createRscStream.client.ts +122 -0
  998. package/plugin/stream/createRscStream.server.ts +188 -0
  999. package/plugin/stream/createRscStream.ts +8 -0
  1000. package/plugin/stream/createRscStream.types.ts +168 -0
  1001. package/plugin/stream/createRscStream.utils.ts +171 -0
  1002. package/plugin/stream/createRscWorkerStream.ts +178 -0
  1003. package/plugin/stream/handleRscStream.client.ts +214 -0
  1004. package/plugin/stream/handleRscStream.server.ts +82 -0
  1005. package/plugin/stream/handleRscStream.ts +11 -0
  1006. package/plugin/stream/handleRscStream.types.ts +70 -0
  1007. package/plugin/stream/index.client.ts +15 -0
  1008. package/plugin/stream/index.server.ts +15 -0
  1009. package/plugin/stream/index.ts +137 -0
  1010. package/plugin/stream/renderRscStream.server.ts +182 -0
  1011. package/plugin/stream/renderRscStream.types.ts +43 -0
  1012. package/plugin/stream/renderRscStreamHelpers.server.ts +88 -0
  1013. package/plugin/stream/setMaxListeners.ts +30 -0
  1014. package/plugin/transformer/README.md +2 -381
  1015. package/plugin/transformer/createTransformerPlugin.ts +388 -0
  1016. package/plugin/transformer/plugin.client.ts +7 -0
  1017. package/plugin/transformer/plugin.server.ts +6 -140
  1018. package/plugin/transformer/transformerEnv.ts +49 -0
  1019. package/plugin/types/react-server-dom-esm.d.ts +269 -110
  1020. package/plugin/types/virtual-rsc-hmr.d.ts +21 -0
  1021. package/plugin/types.ts +637 -225
  1022. package/plugin/utils/createCallServer.ts +8 -18
  1023. package/plugin/utils/createReactFetcher.ts +87 -5
  1024. package/plugin/utils/env.ts +1 -1
  1025. package/plugin/utils/envUrls.node.ts +15 -10
  1026. package/plugin/utils/index.client.ts +8 -0
  1027. package/plugin/utils/index.server.ts +8 -0
  1028. package/plugin/utils/index.ts +5 -1
  1029. package/plugin/utils/routeToURL.ts +3 -4
  1030. package/plugin/utils/urls.ts +41 -9
  1031. package/plugin/utils/useRscHmr.ts +72 -0
  1032. package/plugin/vendor/vendor.client.ts +9 -7
  1033. package/plugin/vendor/vendor.server.ts +5 -4
  1034. package/plugin/vendor/vendor.static.ts +12 -0
  1035. package/plugin/vendor/vendor.ts +10 -5
  1036. package/plugin/worker/createWorker.ts +283 -41
  1037. package/plugin/worker/html/README.md +2 -65
  1038. package/plugin/worker/html/handleHtmlRender.ts +245 -0
  1039. package/plugin/worker/html/html-worker.development.tsx +5 -17
  1040. package/plugin/worker/html/html-worker.production.tsx +1 -1
  1041. package/plugin/worker/html/html-worker.ts +5 -5
  1042. package/plugin/worker/html/index.ts +6 -6
  1043. package/plugin/worker/html/messageHandler.tsx +317 -98
  1044. package/plugin/worker/html/state.ts +38 -0
  1045. package/plugin/worker/html/types.ts +108 -35
  1046. package/plugin/worker/rsc/README.md +2 -257
  1047. package/plugin/worker/rsc/createBundleLoader.ts +92 -0
  1048. package/plugin/worker/rsc/createRscWorkerLoader.ts +104 -0
  1049. package/plugin/worker/rsc/handleRscRender.ts +510 -0
  1050. package/plugin/worker/rsc/handlers.ts +159 -238
  1051. package/plugin/worker/rsc/hydrateRscRenderMessage.ts +118 -0
  1052. package/plugin/worker/rsc/messageHandler.tsx +1289 -56
  1053. package/plugin/worker/rsc/rsc-worker.development.ts +198 -185
  1054. package/plugin/worker/rsc/rsc-worker.production.ts +306 -21
  1055. package/plugin/worker/rsc/rsc-worker.tsx +3 -5
  1056. package/plugin/worker/rsc/state.ts +54 -2
  1057. package/plugin/worker/rsc/types.ts +110 -32
  1058. package/plugin/worker/rsc/workerUserOptions.ts +63 -0
  1059. package/plugin/worker/sendMessage.ts +33 -53
  1060. package/plugin/worker/types.ts +94 -91
  1061. package/scripts/generate-toc.mjs +311 -0
  1062. package/scripts/remove-toc.mjs +51 -0
  1063. package/scripts/test-both.sh +82 -0
  1064. package/dist/plugin/config/resolveDevServerConfig.d.ts +0 -2
  1065. package/dist/plugin/config/resolveDevServerConfig.d.ts.map +0 -1
  1066. package/dist/plugin/getNodeEnv.d.ts.map +0 -1
  1067. package/dist/plugin/getNodeEnv.js +0 -17
  1068. package/dist/plugin/helpers/collectBundleManifestCss.d.ts +0 -2
  1069. package/dist/plugin/helpers/collectBundleManifestCss.d.ts.map +0 -1
  1070. package/dist/plugin/helpers/collectBundleManifestCss.js +0 -2
  1071. package/dist/plugin/helpers/createEventHandler.d.ts +0 -22
  1072. package/dist/plugin/helpers/createEventHandler.d.ts.map +0 -1
  1073. package/dist/plugin/helpers/createEventHandler.js +0 -36
  1074. package/dist/plugin/helpers/createHandler.d.ts +0 -14
  1075. package/dist/plugin/helpers/createHandler.d.ts.map +0 -1
  1076. package/dist/plugin/helpers/createHandler.js +0 -75
  1077. package/dist/plugin/helpers/createRscStream.d.ts +0 -26
  1078. package/dist/plugin/helpers/createRscStream.d.ts.map +0 -1
  1079. package/dist/plugin/helpers/createRscStream.js +0 -174
  1080. package/dist/plugin/helpers/defaultFileWriter.d.ts +0 -2
  1081. package/dist/plugin/helpers/defaultFileWriter.d.ts.map +0 -1
  1082. package/dist/plugin/helpers/resolveComponents.d.ts +0 -27
  1083. package/dist/plugin/helpers/resolveComponents.d.ts.map +0 -1
  1084. package/dist/plugin/helpers/resolveComponents.js +0 -137
  1085. package/dist/plugin/helpers/resolveUserComponents.d.ts +0 -33
  1086. package/dist/plugin/helpers/resolveUserComponents.d.ts.map +0 -1
  1087. package/dist/plugin/helpers/resolveUserComponents.js +0 -163
  1088. package/dist/plugin/preserver/index.d.ts +0 -2
  1089. package/dist/plugin/preserver/index.d.ts.map +0 -1
  1090. package/dist/plugin/preserver/index.js +0 -1
  1091. package/dist/plugin/preserver/plugin.d.ts +0 -3
  1092. package/dist/plugin/preserver/plugin.d.ts.map +0 -1
  1093. package/dist/plugin/preserver/plugin.js +0 -134
  1094. package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts +0 -11
  1095. package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts.map +0 -1
  1096. package/dist/plugin/react-client/cleanupWorkerServerAction.js +0 -18
  1097. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts +0 -17
  1098. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +0 -1
  1099. package/dist/plugin/react-client/configureWorkerRequestHandler.js +0 -209
  1100. package/dist/plugin/react-client/createWorkerStream.d.ts +0 -26
  1101. package/dist/plugin/react-client/createWorkerStream.d.ts.map +0 -1
  1102. package/dist/plugin/react-client/createWorkerStream.js +0 -163
  1103. package/dist/plugin/react-client/handleWorkerRscStream.d.ts +0 -24
  1104. package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +0 -1
  1105. package/dist/plugin/react-client/handleWorkerRscStream.js +0 -99
  1106. package/dist/plugin/react-client/handleWorkerServerAction.d.ts +0 -13
  1107. package/dist/plugin/react-client/handleWorkerServerAction.d.ts.map +0 -1
  1108. package/dist/plugin/react-client/handleWorkerServerAction.js +0 -62
  1109. package/dist/plugin/react-client/restartWorker.d.ts +0 -12
  1110. package/dist/plugin/react-client/restartWorker.d.ts.map +0 -1
  1111. package/dist/plugin/react-client/restartWorker.js +0 -70
  1112. package/dist/plugin/react-server/configureReactServer.d.ts +0 -10
  1113. package/dist/plugin/react-server/configureReactServer.d.ts.map +0 -1
  1114. package/dist/plugin/react-server/configureReactServer.js +0 -205
  1115. package/dist/plugin/react-server/handleServerAction.d.ts +0 -6
  1116. package/dist/plugin/react-server/handleServerAction.d.ts.map +0 -1
  1117. package/dist/plugin/react-server/handleServerAction.js +0 -159
  1118. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +0 -25
  1119. package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +0 -1
  1120. package/dist/plugin/react-static/collectHtmlWorkerContent.js +0 -94
  1121. package/dist/plugin/react-static/streamHandler.d.ts +0 -2
  1122. package/dist/plugin/react-static/streamHandler.d.ts.map +0 -1
  1123. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts +0 -12
  1124. package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +0 -1
  1125. package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +0 -130
  1126. package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts +0 -3
  1127. package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts.map +0 -1
  1128. package/dist/plugin/worker/html/sendHtmlWorkerMessage.js +0 -2
  1129. package/dist/plugin/worker/rsc/handleRender.d.ts +0 -5
  1130. package/dist/plugin/worker/rsc/handleRender.d.ts.map +0 -1
  1131. package/dist/plugin/worker/rsc/handleRender.js +0 -140
  1132. package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts +0 -3
  1133. package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts.map +0 -1
  1134. package/dist/plugin/worker/rsc/sendRscWorkerMessage.js +0 -11
  1135. package/dist/plugin/worker/rsc/userOptions.d.ts +0 -2
  1136. package/dist/plugin/worker/rsc/userOptions.d.ts.map +0 -1
  1137. package/dist/plugin/worker/rsc/userOptions.js +0 -16
  1138. package/plugin/helpers/collectBundleManifestCss.ts +0 -1
  1139. package/plugin/helpers/createEventHandler.ts +0 -44
  1140. package/plugin/helpers/createHandler.ts +0 -97
  1141. package/plugin/helpers/createRscStream.tsx +0 -221
  1142. package/plugin/helpers/defaultFileWriter.ts +0 -0
  1143. package/plugin/helpers/resolveComponents.ts +0 -185
  1144. package/plugin/helpers/resolveUserComponents.ts +0 -190
  1145. package/plugin/preserver/index.ts +0 -1
  1146. package/plugin/preserver/plugin.ts +0 -178
  1147. package/plugin/react-client/cleanupWorkerServerAction.ts +0 -33
  1148. package/plugin/react-client/configureWorkerRequestHandler.ts +0 -255
  1149. package/plugin/react-client/createWorkerStream.ts +0 -210
  1150. package/plugin/react-client/handleWorkerRscStream.ts +0 -156
  1151. package/plugin/react-client/handleWorkerServerAction.ts +0 -96
  1152. package/plugin/react-client/restartWorker.ts +0 -91
  1153. package/plugin/react-server/configureReactServer.ts +0 -231
  1154. package/plugin/react-server/handleServerAction.ts +0 -192
  1155. package/plugin/react-static/collectHtmlWorkerContent.ts +0 -147
  1156. package/plugin/react-static/streamHandler.ts +0 -0
  1157. package/plugin/worker/html/createHtmlWorkerRenderState.tsx +0 -142
  1158. package/plugin/worker/html/sendHtmlWorkerMessage.ts +0 -8
  1159. package/plugin/worker/rsc/handleRender.ts +0 -175
  1160. package/plugin/worker/rsc/sendRscWorkerMessage.ts +0 -7
  1161. package/plugin/worker/rsc/userOptions.ts +0 -7
  1162. /package/dist/plugin/config/{resolveDevServerConfig.js → createHandlerOptions.types.js} +0 -0
  1163. /package/dist/plugin/{helpers/defaultFileWriter.js → dev-server/types.js} +0 -0
  1164. /package/dist/plugin/{react-static/streamHandler.js → error/types.js} +0 -0
  1165. /package/plugin/{config/resolveDevServerConfig.tsx → worker/worker-handlers.server.ts} +0 -0
@@ -4,23 +4,41 @@
4
4
  * MIT License
5
5
  */
6
6
  import { transformModule } from './transformModule.js';
7
+ import { transformNonServerEnvironment } from './transformNonServerEnvironment.js';
7
8
  import { isReactServerCondition } from '../config/getCondition.js';
8
- import { parse } from './parse.js';
9
9
  import { analyzeModule } from './directives/analyzeModule.js';
10
10
  import { findDirectiveMatches } from './directives/findDirectiveMatches.js';
11
- import { getNodeEnv } from '../getNodeEnv.js';
12
11
  import { DEFAULT_LOADER_CONFIG } from '../config/defaults.js';
12
+ import { getNodeEnv } from '../config/getNodeEnv.js';
13
+ import { createLogger } from 'vite';
14
+ import pkg from 'picocolors';
13
15
 
16
+ const { red, underline } = pkg;
14
17
  const createTransformer = ({
15
- parseFn = parse,
16
18
  options,
17
19
  forceServerFunction = void 0,
18
20
  forceClientComponent = void 0,
19
21
  isServerEnvironment = isReactServerCondition()
20
22
  }) => {
21
- return async (source, moduleId) => {
22
- if (options.verbose) {
23
- console.log(`[createTransformer] Loading: ${moduleId}`);
23
+ const {
24
+ verbose,
25
+ logger = createLogger(),
26
+ loader = DEFAULT_LOADER_CONFIG
27
+ } = options;
28
+ const explicitForceServerFunction = forceServerFunction !== void 0;
29
+ const explicitForceClientComponent = forceClientComponent !== void 0;
30
+ const initialForceServerFunction = forceServerFunction;
31
+ const initialForceClientComponent = forceClientComponent;
32
+ return async (source, moduleId, transformedModuleId = loader?.moduleID?.(moduleId) ?? moduleId) => {
33
+ forceServerFunction = initialForceServerFunction;
34
+ forceClientComponent = initialForceClientComponent;
35
+ if (verbose) {
36
+ logger.info(`[createTransformer] moduleID function called: ${moduleId} -> ${transformedModuleId}`);
37
+ }
38
+ if (verbose && moduleId.includes("client")) {
39
+ logger.info(
40
+ `[createTransformer:${isServerEnvironment ? "server" : "client"}] Loading: ${moduleId}`
41
+ );
24
42
  }
25
43
  const matches = findDirectiveMatches(source);
26
44
  const hasServerDirective = matches.matches.some(
@@ -30,17 +48,108 @@ const createTransformer = ({
30
48
  (m) => m.type === "client"
31
49
  );
32
50
  if (hasClientDirective === false && hasServerDirective === false) {
33
- return { code: source, map: null };
34
- }
35
- if (isServerEnvironment === false && hasServerDirective) {
36
- console.warn(
37
- "You likely don't want to use createTransformer in the client environment."
38
- );
51
+ if (isServerEnvironment && loader?.isClientComponentByName?.(moduleId, transformedModuleId)) {
52
+ if (verbose) {
53
+ logger.info(
54
+ `[createTransformer:server] Transforming client file without directive: ${moduleId}`
55
+ );
56
+ }
57
+ forceClientComponent = true;
58
+ } else if (!isServerEnvironment && !hasClientDirective && !hasServerDirective && !loader?.isClientComponentByName?.(moduleId, transformedModuleId) && !moduleId.includes("node_modules")) {
59
+ if (verbose) {
60
+ logger.info(
61
+ `[createTransformer:non-server] Hiding server component in non-server environment: ${moduleId}`
62
+ );
63
+ }
64
+ return { code: source, map: null };
65
+ } else {
66
+ if (hasClientDirective || hasServerDirective) {
67
+ if (verbose) {
68
+ logger.info(
69
+ `[createTransformer:client] Transforming file with directives: ${moduleId}`
70
+ );
71
+ }
72
+ const parseResult2 = await analyzeModule(source, {
73
+ ...options,
74
+ logger,
75
+ loader
76
+ });
77
+ if (parseResult2.type === "success") {
78
+ const result = await transformNonServerEnvironment(
79
+ source,
80
+ moduleId,
81
+ transformedModuleId,
82
+ parseResult2,
83
+ loader
84
+ );
85
+ if (verbose) {
86
+ logger.info(
87
+ `[createTransformer:client] Transformed result for ${moduleId}: ${result.code.substring(
88
+ 0,
89
+ 100
90
+ )}`
91
+ );
92
+ }
93
+ return result;
94
+ }
95
+ } else {
96
+ if (loader?.isClientComponentByName?.(moduleId, transformedModuleId)) {
97
+ if (verbose) {
98
+ logger.info(
99
+ `[createTransformer:client] Transforming client component without directives: ${moduleId}`
100
+ );
101
+ }
102
+ const parseResult2 = await analyzeModule(source, {
103
+ ...options,
104
+ logger,
105
+ loader
106
+ });
107
+ if (parseResult2.type === "success") {
108
+ const result = await transformNonServerEnvironment(
109
+ source,
110
+ moduleId,
111
+ transformedModuleId,
112
+ parseResult2,
113
+ loader
114
+ );
115
+ if (verbose) {
116
+ logger.info(
117
+ `[createTransformer:client] Transformed result for ${moduleId}: ${result.code.substring(
118
+ 0,
119
+ 100
120
+ )}`
121
+ );
122
+ }
123
+ return result;
124
+ }
125
+ }
126
+ }
127
+ return { code: source, map: null };
128
+ }
129
+ } else {
130
+ if (hasClientDirective) {
131
+ forceClientComponent = true;
132
+ }
133
+ if (hasServerDirective) {
134
+ forceServerFunction = true;
135
+ }
136
+ if (isServerEnvironment && forceClientComponent) {
137
+ const isAlreadyTransformed = source.includes(
138
+ options?.loader?.registerClientReferenceName ?? "registerClientReference"
139
+ );
140
+ if (isAlreadyTransformed) {
141
+ logger.warn(
142
+ `[createTransformer] File already transformed ${moduleId}. This call was not needed.`
143
+ );
144
+ return { code: source, map: null };
145
+ }
146
+ }
39
147
  }
40
148
  const parseResult = await analyzeModule(source, {
41
149
  ...options,
42
- loader: options.loader ?? DEFAULT_LOADER_CONFIG
43
- }, parseFn);
150
+ logger,
151
+ loader
152
+ });
44
153
  if (parseResult.directiveInfo && parseResult.directiveInfo.warnings.length > 0) {
45
154
  const isProduction = getNodeEnv() === "production";
46
155
  for (const warning of parseResult.directiveInfo.warnings) {
@@ -49,30 +158,37 @@ const createTransformer = ({
49
158
  const [start, end] = warning.range;
50
159
  const lines = source.split("\n");
51
160
  const startLine = source.slice(0, start).split("\n").length;
52
- console.warn(`Warning: ${warning.message}`);
161
+ logger.warn(`Warning: ${warning.message}`);
53
162
  const contextLines = 2;
54
163
  const minLine = Math.max(1, startLine - contextLines);
55
164
  const maxLine = Math.min(lines.length, startLine + contextLines);
56
- console.warn("");
57
165
  for (let i = minLine; i <= maxLine; i++) {
58
166
  const lineNum = i.toString().padStart(3, " ");
59
167
  const isErrorLine = i === startLine;
60
168
  const prefix = isErrorLine ? ">" : " ";
61
169
  const line = lines[i - 1] || "";
62
170
  if (isErrorLine) {
63
- console.warn(`${prefix} ${lineNum} | ${line}`);
64
171
  const lineStart = source.lastIndexOf("\n", start - 1) + 1;
65
172
  const columnPos = Math.max(0, start - lineStart);
66
173
  const directiveLength = Math.max(1, end - start);
67
- const pointer = " ".repeat(7 + columnPos) + "^".repeat(directiveLength);
68
- console.warn(` ${pointer}`);
69
- } else {
70
- console.warn(` ${lineNum} | ${line}`);
174
+ const beforeDirective = line.slice(0, columnPos);
175
+ const directiveText = line.slice(
176
+ columnPos,
177
+ columnPos + directiveLength
178
+ );
179
+ const afterDirective = line.slice(columnPos + directiveLength);
180
+ logger.warn(
181
+ `${prefix} ${lineNum} | ${beforeDirective}${red(
182
+ underline(directiveText)
183
+ )}${afterDirective}`
184
+ );
185
+ } else if (line.trim() !== "") {
186
+ logger.warn(` ${lineNum} | ${line}`);
71
187
  }
72
188
  }
73
- console.warn("");
189
+ logger.warn("");
74
190
  if (options.verbose) {
75
- console.warn(` range: [${start}, ${end}]`);
191
+ logger.warn(` range: [${start}, ${end}]`);
76
192
  }
77
193
  } else {
78
194
  throw new Error(warning.message);
@@ -82,16 +198,25 @@ const createTransformer = ({
82
198
  if (parseResult.type !== "success") {
83
199
  return { code: source, map: null };
84
200
  }
85
- return await transformModule(source, moduleId, parseResult, {
86
- forceServerFunction: forceServerFunction ?? hasServerDirective,
87
- forceClientComponent: forceClientComponent ?? hasClientDirective,
88
- loader: options.loader,
89
- directiveWarnings: parseResult.directiveInfo.warnings,
90
- verbose: options.verbose || false,
91
- panicThreshold: options.panicThreshold || "none"
92
- });
201
+ const finalForceServerFunction = isServerEnvironment ? forceServerFunction ?? hasServerDirective : explicitForceServerFunction ? forceServerFunction : void 0;
202
+ const finalForceClientComponent = isServerEnvironment ? forceClientComponent ?? hasClientDirective : explicitForceClientComponent ? forceClientComponent : void 0;
203
+ return await transformModule(
204
+ source,
205
+ moduleId,
206
+ transformedModuleId,
207
+ parseResult,
208
+ {
209
+ forceServerFunction: finalForceServerFunction,
210
+ forceClientComponent: finalForceClientComponent,
211
+ isServerEnvironment,
212
+ loader: options.loader,
213
+ directiveWarnings: parseResult.directiveInfo.warnings,
214
+ verbose: options.verbose || false,
215
+ panicThreshold: options.panicThreshold || "none"
216
+ }
217
+ );
93
218
  };
94
219
  };
95
220
 
96
221
  export { createTransformer };
97
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVHJhbnNmb3JtZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9sb2FkZXIvY3JlYXRlVHJhbnNmb3JtZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJhbnNmb3JtTW9kdWxlIH0gZnJvbSBcIi4vdHJhbnNmb3JtTW9kdWxlLmpzXCI7XG5pbXBvcnQgeyBpc1JlYWN0U2VydmVyQ29uZGl0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRDb25kaXRpb24uanNcIjtcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIi4vcGFyc2UuanNcIjtcbmltcG9ydCB7IGFuYWx5emVNb2R1bGUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2FuYWx5emVNb2R1bGUuanNcIjtcbmltcG9ydCB7IGZpbmREaXJlY3RpdmVNYXRjaGVzIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy9maW5kRGlyZWN0aXZlTWF0Y2hlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVNYXRjaCB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtZXJGYWN0b3J5LCBUcmFuc2Zvcm1SZXN1bHQgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgZ2V0Tm9kZUVudiB9IGZyb20gXCIuLi9nZXROb2RlRW52LmpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0xPQURFUl9DT05GSUcgfSBmcm9tIFwiLi4vY29uZmlnL2RlZmF1bHRzLmpzXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRyYW5zZm9ybWVyIHRoYXQgaGFuZGxlcyBSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cyAoUlNDKSBib3VuZGFyaWVzLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlVHJhbnNmb3JtZXI6IFRyYW5zZm9ybWVyRmFjdG9yeSA9ICh7XG4gIHBhcnNlRm4gPSBwYXJzZSxcbiAgb3B0aW9ucyxcbiAgZm9yY2VTZXJ2ZXJGdW5jdGlvbiA9IHVuZGVmaW5lZCxcbiAgZm9yY2VDbGllbnRDb21wb25lbnQgPSB1bmRlZmluZWQsXG4gIGlzU2VydmVyRW52aXJvbm1lbnQgPSBpc1JlYWN0U2VydmVyQ29uZGl0aW9uKCksXG59KSA9PiB7XG4gIHJldHVybiBhc3luYyAoc291cmNlOiBzdHJpbmcsIG1vZHVsZUlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zZm9ybVJlc3VsdD4gPT4ge1xuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbY3JlYXRlVHJhbnNmb3JtZXJdIExvYWRpbmc6ICR7bW9kdWxlSWR9YCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdC1wYXRoOiBza2lwIHBhcnNpbmcgYW5kIHRyYW5zZm9ybWF0aW9uIGlmIG5vIGRpcmVjdGl2ZXMgYXJlIHByZXNlbnRcbiAgICBjb25zdCBtYXRjaGVzID0gZmluZERpcmVjdGl2ZU1hdGNoZXMoc291cmNlKTtcbiAgICBjb25zdCBoYXNTZXJ2ZXJEaXJlY3RpdmUgPSBtYXRjaGVzLm1hdGNoZXMuc29tZShcbiAgICAgIChtOiBEaXJlY3RpdmVNYXRjaCkgPT4gbS50eXBlID09PSBcInNlcnZlclwiXG4gICAgKTtcbiAgICBjb25zdCBoYXNDbGllbnREaXJlY3RpdmUgPSBtYXRjaGVzLm1hdGNoZXMuc29tZShcbiAgICAgIChtOiBEaXJlY3RpdmVNYXRjaCkgPT4gbS50eXBlID09PSBcImNsaWVudFwiXG4gICAgKTtcblxuICAgIGlmIChoYXNDbGllbnREaXJlY3RpdmUgPT09IGZhbHNlICYmIGhhc1NlcnZlckRpcmVjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB7IGNvZGU6IHNvdXJjZSwgbWFwOiBudWxsIH07XG4gICAgfVxuXG4gICAgaWYgKGlzU2VydmVyRW52aXJvbm1lbnQgPT09IGZhbHNlICYmIGhhc1NlcnZlckRpcmVjdGl2ZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIllvdSBsaWtlbHkgZG9uJ3Qgd2FudCB0byB1c2UgY3JlYXRlVHJhbnNmb3JtZXIgaW4gdGhlIGNsaWVudCBlbnZpcm9ubWVudC5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBVc2UgYW5hbHl6ZU1vZHVsZSB0byBnZXQgdGhlIGZ1bGwgcGFyc2UgcmVzdWx0LCBwYXNzaW5nIHRoZSBjdXN0b20gcGFyc2VGblxuICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gYXdhaXQgYW5hbHl6ZU1vZHVsZShzb3VyY2UsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBsb2FkZXI6IG9wdGlvbnMubG9hZGVyID8/IERFRkFVTFRfTE9BREVSX0NPTkZJRyxcbiAgICB9LCBwYXJzZUZuKTtcbiAgICBpZiAoXG4gICAgICBwYXJzZVJlc3VsdC5kaXJlY3RpdmVJbmZvICYmXG4gICAgICBwYXJzZVJlc3VsdC5kaXJlY3RpdmVJbmZvLndhcm5pbmdzLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGdldE5vZGVFbnYoKSA9PT0gXCJwcm9kdWN0aW9uXCI7XG5cbiAgICAgIC8vIEhhbmRsZSBkaXJlY3RpdmUgZXJyb3JzIChjYW4gYmUgZG93bmdyYWRlZCB0byB3YXJuaW5ncyBiYXNlZCBvbiBwYW5pY1RocmVzaG9sZClcbiAgICAgIGZvciAoY29uc3Qgd2FybmluZyBvZiBwYXJzZVJlc3VsdC5kaXJlY3RpdmVJbmZvLndhcm5pbmdzKSB7XG4gICAgICAgIGNvbnN0IHNob3VsZERvd25ncmFkZVRvV2FybmluZyA9ICFpc1Byb2R1Y3Rpb24gJiYgb3B0aW9ucy5wYW5pY1RocmVzaG9sZCA9PT0gJ25vbmUnO1xuICAgICAgICAgIFxuICAgICAgICBpZiAoc2hvdWxkRG93bmdyYWRlVG9XYXJuaW5nKSB7XG4gICAgICAgICAgLy8gRG93bmdyYWRlIGVycm9yIHRvIHdhcm5pbmcgaW4gZGV2ZWxvcG1lbnQgd2hlbiBwYW5pY1RocmVzaG9sZCBpcyAnbm9uZSdcbiAgICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSB3YXJuaW5nLnJhbmdlO1xuICAgICAgICAgIGNvbnN0IGxpbmVzID0gc291cmNlLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICBjb25zdCBzdGFydExpbmUgPSBzb3VyY2Uuc2xpY2UoMCwgc3RhcnQpLnNwbGl0KCdcXG4nKS5sZW5ndGg7XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiAke3dhcm5pbmcubWVzc2FnZX1gKTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBTaG93IGRvY3VtZW50IHByZXZpZXcgd2l0aCBsaW5lIG51bWJlcnNcbiAgICAgICAgICBjb25zdCBjb250ZXh0TGluZXMgPSAyOyAvLyBTaG93IDIgbGluZXMgYmVmb3JlIGFuZCBhZnRlclxuICAgICAgICAgIGNvbnN0IG1pbkxpbmUgPSBNYXRoLm1heCgxLCBzdGFydExpbmUgLSBjb250ZXh0TGluZXMpO1xuICAgICAgICAgIGNvbnN0IG1heExpbmUgPSBNYXRoLm1pbihsaW5lcy5sZW5ndGgsIHN0YXJ0TGluZSArIGNvbnRleHRMaW5lcyk7XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc29sZS53YXJuKCcnKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gbWluTGluZTsgaSA8PSBtYXhMaW5lOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVOdW0gPSBpLnRvU3RyaW5nKCkucGFkU3RhcnQoMywgJyAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRXJyb3JMaW5lID0gaSA9PT0gc3RhcnRMaW5lO1xuICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gaXNFcnJvckxpbmUgPyAnPicgOiAnICc7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbaSAtIDFdIHx8ICcnO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoaXNFcnJvckxpbmUpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGAke3ByZWZpeH0gJHtsaW5lTnVtfSB8ICR7bGluZX1gKTtcbiAgICAgICAgICAgICAgLy8gU2hvdyBwb2ludGVyIHRvIHRoZSBkaXJlY3RpdmVcbiAgICAgICAgICAgICAgY29uc3QgbGluZVN0YXJ0ID0gc291cmNlLmxhc3RJbmRleE9mKCdcXG4nLCBzdGFydCAtIDEpICsgMTtcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uUG9zID0gTWF0aC5tYXgoMCwgc3RhcnQgLSBsaW5lU3RhcnQpO1xuICAgICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVMZW5ndGggPSBNYXRoLm1heCgxLCBlbmQgLSBzdGFydCk7XG4gICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSAnICcucmVwZWF0KDcgKyBjb2x1bW5Qb3MpICsgJ14nLnJlcGVhdChkaXJlY3RpdmVMZW5ndGgpO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCAgJHtwb2ludGVyfWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGAgICR7bGluZU51bX0gfCAke2xpbmV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUud2FybignJyk7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYCAgcmFuZ2U6IFske3N0YXJ0fSwgJHtlbmR9XWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUcmVhdCBhcyBlcnJvciAoZGVmYXVsdCBiZWhhdmlvcikgLSBwYW5pYyBhbmQgc3RvcCBjb21waWxhdGlvblxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih3YXJuaW5nLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXJzZVJlc3VsdC50eXBlICE9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgcmV0dXJuIHsgY29kZTogc291cmNlLCBtYXA6IG51bGwgfTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIG1vZHVsZVxuICAgIHJldHVybiBhd2FpdCB0cmFuc2Zvcm1Nb2R1bGUoc291cmNlLCBtb2R1bGVJZCwgcGFyc2VSZXN1bHQsIHtcbiAgICAgIGZvcmNlU2VydmVyRnVuY3Rpb246IGZvcmNlU2VydmVyRnVuY3Rpb24gPz8gaGFzU2VydmVyRGlyZWN0aXZlLFxuICAgICAgZm9yY2VDbGllbnRDb21wb25lbnQ6IGZvcmNlQ2xpZW50Q29tcG9uZW50ID8/IGhhc0NsaWVudERpcmVjdGl2ZSxcbiAgICAgIGlzU2VydmVyRW52aXJvbm1lbnQsXG4gICAgICBsb2FkZXI6IG9wdGlvbnMubG9hZGVyLFxuICAgICAgZGlyZWN0aXZlV2FybmluZ3M6IHBhcnNlUmVzdWx0LmRpcmVjdGl2ZUluZm8ud2FybmluZ3MsXG4gICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UgfHwgZmFsc2UsXG4gICAgICBwYW5pY1RocmVzaG9sZDogb3B0aW9ucy5wYW5pY1RocmVzaG9sZCB8fCAnbm9uZScsXG4gICAgfSk7XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFhTyxNQUFNLG9CQUF3QyxDQUFDO0FBQUEsRUFDcEQsT0FBVSxHQUFBLEtBQUE7QUFBQSxFQUNWLE9BQUE7QUFBQSxFQUNBLG1CQUFzQixHQUFBLE1BQUE7QUFBQSxFQUN0QixvQkFBdUIsR0FBQSxNQUFBO0FBQUEsRUFDdkIsc0JBQXNCLHNCQUF1QjtBQUMvQyxDQUFNLEtBQUE7QUFDSixFQUFPLE9BQUEsT0FBTyxRQUFnQixRQUErQyxLQUFBO0FBQzNFLElBQUEsSUFBSSxRQUFRLE9BQVMsRUFBQTtBQUNuQixNQUFRLE9BQUEsQ0FBQSxHQUFBLENBQUksQ0FBZ0MsNkJBQUEsRUFBQSxRQUFRLENBQUUsQ0FBQSxDQUFBO0FBQUE7QUFJeEQsSUFBTSxNQUFBLE9BQUEsR0FBVSxxQkFBcUIsTUFBTSxDQUFBO0FBQzNDLElBQU0sTUFBQSxrQkFBQSxHQUFxQixRQUFRLE9BQVEsQ0FBQSxJQUFBO0FBQUEsTUFDekMsQ0FBQyxDQUFz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
222
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVHJhbnNmb3JtZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9sb2FkZXIvY3JlYXRlVHJhbnNmb3JtZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJhbnNmb3JtTW9kdWxlIH0gZnJvbSBcIi4vdHJhbnNmb3JtTW9kdWxlLmpzXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1Ob25TZXJ2ZXJFbnZpcm9ubWVudCB9IGZyb20gXCIuL3RyYW5zZm9ybU5vblNlcnZlckVudmlyb25tZW50LmpzXCI7XG5pbXBvcnQgeyBpc1JlYWN0U2VydmVyQ29uZGl0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRDb25kaXRpb24uanNcIjtcbmltcG9ydCB7IGFuYWx5emVNb2R1bGUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2FuYWx5emVNb2R1bGUuanNcIjtcbmltcG9ydCB7IGZpbmREaXJlY3RpdmVNYXRjaGVzIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy9maW5kRGlyZWN0aXZlTWF0Y2hlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVNYXRjaCB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtZXJGYWN0b3J5LCBUcmFuc2Zvcm1SZXN1bHQgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9MT0FERVJfQ09ORklHIH0gZnJvbSBcIi4uL2NvbmZpZy9kZWZhdWx0cy5qc1wiO1xuaW1wb3J0IHsgZ2V0Tm9kZUVudiB9IGZyb20gXCIuLi9jb25maWcvZ2V0Tm9kZUVudi5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCBwa2cgZnJvbSBcInBpY29jb2xvcnNcIjtcbmNvbnN0IHsgcmVkLCB1bmRlcmxpbmUgfSA9IHBrZztcblxuLyoqXG4gKiBDcmVhdGVzIGEgdHJhbnNmb3JtZXIgdGhhdCBoYW5kbGVzIFJlYWN0IFNlcnZlciBDb21wb25lbnRzIChSU0MpIGJvdW5kYXJpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVUcmFuc2Zvcm1lcjogVHJhbnNmb3JtZXJGYWN0b3J5ID0gKHtcbiAgb3B0aW9ucyxcbiAgZm9yY2VTZXJ2ZXJGdW5jdGlvbiA9IHVuZGVmaW5lZCxcbiAgZm9yY2VDbGllbnRDb21wb25lbnQgPSB1bmRlZmluZWQsXG4gIGlzU2VydmVyRW52aXJvbm1lbnQgPSBpc1JlYWN0U2VydmVyQ29uZGl0aW9uKCksXG59KSA9PiB7XG4gIFxuICBjb25zdCB7XG4gICAgdmVyYm9zZSxcbiAgICBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoKSxcbiAgICBsb2FkZXIgPSBERUZBVUxUX0xPQURFUl9DT05GSUcsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFRyYWNrIGlmIGZvcmNlU2VydmVyRnVuY3Rpb24vZm9yY2VDbGllbnRDb21wb25lbnQgd2VyZSBleHBsaWNpdGx5IHBhc3NlZCAoZm9yIHRlc3RpbmcpXG4gIC8vIHZzIGF1dG8tZGV0ZWN0ZWQgZnJvbSBkaXJlY3RpdmVzIChmb3Igbm9ybWFsIGJ1aWxkcylcbiAgY29uc3QgZXhwbGljaXRGb3JjZVNlcnZlckZ1bmN0aW9uID0gZm9yY2VTZXJ2ZXJGdW5jdGlvbiAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCBleHBsaWNpdEZvcmNlQ2xpZW50Q29tcG9uZW50ID0gZm9yY2VDbGllbnRDb21wb25lbnQgIT09IHVuZGVmaW5lZDtcbiAgXG4gIC8vIFNhdmUgaW5pdGlhbCB2YWx1ZXMgdG8gcmVzZXQgb24gZWFjaCBjYWxsIChjbG9zdXJlIGJ1ZyBmaXgpXG4gIGNvbnN0IGluaXRpYWxGb3JjZVNlcnZlckZ1bmN0aW9uID0gZm9yY2VTZXJ2ZXJGdW5jdGlvbjtcbiAgY29uc3QgaW5pdGlhbEZvcmNlQ2xpZW50Q29tcG9uZW50ID0gZm9yY2VDbGllbnRDb21wb25lbnQ7XG5cbiAgcmV0dXJuIGFzeW5jIChcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBtb2R1bGVJZDogc3RyaW5nLFxuICAgIC8vIGlmIGEgbW9kdWxlSUQgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIHVzZSBpdCB0byBnZXQgdGhlIHRyYW5zZm9ybWVkIG1vZHVsZSBJRCBieSBkZWZhdWx0XG4gICAgLy8gb3RoZXJ3aXNlLCB1c2UgdGhlIG9yaWdpbmFsIG1vZHVsZSBJRFxuICAgIC8vIGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSBhcyBhIHBhcmFtZXRlclxuICAgIHRyYW5zZm9ybWVkTW9kdWxlSWQgPSBsb2FkZXI/Lm1vZHVsZUlEPy4obW9kdWxlSWQpID8/IG1vZHVsZUlkXG4gICk6IFByb21pc2U8VHJhbnNmb3JtUmVzdWx0PiA9PiB7XG4gICAgLy8gUmVzZXQgZmxhZ3MgYXQgc3RhcnQgb2YgZWFjaCBjYWxsIHRvIHByZXZlbnQgY2xvc3VyZSBzdGF0ZSBwb2xsdXRpb25cbiAgICAvLyAoRWFjaCB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgc3RhcnQgZnJlc2gsIG5vdCBpbmhlcml0IHN0YXRlIGZyb20gcHJldmlvdXMgY2FsbHMpXG4gICAgZm9yY2VTZXJ2ZXJGdW5jdGlvbiA9IGluaXRpYWxGb3JjZVNlcnZlckZ1bmN0aW9uO1xuICAgIGZvcmNlQ2xpZW50Q29tcG9uZW50ID0gaW5pdGlhbEZvcmNlQ2xpZW50Q29tcG9uZW50O1xuICAgIFxuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgW2NyZWF0ZVRyYW5zZm9ybWVyXSBtb2R1bGVJRCBmdW5jdGlvbiBjYWxsZWQ6ICR7bW9kdWxlSWR9IC0+ICR7dHJhbnNmb3JtZWRNb2R1bGVJZH1gKTtcbiAgICB9XG4gICAgaWYgKHZlcmJvc2UgJiYgbW9kdWxlSWQuaW5jbHVkZXMoXCJjbGllbnRcIikpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZVRyYW5zZm9ybWVyOiR7XG4gICAgICAgICAgaXNTZXJ2ZXJFbnZpcm9ubWVudCA/IFwic2VydmVyXCIgOiBcImNsaWVudFwiXG4gICAgICAgIH1dIExvYWRpbmc6ICR7bW9kdWxlSWR9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0LXBhdGg6IHNraXAgcGFyc2luZyBhbmQgdHJhbnNmb3JtYXRpb24gaWYgbm8gZGlyZWN0aXZlcyBhcmUgcHJlc2VudFxuICAgIGNvbnN0IG1hdGNoZXMgPSBmaW5kRGlyZWN0aXZlTWF0Y2hlcyhzb3VyY2UpO1xuICAgIGNvbnN0IGhhc1NlcnZlckRpcmVjdGl2ZSA9IG1hdGNoZXMubWF0Y2hlcy5zb21lKFxuICAgICAgKG06IERpcmVjdGl2ZU1hdGNoKSA9PiBtLnR5cGUgPT09IFwic2VydmVyXCJcbiAgICApO1xuICAgIGNvbnN0IGhhc0NsaWVudERpcmVjdGl2ZSA9IG1hdGNoZXMubWF0Y2hlcy5zb21lKFxuICAgICAgKG06IERpcmVjdGl2ZU1hdGNoKSA9PiBtLnR5cGUgPT09IFwiY2xpZW50XCJcbiAgICApO1xuXG4gICAgaWYgKGhhc0NsaWVudERpcmVjdGl2ZSA9PT0gZmFsc2UgJiYgaGFzU2VydmVyRGlyZWN0aXZlID09PSBmYWxzZSkge1xuICAgICAgLy8gRm9yIGZpbGVzIHdpdGhvdXQgZGlyZWN0aXZlcywgaGFuZGxlIGRpZmZlcmVudGx5IGJhc2VkIG9uIGVudmlyb25tZW50XG5cbiAgICAgIGlmIChpc1NlcnZlckVudmlyb25tZW50ICYmIGxvYWRlcj8uaXNDbGllbnRDb21wb25lbnRCeU5hbWU/Lihtb2R1bGVJZCwgdHJhbnNmb3JtZWRNb2R1bGVJZCkpIHtcbiAgICAgICAgLy8gSW4gc2VydmVyIGVudmlyb25tZW50LCBjbGllbnQgY29tcG9uZW50cyB3aXRob3V0IGRpcmVjdGl2ZXMgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIHRvIHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlXG4gICAgICAgIC8vIFRoaXMgaGFuZGxlcyBjYXNlcyB3aGVyZSBjbGllbnQgY29tcG9uZW50cyBkb24ndCBoYXZlIGV4cGxpY2l0IFwidXNlIGNsaWVudFwiIGRpcmVjdGl2ZXNcbiAgICAgICAgLy8gYnV0IGFyZSBpZGVudGlmaWVkIGJ5IGZpbGUgbmFtaW5nIGNvbnZlbnRpb24gKC5jbGllbnQudHN4KVxuICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFtjcmVhdGVUcmFuc2Zvcm1lcjpzZXJ2ZXJdIFRyYW5zZm9ybWluZyBjbGllbnQgZmlsZSB3aXRob3V0IGRpcmVjdGl2ZTogJHttb2R1bGVJZH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgZm9yY2VDbGllbnRDb21wb25lbnQgdG8gdHJ1ZSBmb3IgY2xpZW50IGNvbXBvbmVudHMgaWRlbnRpZmllZCBieSBmaWxlbmFtZVxuICAgICAgICBmb3JjZUNsaWVudENvbXBvbmVudCA9IHRydWU7XG4gICAgICAgIC8vIERvbid0IHJldHVybiBlYXJseSAtIGxldCBpdCBmYWxsIHRocm91Z2ggdG8gdHJhbnNmb3JtTW9kdWxlXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAhaXNTZXJ2ZXJFbnZpcm9ubWVudCAmJlxuICAgICAgICAhaGFzQ2xpZW50RGlyZWN0aXZlICYmXG4gICAgICAgICFoYXNTZXJ2ZXJEaXJlY3RpdmUgJiZcbiAgICAgICAgIWxvYWRlcj8uaXNDbGllbnRDb21wb25lbnRCeU5hbWU/Lihtb2R1bGVJZCwgdHJhbnNmb3JtZWRNb2R1bGVJZCkgJiZcbiAgICAgICAgIW1vZHVsZUlkLmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpXG4gICAgICApIHtcbiAgICAgICAgLy8gSW4gbm9uLXNlcnZlciBlbnZpcm9ubWVudHMsIHNlcnZlciBjb21wb25lbnRzIChtb2R1bGVzIHdpdGhvdXQgY2xpZW50L3NlcnZlciBkaXJlY3RpdmVzIGFuZCBub3QgY2xpZW50IGJ5IG5hbWUpIHNob3VsZCBiZSBoaWRkZW5cbiAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBzZXJ2ZXIgY29tcG9uZW50cyBmcm9tIGJlaW5nIGxvYWRlZCBpbiBjbGllbnQvc3NyIGVudmlyb25tZW50c1xuICAgICAgICAvLyBCdXQgZG9uJ3QgaGlkZSB0aGlyZC1wYXJ0eSBtb2R1bGVzIGZyb20gbm9kZV9tb2R1bGVzIG9yIG1vZHVsZXMgd2l0aCBkaXJlY3RpdmVzXG4gICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgW2NyZWF0ZVRyYW5zZm9ybWVyOm5vbi1zZXJ2ZXJdIEhpZGluZyBzZXJ2ZXIgY29tcG9uZW50IGluIG5vbi1zZXJ2ZXIgZW52aXJvbm1lbnQ6ICR7bW9kdWxlSWR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmV0dXJuIGEgbW9kdWxlIHRoYXQgZXhwb3J0cyBudWxsL3VuZGVmaW5lZCBpbnN0ZWFkIG9mIGVtcHR5IHN0cmluZ1xuICAgICAgICByZXR1cm4geyBjb2RlOiBzb3VyY2UsIG1hcDogbnVsbCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSW4gY2xpZW50L3NzciBlbnZpcm9ubWVudHMsIHdlIG5lZWQgdG8gdHJhbnNmb3JtIHRvIHJlbW92ZSBkaXJlY3RpdmVzXG4gICAgICAgIC8vIGJ1dCB3ZSBkb24ndCB0cmFuc2Zvcm0gdG8gcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2VcbiAgICAgICAgaWYgKGhhc0NsaWVudERpcmVjdGl2ZSB8fCBoYXNTZXJ2ZXJEaXJlY3RpdmUpIHtcbiAgICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgIGBbY3JlYXRlVHJhbnNmb3JtZXI6Y2xpZW50XSBUcmFuc2Zvcm1pbmcgZmlsZSB3aXRoIGRpcmVjdGl2ZXM6ICR7bW9kdWxlSWR9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVHJhbnNmb3JtIHRvIHJlbW92ZSBkaXJlY3RpdmVzIGluIGNsaWVudC9zc3IgZW52aXJvbm1lbnRcbiAgICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IGF3YWl0IGFuYWx5emVNb2R1bGUoc291cmNlLCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgbG9hZGVyOiBsb2FkZXIsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAocGFyc2VSZXN1bHQudHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybU5vblNlcnZlckVudmlyb25tZW50KFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZE1vZHVsZUlkLFxuICAgICAgICAgICAgICBwYXJzZVJlc3VsdCxcbiAgICAgICAgICAgICAgbG9hZGVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgYFtjcmVhdGVUcmFuc2Zvcm1lcjpjbGllbnRdIFRyYW5zZm9ybWVkIHJlc3VsdCBmb3IgJHttb2R1bGVJZH06ICR7cmVzdWx0LmNvZGUuc3Vic3RyaW5nKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIDEwMFxuICAgICAgICAgICAgICAgICl9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIGZpbGVzIHdpdGhvdXQgZGlyZWN0aXZlcyBpbiBjbGllbnQvc3NyIGVudmlyb25tZW50LCB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrXG4gICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIGNsaWVudCBjb21wb25lbnQgdGhhdCBzaG91bGQgYmUgdHJhbnNmb3JtZWRcbiAgICAgICAgICBpZiAobG9hZGVyPy5pc0NsaWVudENvbXBvbmVudEJ5TmFtZT8uKG1vZHVsZUlkLCB0cmFuc2Zvcm1lZE1vZHVsZUlkKSkge1xuICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgYFtjcmVhdGVUcmFuc2Zvcm1lcjpjbGllbnRdIFRyYW5zZm9ybWluZyBjbGllbnQgY29tcG9uZW50IHdpdGhvdXQgZGlyZWN0aXZlczogJHttb2R1bGVJZH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdG8gZW5zdXJlIHByb3BlciBleHBvcnRzIGluIGNsaWVudCBlbnZpcm9ubWVudFxuICAgICAgICAgICAgY29uc3QgcGFyc2VSZXN1bHQgPSBhd2FpdCBhbmFseXplTW9kdWxlKHNvdXJjZSwge1xuICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICAgIGxvYWRlcjogbG9hZGVyLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChwYXJzZVJlc3VsdC50eXBlID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1Ob25TZXJ2ZXJFbnZpcm9ubWVudChcbiAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRNb2R1bGVJZCxcbiAgICAgICAgICAgICAgICBwYXJzZVJlc3VsdCxcbiAgICAgICAgICAgICAgICBsb2FkZXIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICBgW2NyZWF0ZVRyYW5zZm9ybWVyOmNsaWVudF0gVHJhbnNmb3JtZWQgcmVzdWx0IGZvciAke21vZHVsZUlkfTogJHtyZXN1bHQuY29kZS5zdWJzdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIDEwMFxuICAgICAgICAgICAgICAgICAgKX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGb3IgZmlsZXMgd2l0aG91dCBkaXJlY3RpdmVzIGFuZCBub3QgaWRlbnRpZmllZCBhcyBjbGllbnQgY29tcG9uZW50cywga2VlcCBvcmlnaW5hbCBjb2RlXG4gICAgICAgIHJldHVybiB7IGNvZGU6IHNvdXJjZSwgbWFwOiBudWxsIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNldCBhcHByb3ByaWF0ZSBmbGFncyBiYXNlZCBvbiBkaXJlY3RpdmVzXG4gICAgICBpZiAoaGFzQ2xpZW50RGlyZWN0aXZlKSB7XG4gICAgICAgIGZvcmNlQ2xpZW50Q29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNTZXJ2ZXJEaXJlY3RpdmUpIHtcbiAgICAgICAgZm9yY2VTZXJ2ZXJGdW5jdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjogQ2hlY2sgaWYgZmlsZSBpcyBhbHJlYWR5IHRyYW5zZm9ybWVkIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHdvcmtcbiAgICAgIC8vIE9ubHkgY2hlY2sgdGhpcyBmb3IgZmlsZXMgdGhhdCBhY3R1YWxseSBoYXZlIGRpcmVjdGl2ZXMgYW5kIGFyZSBpbiB0aGUgcmlnaHQgZW52aXJvbm1lbnRcbiAgICAgIGlmIChpc1NlcnZlckVudmlyb25tZW50ICYmIGZvcmNlQ2xpZW50Q29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGlzQWxyZWFkeVRyYW5zZm9ybWVkID0gc291cmNlLmluY2x1ZGVzKFxuICAgICAgICAgIG9wdGlvbnM/LmxvYWRlcj8ucmVnaXN0ZXJDbGllbnRSZWZlcmVuY2VOYW1lID8/XG4gICAgICAgICAgICBcInJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlXCJcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaXNBbHJlYWR5VHJhbnNmb3JtZWQpIHtcbiAgICAgICAgICBsb2dnZXIud2FybihcbiAgICAgICAgICAgIGBbY3JlYXRlVHJhbnNmb3JtZXJdIEZpbGUgYWxyZWFkeSB0cmFuc2Zvcm1lZCAke21vZHVsZUlkfS4gVGhpcyBjYWxsIHdhcyBub3QgbmVlZGVkLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7IGNvZGU6IHNvdXJjZSwgbWFwOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVXNlIGFuYWx5emVNb2R1bGUgdG8gZ2V0IHRoZSBmdWxsIHBhcnNlIHJlc3VsdCwgcGFzc2luZyB0aGUgY3VzdG9tIHBhcnNlRm5cbiAgICBjb25zdCBwYXJzZVJlc3VsdCA9IGF3YWl0IGFuYWx5emVNb2R1bGUoc291cmNlLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbG9nZ2VyLFxuICAgICAgbG9hZGVyOiBsb2FkZXIsXG4gICAgfSk7XG4gICAgaWYgKFxuICAgICAgcGFyc2VSZXN1bHQuZGlyZWN0aXZlSW5mbyAmJlxuICAgICAgcGFyc2VSZXN1bHQuZGlyZWN0aXZlSW5mby53YXJuaW5ncy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBpc1Byb2R1Y3Rpb24gPSBnZXROb2RlRW52KCkgPT09IFwicHJvZHVjdGlvblwiO1xuXG4gICAgICAvLyBIYW5kbGUgZGlyZWN0aXZlIGVycm9ycyAoY2FuIGJlIGRvd25ncmFkZWQgdG8gd2FybmluZ3MgYmFzZWQgb24gcGFuaWNUaHJlc2hvbGQpXG4gICAgICBmb3IgKGNvbnN0IHdhcm5pbmcgb2YgcGFyc2VSZXN1bHQuZGlyZWN0aXZlSW5mby53YXJuaW5ncykge1xuICAgICAgICBjb25zdCBzaG91bGREb3duZ3JhZGVUb1dhcm5pbmcgPVxuICAgICAgICAgICFpc1Byb2R1Y3Rpb24gJiYgb3B0aW9ucy5wYW5pY1RocmVzaG9sZCA9PT0gXCJub25lXCI7XG5cbiAgICAgICAgaWYgKHNob3VsZERvd25ncmFkZVRvV2FybmluZykge1xuICAgICAgICAgIC8vIERvd25ncmFkZSBlcnJvciB0byB3YXJuaW5nIGluIGRldmVsb3BtZW50IHdoZW4gcGFuaWNUaHJlc2hvbGQgaXMgJ25vbmUnXG4gICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gd2FybmluZy5yYW5nZTtcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IHNvdXJjZS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgICBjb25zdCBzdGFydExpbmUgPSBzb3VyY2Uuc2xpY2UoMCwgc3RhcnQpLnNwbGl0KFwiXFxuXCIpLmxlbmd0aDtcblxuICAgICAgICAgIGxvZ2dlci53YXJuKGBXYXJuaW5nOiAke3dhcm5pbmcubWVzc2FnZX1gKTtcblxuICAgICAgICAgIC8vIFNob3cgZG9jdW1lbnQgcHJldmlldyB3aXRoIGxpbmUgbnVtYmVyc1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRMaW5lcyA9IDI7IC8vIFNob3cgMiBsaW5lcyBiZWZvcmUgYW5kIGFmdGVyXG4gICAgICAgICAgY29uc3QgbWluTGluZSA9IE1hdGgubWF4KDEsIHN0YXJ0TGluZSAtIGNvbnRleHRMaW5lcyk7XG4gICAgICAgICAgY29uc3QgbWF4TGluZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgc3RhcnRMaW5lICsgY29udGV4dExpbmVzKTtcblxuICAgICAgICAgIGZvciAobGV0IGkgPSBtaW5MaW5lOyBpIDw9IG1heExpbmU7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbGluZU51bSA9IGkudG9TdHJpbmcoKS5wYWRTdGFydCgzLCBcIiBcIik7XG4gICAgICAgICAgICBjb25zdCBpc0Vycm9yTGluZSA9IGkgPT09IHN0YXJ0TGluZTtcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IGlzRXJyb3JMaW5lID8gXCI+XCIgOiBcIiBcIjtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpIC0gMV0gfHwgXCJcIjtcblxuICAgICAgICAgICAgaWYgKGlzRXJyb3JMaW5lKSB7XG4gICAgICAgICAgICAgIC8vIEhpZ2hsaWdodCB0aGUgZGlyZWN0aXZlIHRleHQgaXRzZWxmIHVzaW5nIFZpdGUncyBsb2dnZXIgY29sb3IgbWV0aG9kc1xuICAgICAgICAgICAgICBjb25zdCBsaW5lU3RhcnQgPSBzb3VyY2UubGFzdEluZGV4T2YoXCJcXG5cIiwgc3RhcnQgLSAxKSArIDE7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbHVtblBvcyA9IE1hdGgubWF4KDAsIHN0YXJ0IC0gbGluZVN0YXJ0KTtcbiAgICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlTGVuZ3RoID0gTWF0aC5tYXgoMSwgZW5kIC0gc3RhcnQpO1xuXG4gICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBsaW5lIHRvIGhpZ2hsaWdodCBqdXN0IHRoZSBkaXJlY3RpdmVcbiAgICAgICAgICAgICAgY29uc3QgYmVmb3JlRGlyZWN0aXZlID0gbGluZS5zbGljZSgwLCBjb2x1bW5Qb3MpO1xuICAgICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVUZXh0ID0gbGluZS5zbGljZShcbiAgICAgICAgICAgICAgICBjb2x1bW5Qb3MsXG4gICAgICAgICAgICAgICAgY29sdW1uUG9zICsgZGlyZWN0aXZlTGVuZ3RoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGFmdGVyRGlyZWN0aXZlID0gbGluZS5zbGljZShjb2x1bW5Qb3MgKyBkaXJlY3RpdmVMZW5ndGgpO1xuXG4gICAgICAgICAgICAgIC8vIFVzZSBwaWNvY29sb3JzIGZvciBwcm9wZXIgc2VtYW50aWMgY29sb3JpbmcgdGhhdCBhZGFwdHMgdG8gdGhlbWVzXG4gICAgICAgICAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgICAgIGAke3ByZWZpeH0gJHtsaW5lTnVtfSB8ICR7YmVmb3JlRGlyZWN0aXZlfSR7cmVkKFxuICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lKGRpcmVjdGl2ZVRleHQpXG4gICAgICAgICAgICAgICAgKX0ke2FmdGVyRGlyZWN0aXZlfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oYCAgJHtsaW5lTnVtfSB8ICR7bGluZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXCJcIik7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihgICByYW5nZTogWyR7c3RhcnR9LCAke2VuZH1dYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRyZWF0IGFzIGVycm9yIChkZWZhdWx0IGJlaGF2aW9yKSAtIHBhbmljIGFuZCBzdG9wIGNvbXBpbGF0aW9uXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHdhcm5pbmcubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcnNlUmVzdWx0LnR5cGUgIT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICByZXR1cm4geyBjb2RlOiBzb3VyY2UsIG1hcDogbnVsbCB9O1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgbW9kdWxlXG4gICAgLy8gT25seSB1c2UgZXhwbGljaXQgZm9yY2VTZXJ2ZXJGdW5jdGlvbi9mb3JjZUNsaWVudENvbXBvbmVudCBpbiBjbGllbnQgZW52aXJvbm1lbnRzXG4gICAgLy8gSW4gY2xpZW50IGVudmlyb25tZW50cywgYXV0by1kZXRlY3RlZCBkaXJlY3RpdmVzIHNob3VsZCBnbyB0byB0cmFuc2Zvcm1Ob25TZXJ2ZXJFbnZpcm9ubWVudFxuICAgIC8vICh3aGljaCB0aHJvd3MgZXJyb3JzIGZvciBcInVzZSBzZXJ2ZXJcIiBkaXJlY3RpdmVzKVxuICAgIGNvbnN0IGZpbmFsRm9yY2VTZXJ2ZXJGdW5jdGlvbiA9IGlzU2VydmVyRW52aXJvbm1lbnRcbiAgICAgID8gKGZvcmNlU2VydmVyRnVuY3Rpb24gPz8gaGFzU2VydmVyRGlyZWN0aXZlKVxuICAgICAgOiAoZXhwbGljaXRGb3JjZVNlcnZlckZ1bmN0aW9uID8gZm9yY2VTZXJ2ZXJGdW5jdGlvbiA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZmluYWxGb3JjZUNsaWVudENvbXBvbmVudCA9IGlzU2VydmVyRW52aXJvbm1lbnRcbiAgICAgID8gKGZvcmNlQ2xpZW50Q29tcG9uZW50ID8/IGhhc0NsaWVudERpcmVjdGl2ZSlcbiAgICAgIDogKGV4cGxpY2l0Rm9yY2VDbGllbnRDb21wb25lbnQgPyBmb3JjZUNsaWVudENvbXBvbmVudCA6IHVuZGVmaW5lZCk7XG5cbiAgICByZXR1cm4gYXdhaXQgdHJhbnNmb3JtTW9kdWxlKFxuICAgICAgc291cmNlLFxuICAgICAgbW9kdWxlSWQsXG4gICAgICB0cmFuc2Zvcm1lZE1vZHVsZUlkLFxuICAgICAgcGFyc2VSZXN1bHQsXG4gICAgICB7XG4gICAgICAgIGZvcmNlU2VydmVyRnVuY3Rpb246IGZpbmFsRm9yY2VTZXJ2ZXJGdW5jdGlvbixcbiAgICAgICAgZm9yY2VDbGllbnRDb21wb25lbnQ6IGZpbmFsRm9yY2VDbGllbnRDb21wb25lbnQsXG4gICAgICAgIGlzU2VydmVyRW52aXJvbm1lbnQsXG4gICAgICAgIGxvYWRlcjogb3B0aW9ucy5sb2FkZXIsXG4gICAgICAgIGRpcmVjdGl2ZVdhcm5pbmdzOiBwYXJzZVJlc3VsdC5kaXJlY3RpdmVJbmZvLndhcm5pbmdzLFxuICAgICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UgfHwgZmFsc2UsXG4gICAgICAgIHBhbmljVGhyZXNob2xkOiBvcHRpb25zLnBhbmljVGhyZXNob2xkIHx8IFwibm9uZVwiLFxuICAgICAgfVxuICAgICk7XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbInBhcnNlUmVzdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFXQSxNQUFNLEVBQUUsR0FBSyxFQUFBLFNBQUEsRUFBYyxHQUFBLEdBQUE7QUFLcEIsTUFBTSxvQkFBd0MsQ0FBQztBQUFBLEVBQ3BELE9BQUE7QUFBQSxFQUNBLG1CQUFzQixHQUFBLE1BQUE7QUFBQSxFQUN0QixvQkFBdUIsR0FBQSxNQUFBO0FBQUEsRUFDdkIsc0JBQXNCLHNCQUF1QjtBQUMvQyxDQUFNLEtBQUE7QUFFSixFQUFNLE1BQUE7QUFBQSxJQUNKLE9BQUE7QUFBQSxJQUNBLFNBQVMsWUFBYSxFQUFBO0FBQUEsSUFDdEIsTUFBUyxHQUFBO0FBQUEsR0FDUCxHQUFBLE9BQUE7QUFJSixFQUFBLE1BQU0sOEJBQThCLG1CQUF3QixLQUFBLE1BQUE7QUFDNUQsRUFBQSxNQUFNLCtCQUErQixvQkFBeUIsS0FBQSxNQUFBO0FBRzlELEVBQUEsTUFBTSwwQkFBNkIsR0FBQSxtQkFBQTtBQUNuQyxFQUFBLE1BQU0sMkJBQThCLEdBQUEsb0JBQUE7QUFFcEMsRUFBTyxPQUFBLE9BQ0wsUUFDQSxRQUlBLEVBQUEsbUJBQUEsR0FBc0IsUUFBUSxRQUFXLEdBQUEsUUFBUSxLQUFLLFFBQ3pCLEtBQUE7QUFHN0IsSUFBc0IsbUJBQUEsR0FBQSwwQkFBQTtBQUN0QixJQUF1QixvQkFBQSxHQUFBLDJCQUFBO0FBRXZCLElBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxNQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsQ0FBQSw4Q0FBQSxFQUFpRCxRQUFRLENBQUEsSUFBQSxFQUFPLG1CQUFtQixDQUFFLENBQUEsQ0FBQTtBQUFBO0FBRW5HLElBQUEsSUFBSSxPQUFXLElBQUEsUUFBQSxDQUFTLFFBQVMsQ0FBQSxRQUFRLENBQUcsRUFBQTtBQUMxQyxNQUFPLE1BQUEsQ0FBQSxJQUFBO0FBQUEsUUFDTCxDQUNFLG1CQUFBLEVBQUEsbUJBQUEsR0FBc0IsUUFBVyxHQUFBLFFBQ25DLGNBQWMsUUFBUSxDQUFBO0FBQUEsT0FDeEI7QUFBQTtBQUlGLElBQU0sTUFBQSxPQUFBLEdBQVUscUJBQXFCLE1BQU0sQ0FBQTtBQUMzQyxJQUFNLE1BQUEsa0JBQUEsR0FBcUIsUUFBUSxPQUFRLENBQUEsSUFBQTtBQUFBLE1BQ3pDLENBQUMsQ0FBc0IsS0FBQSxDQUFBLENBQUUsSUFBUyxLQUFBO0FBQUEsS0FDcEM7QUFDQSxJQUFNLE1BQUEsa0JBQUEsR0FBcUIsUUFBUSxPQUFRLENBQUEsSUFBQTtBQUFBLE1BQ3pDLENBQUMsQ0FBc0IsS0FBQSxDQUFBLENBQUUsSUFBUyxLQUFBO0FBQUEsS0FDcEM7QUFFQSxJQUFJLElBQUEsa0JBQUEsS0FBdUIsS0FBUyxJQUFBLGtCQUFBLEtBQXVCLEtBQU8sRUFBQTtBQUdoRSxNQUFBLElBQUksbUJBQXVCLElBQUEsTUFBQSxFQUFRLHVCQUEwQixHQUFBLFFBQUEsRUFBVSxtQkFBbUIsQ0FBRyxFQUFBO0FBSTNGLFFBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxVQUFPLE1BQUEsQ0FBQSxJQUFBO0FBQUEsWUFDTCwwRUFBMEUsUUFBUSxDQUFBO0FBQUEsV0FDcEY7QUFBQTtBQUdGLFFBQXVCLG9CQUFBLEdBQUEsSUFBQTtBQUFBLGlCQUd2QixDQUFDLG1CQUFBLElBQ0QsQ0FBQyxrQkFBQSxJQUNELENBQUMsa0JBQ0QsSUFBQSxDQUFDLE1BQVEsRUFBQSx1QkFBQSxHQUEwQixVQUFVLG1CQUFtQixDQUFBLElBQ2hFLENBQUMsUUFBUyxDQUFBLFFBQUEsQ0FBUyxjQUFjLENBQ2pDLEVBQUE7QUFJQSxRQUFBLElBQUksT0FBUyxFQUFBO0FBQ1gsVUFBTyxNQUFBLENBQUEsSUFBQTtBQUFBLFlBQ0wscUZBQXFGLFFBQVEsQ0FBQTtBQUFBLFdBQy9GO0FBQUE7QUFHRixRQUFBLE9BQU8sRUFBRSxJQUFBLEVBQU0sTUFBUSxFQUFBLEdBQUEsRUFBSyxJQUFLLEVBQUE7QUFBQSxPQUM1QixNQUFBO0FBR0wsUUFBQSxJQUFJLHNCQUFzQixrQkFBb0IsRUFBQTtBQUM1QyxVQUFBLElBQUksT0FBUyxFQUFBO0FBQ1gsWUFBTyxNQUFBLENBQUEsSUFBQTtBQUFBLGNBQ0wsaUVBQWlFLFFBQVEsQ0FBQTtBQUFBLGFBQzNFO0FBQUE7QUFHRixVQUFNQSxNQUFBQSxZQUFBQSxHQUFjLE1BQU0sYUFBQSxDQUFjLE1BQVEsRUFBQTtBQUFBLFlBQzlDLEdBQUcsT0FBQTtBQUFBLFlBQ0gsTUFBQTtBQUFBLFlBQ0E7QUFBQSxXQUNELENBQUE7QUFFRCxVQUFJQSxJQUFBQSxZQUFBQSxDQUFZLFNBQVMsU0FBVyxFQUFBO0FBQ2xDLFlBQUEsTUFBTSxTQUFTLE1BQU0sNkJBQUE7QUFBQSxjQUNuQixNQUFBO0FBQUEsY0FDQSxRQUFBO0FBQUEsY0FDQSxtQkFBQTtBQUFBLGNBQ0FBLFlBQUFBO0FBQUEsY0FDQTtBQUFBLGFBQ0Y7QUFDQSxZQUFBLElBQUksT0FBUyxFQUFBO0FBQ1gsY0FBTyxNQUFBLENBQUEsSUFBQTtBQUFBLGdCQUNMLENBQXFELGtEQUFBLEVBQUEsUUFBUSxDQUFLLEVBQUEsRUFBQSxNQUFBLENBQU8sSUFBSyxDQUFBLFNBQUE7QUFBQSxrQkFDNUUsQ0FBQTtBQUFBLGtCQUNBO0FBQUEsaUJBQ0QsQ0FBQTtBQUFBLGVBQ0g7QUFBQTtBQUVGLFlBQU8sT0FBQSxNQUFBO0FBQUE7QUFDVCxTQUNLLE1BQUE7QUFHTCxVQUFBLElBQUksTUFBUSxFQUFBLHVCQUFBLEdBQTBCLFFBQVUsRUFBQSxtQkFBbUIsQ0FBRyxFQUFBO0FBQ3BFLFlBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxjQUFPLE1BQUEsQ0FBQSxJQUFBO0FBQUEsZ0JBQ0wsZ0ZBQWdGLFFBQVEsQ0FBQTtBQUFBLGVBQzFGO0FBQUE7QUFHRixZQUFNQSxNQUFBQSxZQUFBQSxHQUFjLE1BQU0sYUFBQSxDQUFjLE1BQVEsRUFBQTtBQUFBLGNBQzlDLEdBQUcsT0FBQTtBQUFBLGNBQ0gsTUFBQTtBQUFBLGNBQ0E7QUFBQSxhQUNELENBQUE7QUFFRCxZQUFJQSxJQUFBQSxZQUFBQSxDQUFZLFNBQVMsU0FBVyxFQUFBO0FBQ2xDLGNBQUEsTUFBTSxTQUFTLE1BQU0sNkJBQUE7QUFBQSxnQkFDbkIsTUFBQTtBQUFBLGdCQUNBLFFBQUE7QUFBQSxnQkFDQSxtQkFBQTtBQUFBLGdCQUNBQSxZQUFBQTtBQUFBLGdCQUNBO0FBQUEsZUFDRjtBQUNBLGNBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxnQkFBTyxNQUFBLENBQUEsSUFBQTtBQUFBLGtCQUNMLENBQXFELGtEQUFBLEVBQUEsUUFBUSxDQUFLLEVBQUEsRUFBQSxNQUFBLENBQU8sSUFBSyxDQUFBLFNBQUE7QUFBQSxvQkFDNUUsQ0FBQTtBQUFBLG9CQUNBO0FBQUEsbUJBQ0QsQ0FBQTtBQUFBLGlCQUNIO0FBQUE7QUFFRixjQUFPLE9BQUEsTUFBQTtBQUFBO0FBQ1Q7QUFDRjtBQUdGLFFBQUEsT0FBTyxFQUFFLElBQUEsRUFBTSxNQUFRLEVBQUEsR0FBQSxFQUFLLElBQUssRUFBQTtBQUFBO0FBQ25DLEtBQ0ssTUFBQTtBQUVMLE1BQUEsSUFBSSxrQkFBb0IsRUFBQTtBQUN0QixRQUF1QixvQkFBQSxHQUFBLElBQUE7QUFBQTtBQUV6QixNQUFBLElBQUksa0JBQW9CLEVBQUE7QUFDdEIsUUFBc0IsbUJBQUEsR0FBQSxJQUFBO0FBQUE7QUFLeEIsTUFBQSxJQUFJLHVCQUF1QixvQkFBc0IsRUFBQTtBQUMvQyxRQUFBLE1BQU0sdUJBQXVCLE1BQU8sQ0FBQSxRQUFBO0FBQUEsVUFDbEMsT0FBQSxFQUFTLFFBQVEsMkJBQ2YsSUFBQTtBQUFBLFNBQ0o7QUFFQSxRQUFBLElBQUksb0JBQXNCLEVBQUE7QUFDeEIsVUFBTyxNQUFBLENBQUEsSUFBQTtBQUFBLFlBQ0wsZ0RBQWdELFFBQVEsQ0FBQSwyQkFBQTtBQUFBLFdBQzFEO0FBQ0EsVUFBQSxPQUFPLEVBQUUsSUFBQSxFQUFNLE1BQVEsRUFBQSxHQUFBLEVBQUssSUFBSyxFQUFBO0FBQUE7QUFDbkM7QUFDRjtBQUdGLElBQU0sTUFBQSxXQUFBLEdBQWMsTUFBTSxhQUFBLENBQWMsTUFBUSxFQUFBO0FBQUEsTUFDOUMsR0FBRyxPQUFBO0FBQUEsTUFDSCxNQUFBO0FBQUEsTUFDQTtBQUFBLEtBQ0QsQ0FBQTtBQUNELElBQUEsSUFDRSxZQUFZLGFBQ1osSUFBQSxXQUFBLENBQVksYUFBYyxDQUFBLFFBQUEsQ0FBUyxTQUFTLENBQzVDLEVBQUE7QUFDQSxNQUFNLE1BQUEsWUFBQSxHQUFlLFlBQWlCLEtBQUEsWUFBQTtBQUd0QyxNQUFXLEtBQUEsTUFBQSxPQUFBLElBQVcsV0FBWSxDQUFBLGFBQUEsQ0FBYyxRQUFVLEVBQUE7QUFDeEQsUUFBQSxNQUFNLHdCQUNKLEdBQUEsQ0FBQyxZQUFnQixJQUFBLE9BQUEsQ0FBUSxjQUFtQixLQUFBLE1BQUE7QUFFOUMsUUFBQSxJQUFJLHdCQUEwQixFQUFBO0FBRTVCLFVBQUEsTUFBTSxDQUFDLEtBQUEsRUFBTyxHQUFHLENBQUEsR0FBSSxPQUFRLENBQUEsS0FBQTtBQUM3QixVQUFNLE1BQUEsS0FBQSxHQUFRLE1BQU8sQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFBO0FBQy9CLFVBQU0sTUFBQSxTQUFBLEdBQVksT0FBTyxLQUFNLENBQUEsQ0FBQSxFQUFHLEtBQUssQ0FBRSxDQUFBLEtBQUEsQ0FBTSxJQUFJLENBQUUsQ0FBQSxNQUFBO0FBRXJELFVBQUEsTUFBQSxDQUFPLElBQUssQ0FBQSxDQUFBLFNBQUEsRUFBWSxPQUFRLENBQUEsT0FBTyxDQUFFLENBQUEsQ0FBQTtBQUd6QyxVQUFBLE1BQU0sWUFBZSxHQUFBLENBQUE7QUFDckIsVUFBQSxNQUFNLE9BQVUsR0FBQSxJQUFBLENBQUssR0FBSSxDQUFBLENBQUEsRUFBRyxZQUFZLFlBQVksQ0FBQTtBQUNwRCxVQUFBLE1BQU0sVUFBVSxJQUFLLENBQUEsR0FBQSxDQUFJLEtBQU0sQ0FBQSxNQUFBLEVBQVEsWUFBWSxZQUFZLENBQUE7QUFFL0QsVUFBQSxLQUFBLElBQVMsQ0FBSSxHQUFBLE9BQUEsRUFBUyxDQUFLLElBQUEsT0FBQSxFQUFTLENBQUssRUFBQSxFQUFBO0FBQ3ZDLFlBQUEsTUFBTSxVQUFVLENBQUUsQ0FBQSxRQUFBLEVBQVcsQ0FBQSxRQUFBLENBQVMsR0FBRyxHQUFHLENBQUE7QUFDNUMsWUFBQSxNQUFNLGNBQWMsQ0FBTSxLQUFBLFNBQUE7QUFDMUIsWUFBTSxNQUFBLE1BQUEsR0FBUyxjQUFjLEdBQU0sR0FBQSxHQUFBO0FBQ25DLFlBQUEsTUFBTSxJQUFPLEdBQUEsS0FBQSxDQUFNLENBQUksR0FBQSxDQUFDLENBQUssSUFBQSxFQUFBO0FBRTdCLFlBQUEsSUFBSSxXQUFhLEVBQUE7QUFFZixjQUFBLE1BQU0sWUFBWSxNQUFPLENBQUEsV0FBQSxDQUFZLElBQU0sRUFBQSxLQUFBLEdBQVEsQ0FBQyxDQUFJLEdBQUEsQ0FBQTtBQUN4RCxjQUFBLE1BQU0sU0FBWSxHQUFBLElBQUEsQ0FBSyxHQUFJLENBQUEsQ0FBQSxFQUFHLFFBQVEsU0FBUyxDQUFBO0FBQy9DLGNBQUEsTUFBTSxlQUFrQixHQUFBLElBQUEsQ0FBSyxHQUFJLENBQUEsQ0FBQSxFQUFHLE1BQU0sS0FBSyxDQUFBO0FBRy9DLGNBQUEsTUFBTSxlQUFrQixHQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsQ0FBQSxFQUFHLFNBQVMsQ0FBQTtBQUMvQyxjQUFBLE1BQU0sZ0JBQWdCLElBQUssQ0FBQSxLQUFBO0FBQUEsZ0JBQ3pCLFNBQUE7QUFBQSxnQkFDQSxTQUFZLEdBQUE7QUFBQSxlQUNkO0FBQ0EsY0FBQSxNQUFNLGNBQWlCLEdBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxTQUFBLEdBQVksZUFBZSxDQUFBO0FBRzdELGNBQU8sTUFBQSxDQUFBLElBQUE7QUFBQSxnQkFDTCxHQUFHLE1BQU0sQ0FBQSxDQUFBLEVBQUksT0FBTyxDQUFBLEdBQUEsRUFBTSxlQUFlLENBQUcsRUFBQSxHQUFBO0FBQUEsa0JBQzFDLFVBQVUsYUFBYTtBQUFBLGlCQUN4QixHQUFHLGNBQWMsQ0FBQTtBQUFBLGVBQ3BCO0FBQUEsYUFDUyxNQUFBLElBQUEsSUFBQSxDQUFLLElBQUssRUFBQSxLQUFNLEVBQUksRUFBQTtBQUM3QixjQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsQ0FBQSxFQUFBLEVBQUssT0FBTyxDQUFBLEdBQUEsRUFBTSxJQUFJLENBQUUsQ0FBQSxDQUFBO0FBQUE7QUFDdEM7QUFFRixVQUFBLE1BQUEsQ0FBTyxLQUFLLEVBQUUsQ0FBQTtBQUVkLFVBQUEsSUFBSSxRQUFRLE9BQVMsRUFBQTtBQUNuQixZQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsQ0FBQSxVQUFBLEVBQWEsS0FBSyxDQUFBLEVBQUEsRUFBSyxHQUFHLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFBQTtBQUMzQyxTQUNLLE1BQUE7QUFFTCxVQUFNLE1BQUEsSUFBSSxLQUFNLENBQUEsT0FBQSxDQUFRLE9BQU8sQ0FBQTtBQUFBO0FBQ2pDO0FBQ0Y7QUFFRixJQUFJLElBQUEsV0FBQSxDQUFZLFNBQVMsU0FBVyxFQUFBO0FBQ2xDLE1BQUEsT0FBTyxFQUFFLElBQUEsRUFBTSxNQUFRLEVBQUEsR0FBQSxFQUFLLElBQUssRUFBQTtBQUFBO0FBT25DLElBQUEsTUFBTSx3QkFBMkIsR0FBQSxtQkFBQSxHQUM1QixtQkFBdUIsSUFBQSxrQkFBQSxHQUN2Qiw4QkFBOEIsbUJBQXNCLEdBQUEsTUFBQTtBQUN6RCxJQUFBLE1BQU0seUJBQTRCLEdBQUEsbUJBQUEsR0FDN0Isb0JBQXdCLElBQUEsa0JBQUEsR0FDeEIsK0JBQStCLG9CQUF1QixHQUFBLE1BQUE7QUFFM0QsSUFBQSxPQUFPLE1BQU0sZUFBQTtBQUFBLE1BQ1gsTUFBQTtBQUFBLE1BQ0EsUUFBQTtBQUFBLE1BQ0EsbUJBQUE7QUFBQSxNQUNBLFdBQUE7QUFBQSxNQUNBO0FBQUEsUUFDRSxtQkFBcUIsRUFBQSx3QkFBQTtBQUFBLFFBQ3JCLG9CQUFzQixFQUFBLHlCQUFBO0FBQUEsUUFDdEIsbUJBQUE7QUFBQSxRQUNBLFFBQVEsT0FBUSxDQUFBLE1BQUE7QUFBQSxRQUNoQixpQkFBQSxFQUFtQixZQUFZLGFBQWMsQ0FBQSxRQUFBO0FBQUEsUUFDN0MsT0FBQSxFQUFTLFFBQVEsT0FBVyxJQUFBLEtBQUE7QUFBQSxRQUM1QixjQUFBLEVBQWdCLFFBQVEsY0FBa0IsSUFBQTtBQUFBO0FBQzVDLEtBQ0Y7QUFBQSxHQUNGO0FBQ0Y7Ozs7In0=
@@ -1,9 +1,10 @@
1
1
  import type { DirectiveInfo, DirectiveMatches } from "./types.js";
2
2
  import type { Program } from "acorn";
3
3
  import type { DirectiveOptions } from "../../types.js";
4
+ import { type Logger } from "vite";
4
5
  /**
5
6
  * Analyzes directives in the given source and AST, returning directiveInfo.
6
7
  */
7
- export declare function analyzeDirectives(ast: Program, source: string, matches?: DirectiveMatches): DirectiveInfo;
8
- export declare function analyzeDirectives(ast: Program, source: string, options?: DirectiveOptions): DirectiveInfo;
8
+ export declare function analyzeDirectives(ast: Program, source: string, matches?: DirectiveMatches, logger?: Logger): DirectiveInfo;
9
+ export declare function analyzeDirectives(ast: Program, source: string, options?: DirectiveOptions, logger?: Logger): DirectiveInfo;
9
10
  //# sourceMappingURL=analyzeDirectives.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzeDirectives.d.ts","sourceRoot":"","sources":["../../../../plugin/loader/directives/analyzeDirectives.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAAC;AACjB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAAC"}
1
+ {"version":3,"file":"analyzeDirectives.d.ts","sourceRoot":"","sources":["../../../../plugin/loader/directives/analyzeDirectives.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,aAAa,EAEb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAAC;AACjB,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAAC"}
@@ -10,8 +10,9 @@ import { getFunctionName } from './getFunctionName.js';
10
10
  import { getExportedName } from './getExportedName.js';
11
11
  import { processFunctionNode } from './processFunctionNode.js';
12
12
  import { getDirectiveValue, isDirectiveAtStart, matchOverlapsDirective } from './utils.js';
13
+ import { createLogger } from 'vite';
13
14
 
14
- function analyzeDirectives(ast, source, optionsOrMatches) {
15
+ function analyzeDirectives(ast, source, optionsOrMatches, _logger) {
15
16
  const hasOptions = optionsOrMatches != null && typeof optionsOrMatches === "object";
16
17
  const directiveMatches = hasOptions && "matches" in optionsOrMatches ? optionsOrMatches : findDirectiveMatches(source);
17
18
  const directiveInfo = {
@@ -21,17 +22,16 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
21
22
  };
22
23
  let foundNonDirective = false;
23
24
  let firstDirective = null;
24
- let verbose = hasOptions && "verbose" in optionsOrMatches && optionsOrMatches.verbose;
25
+ const verbose = hasOptions && typeof optionsOrMatches === "object" && "verbose" in optionsOrMatches && optionsOrMatches.verbose;
26
+ const logger = hasOptions && typeof optionsOrMatches === "object" && "logger" in optionsOrMatches ? optionsOrMatches.logger ?? _logger ?? createLogger() : _logger ?? createLogger();
27
+ const isViteInjectedCode = source.includes("__vite__createHotContext") || source.includes("import.meta.hot") || source.includes("import.meta.env") || source.includes("/@vite/client");
25
28
  for (const node of ast.body) {
26
29
  if (verbose) {
27
- console.log("[analyzeDirectives] Processing node:", {
28
- type: node.type,
29
- start: node.start,
30
- end: node.end,
31
- directive: "directive" in node ? node.directive : void 0,
32
- beforeNode: node.start > 0 ? JSON.stringify(source.slice(0, node.start)) : "none",
33
- foundNonDirective
34
- });
30
+ logger.info(
31
+ `[analyzeDirectives] Processing node: ${node.type} start: ${node.start} end: ${node.end}
32
+ directive: ${"directive" in node ? node.directive : "none"}
33
+ beforeNode: ${node.start > 0 ? JSON.stringify(source.slice(0, node.start)).slice(0, 100) : "none"}`
34
+ );
35
35
  }
36
36
  if (node.type === "ExpressionStatement") {
37
37
  let directive = null;
@@ -46,7 +46,12 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
46
46
  if (!firstDirective) {
47
47
  firstDirective = { type, range: [node.start, node.end] };
48
48
  if (verbose) {
49
- console.log("[analyzeDirectives] Found first directive:", directive, "at range:", [node.start, node.end]);
49
+ logger.info(
50
+ `[analyzeDirectives] Found first directive: ${directive} at range: ${[
51
+ node.start,
52
+ node.end
53
+ ]}`
54
+ );
50
55
  }
51
56
  } else {
52
57
  directiveInfo.warnings.push({
@@ -58,16 +63,20 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
58
63
  } else {
59
64
  if (!firstDirective) {
60
65
  foundNonDirective = true;
61
- if (optionsOrMatches != null && "verbose" in optionsOrMatches && optionsOrMatches?.verbose) {
62
- console.log("[analyzeDirectives] Found non-directive expression before first directive, setting foundNonDirective=true");
66
+ if (verbose) {
67
+ logger.info(
68
+ `[analyzeDirectives] Found non-directive expression before first directive, setting foundNonDirective=true`
69
+ );
63
70
  }
64
71
  }
65
72
  }
66
- } else if (node.type !== "ImportDeclaration" && node.type !== "ExportNamedDeclaration" && node.type !== "ExportDefaultDeclaration") {
73
+ } else {
67
74
  if (!firstDirective) {
68
75
  foundNonDirective = true;
69
76
  if (verbose) {
70
- console.log("[analyzeDirectives] Found non-directive node before first directive:", node.type, "setting foundNonDirective=true");
77
+ logger.info(
78
+ `[analyzeDirectives] Found non-directive node before first directive: ${node.type}, setting foundNonDirective=true`
79
+ );
71
80
  }
72
81
  }
73
82
  }
@@ -76,7 +85,11 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
76
85
  if (beforeNode.length > 0) {
77
86
  foundNonDirective = true;
78
87
  if (verbose) {
79
- console.log("[analyzeDirectives] Found content before first directive:", JSON.stringify(beforeNode), "setting foundNonDirective=true");
88
+ logger.info(
89
+ `[analyzeDirectives] Found content before first directive: ${JSON.stringify(
90
+ beforeNode.slice(0, 100)
91
+ )}, setting foundNonDirective=true`
92
+ );
80
93
  }
81
94
  }
82
95
  }
@@ -88,11 +101,15 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
88
101
  if (beforeDirective.length > 0) {
89
102
  foundNonDirective = true;
90
103
  if (verbose) {
91
- console.log("[analyzeDirectives] Found content before directive:", JSON.stringify(beforeDirective), "setting foundNonDirective=true for directive");
104
+ logger.info(
105
+ `[analyzeDirectives] Found content before directive: ${JSON.stringify(
106
+ beforeDirective
107
+ )}, setting foundNonDirective=true for directive`
108
+ );
92
109
  }
93
110
  }
94
111
  }
95
- if (foundNonDirective) {
112
+ if (foundNonDirective && !isViteInjectedCode) {
96
113
  directiveInfo.warnings.push({
97
114
  message: "File-level directives must be at the top of the file, before any other code",
98
115
  range: [firstDirective.range[0], firstDirective.range[1]],
@@ -100,12 +117,14 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
100
117
  });
101
118
  }
102
119
  }
103
- const functionLevelMatches = directiveMatches.matches.filter((match) => {
104
- if (directiveInfo.fileLevel && match.range[0] === directiveInfo.fileLevel.range[0] && match.range[1] === directiveInfo.fileLevel.range[1]) {
105
- return false;
120
+ const functionLevelMatches = directiveMatches.matches.filter(
121
+ (match) => {
122
+ if (directiveInfo.fileLevel && match.range[0] === directiveInfo.fileLevel.range[0] && match.range[1] === directiveInfo.fileLevel.range[1]) {
123
+ return false;
124
+ }
125
+ return true;
106
126
  }
107
- return true;
108
- });
127
+ );
109
128
  const processedFunctions = /* @__PURE__ */ new Set();
110
129
  const functionNodes = [];
111
130
  function traverseWithContext(node, context) {
@@ -118,7 +137,11 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
118
137
  const directiveNode = body.body[0];
119
138
  const directiveStart = directiveNode.start;
120
139
  const directiveEnd = directiveNode.end;
121
- const matchOverlaps = matchOverlapsDirective(match.range, directiveStart, directiveEnd);
140
+ const matchOverlaps = matchOverlapsDirective(
141
+ match.range,
142
+ directiveStart,
143
+ directiveEnd
144
+ );
122
145
  if (matchOverlaps) {
123
146
  const functionName = getFunctionName(node) || "anonymous";
124
147
  if (context.inFunction) {
@@ -140,7 +163,11 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
140
163
  return;
141
164
  }
142
165
  if (match.type === "server") {
143
- functionNodes.push({ node, match, context: context.inFunction ? "nested" : context.inClass ? "class" : "top-level" });
166
+ functionNodes.push({
167
+ node,
168
+ match,
169
+ context: context.inFunction ? "nested" : context.inClass ? "class" : "top-level"
170
+ });
144
171
  } else {
145
172
  directiveInfo.warnings.push({
146
173
  message: "Function-level 'use client' isn't allowed",
@@ -218,4 +245,4 @@ function analyzeDirectives(ast, source, optionsOrMatches) {
218
245
  }
219
246
 
220
247
  export { analyzeDirectives };
221
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZURpcmVjdGl2ZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbi9sb2FkZXIvZGlyZWN0aXZlcy9hbmFseXplRGlyZWN0aXZlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaW5kRGlyZWN0aXZlTWF0Y2hlcyB9IGZyb20gXCIuL2ZpbmREaXJlY3RpdmVNYXRjaGVzLmpzXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uTm9kZSB9IGZyb20gXCIuL3R5cGVHdWFyZHMuanNcIjtcbmltcG9ydCB7IGdldEZ1bmN0aW9uQm9keSB9IGZyb20gXCIuL2dldEZ1bmN0aW9uQm9keS5qc1wiO1xuaW1wb3J0IHsgZ2V0RnVuY3Rpb25OYW1lIH0gZnJvbSBcIi4vZ2V0RnVuY3Rpb25OYW1lLmpzXCI7XG5pbXBvcnQgeyBnZXRFeHBvcnRlZE5hbWUgfSBmcm9tIFwiLi9nZXRFeHBvcnRlZE5hbWUuanNcIjtcbmltcG9ydCB7IHByb2Nlc3NGdW5jdGlvbk5vZGUgfSBmcm9tIFwiLi9wcm9jZXNzRnVuY3Rpb25Ob2RlLmpzXCI7XG5pbXBvcnQgeyBpc0RpcmVjdGl2ZUF0U3RhcnQsIGdldERpcmVjdGl2ZVZhbHVlLCBtYXRjaE92ZXJsYXBzRGlyZWN0aXZlIH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCB0eXBlIHsgRGlyZWN0aXZlSW5mbywgRGlyZWN0aXZlTWF0Y2gsIERpcmVjdGl2ZU1hdGNoZXMgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBOb2RlLCBQcm9ncmFtIH0gZnJvbSBcImFjb3JuXCI7XG5pbXBvcnQgdHlwZSB7IERpcmVjdGl2ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMuanNcIjtcblxuLyoqXG4gKiBBbmFseXplcyBkaXJlY3RpdmVzIGluIHRoZSBnaXZlbiBzb3VyY2UgYW5kIEFTVCwgcmV0dXJuaW5nIGRpcmVjdGl2ZUluZm8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplRGlyZWN0aXZlcyhcbiAgYXN0OiBQcm9ncmFtLCBcbiAgc291cmNlOiBzdHJpbmcsXG4gIG1hdGNoZXM/OiBEaXJlY3RpdmVNYXRjaGVzLFxuKTogRGlyZWN0aXZlSW5mbztcbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplRGlyZWN0aXZlcyhcbiAgYXN0OiBQcm9ncmFtLCBcbiAgc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBEaXJlY3RpdmVPcHRpb25zLFxuKTogRGlyZWN0aXZlSW5mbztcbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplRGlyZWN0aXZlcyhcbiAgYXN0OiBQcm9ncmFtLCBcbiAgc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnNPck1hdGNoZXM/OiBEaXJlY3RpdmVNYXRjaGVzIHwgRGlyZWN0aXZlT3B0aW9ucyxcbik6IERpcmVjdGl2ZUluZm8ge1xuICBjb25zdCBoYXNPcHRpb25zICA9IG9wdGlvbnNPck1hdGNoZXMgIT0gbnVsbCAmJiB0eXBlb2Ygb3B0aW9uc09yTWF0Y2hlcyA9PT0gJ29iamVjdCc7XG4gIGNvbnN0IGRpcmVjdGl2ZU1hdGNoZXMgPSBoYXNPcHRpb25zICYmICdtYXRjaGVzJyBpbiBvcHRpb25zT3JNYXRjaGVzXG4gICAgPyBvcHRpb25zT3JNYXRjaGVzXG4gICAgOiBmaW5kRGlyZWN0aXZlTWF0Y2hlcyhzb3VyY2UpO1xuXG4gIGNvbnN0IGRpcmVjdGl2ZUluZm86IERpcmVjdGl2ZUluZm8gPSB7XG4gICAgZmlsZUxldmVsOiBudWxsLFxuICAgIGZ1bmN0aW9uTGV2ZWw6IFtdLFxuICAgIHdhcm5pbmdzOiBbXVxuICB9O1xuXG4gIC8vIEZpbmQgZmlsZS1sZXZlbCBkaXJlY3RpdmVzIGJ5IGNoZWNraW5nIEFTVFxuICBsZXQgZm91bmROb25EaXJlY3RpdmUgPSBmYWxzZTtcbiAgbGV0IGZpcnN0RGlyZWN0aXZlOiBEaXJlY3RpdmVNYXRjaCB8IG51bGwgPSBudWxsO1xuICBsZXQgdmVyYm9zZSA9IGhhc09wdGlvbnMgJiYgJ3ZlcmJvc2UnIGluIG9wdGlvbnNPck1hdGNoZXMgJiYgb3B0aW9uc09yTWF0Y2hlcy52ZXJib3NlO1xuICBmb3IgKGNvbnN0IG5vZGUgb2YgYXN0LmJvZHkpIHtcbiAgICAvLyBEZWJ1ZyBsb2dnaW5nXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbYW5hbHl6ZURpcmVjdGl2ZXNdIFByb2Nlc3Npbmcgbm9kZTonLCB7XG4gICAgICAgIHR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAgc3RhcnQ6IG5vZGUuc3RhcnQsXG4gICAgICAgIGVuZDogbm9kZS5lbmQsXG4gICAgICAgIGRpcmVjdGl2ZTogJ2RpcmVjdGl2ZScgaW4gbm9kZSA/IG5vZGUuZGlyZWN0aXZlIDogdW5kZWZpbmVkLFxuICAgICAgICBiZWZvcmVOb2RlOiBub2RlLnN0YXJ0ISA+IDAgPyBKU09OLnN0cmluZ2lmeShzb3VyY2Uuc2xpY2UoMCwgbm9kZS5zdGFydCEpKSA6ICdub25lJyxcbiAgICAgICAgZm91bmROb25EaXJlY3RpdmVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE9ubHkgY2hlY2sgZm9yIGRpcmVjdGl2ZXMgaW4gZXhwcmVzc2lvbiBzdGF0ZW1lbnRzXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICAgIGxldCBkaXJlY3RpdmU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKFwiZGlyZWN0aXZlXCIgaW4gbm9kZSAmJiB0eXBlb2Ygbm9kZS5kaXJlY3RpdmUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZGlyZWN0aXZlID0gbm9kZS5kaXJlY3RpdmU7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gXCJMaXRlcmFsXCIgJiZcbiAgICAgICAgdHlwZW9mIG5vZGUuZXhwcmVzc2lvbi52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAobm9kZS5leHByZXNzaW9uLnZhbHVlID09PSBcInVzZSBzZXJ2ZXJcIiB8fCBub2RlLmV4cHJlc3Npb24udmFsdWUgPT09IFwidXNlIGNsaWVudFwiKVxuICAgICAgKSB7XG4gICAgICAgIGRpcmVjdGl2ZSA9IG5vZGUuZXhwcmVzc2lvbi52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGl2ZSkge1xuICAgICAgICBjb25zdCBnZXREaXJlY3RpdmVUeXBlID0gb3B0aW9uc09yTWF0Y2hlcyAhPSBudWxsICYmICdsb2FkZXInIGluIG9wdGlvbnNPck1hdGNoZXMgPyBvcHRpb25zT3JNYXRjaGVzLmxvYWRlcj8uZ2V0RGlyZWN0aXZlVHlwZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdHlwZSA9IGdldERpcmVjdGl2ZVR5cGU/LihkaXJlY3RpdmUpID8/IFxuICAgICAgICAgIChkaXJlY3RpdmUgPT09IFwidXNlIHNlcnZlclwiID8gXCJzZXJ2ZXJcIiA6IFwiY2xpZW50XCIpO1xuICAgICAgICBpZiAoIWZpcnN0RGlyZWN0aXZlKSB7XG4gICAgICAgICAgZmlyc3REaXJlY3RpdmUgPSB7IHR5cGUsIHJhbmdlOiBbbm9kZS5zdGFydCEsIG5vZGUuZW5kIV0gfTtcbiAgICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1thbmFseXplRGlyZWN0aXZlc10gRm91bmQgZmlyc3QgZGlyZWN0aXZlOicsIGRpcmVjdGl2ZSwgJ2F0IHJhbmdlOicsIFtub2RlLnN0YXJ0ISwgbm9kZS5lbmQhXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIkNhbm5vdCBoYXZlIGJvdGggJ3VzZSBjbGllbnQnIGFuZCAndXNlIHNlcnZlcicgZGlyZWN0aXZlcyBpbiB0aGUgc2FtZSBmaWxlXCIsXG4gICAgICAgICAgICByYW5nZTogWzAsIDBdLFxuICAgICAgICAgICAgdHlwZTogXCJzZXJ2ZXJcIlxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIGV4cHJlc3Npb24gc3RhdGVtZW50IGlzIG5vdCBhIGRpcmVjdGl2ZSwgc28gbWFyayBhcyBub24tZGlyZWN0aXZlXG4gICAgICAgIC8vIGlmIHdlIGhhdmVuJ3QgZm91bmQgdGhlIGZpcnN0IGRpcmVjdGl2ZSB5ZXRcbiAgICAgICAgaWYgKCFmaXJzdERpcmVjdGl2ZSkge1xuICAgICAgICAgIGZvdW5kTm9uRGlyZWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAob3B0aW9uc09yTWF0Y2hlcyAhPSBudWxsICYmICd2ZXJib3NlJyBpbiBvcHRpb25zT3JNYXRjaGVzICYmIG9wdGlvbnNPck1hdGNoZXM/LnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbYW5hbHl6ZURpcmVjdGl2ZXNdIEZvdW5kIG5vbi1kaXJlY3RpdmUgZXhwcmVzc2lvbiBiZWZvcmUgZmlyc3QgZGlyZWN0aXZlLCBzZXR0aW5nIGZvdW5kTm9uRGlyZWN0aXZlPXRydWUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSAhPT0gXCJJbXBvcnREZWNsYXJhdGlvblwiICYmIG5vZGUudHlwZSAhPT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIgJiYgbm9kZS50eXBlICE9PSBcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiKSB7XG4gICAgICAvLyBPbmx5IG1hcmsgYWN0dWFsIGNvZGUgKG5vdCBpbXBvcnRzL2V4cG9ydHMpIGFzIG5vbi1kaXJlY3RpdmVcbiAgICAgIC8vIGlmIHdlIGhhdmVuJ3QgZm91bmQgdGhlIGZpcnN0IGRpcmVjdGl2ZSB5ZXRcbiAgICAgIGlmICghZmlyc3REaXJlY3RpdmUpIHtcbiAgICAgICAgZm91bmROb25EaXJlY3RpdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbYW5hbHl6ZURpcmVjdGl2ZXNdIEZvdW5kIG5vbi1kaXJlY3RpdmUgbm9kZSBiZWZvcmUgZmlyc3QgZGlyZWN0aXZlOicsIG5vZGUudHlwZSwgJ3NldHRpbmcgZm91bmROb25EaXJlY3RpdmU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGlzIGFmdGVyIGFueSBjb21tZW50cyBvciBub24td2hpdGVzcGFjZSBjb250ZW50XG4gICAgLy8gT25seSBtYXR0ZXJzIGlmIHdlIGhhdmVuJ3QgZm91bmQgdGhlIGZpcnN0IGRpcmVjdGl2ZSB5ZXRcbiAgICBpZiAoIWZpcnN0RGlyZWN0aXZlICYmIG5vZGUuc3RhcnQhID4gMCkge1xuICAgICAgY29uc3QgYmVmb3JlTm9kZSA9IHNvdXJjZS5zbGljZSgwLCBub2RlLnN0YXJ0ISkudHJpbSgpO1xuICAgICAgaWYgKGJlZm9yZU5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3VuZE5vbkRpcmVjdGl2ZSA9IHRydWU7XG4gICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1thbmFseXplRGlyZWN0aXZlc10gRm91bmQgY29udGVudCBiZWZvcmUgZmlyc3QgZGlyZWN0aXZlOicsIEpTT04uc3RyaW5naWZ5KGJlZm9yZU5vZGUpLCAnc2V0dGluZyBmb3VuZE5vbkRpcmVjdGl2ZT10cnVlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXQgdGhlIGZpcnN0IGRpcmVjdGl2ZSBhcyBmaWxlLWxldmVsIGlmIGZvdW5kXG4gIGlmIChmaXJzdERpcmVjdGl2ZSkge1xuICAgIGRpcmVjdGl2ZUluZm8uZmlsZUxldmVsID0gZmlyc3REaXJlY3RpdmU7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUgd2FzIGNvbnRlbnQgKGluY2x1ZGluZyBjb21tZW50cykgYmVmb3JlIHRoZSBkaXJlY3RpdmVcbiAgICBpZiAoIWZvdW5kTm9uRGlyZWN0aXZlICYmIGZpcnN0RGlyZWN0aXZlLnJhbmdlWzBdID4gMCkge1xuICAgICAgY29uc3QgYmVmb3JlRGlyZWN0aXZlID0gc291cmNlLnNsaWNlKDAsIGZpcnN0RGlyZWN0aXZlLnJhbmdlWzBdKS50cmltKCk7XG4gICAgICBpZiAoYmVmb3JlRGlyZWN0aXZlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm91bmROb25EaXJlY3RpdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbYW5hbHl6ZURpcmVjdGl2ZXNdIEZvdW5kIGNvbnRlbnQgYmVmb3JlIGRpcmVjdGl2ZTonLCBKU09OLnN0cmluZ2lmeShiZWZvcmVEaXJlY3RpdmUpLCAnc2V0dGluZyBmb3VuZE5vbkRpcmVjdGl2ZT10cnVlIGZvciBkaXJlY3RpdmUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoZm91bmROb25EaXJlY3RpdmUpIHtcbiAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgIG1lc3NhZ2U6IFwiRmlsZS1sZXZlbCBkaXJlY3RpdmVzIG11c3QgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSwgYmVmb3JlIGFueSBvdGhlciBjb2RlXCIsXG4gICAgICAgIHJhbmdlOiBbZmlyc3REaXJlY3RpdmUucmFuZ2VbMF0sIGZpcnN0RGlyZWN0aXZlLnJhbmdlWzFdXSxcbiAgICAgICAgdHlwZTogZmlyc3REaXJlY3RpdmUudHlwZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJvY2VzcyBmdW5jdGlvbi1sZXZlbCBkaXJlY3RpdmVzXG4gIGNvbnN0IGZ1bmN0aW9uTGV2ZWxNYXRjaGVzID0gZGlyZWN0aXZlTWF0Y2hlcy5tYXRjaGVzLmZpbHRlcigobWF0Y2g6IERpcmVjdGl2ZU1hdGNoKSA9PiB7XG4gICAgLy8gU2tpcCBpZiB0aGlzIG1hdGNoIGlzIGFscmVhZHkgdXNlZCBhcyBhIGZpbGUtbGV2ZWwgZGlyZWN0aXZlXG4gICAgaWYgKGRpcmVjdGl2ZUluZm8uZmlsZUxldmVsICYmIFxuICAgICAgICBtYXRjaC5yYW5nZVswXSA9PT0gZGlyZWN0aXZlSW5mby5maWxlTGV2ZWwucmFuZ2VbMF0gJiYgXG4gICAgICAgIG1hdGNoLnJhbmdlWzFdID09PSBkaXJlY3RpdmVJbmZvLmZpbGVMZXZlbC5yYW5nZVsxXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgY29uc3QgcHJvY2Vzc2VkRnVuY3Rpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8gRmlyc3QgcGFzczogY29sbGVjdCBhbGwgZnVuY3Rpb24gbm9kZXMgd2l0aCB0aGVpciBkaXJlY3RpdmVzXG4gIGNvbnN0IGZ1bmN0aW9uTm9kZXM6IEFycmF5PHtub2RlOiBOb2RlLCBtYXRjaDogRGlyZWN0aXZlTWF0Y2gsIGNvbnRleHQ6IHN0cmluZ30+ID0gW107XG4gIFxuICAvLyBUcmFjayBjb250ZXh0IGR1cmluZyB0cmF2ZXJzYWxcbiAgZnVuY3Rpb24gdHJhdmVyc2VXaXRoQ29udGV4dChub2RlOiBOb2RlLCBjb250ZXh0OiB7IGluRnVuY3Rpb246IGJvb2xlYW4sIGluQ2xhc3M6IGJvb2xlYW4gfSkge1xuICAgIGlmIChpc0Z1bmN0aW9uTm9kZShub2RlKSkge1xuICAgICAgY29uc3QgYm9keSA9IGdldEZ1bmN0aW9uQm9keShub2RlKTtcbiAgICAgIGlmIChib2R5KSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGRpcmVjdGl2ZSBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIGJvZHlcbiAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBmdW5jdGlvbkxldmVsTWF0Y2hlcykge1xuICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZVZhbHVlID0gZ2V0RGlyZWN0aXZlVmFsdWUobWF0Y2gudHlwZSk7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGlzRGlyZWN0aXZlQXRTdGFydChub2RlLCBkaXJlY3RpdmVWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtYXRjaCByYW5nZSBjb3JyZXNwb25kcyB0byB0aGlzIHNwZWNpZmljIGRpcmVjdGl2ZSBwb3NpdGlvblxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlTm9kZSA9IGJvZHkuYm9keVswXTtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZVN0YXJ0ID0gZGlyZWN0aXZlTm9kZS5zdGFydCE7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVFbmQgPSBkaXJlY3RpdmVOb2RlLmVuZCE7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIE1hdGNoIGJhc2VkIG9uIHBvc2l0aW9uIC0gdGhlIG1hdGNoIHNob3VsZCBvdmVybGFwIHdpdGggdGhlIGRpcmVjdGl2ZSBub2RlXG4gICAgICAgICAgICBjb25zdCBtYXRjaE92ZXJsYXBzID0gbWF0Y2hPdmVybGFwc0RpcmVjdGl2ZShtYXRjaC5yYW5nZSwgZGlyZWN0aXZlU3RhcnQsIGRpcmVjdGl2ZUVuZCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChtYXRjaE92ZXJsYXBzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGdldEZ1bmN0aW9uTmFtZShub2RlKSB8fCBcImFub255bW91c1wiO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgY29udGV4dHMgYmFzZWQgb24gdHJhdmVyc2FsIGNvbnRleHRcbiAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaW5GdW5jdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVEZXNjID0gZnVuY3Rpb25OYW1lID09PSBcImFub255bW91c1wiID8gXCJcIiA6IGAgJyR7ZnVuY3Rpb25OYW1lfSdgO1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRnVuY3Rpb24ke25hbWVEZXNjfSB3aXRoICcke2RpcmVjdGl2ZVZhbHVlfScgZGlyZWN0aXZlIGNhbm5vdCBiZSBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgZnVuY3Rpb24uIERpcmVjdGl2ZXMgYXJlIG9ubHkgYWxsb3dlZCBpbiB0b3AtbGV2ZWwgZnVuY3Rpb25zLmAsXG4gICAgICAgICAgICAgICAgICByYW5nZTogbWF0Y2gucmFuZ2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaC50eXBlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIHRoaXMgZnVuY3Rpb24gZW50aXJlbHlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaW5DbGFzcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVEZXNjID0gZnVuY3Rpb25OYW1lID09PSBcImFub255bW91c1wiID8gXCJcIiA6IGAgJyR7ZnVuY3Rpb25OYW1lfSdgO1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgQ2xhc3MgbWV0aG9kJHtuYW1lRGVzY30gd2l0aCAnJHtkaXJlY3RpdmVWYWx1ZX0nIGRpcmVjdGl2ZSBpcyBub3Qgc3VwcG9ydGVkLiBEaXJlY3RpdmVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gdG9wLWxldmVsIGZ1bmN0aW9ucy5gLFxuICAgICAgICAgICAgICAgICAgcmFuZ2U6IG1hdGNoLnJhbmdlLFxuICAgICAgICAgICAgICAgICAgdHlwZTogbWF0Y2gudHlwZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCB0aGlzIGZ1bmN0aW9uIGVudGlyZWx5XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBPbmx5IGFsbG93IHNlcnZlciBkaXJlY3RpdmVzIGluIGZ1bmN0aW9uLWxldmVsIGNvbnRleHRzXG4gICAgICAgICAgICAgIGlmIChtYXRjaC50eXBlID09PSBcInNlcnZlclwiKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb25Ob2Rlcy5wdXNoKHsgbm9kZSwgbWF0Y2gsIGNvbnRleHQ6IGNvbnRleHQuaW5GdW5jdGlvbiA/IFwibmVzdGVkXCIgOiBjb250ZXh0LmluQ2xhc3MgPyBcImNsYXNzXCIgOiBcInRvcC1sZXZlbFwiIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIHdhcm5pbmcgZm9yIGNsaWVudCBkaXJlY3RpdmVzIGluIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkZ1bmN0aW9uLWxldmVsICd1c2UgY2xpZW50JyBpc24ndCBhbGxvd2VkXCIsXG4gICAgICAgICAgICAgICAgICByYW5nZTogbWF0Y2gucmFuZ2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNsaWVudFwiXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIENvbnRpbnVlIHRyYXZlcnNhbCB3aXRoIHVwZGF0ZWQgY29udGV4dCAobm93IGluc2lkZSBhIGZ1bmN0aW9uKVxuICAgICAgdHJhdmVyc2VDaGlsZHJlbihub2RlLCB7IGluRnVuY3Rpb246IHRydWUsIGluQ2xhc3M6IGNvbnRleHQuaW5DbGFzcyB9KTtcbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gXCJDbGFzc0RlY2xhcmF0aW9uXCIgfHwgbm9kZS50eXBlID09PSBcIkNsYXNzRXhwcmVzc2lvblwiKSB7XG4gICAgICAvLyBDb250aW51ZSB0cmF2ZXJzYWwgd2l0aCB1cGRhdGVkIGNvbnRleHQgKG5vdyBpbnNpZGUgYSBjbGFzcylcbiAgICAgIHRyYXZlcnNlQ2hpbGRyZW4obm9kZSwgeyBpbkZ1bmN0aW9uOiBjb250ZXh0LmluRnVuY3Rpb24sIGluQ2xhc3M6IHRydWUgfSk7XG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IFwiTWV0aG9kRGVmaW5pdGlvblwiKSB7XG4gICAgICAvLyBNZXRob2QgZGVmaW5pdGlvbnMgYXJlIGluc2lkZSBjbGFzc2VzXG4gICAgICB0cmF2ZXJzZUNoaWxkcmVuKG5vZGUsIHsgaW5GdW5jdGlvbjogY29udGV4dC5pbkZ1bmN0aW9uLCBpbkNsYXNzOiB0cnVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250aW51ZSB3aXRoIHNhbWUgY29udGV4dFxuICAgICAgdHJhdmVyc2VDaGlsZHJlbihub2RlLCBjb250ZXh0KTtcbiAgICB9XG4gIH1cbiAgXG4gIGZ1bmN0aW9uIHRyYXZlcnNlQ2hpbGRyZW4obm9kZTogTm9kZSwgY29udGV4dDogeyBpbkZ1bmN0aW9uOiBib29sZWFuLCBpbkNsYXNzOiBib29sZWFuIH0pIHtcbiAgICBjb25zdCBub2RlV2l0aENoaWxkcmVuID0gbm9kZSBhcyBhbnk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbm9kZVdpdGhDaGlsZHJlbikge1xuICAgICAgaWYgKGtleSA9PT0gJ3BhcmVudCcgfHwga2V5ID09PSAnc3RhcnQnIHx8IGtleSA9PT0gJ2VuZCcgfHwga2V5ID09PSAnbG9jJyB8fCBrZXkgPT09ICdyYW5nZScpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IHZhbHVlID0gbm9kZVdpdGhDaGlsZHJlbltrZXldO1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNoaWxkICYmIHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcgJiYgY2hpbGQudHlwZSkge1xuICAgICAgICAgICAgICB0cmF2ZXJzZVdpdGhDb250ZXh0KGNoaWxkLCBjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlwZSkge1xuICAgICAgICAgIHRyYXZlcnNlV2l0aENvbnRleHQodmFsdWUsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBTdGFydCB0cmF2ZXJzYWwgYXQgdG9wIGxldmVsIChub3QgaW4gZnVuY3Rpb24gb3IgY2xhc3MpXG4gIHRyYXZlcnNlV2l0aENvbnRleHQoYXN0LCB7IGluRnVuY3Rpb246IGZhbHNlLCBpbkNsYXNzOiBmYWxzZSB9KTtcblxuICAvLyBTZWNvbmQgcGFzczogcHJvY2VzcyBmdW5jdGlvbnMgaW4gb3JkZXJcbiAgZm9yIChjb25zdCB7IG5vZGUsIG1hdGNoIH0gb2YgZnVuY3Rpb25Ob2Rlcykge1xuICAgIGNvbnN0IG5hbWUgPSBnZXRGdW5jdGlvbk5hbWUobm9kZSkgfHwgXCJhbm9ueW1vdXNcIjtcbiAgICBjb25zdCBleHBvcnROYW1lID0gZ2V0RXhwb3J0ZWROYW1lKG5vZGUpO1xuICAgIGNvbnN0IGZ1bmN0aW9uS2V5ID0gYCR7bmFtZX0tJHtleHBvcnROYW1lIHx8ICcnfS0ke21hdGNoLnJhbmdlWzBdfWA7XG5cbiAgICAvLyBTa2lwIGlmIHdlJ3ZlIGFscmVhZHkgcHJvY2Vzc2VkIHRoaXMgZnVuY3Rpb25cbiAgICBpZiAocHJvY2Vzc2VkRnVuY3Rpb25zLmhhcyhmdW5jdGlvbktleSkpIGNvbnRpbnVlO1xuICAgIHByb2Nlc3NlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25LZXkpO1xuXG4gICAgcHJvY2Vzc0Z1bmN0aW9uTm9kZShub2RlLCBuYW1lLCBleHBvcnROYW1lLCBtYXRjaCwgZGlyZWN0aXZlSW5mbyk7XG4gIH1cblxuICAvLyBBZGQgd2FybmluZ3MgZm9yIG1peGVkIHNlcnZlci9jbGllbnQgZGlyZWN0aXZlc1xuICBpZiAoZGlyZWN0aXZlSW5mby5maWxlTGV2ZWwgJiYgZGlyZWN0aXZlSW5mby5mdW5jdGlvbkxldmVsLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGNvbnN0IGZ1bmMgb2YgZGlyZWN0aXZlSW5mby5mdW5jdGlvbkxldmVsKSB7XG4gICAgICBpZiAoZGlyZWN0aXZlSW5mby5maWxlTGV2ZWwudHlwZSAhPT0gZnVuYy50eXBlKSB7XG4gICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgbWVzc2FnZTogYENhbm5vdCBoYXZlIGJvdGggJ3VzZSAke2RpcmVjdGl2ZUluZm8uZmlsZUxldmVsLnR5cGV9JyBhbmQgJ3VzZSAke2Z1bmMudHlwZX0nIGRpcmVjdGl2ZXMgaW4gdGhlIHNhbWUgZmlsZWAsXG4gICAgICAgICAgcmFuZ2U6IGZ1bmMucmFuZ2UsXG4gICAgICAgICAgdHlwZTogXCJzZXJ2ZXJcIlxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZnVuYy50eXBlICE9PSBcInNlcnZlclwiKSB7XG4gICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgbWVzc2FnZTogYEZ1bmN0aW9uLWxldmVsIGRpcmVjdGl2ZXMgc2hvdWxkIGJlICd1c2Ugc2VydmVyJywgYnV0IGdvdCAndXNlICR7ZnVuYy50eXBlfSdgLFxuICAgICAgICAgIHJhbmdlOiBmdW5jLnJhbmdlLFxuICAgICAgICAgIHR5cGU6IFwiY2xpZW50XCJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXJlY3RpdmVJbmZvLndhcm5pbmdzLnB1c2goe1xuICAgICAgICAgIG1lc3NhZ2U6IGAndXNlIHNlcnZlcicgaXMgYWxyZWFkeSBkZWZpbmVkIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsIHRoaXMgZGlyZWN0aXZlIHNob3VsZCBiZSByZW1vdmVkLmAsXG4gICAgICAgICAgcmFuZ2U6IGZ1bmMucmFuZ2UsXG4gICAgICAgICAgdHlwZTogXCJzZXJ2ZXJcIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlyZWN0aXZlSW5mbztcbn0gIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUF3Qk8sU0FBUyxpQkFBQSxDQUNkLEdBQ0EsRUFBQSxNQUFBLEVBQ0EsZ0JBQ2UsRUFBQTtBQUNmLEVBQUEsTUFBTSxVQUFjLEdBQUEsZ0JBQUEsSUFBb0IsSUFBUSxJQUFBLE9BQU8sZ0JBQXFCLEtBQUEsUUFBQTtBQUM1RSxFQUFBLE1BQU0sbUJBQW1CLFVBQWMsSUFBQSxTQUFBLElBQWEsZ0JBQ2hELEdBQUEsZ0JBQUEsR0FDQSxxQkFBcUIsTUFBTSxDQUFBO0FBRS9CLEVBQUEsTUFBTSxhQUErQixHQUFBO0FBQUEsSUFDbkMsU0FBVyxFQUFBLElBQUE7QUFBQSxJQUNYLGVBQWUsRUFBQztBQUFBLElBQ2hCLFVBQVU7QUFBQyxHQUNiO0FBR0EsRUFBQSxJQUFJLGlCQUFvQixHQUFBLEtBQUE7QUFDeEIsRUFBQSxJQUFJLGNBQXdDLEdBQUEsSUFBQTtBQUM1QyxFQUFBLElBQUksT0FBVSxHQUFBLFVBQUEsSUFBYyxTQUFhLElBQUEsZ0JBQUEsSUFBb0IsZ0JBQWlCLENBQUEsT0FBQTtBQUM5RSxFQUFXLEtBQUEsTUFBQSxJQUFBLElBQVEsSUFBSSxJQUFNLEVBQUE7QUFFM0IsSUFBQSxJQUFJLE9BQVMsRUFBQTtBQUNYLE1BQUEsT0FBQSxDQUFRLElBQUksc0NBQXdDLEVBQUE7QUFBQSxRQUNsRCxNQUFNLElBQUssQ0FBQSxJQUFBO0FBQUEsUUFDWCxPQUFPLElBQUssQ0FBQSxLQUFBO0FBQUEsUUFDWixLQUFLLElBQUssQ0FBQSxHQUFBO0FBQUEsUUFDVixTQUFXLEVBQUEsV0FBQSxJQUFlLElBQU8sR0FBQSxJQUFBLENBQUssU0FBWSxHQUFBLE1BQUE7QUFB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
248
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZURpcmVjdGl2ZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbi9sb2FkZXIvZGlyZWN0aXZlcy9hbmFseXplRGlyZWN0aXZlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaW5kRGlyZWN0aXZlTWF0Y2hlcyB9IGZyb20gXCIuL2ZpbmREaXJlY3RpdmVNYXRjaGVzLmpzXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uTm9kZSB9IGZyb20gXCIuL3R5cGVHdWFyZHMuanNcIjtcbmltcG9ydCB7IGdldEZ1bmN0aW9uQm9keSB9IGZyb20gXCIuL2dldEZ1bmN0aW9uQm9keS5qc1wiO1xuaW1wb3J0IHsgZ2V0RnVuY3Rpb25OYW1lIH0gZnJvbSBcIi4vZ2V0RnVuY3Rpb25OYW1lLmpzXCI7XG5pbXBvcnQgeyBnZXRFeHBvcnRlZE5hbWUgfSBmcm9tIFwiLi9nZXRFeHBvcnRlZE5hbWUuanNcIjtcbmltcG9ydCB7IHByb2Nlc3NGdW5jdGlvbk5vZGUgfSBmcm9tIFwiLi9wcm9jZXNzRnVuY3Rpb25Ob2RlLmpzXCI7XG5pbXBvcnQge1xuICBpc0RpcmVjdGl2ZUF0U3RhcnQsXG4gIGdldERpcmVjdGl2ZVZhbHVlLFxuICBtYXRjaE92ZXJsYXBzRGlyZWN0aXZlLFxufSBmcm9tIFwiLi91dGlscy5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBEaXJlY3RpdmVJbmZvLFxuICBEaXJlY3RpdmVNYXRjaCxcbiAgRGlyZWN0aXZlTWF0Y2hlcyxcbn0gZnJvbSBcIi4vdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgTm9kZSwgUHJvZ3JhbSB9IGZyb20gXCJhY29yblwiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIHR5cGUgTG9nZ2VyIH0gZnJvbSBcInZpdGVcIjtcblxuLyoqXG4gKiBBbmFseXplcyBkaXJlY3RpdmVzIGluIHRoZSBnaXZlbiBzb3VyY2UgYW5kIEFTVCwgcmV0dXJuaW5nIGRpcmVjdGl2ZUluZm8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplRGlyZWN0aXZlcyhcbiAgYXN0OiBQcm9ncmFtLFxuICBzb3VyY2U6IHN0cmluZyxcbiAgbWF0Y2hlcz86IERpcmVjdGl2ZU1hdGNoZXMsXG4gIGxvZ2dlcj86IExvZ2dlclxuKTogRGlyZWN0aXZlSW5mbztcbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplRGlyZWN0aXZlcyhcbiAgYXN0OiBQcm9ncmFtLFxuICBzb3VyY2U6IHN0cmluZyxcbiAgb3B0aW9ucz86IERpcmVjdGl2ZU9wdGlvbnMsXG4gIGxvZ2dlcj86IExvZ2dlclxuKTogRGlyZWN0aXZlSW5mbztcbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplRGlyZWN0aXZlcyhcbiAgYXN0OiBQcm9ncmFtLFxuICBzb3VyY2U6IHN0cmluZyxcbiAgb3B0aW9uc09yTWF0Y2hlcz86IERpcmVjdGl2ZU1hdGNoZXMgfCBEaXJlY3RpdmVPcHRpb25zLFxuICBfbG9nZ2VyPzogTG9nZ2VyXG4pOiBEaXJlY3RpdmVJbmZvIHtcbiAgY29uc3QgaGFzT3B0aW9ucyA9XG4gICAgb3B0aW9uc09yTWF0Y2hlcyAhPSBudWxsICYmIHR5cGVvZiBvcHRpb25zT3JNYXRjaGVzID09PSBcIm9iamVjdFwiO1xuICBjb25zdCBkaXJlY3RpdmVNYXRjaGVzID1cbiAgICBoYXNPcHRpb25zICYmIFwibWF0Y2hlc1wiIGluIG9wdGlvbnNPck1hdGNoZXNcbiAgICAgID8gb3B0aW9uc09yTWF0Y2hlc1xuICAgICAgOiBmaW5kRGlyZWN0aXZlTWF0Y2hlcyhzb3VyY2UpO1xuXG4gIGNvbnN0IGRpcmVjdGl2ZUluZm86IERpcmVjdGl2ZUluZm8gPSB7XG4gICAgZmlsZUxldmVsOiBudWxsLFxuICAgIGZ1bmN0aW9uTGV2ZWw6IFtdLFxuICAgIHdhcm5pbmdzOiBbXSxcbiAgfTtcblxuICAvLyBGaW5kIGZpbGUtbGV2ZWwgZGlyZWN0aXZlcyBieSBjaGVja2luZyBBU1RcbiAgbGV0IGZvdW5kTm9uRGlyZWN0aXZlID0gZmFsc2U7XG4gIGxldCBmaXJzdERpcmVjdGl2ZTogRGlyZWN0aXZlTWF0Y2ggfCBudWxsID0gbnVsbDtcbiAgY29uc3QgdmVyYm9zZSA9XG4gICAgaGFzT3B0aW9ucyAmJlxuICAgIHR5cGVvZiBvcHRpb25zT3JNYXRjaGVzID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJ2ZXJib3NlXCIgaW4gb3B0aW9uc09yTWF0Y2hlcyAmJlxuICAgIG9wdGlvbnNPck1hdGNoZXMudmVyYm9zZTtcbiAgY29uc3QgbG9nZ2VyID1cbiAgICBoYXNPcHRpb25zICYmXG4gICAgdHlwZW9mIG9wdGlvbnNPck1hdGNoZXMgPT09IFwib2JqZWN0XCIgJiZcbiAgICBcImxvZ2dlclwiIGluIG9wdGlvbnNPck1hdGNoZXNcbiAgICAgID8gb3B0aW9uc09yTWF0Y2hlcy5sb2dnZXIgPz8gX2xvZ2dlciA/PyBjcmVhdGVMb2dnZXIoKVxuICAgICAgOiBfbG9nZ2VyID8/IGNyZWF0ZUxvZ2dlcigpO1xuICAvLyBDaGVjayBpZiB0aGlzIGxvb2tzIGxpa2UgVml0ZS1pbmplY3RlZCBjb2RlXG4gIGNvbnN0IGlzVml0ZUluamVjdGVkQ29kZSA9XG4gICAgc291cmNlLmluY2x1ZGVzKFwiX192aXRlX19jcmVhdGVIb3RDb250ZXh0XCIpIHx8XG4gICAgc291cmNlLmluY2x1ZGVzKFwiaW1wb3J0Lm1ldGEuaG90XCIpIHx8XG4gICAgc291cmNlLmluY2x1ZGVzKFwiaW1wb3J0Lm1ldGEuZW52XCIpIHx8XG4gICAgc291cmNlLmluY2x1ZGVzKFwiL0B2aXRlL2NsaWVudFwiKTtcblxuICBmb3IgKGNvbnN0IG5vZGUgb2YgYXN0LmJvZHkpIHtcbiAgICAvLyBEZWJ1ZyBsb2dnaW5nXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2FuYWx5emVEaXJlY3RpdmVzXSBQcm9jZXNzaW5nIG5vZGU6ICR7bm9kZS50eXBlfSBzdGFydDogJHtub2RlLnN0YXJ0fSBlbmQ6ICR7bm9kZS5lbmR9XG5kaXJlY3RpdmU6ICR7XCJkaXJlY3RpdmVcIiBpbiBub2RlID8gbm9kZS5kaXJlY3RpdmUgOiBcIm5vbmVcIn1cbmJlZm9yZU5vZGU6ICR7bm9kZS5zdGFydCEgPiAwID8gSlNPTi5zdHJpbmdpZnkoc291cmNlLnNsaWNlKDAsIG5vZGUuc3RhcnQhKSkuc2xpY2UoMCwgMTAwKSA6IFwibm9uZVwifWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gT25seSBjaGVjayBmb3IgZGlyZWN0aXZlcyBpbiBleHByZXNzaW9uIHN0YXRlbWVudHNcbiAgICBpZiAobm9kZS50eXBlID09PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIikge1xuICAgICAgbGV0IGRpcmVjdGl2ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgICBpZiAoXCJkaXJlY3RpdmVcIiBpbiBub2RlICYmIHR5cGVvZiBub2RlLmRpcmVjdGl2ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBkaXJlY3RpdmUgPSBub2RlLmRpcmVjdGl2ZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIG5vZGUuZXhwcmVzc2lvbi50eXBlID09PSBcIkxpdGVyYWxcIiAmJlxuICAgICAgICB0eXBlb2Ygbm9kZS5leHByZXNzaW9uLnZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgIChub2RlLmV4cHJlc3Npb24udmFsdWUgPT09IFwidXNlIHNlcnZlclwiIHx8XG4gICAgICAgICAgbm9kZS5leHByZXNzaW9uLnZhbHVlID09PSBcInVzZSBjbGllbnRcIilcbiAgICAgICkge1xuICAgICAgICBkaXJlY3RpdmUgPSBub2RlLmV4cHJlc3Npb24udmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJlY3RpdmUpIHtcbiAgICAgICAgY29uc3QgZ2V0RGlyZWN0aXZlVHlwZSA9XG4gICAgICAgICAgb3B0aW9uc09yTWF0Y2hlcyAhPSBudWxsICYmIFwibG9hZGVyXCIgaW4gb3B0aW9uc09yTWF0Y2hlc1xuICAgICAgICAgICAgPyBvcHRpb25zT3JNYXRjaGVzLmxvYWRlcj8uZ2V0RGlyZWN0aXZlVHlwZVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPVxuICAgICAgICAgIGdldERpcmVjdGl2ZVR5cGU/LihkaXJlY3RpdmUpID8/XG4gICAgICAgICAgKGRpcmVjdGl2ZSA9PT0gXCJ1c2Ugc2VydmVyXCIgPyBcInNlcnZlclwiIDogXCJjbGllbnRcIik7XG4gICAgICAgIGlmICghZmlyc3REaXJlY3RpdmUpIHtcbiAgICAgICAgICBmaXJzdERpcmVjdGl2ZSA9IHsgdHlwZSwgcmFuZ2U6IFtub2RlLnN0YXJ0ISwgbm9kZS5lbmQhXSB9O1xuICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgYFthbmFseXplRGlyZWN0aXZlc10gRm91bmQgZmlyc3QgZGlyZWN0aXZlOiAke2RpcmVjdGl2ZX0gYXQgcmFuZ2U6ICR7W1xuICAgICAgICAgICAgICAgIG5vZGUuc3RhcnQhLFxuICAgICAgICAgICAgICAgIG5vZGUuZW5kISxcbiAgICAgICAgICAgICAgXX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXJlY3RpdmVJbmZvLndhcm5pbmdzLnB1c2goe1xuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJDYW5ub3QgaGF2ZSBib3RoICd1c2UgY2xpZW50JyBhbmQgJ3VzZSBzZXJ2ZXInIGRpcmVjdGl2ZXMgaW4gdGhlIHNhbWUgZmlsZVwiLFxuICAgICAgICAgICAgcmFuZ2U6IFswLCAwXSxcbiAgICAgICAgICAgIHR5cGU6IFwic2VydmVyXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoaXMgZXhwcmVzc2lvbiBzdGF0ZW1lbnQgaXMgbm90IGEgZGlyZWN0aXZlLCBzbyBtYXJrIGFzIG5vbi1kaXJlY3RpdmVcbiAgICAgICAgLy8gaWYgd2UgaGF2ZW4ndCBmb3VuZCB0aGUgZmlyc3QgZGlyZWN0aXZlIHlldFxuICAgICAgICBpZiAoIWZpcnN0RGlyZWN0aXZlKSB7XG4gICAgICAgICAgZm91bmROb25EaXJlY3RpdmUgPSB0cnVlO1xuICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgYFthbmFseXplRGlyZWN0aXZlc10gRm91bmQgbm9uLWRpcmVjdGl2ZSBleHByZXNzaW9uIGJlZm9yZSBmaXJzdCBkaXJlY3RpdmUsIHNldHRpbmcgZm91bmROb25EaXJlY3RpdmU9dHJ1ZWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9ubHkgbWFyayBhY3R1YWwgY29kZSAobm90IGltcG9ydHMvZXhwb3J0cykgYXMgbm9uLWRpcmVjdGl2ZVxuICAgICAgLy8gaWYgd2UgaGF2ZW4ndCBmb3VuZCB0aGUgZmlyc3QgZGlyZWN0aXZlIHlldFxuICAgICAgaWYgKCFmaXJzdERpcmVjdGl2ZSkge1xuICAgICAgICBmb3VuZE5vbkRpcmVjdGl2ZSA9IHRydWU7XG4gICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgW2FuYWx5emVEaXJlY3RpdmVzXSBGb3VuZCBub24tZGlyZWN0aXZlIG5vZGUgYmVmb3JlIGZpcnN0IGRpcmVjdGl2ZTogJHtub2RlLnR5cGV9LCBzZXR0aW5nIGZvdW5kTm9uRGlyZWN0aXZlPXRydWVgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoaXMgbm9kZSBpcyBhZnRlciBhbnkgY29tbWVudHMgb3Igbm9uLXdoaXRlc3BhY2UgY29udGVudFxuICAgIC8vIE9ubHkgbWF0dGVycyBpZiB3ZSBoYXZlbid0IGZvdW5kIHRoZSBmaXJzdCBkaXJlY3RpdmUgeWV0XG4gICAgaWYgKCFmaXJzdERpcmVjdGl2ZSAmJiBub2RlLnN0YXJ0ISA+IDApIHtcbiAgICAgIGNvbnN0IGJlZm9yZU5vZGUgPSBzb3VyY2Uuc2xpY2UoMCwgbm9kZS5zdGFydCEpLnRyaW0oKTtcbiAgICAgIGlmIChiZWZvcmVOb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm91bmROb25EaXJlY3RpdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFthbmFseXplRGlyZWN0aXZlc10gRm91bmQgY29udGVudCBiZWZvcmUgZmlyc3QgZGlyZWN0aXZlOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICBiZWZvcmVOb2RlLnNsaWNlKDAsIDEwMClcbiAgICAgICAgICAgICl9LCBzZXR0aW5nIGZvdW5kTm9uRGlyZWN0aXZlPXRydWVgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCB0aGUgZmlyc3QgZGlyZWN0aXZlIGFzIGZpbGUtbGV2ZWwgaWYgZm91bmRcbiAgaWYgKGZpcnN0RGlyZWN0aXZlKSB7XG4gICAgZGlyZWN0aXZlSW5mby5maWxlTGV2ZWwgPSBmaXJzdERpcmVjdGl2ZTtcblxuICAgIC8vIENoZWNrIGlmIHRoZXJlIHdhcyBjb250ZW50IChpbmNsdWRpbmcgY29tbWVudHMpIGJlZm9yZSB0aGUgZGlyZWN0aXZlXG4gICAgaWYgKCFmb3VuZE5vbkRpcmVjdGl2ZSAmJiBmaXJzdERpcmVjdGl2ZS5yYW5nZVswXSA+IDApIHtcbiAgICAgIGNvbnN0IGJlZm9yZURpcmVjdGl2ZSA9IHNvdXJjZS5zbGljZSgwLCBmaXJzdERpcmVjdGl2ZS5yYW5nZVswXSkudHJpbSgpO1xuICAgICAgaWYgKGJlZm9yZURpcmVjdGl2ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvdW5kTm9uRGlyZWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBbYW5hbHl6ZURpcmVjdGl2ZXNdIEZvdW5kIGNvbnRlbnQgYmVmb3JlIGRpcmVjdGl2ZTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgYmVmb3JlRGlyZWN0aXZlXG4gICAgICAgICAgICApfSwgc2V0dGluZyBmb3VuZE5vbkRpcmVjdGl2ZT10cnVlIGZvciBkaXJlY3RpdmVgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9ubHkgd2FybiBhYm91dCBkaXJlY3RpdmUgcGxhY2VtZW50IGlmIGl0J3Mgbm90IFZpdGUtaW5qZWN0ZWQgY29kZVxuICAgIGlmIChmb3VuZE5vbkRpcmVjdGl2ZSAmJiAhaXNWaXRlSW5qZWN0ZWRDb2RlKSB7XG4gICAgICBkaXJlY3RpdmVJbmZvLndhcm5pbmdzLnB1c2goe1xuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiRmlsZS1sZXZlbCBkaXJlY3RpdmVzIG11c3QgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSwgYmVmb3JlIGFueSBvdGhlciBjb2RlXCIsXG4gICAgICAgIHJhbmdlOiBbZmlyc3REaXJlY3RpdmUucmFuZ2VbMF0sIGZpcnN0RGlyZWN0aXZlLnJhbmdlWzFdXSxcbiAgICAgICAgdHlwZTogZmlyc3REaXJlY3RpdmUudHlwZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByb2Nlc3MgZnVuY3Rpb24tbGV2ZWwgZGlyZWN0aXZlc1xuICBjb25zdCBmdW5jdGlvbkxldmVsTWF0Y2hlcyA9IGRpcmVjdGl2ZU1hdGNoZXMubWF0Y2hlcy5maWx0ZXIoXG4gICAgKG1hdGNoOiBEaXJlY3RpdmVNYXRjaCkgPT4ge1xuICAgICAgLy8gU2tpcCBpZiB0aGlzIG1hdGNoIGlzIGFscmVhZHkgdXNlZCBhcyBhIGZpbGUtbGV2ZWwgZGlyZWN0aXZlXG4gICAgICBpZiAoXG4gICAgICAgIGRpcmVjdGl2ZUluZm8uZmlsZUxldmVsICYmXG4gICAgICAgIG1hdGNoLnJhbmdlWzBdID09PSBkaXJlY3RpdmVJbmZvLmZpbGVMZXZlbC5yYW5nZVswXSAmJlxuICAgICAgICBtYXRjaC5yYW5nZVsxXSA9PT0gZGlyZWN0aXZlSW5mby5maWxlTGV2ZWwucmFuZ2VbMV1cbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICk7XG5cbiAgY29uc3QgcHJvY2Vzc2VkRnVuY3Rpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8gRmlyc3QgcGFzczogY29sbGVjdCBhbGwgZnVuY3Rpb24gbm9kZXMgd2l0aCB0aGVpciBkaXJlY3RpdmVzXG4gIGNvbnN0IGZ1bmN0aW9uTm9kZXM6IEFycmF5PHtcbiAgICBub2RlOiBOb2RlO1xuICAgIG1hdGNoOiBEaXJlY3RpdmVNYXRjaDtcbiAgICBjb250ZXh0OiBzdHJpbmc7XG4gIH0+ID0gW107XG5cbiAgLy8gVHJhY2sgY29udGV4dCBkdXJpbmcgdHJhdmVyc2FsXG4gIGZ1bmN0aW9uIHRyYXZlcnNlV2l0aENvbnRleHQoXG4gICAgbm9kZTogTm9kZSxcbiAgICBjb250ZXh0OiB7IGluRnVuY3Rpb246IGJvb2xlYW47IGluQ2xhc3M6IGJvb2xlYW4gfVxuICApIHtcbiAgICBpZiAoaXNGdW5jdGlvbk5vZGUobm9kZSkpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBnZXRGdW5jdGlvbkJvZHkobm9kZSk7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICAvLyBDaGVjayBpZiBkaXJlY3RpdmUgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmdW5jdGlvbiBib2R5XG4gICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgZnVuY3Rpb25MZXZlbE1hdGNoZXMpIHtcbiAgICAgICAgICBjb25zdCBkaXJlY3RpdmVWYWx1ZSA9IGdldERpcmVjdGl2ZVZhbHVlKG1hdGNoLnR5cGUpO1xuXG4gICAgICAgICAgaWYgKGlzRGlyZWN0aXZlQXRTdGFydChub2RlLCBkaXJlY3RpdmVWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtYXRjaCByYW5nZSBjb3JyZXNwb25kcyB0byB0aGlzIHNwZWNpZmljIGRpcmVjdGl2ZSBwb3NpdGlvblxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlTm9kZSA9IGJvZHkuYm9keVswXTtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZVN0YXJ0ID0gZGlyZWN0aXZlTm9kZS5zdGFydCE7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVFbmQgPSBkaXJlY3RpdmVOb2RlLmVuZCE7XG5cbiAgICAgICAgICAgIC8vIE1hdGNoIGJhc2VkIG9uIHBvc2l0aW9uIC0gdGhlIG1hdGNoIHNob3VsZCBvdmVybGFwIHdpdGggdGhlIGRpcmVjdGl2ZSBub2RlXG4gICAgICAgICAgICBjb25zdCBtYXRjaE92ZXJsYXBzID0gbWF0Y2hPdmVybGFwc0RpcmVjdGl2ZShcbiAgICAgICAgICAgICAgbWF0Y2gucmFuZ2UsXG4gICAgICAgICAgICAgIGRpcmVjdGl2ZVN0YXJ0LFxuICAgICAgICAgICAgICBkaXJlY3RpdmVFbmRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaE92ZXJsYXBzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGdldEZ1bmN0aW9uTmFtZShub2RlKSB8fCBcImFub255bW91c1wiO1xuXG4gICAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIGNvbnRleHRzIGJhc2VkIG9uIHRyYXZlcnNhbCBjb250ZXh0XG4gICAgICAgICAgICAgIGlmIChjb250ZXh0LmluRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lRGVzYyA9XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPT09IFwiYW5vbnltb3VzXCIgPyBcIlwiIDogYCAnJHtmdW5jdGlvbk5hbWV9J2A7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlSW5mby53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGdW5jdGlvbiR7bmFtZURlc2N9IHdpdGggJyR7ZGlyZWN0aXZlVmFsdWV9JyBkaXJlY3RpdmUgY2Fubm90IGJlIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBmdW5jdGlvbi4gRGlyZWN0aXZlcyBhcmUgb25seSBhbGxvd2VkIGluIHRvcC1sZXZlbCBmdW5jdGlvbnMuYCxcbiAgICAgICAgICAgICAgICAgIHJhbmdlOiBtYXRjaC5yYW5nZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IG1hdGNoLnR5cGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIHRoaXMgZnVuY3Rpb24gZW50aXJlbHlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjb250ZXh0LmluQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lRGVzYyA9XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPT09IFwiYW5vbnltb3VzXCIgPyBcIlwiIDogYCAnJHtmdW5jdGlvbk5hbWV9J2A7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlSW5mby53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBDbGFzcyBtZXRob2Qke25hbWVEZXNjfSB3aXRoICcke2RpcmVjdGl2ZVZhbHVlfScgZGlyZWN0aXZlIGlzIG5vdCBzdXBwb3J0ZWQuIERpcmVjdGl2ZXMgYXJlIG9ubHkgYWxsb3dlZCBpbiB0b3AtbGV2ZWwgZnVuY3Rpb25zLmAsXG4gICAgICAgICAgICAgICAgICByYW5nZTogbWF0Y2gucmFuZ2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBtYXRjaC50eXBlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCB0aGlzIGZ1bmN0aW9uIGVudGlyZWx5XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBPbmx5IGFsbG93IHNlcnZlciBkaXJlY3RpdmVzIGluIGZ1bmN0aW9uLWxldmVsIGNvbnRleHRzXG4gICAgICAgICAgICAgIGlmIChtYXRjaC50eXBlID09PSBcInNlcnZlclwiKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb25Ob2Rlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQuaW5GdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICA/IFwibmVzdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgOiBjb250ZXh0LmluQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgPyBcImNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcInRvcC1sZXZlbFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIHdhcm5pbmcgZm9yIGNsaWVudCBkaXJlY3RpdmVzIGluIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUluZm8ud2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkZ1bmN0aW9uLWxldmVsICd1c2UgY2xpZW50JyBpc24ndCBhbGxvd2VkXCIsXG4gICAgICAgICAgICAgICAgICByYW5nZTogbWF0Y2gucmFuZ2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImNsaWVudFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDb250aW51ZSB0cmF2ZXJzYWwgd2l0aCB1cGRhdGVkIGNvbnRleHQgKG5vdyBpbnNpZGUgYSBmdW5jdGlvbilcbiAgICAgIHRyYXZlcnNlQ2hpbGRyZW4obm9kZSwgeyBpbkZ1bmN0aW9uOiB0cnVlLCBpbkNsYXNzOiBjb250ZXh0LmluQ2xhc3MgfSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJDbGFzc0RlY2xhcmF0aW9uXCIgfHxcbiAgICAgIG5vZGUudHlwZSA9PT0gXCJDbGFzc0V4cHJlc3Npb25cIlxuICAgICkge1xuICAgICAgLy8gQ29udGludWUgdHJhdmVyc2FsIHdpdGggdXBkYXRlZCBjb250ZXh0IChub3cgaW5zaWRlIGEgY2xhc3MpXG4gICAgICB0cmF2ZXJzZUNoaWxkcmVuKG5vZGUsIHsgaW5GdW5jdGlvbjogY29udGV4dC5pbkZ1bmN0aW9uLCBpbkNsYXNzOiB0cnVlIH0pO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcIk1ldGhvZERlZmluaXRpb25cIikge1xuICAgICAgLy8gTWV0aG9kIGRlZmluaXRpb25zIGFyZSBpbnNpZGUgY2xhc3Nlc1xuICAgICAgdHJhdmVyc2VDaGlsZHJlbihub2RlLCB7IGluRnVuY3Rpb246IGNvbnRleHQuaW5GdW5jdGlvbiwgaW5DbGFzczogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29udGludWUgd2l0aCBzYW1lIGNvbnRleHRcbiAgICAgIHRyYXZlcnNlQ2hpbGRyZW4obm9kZSwgY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlbihcbiAgICBub2RlOiBOb2RlLFxuICAgIGNvbnRleHQ6IHsgaW5GdW5jdGlvbjogYm9vbGVhbjsgaW5DbGFzczogYm9vbGVhbiB9XG4gICkge1xuICAgIGNvbnN0IG5vZGVXaXRoQ2hpbGRyZW4gPSBub2RlIGFzIGFueTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBub2RlV2l0aENoaWxkcmVuKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGtleSA9PT0gXCJwYXJlbnRcIiB8fFxuICAgICAgICBrZXkgPT09IFwic3RhcnRcIiB8fFxuICAgICAgICBrZXkgPT09IFwiZW5kXCIgfHxcbiAgICAgICAga2V5ID09PSBcImxvY1wiIHx8XG4gICAgICAgIGtleSA9PT0gXCJyYW5nZVwiXG4gICAgICApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gbm9kZVdpdGhDaGlsZHJlbltrZXldO1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQgJiYgdHlwZW9mIGNoaWxkID09PSBcIm9iamVjdFwiICYmIGNoaWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgdHJhdmVyc2VXaXRoQ29udGV4dChjaGlsZCwgY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUpIHtcbiAgICAgICAgICB0cmF2ZXJzZVdpdGhDb250ZXh0KHZhbHVlLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXJ0IHRyYXZlcnNhbCBhdCB0b3AgbGV2ZWwgKG5vdCBpbiBmdW5jdGlvbiBvciBjbGFzcylcbiAgdHJhdmVyc2VXaXRoQ29udGV4dChhc3QsIHsgaW5GdW5jdGlvbjogZmFsc2UsIGluQ2xhc3M6IGZhbHNlIH0pO1xuXG4gIC8vIFNlY29uZCBwYXNzOiBwcm9jZXNzIGZ1bmN0aW9ucyBpbiBvcmRlclxuICBmb3IgKGNvbnN0IHsgbm9kZSwgbWF0Y2ggfSBvZiBmdW5jdGlvbk5vZGVzKSB7XG4gICAgY29uc3QgbmFtZSA9IGdldEZ1bmN0aW9uTmFtZShub2RlKSB8fCBcImFub255bW91c1wiO1xuICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBnZXRFeHBvcnRlZE5hbWUobm9kZSk7XG4gICAgY29uc3QgZnVuY3Rpb25LZXkgPSBgJHtuYW1lfS0ke2V4cG9ydE5hbWUgfHwgXCJcIn0tJHttYXRjaC5yYW5nZVswXX1gO1xuXG4gICAgLy8gU2tpcCBpZiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCB0aGlzIGZ1bmN0aW9uXG4gICAgaWYgKHByb2Nlc3NlZEZ1bmN0aW9ucy5oYXMoZnVuY3Rpb25LZXkpKSBjb250aW51ZTtcbiAgICBwcm9jZXNzZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uS2V5KTtcblxuICAgIHByb2Nlc3NGdW5jdGlvbk5vZGUobm9kZSwgbmFtZSwgZXhwb3J0TmFtZSwgbWF0Y2gsIGRpcmVjdGl2ZUluZm8pO1xuICB9XG5cbiAgLy8gQWRkIHdhcm5pbmdzIGZvciBtaXhlZCBzZXJ2ZXIvY2xpZW50IGRpcmVjdGl2ZXNcbiAgaWYgKGRpcmVjdGl2ZUluZm8uZmlsZUxldmVsICYmIGRpcmVjdGl2ZUluZm8uZnVuY3Rpb25MZXZlbC5sZW5ndGggPiAwKSB7XG4gICAgZm9yIChjb25zdCBmdW5jIG9mIGRpcmVjdGl2ZUluZm8uZnVuY3Rpb25MZXZlbCkge1xuICAgICAgaWYgKGRpcmVjdGl2ZUluZm8uZmlsZUxldmVsLnR5cGUgIT09IGZ1bmMudHlwZSkge1xuICAgICAgICBkaXJlY3RpdmVJbmZvLndhcm5pbmdzLnB1c2goe1xuICAgICAgICAgIG1lc3NhZ2U6IGBDYW5ub3QgaGF2ZSBib3RoICd1c2UgJHtkaXJlY3RpdmVJbmZvLmZpbGVMZXZlbC50eXBlfScgYW5kICd1c2UgJHtmdW5jLnR5cGV9JyBkaXJlY3RpdmVzIGluIHRoZSBzYW1lIGZpbGVgLFxuICAgICAgICAgIHJhbmdlOiBmdW5jLnJhbmdlLFxuICAgICAgICAgIHR5cGU6IFwic2VydmVyXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChmdW5jLnR5cGUgIT09IFwic2VydmVyXCIpIHtcbiAgICAgICAgZGlyZWN0aXZlSW5mby53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgICBtZXNzYWdlOiBgRnVuY3Rpb24tbGV2ZWwgZGlyZWN0aXZlcyBzaG91bGQgYmUgJ3VzZSBzZXJ2ZXInLCBidXQgZ290ICd1c2UgJHtmdW5jLnR5cGV9J2AsXG4gICAgICAgICAgcmFuZ2U6IGZ1bmMucmFuZ2UsXG4gICAgICAgICAgdHlwZTogXCJjbGllbnRcIixcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXJlY3RpdmVJbmZvLndhcm5pbmdzLnB1c2goe1xuICAgICAgICAgIG1lc3NhZ2U6IGAndXNlIHNlcnZlcicgaXMgYWxyZWFkeSBkZWZpbmVkIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsIHRoaXMgZGlyZWN0aXZlIHNob3VsZCBiZSByZW1vdmVkLmAsXG4gICAgICAgICAgcmFuZ2U6IGZ1bmMucmFuZ2UsXG4gICAgICAgICAgdHlwZTogXCJzZXJ2ZXJcIixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpcmVjdGl2ZUluZm87XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFtQ08sU0FBUyxpQkFDZCxDQUFBLEdBQUEsRUFDQSxNQUNBLEVBQUEsZ0JBQUEsRUFDQSxPQUNlLEVBQUE7QUFDZixFQUFBLE1BQU0sVUFDSixHQUFBLGdCQUFBLElBQW9CLElBQVEsSUFBQSxPQUFPLGdCQUFxQixLQUFBLFFBQUE7QUFDMUQsRUFBQSxNQUFNLG1CQUNKLFVBQWMsSUFBQSxTQUFBLElBQWEsZ0JBQ3ZCLEdBQUEsZ0JBQUEsR0FDQSxxQkFBcUIsTUFBTSxDQUFBO0FBRWpDLEVBQUEsTUFBTSxhQUErQixHQUFBO0FBQUEsSUFDbkMsU0FBVyxFQUFBLElBQUE7QUFBQSxJQUNYLGVBQWUsRUFBQztBQUFBLElBQ2hCLFVBQVU7QUFBQyxHQUNiO0FBR0EsRUFBQSxJQUFJLGlCQUFvQixHQUFBLEtBQUE7QUFDeEIsRUFBQSxJ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