vite-plugin-react-server 1.1.12 → 1.1.13
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/dist/package.json +10 -8
- package/dist/plugin/components/css-collector-elements.d.ts +4 -2
- package/dist/plugin/components/css-collector-elements.d.ts.map +1 -1
- package/dist/plugin/components/css-collector-elements.js +21 -7
- package/dist/plugin/components/css-collector-elements.js.map +1 -1
- package/dist/plugin/components/css-collector.d.ts +4 -5
- package/dist/plugin/components/css-collector.d.ts.map +1 -1
- package/dist/plugin/components/css-collector.js +5 -9
- package/dist/plugin/components/css-collector.js.map +1 -1
- 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 +14 -3
- package/dist/plugin/components/html.js.map +1 -1
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts +4 -4
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +14 -9
- package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js.map +1 -1
- package/dist/plugin/config/defaults.d.ts +66 -12
- package/dist/plugin/config/defaults.d.ts.map +1 -1
- package/dist/plugin/config/defaults.js +69 -15
- package/dist/plugin/config/defaults.js.map +1 -1
- package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts +5 -0
- package/dist/plugin/config/resolveAutoDiscoverMatcher.d.ts.map +1 -0
- package/dist/plugin/config/resolveAutoDiscoverMatcher.js +25 -0
- package/dist/plugin/config/resolveAutoDiscoverMatcher.js.map +1 -0
- package/dist/plugin/config/resolveEnv.d.ts.map +1 -1
- package/dist/plugin/config/resolveEnv.js +16 -5
- package/dist/plugin/config/resolveEnv.js.map +1 -1
- package/dist/plugin/config/resolveOptions.d.ts +3 -3
- package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
- package/dist/plugin/config/resolveOptions.js +59 -87
- package/dist/plugin/config/resolveOptions.js.map +1 -1
- package/dist/plugin/config/resolveUserConfig.d.ts +4 -4
- package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
- package/dist/plugin/config/resolveUserConfig.js +8 -1
- package/dist/plugin/config/resolveUserConfig.js.map +1 -1
- package/dist/plugin/error/toError.d.ts +3 -0
- package/dist/plugin/error/toError.d.ts.map +1 -1
- package/dist/plugin/error/toError.js +33 -4
- package/dist/plugin/error/toError.js.map +1 -1
- package/dist/plugin/helpers/cleanObject.d.ts.map +1 -1
- package/dist/plugin/helpers/cleanObject.js +19 -5
- package/dist/plugin/helpers/cleanObject.js.map +1 -1
- package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +3 -3
- package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
- package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +1 -1
- package/dist/plugin/helpers/createCssProps.d.ts +4 -3
- package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
- package/dist/plugin/helpers/createCssProps.js +7 -2
- package/dist/plugin/helpers/createCssProps.js.map +1 -1
- package/dist/plugin/helpers/createHandler.d.ts +4 -3
- package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
- package/dist/plugin/helpers/createHandler.js +1 -1
- package/dist/plugin/helpers/createHandler.js.map +1 -1
- package/dist/plugin/helpers/createRscStream.d.ts +2 -2
- package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
- package/dist/plugin/helpers/createRscStream.js +15 -5
- package/dist/plugin/helpers/createRscStream.js.map +1 -1
- package/dist/plugin/helpers/index.d.ts +2 -2
- package/dist/plugin/helpers/index.d.ts.map +1 -1
- package/dist/plugin/helpers/index.js +2 -2
- package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
- package/dist/plugin/helpers/inputNormalizer.js +4 -1
- package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
- package/dist/plugin/helpers/moduleResolver.d.ts +3 -0
- package/dist/plugin/helpers/moduleResolver.d.ts.map +1 -0
- package/dist/plugin/helpers/moduleResolver.js +25 -0
- package/dist/plugin/helpers/requestInfo.d.ts +18 -3
- package/dist/plugin/helpers/requestInfo.d.ts.map +1 -1
- package/dist/plugin/helpers/requestInfo.js +75 -11
- package/dist/plugin/helpers/requestInfo.js.map +1 -1
- package/dist/plugin/helpers/resolvePage.d.ts.map +1 -1
- package/dist/plugin/helpers/resolvePage.js +2 -3
- package/dist/plugin/helpers/resolvePage.js.map +1 -1
- package/dist/plugin/helpers/resolvePageAndProps.d.ts +4 -3
- package/dist/plugin/helpers/resolvePageAndProps.d.ts.map +1 -1
- package/dist/plugin/helpers/resolvePageAndProps.js.map +1 -1
- package/dist/plugin/helpers/serializeUserOptions.d.ts +3 -2
- package/dist/plugin/helpers/serializeUserOptions.d.ts.map +1 -1
- package/dist/plugin/helpers/serializeUserOptions.js +13 -1
- package/dist/plugin/helpers/serializeUserOptions.js.map +1 -1
- package/dist/plugin/helpers/sourceMap.d.ts +8 -0
- package/dist/plugin/helpers/sourceMap.d.ts.map +1 -0
- package/dist/plugin/helpers/sourceMap.js +136 -0
- package/dist/plugin/helpers.js +1 -1
- package/dist/plugin/loader/createBuildLoader.d.ts +7 -22
- package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
- package/dist/plugin/loader/createBuildLoader.js +79 -65
- package/dist/plugin/loader/createBuildLoader.js.map +1 -1
- package/dist/plugin/loader/createDefaultLoader.d.ts +13 -0
- package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -0
- package/dist/plugin/loader/createDefaultLoader.js +47 -0
- package/dist/plugin/loader/css-loader.development.d.ts +1 -0
- package/dist/plugin/loader/css-loader.development.d.ts.map +1 -1
- package/dist/plugin/loader/css-loader.development.js +1 -1
- package/dist/plugin/loader/css-loader.development.js.map +1 -1
- package/dist/plugin/loader/handleExports.d.ts +33 -0
- package/dist/plugin/loader/handleExports.d.ts.map +1 -0
- package/dist/plugin/loader/handleExports.js +174 -0
- package/dist/plugin/loader/handleExports.js.map +1 -0
- package/dist/plugin/loader/index.d.ts +1 -1
- package/dist/plugin/loader/index.d.ts.map +1 -1
- package/dist/plugin/loader/index.js +4 -1
- package/dist/plugin/loader/parse.d.ts +6 -0
- package/dist/plugin/loader/parse.d.ts.map +1 -0
- package/dist/plugin/loader/parse.js +23 -0
- package/dist/plugin/loader/parse.js.map +1 -0
- package/dist/plugin/loader/react-loader.client.d.ts +2 -0
- package/dist/plugin/loader/react-loader.client.d.ts.map +1 -0
- package/dist/plugin/loader/react-loader.client.js +2 -0
- package/dist/plugin/loader/react-loader.d.ts +1 -12
- package/dist/plugin/loader/react-loader.d.ts.map +1 -1
- package/dist/plugin/loader/react-loader.js +5 -687
- package/dist/plugin/loader/react-loader.js.map +1 -1
- package/dist/plugin/loader/react-loader.server.d.ts +21 -0
- package/dist/plugin/loader/react-loader.server.d.ts.map +1 -0
- package/dist/plugin/loader/react-loader.server.js +69 -0
- package/dist/plugin/loader/sourceMap.d.ts +35 -0
- package/dist/plugin/loader/sourceMap.d.ts.map +1 -0
- package/dist/plugin/loader/sourceMap.js +105 -0
- package/dist/plugin/loader/temporaryReferences.d.ts +1 -1
- package/dist/plugin/loader/temporaryReferences.d.ts.map +1 -1
- package/dist/plugin/loader/transformModuleIfNeeded.d.ts +2 -0
- package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -0
- package/dist/plugin/loader/transformModuleIfNeeded.js +27 -0
- package/dist/plugin/loader/transformModuleIfNeeded.js.map +1 -0
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts +27 -0
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts.map +1 -0
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +52 -0
- package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +1 -0
- package/dist/plugin/loader/types.d.ts +8 -0
- package/dist/plugin/loader/types.d.ts.map +1 -0
- package/dist/plugin/loader/types.js +1 -0
- package/dist/plugin/plugin.client.d.ts +2 -2
- package/dist/plugin/plugin.client.d.ts.map +1 -1
- package/dist/plugin/plugin.client.js +2 -3
- package/dist/plugin/plugin.client.js.map +1 -1
- package/dist/plugin/plugin.server.d.ts +2 -2
- package/dist/plugin/plugin.server.d.ts.map +1 -1
- package/dist/plugin/plugin.server.js +2 -2
- package/dist/plugin/plugin.server.js.map +1 -1
- 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 +6 -2
- package/dist/plugin/preserver/plugin.js.map +1 -1
- package/dist/plugin/react-client/{server.d.ts → configureWorkerRequestHandler.d.ts} +4 -4
- package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -0
- package/dist/plugin/react-client/{server.js → configureWorkerRequestHandler.js} +11 -8
- package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +1 -0
- 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 +18 -11
- package/dist/plugin/react-client/createMessageHandlers.js.map +1 -1
- package/dist/plugin/react-client/createWorkerStream.d.ts +5 -3
- package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
- package/dist/plugin/react-client/createWorkerStream.js +61 -27
- package/dist/plugin/react-client/createWorkerStream.js.map +1 -1
- package/dist/plugin/react-client/handleWorkerRscStream.d.ts +1 -1
- package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -1
- package/dist/plugin/react-client/handleWorkerRscStream.js +14 -4
- package/dist/plugin/react-client/handleWorkerRscStream.js.map +1 -1
- package/dist/plugin/react-client/plugin.d.ts +2 -2
- package/dist/plugin/react-client/plugin.d.ts.map +1 -1
- package/dist/plugin/react-client/plugin.js +7 -8
- package/dist/plugin/react-client/plugin.js.map +1 -1
- package/dist/plugin/react-client/restartWorker.d.ts +1 -1
- package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
- package/dist/plugin/react-client/restartWorker.js +9 -3
- package/dist/plugin/react-client/restartWorker.js.map +1 -1
- package/dist/plugin/react-server/configureReactServer.d.ts +9 -0
- package/dist/plugin/react-server/configureReactServer.d.ts.map +1 -0
- package/dist/plugin/react-server/{server.js → configureReactServer.js} +26 -8
- package/dist/plugin/react-server/configureReactServer.js.map +1 -0
- package/dist/plugin/react-server/handleServerAction.d.ts +5 -0
- package/dist/plugin/react-server/handleServerAction.d.ts.map +1 -0
- package/dist/plugin/react-server/handleServerAction.js +145 -0
- package/dist/plugin/react-server/handleServerAction.js.map +1 -0
- package/dist/plugin/react-server/plugin.d.ts +2 -2
- package/dist/plugin/react-server/plugin.d.ts.map +1 -1
- package/dist/plugin/react-server/plugin.js +1 -1
- package/dist/plugin/react-server/plugin.js.map +1 -1
- package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts +2 -2
- package/dist/plugin/react-static/collectHtmlWorkerContent.d.ts.map +1 -1
- package/dist/plugin/react-static/collectHtmlWorkerContent.js.map +1 -1
- package/dist/plugin/react-static/collectRscContent.d.ts +2 -2
- package/dist/plugin/react-static/collectRscContent.d.ts.map +1 -1
- package/dist/plugin/react-static/collectRscContent.js.map +1 -1
- package/dist/plugin/react-static/configurePreviewServer.d.ts +3 -3
- package/dist/plugin/react-static/configurePreviewServer.d.ts.map +1 -1
- package/dist/plugin/react-static/configurePreviewServer.js +18 -7
- package/dist/plugin/react-static/configurePreviewServer.js.map +1 -1
- package/dist/plugin/react-static/plugin.d.ts +2 -2
- package/dist/plugin/react-static/plugin.d.ts.map +1 -1
- package/dist/plugin/react-static/plugin.js +28 -12
- package/dist/plugin/react-static/plugin.js.map +1 -1
- package/dist/plugin/react-static/renderPage.d.ts +2 -2
- package/dist/plugin/react-static/renderPage.d.ts.map +1 -1
- package/dist/plugin/react-static/renderPage.js.map +1 -1
- package/dist/plugin/react-static/renderPages.d.ts +2 -2
- package/dist/plugin/react-static/renderPages.d.ts.map +1 -1
- package/dist/plugin/react-static/renderPages.js.map +1 -1
- package/dist/plugin/react-static/renderStreams.d.ts +2 -2
- package/dist/plugin/react-static/renderStreams.d.ts.map +1 -1
- package/dist/plugin/react-static/renderStreams.js +4 -4
- package/dist/plugin/react-static/renderStreams.js.map +1 -1
- package/dist/plugin/source-map/createMappingsSerializer.d.ts +2 -0
- package/dist/plugin/source-map/createMappingsSerializer.d.ts.map +1 -0
- package/dist/plugin/source-map/createMappingsSerializer.js +159 -0
- package/dist/plugin/source-map/readMappings.d.ts +2 -0
- package/dist/plugin/source-map/readMappings.d.ts.map +1 -0
- package/dist/plugin/source-map/readMappings.js +201 -0
- package/dist/plugin/transformer/index.d.ts +0 -1
- package/dist/plugin/transformer/index.d.ts.map +1 -1
- package/dist/plugin/transformer/index.js +0 -1
- package/dist/plugin/transformer/plugin.client.d.ts +1 -3
- package/dist/plugin/transformer/plugin.client.d.ts.map +1 -1
- package/dist/plugin/transformer/plugin.client.js +1 -84
- package/dist/plugin/transformer/plugin.server.d.ts +2 -2
- package/dist/plugin/transformer/plugin.server.d.ts.map +1 -1
- package/dist/plugin/transformer/plugin.server.js +52 -20
- package/dist/plugin/transformer/plugin.server.js.map +1 -1
- package/dist/plugin/types.d.ts +89 -119
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/utils/callServer.d.ts +1 -1
- package/dist/plugin/utils/callServer.d.ts.map +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 +13 -4
- package/dist/plugin/utils/createCallServer.js.map +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 +1 -0
- package/dist/plugin/utils.js +1 -0
- package/dist/plugin/utils.js.map +1 -1
- package/dist/plugin/vendor/vendor.client.d.ts +2 -1
- package/dist/plugin/vendor/vendor.client.d.ts.map +1 -1
- package/dist/plugin/vendor/vendor.client.js +2 -1
- package/dist/plugin/vendor/vendor.client.js.map +1 -1
- package/dist/plugin/vendor/vendor.server.d.ts.map +1 -1
- package/dist/plugin/vendor/vendor.server.js +1 -1
- package/dist/plugin/vendor/vendor.server.js.map +1 -1
- package/dist/plugin/worker/createWorker.d.ts.map +1 -1
- package/dist/plugin/worker/createWorker.js +17 -22
- package/dist/plugin/worker/createWorker.js.map +1 -1
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.d.ts.map +1 -1
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.js +25 -4
- package/dist/plugin/worker/html/createHtmlWorkerRenderState.js.map +1 -1
- package/dist/plugin/worker/html/html-worker.development.js +15 -13
- package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
- package/dist/plugin/worker/html/html-worker.production.js +2 -12
- package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
- package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/html/messageHandler.js +2 -2
- package/dist/plugin/worker/html/messageHandler.js.map +1 -1
- package/dist/plugin/worker/rsc/handleRender.d.ts +2 -1
- package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/handleRender.js +8 -8
- package/dist/plugin/worker/rsc/handleRender.js.map +1 -1
- package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/messageHandler.js +166 -107
- package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
- package/dist/plugin/worker/rsc/rsc-worker.development.js +112 -52
- package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
- package/dist/plugin/worker/rsc/rsc-worker.production.js +1 -1
- package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
- package/dist/plugin/worker/rsc/state.d.ts +5 -64
- package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/state.js +5 -1
- package/dist/plugin/worker/rsc/state.js.map +1 -1
- package/dist/plugin/worker/sendMessage.d.ts +2 -0
- package/dist/plugin/worker/sendMessage.d.ts.map +1 -1
- package/dist/plugin/worker/sendMessage.js +2 -1
- package/dist/plugin/worker/sendMessage.js.map +1 -1
- package/dist/plugin/worker/types.d.ts +52 -53
- package/dist/plugin/worker/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -8
- package/plugin/components/css-collector-elements.tsx +30 -9
- package/plugin/components/css-collector.tsx +13 -22
- package/plugin/components/html.tsx +12 -5
- package/plugin/config/autoDiscover/resolveAutoDiscover.ts +31 -13
- package/plugin/config/defaults.tsx +72 -16
- package/plugin/config/resolveAutoDiscoverMatcher.ts +23 -0
- package/plugin/config/resolveEnv.ts +20 -12
- package/plugin/config/resolveOptions.ts +152 -155
- package/plugin/config/resolveUserConfig.ts +20 -5
- package/plugin/error/toError.ts +35 -1
- package/plugin/helpers/cleanObject.ts +79 -15
- package/plugin/helpers/collectViteModuleGraphCss.ts +4 -3
- package/plugin/helpers/createCssProps.tsx +26 -9
- package/plugin/helpers/createHandler.ts +7 -4
- package/plugin/helpers/createRscStream.tsx +20 -14
- package/plugin/helpers/index.ts +2 -2
- package/plugin/helpers/inputNormalizer.ts +4 -2
- package/plugin/helpers/moduleResolver.ts +36 -0
- package/plugin/helpers/requestInfo.ts +117 -23
- package/plugin/helpers/resolvePage.ts +2 -3
- package/plugin/helpers/resolvePageAndProps.ts +7 -6
- package/plugin/helpers/serializeUserOptions.ts +20 -2
- package/plugin/helpers/sourceMap.ts +182 -0
- package/plugin/loader/createBuildLoader.ts +124 -104
- package/plugin/loader/createDefaultLoader.ts +62 -0
- package/plugin/loader/css-loader.development.ts +3 -2
- package/plugin/loader/handleExports.ts +276 -0
- package/plugin/loader/index.ts +6 -1
- package/plugin/loader/parse.ts +22 -0
- package/plugin/loader/react-loader.client.ts +1 -0
- package/plugin/loader/react-loader.server.ts +107 -0
- package/plugin/loader/react-loader.ts +4 -1002
- package/plugin/loader/sourceMap.ts +118 -0
- package/plugin/loader/transformModuleIfNeeded.ts +33 -0
- package/plugin/loader/transformModuleWithPreservedFunctions.ts +119 -0
- package/plugin/loader/types.ts +10 -0
- package/plugin/plugin.client.ts +18 -11
- package/plugin/plugin.server.ts +6 -3
- package/plugin/preserver/plugin.ts +37 -17
- package/plugin/react-client/{server.ts → configureWorkerRequestHandler.ts} +22 -12
- package/plugin/react-client/createMessageHandlers.ts +21 -13
- package/plugin/react-client/createWorkerStream.ts +71 -33
- package/plugin/react-client/handleWorkerRscStream.ts +15 -5
- package/plugin/react-client/plugin.ts +18 -13
- package/plugin/react-client/restartWorker.ts +17 -5
- package/plugin/react-server/{server.ts → configureReactServer.ts} +40 -9
- package/plugin/react-server/handleServerAction.ts +177 -0
- package/plugin/react-server/plugin.ts +8 -3
- package/plugin/react-static/collectHtmlWorkerContent.ts +11 -3
- package/plugin/react-static/collectRscContent.ts +17 -9
- package/plugin/react-static/configurePreviewServer.ts +37 -17
- package/plugin/react-static/plugin.ts +45 -22
- package/plugin/react-static/renderPage.ts +12 -6
- package/plugin/react-static/renderPages.ts +15 -4
- package/plugin/react-static/renderStreams.ts +13 -12
- package/plugin/source-map/createMappingsSerializer.ts +182 -0
- package/plugin/source-map/readMappings.ts +195 -0
- package/plugin/transformer/README.md +295 -29
- package/plugin/transformer/index.ts +0 -1
- package/plugin/transformer/plugin.client.ts +0 -111
- package/plugin/transformer/plugin.server.ts +94 -25
- package/plugin/types/react-server-dom-esm.d.ts +183 -24
- package/plugin/types/sourceMap.d.ts +2 -0
- package/plugin/types/webpack-sources.d.ts +24 -0
- package/plugin/types.ts +169 -132
- package/plugin/utils/createCallServer.ts +21 -6
- package/plugin/utils/index.ts +2 -1
- package/plugin/vendor/vendor.client.ts +2 -1
- package/plugin/vendor/vendor.server.ts +1 -1
- package/plugin/worker/createWorker.ts +21 -24
- package/plugin/worker/html/createHtmlWorkerRenderState.tsx +31 -7
- package/plugin/worker/html/html-worker.development.tsx +16 -16
- package/plugin/worker/html/html-worker.production.tsx +3 -19
- package/plugin/worker/html/messageHandler.tsx +2 -4
- package/plugin/worker/rsc/handleRender.ts +15 -12
- package/plugin/worker/rsc/messageHandler.tsx +191 -120
- package/plugin/worker/rsc/rsc-worker.development.ts +148 -77
- package/plugin/worker/rsc/rsc-worker.production.ts +1 -1
- package/plugin/worker/rsc/state.ts +10 -0
- package/plugin/worker/sendMessage.ts +32 -14
- package/plugin/worker/types.ts +99 -64
- package/dist/plugin/react-client/server.d.ts.map +0 -1
- package/dist/plugin/react-client/server.js.map +0 -1
- package/dist/plugin/react-server/server.d.ts +0 -9
- package/dist/plugin/react-server/server.d.ts.map +0 -1
- package/dist/plugin/react-server/server.js.map +0 -1
- package/dist/plugin/transformer/plugin.client.js.map +0 -1
- package/dist/plugin/transformer/upgradeCssModuleCode.d.ts +0 -2
- package/dist/plugin/transformer/upgradeCssModuleCode.d.ts.map +0 -1
- package/dist/plugin/transformer/upgradeCssModuleCode.js +0 -40
- package/dist/plugin/worker/loader.d.ts +0 -5
- package/dist/plugin/worker/loader.d.ts.map +0 -1
- package/dist/plugin/worker/loader.js +0 -11
- package/dist/plugin/worker/loader.js.map +0 -1
- package/plugin/transformer/upgradeCssModuleCode.ts +0 -42
- package/plugin/worker/loader.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/preserver/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/preserver/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAyCrB,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,MAAM,EAAE,MAAM,CAgInE"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { DEFAULT_CONFIG } from '../config/defaults.js';
|
|
7
7
|
import { basename } from 'path';
|
|
8
|
+
import { resolveAutoDiscoverMatcher } from '../config/resolveAutoDiscoverMatcher.js';
|
|
8
9
|
|
|
9
10
|
const REACT_DIRECTIVES = /* @__PURE__ */ new Set(["use client", "use server"]);
|
|
10
11
|
function createSourceMap(id, code, mappings) {
|
|
@@ -33,8 +34,11 @@ function countLines(str) {
|
|
|
33
34
|
}
|
|
34
35
|
return count;
|
|
35
36
|
}
|
|
36
|
-
function reactPreservePlugin(
|
|
37
|
+
function reactPreservePlugin(options) {
|
|
37
38
|
const meta = {};
|
|
39
|
+
const moduleExtension = resolveAutoDiscoverMatcher(options.autoDiscover?.moduleExtension, DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension);
|
|
40
|
+
const vendorPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.vendorPattern, DEFAULT_CONFIG.AUTO_DISCOVER.vendorPattern);
|
|
41
|
+
const virtualPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.virtualPattern, DEFAULT_CONFIG.AUTO_DISCOVER.virtualPattern);
|
|
38
42
|
return {
|
|
39
43
|
name: "vite-plugin-react-server:preserve-directives",
|
|
40
44
|
enforce: "post",
|
|
@@ -42,7 +46,7 @@ function reactPreservePlugin(_options) {
|
|
|
42
46
|
order: "post",
|
|
43
47
|
// Ensure this runs last in transform phase
|
|
44
48
|
handler(code, id) {
|
|
45
|
-
if (id
|
|
49
|
+
if (vendorPattern(id) || virtualPattern(id) || !moduleExtension(id)) {
|
|
46
50
|
return null;
|
|
47
51
|
}
|
|
48
52
|
let ast;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../plugin/preserver/plugin.ts"],"sourcesContent":["import type { Node } from \"estree\";\nimport type {
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../plugin/preserver/plugin.ts"],"sourcesContent":["import type { Node } from \"estree\";\nimport type {\n InlineCssOpt,\n PagePropOpt,\n StreamPluginOptions,\n} from \"../types.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { basename } from \"path\";\nimport { resolveAutoDiscoverMatcher } from \"../config/resolveAutoDiscoverMatcher.js\";\n\nconst REACT_DIRECTIVES = new Set([\"use client\", \"use server\"]);\n\nfunction createSourceMap(id: string, code: string, mappings: string) {\n return {\n version: 3,\n file: basename(id),\n sources: [id],\n sourcesContent: [code],\n names: [],\n mappings,\n sourceRoot: \"\",\n };\n}\n\nfunction removeRanges(\n code: string,\n ranges: Array<{ start: number; end: number }>\n) {\n // Sort ranges in reverse order to not affect positions\n ranges.sort((a, b) => b.start - a.start);\n\n let result = code;\n for (const range of ranges) {\n result = result.slice(0, range.start) + result.slice(range.end);\n }\n return result;\n}\n\nfunction countLines(str: string): number {\n let count = 1;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === \"\\n\") count++;\n }\n return count;\n}\n\nexport function reactPreservePlugin<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>(options: StreamPluginOptions<T, InlineCSS>): import(\"vite\").Plugin {\n const meta: Record<string, Set<string>> = {};\n // saves us from transforming all the options\n const moduleExtension = resolveAutoDiscoverMatcher(options.autoDiscover?.moduleExtension, DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension);\n const vendorPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.vendorPattern, DEFAULT_CONFIG.AUTO_DISCOVER.vendorPattern);\n const virtualPattern = resolveAutoDiscoverMatcher(options.autoDiscover?.virtualPattern, DEFAULT_CONFIG.AUTO_DISCOVER.virtualPattern);\n return {\n name: \"vite-plugin-react-server:preserve-directives\",\n enforce: \"post\",\n\n transform: {\n order: \"post\", // Ensure this runs last in transform phase\n handler(code: string, id: string) {\n // Skip node_modules and vite files\n if (\n vendorPattern(id) ||\n virtualPattern(id) ||\n !moduleExtension(id)\n ) {\n return null;\n }\n\n let ast: Node;\n try {\n ast = this.parse(code, {\n allowReturnOutsideFunction: true,\n jsx: true,\n }) as Node;\n } catch (e) {\n console.warn(`[PreservePlugin] Failed to parse ${id}`, e);\n return null;\n }\n\n if (ast.type !== \"Program\") {\n return null;\n }\n\n const rangesToRemove: Array<{ start: number; end: number }> = [];\n let hasChanged = false;\n let lineCount = 1;\n let mappings = \"AAAA\"; // Initial mapping for first line\n\n // Only look at top-level directives\n for (const node of ast.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node) {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n REACT_DIRECTIVES.has(node.expression.value)\n ) {\n directive = node.expression.value;\n }\n\n if (directive && \"start\" in node && \"end\" in node) {\n meta[id] ||= new Set<string>();\n meta[id].add(directive);\n rangesToRemove.push({\n start: node.start as number,\n end: node.end as number,\n });\n hasChanged = true;\n\n // Add mapping for each line removed\n const removedLines =\n code.slice(node.start as number, node.end as number).split(\"\\n\")\n .length - 1;\n for (let i = 0; i < removedLines; i++) {\n mappings += \";AACA\";\n lineCount++;\n }\n }\n }\n\n if (!hasChanged) {\n return null;\n }\n\n const newCode = removeRanges(code, rangesToRemove);\n const sourceMap = createSourceMap(id, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n meta: {\n directives: Array.from(meta[id] || []),\n },\n };\n },\n },\n\n renderChunk(code, chunk) {\n const chunkDirectives = new Set<string>();\n\n // Collect directives from all modules in chunk\n for (const id of chunk.moduleIds) {\n if (meta[id]) {\n meta[id].forEach((d) => chunkDirectives.add(d));\n }\n }\n\n if (chunkDirectives.size) {\n const directivesCode =\n Array.from(chunkDirectives)\n .map((d) => `\"${d}\";`)\n .join(\"\\n\") + \"\\n\";\n\n const newCode = directivesCode + code;\n\n // Create source map for the prepended directives\n const lineCount = countLines(directivesCode);\n const mappings = \"AAAA\" + \";AACA\".repeat(lineCount - 1);\n const sourceMap = createSourceMap(chunk.fileName, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n };\n }\n\n return null;\n },\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ViteDevServer } from "vite";
|
|
2
|
-
import type { AutoDiscoveredFiles, RenderMetrics, ResolvedUserOptions } from "../types.js";
|
|
2
|
+
import type { AutoDiscoveredFiles, InlineCssOpt, PagePropOpt, RenderMetrics, ResolvedUserOptions } from "../types.js";
|
|
3
3
|
import { MessageChannel } from "node:worker_threads";
|
|
4
4
|
/**
|
|
5
5
|
* Configures the worker request handler.
|
|
@@ -7,11 +7,11 @@ import { MessageChannel } from "node:worker_threads";
|
|
|
7
7
|
* @param autoDiscoveredFiles - The auto discovered files
|
|
8
8
|
* @param userOptions - The user options
|
|
9
9
|
*/
|
|
10
|
-
export declare function configureWorkerRequestHandler({ server, autoDiscoveredFiles, userOptions: _userOptions, hmrChannel, onMetrics, }: {
|
|
10
|
+
export declare function configureWorkerRequestHandler<T extends PagePropOpt = PagePropOpt, InlineCSS extends InlineCssOpt = InlineCssOpt>({ server, autoDiscoveredFiles, userOptions: _userOptions, hmrChannel, onMetrics, }: {
|
|
11
11
|
server: ViteDevServer;
|
|
12
12
|
autoDiscoveredFiles: AutoDiscoveredFiles;
|
|
13
|
-
userOptions: ResolvedUserOptions
|
|
13
|
+
userOptions: ResolvedUserOptions<T, InlineCSS>;
|
|
14
14
|
hmrChannel: MessageChannel;
|
|
15
15
|
onMetrics?: (metrics: RenderMetrics) => void;
|
|
16
16
|
}): Promise<void>;
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=configureWorkerRequestHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureWorkerRequestHandler.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/configureWorkerRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAWlE;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,EACA,MAAM,EACN,mBAAmB,EACnB,WAAW,EAAE,YAAY,EACzB,UAAU,EACV,SAAS,GACV,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/C,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC9C,iBAqLA"}
|
|
@@ -11,7 +11,6 @@ import { restartWorker } from './restartWorker.js';
|
|
|
11
11
|
import { handleWorkerRscStream } from './handleWorkerRscStream.js';
|
|
12
12
|
import { getRouteFiles } from '../helpers/getRouteFiles.js';
|
|
13
13
|
import { Readable } from 'node:stream';
|
|
14
|
-
import 'node:stream/web';
|
|
15
14
|
|
|
16
15
|
async function configureWorkerRequestHandler({
|
|
17
16
|
server,
|
|
@@ -55,11 +54,10 @@ async function configureWorkerRequestHandler({
|
|
|
55
54
|
});
|
|
56
55
|
const handler = async (req, res, next) => {
|
|
57
56
|
if (!req.url) return next();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
logger.info(`Request info: ${JSON.stringify(info)}`);
|
|
57
|
+
const info = requestInfo(req, handlerOptions, "", server.config.logger);
|
|
58
|
+
if (!info.isRscRequest) {
|
|
59
|
+
return next();
|
|
60
|
+
}
|
|
63
61
|
const routeFiles = await getRouteFiles(
|
|
64
62
|
info.route,
|
|
65
63
|
autoDiscoveredFiles,
|
|
@@ -112,6 +110,8 @@ async function configureWorkerRequestHandler({
|
|
|
112
110
|
worker: currentWorker,
|
|
113
111
|
message: {
|
|
114
112
|
...serializedUserOptions,
|
|
113
|
+
id: info.route,
|
|
114
|
+
type: "RSC_RENDER",
|
|
115
115
|
// we make the worker stream aware of the route, pagePath, propsPath
|
|
116
116
|
route: info.route,
|
|
117
117
|
pagePath,
|
|
@@ -125,7 +125,10 @@ async function configureWorkerRequestHandler({
|
|
|
125
125
|
},
|
|
126
126
|
logger,
|
|
127
127
|
handlers: {
|
|
128
|
-
onMetrics:
|
|
128
|
+
onMetrics: (id, metrics) => {
|
|
129
|
+
metrics.route = id;
|
|
130
|
+
userOnMetrics(metrics);
|
|
131
|
+
},
|
|
129
132
|
onHmrAccept: () => {
|
|
130
133
|
},
|
|
131
134
|
onHmrUpdate: () => {
|
|
@@ -177,4 +180,4 @@ async function configureWorkerRequestHandler({
|
|
|
177
180
|
}
|
|
178
181
|
|
|
179
182
|
export { configureWorkerRequestHandler };
|
|
180
|
-
//# sourceMappingURL=
|
|
183
|
+
//# sourceMappingURL=configureWorkerRequestHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureWorkerRequestHandler.js","sources":["../../../plugin/react-client/configureWorkerRequestHandler.ts"],"sourcesContent":["import type { ViteDevServer } from \"vite\";\nimport type {\n AutoDiscoveredFiles,\n InlineCssOpt,\n PagePropOpt,\n RenderMetrics,\n RequestHandler,\n ResolvedUserOptions,\n StreamMetrics,\n} from \"../types.js\";\nimport { MessageChannel, type Worker } from \"node:worker_threads\";\nimport { serializedOptions } from \"../helpers/serializeUserOptions.js\";\nimport { requestInfo } from \"../helpers/requestInfo.js\";\nimport { performance } from \"node:perf_hooks\";\nimport { restartWorker } from \"./restartWorker.js\";\nimport { handleWorkerRscStream } from \"./handleWorkerRscStream.js\";\nimport { getRouteFiles } from \"../helpers/getRouteFiles.js\";\nimport type { RscWorkerInputMessage } from \"../worker/types.js\";\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream } from \"node:stream/web\";\n\n/**\n * Configures the worker request handler.\n * @param server - The Vite dev server\n * @param autoDiscoveredFiles - The auto discovered files\n * @param userOptions - The user options\n */\nexport async function configureWorkerRequestHandler<\n T extends PagePropOpt = PagePropOpt,\n InlineCSS extends InlineCssOpt = InlineCssOpt\n>({\n server,\n autoDiscoveredFiles,\n userOptions: _userOptions,\n hmrChannel,\n onMetrics,\n}: {\n server: ViteDevServer;\n autoDiscoveredFiles: AutoDiscoveredFiles;\n userOptions: ResolvedUserOptions<T, InlineCSS>;\n hmrChannel: MessageChannel;\n onMetrics?: (metrics: RenderMetrics) => void;\n}) {\n let {\n // remove these\n projectRoot: _projectRoot,\n moduleBaseURL: _moduleBaseURL,\n ...handlerUserOptions\n } = _userOptions;\n const handlerOptions = Object.assign({}, handlerUserOptions, {\n moduleBaseURL: server.config.base,\n moduleBasePath: server.config.base,\n projectRoot: server.config.root,\n });\n\n // Start the worker\n let currentWorker: Worker | null = null;\n const logger = server.config.logger;\n\n // Handle server restarts\n server.ws.on(\"restart\", async () => {\n logger.info(\"[react-client] Server restarting, shutting down worker...\");\n if (currentWorker) {\n currentWorker.postMessage({\n type: \"SHUTDOWN\",\n id: \"*\",\n } satisfies RscWorkerInputMessage);\n await new Promise((resolve, reject) => {\n currentWorker?.on(\"message\", (message) => {\n if (message.type === \"SHUTDOWN_COMPLETE\") {\n resolve(true);\n } else {\n reject(\"Did not receive SHUTDOWN_COMPLETE\");\n }\n });\n });\n currentWorker.removeAllListeners();\n currentWorker = null;\n }\n });\n\n // Create the request handler\n const handler: RequestHandler = async (req, res, next) => {\n if (!req.url) return next();\n\n const info = requestInfo(req, handlerOptions, \"\", server.config.logger);\n\n if (!info.isRscRequest) {\n return next();\n }\n\n const routeFiles = await getRouteFiles(\n info.route,\n autoDiscoveredFiles,\n handlerOptions\n );\n if (routeFiles.type === \"error\") {\n logger.error(routeFiles.error.message);\n return next();\n }\n const pagePath = routeFiles.page;\n const propsPath = routeFiles.props;\n try {\n // Set up response headers for streaming\n res.setHeader(\"Content-Type\", info.contentType);\n res.setHeader(\"Transfer-Encoding\", \"chunked\");\n res.setHeader(\"Connection\", \"keep-alive\");\n\n const serializedUserOptions = serializedOptions<T, InlineCSS>(\n handlerOptions,\n autoDiscoveredFiles\n );\n const userOnMetrics =\n typeof onMetrics === \"function\"\n ? (metrics: StreamMetrics) => {\n const elapsedTime = performance.now() - startTime;\n const formattedMetrics = {\n route: info.route,\n htmlSize: 0,\n rscSize: metrics.bytes,\n processingTime: elapsedTime,\n chunks: metrics.chunks,\n chunkRate: metrics.chunks / (elapsedTime / 1000),\n memoryUsage: process.memoryUsage(),\n streamMetrics: {\n ...metrics,\n duration: elapsedTime,\n },\n htmlSizes: new Map(),\n rscSizes: new Map([[info.route, metrics.bytes]]),\n } satisfies RenderMetrics;\n onMetrics(formattedMetrics);\n }\n : () => {};\n const startTime = performance.now();\n if (!currentWorker) {\n currentWorker = await restartWorker({\n server,\n autoDiscoveredFiles,\n userOptions: serializedUserOptions,\n hmrChannel,\n });\n }\n const stream = handleWorkerRscStream({\n worker: currentWorker!,\n message: {\n ...serializedUserOptions,\n id: info.route,\n type: \"RSC_RENDER\",\n // we make the worker stream aware of the route, pagePath, propsPath\n route: info.route,\n pagePath: pagePath,\n propsPath: propsPath,\n // override these at all times to ensure the settings will work for the dev server\n projectRoot: server.config.root,\n build: serializedUserOptions.build,\n manifest: autoDiscoveredFiles.staticManifest,\n cssFiles: new Map(),\n globalCss: new Map(),\n },\n logger,\n handlers: {\n onMetrics: (id, metrics) => {\n metrics.route = id;\n userOnMetrics(metrics);\n },\n onHmrAccept: () => {\n // TODO: implement\n // console.log(\"onHmrAccept\", routes);\n },\n onHmrUpdate: () => {\n // TODO: implement\n // console.log(\"onHmrUpdate\", routes);\n },\n },\n verbose: handlerOptions.verbose,\n });\n\n // Pipe the stream to the response\n if (res.writable) {\n Readable.fromWeb(stream as unknown as ReadableStream).pipe(res);\n }\n // wait for timeout\n } catch (error) {\n if (error instanceof Error) {\n server.config.logger.error(error.message + (error.stack ?? \"\"), {\n error,\n });\n }\n }\n let timeout: NodeJS.Timeout;\n try {\n await new Promise((reject) => {\n timeout = setTimeout(() => {\n clearTimeout(timeout);\n reject(new Error(\"RSC Render timeout\"));\n }, 5000);\n });\n } catch {\n if (currentWorker) {\n currentWorker.postMessage({\n type: \"SHUTDOWN\",\n id: \"*\",\n } satisfies RscWorkerInputMessage);\n await new Promise((resolve, reject) => {\n currentWorker?.on(\"message\", (message) => {\n if (message.type === \"SHUTDOWN_COMPLETE\") {\n resolve(true);\n } else {\n reject(\"Dit not receive SHUTDOWN_COMPLETE\");\n }\n });\n });\n currentWorker.removeAllListeners();\n }\n server.config.logger.error(\"RSC render timeout.\");\n clearTimeout(timeout!);\n res.end();\n }\n };\n // attach handler to the server\n server.middlewares.use(handler);\n // done\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,6 @@ type MessageHandlerContext = {
|
|
|
6
6
|
logger: Logger;
|
|
7
7
|
verbose?: boolean;
|
|
8
8
|
};
|
|
9
|
-
export declare function createMessageHandler({ handlers, logger, verbose }: MessageHandlerContext): (message: RscWorkerOutputMessage | undefined) => void;
|
|
9
|
+
export declare function createMessageHandler({ handlers, logger, verbose, }: MessageHandlerContext): (message: RscWorkerOutputMessage | undefined) => void;
|
|
10
10
|
export {};
|
|
11
11
|
//# sourceMappingURL=createMessageHandlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMessageHandlers.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,MAAM,EACN,OAAe,
|
|
1
|
+
{"version":3,"file":"createMessageHandlers.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,MAAM,EACN,OAAe,GAChB,EAAE,qBAAqB,aACL,sBAAsB,GAAG,SAAS,UAyCpD"}
|
|
@@ -10,35 +10,42 @@ function createMessageHandler({
|
|
|
10
10
|
}) {
|
|
11
11
|
return (message) => {
|
|
12
12
|
if (!message) {
|
|
13
|
-
logger.warn("
|
|
13
|
+
logger.warn("Received undefined message");
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
-
if (verbose) logger.info("new message " + message.type);
|
|
17
16
|
switch (message.type) {
|
|
18
17
|
case "READY":
|
|
19
18
|
if (verbose) logger.info("[react-client] Worker is ready");
|
|
20
19
|
break;
|
|
20
|
+
case "ERROR":
|
|
21
|
+
handlers.onError(message.id, message.error, message.errorInfo);
|
|
22
|
+
break;
|
|
21
23
|
case "RSC_CHUNK":
|
|
22
|
-
handlers.onData(message.chunk);
|
|
24
|
+
handlers.onData(message.id, message.chunk);
|
|
23
25
|
break;
|
|
24
26
|
case "RSC_END":
|
|
25
|
-
handlers.onEnd();
|
|
26
|
-
break;
|
|
27
|
-
case "ERROR":
|
|
28
|
-
handlers.onError(message.error, message.errorInfo);
|
|
27
|
+
handlers.onEnd(message.id);
|
|
29
28
|
break;
|
|
30
29
|
case "RSC_METRICS":
|
|
31
|
-
handlers.onMetrics(message.metrics);
|
|
30
|
+
handlers.onMetrics(message.id, message.metrics);
|
|
32
31
|
break;
|
|
33
32
|
case "HMR_ACCEPT":
|
|
34
|
-
handlers.onHmrAccept(message.routes
|
|
33
|
+
handlers.onHmrAccept(message.id, message.routes);
|
|
35
34
|
break;
|
|
36
35
|
case "HMR_UPDATE":
|
|
37
|
-
handlers.onHmrUpdate(message.routes
|
|
36
|
+
handlers.onHmrUpdate(message.id, message.routes);
|
|
37
|
+
break;
|
|
38
|
+
case "SERVER_ACTION":
|
|
39
|
+
handlers.onServerAction?.(message.id, message.args);
|
|
40
|
+
break;
|
|
41
|
+
case "SERVER_ACTION_RESPONSE":
|
|
42
|
+
handlers.onServerActionResponse?.(message.id, message.result, message.error);
|
|
43
|
+
break;
|
|
44
|
+
case "SERVER_MODULE":
|
|
45
|
+
handlers.onServerModule?.(message.id, message.url, message.source);
|
|
38
46
|
break;
|
|
39
47
|
default:
|
|
40
48
|
logger.warn(`Unknown worker output message type: ${message.type}`);
|
|
41
|
-
break;
|
|
42
49
|
}
|
|
43
50
|
};
|
|
44
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMessageHandlers.js","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"sourcesContent":["import type { RscWorkerOutputMessage } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\nimport type { StreamHandlers } from \"../worker/types.js\";\n\ntype MessageHandlerContext = {\n handlers: StreamHandlers;\n logger: Logger;\n verbose?: boolean;\n};\n\nexport function createMessageHandler({\n handlers,\n logger,\n verbose = false
|
|
1
|
+
{"version":3,"file":"createMessageHandlers.js","sources":["../../../plugin/react-client/createMessageHandlers.ts"],"sourcesContent":["import type { RscWorkerOutputMessage } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\nimport type { StreamHandlers } from \"../worker/types.js\";\n\ntype MessageHandlerContext = {\n handlers: StreamHandlers;\n logger: Logger;\n verbose?: boolean;\n};\n\nexport function createMessageHandler({\n handlers,\n logger,\n verbose = false,\n}: MessageHandlerContext) {\n return (message: RscWorkerOutputMessage | undefined) => {\n if (!message) {\n logger.warn(\"Received undefined message\");\n return;\n }\n\n switch (message.type) {\n case \"READY\":\n if(verbose) logger.info(\"[react-client] Worker is ready\");\n break;\n case \"ERROR\":\n handlers.onError(message.id, message.error, message.errorInfo);\n break;\n case \"RSC_CHUNK\":\n handlers.onData(message.id, message.chunk);\n break;\n case \"RSC_END\":\n handlers.onEnd(message.id);\n break;\n case \"RSC_METRICS\":\n handlers.onMetrics(message.id, message.metrics);\n break;\n case \"HMR_ACCEPT\":\n handlers.onHmrAccept(message.id, message.routes);\n break;\n case \"HMR_UPDATE\":\n handlers.onHmrUpdate(message.id, message.routes);\n break;\n case \"SERVER_ACTION\":\n handlers.onServerAction?.(message.id, message.args);\n break;\n case \"SERVER_ACTION_RESPONSE\":\n handlers.onServerActionResponse?.(message.id, message.result, message.error);\n break;\n case \"SERVER_MODULE\":\n handlers.onServerModule?.(message.id, message.url, message.source);\n break;\n default:\n logger.warn(`Unknown worker output message type: ${(message as { type: string }).type}`);\n }\n };\n}\n"],"names":[],"mappings":";;;;;AAUO,SAAS,oBAAqB,CAAA;AAAA,EACnC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAA0B,EAAA;AACxB,EAAA,OAAO,CAAC,OAAgD,KAAA;AACtD,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,MAAA,CAAO,KAAK,4BAA4B,CAAA;AACxC,MAAA;AAAA;AAGF,IAAA,QAAQ,QAAQ,IAAM;AAAA,MACpB,KAAK,OAAA;AACH,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,gCAAgC,CAAA;AACxD,QAAA;AAAA,MACF,KAAK,OAAA;AACH,QAAA,QAAA,CAAS,QAAQ,OAAQ,CAAA,EAAA,EAAI,OAAQ,CAAA,KAAA,EAAO,QAAQ,SAAS,CAAA;AAC7D,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,QAAA,CAAS,MAAO,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,KAAK,CAAA;AACzC,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAS,QAAA,CAAA,KAAA,CAAM,QAAQ,EAAE,CAAA;AACzB,QAAA;AAAA,MACF,KAAK,aAAA;AACH,QAAA,QAAA,CAAS,SAAU,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,OAAO,CAAA;AAC9C,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,QAAA,CAAS,WAAY,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,MAAM,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,QAAA,CAAS,WAAY,CAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,MAAM,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,QAAA,CAAS,cAAiB,GAAA,OAAA,CAAQ,EAAI,EAAA,OAAA,CAAQ,IAAI,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,wBAAA;AACH,QAAA,QAAA,CAAS,yBAAyB,OAAQ,CAAA,EAAA,EAAI,OAAQ,CAAA,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAC3E,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,QAAA,CAAS,iBAAiB,OAAQ,CAAA,EAAA,EAAI,OAAQ,CAAA,GAAA,EAAK,QAAQ,MAAM,CAAA;AACjE,QAAA;AAAA,MACF;AACE,QAAA,MAAA,CAAO,IAAK,CAAA,CAAA,oCAAA,EAAwC,OAA6B,CAAA,IAAI,CAAE,CAAA,CAAA;AAAA;AAC3F,GACF;AACF;;;;"}
|
|
@@ -12,11 +12,13 @@ import type { StreamHandlers } from "../worker/types.js";
|
|
|
12
12
|
* @param rscWorkerLoaderPort - Optional loader port for module loading
|
|
13
13
|
* @returns An async generator that yields RSC chunks
|
|
14
14
|
*/
|
|
15
|
-
export declare function createWorkerStream({ worker, message, logger, handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd }, verbose, }: {
|
|
15
|
+
export declare function createWorkerStream({ worker, message, logger, handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd, onServerAction, onServerActionResponse, }, verbose, }: {
|
|
16
16
|
worker: NodeWorker;
|
|
17
|
-
message: Omit<RscRenderMessage, "type" | "id"
|
|
17
|
+
message: Omit<RscRenderMessage, "type" | "id"> & Partial<Pick<RscRenderMessage, "id">> & {
|
|
18
|
+
type?: "RSC_RENDER";
|
|
19
|
+
};
|
|
18
20
|
logger: Logger;
|
|
19
|
-
handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd">>;
|
|
21
|
+
handlers: Pick<StreamHandlers, "onHmrAccept" | "onHmrUpdate" | "onMetrics"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse">>;
|
|
20
22
|
verbose?: boolean;
|
|
21
23
|
}): AsyncGenerator<Uint8Array>;
|
|
22
24
|
//# 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,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
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,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;;;;;;GASG;AACH,wBAAuB,kBAAkB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EAAE,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,cAAc,EACd,sBAAsB,GACvB,EACD,OAAe,GAChB,EAAE;IACD,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;QAAE,IAAI,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAClE,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,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,wBAAwB,CAC3B,CACF,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAAC,UAAU,CAAC,CA0I7B"}
|
|
@@ -4,60 +4,94 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { createMessageHandler } from './createMessageHandlers.js';
|
|
7
|
+
import { logError } from '../error/toError.js';
|
|
7
8
|
|
|
8
9
|
async function* createWorkerStream({
|
|
9
10
|
worker,
|
|
10
11
|
message,
|
|
11
12
|
logger,
|
|
12
|
-
handlers: {
|
|
13
|
+
handlers: {
|
|
14
|
+
onHmrAccept,
|
|
15
|
+
onHmrUpdate,
|
|
16
|
+
onMetrics,
|
|
17
|
+
onError,
|
|
18
|
+
onData,
|
|
19
|
+
onEnd,
|
|
20
|
+
onServerAction,
|
|
21
|
+
onServerActionResponse
|
|
22
|
+
},
|
|
13
23
|
verbose = false
|
|
14
24
|
}) {
|
|
25
|
+
if (!worker) {
|
|
26
|
+
throw new Error("Worker is not running");
|
|
27
|
+
}
|
|
15
28
|
let messageHandler = null;
|
|
16
29
|
let currentResolve = null;
|
|
17
30
|
const handlers = {
|
|
18
|
-
onError: (error, errorInfo) => {
|
|
19
|
-
logger
|
|
20
|
-
"[react-client] " + (error.stack ?? error.stack.includes(error.message) ? "" : error.message + "\n") + error.stack,
|
|
21
|
-
{
|
|
22
|
-
error
|
|
23
|
-
}
|
|
24
|
-
);
|
|
31
|
+
onError: (id, error, errorInfo) => {
|
|
32
|
+
logError(error, logger);
|
|
25
33
|
if (errorInfo) {
|
|
26
|
-
|
|
34
|
+
logError(errorInfo.componentStack, logger);
|
|
27
35
|
}
|
|
28
36
|
if (typeof onError === "function") {
|
|
29
|
-
onError(error, errorInfo);
|
|
37
|
+
onError(id, error, errorInfo);
|
|
30
38
|
}
|
|
31
39
|
},
|
|
32
|
-
onData: (chunk) => {
|
|
40
|
+
onData: (id, chunk) => {
|
|
33
41
|
currentResolve?.(chunk);
|
|
34
|
-
if (verbose)
|
|
42
|
+
if (verbose) {
|
|
43
|
+
logger.info(
|
|
44
|
+
`[react-client] received chunk ${id} ${Buffer.from(chunk).byteLength} bytes`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
35
47
|
if (typeof onData === "function") {
|
|
36
|
-
onData(chunk);
|
|
48
|
+
onData(id, chunk);
|
|
37
49
|
}
|
|
38
50
|
},
|
|
39
|
-
onEnd: () => {
|
|
51
|
+
onEnd: (id) => {
|
|
40
52
|
currentResolve?.(new Uint8Array());
|
|
41
|
-
if (verbose) logger.info(`received end`);
|
|
53
|
+
if (verbose) logger.info(`[react-client] received end`);
|
|
42
54
|
if (messageHandler) {
|
|
43
55
|
worker.removeListener("message", messageHandler);
|
|
44
56
|
messageHandler = null;
|
|
45
57
|
}
|
|
46
58
|
if (typeof onEnd === "function") {
|
|
47
|
-
onEnd();
|
|
59
|
+
onEnd(id);
|
|
48
60
|
}
|
|
49
61
|
},
|
|
50
|
-
onMetrics: (metrics) => {
|
|
51
|
-
if (verbose)
|
|
62
|
+
onMetrics: (id, metrics) => {
|
|
63
|
+
if (verbose)
|
|
64
|
+
logger.info(`[react-client] received chunks ${metrics.chunks}`);
|
|
52
65
|
if (typeof onMetrics === "function") {
|
|
53
|
-
onMetrics(metrics);
|
|
66
|
+
onMetrics(id, metrics);
|
|
54
67
|
}
|
|
55
68
|
},
|
|
56
|
-
onHmrAccept: (routes) => {
|
|
57
|
-
if (verbose)
|
|
69
|
+
onHmrAccept: (id, routes) => {
|
|
70
|
+
if (verbose)
|
|
71
|
+
logger.info(`[react-client] received hmr accept ${routes?.join(", ")}`);
|
|
72
|
+
if (typeof onHmrAccept === "function") {
|
|
73
|
+
onHmrAccept(id, routes);
|
|
74
|
+
}
|
|
58
75
|
},
|
|
59
|
-
onHmrUpdate: (routes) => {
|
|
60
|
-
if (verbose)
|
|
76
|
+
onHmrUpdate: (id, routes) => {
|
|
77
|
+
if (verbose)
|
|
78
|
+
logger.info(`[react-client] received hmr update ${routes?.join(", ")}`);
|
|
79
|
+
if (typeof onHmrUpdate === "function") {
|
|
80
|
+
onHmrUpdate(id, routes);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
onServerAction: (id, args) => {
|
|
84
|
+
if (verbose) logger.info(`[react-client] received server action ${id}`);
|
|
85
|
+
if (typeof onServerAction === "function") {
|
|
86
|
+
onServerAction(id, args);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
onServerActionResponse: (id, result, error) => {
|
|
90
|
+
if (verbose)
|
|
91
|
+
logger.info(`[react-client] received server action response ${id}`);
|
|
92
|
+
if (typeof onServerActionResponse === "function") {
|
|
93
|
+
onServerActionResponse(id, result, error);
|
|
94
|
+
}
|
|
61
95
|
}
|
|
62
96
|
};
|
|
63
97
|
try {
|
|
@@ -65,13 +99,13 @@ async function* createWorkerStream({
|
|
|
65
99
|
worker.removeListener("message", messageHandler);
|
|
66
100
|
messageHandler = null;
|
|
67
101
|
}
|
|
68
|
-
if (verbose) logger.info(`sending message RSC_RENDER`);
|
|
102
|
+
if (verbose) logger.info(`[react-client] sending message RSC_RENDER`);
|
|
69
103
|
worker.postMessage({
|
|
70
104
|
...message,
|
|
71
105
|
type: "RSC_RENDER",
|
|
72
|
-
id:
|
|
106
|
+
id: message?.id ?? message.route
|
|
73
107
|
});
|
|
74
|
-
if (verbose) logger.info(`waiting for message handler`);
|
|
108
|
+
if (verbose) logger.info(`[react-client] waiting for message handler`);
|
|
75
109
|
let workerTimeout = null;
|
|
76
110
|
yield await new Promise((resolve) => {
|
|
77
111
|
workerTimeout = setTimeout(() => {
|
|
@@ -89,7 +123,7 @@ async function* createWorkerStream({
|
|
|
89
123
|
if (workerTimeout) {
|
|
90
124
|
clearTimeout(workerTimeout);
|
|
91
125
|
}
|
|
92
|
-
if (verbose) logger.info(`received message handler`);
|
|
126
|
+
if (verbose) logger.info(`[react-client] received message handler`);
|
|
93
127
|
while (true) {
|
|
94
128
|
const chunk = await new Promise((resolve) => {
|
|
95
129
|
currentResolve = resolve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorkerStream.js","sources":["../../../plugin/react-client/createWorkerStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type {\n RscWorkerOutputMessage,\n RscRenderMessage,\n} from \"../worker/types.js\";\nimport type { StreamMetrics } from \"../types.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\nimport type { StreamHandlers } from \"../worker/types.js\";\nimport { createMessageHandler } from \"./createMessageHandlers.js\";\n\n/**\n * Creates an async generator that yields RSC chunks from the worker.\n * Handles both module requests and RSC streaming.\n *\n * @param worker - The worker thread\n * @param server - The Vite dev server\n * @param message - The RSC render message\n * @param rscWorkerLoaderPort - Optional loader port for module loading\n * @returns An async generator that yields RSC chunks\n */\nexport async function* createWorkerStream({\n worker,\n message,\n logger,\n handlers: { onHmrAccept, onHmrUpdate, onMetrics, onError, onData, onEnd },\n verbose = false,\n}: {\n worker: NodeWorker;\n message: Omit<RscRenderMessage, \"type\" | \"id\">;\n logger: Logger;\n handlers: Pick<StreamHandlers, \"onHmrAccept\" | \"onHmrUpdate\" | \"onMetrics\"> &\n Partial<Pick<StreamHandlers, \"onError\" | \"onData\" | \"onEnd\">>;\n verbose?: boolean;\n}): AsyncGenerator<Uint8Array> {\n let messageHandler:\n | ((message: RscWorkerOutputMessage | undefined) => void)\n | null = null;\n let currentResolve: ((chunk: Uint8Array) => void) | null = null;\n const handlers: StreamHandlers = {\n onError: (error: any, errorInfo?: any) => {\n logger.error(\n \"[react-client] \" +\n (error.stack ?? error.stack.includes(error.message) ? \"\" : error.message + \"\\n\") +\n error.stack,\n {\n error,\n }\n );\n if (errorInfo) {\n logger.error(errorInfo.componentStack);\n }\n if (typeof onError === \"function\") {\n onError(error, errorInfo);\n }\n },\n onData: (chunk: Uint8Array) => {\n currentResolve?.(chunk);\n if (verbose) logger.info(`received chunk ${chunk.length} bytes`);\n if (typeof onData === \"function\") {\n onData(chunk);\n }\n },\n onEnd: () => {\n currentResolve?.(new Uint8Array());\n if (verbose) logger.info(`received end`);\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (typeof onEnd === \"function\") {\n onEnd();\n }\n },\n onMetrics: (metrics: StreamMetrics) => {\n if (verbose) logger.info(`received chunks ${metrics.chunks}`);\n if (typeof onMetrics === \"function\") {\n onMetrics(metrics);\n }\n },\n onHmrAccept: (routes: string[]) => {\n if (verbose) logger.info(`received hmr accept ${routes.join(\", \")}`);\n if (typeof onHmrAccept === \"function\") {\n onHmrAccept(routes);\n }\n },\n onHmrUpdate: (routes: string[]) => {\n if (verbose) logger.info(`received hmr update ${routes.join(\", \")}`);\n if (typeof onHmrUpdate === \"function\") {\n onHmrUpdate(routes);\n }\n },\n };\n\n try {\n // Remove any existing message handler before starting\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (verbose) logger.info(`sending message RSC_RENDER`);\n worker.postMessage({\n ...message,\n type: \"RSC_RENDER\",\n id: Math.random().toString(36).slice(2),\n });\n\n if (verbose) logger.info(`waiting for message handler`);\n let workerTimeout: NodeJS.Timeout | null = null;\n yield await new Promise<Uint8Array>((resolve) => {\n workerTimeout = setTimeout(() => {\n if (verbose) logger.info(`worker timeout`);\n worker.terminate();\n }, 5000);\n currentResolve = resolve;\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n if (workerTimeout) {\n clearTimeout(workerTimeout);\n }\n if (verbose) logger.info(`received message handler`);\n while (true) {\n const chunk = await new Promise<Uint8Array>((resolve) => {\n currentResolve = resolve;\n // Create new message handler for each iteration\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n }\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n\n if (chunk.length === 0) {\n break;\n }\n\n yield chunk;\n }\n } finally {\n // Clean up message handler in finally block\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createWorkerStream.js","sources":["../../../plugin/react-client/createWorkerStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type {\n RscWorkerOutputMessage,\n RscRenderMessage,\n} from \"../worker/types.js\";\nimport type { StreamMetrics } from \"../types.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\nimport type { StreamHandlers } from \"../worker/types.js\";\nimport { createMessageHandler } from \"./createMessageHandlers.js\";\nimport { logError } from \"../error/toError.js\";\n\n/**\n * Creates an async generator that yields RSC chunks from the worker.\n * Handles both module requests and RSC streaming.\n *\n * @param worker - The worker thread\n * @param server - The Vite dev server\n * @param message - The RSC render message\n * @param rscWorkerLoaderPort - Optional loader port for module loading\n * @returns An async generator that yields RSC chunks\n */\nexport async function* createWorkerStream({\n worker,\n message,\n logger,\n handlers: {\n onHmrAccept,\n onHmrUpdate,\n onMetrics,\n onError,\n onData,\n onEnd,\n onServerAction,\n onServerActionResponse,\n },\n verbose = false,\n}: {\n worker: NodeWorker;\n message: Omit<RscRenderMessage, \"type\" | \"id\"> &\n Partial<Pick<RscRenderMessage, \"id\">> & { type?: \"RSC_RENDER\" };\n logger: Logger;\n handlers: Pick<StreamHandlers, \"onHmrAccept\" | \"onHmrUpdate\" | \"onMetrics\"> &\n Partial<\n Pick<\n StreamHandlers,\n | \"onError\"\n | \"onData\"\n | \"onEnd\"\n | \"onServerAction\"\n | \"onServerActionResponse\"\n >\n >;\n verbose?: boolean;\n}): AsyncGenerator<Uint8Array> {\n if (!worker) {\n throw new Error(\"Worker is not running\");\n }\n let messageHandler:\n | ((message: RscWorkerOutputMessage | undefined) => void)\n | null = null;\n let currentResolve: ((chunk: Uint8Array) => void) | null = null;\n const handlers: StreamHandlers = {\n onError: (id, error, errorInfo) => {\n logError(error, logger);\n if (errorInfo) {\n logError(errorInfo.componentStack, logger);\n }\n if (typeof onError === \"function\") {\n onError(id, error, errorInfo);\n }\n },\n onData: (id: string, chunk: Uint8Array) => {\n currentResolve?.(chunk);\n if (verbose) {\n logger.info(\n `[react-client] received chunk ${id} ${\n Buffer.from(chunk).byteLength\n } bytes`\n );\n }\n if (typeof onData === \"function\") {\n onData(id, chunk);\n }\n },\n onEnd: (id: string) => {\n currentResolve?.(new Uint8Array());\n if (verbose) logger.info(`[react-client] received end`);\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (typeof onEnd === \"function\") {\n onEnd(id);\n }\n },\n onMetrics: (id: string, metrics: StreamMetrics) => {\n if (verbose)\n logger.info(`[react-client] received chunks ${metrics.chunks}`);\n if (typeof onMetrics === \"function\") {\n onMetrics(id, metrics);\n }\n },\n onHmrAccept: (id: string, routes?: string[]) => {\n if (verbose)\n logger.info(`[react-client] received hmr accept ${routes?.join(\", \")}`);\n if (typeof onHmrAccept === \"function\") {\n onHmrAccept(id, routes);\n }\n },\n onHmrUpdate: (id: string, routes?: string[]) => {\n if (verbose)\n logger.info(`[react-client] received hmr update ${routes?.join(\", \")}`);\n if (typeof onHmrUpdate === \"function\") {\n onHmrUpdate(id, routes);\n }\n },\n onServerAction: (id: string, args: unknown[]) => {\n if (verbose) logger.info(`[react-client] received server action ${id}`);\n if (typeof onServerAction === \"function\") {\n onServerAction(id, args);\n }\n },\n onServerActionResponse: (id: string, result?: unknown, error?: string) => {\n if (verbose)\n logger.info(`[react-client] received server action response ${id}`);\n if (typeof onServerActionResponse === \"function\") {\n onServerActionResponse(id, result, error);\n }\n },\n };\n\n try {\n // Remove any existing message handler before starting\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n if (verbose) logger.info(`[react-client] sending message RSC_RENDER`);\n worker.postMessage({\n ...message,\n type: \"RSC_RENDER\",\n id: message?.id ?? message.route,\n });\n\n if (verbose) logger.info(`[react-client] waiting for message handler`);\n let workerTimeout: NodeJS.Timeout | null = null;\n yield await new Promise<Uint8Array>((resolve) => {\n workerTimeout = setTimeout(() => {\n if (verbose) logger.info(`worker timeout`);\n worker.terminate();\n }, 5000);\n currentResolve = resolve;\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n if (workerTimeout) {\n clearTimeout(workerTimeout);\n }\n if (verbose) logger.info(`[react-client] received message handler`);\n while (true) {\n const chunk = await new Promise<Uint8Array>((resolve) => {\n currentResolve = resolve;\n // Create new message handler for each iteration\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n }\n messageHandler = createMessageHandler({\n handlers,\n logger,\n verbose,\n });\n worker.on(\"message\", messageHandler);\n });\n\n if (chunk.length === 0) {\n break;\n }\n\n yield chunk;\n }\n } finally {\n // Clean up message handler in finally block\n if (messageHandler) {\n worker.removeListener(\"message\", messageHandler);\n messageHandler = null;\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare function handleWorkerRscStream({ worker, message, logger, handler
|
|
|
13
13
|
worker: NodeWorker;
|
|
14
14
|
message: Omit<RscRenderMessage, "type" | "id">;
|
|
15
15
|
logger: Logger;
|
|
16
|
-
handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd">>;
|
|
16
|
+
handlers: Pick<StreamHandlers, "onMetrics" | "onHmrAccept" | "onHmrUpdate"> & Partial<Pick<StreamHandlers, "onError" | "onData" | "onEnd" | "onServerAction" | "onServerActionResponse">>;
|
|
17
17
|
verbose?: boolean;
|
|
18
18
|
}): ReadableStream<Uint8Array>;
|
|
19
19
|
//# 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;AAE3E,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAe,EAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,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,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAe,EAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,GAAG,wBAAwB,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,cAAc,CAAC,UAAU,CAAC,CAyC7B"}
|
|
@@ -16,17 +16,27 @@ function handleWorkerRscStream({
|
|
|
16
16
|
return new ReadableStream({
|
|
17
17
|
async start(controller) {
|
|
18
18
|
try {
|
|
19
|
-
if (verbose) logger.info("Starting stream");
|
|
19
|
+
if (verbose) logger.info("[react-client] Starting stream");
|
|
20
20
|
for await (const chunk of createWorkerStream({
|
|
21
21
|
worker,
|
|
22
22
|
message,
|
|
23
23
|
logger,
|
|
24
|
-
handlers
|
|
24
|
+
handlers: {
|
|
25
|
+
...handlers,
|
|
26
|
+
onServerAction: (id, args) => {
|
|
27
|
+
if (verbose) logger.info(`[react-client] Received server action ${id}`);
|
|
28
|
+
handlers.onServerAction?.(id, args);
|
|
29
|
+
},
|
|
30
|
+
onServerActionResponse: (id, result, error) => {
|
|
31
|
+
if (verbose) logger.info(`[react-client] Received server action response ${id}`);
|
|
32
|
+
handlers.onServerActionResponse?.(id, result, error);
|
|
33
|
+
}
|
|
34
|
+
},
|
|
25
35
|
verbose
|
|
26
36
|
})) {
|
|
27
37
|
if (!isFlowing) {
|
|
28
38
|
isFlowing = true;
|
|
29
|
-
if (verbose) logger.info("Stream is flowing");
|
|
39
|
+
if (verbose) logger.info("[react-client] Stream is flowing");
|
|
30
40
|
}
|
|
31
41
|
controller.enqueue(chunk);
|
|
32
42
|
}
|
|
@@ -35,7 +45,7 @@ function handleWorkerRscStream({
|
|
|
35
45
|
} finally {
|
|
36
46
|
if (isFlowing) {
|
|
37
47
|
isFlowing = false;
|
|
38
|
-
if (verbose) logger.info("Stream closing");
|
|
48
|
+
if (verbose) logger.info("[react-client] Stream closing");
|
|
39
49
|
}
|
|
40
50
|
controller.close();
|
|
41
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleWorkerRscStream.js","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type { RscRenderMessage, StreamHandlers } from \"../worker/types.js\";\nimport { createWorkerStream } from \"./createWorkerStream.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\n/**\n * Handles the RSC stream from the worker.\n * Creates a ReadableStream that pipes RSC chunks to the response.\n *\n * @param worker - The worker thread\n * @param message - The RSC render message\n * @returns A ReadableStream that yields RSC chunks\n */\nexport function handleWorkerRscStream({\n worker,\n message,\n logger,\n handlers,\n verbose = false\n}: {\n worker: NodeWorker,\n message: Omit<RscRenderMessage, \"type\" | \"id\">,\n logger: Logger,\n handlers: Pick<StreamHandlers, \"onMetrics\" | \"onHmrAccept\" | \"onHmrUpdate\"> &\n Partial<Pick<StreamHandlers, \"onError\" | \"onData\" | \"onEnd\">>,\n verbose?: boolean\n}): ReadableStream<Uint8Array> {\n // Create a ReadableStream from the async generator\n let isFlowing = false;\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n if(verbose) logger.info(\"Starting stream\");\n for await (const chunk of createWorkerStream({\n worker,\n message,\n logger,\n handlers,\n verbose\n })) {\n if (!isFlowing) {\n isFlowing = true;\n if(verbose) logger.info(\"Stream is flowing\");\n }\n controller.enqueue(chunk);\n }\n } catch (error) {\n controller.error(error);\n } finally {\n if (isFlowing) {\n isFlowing = false;\n if(verbose) logger.info(\"Stream closing\");\n }\n controller.close();\n }\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;AAYO,SAAS,qBAAsB,CAAA;AAAA,EACpC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAO+B,EAAA;AAE7B,EAAA,IAAI,SAAY,GAAA,KAAA;AAChB,EAAA,OAAO,IAAI,cAA2B,CAAA;AAAA,IACpC,MAAM,MAAM,UAAY,EAAA;AACtB,MAAI,IAAA;AACF,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,
|
|
1
|
+
{"version":3,"file":"handleWorkerRscStream.js","sources":["../../../plugin/react-client/handleWorkerRscStream.ts"],"sourcesContent":["import type { Logger } from \"vite\";\nimport type { RscRenderMessage, StreamHandlers } from \"../worker/types.js\";\nimport { createWorkerStream } from \"./createWorkerStream.js\";\nimport type { Worker as NodeWorker } from \"node:worker_threads\";\n/**\n * Handles the RSC stream from the worker.\n * Creates a ReadableStream that pipes RSC chunks to the response.\n *\n * @param worker - The worker thread\n * @param message - The RSC render message\n * @returns A ReadableStream that yields RSC chunks\n */\nexport function handleWorkerRscStream({\n worker,\n message,\n logger,\n handlers,\n verbose = false\n}: {\n worker: NodeWorker,\n message: Omit<RscRenderMessage, \"type\" | \"id\">,\n logger: Logger,\n handlers: Pick<StreamHandlers, \"onMetrics\" | \"onHmrAccept\" | \"onHmrUpdate\"> &\n Partial<Pick<StreamHandlers, \"onError\" | \"onData\" | \"onEnd\" | \"onServerAction\" | \"onServerActionResponse\">>,\n verbose?: boolean\n}): ReadableStream<Uint8Array> {\n // Create a ReadableStream from the async generator\n let isFlowing = false;\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n if(verbose) logger.info(\"[react-client] Starting stream\");\n for await (const chunk of createWorkerStream({\n worker,\n message,\n logger,\n handlers: {\n ...handlers,\n onServerAction: (id: string, args: unknown[]) => {\n if (verbose) logger.info(`[react-client] Received server action ${id}`);\n handlers.onServerAction?.(id, args);\n },\n onServerActionResponse: (id: string, result?: unknown, error?: string) => {\n if (verbose) logger.info(`[react-client] Received server action response ${id}`);\n handlers.onServerActionResponse?.(id, result, error);\n }\n },\n verbose\n })) {\n if (!isFlowing) {\n isFlowing = true;\n if(verbose) logger.info(\"[react-client] Stream is flowing\");\n }\n controller.enqueue(chunk);\n }\n } catch (error) {\n controller.error(error);\n } finally {\n if (isFlowing) {\n isFlowing = false;\n if(verbose) logger.info(\"[react-client] Stream closing\");\n }\n controller.close();\n }\n },\n });\n}\n"],"names":[],"mappings":";;;;;;;AAYO,SAAS,qBAAsB,CAAA;AAAA,EACpC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAO+B,EAAA;AAE7B,EAAA,IAAI,SAAY,GAAA,KAAA;AAChB,EAAA,OAAO,IAAI,cAA2B,CAAA;AAAA,IACpC,MAAM,MAAM,UAAY,EAAA;AACtB,MAAI,IAAA;AACF,QAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,gCAAgC,CAAA;AACxD,QAAA,WAAA,MAAiB,SAAS,kBAAmB,CAAA;AAAA,UAC3C,MAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAU,EAAA;AAAA,YACR,GAAG,QAAA;AAAA,YACH,cAAA,EAAgB,CAAC,EAAA,EAAY,IAAoB,KAAA;AAC/C,cAAA,IAAI,OAAS,EAAA,MAAA,CAAO,IAAK,CAAA,CAAA,sCAAA,EAAyC,EAAE,CAAE,CAAA,CAAA;AACtE,cAAS,QAAA,CAAA,cAAA,GAAiB,IAAI,IAAI,CAAA;AAAA,aACpC;AAAA,YACA,sBAAwB,EAAA,CAAC,EAAY,EAAA,MAAA,EAAkB,KAAmB,KAAA;AACxE,cAAA,IAAI,OAAS,EAAA,MAAA,CAAO,IAAK,CAAA,CAAA,+CAAA,EAAkD,EAAE,CAAE,CAAA,CAAA;AAC/E,cAAS,QAAA,CAAA,sBAAA,GAAyB,EAAI,EAAA,MAAA,EAAQ,KAAK,CAAA;AAAA;AACrD,WACF;AAAA,UACA;AAAA,SACD,CAAG,EAAA;AACF,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAY,SAAA,GAAA,IAAA;AACZ,YAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,kCAAkC,CAAA;AAAA;AAE5D,UAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA;AAC1B,eACO,KAAO,EAAA;AACd,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,OACtB,SAAA;AACA,QAAA,IAAI,SAAW,EAAA;AACb,UAAY,SAAA,GAAA,KAAA;AACZ,UAAG,IAAA,OAAA,EAAgB,MAAA,CAAA,IAAA,CAAK,+BAA+B,CAAA;AAAA;AAEzD,QAAA,UAAA,CAAW,KAAM,EAAA;AAAA;AACnB;AACF,GACD,CAAA;AACH;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Plugin } from "vite";
|
|
2
|
-
import type { StreamPluginOptions } from "../types.js";
|
|
3
|
-
export declare function reactClientPlugin(options: StreamPluginOptions): Plugin;
|
|
2
|
+
import type { InlineCssOpt, PagePropOpt, StreamPluginOptions } from "../types.js";
|
|
3
|
+
export declare function reactClientPlugin<T extends PagePropOpt = PagePropOpt, InlineCSS extends InlineCssOpt = InlineCssOpt>(options: StreamPluginOptions<T, InlineCSS>): Plugin;
|
|
4
4
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EAGX,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAQrB,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,SAAS,SAAS,YAAY,GAAG,YAAY,EAC7C,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAqIpD"}
|