vite-plugin-react-server 1.1.20 → 1.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -395
- package/dist/_virtual/dynamic-import-helper.js +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -2
- package/dist/index.js +1 -1
- package/dist/package.json +58 -25
- package/dist/plugin/components/{css-collector-elements.d.ts → css.d.ts} +2 -2
- package/dist/plugin/components/css.d.ts.map +1 -0
- package/dist/plugin/components/css.js +33 -0
- package/dist/plugin/components/html.d.ts +1 -1
- package/dist/plugin/components/html.d.ts.map +1 -1
- package/dist/plugin/components/html.js +5 -5
- package/dist/plugin/components/index.d.ts +3 -3
- package/dist/plugin/components/index.d.ts.map +1 -1
- package/dist/plugin/components/index.js +9 -3
- package/dist/plugin/components/root.d.ts +7 -0
- package/dist/plugin/components/root.d.ts.map +1 -0
- package/dist/plugin/components/root.js +18 -0
- package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js +1 -1
- package/dist/plugin/config/autoDiscover/customWorkerFiles.js +1 -1
- package/dist/plugin/config/autoDiscover/pageAndPropFiles.js +1 -1
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts +5 -4
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +26 -7
- package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts +25 -2
- package/dist/plugin/config/autoDiscover/resolveBuildPages.d.ts.map +1 -1
- package/dist/plugin/config/autoDiscover/resolveBuildPages.js +84 -5
- package/dist/plugin/config/createModuleID.d.ts +3 -6
- package/dist/plugin/config/createModuleID.d.ts.map +1 -1
- package/dist/plugin/config/createModuleID.js +42 -32
- package/dist/plugin/config/defaults.d.ts +199 -121
- package/dist/plugin/config/defaults.d.ts.map +1 -1
- package/dist/plugin/config/defaults.js +155 -89
- package/dist/plugin/config/extMap.d.ts +6 -2
- package/dist/plugin/config/extMap.d.ts.map +1 -1
- package/dist/plugin/config/extMap.js +38 -48
- package/dist/plugin/config/flightBindings.d.ts +4 -0
- package/dist/plugin/config/flightBindings.d.ts.map +1 -0
- package/dist/plugin/config/flightBindings.js +215 -0
- package/dist/plugin/config/getCondition.d.ts +2 -0
- package/dist/plugin/config/getCondition.d.ts.map +1 -1
- package/dist/plugin/config/getCondition.js +4 -2
- package/dist/plugin/config/getPaths.js +1 -1
- package/dist/plugin/config/index.d.ts +17 -4
- package/dist/plugin/config/index.d.ts.map +1 -1
- package/dist/plugin/config/index.js +29 -7
- package/dist/plugin/config/interpolatePattern.d.ts +13 -0
- package/dist/plugin/config/interpolatePattern.d.ts.map +1 -0
- package/dist/plugin/config/interpolatePattern.js +13 -0
- package/dist/plugin/config/mimeTypes.js +1 -1
- package/dist/plugin/config/parsePattern.d.ts +25 -0
- package/dist/plugin/config/parsePattern.d.ts.map +1 -0
- package/dist/plugin/config/parsePattern.js +30 -0
- package/dist/plugin/config/resolveAllowedDirectives.d.ts +26 -0
- package/dist/plugin/config/resolveAllowedDirectives.d.ts.map +1 -0
- package/dist/plugin/config/resolveAllowedDirectives.js +35 -0
- package/dist/plugin/config/resolveDirectiveMatcher.d.ts +25 -0
- package/dist/plugin/config/resolveDirectiveMatcher.d.ts.map +1 -0
- package/dist/plugin/config/resolveDirectiveMatcher.js +33 -0
- package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
- package/dist/plugin/config/resolveEnv.js +14 -4
- package/dist/plugin/config/resolveOptions.d.ts +13 -3
- package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
- package/dist/plugin/config/resolveOptions.js +228 -206
- package/dist/plugin/config/resolvePages.js +1 -1
- package/dist/plugin/config/resolvePatternWithValues.d.ts +39 -0
- package/dist/plugin/config/resolvePatternWithValues.d.ts.map +1 -0
- package/dist/plugin/config/resolvePatternWithValues.js +36 -0
- package/dist/plugin/config/resolveRegExp.d.ts +29 -0
- package/dist/plugin/config/resolveRegExp.d.ts.map +1 -0
- package/dist/plugin/config/resolveRegExp.js +39 -0
- package/dist/plugin/config/resolveUrlOption.d.ts +37 -6
- package/dist/plugin/config/resolveUrlOption.d.ts.map +1 -1
- package/dist/plugin/config/resolveUrlOption.js +42 -12
- package/dist/plugin/config/resolveUserConfig.d.ts +5 -4
- package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
- package/dist/plugin/config/resolveUserConfig.js +86 -40
- package/dist/plugin/env/plugin.d.ts +6 -0
- package/dist/plugin/env/plugin.d.ts.map +1 -1
- package/dist/plugin/env/plugin.js +111 -93
- package/dist/plugin/error/directiveError.d.ts +13 -0
- package/dist/plugin/error/directiveError.d.ts.map +1 -0
- package/dist/plugin/error/directiveError.js +21 -0
- package/dist/plugin/error/enhanceError.d.ts +14 -0
- package/dist/plugin/error/enhanceError.d.ts.map +1 -0
- package/dist/plugin/error/enhanceError.js +24 -0
- package/dist/plugin/error/index.d.ts +4 -0
- package/dist/plugin/error/index.d.ts.map +1 -0
- package/dist/plugin/error/index.js +9 -0
- package/dist/plugin/error/logError.d.ts +3 -0
- package/dist/plugin/error/logError.d.ts.map +1 -0
- package/dist/plugin/error/logError.js +47 -0
- package/dist/plugin/error/serializeError.d.ts +7 -0
- package/dist/plugin/error/serializeError.d.ts.map +1 -0
- package/dist/plugin/error/serializeError.js +37 -0
- package/dist/plugin/error/toError.d.ts +1 -8
- package/dist/plugin/error/toError.d.ts.map +1 -1
- package/dist/plugin/error/toError.js +62 -34
- package/dist/plugin/file-preserver/plugin.js +93 -105
- package/dist/plugin/getNodeEnv.d.ts +11 -0
- package/dist/plugin/getNodeEnv.d.ts.map +1 -0
- package/dist/plugin/getNodeEnv.js +17 -0
- package/dist/plugin/helpers/cleanObject.d.ts.map +1 -1
- package/dist/plugin/helpers/cleanObject.js +2 -1
- package/dist/plugin/helpers/collectManifestCss.js +1 -1
- package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +6 -4
- package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
- package/dist/plugin/helpers/collectViteModuleGraphCss.js +15 -9
- package/dist/plugin/helpers/createCssProps.d.ts +3 -4
- package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
- package/dist/plugin/helpers/createCssProps.js +16 -4
- package/dist/plugin/helpers/createEventHandler.d.ts +2 -2
- package/dist/plugin/helpers/createEventHandler.d.ts.map +1 -1
- package/dist/plugin/helpers/createEventHandler.js +1 -1
- package/dist/plugin/helpers/createHandler.d.ts +10 -8
- package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
- package/dist/plugin/helpers/createHandler.js +11 -5
- package/dist/plugin/helpers/createRscStream.d.ts +18 -5
- package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
- package/dist/plugin/helpers/createRscStream.js +48 -14
- package/dist/plugin/helpers/formatMetrics.d.ts +1 -5
- package/dist/plugin/helpers/formatMetrics.d.ts.map +1 -1
- package/dist/plugin/helpers/formatMetrics.js +2 -39
- package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
- package/dist/plugin/helpers/getBundleManifest.js +9 -2
- package/dist/plugin/helpers/getRouteFiles.d.ts +30 -2
- package/dist/plugin/helpers/getRouteFiles.d.ts.map +1 -1
- package/dist/plugin/helpers/getRouteFiles.js +70 -7
- package/dist/plugin/helpers/handleServerAction.d.ts +8 -7
- package/dist/plugin/helpers/handleServerAction.d.ts.map +1 -1
- package/dist/plugin/helpers/handleServerAction.js +5 -2
- package/dist/plugin/helpers/hydrateUserOptions.d.ts +9 -0
- package/dist/plugin/helpers/hydrateUserOptions.d.ts.map +1 -0
- package/dist/plugin/helpers/hydrateUserOptions.js +22 -0
- package/dist/plugin/helpers/index.d.ts +2 -0
- package/dist/plugin/helpers/index.d.ts.map +1 -1
- package/dist/plugin/helpers/index.js +31 -31
- package/dist/plugin/helpers/inputNormalizer.d.ts +1 -1
- package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
- package/dist/plugin/helpers/inputNormalizer.js +33 -20
- package/dist/plugin/helpers/metrics.d.ts +4 -10
- package/dist/plugin/helpers/metrics.d.ts.map +1 -1
- package/dist/plugin/helpers/metrics.js +3 -59
- package/dist/plugin/helpers/moduleRefs.js +1 -1
- package/dist/plugin/helpers/moduleResolver.d.ts +24 -2
- package/dist/plugin/helpers/moduleResolver.d.ts.map +1 -1
- package/dist/plugin/helpers/moduleResolver.js +61 -22
- package/dist/plugin/helpers/requestInfo.d.ts +28 -1
- package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
- package/dist/plugin/helpers/requestInfo.js +43 -30
- package/dist/plugin/helpers/requestToRoute.d.ts +1 -1
- package/dist/plugin/helpers/requestToRoute.d.ts.map +1 -1
- package/dist/plugin/helpers/requestToRoute.js +17 -9
- package/dist/plugin/helpers/resolveComponent.d.ts +57 -0
- package/dist/plugin/helpers/resolveComponent.d.ts.map +1 -0
- package/dist/plugin/helpers/resolveComponent.js +71 -0
- package/dist/plugin/helpers/resolveComponents.d.ts +27 -0
- package/dist/plugin/helpers/resolveComponents.d.ts.map +1 -0
- package/dist/plugin/helpers/resolveComponents.js +137 -0
- package/dist/plugin/helpers/resolvePage.d.ts +15 -11
- package/dist/plugin/helpers/resolvePage.d.ts.map +1 -1
- package/dist/plugin/helpers/resolvePage.js +11 -7
- package/dist/plugin/helpers/resolvePageAndProps.d.ts +3 -10
- package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
- package/dist/plugin/helpers/resolvePageAndProps.js +28 -18
- package/dist/plugin/helpers/resolveProps.d.ts +13 -7
- package/dist/plugin/helpers/resolveProps.d.ts.map +1 -1
- package/dist/plugin/helpers/resolveProps.js +55 -25
- package/dist/plugin/helpers/resolveUserComponents.d.ts +33 -0
- package/dist/plugin/helpers/resolveUserComponents.d.ts.map +1 -0
- package/dist/plugin/helpers/resolveUserComponents.js +163 -0
- package/dist/plugin/helpers/serializeUserOptions.d.ts +7 -7
- package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -1
- package/dist/plugin/helpers/serializeUserOptions.js +127 -42
- package/dist/plugin/helpers/stashReturnValue.d.ts +2 -1
- package/dist/plugin/helpers/stashReturnValue.d.ts.map +1 -1
- package/dist/plugin/helpers/stashReturnValue.js +6 -3
- package/dist/plugin/helpers/tryManifest.d.ts +1 -2
- package/dist/plugin/helpers/tryManifest.d.ts.map +1 -1
- package/dist/plugin/helpers/tryManifest.js +1 -1
- package/dist/plugin/loader/createDefaultLoader.d.ts +19 -8
- package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -1
- package/dist/plugin/loader/createDefaultLoader.js +69 -107
- package/dist/plugin/loader/createTransformer.d.ts +6 -0
- package/dist/plugin/loader/createTransformer.d.ts.map +1 -0
- package/dist/plugin/loader/createTransformer.js +97 -0
- package/dist/plugin/loader/{css-loader.development.d.ts → css-loader.d.ts} +6 -8
- package/dist/plugin/loader/css-loader.d.ts.map +1 -0
- package/dist/plugin/loader/css-loader.js +134 -0
- package/dist/plugin/loader/directives/addLocalExportedNames.d.ts +4 -0
- package/dist/plugin/loader/directives/addLocalExportedNames.d.ts.map +1 -0
- package/dist/plugin/loader/directives/addLocalExportedNames.js +57 -0
- package/dist/plugin/loader/directives/analyzeDirectives.d.ts +9 -0
- package/dist/plugin/loader/directives/analyzeDirectives.d.ts.map +1 -0
- package/dist/plugin/loader/directives/analyzeDirectives.js +221 -0
- package/dist/plugin/loader/directives/analyzeModule.d.ts +11 -0
- package/dist/plugin/loader/directives/analyzeModule.d.ts.map +1 -0
- package/dist/plugin/loader/directives/analyzeModule.js +34 -0
- package/dist/plugin/loader/directives/collectExports.d.ts +13 -0
- package/dist/plugin/loader/directives/collectExports.d.ts.map +1 -0
- package/dist/plugin/loader/directives/collectExports.js +116 -0
- package/dist/plugin/loader/directives/collectExportsFromModule.d.ts +6 -0
- package/dist/plugin/loader/directives/collectExportsFromModule.d.ts.map +1 -0
- package/dist/plugin/loader/directives/collectExportsFromModule.js +24 -0
- package/dist/plugin/loader/directives/findDirectiveMatches.d.ts +3 -0
- package/dist/plugin/loader/directives/findDirectiveMatches.d.ts.map +1 -0
- package/dist/plugin/loader/directives/findDirectiveMatches.js +46 -0
- package/dist/plugin/loader/directives/getExportedName.d.ts +3 -0
- package/dist/plugin/loader/directives/getExportedName.d.ts.map +1 -0
- package/dist/plugin/loader/directives/getExportedName.js +59 -0
- package/dist/plugin/loader/directives/getExports.d.ts +7 -0
- package/dist/plugin/loader/directives/getExports.d.ts.map +1 -0
- package/dist/plugin/loader/directives/getExports.js +28 -0
- package/dist/plugin/loader/directives/getFunctionBody.d.ts +3 -0
- package/dist/plugin/loader/directives/getFunctionBody.d.ts.map +1 -0
- package/dist/plugin/loader/directives/getFunctionBody.js +31 -0
- package/dist/plugin/loader/directives/getFunctionName.d.ts +10 -0
- package/dist/plugin/loader/directives/getFunctionName.d.ts.map +1 -0
- package/dist/plugin/loader/directives/getFunctionName.js +42 -0
- package/dist/plugin/loader/directives/getQualifiedName.d.ts +3 -0
- package/dist/plugin/loader/directives/getQualifiedName.d.ts.map +1 -0
- package/dist/plugin/loader/directives/getQualifiedName.js +65 -0
- package/dist/plugin/loader/directives/index.d.ts +14 -0
- package/dist/plugin/loader/directives/index.d.ts.map +1 -0
- package/dist/plugin/loader/directives/index.js +18 -0
- package/dist/plugin/loader/directives/processFunctionNode.d.ts +4 -0
- package/dist/plugin/loader/directives/processFunctionNode.d.ts.map +1 -0
- package/dist/plugin/loader/directives/processFunctionNode.js +86 -0
- package/dist/plugin/loader/directives/typeGuards.d.ts +37 -0
- package/dist/plugin/loader/directives/typeGuards.d.ts.map +1 -0
- package/dist/plugin/loader/directives/typeGuards.js +100 -0
- package/dist/plugin/loader/directives/types.d.ts +154 -0
- package/dist/plugin/loader/directives/types.d.ts.map +1 -0
- package/dist/plugin/loader/directives/utils.d.ts +14 -0
- package/dist/plugin/loader/directives/utils.d.ts.map +1 -0
- package/dist/plugin/loader/directives/utils.js +21 -0
- package/dist/plugin/loader/env-loader.d.ts +11 -0
- package/dist/plugin/loader/env-loader.d.ts.map +1 -0
- package/dist/plugin/loader/env-loader.js +65 -0
- package/dist/plugin/loader/index.d.ts +8 -1
- package/dist/plugin/loader/index.d.ts.map +1 -1
- package/dist/plugin/loader/index.js +13 -4
- package/dist/plugin/loader/parse.d.ts +11 -2
- package/dist/plugin/loader/parse.d.ts.map +1 -1
- package/dist/plugin/loader/parse.js +29 -6
- package/dist/plugin/loader/react-loader.d.ts +22 -1
- package/dist/plugin/loader/react-loader.d.ts.map +1 -1
- package/dist/plugin/loader/react-loader.js +169 -6
- package/dist/plugin/loader/removeDirectives.d.ts +5 -0
- package/dist/plugin/loader/removeDirectives.d.ts.map +1 -0
- package/dist/plugin/loader/removeDirectives.js +17 -0
- package/dist/plugin/loader/removeRanges.d.ts +5 -0
- package/dist/plugin/loader/removeRanges.d.ts.map +1 -0
- package/dist/plugin/loader/removeRanges.js +20 -0
- package/dist/plugin/loader/sourceMap.d.ts +16 -24
- package/dist/plugin/loader/sourceMap.d.ts.map +1 -1
- package/dist/plugin/loader/sourceMap.js +125 -97
- package/dist/plugin/loader/transformClientModule.d.ts +10 -0
- package/dist/plugin/loader/transformClientModule.d.ts.map +1 -0
- package/dist/plugin/loader/transformClientModule.js +46 -0
- package/dist/plugin/loader/transformModule.d.ts +6 -0
- package/dist/plugin/loader/transformModule.d.ts.map +1 -0
- package/dist/plugin/loader/transformModule.js +33 -0
- package/dist/plugin/loader/transformModuleIfNeeded.d.ts +12 -1
- package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -1
- package/dist/plugin/loader/transformModuleIfNeeded.js +9 -20
- package/dist/plugin/loader/transformServerModule.d.ts +11 -0
- package/dist/plugin/loader/transformServerModule.d.ts.map +1 -0
- package/dist/plugin/loader/transformServerModule.js +84 -0
- package/dist/plugin/loader/transformWithAcornLoose.d.ts +12 -0
- package/dist/plugin/loader/transformWithAcornLoose.d.ts.map +1 -0
- package/dist/plugin/loader/transformWithAcornLoose.js +18 -0
- package/dist/plugin/loader/types.d.ts +59 -12
- package/dist/plugin/loader/types.d.ts.map +1 -1
- package/dist/plugin/metrics/collectStreamMetrics.d.ts +9 -0
- package/dist/plugin/metrics/collectStreamMetrics.d.ts.map +1 -0
- package/dist/plugin/metrics/collectStreamMetrics.js +35 -0
- package/dist/plugin/metrics/createRenderMetrics.d.ts +3 -0
- package/dist/plugin/metrics/createRenderMetrics.d.ts.map +1 -0
- package/dist/plugin/metrics/createRenderMetrics.js +24 -0
- package/dist/plugin/metrics/createStreamMetrics.d.ts +3 -0
- package/dist/plugin/metrics/createStreamMetrics.d.ts.map +1 -0
- package/dist/plugin/metrics/createStreamMetrics.js +19 -0
- package/dist/plugin/metrics/formatMetrics.d.ts +6 -3
- package/dist/plugin/metrics/formatMetrics.d.ts.map +1 -1
- package/dist/plugin/metrics/formatMetrics.js +5 -2
- package/dist/plugin/metrics/index.d.ts +3 -1
- package/dist/plugin/metrics/index.d.ts.map +1 -1
- package/dist/plugin/metrics/index.js +9 -1
- package/dist/plugin/metrics/types.d.ts +23 -0
- package/dist/plugin/metrics/types.d.ts.map +1 -0
- package/dist/plugin/metrics/types.js +1 -0
- package/dist/plugin/plugin.client.d.ts +23 -2
- package/dist/plugin/plugin.client.d.ts.map +1 -1
- package/dist/plugin/plugin.client.js +30 -17
- package/dist/plugin/plugin.server.d.ts +13 -2
- package/dist/plugin/plugin.server.d.ts.map +1 -1
- package/dist/plugin/plugin.server.js +7 -4
- package/dist/plugin/preserver/plugin.d.ts +2 -2
- package/dist/plugin/preserver/plugin.d.ts.map +1 -1
- package/dist/plugin/preserver/plugin.js +33 -29
- package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts +11 -0
- package/dist/plugin/react-client/cleanupWorkerServerAction.d.ts.map +1 -0
- package/dist/plugin/react-client/cleanupWorkerServerAction.js +18 -0
- package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts +9 -9
- package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -1
- package/dist/plugin/react-client/configureWorkerRequestHandler.js +25 -14
- package/dist/plugin/react-client/createMessageHandlers.d.ts +1 -1
- package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
- package/dist/plugin/react-client/createMessageHandlers.js +15 -3
- package/dist/plugin/react-client/createWorkerStream.d.ts +12 -10
- package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
- package/dist/plugin/react-client/createWorkerStream.js +27 -29
- package/dist/plugin/react-client/handleWorkerRscStream.d.ts +13 -8
- package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -1
- package/dist/plugin/react-client/handleWorkerRscStream.js +59 -24
- package/dist/plugin/react-client/handleWorkerServerAction.d.ts +2 -1
- package/dist/plugin/react-client/handleWorkerServerAction.d.ts.map +1 -1
- package/dist/plugin/react-client/handleWorkerServerAction.js +43 -28
- package/dist/plugin/react-client/index.d.ts +4 -1
- package/dist/plugin/react-client/index.d.ts.map +1 -1
- package/dist/plugin/react-client/index.js +10 -1
- package/dist/plugin/react-client/plugin.d.ts +5 -3
- package/dist/plugin/react-client/plugin.d.ts.map +1 -1
- package/dist/plugin/react-client/plugin.js +9 -11
- package/dist/plugin/react-client/restartWorker.d.ts +5 -4
- package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
- package/dist/plugin/react-client/restartWorker.js +12 -10
- package/dist/plugin/react-server/configureReactServer.d.ts +5 -4
- package/dist/plugin/react-server/configureReactServer.d.ts.map +1 -1
- package/dist/plugin/react-server/configureReactServer.js +98 -43
- package/dist/plugin/react-server/handleServerAction.d.ts +3 -2
- package/dist/plugin/react-server/handleServerAction.d.ts.map +1 -1
- package/dist/plugin/react-server/handleServerAction.js +14 -20
- package/dist/plugin/react-server/plugin.d.ts +3 -4
- package/dist/plugin/react-server/plugin.d.ts.map +1 -1
- package/dist/plugin/react-server/plugin.js +14 -17
- package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +8 -6
- package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -1
- package/dist/plugin/react-static/collectHtmlWorkerContent.js +4 -4
- package/dist/plugin/react-static/collectRscContent.d.ts +8 -6
- package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -1
- package/dist/plugin/react-static/collectRscContent.js +4 -4
- package/dist/plugin/react-static/configurePreviewServer.d.ts +6 -4
- package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -1
- package/dist/plugin/react-static/configurePreviewServer.js +38 -31
- package/dist/plugin/react-static/createBuildLoader.d.ts +5 -5
- package/dist/plugin/react-static/createBuildLoader.d.ts.map +1 -1
- package/dist/plugin/react-static/createBuildLoader.js +122 -30
- package/dist/plugin/react-static/fileWriter.js +1 -1
- package/dist/plugin/react-static/plugin.d.ts +3 -4
- package/dist/plugin/react-static/plugin.d.ts.map +1 -1
- package/dist/plugin/react-static/plugin.js +62 -47
- package/dist/plugin/react-static/renderPage.d.ts +4 -2
- package/dist/plugin/react-static/renderPage.d.ts.map +1 -1
- package/dist/plugin/react-static/renderPage.js +33 -17
- package/dist/plugin/react-static/renderPages.d.ts +4 -2
- package/dist/plugin/react-static/renderPages.d.ts.map +1 -1
- package/dist/plugin/react-static/renderPages.js +7 -6
- package/dist/plugin/react-static/renderStreams.d.ts +5 -22
- package/dist/plugin/react-static/renderStreams.d.ts.map +1 -1
- package/dist/plugin/react-static/renderStreams.js +6 -6
- package/dist/plugin/react-static/rscToHtmlStream.d.ts.map +1 -1
- package/dist/plugin/react-static/rscToHtmlStream.js +1 -1
- package/dist/plugin/react-static/temporaryReferences.js +1 -1
- package/dist/plugin/react-static/types.d.ts +0 -1
- package/dist/plugin/react-static/types.d.ts.map +1 -1
- package/dist/plugin/root.js +1 -1
- package/dist/plugin/transformer/plugin.js +1 -1
- package/dist/plugin/transformer/plugin.server.d.ts +5 -3
- package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
- package/dist/plugin/transformer/plugin.server.js +43 -44
- package/dist/plugin/types/css-tracking.d.ts +2 -2
- package/dist/plugin/types/css-tracking.d.ts.map +1 -1
- package/dist/plugin/types.d.ts +452 -192
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/types.js +2 -1
- package/dist/plugin/utils/callServer.js +1 -1
- package/dist/plugin/utils/createCallServer.d.ts +1 -1
- package/dist/plugin/utils/createCallServer.d.ts.map +1 -1
- package/dist/plugin/utils/createCallServer.js +1 -1
- package/dist/plugin/utils/createReactFetcher.d.ts +2 -3
- package/dist/plugin/utils/createReactFetcher.d.ts.map +1 -1
- package/dist/plugin/utils/createReactFetcher.js +1 -1
- package/dist/plugin/utils/env.js +1 -1
- package/dist/plugin/utils/envUrls.node.js +1 -1
- package/dist/plugin/utils/index.d.ts +1 -0
- package/dist/plugin/utils/index.d.ts.map +1 -1
- package/dist/plugin/utils/index.js +12 -5
- package/dist/plugin/utils/routeToURL.d.ts +12 -0
- package/dist/plugin/utils/routeToURL.d.ts.map +1 -0
- package/dist/plugin/utils/routeToURL.js +26 -0
- package/dist/plugin/utils/urls.d.ts.map +1 -1
- package/dist/plugin/utils/urls.js +5 -3
- package/dist/plugin/vendor/index.js +7 -1
- package/dist/plugin/vendor/vendor.client.js +1 -1
- package/dist/plugin/vendor/vendor.js +1 -1
- package/dist/plugin/vendor/vendor.server.js +1 -1
- package/dist/plugin/worker/createWorker.d.ts +31 -17
- package/dist/plugin/worker/createWorker.d.ts.map +1 -1
- package/dist/plugin/worker/createWorker.js +18 -12
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts +2 -2
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -1
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +5 -2
- package/dist/plugin/worker/html/html-worker.development.js +3 -3
- package/dist/plugin/worker/html/html-worker.production.js +1 -1
- package/dist/plugin/worker/html/index.d.ts +1 -1
- package/dist/plugin/worker/html/index.d.ts.map +1 -1
- package/dist/plugin/worker/html/index.js +1 -1
- package/dist/plugin/worker/html/messageHandler.d.ts +1 -1
- package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/html/messageHandler.js +9 -11
- package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts +3 -0
- package/dist/plugin/worker/html/sendHtmlWorkerMessage.d.ts.map +1 -0
- package/dist/plugin/worker/html/sendHtmlWorkerMessage.js +2 -0
- package/dist/plugin/worker/html/types.d.ts +20 -2
- package/dist/plugin/worker/html/types.d.ts.map +1 -1
- package/dist/plugin/worker/index.d.ts +3 -0
- package/dist/plugin/worker/index.d.ts.map +1 -0
- package/dist/plugin/worker/index.js +7 -0
- package/dist/plugin/worker/registerLoaders.js +2 -2
- package/dist/plugin/worker/rsc/handleRender.d.ts +4 -3
- package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/handleRender.js +54 -32
- package/dist/plugin/worker/rsc/handlers.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/handlers.js +19 -15
- package/dist/plugin/worker/rsc/index.d.ts +1 -1
- package/dist/plugin/worker/rsc/index.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/index.js +1 -1
- package/dist/plugin/worker/rsc/messageHandler.d.ts +1 -1
- package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/messageHandler.js +16 -4
- package/dist/plugin/worker/rsc/rsc-worker.development.js +77 -11
- package/dist/plugin/worker/rsc/rsc-worker.production.js +1 -1
- package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts +3 -0
- package/dist/plugin/worker/rsc/sendRscWorkerMessage.d.ts.map +1 -0
- package/dist/plugin/worker/rsc/sendRscWorkerMessage.js +11 -0
- package/dist/plugin/worker/rsc/state.js +1 -1
- package/dist/plugin/worker/rsc/types.d.ts +95 -0
- package/dist/plugin/worker/rsc/types.d.ts.map +1 -0
- package/dist/plugin/worker/rsc/types.js +1 -0
- package/dist/plugin/worker/rsc/userOptions.d.ts +1 -1
- package/dist/plugin/worker/rsc/userOptions.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/userOptions.js +3 -4
- package/dist/plugin/worker/sendMessage.d.ts +3 -4
- package/dist/plugin/worker/sendMessage.d.ts.map +1 -1
- package/dist/plugin/worker/sendMessage.js +15 -5
- package/dist/plugin/worker/types.d.ts +109 -260
- package/dist/plugin/worker/types.d.ts.map +1 -1
- package/dist/server.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +58 -25
- package/plugin/components/{css-collector-elements.tsx → css.tsx} +3 -3
- package/plugin/components/html.tsx +4 -4
- package/plugin/components/index.ts +3 -3
- package/plugin/components/root.tsx +20 -0
- package/plugin/config/autoDiscover/resolveAutoDiscover.ts +173 -134
- package/plugin/config/autoDiscover/resolveBuildPages.ts +120 -7
- package/plugin/config/createModuleID.ts +60 -39
- package/plugin/config/defaults.tsx +184 -95
- package/plugin/config/extMap.ts +51 -56
- package/plugin/config/flightBindings.ts +221 -0
- package/plugin/config/getCondition.ts +6 -0
- package/plugin/config/index.ts +17 -4
- package/plugin/config/interpolatePattern.ts +19 -0
- package/plugin/config/parsePattern.ts +81 -0
- package/plugin/config/resolveAllowedDirectives.ts +59 -0
- package/plugin/config/resolveDirectiveMatcher.ts +57 -0
- package/plugin/config/resolveEnv.ts +5 -10
- package/plugin/config/resolveOptions.ts +415 -299
- package/plugin/config/resolvePatternWithValues.ts +70 -0
- package/plugin/config/resolveRegExp.ts +89 -0
- package/plugin/config/resolveUrlOption.ts +92 -20
- package/plugin/config/resolveUserConfig.ts +417 -351
- package/plugin/env/plugin.ts +71 -7
- package/plugin/error/directiveError.ts +29 -0
- package/plugin/error/enhanceError.ts +41 -0
- package/plugin/error/index.ts +3 -0
- package/plugin/error/logError.ts +45 -0
- package/plugin/error/serializeError.ts +34 -0
- package/plugin/error/toError.ts +75 -45
- package/plugin/file-preserver/plugin.ts +3 -3
- package/plugin/getNodeEnv.ts +24 -0
- package/plugin/helpers/cleanObject.ts +2 -1
- package/plugin/helpers/collectViteModuleGraphCss.ts +138 -118
- package/plugin/helpers/createCssProps.tsx +41 -20
- package/plugin/helpers/createEventHandler.ts +1 -1
- package/plugin/helpers/createHandler.ts +40 -12
- package/plugin/helpers/createRscStream.tsx +97 -35
- package/plugin/helpers/formatMetrics.ts +2 -37
- package/plugin/helpers/getBundleManifest.ts +10 -1
- package/plugin/helpers/getRouteFiles.ts +112 -8
- package/plugin/helpers/handleServerAction.ts +10 -6
- package/plugin/helpers/hydrateUserOptions.ts +23 -0
- package/plugin/helpers/index.ts +4 -0
- package/plugin/helpers/inputNormalizer.ts +44 -24
- package/plugin/helpers/metrics.ts +4 -64
- package/plugin/helpers/moduleResolver.ts +74 -19
- package/plugin/helpers/requestInfo.ts +72 -52
- package/plugin/helpers/requestToRoute.ts +38 -12
- package/plugin/helpers/resolveComponent.ts +173 -0
- package/plugin/helpers/resolveComponents.ts +185 -0
- package/plugin/helpers/resolvePage.ts +35 -29
- package/plugin/helpers/resolvePageAndProps.ts +82 -61
- package/plugin/helpers/resolveProps.ts +100 -37
- package/plugin/helpers/resolveUserComponents.ts +190 -0
- package/plugin/helpers/serializeUserOptions.ts +190 -69
- package/plugin/helpers/stashReturnValue.ts +7 -4
- package/plugin/helpers/tryManifest.ts +1 -1
- package/plugin/loader/createDefaultLoader.ts +119 -119
- package/plugin/loader/createTransformer.ts +118 -0
- package/plugin/loader/css-loader.ts +206 -0
- package/plugin/loader/directives/addLocalExportedNames.ts +78 -0
- package/plugin/loader/directives/analyzeDirectives.ts +298 -0
- package/plugin/loader/directives/analyzeModule.ts +39 -0
- package/plugin/loader/directives/collectExports.ts +181 -0
- package/plugin/loader/directives/collectExportsFromModule.ts +25 -0
- package/plugin/loader/directives/findDirectiveMatches.ts +58 -0
- package/plugin/loader/directives/getExportedName.ts +73 -0
- package/plugin/loader/directives/getExports.ts +27 -0
- package/plugin/loader/directives/getFunctionBody.ts +32 -0
- package/plugin/loader/directives/getFunctionName.ts +70 -0
- package/plugin/loader/directives/getQualifiedName.ts +76 -0
- package/plugin/loader/directives/index.ts +13 -0
- package/plugin/loader/directives/processFunctionNode.ts +97 -0
- package/plugin/loader/directives/typeGuards.ts +160 -0
- package/plugin/loader/directives/types.ts +174 -0
- package/plugin/loader/directives/utils.ts +35 -0
- package/plugin/loader/{env-loader.development.ts → env-loader.ts} +8 -22
- package/plugin/loader/index.ts +8 -6
- package/plugin/loader/parse.ts +42 -12
- package/plugin/loader/react-loader.ts +255 -4
- package/plugin/loader/removeDirectives.ts +14 -0
- package/plugin/loader/removeRanges.ts +21 -0
- package/plugin/loader/sourceMap.ts +174 -84
- package/plugin/loader/transformClientModule.ts +64 -0
- package/plugin/loader/transformModule.ts +54 -0
- package/plugin/loader/transformModuleIfNeeded.ts +40 -40
- package/plugin/loader/transformServerModule.ts +136 -0
- package/plugin/loader/transformWithAcornLoose.ts +27 -0
- package/plugin/loader/types.ts +65 -13
- package/plugin/metrics/collectStreamMetrics.ts +38 -0
- package/plugin/metrics/createRenderMetrics.ts +17 -0
- package/plugin/metrics/createStreamMetrics.ts +14 -0
- package/plugin/metrics/formatMetrics.ts +7 -3
- package/plugin/metrics/index.ts +3 -1
- package/plugin/metrics/types.ts +24 -0
- package/plugin/plugin.client.ts +39 -15
- package/plugin/plugin.server.ts +39 -18
- package/plugin/preserver/plugin.ts +42 -42
- package/plugin/react-client/cleanupWorkerServerAction.ts +33 -0
- package/plugin/react-client/configureWorkerRequestHandler.ts +212 -201
- package/plugin/react-client/createMessageHandlers.ts +17 -3
- package/plugin/react-client/createWorkerStream.ts +55 -51
- package/plugin/react-client/handleWorkerRscStream.ts +141 -61
- package/plugin/react-client/handleWorkerServerAction.ts +59 -37
- package/plugin/react-client/index.ts +4 -1
- package/plugin/react-client/plugin.ts +17 -18
- package/plugin/react-client/restartWorker.ts +75 -70
- package/plugin/react-server/configureReactServer.ts +200 -142
- package/plugin/react-server/handleServerAction.ts +156 -160
- package/plugin/react-server/plugin.ts +18 -25
- package/plugin/react-static/collectHtmlWorkerContent.ts +109 -102
- package/plugin/react-static/collectRscContent.ts +55 -51
- package/plugin/react-static/configurePreviewServer.ts +110 -100
- package/plugin/react-static/createBuildLoader.ts +157 -48
- package/plugin/react-static/plugin.ts +368 -357
- package/plugin/react-static/renderPage.ts +43 -24
- package/plugin/react-static/renderPages.ts +21 -14
- package/plugin/react-static/renderStreams.ts +13 -15
- package/plugin/react-static/rscToHtmlStream.ts +4 -6
- package/plugin/react-static/types.ts +0 -3
- package/plugin/transformer/README.md +82 -8
- package/plugin/transformer/plugin.server.ts +55 -82
- package/plugin/types/css-tracking.ts +1 -1
- package/plugin/types/global.d.ts +2 -2
- package/plugin/types/react-server-dom-esm.d.ts +12 -13
- package/plugin/types.ts +685 -309
- package/plugin/utils/createCallServer.ts +5 -5
- package/plugin/utils/createReactFetcher.ts +4 -6
- package/plugin/utils/index.ts +2 -1
- package/plugin/utils/routeToURL.ts +34 -0
- package/plugin/utils/urls.ts +9 -6
- package/plugin/worker/createWorker.ts +67 -34
- package/plugin/worker/html/README.md +10 -0
- package/plugin/worker/html/createHtmlWorkerRenderState.tsx +7 -4
- package/plugin/worker/html/html-worker.development.tsx +4 -3
- package/plugin/worker/html/index.ts +3 -1
- package/plugin/worker/html/messageHandler.tsx +10 -16
- package/plugin/worker/html/sendHtmlWorkerMessage.ts +8 -0
- package/plugin/worker/html/types.ts +67 -1
- package/plugin/worker/index.ts +2 -0
- package/plugin/worker/registerLoaders.ts +3 -3
- package/plugin/worker/rsc/README.md +203 -1
- package/plugin/worker/rsc/handleRender.ts +76 -39
- package/plugin/worker/rsc/handlers.ts +30 -22
- package/plugin/worker/rsc/index.ts +2 -0
- package/plugin/worker/rsc/messageHandler.tsx +17 -10
- package/plugin/worker/rsc/rsc-worker.development.ts +104 -17
- package/plugin/worker/rsc/sendRscWorkerMessage.ts +7 -0
- package/plugin/worker/rsc/state.ts +1 -1
- package/plugin/worker/rsc/types.ts +185 -0
- package/plugin/worker/rsc/userOptions.ts +2 -3
- package/plugin/worker/sendMessage.ts +23 -14
- package/plugin/worker/types.ts +131 -386
- package/scripts/check-react-version.mjs +3 -3
- package/scripts/fix-unused-imports.mjs +77 -0
- package/tsconfig.json +1 -1
- package/dist/_virtual/dynamic-import-helper.js.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/plugin/components/css-collector-elements.d.ts.map +0 -1
- package/dist/plugin/components/css-collector-elements.js +0 -33
- package/dist/plugin/components/css-collector-elements.js.map +0 -1
- package/dist/plugin/components/css-collector.d.ts +0 -7
- package/dist/plugin/components/css-collector.d.ts.map +0 -1
- package/dist/plugin/components/css-collector.js +0 -18
- package/dist/plugin/components/css-collector.js.map +0 -1
- package/dist/plugin/components/html.js.map +0 -1
- package/dist/plugin/components.js +0 -9
- package/dist/plugin/components.js.map +0 -1
- package/dist/plugin/config/autoDiscover/createGlobAutoDiscover.js.map +0 -1
- package/dist/plugin/config/autoDiscover/customWorkerFiles.js.map +0 -1
- package/dist/plugin/config/autoDiscover/pageAndPropFiles.js.map +0 -1
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js.map +0 -1
- package/dist/plugin/config/autoDiscover/resolveBuildPages.js.map +0 -1
- package/dist/plugin/config/defaults.js.map +0 -1
- package/dist/plugin/config/extMap.js.map +0 -1
- package/dist/plugin/config/getCondition.js.map +0 -1
- package/dist/plugin/config/getPaths.js.map +0 -1
- package/dist/plugin/config/mimeTypes.js.map +0 -1
- package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts +0 -5
- package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts.map +0 -1
- package/dist/plugin/config/resolveAutoDiscoverMatcher.js +0 -25
- package/dist/plugin/config/resolveAutoDiscoverMatcher.js.map +0 -1
- package/dist/plugin/config/resolveEnv.js.map +0 -1
- package/dist/plugin/config/resolveOptions.js.map +0 -1
- package/dist/plugin/config/resolvePages.js.map +0 -1
- package/dist/plugin/config/resolveUrlOption.js.map +0 -1
- package/dist/plugin/config/resolveUserConfig.js.map +0 -1
- package/dist/plugin/config.js +0 -17
- package/dist/plugin/config.js.map +0 -1
- package/dist/plugin/env.js +0 -79
- package/dist/plugin/env.js.map +0 -1
- package/dist/plugin/error/toError.js.map +0 -1
- package/dist/plugin/file-preserver.js +0 -96
- package/dist/plugin/file-preserver.js.map +0 -1
- package/dist/plugin/helpers/cleanObject.js.map +0 -1
- package/dist/plugin/helpers/collectManifestCss.js.map +0 -1
- package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +0 -1
- package/dist/plugin/helpers/createCssProps.js.map +0 -1
- package/dist/plugin/helpers/createEventHandler.js.map +0 -1
- package/dist/plugin/helpers/createHandler.js.map +0 -1
- package/dist/plugin/helpers/createRscStream.js.map +0 -1
- package/dist/plugin/helpers/formatMetrics.js.map +0 -1
- package/dist/plugin/helpers/getBundleManifest.js.map +0 -1
- package/dist/plugin/helpers/getRouteFiles.js.map +0 -1
- package/dist/plugin/helpers/handleServerAction.js.map +0 -1
- package/dist/plugin/helpers/inputNormalizer.js.map +0 -1
- package/dist/plugin/helpers/metrics.js.map +0 -1
- package/dist/plugin/helpers/moduleRefs.js.map +0 -1
- package/dist/plugin/helpers/requestInfo.js.map +0 -1
- package/dist/plugin/helpers/requestToRoute.js.map +0 -1
- package/dist/plugin/helpers/resolvePage.js.map +0 -1
- package/dist/plugin/helpers/resolvePageAndProps.js.map +0 -1
- package/dist/plugin/helpers/resolveProps.js.map +0 -1
- package/dist/plugin/helpers/serializeUserOptions.js.map +0 -1
- package/dist/plugin/helpers/sourceMap.d.ts +0 -8
- package/dist/plugin/helpers/sourceMap.d.ts.map +0 -1
- package/dist/plugin/helpers/sourceMap.js +0 -136
- package/dist/plugin/helpers/stashReturnValue.js.map +0 -1
- package/dist/plugin/helpers/tryManifest.js.map +0 -1
- package/dist/plugin/helpers.js +0 -27
- package/dist/plugin/helpers.js.map +0 -1
- package/dist/plugin/loader/css-loader.development.d.ts.map +0 -1
- package/dist/plugin/loader/css-loader.development.js +0 -76
- package/dist/plugin/loader/css-loader.development.js.map +0 -1
- package/dist/plugin/loader/css-loader.production.d.ts +0 -31
- package/dist/plugin/loader/css-loader.production.d.ts.map +0 -1
- package/dist/plugin/loader/css-loader.production.js +0 -45
- package/dist/plugin/loader/css-loader.production.js.map +0 -1
- package/dist/plugin/loader/env-loader.development.d.ts +0 -13
- package/dist/plugin/loader/env-loader.development.d.ts.map +0 -1
- package/dist/plugin/loader/env-loader.development.js +0 -68
- package/dist/plugin/loader/handleExports.d.ts +0 -40
- package/dist/plugin/loader/handleExports.d.ts.map +0 -1
- package/dist/plugin/loader/handleExports.js +0 -209
- package/dist/plugin/loader/handleExports.js.map +0 -1
- package/dist/plugin/loader/parse.js.map +0 -1
- package/dist/plugin/loader/react-loader.client.d.ts +0 -2
- package/dist/plugin/loader/react-loader.client.d.ts.map +0 -1
- package/dist/plugin/loader/react-loader.client.js +0 -2
- package/dist/plugin/loader/react-loader.js.map +0 -1
- package/dist/plugin/loader/react-loader.server.d.ts +0 -21
- package/dist/plugin/loader/react-loader.server.d.ts.map +0 -1
- package/dist/plugin/loader/react-loader.server.js +0 -131
- package/dist/plugin/loader/transformModuleIfNeeded.js.map +0 -1
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts +0 -48
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts.map +0 -1
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +0 -428
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +0 -1
- package/dist/plugin/metrics/formatMetrics.js.map +0 -1
- package/dist/plugin/metrics.js +0 -7
- package/dist/plugin/metrics.js.map +0 -1
- package/dist/plugin/plugin.client.js.map +0 -1
- package/dist/plugin/plugin.server.js.map +0 -1
- package/dist/plugin/preserver/plugin.js.map +0 -1
- package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +0 -1
- package/dist/plugin/react-client/createMessageHandlers.js.map +0 -1
- package/dist/plugin/react-client/createWorkerStream.js.map +0 -1
- package/dist/plugin/react-client/handleWorkerRscStream.js.map +0 -1
- package/dist/plugin/react-client/handleWorkerServerAction.js.map +0 -1
- package/dist/plugin/react-client/plugin.js.map +0 -1
- package/dist/plugin/react-client/restartWorker.js.map +0 -1
- package/dist/plugin/react-server/configureReactServer.js.map +0 -1
- package/dist/plugin/react-server/handleServerAction.js.map +0 -1
- package/dist/plugin/react-server/plugin.js.map +0 -1
- package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +0 -1
- package/dist/plugin/react-static/collectRscContent.js.map +0 -1
- package/dist/plugin/react-static/configurePreviewServer.js.map +0 -1
- package/dist/plugin/react-static/createBuildLoader.js.map +0 -1
- package/dist/plugin/react-static/fileWriter.js.map +0 -1
- package/dist/plugin/react-static/plugin.js.map +0 -1
- package/dist/plugin/react-static/renderPage.js.map +0 -1
- package/dist/plugin/react-static/renderPages.js.map +0 -1
- package/dist/plugin/react-static/renderStreams.js.map +0 -1
- package/dist/plugin/react-static/rscToHtmlStream.js.map +0 -1
- package/dist/plugin/react-static/temporaryReferences.js.map +0 -1
- package/dist/plugin/root.js.map +0 -1
- package/dist/plugin/source-map/createMappingsSerializer.d.ts +0 -2
- package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +0 -1
- package/dist/plugin/source-map/createMappingsSerializer.js +0 -129
- package/dist/plugin/source-map/createMappingsSerializer.js.map +0 -1
- package/dist/plugin/source-map/readMappings.d.ts +0 -2
- package/dist/plugin/source-map/readMappings.d.ts.map +0 -1
- package/dist/plugin/source-map/readMappings.js +0 -200
- package/dist/plugin/transformer/plugin.client.d.ts +0 -2
- package/dist/plugin/transformer/plugin.client.d.ts.map +0 -1
- package/dist/plugin/transformer/plugin.js.map +0 -1
- package/dist/plugin/transformer/plugin.server.js.map +0 -1
- package/dist/plugin/utils/callServer.js.map +0 -1
- package/dist/plugin/utils/createCallServer.js.map +0 -1
- package/dist/plugin/utils/createReactFetcher.js.map +0 -1
- package/dist/plugin/utils/env.js.map +0 -1
- package/dist/plugin/utils/envUrls.node.js.map +0 -1
- package/dist/plugin/utils/urls.js.map +0 -1
- package/dist/plugin/utils.js +0 -11
- package/dist/plugin/utils.js.map +0 -1
- package/dist/plugin/vendor/vendor.client.js.map +0 -1
- package/dist/plugin/vendor/vendor.js.map +0 -1
- package/dist/plugin/vendor/vendor.server.js.map +0 -1
- package/dist/plugin/vendor.js +0 -7
- package/dist/plugin/vendor.js.map +0 -1
- package/dist/plugin/worker/createWorker.js.map +0 -1
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +0 -1
- package/dist/plugin/worker/html/html-worker.development.js.map +0 -1
- package/dist/plugin/worker/html/html-worker.production.js.map +0 -1
- package/dist/plugin/worker/html/index.js.map +0 -1
- package/dist/plugin/worker/html/messageHandler.js.map +0 -1
- package/dist/plugin/worker/rsc/handleRender.js.map +0 -1
- package/dist/plugin/worker/rsc/handlers.js.map +0 -1
- package/dist/plugin/worker/rsc/index.js.map +0 -1
- package/dist/plugin/worker/rsc/messageHandler.js.map +0 -1
- package/dist/plugin/worker/rsc/rsc-worker.development.js.map +0 -1
- package/dist/plugin/worker/rsc/rsc-worker.production.js.map +0 -1
- package/dist/plugin/worker/rsc/state.js.map +0 -1
- package/dist/plugin/worker/rsc/userOptions.js.map +0 -1
- package/dist/plugin/worker/sendMessage.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/plugin/components/css-collector.tsx +0 -20
- package/plugin/config/resolveAutoDiscoverMatcher.ts +0 -23
- package/plugin/helpers/sourceMap.ts +0 -182
- package/plugin/loader/css-loader.development.ts +0 -135
- package/plugin/loader/css-loader.production.ts +0 -84
- package/plugin/loader/handleExports.ts +0 -309
- package/plugin/loader/react-loader.client.ts +0 -1
- package/plugin/loader/react-loader.server.ts +0 -185
- package/plugin/loader/transformModuleWithPreservedFunctions.ts +0 -593
- package/plugin/source-map/createMappingsSerializer.ts +0 -181
- package/plugin/source-map/readMappings.ts +0 -194
- package/plugin/transformer/plugin.client.ts +0 -0
- /package/dist/plugin/{transformer/plugin.client.js → loader/directives/types.js} +0 -0
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import type { Logger } from "vite";
|
|
2
|
-
import type { RscRenderMessage } from "../worker/types.js";
|
|
2
|
+
import type { RscRenderMessage } from "../worker/rsc/types.js";
|
|
3
3
|
import type { Worker as NodeWorker } from "node:worker_threads";
|
|
4
4
|
import type { StreamHandlers } from "../worker/types.js";
|
|
5
|
+
export type CreateWorkerStreamFn = (props: {
|
|
6
|
+
worker: NodeWorker;
|
|
7
|
+
message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
|
|
8
|
+
type?: "RSC_RENDER";
|
|
9
|
+
};
|
|
10
|
+
logger: Logger;
|
|
11
|
+
handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onServerAction" | "onServerActionResponse" | "onCssFile">>;
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
rscTimeout?: number;
|
|
14
|
+
}) => AsyncGenerator<Uint8Array>;
|
|
5
15
|
/**
|
|
6
16
|
* Creates an async generator that yields RSC chunks from the worker.
|
|
7
17
|
* Handles both module requests and RSC streaming.
|
|
@@ -12,13 +22,5 @@ import type { StreamHandlers } from "../worker/types.js";
|
|
|
12
22
|
* @param rscWorkerLoaderPort - Optional loader port for module loading
|
|
13
23
|
* @returns An async generator that yields RSC chunks
|
|
14
24
|
*/
|
|
15
|
-
export declare
|
|
16
|
-
worker: NodeWorker;
|
|
17
|
-
message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
|
|
18
|
-
type?: "RSC_RENDER";
|
|
19
|
-
};
|
|
20
|
-
logger: Logger;
|
|
21
|
-
handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse" | "onCssFile">>;
|
|
22
|
-
verbose?: boolean;
|
|
23
|
-
}): AsyncGenerator<Uint8Array>;
|
|
25
|
+
export declare const createWorkerStream: CreateWorkerStreamFn;
|
|
24
26
|
//# sourceMappingURL=createWorkerStream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorkerStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createWorkerStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"createWorkerStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createWorkerStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG;QACtC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC,GACzE,OAAO,CACL,IAAI,CACF,cAAc,EACZ,SAAS,GACT,gBAAgB,GAChB,wBAAwB,GACxB,WAAW,CACd,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,oBAwKhC,CAAA"}
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { createMessageHandler } from './createMessageHandlers.js';
|
|
7
|
-
import { logError } from '../error/toError.js';
|
|
8
7
|
|
|
9
|
-
async function*
|
|
8
|
+
const createWorkerStream = async function* _createWorkerStream({
|
|
10
9
|
worker,
|
|
11
10
|
message,
|
|
12
11
|
logger,
|
|
@@ -15,50 +14,48 @@ async function* createWorkerStream({
|
|
|
15
14
|
onHmrUpdate,
|
|
16
15
|
onMetrics,
|
|
17
16
|
onError,
|
|
18
|
-
onData,
|
|
19
|
-
onEnd,
|
|
20
17
|
onServerAction,
|
|
21
18
|
onServerActionResponse,
|
|
22
19
|
onCssFile
|
|
23
20
|
},
|
|
24
|
-
verbose = false
|
|
21
|
+
verbose = false,
|
|
22
|
+
rscTimeout = 5e3
|
|
25
23
|
}) {
|
|
26
24
|
if (!worker) {
|
|
27
25
|
throw new Error("Worker is not running");
|
|
28
26
|
}
|
|
29
27
|
let messageHandler = null;
|
|
30
28
|
let currentResolve = null;
|
|
29
|
+
let isStreamClosed = false;
|
|
31
30
|
const handlers = {
|
|
32
31
|
onError: (id, error, errorInfo) => {
|
|
33
|
-
|
|
34
|
-
if (errorInfo) {
|
|
35
|
-
logError(errorInfo.componentStack, logger);
|
|
36
|
-
}
|
|
32
|
+
isStreamClosed = true;
|
|
37
33
|
if (typeof onError === "function") {
|
|
38
34
|
onError(id, error, errorInfo);
|
|
39
35
|
}
|
|
40
36
|
},
|
|
41
37
|
onData: (id, chunk) => {
|
|
42
|
-
currentResolve
|
|
38
|
+
if (currentResolve && !isStreamClosed) {
|
|
39
|
+
currentResolve(chunk);
|
|
40
|
+
currentResolve = null;
|
|
41
|
+
}
|
|
43
42
|
if (verbose) {
|
|
44
43
|
logger.info(
|
|
45
44
|
`[react-client] received chunk ${id} ${Buffer.from(chunk).byteLength} bytes`
|
|
46
45
|
);
|
|
47
46
|
}
|
|
48
|
-
if (typeof onData === "function") {
|
|
49
|
-
onData(id, chunk);
|
|
50
|
-
}
|
|
51
47
|
},
|
|
52
|
-
onEnd: (
|
|
53
|
-
|
|
48
|
+
onEnd: () => {
|
|
49
|
+
if (currentResolve) {
|
|
50
|
+
currentResolve(null);
|
|
51
|
+
currentResolve = null;
|
|
52
|
+
}
|
|
53
|
+
isStreamClosed = true;
|
|
54
54
|
if (verbose) logger.info(`[react-client] received end`);
|
|
55
55
|
if (messageHandler) {
|
|
56
56
|
worker.removeListener("message", messageHandler);
|
|
57
57
|
messageHandler = null;
|
|
58
58
|
}
|
|
59
|
-
if (typeof onEnd === "function") {
|
|
60
|
-
onEnd(id);
|
|
61
|
-
}
|
|
62
59
|
},
|
|
63
60
|
onMetrics: (id, metrics) => {
|
|
64
61
|
if (verbose)
|
|
@@ -97,11 +94,7 @@ async function* createWorkerStream({
|
|
|
97
94
|
if (verbose)
|
|
98
95
|
logger.info(`[react-client] received server action response ${id}`);
|
|
99
96
|
if (typeof onServerActionResponse === "function") {
|
|
100
|
-
|
|
101
|
-
type: "server-action-response",
|
|
102
|
-
returnValue: error ? { success: false, error } : result
|
|
103
|
-
};
|
|
104
|
-
onServerActionResponse(id, response);
|
|
97
|
+
onServerActionResponse(id, result, error);
|
|
105
98
|
}
|
|
106
99
|
}
|
|
107
100
|
};
|
|
@@ -118,12 +111,14 @@ async function* createWorkerStream({
|
|
|
118
111
|
});
|
|
119
112
|
if (verbose) logger.info(`[react-client] waiting for message handler`);
|
|
120
113
|
let workerTimeout = null;
|
|
121
|
-
|
|
114
|
+
const initialChunk = await new Promise((resolve) => {
|
|
122
115
|
workerTimeout = setTimeout(() => {
|
|
123
116
|
if (verbose) logger.info(`worker timeout`);
|
|
124
117
|
worker.terminate();
|
|
125
|
-
},
|
|
126
|
-
currentResolve =
|
|
118
|
+
}, rscTimeout);
|
|
119
|
+
currentResolve = (chunk) => {
|
|
120
|
+
resolve(chunk);
|
|
121
|
+
};
|
|
127
122
|
messageHandler = createMessageHandler({
|
|
128
123
|
handlers,
|
|
129
124
|
logger,
|
|
@@ -135,6 +130,9 @@ async function* createWorkerStream({
|
|
|
135
130
|
clearTimeout(workerTimeout);
|
|
136
131
|
}
|
|
137
132
|
if (verbose) logger.info(`[react-client] received message handler`);
|
|
133
|
+
if (initialChunk !== null) {
|
|
134
|
+
yield initialChunk;
|
|
135
|
+
}
|
|
138
136
|
while (true) {
|
|
139
137
|
const chunk = await new Promise((resolve) => {
|
|
140
138
|
currentResolve = resolve;
|
|
@@ -148,7 +146,7 @@ async function* createWorkerStream({
|
|
|
148
146
|
});
|
|
149
147
|
worker.on("message", messageHandler);
|
|
150
148
|
});
|
|
151
|
-
if (chunk
|
|
149
|
+
if (chunk === null) {
|
|
152
150
|
break;
|
|
153
151
|
}
|
|
154
152
|
yield chunk;
|
|
@@ -159,7 +157,7 @@ async function* createWorkerStream({
|
|
|
159
157
|
messageHandler = null;
|
|
160
158
|
}
|
|
161
159
|
}
|
|
162
|
-
}
|
|
160
|
+
};
|
|
163
161
|
|
|
164
162
|
export { createWorkerStream };
|
|
165
|
-
//# sourceMappingURL=createWorkerStream.js.map
|
|
163
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlV29ya2VyU3RyZWFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L2NyZWF0ZVdvcmtlclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFJzY1dvcmtlck91dHB1dE1lc3NhZ2UsXG4gIFJzY1JlbmRlck1lc3NhZ2UsXG59IGZyb20gXCIuLi93b3JrZXIvcnNjL3R5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN0cmVhbU1ldHJpY3MgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya2VyIGFzIE5vZGVXb3JrZXIgfSBmcm9tIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiO1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1IYW5kbGVycyB9IGZyb20gXCIuLi93b3JrZXIvdHlwZXMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZU1lc3NhZ2VIYW5kbGVyIH0gZnJvbSBcIi4vY3JlYXRlTWVzc2FnZUhhbmRsZXJzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVdvcmtlclN0cmVhbUZuID0gKHByb3BzOiB7XG4gIHdvcmtlcjogTm9kZVdvcmtlcjtcbiAgbWVzc2FnZTogT21pdDxSc2NSZW5kZXJNZXNzYWdlLCBcInR5cGVcIiB8IFwiaWRcIj4gJlxuICAgIFBhcnRpYWw8UGljazxSc2NSZW5kZXJNZXNzYWdlLCBcImlkXCI+PiAmIHtcbiAgICAgIHR5cGU/OiBcIlJTQ19SRU5ERVJcIjtcbiAgICB9O1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgaGFuZGxlcnM6IFBpY2s8U3RyZWFtSGFuZGxlcnMsIFwib25IbXJBY2NlcHRcIiB8IFwib25IbXJVcGRhdGVcIiB8IFwib25NZXRyaWNzXCI+ICYgXG4gICAgUGFydGlhbDxcbiAgICAgIFBpY2s8XG4gICAgICAgIFN0cmVhbUhhbmRsZXJzLFxuICAgICAgICB8IFwib25FcnJvclwiXG4gICAgICAgIHwgXCJvblNlcnZlckFjdGlvblwiXG4gICAgICAgIHwgXCJvblNlcnZlckFjdGlvblJlc3BvbnNlXCJcbiAgICAgICAgfCBcIm9uQ3NzRmlsZVwiXG4gICAgICA+XG4gICAgPjtcbiAgdmVyYm9zZT86IGJvb2xlYW47XG4gIHJzY1RpbWVvdXQ/OiBudW1iZXI7XG59KSA9PiBBc3luY0dlbmVyYXRvcjxVaW50OEFycmF5PjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFzeW5jIGdlbmVyYXRvciB0aGF0IHlpZWxkcyBSU0MgY2h1bmtzIGZyb20gdGhlIHdvcmtlci5cbiAqIEhhbmRsZXMgYm90aCBtb2R1bGUgcmVxdWVzdHMgYW5kIFJTQyBzdHJlYW1pbmcuXG4gKlxuICogQHBhcmFtIHdvcmtlciAtIFRoZSB3b3JrZXIgdGhyZWFkXG4gKiBAcGFyYW0gc2VydmVyIC0gVGhlIFZpdGUgZGV2IHNlcnZlclxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgUlNDIHJlbmRlciBtZXNzYWdlXG4gKiBAcGFyYW0gcnNjV29ya2VyTG9hZGVyUG9ydCAtIE9wdGlvbmFsIGxvYWRlciBwb3J0IGZvciBtb2R1bGUgbG9hZGluZ1xuICogQHJldHVybnMgQW4gYXN5bmMgZ2VuZXJhdG9yIHRoYXQgeWllbGRzIFJTQyBjaHVua3NcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVdvcmtlclN0cmVhbTogQ3JlYXRlV29ya2VyU3RyZWFtRm4gPSBhc3luYyBmdW5jdGlvbiogX2NyZWF0ZVdvcmtlclN0cmVhbSh7XG4gIHdvcmtlcixcbiAgbWVzc2FnZSxcbiAgbG9nZ2VyLFxuICBoYW5kbGVyczoge1xuICAgIG9uSG1yQWNjZXB0LFxuICAgIG9uSG1yVXBkYXRlLFxuICAgIG9uTWV0cmljcyxcbiAgICBvbkVycm9yLFxuICAgIG9uU2VydmVyQWN0aW9uLFxuICAgIG9uU2VydmVyQWN0aW9uUmVzcG9uc2UsXG4gICAgb25Dc3NGaWxlLFxuICB9LFxuICB2ZXJib3NlID0gZmFsc2UsXG4gIHJzY1RpbWVvdXQgPSA1MDAwLFxufSkge1xuICBpZiAoIXdvcmtlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIldvcmtlciBpcyBub3QgcnVubmluZ1wiKTtcbiAgfVxuICBsZXQgbWVzc2FnZUhhbmRsZXI6XG4gICAgfCAoKG1lc3NhZ2U6IFJzY1dvcmtlck91dHB1dE1lc3NhZ2UgfCB1bmRlZmluZWQpID0+IHZvaWQpXG4gICAgfCBudWxsID0gbnVsbDtcbiAgbGV0IGN1cnJlbnRSZXNvbHZlOiAoKGNodW5rOiBVaW50OEFycmF5IHwgbnVsbCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgbGV0IGlzU3RyZWFtQ2xvc2VkID0gZmFsc2U7XG4gIGNvbnN0IGhhbmRsZXJzOiBTdHJlYW1IYW5kbGVycyA9IHtcbiAgICBvbkVycm9yOiAoaWQsIGVycm9yLCBlcnJvckluZm8pID0+IHtcbiAgICAgIGlzU3RyZWFtQ2xvc2VkID0gdHJ1ZTtcbiAgICAgIGlmICh0eXBlb2Ygb25FcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uRXJyb3IoaWQsIGVycm9yLCBlcnJvckluZm8pO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25EYXRhOiAoaWQ6IHN0cmluZywgY2h1bms6IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgIC8vIEhhbmRsZSBnZW5lcmF0b3IgZmxvdyAtIHJlc29sdmUgdGhlIGN1cnJlbnQgcHJvbWlzZSB3aXRoIHRoZSBjaHVua1xuICAgICAgaWYgKGN1cnJlbnRSZXNvbHZlICYmICFpc1N0cmVhbUNsb3NlZCkge1xuICAgICAgICBjdXJyZW50UmVzb2x2ZShjaHVuayk7XG4gICAgICAgIGN1cnJlbnRSZXNvbHZlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBjaHVuayAke2lkfSAke1xuICAgICAgICAgICAgQnVmZmVyLmZyb20oY2h1bmspLmJ5dGVMZW5ndGhcbiAgICAgICAgICB9IGJ5dGVzYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25FbmQ6ICgpID0+IHtcbiAgICAgIC8vIEhhbmRsZSBnZW5lcmF0b3IgZmxvdyAtIHJlc29sdmUgd2l0aCBudWxsIHRvIHNpZ25hbCBlbmRcbiAgICAgIGlmIChjdXJyZW50UmVzb2x2ZSkge1xuICAgICAgICBjdXJyZW50UmVzb2x2ZShudWxsKTtcbiAgICAgICAgY3VycmVudFJlc29sdmUgPSBudWxsO1xuICAgICAgfVxuICAgICAgaXNTdHJlYW1DbG9zZWQgPSB0cnVlO1xuICAgICAgaWYgKHZlcmJvc2UpIGxvZ2dlci5pbmZvKGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBlbmRgKTtcbiAgICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgICB3b3JrZXIucmVtb3ZlTGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgbWVzc2FnZUhhbmRsZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25NZXRyaWNzOiAoaWQ6IHN0cmluZywgbWV0cmljczogU3RyZWFtTWV0cmljcykgPT4ge1xuICAgICAgaWYgKHZlcmJvc2UpXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBjaHVua3MgJHttZXRyaWNzLmNodW5rc31gKTtcbiAgICAgIGlmICh0eXBlb2Ygb25NZXRyaWNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25NZXRyaWNzKGlkLCBtZXRyaWNzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uSG1yQWNjZXB0OiAoaWQ6IHN0cmluZywgcm91dGVzPzogc3RyaW5nW10pID0+IHtcbiAgICAgIGlmICh2ZXJib3NlKVxuICAgICAgICBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gcmVjZWl2ZWQgaG1yIGFjY2VwdCAke3JvdXRlcz8uam9pbihcIiwgXCIpfWApO1xuICAgICAgaWYgKHR5cGVvZiBvbkhtckFjY2VwdCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uSG1yQWNjZXB0KGlkLCByb3V0ZXMpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25IbXJVcGRhdGU6IChpZDogc3RyaW5nLCByb3V0ZXM/OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKHZlcmJvc2UpXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbcmVhY3QtY2xpZW50XSByZWNlaXZlZCBobXIgdXBkYXRlICR7cm91dGVzPy5qb2luKFwiLCBcIil9YCk7XG4gICAgICBpZiAodHlwZW9mIG9uSG1yVXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25IbXJVcGRhdGUoaWQsIHJvdXRlcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNzc0ZpbGU6IChpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2ZXJib3NlKSBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gcmVjZWl2ZWQgY3NzIGZpbGUgJHtpZH1gKTtcbiAgICAgIGlmICh0eXBlb2Ygb25Dc3NGaWxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25Dc3NGaWxlKGlkLCBjb2RlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uU2VydmVyQWN0aW9uOiAoaWQ6IHN0cmluZywgYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYFtyZWFjdC1jbGllbnRdIHJlY2VpdmVkIHNlcnZlciBhY3Rpb24gJHtpZH1gKTtcbiAgICAgIGlmICh0eXBlb2Ygb25TZXJ2ZXJBY3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvblNlcnZlckFjdGlvbihpZCwgYXJncyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvblNlcnZlckFjdGlvblJlc3BvbnNlOiAoaWQ6IHN0cmluZywgcmVzdWx0PzogdW5rbm93biwgZXJyb3I/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2ZXJib3NlKVxuICAgICAgICBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gcmVjZWl2ZWQgc2VydmVyIGFjdGlvbiByZXNwb25zZSAke2lkfWApO1xuICAgICAgaWYgKHR5cGVvZiBvblNlcnZlckFjdGlvblJlc3BvbnNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb25TZXJ2ZXJBY3Rpb25SZXNwb25zZShpZCwgcmVzdWx0LCBlcnJvcik7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICB0cnkge1xuICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgbWVzc2FnZSBoYW5kbGVyIGJlZm9yZSBzdGFydGluZ1xuICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICBtZXNzYWdlSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2ZXJib3NlKSBsb2dnZXIuaW5mbyhgW3JlYWN0LWNsaWVudF0gc2VuZGluZyBtZXNzYWdlIFJTQ19SRU5ERVJgKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIHR5cGU6IFwiUlNDX1JFTkRFUlwiLFxuICAgICAgaWQ6IG1lc3NhZ2U/LmlkID8/IG1lc3NhZ2Uucm91dGUsXG4gICAgfSk7XG5cbiAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYFtyZWFjdC1jbGllbnRdIHdhaXRpbmcgZm9yIG1lc3NhZ2UgaGFuZGxlcmApO1xuICAgIGxldCB3b3JrZXJUaW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGluaXRpYWxDaHVuayA9IGF3YWl0IG5ldyBQcm9taXNlPFVpbnQ4QXJyYXkgfCBudWxsPigocmVzb2x2ZSkgPT4ge1xuICAgICAgd29ya2VyVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYHdvcmtlciB0aW1lb3V0YCk7XG4gICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgIH0sIHJzY1RpbWVvdXQpO1xuICAgICAgY3VycmVudFJlc29sdmUgPSAoY2h1bms6IFVpbnQ4QXJyYXkgfCBudWxsKSA9PiB7XG4gICAgICAgIHJlc29sdmUoY2h1bmspO1xuICAgICAgfTtcbiAgICAgIG1lc3NhZ2VIYW5kbGVyID0gY3JlYXRlTWVzc2FnZUhhbmRsZXIoe1xuICAgICAgICBoYW5kbGVycyxcbiAgICAgICAgbG9nZ2VyLFxuICAgICAgICB2ZXJib3NlLFxuICAgICAgfSk7XG4gICAgICB3b3JrZXIub24oXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcbiAgICB9KTtcbiAgICBpZiAod29ya2VyVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHdvcmtlclRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oYFtyZWFjdC1jbGllbnRdIHJlY2VpdmVkIG1lc3NhZ2UgaGFuZGxlcmApO1xuICAgIFxuICAgIC8vIE9ubHkgeWllbGQgdGhlIGluaXRpYWwgY2h1bmsgaWYgaXQncyBub3QgbnVsbFxuICAgIGlmIChpbml0aWFsQ2h1bmsgIT09IG51bGwpIHtcbiAgICAgIHlpZWxkIGluaXRpYWxDaHVuaztcbiAgICB9XG4gICAgXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gYXdhaXQgbmV3IFByb21pc2U8VWludDhBcnJheSB8IG51bGw+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGN1cnJlbnRSZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBtZXNzYWdlIGhhbmRsZXIgZm9yIGVhY2ggaXRlcmF0aW9uXG4gICAgICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgIHdvcmtlci5yZW1vdmVMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVyID0gY3JlYXRlTWVzc2FnZUhhbmRsZXIoe1xuICAgICAgICAgIGhhbmRsZXJzLFxuICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICB2ZXJib3NlLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9uKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgICAgIGJyZWFrOyAvLyBFbmQgb2Ygc3RyZWFtXG4gICAgICB9XG5cbiAgICAgIHlpZWxkIGNodW5rO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDbGVhbiB1cCBtZXNzYWdlIGhhbmRsZXIgaW4gZmluYWxseSBibG9ja1xuICAgIGlmIChtZXNzYWdlSGFuZGxlcikge1xuICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICBtZXNzYWdlSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQXlDYSxNQUFBLGtCQUFBLEdBQTJDLGdCQUFnQixtQkFBb0IsQ0FBQTtBQUFBLEVBQzFGLE1BQUE7QUFBQSxFQUNBLE9BQUE7QUFBQSxFQUNBLE1BQUE7QUFBQSxFQUNBLFFBQVUsRUFBQTtBQUFBLElBQ1IsV0FBQTtBQUFBLElBQ0EsV0FBQTtBQUFBLElBQ0EsU0FBQTtBQUFBLElBQ0EsT0FBQTtBQUFBLElBQ0EsY0FBQTtBQUFBLElBQ0Esc0JBQUE7QUFBQSxJQUNBO0FBQUEsR0FDRjtBQUFBLEVBQ0EsT0FBVSxHQUFBLEtBQUE7QUFBQSxFQUNWLFVBQWEsR0FBQTtBQUNmLENBQUcsRUFBQTtBQUNELEVBQUEsSUFBSSxDQUFDLE1BQVEsRUFBQTtBQUNYLElBQU0sTUFBQSxJQUFJLE1BQU0sdUJBQXVCLENBQUE7QUFBQTtBQUV6QyxFQUFBLElBQUksY0FFTyxHQUFBLElBQUE7QUFDWCxF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
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { Logger } from "vite";
|
|
2
|
-
import type { RscRenderMessage
|
|
2
|
+
import type { RscRenderMessage } from "../worker/rsc/types.js";
|
|
3
|
+
import type { StreamHandlers } from "../worker/types.js";
|
|
3
4
|
import type { Worker as NodeWorker } from "node:worker_threads";
|
|
5
|
+
export type HandleWorkerRscStreamFn = (props: {
|
|
6
|
+
worker: NodeWorker;
|
|
7
|
+
message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
|
|
8
|
+
type?: "RSC_RENDER";
|
|
9
|
+
};
|
|
10
|
+
logger: Logger;
|
|
11
|
+
handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse" | "onCssFile">>;
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
rscTimeout?: number;
|
|
14
|
+
}) => ReadableStream<Uint8Array>;
|
|
4
15
|
/**
|
|
5
16
|
* Handles the RSC stream from the worker.
|
|
6
17
|
* Creates a ReadableStream that pipes RSC chunks to the response.
|
|
@@ -9,11 +20,5 @@ import type { Worker as NodeWorker } from "node:worker_threads";
|
|
|
9
20
|
* @param message - The RSC render message
|
|
10
21
|
* @returns A ReadableStream that yields RSC chunks
|
|
11
22
|
*/
|
|
12
|
-
export declare
|
|
13
|
-
worker: NodeWorker;
|
|
14
|
-
message: Omit<RscRenderMessage, "type" | "id">;
|
|
15
|
-
logger: Logger;
|
|
16
|
-
handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse">>;
|
|
17
|
-
verbose?: boolean;
|
|
18
|
-
}): ReadableStream<Uint8Array>;
|
|
23
|
+
export declare const handleWorkerRscStream: HandleWorkerRscStreamFn;
|
|
19
24
|
//# sourceMappingURL=handleWorkerRscStream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleWorkerRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"handleWorkerRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGhE,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,GAAG;QACtC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CACL,IAAI,CACF,cAAc,EACZ,SAAS,GACT,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,wBAAwB,GACxB,WAAW,CACd,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,uBAqHjC,CAAC"}
|
|
@@ -4,17 +4,44 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { createWorkerStream } from './createWorkerStream.js';
|
|
7
|
+
import { toError } from '../error/toError.js';
|
|
7
8
|
|
|
8
|
-
function
|
|
9
|
+
const handleWorkerRscStream = function _handleWorkerRscStream({
|
|
9
10
|
worker,
|
|
10
11
|
message,
|
|
11
12
|
logger,
|
|
12
13
|
handlers,
|
|
13
|
-
verbose = false
|
|
14
|
+
verbose = false,
|
|
15
|
+
rscTimeout
|
|
14
16
|
}) {
|
|
15
17
|
let isFlowing = false;
|
|
18
|
+
let isClosed = false;
|
|
19
|
+
let hasError = false;
|
|
16
20
|
return new ReadableStream({
|
|
17
21
|
async start(controller) {
|
|
22
|
+
const handleError = (error, errorInfo) => {
|
|
23
|
+
if (hasError) return;
|
|
24
|
+
hasError = true;
|
|
25
|
+
const errorToThrow = toError(error);
|
|
26
|
+
const messageToLog = typeof errorToThrow.message === "string" ? errorToThrow.message : void 0;
|
|
27
|
+
const stackToLog = errorToThrow.stack ? errorToThrow.stack : void 0;
|
|
28
|
+
if (messageToLog && !stackToLog) {
|
|
29
|
+
logger.error(`[rsc-worker-error] ${messageToLog}`, { error: errorToThrow });
|
|
30
|
+
}
|
|
31
|
+
if (stackToLog) {
|
|
32
|
+
logger.error(`[rsc-worker-stack] ${stackToLog}`, { error: errorToThrow });
|
|
33
|
+
}
|
|
34
|
+
if (errorInfo != null && typeof errorInfo === "object" && "reason" in errorInfo && typeof errorInfo["reason"] === "string") {
|
|
35
|
+
logger.error(errorInfo["reason"]);
|
|
36
|
+
}
|
|
37
|
+
if (!isClosed) {
|
|
38
|
+
isClosed = true;
|
|
39
|
+
try {
|
|
40
|
+
controller.close();
|
|
41
|
+
} catch {
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
18
45
|
try {
|
|
19
46
|
if (verbose) logger.info("[react-client] Starting stream");
|
|
20
47
|
for await (const chunk of createWorkerStream({
|
|
@@ -22,43 +49,51 @@ function handleWorkerRscStream({
|
|
|
22
49
|
message,
|
|
23
50
|
logger,
|
|
24
51
|
handlers: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
onServerActionResponse:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// Direct result, no success/data wrapper
|
|
37
|
-
};
|
|
38
|
-
handlers.onServerActionResponse(id, response);
|
|
52
|
+
// Only keep non-data handlers for side effects
|
|
53
|
+
onMetrics: handlers.onMetrics,
|
|
54
|
+
onHmrAccept: handlers.onHmrAccept,
|
|
55
|
+
onHmrUpdate: handlers.onHmrUpdate,
|
|
56
|
+
onServerAction: handlers.onServerAction,
|
|
57
|
+
onServerActionResponse: handlers.onServerActionResponse,
|
|
58
|
+
onCssFile: handlers.onCssFile,
|
|
59
|
+
onError: (id, error, errorInfo) => {
|
|
60
|
+
handleError(error, errorInfo);
|
|
61
|
+
if (handlers.onError) {
|
|
62
|
+
handlers.onError(id, error, errorInfo);
|
|
39
63
|
}
|
|
40
64
|
}
|
|
41
65
|
},
|
|
42
|
-
verbose
|
|
66
|
+
verbose,
|
|
67
|
+
rscTimeout
|
|
43
68
|
})) {
|
|
44
69
|
if (!isFlowing) {
|
|
45
70
|
isFlowing = true;
|
|
46
71
|
if (verbose) logger.info("[react-client] Stream is flowing");
|
|
47
72
|
}
|
|
48
|
-
|
|
73
|
+
if (!isClosed && !hasError) {
|
|
74
|
+
controller.enqueue(chunk);
|
|
75
|
+
}
|
|
76
|
+
if (handlers.onData) {
|
|
77
|
+
handlers.onData(message?.id ?? message.route, chunk);
|
|
78
|
+
}
|
|
49
79
|
}
|
|
50
|
-
} catch (error) {
|
|
51
|
-
controller.error(error);
|
|
52
|
-
} finally {
|
|
53
80
|
if (isFlowing) {
|
|
54
81
|
isFlowing = false;
|
|
55
82
|
if (verbose) logger.info("[react-client] Stream closing");
|
|
56
83
|
}
|
|
57
|
-
|
|
84
|
+
if (!isClosed && !hasError) {
|
|
85
|
+
isClosed = true;
|
|
86
|
+
controller.close();
|
|
87
|
+
}
|
|
88
|
+
if (handlers.onEnd) {
|
|
89
|
+
handlers.onEnd(message?.id ?? message.route);
|
|
90
|
+
}
|
|
91
|
+
} catch (error) {
|
|
92
|
+
handleError(error);
|
|
58
93
|
}
|
|
59
94
|
}
|
|
60
95
|
});
|
|
61
|
-
}
|
|
96
|
+
};
|
|
62
97
|
|
|
63
98
|
export { handleWorkerRscStream };
|
|
64
|
-
//# sourceMappingURL=handleWorkerRscStream.js.map
|
|
99
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlV29ya2VyUnNjU3RyZWFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L2hhbmRsZVdvcmtlclJzY1N0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7IFJzY1JlbmRlck1lc3NhZ2UgfSBmcm9tIFwiLi4vd29ya2VyL3JzYy90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1IYW5kbGVycyB9IGZyb20gXCIuLi93b3JrZXIvdHlwZXMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZVdvcmtlclN0cmVhbSB9IGZyb20gXCIuL2NyZWF0ZVdvcmtlclN0cmVhbS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZXIgYXMgTm9kZVdvcmtlciB9IGZyb20gXCJub2RlOndvcmtlcl90aHJlYWRzXCI7XG5pbXBvcnQgeyB0b0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9yL3RvRXJyb3IuanNcIjtcblxuZXhwb3J0IHR5cGUgSGFuZGxlV29ya2VyUnNjU3RyZWFtRm4gPSAocHJvcHM6IHtcbiAgd29ya2VyOiBOb2RlV29ya2VyO1xuICBtZXNzYWdlOiBPbWl0PFJzY1JlbmRlck1lc3NhZ2UsIFwidHlwZVwiIHwgXCJpZFwiPiAmXG4gICAgUGFydGlhbDxQaWNrPFJzY1JlbmRlck1lc3NhZ2UsIFwiaWRcIj4+ICYge1xuICAgICAgdHlwZT86IFwiUlNDX1JFTkRFUlwiO1xuICAgIH07XG4gIGxvZ2dlcjogTG9nZ2VyO1xuICBoYW5kbGVyczogUGljazxTdHJlYW1IYW5kbGVycywgXCJvbk1ldHJpY3NcIiB8IFwib25IbXJBY2NlcHRcIiB8IFwib25IbXJVcGRhdGVcIj4gJlxuICAgIFBhcnRpYWw8XG4gICAgICBQaWNrPFxuICAgICAgICBTdHJlYW1IYW5kbGVycyxcbiAgICAgICAgfCBcIm9uRXJyb3JcIlxuICAgICAgICB8IFwib25EYXRhXCJcbiAgICAgICAgfCBcIm9uRW5kXCJcbiAgICAgICAgfCBcIm9uU2VydmVyQWN0aW9uXCJcbiAgICAgICAgfCBcIm9uU2VydmVyQWN0aW9uUmVzcG9uc2VcIlxuICAgICAgICB8IFwib25Dc3NGaWxlXCJcbiAgICAgID5cbiAgICA+O1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcnNjVGltZW91dD86IG51bWJlcjtcbn0pID0+IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+O1xuXG4vKipcbiAqIEhhbmRsZXMgdGhlIFJTQyBzdHJlYW0gZnJvbSB0aGUgd29ya2VyLlxuICogQ3JlYXRlcyBhIFJlYWRhYmxlU3RyZWFtIHRoYXQgcGlwZXMgUlNDIGNodW5rcyB0byB0aGUgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHdvcmtlciAtIFRoZSB3b3JrZXIgdGhyZWFkXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBSU0MgcmVuZGVyIG1lc3NhZ2VcbiAqIEByZXR1cm5zIEEgUmVhZGFibGVTdHJlYW0gdGhhdCB5aWVsZHMgUlNDIGNodW5rc1xuICovXG5leHBvcnQgY29uc3QgaGFuZGxlV29ya2VyUnNjU3RyZWFtOiBIYW5kbGVXb3JrZXJSc2NTdHJlYW1GbiA9XG4gIGZ1bmN0aW9uIF9oYW5kbGVXb3JrZXJSc2NTdHJlYW0oe1xuICAgIHdvcmtlcixcbiAgICBtZXNzYWdlLFxuICAgIGxvZ2dlcixcbiAgICBoYW5kbGVycyxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgcnNjVGltZW91dCxcbiAgfSkge1xuICAgIC8vIENyZWF0ZSBhIFJlYWRhYmxlU3RyZWFtIGZyb20gdGhlIGFzeW5jIGdlbmVyYXRvclxuICAgIGxldCBpc0Zsb3dpbmcgPSBmYWxzZTtcbiAgICBsZXQgaXNDbG9zZWQgPSBmYWxzZTtcbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcblxuICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4oe1xuICAgICAgYXN5bmMgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICBjb25zdCBoYW5kbGVFcnJvciA9IChcbiAgICAgICAgICBlcnJvcjogdW5rbm93bixcbiAgICAgICAgICBlcnJvckluZm8/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICApID0+IHtcbiAgICAgICAgICBpZiAoaGFzRXJyb3IpIHJldHVybjsgLy8gUHJldmVudCBkb3VibGUgZXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc3QgZXJyb3JUb1Rocm93ID0gdG9FcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAvLyBFbnN1cmUgd2UgbG9nIHRoZSBlcnJvciBtZXNzYWdlIHByb3Blcmx5LCBldmVuIGlmIGl0J3Mgc29tZWhvdyBhbiBvYmplY3RcbiAgICAgICAgICBjb25zdCBtZXNzYWdlVG9Mb2cgPVxuICAgICAgICAgICAgdHlwZW9mIGVycm9yVG9UaHJvdy5tZXNzYWdlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgID8gZXJyb3JUb1Rocm93Lm1lc3NhZ2VcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBjb25zdCBzdGFja1RvTG9nID0gZXJyb3JUb1Rocm93LnN0YWNrXG4gICAgICAgICAgICA/IGVycm9yVG9UaHJvdy5zdGFja1xuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VUb0xvZyAmJiAhc3RhY2tUb0xvZykge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBbcnNjLXdvcmtlci1lcnJvcl0gJHttZXNzYWdlVG9Mb2d9YCwge2Vycm9yOiBlcnJvclRvVGhyb3d9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWNrVG9Mb2cpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgW3JzYy13b3JrZXItc3RhY2tdICR7c3RhY2tUb0xvZ31gLCB7ZXJyb3I6IGVycm9yVG9UaHJvd30pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3JJbmZvICE9IG51bGwgJiYgdHlwZW9mIGVycm9ySW5mbyA9PT0gXCJvYmplY3RcIiAmJiAncmVhc29uJyBpbiBlcnJvckluZm8gJiYgdHlwZW9mIGVycm9ySW5mb1tcInJlYXNvblwiXSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9ySW5mb1tcInJlYXNvblwiXSk7ICBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Nsb3NlZCkge1xuICAgICAgICAgICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgZnJvbSB0cnlpbmcgdG8gY2xvc2UgYW4gYWxyZWFkeSBjbG9zZWQgY29udHJvbGxlclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh2ZXJib3NlKSBsb2dnZXIuaW5mbyhcIltyZWFjdC1jbGllbnRdIFN0YXJ0aW5nIHN0cmVhbVwiKTtcblxuICAgICAgICAgIC8vIFB1cmUgZ2VuZXJhdG9yIGFwcHJvYWNoIC0gcHJvY2VzcyBjaHVua3MgZGlyZWN0bHlcbiAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGNyZWF0ZVdvcmtlclN0cmVhbSh7XG4gICAgICAgICAgICB3b3JrZXIsXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgICAgLy8gT25seSBrZWVwIG5vbi1kYXRhIGhhbmRsZXJzIGZvciBzaWRlIGVmZmVjdHNcbiAgICAgICAgICAgICAgb25NZXRyaWNzOiBoYW5kbGVycy5vbk1ldHJpY3MsXG4gICAgICAgICAgICAgIG9uSG1yQWNjZXB0OiBoYW5kbGVycy5vbkhtckFjY2VwdCxcbiAgICAgICAgICAgICAgb25IbXJVcGRhdGU6IGhhbmRsZXJzLm9uSG1yVXBkYXRlLFxuICAgICAgICAgICAgICBvblNlcnZlckFjdGlvbjogaGFuZGxlcnMub25TZXJ2ZXJBY3Rpb24sXG4gICAgICAgICAgICAgIG9uU2VydmVyQWN0aW9uUmVzcG9uc2U6IGhhbmRsZXJzLm9uU2VydmVyQWN0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgICAgIG9uQ3NzRmlsZTogaGFuZGxlcnMub25Dc3NGaWxlLFxuICAgICAgICAgICAgICBvbkVycm9yOiAoXG4gICAgICAgICAgICAgICAgaWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBlcnJvcjogdW5rbm93bixcbiAgICAgICAgICAgICAgICBlcnJvckluZm8/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgZXJyb3JJbmZvKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlcnMub25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlcnMub25FcnJvcihpZCwgZXJyb3IsIGVycm9ySW5mbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcmJvc2UsXG4gICAgICAgICAgICByc2NUaW1lb3V0LFxuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAvLyBQcm9jZXNzIGNodW5rcyBkaXJlY3RseSBmcm9tIGdlbmVyYXRvclxuICAgICAgICAgICAgaWYgKCFpc0Zsb3dpbmcpIHtcbiAgICAgICAgICAgICAgaXNGbG93aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIGxvZ2dlci5pbmZvKFwiW3JlYWN0LWNsaWVudF0gU3RyZWFtIGlzIGZsb3dpbmdcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNDbG9zZWQgJiYgIWhhc0Vycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENhbGwgb25EYXRhIGhhbmRsZXIgaWYgcHJvdmlkZWRcbiAgICAgICAgICAgIGlmIChoYW5kbGVycy5vbkRhdGEpIHtcbiAgICAgICAgICAgICAgaGFuZGxlcnMub25EYXRhKG1lc3NhZ2U/LmlkID8/IG1lc3NhZ2Uucm91dGUsIGNodW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTdHJlYW0gZW5kZWQgbmF0dXJhbGx5XG4gICAgICAgICAgaWYgKGlzRmxvd2luZykge1xuICAgICAgICAgICAgaXNGbG93aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodmVyYm9zZSkgbG9nZ2VyLmluZm8oXCJbcmVhY3QtY2xpZW50XSBTdHJlYW0gY2xvc2luZ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Nsb3NlZCAmJiAhaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIGlzQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDYWxsIG9uRW5kIGhhbmRsZXIgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAoaGFuZGxlcnMub25FbmQpIHtcbiAgICAgICAgICAgIGhhbmRsZXJzLm9uRW5kKG1lc3NhZ2U/LmlkID8/IG1lc3NhZ2Uucm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFzQ2EsTUFBQSxxQkFBQSxHQUNYLFNBQVMsc0JBQXVCLENBQUE7QUFBQSxFQUM5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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ViteDevServer } from "vite";
|
|
2
2
|
import type { Worker } from "node:worker_threads";
|
|
3
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
3
4
|
/**
|
|
4
5
|
* Handles server action requests in the worker scenario.
|
|
5
6
|
*
|
|
@@ -8,5 +9,5 @@ import type { Worker } from "node:worker_threads";
|
|
|
8
9
|
* @param worker - The worker thread
|
|
9
10
|
* @param logger - The Vite logger
|
|
10
11
|
*/
|
|
11
|
-
export declare function handleWorkerServerAction(req:
|
|
12
|
+
export declare function handleWorkerServerAction(req: IncomingMessage, res: ServerResponse, worker: Worker, logger: ViteDevServer["config"]["logger"]): Promise<void>;
|
|
12
13
|
//# sourceMappingURL=handleWorkerServerAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleWorkerServerAction.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerServerAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"handleWorkerServerAction.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/handleWorkerServerAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iBAqE1C"}
|
|
@@ -3,45 +3,60 @@
|
|
|
3
3
|
* Copyright (c) Nico Brinkkemper
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { createServerActionStream, parseServerActionRequest, setupServerActionHeaders, handleServerActionError } from '../helpers/handleServerAction.js';
|
|
7
|
+
import { cleanupWorkerServerAction } from './cleanupWorkerServerAction.js';
|
|
8
8
|
|
|
9
9
|
async function handleWorkerServerAction(req, res, worker, logger) {
|
|
10
|
+
let messageHandler = null;
|
|
11
|
+
const passThrough = createServerActionStream(res);
|
|
10
12
|
try {
|
|
11
13
|
const chunks = [];
|
|
12
14
|
for await (const chunk of req) {
|
|
13
15
|
chunks.push(chunk);
|
|
14
16
|
}
|
|
15
17
|
const body = Buffer.concat(chunks).toString();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
18
|
+
try {
|
|
19
|
+
const { id, args } = parseServerActionRequest(body, req.url);
|
|
20
|
+
setupServerActionHeaders(res);
|
|
21
|
+
worker.postMessage({
|
|
22
|
+
type: "SERVER_ACTION",
|
|
23
|
+
id,
|
|
24
|
+
args
|
|
25
|
+
});
|
|
26
|
+
messageHandler = (message) => {
|
|
27
|
+
if (message.type === "RSC_CHUNK") {
|
|
28
|
+
passThrough.write(message.chunk);
|
|
29
|
+
} else if (message.type === "RSC_END") {
|
|
30
|
+
if (messageHandler) {
|
|
31
|
+
cleanupWorkerServerAction(passThrough, worker, messageHandler, res);
|
|
32
|
+
}
|
|
33
|
+
} else if (message.type === "ERROR") {
|
|
34
|
+
if (messageHandler) {
|
|
35
|
+
cleanupWorkerServerAction(passThrough, worker, messageHandler, res, message.error, logger);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
worker.on("message", messageHandler);
|
|
40
|
+
passThrough.on("error", (error) => {
|
|
41
|
+
if (messageHandler) {
|
|
42
|
+
cleanupWorkerServerAction(passThrough, worker, messageHandler, res, error, logger);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
} catch (parseError) {
|
|
46
|
+
if (passThrough && messageHandler) {
|
|
47
|
+
cleanupWorkerServerAction(passThrough, worker, messageHandler, res, parseError, logger);
|
|
48
|
+
} else {
|
|
49
|
+
handleServerActionError(parseError, res, logger);
|
|
34
50
|
}
|
|
35
|
-
}
|
|
36
|
-
worker.on("message", messageHandler);
|
|
37
|
-
passThrough.on("error", (error) => {
|
|
38
|
-
logError(error, logger);
|
|
39
|
-
res.end();
|
|
40
|
-
});
|
|
51
|
+
}
|
|
41
52
|
} catch (error) {
|
|
42
|
-
|
|
53
|
+
if (passThrough && messageHandler) {
|
|
54
|
+
cleanupWorkerServerAction(passThrough, worker, messageHandler, res, error, logger);
|
|
55
|
+
} else {
|
|
56
|
+
handleServerActionError(error, res, logger);
|
|
57
|
+
}
|
|
43
58
|
}
|
|
44
59
|
}
|
|
45
60
|
|
|
46
61
|
export { handleWorkerServerAction };
|
|
47
|
-
//# sourceMappingURL=
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlV29ya2VyU2VydmVyQWN0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L2hhbmRsZVdvcmtlclNlcnZlckFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFZpdGVEZXZTZXJ2ZXIgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZXIgfSBmcm9tIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiO1xuaW1wb3J0IHR5cGUgeyBSc2NDaHVua091dHB1dE1lc3NhZ2UsIFJzY1dvcmtlcklucHV0TWVzc2FnZSwgUnNjV29ya2VyT3V0cHV0TWVzc2FnZSB9IGZyb20gXCIuLi93b3JrZXIvcnNjL3R5cGVzLmpzXCI7XG5pbXBvcnQge1xuICBwYXJzZVNlcnZlckFjdGlvblJlcXVlc3QsXG4gIHNldHVwU2VydmVyQWN0aW9uSGVhZGVycyxcbiAgY3JlYXRlU2VydmVyQWN0aW9uU3RyZWFtLFxuICBoYW5kbGVTZXJ2ZXJBY3Rpb25FcnJvclxufSBmcm9tIFwiLi4vaGVscGVycy9oYW5kbGVTZXJ2ZXJBY3Rpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZUhhbmRsZXIgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IGNsZWFudXBXb3JrZXJTZXJ2ZXJBY3Rpb24gfSBmcm9tIFwiLi9jbGVhbnVwV29ya2VyU2VydmVyQWN0aW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5cblxuLyoqXG4gKiBIYW5kbGVzIHNlcnZlciBhY3Rpb24gcmVxdWVzdHMgaW4gdGhlIHdvcmtlciBzY2VuYXJpby5cbiAqIFxuICogQHBhcmFtIHJlcSAtIFRoZSBpbmNvbWluZyByZXF1ZXN0XG4gKiBAcGFyYW0gcmVzIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHdvcmtlciAtIFRoZSB3b3JrZXIgdGhyZWFkXG4gKiBAcGFyYW0gbG9nZ2VyIC0gVGhlIFZpdGUgbG9nZ2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVXb3JrZXJTZXJ2ZXJBY3Rpb24oXG4gIHJlcTogSW5jb21pbmdNZXNzYWdlLFxuICByZXM6IFNlcnZlclJlc3BvbnNlLFxuICB3b3JrZXI6IFdvcmtlcixcbiAgbG9nZ2VyOiBWaXRlRGV2U2VydmVyW1wiY29uZmlnXCJdW1wibG9nZ2VyXCJdXG4pIHtcbiAgbGV0IG1lc3NhZ2VIYW5kbGVyOiBNZXNzYWdlSGFuZGxlcjxSc2NDaHVua091dHB1dE1lc3NhZ2U+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3QgcGFzc1Rocm91Z2ggPSBjcmVhdGVTZXJ2ZXJBY3Rpb25TdHJlYW0ocmVzKTtcbiAgdHJ5IHtcbiAgICAvLyBSZWFkIHJlcXVlc3QgYm9keVxuICAgIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlcSkge1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUGFyc2UgdGhlIHNlcnZlciBhY3Rpb24gcmVxdWVzdFxuICAgICAgY29uc3QgeyBpZCwgYXJncyB9ID0gcGFyc2VTZXJ2ZXJBY3Rpb25SZXF1ZXN0KGJvZHksIHJlcS51cmwpO1xuXG4gICAgICAvLyBTZXQgdXAgcmVzcG9uc2UgaGVhZGVyc1xuICAgICAgc2V0dXBTZXJ2ZXJBY3Rpb25IZWFkZXJzKHJlcyk7XG5cbiAgICAgIC8vIFNlbmQgc2VydmVyIGFjdGlvbiByZXF1ZXN0IHRvIHdvcmtlclxuICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogXCJTRVJWRVJfQUNUSU9OXCIsXG4gICAgICAgIGlkLFxuICAgICAgICBhcmdzLFxuICAgICAgfSBzYXRpc2ZpZXMgUnNjV29ya2VySW5wdXRNZXNzYWdlKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgcGFzcy10aHJvdWdoIHN0cmVhbSBmb3IgdGhlIHJlc3BvbnNlXG5cbiAgICAgIC8vIEhhbmRsZSB3b3JrZXIgbWVzc2FnZXNcbiAgICAgIG1lc3NhZ2VIYW5kbGVyID0gKG1lc3NhZ2U6IFJzY1dvcmtlck91dHB1dE1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJSU0NfQ0hVTktcIikge1xuICAgICAgICAgIHBhc3NUaHJvdWdoLndyaXRlKG1lc3NhZ2UuY2h1bmspO1xuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJSU0NfRU5EXCIpIHtcbiAgICAgICAgICBpZiAobWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNsZWFudXBXb3JrZXJTZXJ2ZXJBY3Rpb24ocGFzc1Rocm91Z2gsIHdvcmtlciwgbWVzc2FnZUhhbmRsZXIsIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJFUlJPUlwiKSB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICBjbGVhbnVwV29ya2VyU2VydmVyQWN0aW9uKHBhc3NUaHJvdWdoLCB3b3JrZXIsIG1lc3NhZ2VIYW5kbGVyLCByZXMsIG1lc3NhZ2UuZXJyb3IsIGxvZ2dlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB3b3JrZXIub24oXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcblxuICAgICAgLy8gSGFuZGxlIGVycm9yc1xuICAgICAgcGFzc1Rocm91Z2gub24oXCJlcnJvclwiLCAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgY2xlYW51cFdvcmtlclNlcnZlckFjdGlvbihwYXNzVGhyb3VnaCwgd29ya2VyLCBtZXNzYWdlSGFuZGxlciwgcmVzLCBlcnJvciwgbG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgLy8gSGFuZGxlIHBhcnNpbmcgZXJyb3JzXG4gICAgICBpZiAocGFzc1Rocm91Z2ggJiYgbWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgY2xlYW51cFdvcmtlclNlcnZlckFjdGlvbihwYXNzVGhyb3VnaCwgd29ya2VyLCBtZXNzYWdlSGFuZGxlciwgcmVzLCBwYXJzZUVycm9yLCBsb2dnZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU2VydmVyQWN0aW9uRXJyb3IocGFyc2VFcnJvciwgcmVzLCBsb2dnZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGEgcGFzcy10aHJvdWdoIHN0cmVhbSwgY2xlYW4gaXQgdXBcbiAgICBpZiAocGFzc1Rocm91Z2ggJiYgbWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIGNsZWFudXBXb3JrZXJTZXJ2ZXJBY3Rpb24ocGFzc1Rocm91Z2gsIHdvcmtlciwgbWVzc2FnZUhhbmRsZXIsIHJlcywgZXJyb3IsIGxvZ2dlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHdlIGhhdmVuJ3Qgc2V0IHVwIHRoZSBzdHJlYW0geWV0LCB1c2UgdGhlIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJcbiAgICAgIGhhbmRsZVNlcnZlckFjdGlvbkVycm9yKGVycm9yLCByZXMsIGxvZ2dlcik7XG4gICAgfVxuICB9XG59ICJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQXNCQSxlQUFzQix3QkFDcEIsQ0FBQSxHQUFBLEVBQ0EsR0FDQSxFQUFBLE1BQUEsRUFDQSxNQUNBLEVBQUE7QUFDQSxFQUFBLElBQUksY0FBK0QsR0FBQSxJQUFBO0FBRW5FLEVBQU0sTUFBQSxXQUFBLEdBQWMseUJBQXlCLEdBQUcsQ0FB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
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from "./createWorkerStream.js";
|
|
2
|
+
export * from "./handleWorkerRscStream.js";
|
|
3
|
+
export * from "./handleWorkerServerAction.js";
|
|
4
|
+
export { reactClientPlugin as vitePluginReactClient } from "./plugin.js";
|
|
2
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* vite-plugin-react-server
|
|
3
|
+
* Copyright (c) Nico Brinkkemper
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
export { createWorkerStream } from './createWorkerStream.js';
|
|
7
|
+
export { handleWorkerRscStream } from './handleWorkerRscStream.js';
|
|
8
|
+
export { handleWorkerServerAction } from './handleWorkerServerAction.js';
|
|
9
|
+
export { reactClientPlugin as vitePluginReactClient } from './plugin.js';
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzsifQ==
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { ReactStreamPluginFn, ReactStreamPluginMeta } from "../types.js";
|
|
2
|
+
export type ReactClientPluginFn = ReactStreamPluginFn<{
|
|
3
|
+
meta: ReactStreamPluginMeta;
|
|
4
|
+
}>;
|
|
5
|
+
export declare const reactClientPlugin: ReactClientPluginFn;
|
|
4
6
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAQrB,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;IACpD,IAAI,EAAE,qBAAqB,CAAC;CAC7B,CAAC,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,mBAqI/B,CAAA"}
|
|
@@ -11,8 +11,7 @@ import { configureWorkerRequestHandler } from './configureWorkerRequestHandler.j
|
|
|
11
11
|
import { configurePreviewServer } from '../react-static/configurePreviewServer.js';
|
|
12
12
|
import { MessageChannel } from 'node:worker_threads';
|
|
13
13
|
|
|
14
|
-
function
|
|
15
|
-
let userOptions;
|
|
14
|
+
const reactClientPlugin = function _reactClientPlugin(options) {
|
|
16
15
|
let userConfig;
|
|
17
16
|
let configEnv;
|
|
18
17
|
let root;
|
|
@@ -22,7 +21,7 @@ function reactClientPlugin(options) {
|
|
|
22
21
|
if (resolvedOptions.type === "error") {
|
|
23
22
|
throw resolvedOptions.error;
|
|
24
23
|
}
|
|
25
|
-
userOptions = resolvedOptions.userOptions;
|
|
24
|
+
const userOptions = resolvedOptions.userOptions;
|
|
26
25
|
root = userOptions.projectRoot;
|
|
27
26
|
return {
|
|
28
27
|
name: "vite:react-client",
|
|
@@ -74,19 +73,18 @@ function reactClientPlugin(options) {
|
|
|
74
73
|
}
|
|
75
74
|
},
|
|
76
75
|
// setup dev server
|
|
77
|
-
|
|
76
|
+
configureServer(server) {
|
|
78
77
|
hmrChannel = new MessageChannel();
|
|
79
|
-
|
|
78
|
+
configureWorkerRequestHandler({
|
|
80
79
|
server,
|
|
81
80
|
autoDiscoveredFiles,
|
|
82
81
|
userOptions,
|
|
83
|
-
hmrChannel
|
|
84
|
-
onMetrics: userOptions.onMetrics
|
|
82
|
+
hmrChannel
|
|
85
83
|
});
|
|
86
84
|
},
|
|
87
|
-
async handleHotUpdate({ file, server,
|
|
85
|
+
async handleHotUpdate({ file, server, timestamp, ...ctx }) {
|
|
88
86
|
try {
|
|
89
|
-
const isPageFile = userOptions.autoDiscover.modulePattern(file);
|
|
87
|
+
const isPageFile = userOptions.autoDiscover.modulePattern.test(file);
|
|
90
88
|
if (!isPageFile) return;
|
|
91
89
|
const [, value] = userOptions.normalizer(file);
|
|
92
90
|
const affectedRoutes = autoDiscoveredFiles.routeMap.get(value) || [];
|
|
@@ -117,7 +115,7 @@ function reactClientPlugin(options) {
|
|
|
117
115
|
}
|
|
118
116
|
}
|
|
119
117
|
};
|
|
120
|
-
}
|
|
118
|
+
};
|
|
121
119
|
|
|
122
120
|
export { reactClientPlugin };
|
|
123
|
-
//# sourceMappingURL=plugin.js.map
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vcmVhY3QtY2xpZW50L3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbmZpZ0VudiB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9EaXNjb3ZlcmVkRmlsZXMsXG4gIFJlYWN0U3RyZWFtUGx1Z2luRm4sXG4gIFJlYWN0U3RyZWFtUGx1Z2luTWV0YSxcbiAgUmVzb2x2ZWRVc2VyQ29uZmlnLFxufSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IHJlc29sdmVPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlT3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVVzZXJDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL3Jlc29sdmVVc2VyQ29uZmlnLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlQXV0b0Rpc2NvdmVyIH0gZnJvbSBcIi4uL2NvbmZpZy9hdXRvRGlzY292ZXIvcmVzb2x2ZUF1dG9EaXNjb3Zlci5qc1wiO1xuaW1wb3J0IHsgY29uZmlndXJlV29ya2VyUmVxdWVzdEhhbmRsZXIgfSBmcm9tIFwiLi9jb25maWd1cmVXb3JrZXJSZXF1ZXN0SGFuZGxlci5qc1wiO1xuaW1wb3J0IHsgY29uZmlndXJlUHJldmlld1NlcnZlciB9IGZyb20gXCIuLi9yZWFjdC1zdGF0aWMvY29uZmlndXJlUHJldmlld1NlcnZlci5qc1wiO1xuaW1wb3J0IHsgTWVzc2FnZUNoYW5uZWwgfSBmcm9tIFwibm9kZTp3b3JrZXJfdGhyZWFkc1wiO1xuXG5leHBvcnQgdHlwZSBSZWFjdENsaWVudFBsdWdpbkZuID0gUmVhY3RTdHJlYW1QbHVnaW5Gbjx7XG4gIG1ldGE6IFJlYWN0U3RyZWFtUGx1Z2luTWV0YTtcbn0+O1xuXG5leHBvcnQgY29uc3QgcmVhY3RDbGllbnRQbHVnaW46IFJlYWN0Q2xpZW50UGx1Z2luRm4gPSBmdW5jdGlvbiBfcmVhY3RDbGllbnRQbHVnaW4oXG4gIG9wdGlvbnNcbikge1xuICBsZXQgdXNlckNvbmZpZzogUmVzb2x2ZWRVc2VyQ29uZmlnO1xuICBsZXQgY29uZmlnRW52OiBDb25maWdFbnY7XG4gIGxldCByb290OiBzdHJpbmc7XG4gIGxldCBhdXRvRGlzY292ZXJlZEZpbGVzOiBBdXRvRGlzY292ZXJlZEZpbGVzO1xuICBsZXQgaG1yQ2hhbm5lbDogTWVzc2FnZUNoYW5uZWwgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSByZXNvbHZlT3B0aW9ucyhvcHRpb25zKTtcbiAgaWYgKHJlc29sdmVkT3B0aW9ucy50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICB0aHJvdyByZXNvbHZlZE9wdGlvbnMuZXJyb3I7XG4gIH1cbiAgY29uc3QgdXNlck9wdGlvbnMgPSByZXNvbHZlZE9wdGlvbnMudXNlck9wdGlvbnM7XG4gIHJvb3QgPSB1c2VyT3B0aW9ucy5wcm9qZWN0Um9vdDtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwidml0ZTpyZWFjdC1jbGllbnRcIixcblxuICAgIGFzeW5jIGNvbmZpZyhjb25maWcsIHZpdGVDb25maWdFbnYpIHtcbiAgICAgIGNvbmZpZ0VudiA9IHZpdGVDb25maWdFbnY7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBjb25maWcucm9vdCA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICBjb25maWcucm9vdCAhPT0gcm9vdCAmJlxuICAgICAgICBjb25maWcucm9vdCAhPT0gcHJvY2Vzcy5jd2QoKSAmJlxuICAgICAgICBjb25maWcucm9vdCAhPT0gXCJcIlxuICAgICAgKSB7XG4gICAgICAgIHJvb3QgPSBjb25maWcucm9vdDtcbiAgICAgICAgdXNlck9wdGlvbnMucHJvamVjdFJvb3QgPSByb290O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhdXRvRGlzY292ZXJSZXN1bHQgPSBhd2FpdCByZXNvbHZlQXV0b0Rpc2NvdmVyKHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWdFbnYsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBjb25kaXRpb246IFwicmVhY3QtY2xpZW50XCIsXG4gICAgICB9KTtcbiAgICAgIGlmIChhdXRvRGlzY292ZXJSZXN1bHQudHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgIHRocm93IGF1dG9EaXNjb3ZlclJlc3VsdC5lcnJvcjtcbiAgICAgIH1cbiAgICAgIGF1dG9EaXNjb3ZlcmVkRmlsZXMgPSBhdXRvRGlzY292ZXJSZXN1bHQuYXV0b0Rpc2NvdmVyZWRGaWxlcztcblxuICAgICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSByZXNvbHZlVXNlckNvbmZpZyh7XG4gICAgICAgIGNvbmRpdGlvbjogXCJyZWFjdC1jbGllbnRcIixcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWdFbnYsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBhdXRvRGlzY292ZXJlZEZpbGVzLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXNvbHZlZENvbmZpZy50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgdGhyb3cgcmVzb2x2ZWRDb25maWcuZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHVzZXJDb25maWcgPSByZXNvbHZlZENvbmZpZy51c2VyQ29uZmlnO1xuICAgICAgcmV0dXJuIHVzZXJDb25maWc7XG4gICAgfSxcbiAgICBhc3luYyBjb25maWd1cmVQcmV2aWV3U2VydmVyKHNlcnZlcikge1xuICAgICAgYXdhaXQgY29uZmlndXJlUHJldmlld1NlcnZlcih7XG4gICAgICAgIHNlcnZlcixcbiAgICAgICAgdXNlck9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFzeW5jIHdyaXRlQnVuZGxlKG9wdGlvbnMsIGJ1bmRsZSkge1xuICAgICAgaWYgKHVzZXJPcHRpb25zLm9uRXZlbnQpIHtcbiAgICAgICAgdXNlck9wdGlvbnMub25FdmVudCh7XG4gICAgICAgICAgdHlwZTogYGJ1aWxkLndyaXRlQnVuZGxlLiR7XG4gICAgICAgICAgICB1c2VyQ29uZmlnLmJ1aWxkLnNzciA/IFwiY2xpZW50XCIgOiBcInN0YXRpYy1jbGllbnRcIlxuICAgICAgICAgIH1gLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBhZ2VzOiBbLi4uYXV0b0Rpc2NvdmVyZWRGaWxlcy5yb3V0ZU1hcC5rZXlzKCldLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGJ1bmRsZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIHNldHVwIGRldiBzZXJ2ZXJcbiAgICBjb25maWd1cmVTZXJ2ZXIoc2VydmVyKSB7XG4gICAgICAvLyBDcmVhdGUgSE1SIG1lc3NhZ2UgY2hhbm5lbFxuICAgICAgaG1yQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgICAgY29uZmlndXJlV29ya2VyUmVxdWVzdEhhbmRsZXIoe1xuICAgICAgICBzZXJ2ZXIsXG4gICAgICAgIGF1dG9EaXNjb3ZlcmVkRmlsZXMsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBobXJDaGFubmVsLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIGFzeW5jIGhhbmRsZUhvdFVwZGF0ZSh7IGZpbGUsIHNlcnZlciwgdGltZXN0YW1wLCAuLi5jdHggfSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaXMgYSBwYWdlIG9yIHByb3BzIGZpbGVcbiAgICAgICAgY29uc3QgaXNQYWdlRmlsZSA9IHVzZXJPcHRpb25zLmF1dG9EaXNjb3Zlci5tb2R1bGVQYXR0ZXJuLnRlc3QoZmlsZSk7XG4gICAgICAgIGlmICghaXNQYWdlRmlsZSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEdldCB0aGUgcm91dGUgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBbLCB2YWx1ZV0gPSB1c2VyT3B0aW9ucy5ub3JtYWxpemVyKGZpbGUpO1xuXG4gICAgICAgIC8vIEZpbmQgYWxsIHJvdXRlcyBhZmZlY3RlZCBieSB0aGlzIGZpbGUgY2hhbmdlXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkUm91dGVzID0gYXV0b0Rpc2NvdmVyZWRGaWxlcy5yb3V0ZU1hcC5nZXQodmFsdWUpIHx8IFtdO1xuXG4gICAgICAgIC8vIFNlbmQgSE1SIHVwZGF0ZSBkaXJlY3RseSB0byB3b3JrZXIgdGhyb3VnaCBNZXNzYWdlQ2hhbm5lbFxuICAgICAgICBpZiAoaG1yQ2hhbm5lbD8ucG9ydDEpIHtcbiAgICAgICAgICBobXJDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHR5cGU6IFwiSE1SX1VQREFURVwiLFxuICAgICAgICAgICAgcGF0aDogZmlsZSxcbiAgICAgICAgICAgIHRpbWVzdGFtcCxcbiAgICAgICAgICAgIHJvdXRlczogYWZmZWN0ZWRSb3V0ZXMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBUcmlnZ2VyIGEgZnVsbCBwYWdlIHJlZnJlc2ggZm9yIGFmZmVjdGVkIHJvdXRlc1xuICAgICAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgYWZmZWN0ZWRSb3V0ZXMpIHtcbiAgICAgICAgICAgIHNlcnZlci53cy5zZW5kKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJmdWxsLXJlbG9hZFwiLFxuICAgICAgICAgICAgICBwYXRoOiByb3V0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExldCBWaXRlIGhhbmRsZSB0aGUgSE1SIHVwZGF0ZVxuICAgICAgICByZXR1cm4gY3R4Lm1vZHVsZXM7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoaG1yQ2hhbm5lbD8ucG9ydDEpIHtcbiAgICAgICAgICBobXJDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHR5cGU6IFwiSE1SX0VSUk9SXCIsXG4gICAgICAgICAgICBwYXRoOiBmaWxlLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3R4Lm1vZHVsZXM7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJvcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBa0JhLE1BQUEsaUJBQUEsR0FBeUMsU0FBUyxrQkFBQSxDQUM3RCxPQUNBLEVBQUE7QUFDQSxFQUFJLElBQUEsVUFBQTtBQUNKLEVBQUksSUFBQSxTQUFBO0FBQ0osRUFBSSxJQUFBLElBQUE7QUFDSixFQUFJLElBQUEsbUJBQUE7QUFDSixFQUFBLElBQUksVUFBb0MsR0FBQSxJQUFBO0FBRXhDLEVBQU0sTUFBQSxlQUFBLEdBQWtCLGVBQWUsT0FBTyxDQUFBO0FBQzlDLEVBQUksSUFBQSxlQUFBLENBQWdCLFNBQVMsT0FBUyxFQUFBO0FBQ3BDLElBQUEsTUFBTSxlQUFnQixDQUFBLEtBQUE7QUFBQTtBQUV4QixFQUFBLE1BQU0sY0FBYyxlQUFnQixDQUFBLFdBQUE7QUFDcEMsRUFBQSxJQUFBLEdBQU8sV0FBWSxDQUFBLFdBQUE7QUFFbkIsRUFBTyxPQUFBO0FBQUEsSUFDTCxJQUFNLEVBQUEsbUJBQUE7QUFBQSxJQUVOLE1BQU0sTUFBTyxDQUFBLE1BQUEsRUFBUSxhQUFlLEVBQUE7QUFDbEMsTUFBWSxTQUFBLEdBQUEsYUFBQTtBQUNaLE1BQUEsSUFDRSxPQUFPLE1BQUEsQ0FBTyxJQUFTLEtBQUEsUUFBQSxJQUN2QixPQUFPLElBQVMsS0FBQSxJQUFBLElBQ2hCLE1BQU8sQ0FBQSxJQUFBLEtBQVMsT0FBUSxDQUFBLEdBQUEsRUFDeEIsSUFBQSxNQUFBLENBQU8sU0FBUyxFQUNoQixFQUFBO0FBQ0EsUUFBQSxJQUFBLEdBQU8sTUFBTyxDQUFBLElBQUE7QUFDZCxRQUFBLFdBQUEsQ0FBWSxXQUFjLEdBQUEs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
|