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
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { join } from 'node:path';
|
|
7
7
|
import { DEFAULT_CONFIG } from './defaults.js';
|
|
8
|
+
import { getNodeEnv } from '../getNodeEnv.js';
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
function
|
|
10
|
+
const stashedUserConfig = {};
|
|
11
|
+
const resolveUserConfig = function _resolveUserConfig({
|
|
11
12
|
condition,
|
|
12
13
|
config,
|
|
13
14
|
configEnv,
|
|
@@ -24,29 +25,55 @@ function resolveUserConfig({
|
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
27
|
const root = config.root ?? userOptions.projectRoot ?? process.cwd();
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
28
|
+
const handleSsrEntryName = (info, input, fallback, ssr2) => {
|
|
29
|
+
if (!ssr2 || !input) {
|
|
30
|
+
if (typeof fallback === "function") {
|
|
31
|
+
return fallback(info, false);
|
|
32
|
+
}
|
|
33
|
+
return userOptions.normalizer(info.name)[0];
|
|
34
|
+
}
|
|
35
|
+
const normalized = userOptions.normalizer(input);
|
|
36
|
+
let value = normalized[1];
|
|
37
|
+
if (value.startsWith(userOptions.moduleBasePath)) {
|
|
38
|
+
value = value.slice(userOptions.moduleBasePath.length);
|
|
39
|
+
}
|
|
40
|
+
const entry = autoDiscoveredFiles.staticManifest[value];
|
|
41
|
+
if (entry) {
|
|
42
|
+
return entry.file;
|
|
43
|
+
}
|
|
44
|
+
return fallback(info, true);
|
|
45
|
+
};
|
|
46
|
+
const handleSsrAssetName = (info, input, fallback, ssr2) => {
|
|
47
|
+
if (info.source === "") {
|
|
29
48
|
return "";
|
|
30
49
|
}
|
|
31
|
-
|
|
32
|
-
|
|
50
|
+
const isCssFile = input?.endsWith(".css") || info.names?.some((name) => name.endsWith(".css"));
|
|
51
|
+
if (!ssr2 || !input || isCssFile) {
|
|
52
|
+
if (typeof fallback === "function") {
|
|
53
|
+
return fallback(info, ssr2);
|
|
54
|
+
}
|
|
55
|
+
return userOptions.normalizer(info.names[0])[0];
|
|
33
56
|
}
|
|
34
|
-
|
|
57
|
+
const normalized = userOptions.normalizer(input);
|
|
58
|
+
const id = normalized[0];
|
|
59
|
+
let value = normalized[1];
|
|
35
60
|
if (value.startsWith(userOptions.moduleBasePath)) {
|
|
36
61
|
value = value.slice(userOptions.moduleBasePath.length);
|
|
37
62
|
}
|
|
38
63
|
const entry = autoDiscoveredFiles.staticManifest[value];
|
|
39
|
-
if (entry
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
64
|
+
if (entry) {
|
|
65
|
+
if (entry?.name && userOptions.autoDiscover.cssPattern.test(value)) {
|
|
66
|
+
const found = entry.css?.find((css) => css.startsWith(id));
|
|
67
|
+
if (found) {
|
|
68
|
+
return join(userOptions.build.assetsDir, found);
|
|
69
|
+
} else {
|
|
70
|
+
return join(userOptions.build.assetsDir, entry.file);
|
|
71
|
+
}
|
|
43
72
|
} else {
|
|
44
73
|
return entry.file;
|
|
45
74
|
}
|
|
46
|
-
} else if (entry) {
|
|
47
|
-
return entry.file;
|
|
48
75
|
}
|
|
49
|
-
return fallback(info,
|
|
76
|
+
return fallback(info, ssr2);
|
|
50
77
|
};
|
|
51
78
|
const userDefinedOutput = config.build?.rollupOptions?.output;
|
|
52
79
|
const hasOtherOutput = Array.isArray(userDefinedOutput) && userDefinedOutput.length > 1;
|
|
@@ -58,14 +85,14 @@ function resolveUserConfig({
|
|
|
58
85
|
);
|
|
59
86
|
const userDefinedChunkFileNames = hasValidOutput ? "chunkFileNames" in userDefinedOutput ? userDefinedOutput.chunkFileNames : void 0 : void 0;
|
|
60
87
|
const userDefinedEntryFileNames = hasValidOutput ? "entryFileNames" in userDefinedOutput ? userDefinedOutput.entryFileNames : void 0 : void 0;
|
|
61
|
-
|
|
88
|
+
const stashedReturns = {};
|
|
62
89
|
const pluginOutput = {
|
|
63
90
|
preserveModulesRoot: userOptions.build.preserveModulesRoot ? userOptions.moduleBase : void 0,
|
|
64
91
|
entryFileNames: userDefinedEntryFileNames ?? ((info) => {
|
|
65
|
-
const input = info.facadeModuleId ?? info.name + userOptions.
|
|
92
|
+
const input = info.facadeModuleId ?? info.name + userOptions.build.moduleExtension;
|
|
66
93
|
const inputId = input + (ssr ? "-ssr" : "");
|
|
67
94
|
if (!stashedReturns[inputId]) {
|
|
68
|
-
const r =
|
|
95
|
+
const r = handleSsrEntryName(
|
|
69
96
|
info,
|
|
70
97
|
input,
|
|
71
98
|
userOptions.build.entryFile,
|
|
@@ -74,45 +101,63 @@ function resolveUserConfig({
|
|
|
74
101
|
if (userOptions.verbose) {
|
|
75
102
|
console.log("entryFileNames", input, r);
|
|
76
103
|
}
|
|
77
|
-
stashedReturns[inputId] = r;
|
|
104
|
+
stashedReturns[inputId] = r ?? info.name;
|
|
78
105
|
}
|
|
79
|
-
return stashedReturns[inputId].slice(
|
|
106
|
+
return stashedReturns[inputId].slice(
|
|
107
|
+
Number(stashedReturns[inputId].startsWith("/"))
|
|
108
|
+
);
|
|
80
109
|
}),
|
|
81
|
-
assetFileNames: process.env["VITEST"] ? void 0 : userDefinedAssetFileNames ?? ((
|
|
82
|
-
const input =
|
|
110
|
+
assetFileNames: process.env["VITEST"] ? void 0 : userDefinedAssetFileNames ?? ((info) => {
|
|
111
|
+
const input = info.originalFileNames[0];
|
|
83
112
|
const inputId = input + (ssr ? "-ssr" : "");
|
|
84
113
|
if (!stashedReturns[inputId]) {
|
|
85
|
-
const r =
|
|
114
|
+
const r = handleSsrAssetName(
|
|
115
|
+
info,
|
|
116
|
+
input,
|
|
117
|
+
userOptions.build.assetFile,
|
|
118
|
+
ssr
|
|
119
|
+
);
|
|
86
120
|
if (userOptions.verbose) {
|
|
87
|
-
console.log("assetFileNames", input,
|
|
121
|
+
console.log("assetFileNames", input, r);
|
|
88
122
|
}
|
|
89
|
-
stashedReturns[inputId] = r;
|
|
123
|
+
stashedReturns[inputId] = r ?? join(userOptions.build.assetsDir, userOptions.normalizer(input)[0]);
|
|
90
124
|
}
|
|
91
|
-
return stashedReturns[inputId].slice(
|
|
125
|
+
return stashedReturns[inputId].slice(
|
|
126
|
+
Number(stashedReturns[inputId].startsWith("/"))
|
|
127
|
+
);
|
|
92
128
|
}),
|
|
93
129
|
chunkFileNames: userDefinedChunkFileNames ?? ((info) => {
|
|
94
|
-
const input = info.facadeModuleId ?? info.name + userOptions.autoDiscover.
|
|
130
|
+
const input = info.facadeModuleId ?? info.name + userOptions.autoDiscover.modulePattern.source;
|
|
95
131
|
const inputId = input + (ssr ? "-ssr" : "");
|
|
96
132
|
if (!stashedReturns[inputId]) {
|
|
97
|
-
const r =
|
|
133
|
+
const r = handleSsrEntryName(
|
|
98
134
|
info,
|
|
99
135
|
input,
|
|
100
136
|
userOptions.build.chunkFile,
|
|
101
137
|
ssr
|
|
102
138
|
);
|
|
103
139
|
if (userOptions.verbose) {
|
|
104
|
-
console.log("chunkFileNames", input, stashedReturns[
|
|
140
|
+
console.log("chunkFileNames", input, stashedReturns[inputId]);
|
|
105
141
|
}
|
|
106
|
-
stashedReturns[inputId] = r;
|
|
142
|
+
stashedReturns[inputId] = r ?? info.name;
|
|
107
143
|
}
|
|
108
|
-
return stashedReturns[inputId].slice(
|
|
144
|
+
return stashedReturns[inputId].slice(
|
|
145
|
+
Number(stashedReturns[inputId].startsWith("/"))
|
|
146
|
+
);
|
|
109
147
|
}),
|
|
110
148
|
format: "esm",
|
|
111
149
|
exports: "named"
|
|
112
150
|
};
|
|
113
|
-
|
|
151
|
+
const newOutput = Array.isArray(config.build?.rollupOptions?.output) ? [...config.build?.rollupOptions?.output || null, pluginOutput] : typeof config.build?.rollupOptions?.output === "object" && config.build?.rollupOptions?.output !== null ? [config.build?.rollupOptions?.output, pluginOutput] : pluginOutput;
|
|
114
152
|
const vitePrefix = config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
|
|
115
|
-
const
|
|
153
|
+
const nodeEnv = getNodeEnv();
|
|
154
|
+
let mode = config.mode ?? process.env[`${vitePrefix}MODE`] ?? process.env["NODE_ENV"] ?? nodeEnv;
|
|
155
|
+
if (mode !== nodeEnv) {
|
|
156
|
+
if (typeof config.mode === "string" && nodeEnv !== "production") {
|
|
157
|
+
throw new Error(`Mode ${mode} must be equal to NODE_ENV ${nodeEnv}.`);
|
|
158
|
+
}
|
|
159
|
+
mode = nodeEnv;
|
|
160
|
+
}
|
|
116
161
|
const minify = config.build?.minify;
|
|
117
162
|
const srrConfig = {
|
|
118
163
|
...config.ssr,
|
|
@@ -133,11 +178,11 @@ function resolveUserConfig({
|
|
|
133
178
|
}
|
|
134
179
|
};
|
|
135
180
|
let publicOrigin = userOptions.publicOrigin ?? process.env[`${vitePrefix}PUBLIC_ORIGIN`] ?? "";
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
181
|
+
const PROD = mode === "production";
|
|
182
|
+
const DEV = mode === "development";
|
|
183
|
+
const port = typeof config.server?.port === "number" ? config.server?.port : 5173;
|
|
184
|
+
const strictPort = config.server?.strictPort ?? true;
|
|
185
|
+
const host = typeof config.server?.host === "string" ? config.server?.host : "localhost";
|
|
141
186
|
if (configEnv.command === "serve" && !configEnv.isPreview) {
|
|
142
187
|
if (strictPort) {
|
|
143
188
|
publicOrigin = `http${config.server?.https ? "s" : ""}://${host}:${port}`;
|
|
@@ -155,6 +200,7 @@ function resolveUserConfig({
|
|
|
155
200
|
} : {};
|
|
156
201
|
const define = {
|
|
157
202
|
...config.define,
|
|
203
|
+
[`import.meta.env.BASE_URL`]: `"${userOptions.moduleBaseURL}"`,
|
|
158
204
|
[`import.meta.env.PUBLIC_ORIGIN`]: `"${publicOrigin}"`,
|
|
159
205
|
...ssrDefine
|
|
160
206
|
};
|
|
@@ -169,7 +215,7 @@ function resolveUserConfig({
|
|
|
169
215
|
...config,
|
|
170
216
|
root,
|
|
171
217
|
mode,
|
|
172
|
-
base: userOptions.moduleBaseURL,
|
|
218
|
+
base: config.base ?? userOptions.moduleBaseURL,
|
|
173
219
|
envPrefix: vitePrefix,
|
|
174
220
|
resolve: {
|
|
175
221
|
...config.resolve,
|
|
@@ -269,7 +315,7 @@ function resolveUserConfig({
|
|
|
269
315
|
userConfig: serverConfig
|
|
270
316
|
};
|
|
271
317
|
}
|
|
272
|
-
}
|
|
318
|
+
};
|
|
273
319
|
|
|
274
320
|
export { resolveUserConfig };
|
|
275
|
-
//# sourceMappingURL=resolveUserConfig.js.map
|
|
321
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVVzZXJDb25maWcuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9jb25maWcvcmVzb2x2ZVVzZXJDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFVzZXJDb25maWcgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHR5cGUge1xuICBSZXNvbHZlZFVzZXJDb25maWcsXG4gIFJlc29sdmVkVXNlck9wdGlvbnMsXG4gIEF1dG9EaXNjb3ZlcmVkRmlsZXMsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgT3V0cHV0T3B0aW9ucywgUHJlUmVuZGVyZWRBc3NldCwgUHJlUmVuZGVyZWRDaHVuayB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB7IERFRkFVTFRfQ09ORklHIH0gZnJvbSBcIi4vZGVmYXVsdHMuanNcIjtcbmltcG9ydCB7IGdldE5vZGVFbnYgfSBmcm9tIFwiLi4vZ2V0Tm9kZUVudi5qc1wiO1xuXG5jb25zdCBzdGFzaGVkVXNlckNvbmZpZzogUmVjb3JkPHN0cmluZywgUmVzb2x2ZWRVc2VyQ29uZmlnIHwgbnVsbD4gPSB7fTtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZVVzZXJDb25maWdQcm9wcyA9IHtcbiAgY29uZGl0aW9uOiBcInJlYWN0LWNsaWVudFwiIHwgXCJyZWFjdC1zZXJ2ZXJcIjtcbiAgY29uZmlnOiBVc2VyQ29uZmlnO1xuICBjb25maWdFbnY6IENvbmZpZ0VudjtcbiAgdXNlck9wdGlvbnM6IFJlc29sdmVkVXNlck9wdGlvbnM7XG4gIGF1dG9EaXNjb3ZlcmVkRmlsZXM6IFBpY2s8QXV0b0Rpc2NvdmVyZWRGaWxlcywgXCJpbnB1dHNcIiB8IFwic3RhdGljTWFuaWZlc3RcIj47XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlVXNlckNvbmZpZ1JldHVybiA9XG4gIHwgeyB0eXBlOiBcInN1Y2Nlc3NcIjsgdXNlckNvbmZpZzogUmVzb2x2ZWRVc2VyQ29uZmlnIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IEVycm9yIH07XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVVc2VyQ29uZmlnRm4gPSAoXG4gIHByb3BzOiBSZXNvbHZlVXNlckNvbmZpZ1Byb3BzXG4pID0+IFJlc29sdmVVc2VyQ29uZmlnUmV0dXJuO1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVVzZXJDb25maWc6IFJlc29sdmVVc2VyQ29uZmlnRm4gPVxuICBmdW5jdGlvbiBfcmVzb2x2ZVVzZXJDb25maWcoe1xuICAgIGNvbmRpdGlvbixcbiAgICBjb25maWcsXG4gICAgY29uZmlnRW52LFxuICAgIHVzZXJPcHRpb25zLFxuICAgIGF1dG9EaXNjb3ZlcmVkRmlsZXMsXG4gIH0pIHtcbiAgICBjb25zdCBzc3IgPVxuICAgICAgdHlwZW9mIGNvbmZpZy5idWlsZD8uc3NyID09PSBcImJvb2xlYW5cIlxuICAgICAgICA/IGNvbmZpZy5idWlsZD8uc3NyXG4gICAgICAgIDogQm9vbGVhbihjb25maWdFbnYuaXNTc3JCdWlsZCkgfHxcbiAgICAgICAgICBjb25kaXRpb24gPT09IFwicmVhY3Qtc2VydmVyXCIgfHxcbiAgICAgICAgICAodHlwZW9mIHByb2Nlc3MuZW52W1wiVklURV9TU1JcIl0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcHJvY2Vzcy5lbnZbXCJWSVRFX1NTUlwiXSA9PT0gXCJ0cnVlXCIgfHxcbiAgICAgICAgICAgICAgcHJvY2Vzcy5lbnZbXCJWSVRFX1NTUlwiXSA9PT0gXCIxXCJcbiAgICAgICAgICAgIDogQm9vbGVhbihwcm9jZXNzLmVudltcIlZJVEVfU1NSXCJdKSk7XG4gICAgY29uc3QgZW52RGlyID1cbiAgICAgIGNvbmRpdGlvbiA9PT0gXCJyZWFjdC1jbGllbnRcIiAmJiBzc3JcbiAgICAgICAgPyB1c2VyT3B0aW9ucy5idWlsZC5jbGllbnRcbiAgICAgICAgOiBjb25kaXRpb24gPT09IFwicmVhY3QtY2xpZW50XCJcbiAgICAgICAgPyB1c2VyT3B0aW9ucy5idWlsZC5zdGF0aWNcbiAgICAgICAgOiB1c2VyT3B0aW9ucy5idWlsZC5zZXJ2ZXI7XG4gICAgY29uc3QgZW52SWQgPSBgJHtlbnZEaXJ9JHtzc3IgPyBcIi1zc3JcIiA6IFwiXCJ9YDtcblxuICAgIGlmIChzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICB1c2VyQ29uZmlnOiBzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEdldCBleGlzdGluZyBpbnB1dHNcbiAgICBjb25zdCByb290ID0gY29uZmlnLnJvb3QgPz8gdXNlck9wdGlvbnMucHJvamVjdFJvb3QgPz8gcHJvY2Vzcy5jd2QoKTtcblxuICAgIGNvbnN0IGhhbmRsZVNzckVudHJ5TmFtZSA9IChcbiAgICAgIGluZm86IFByZVJlbmRlcmVkQ2h1bmssXG4gICAgICBpbnB1dDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIGZhbGxiYWNrOiAoaW5mbzogUHJlUmVuZGVyZWRDaHVuaywgc3NyOiBib29sZWFuKSA9PiBzdHJpbmcsXG4gICAgICBzc3I6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIGlmICghc3NyIHx8ICFpbnB1dCkge1xuICAgICAgICBpZiAodHlwZW9mIGZhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsbGJhY2soaW5mbywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyT3B0aW9ucy5ub3JtYWxpemVyKGluZm8ubmFtZSlbMF07XG4gICAgICB9XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gdXNlck9wdGlvbnMubm9ybWFsaXplcihpbnB1dCk7XG4gICAgICBsZXQgdmFsdWUgPSBub3JtYWxpemVkWzFdO1xuICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgodXNlck9wdGlvbnMubW9kdWxlQmFzZVBhdGgpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UodXNlck9wdGlvbnMubW9kdWxlQmFzZVBhdGgubGVuZ3RoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5ID0gYXV0b0Rpc2NvdmVyZWRGaWxlcy5zdGF0aWNNYW5pZmVzdFt2YWx1ZV07XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmZpbGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsbGJhY2soaW5mbywgdHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVNzckFzc2V0TmFtZSA9IChcbiAgICAgIGluZm86IFByZVJlbmRlcmVkQXNzZXQsXG4gICAgICBpbnB1dDogc3RyaW5nIHwgbnVsbCxcbiAgICAgIGZhbGxiYWNrOiAoaW5mbzogUHJlUmVuZGVyZWRBc3NldCwgc3NyOiBib29sZWFuKSA9PiBzdHJpbmcsXG4gICAgICBzc3I6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIGlmIChpbmZvLnNvdXJjZSA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIENTUyBmaWxlXG4gICAgICBjb25zdCBpc0Nzc0ZpbGUgPSBpbnB1dD8uZW5kc1dpdGgoJy5jc3MnKSB8fCBcbiAgICAgICAgaW5mby5uYW1lcz8uc29tZShuYW1lID0+IG5hbWUuZW5kc1dpdGgoJy5jc3MnKSk7XG4gICAgICBcbiAgICAgIGlmICghc3NyIHx8ICFpbnB1dCB8fCBpc0Nzc0ZpbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKGluZm8sIHNzcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXJPcHRpb25zLm5vcm1hbGl6ZXIoaW5mby5uYW1lc1swXSlbMF07XG4gICAgICB9XG4gICAgICBcbiAgICAgIFxuICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgaGF2ZSBhIHN0YXRpYyBtYW5pZmVzdCBlbnRyeSBmb3IgY29uc2lzdGVudCBtb2R1bGUgSUQgcmVzb2x1dGlvblxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHVzZXJPcHRpb25zLm5vcm1hbGl6ZXIoaW5wdXQpO1xuICAgICAgY29uc3QgaWQgPSBub3JtYWxpemVkWzBdO1xuICAgICAgbGV0IHZhbHVlID0gbm9ybWFsaXplZFsxXTtcbiAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKHVzZXJPcHRpb25zLm1vZHVsZUJhc2VQYXRoKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHVzZXJPcHRpb25zLm1vZHVsZUJhc2VQYXRoLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGVudHJ5ID0gYXV0b0Rpc2NvdmVyZWRGaWxlcy5zdGF0aWNNYW5pZmVzdFt2YWx1ZV07XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgLy8gRm9yIENTUyBmaWxlcywgbG9vayBmb3IgYSBzcGVjaWZpYyBDU1MgZmlsZSB0aGF0IG1hdGNoZXMgb3VyIG5vcm1hbGl6ZWQgSURcbiAgICAgICAgaWYgKGVudHJ5Py5uYW1lICYmIHVzZXJPcHRpb25zLmF1dG9EaXNjb3Zlci5jc3NQYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBlbnRyeS5jc3M/LmZpbmQoKGNzcykgPT4gY3NzLnN0YXJ0c1dpdGgoaWQgYXMgc3RyaW5nKSk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gam9pbih1c2VyT3B0aW9ucy5idWlsZC5hc3NldHNEaXIsIGZvdW5kKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGpvaW4odXNlck9wdGlvbnMuYnVpbGQuYXNzZXRzRGlyLCBlbnRyeS5maWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIG90aGVyIGFzc2V0cywgdXNlIHRoZSBlbnRyeSBmaWxlXG4gICAgICAgICAgcmV0dXJuIGVudHJ5LmZpbGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSB1c2VyJ3MgYXNzZXRGaWxlIGZ1bmN0aW9uIGZvciBjb25zaXN0ZW50IGJlaGF2aW9yXG4gICAgICByZXR1cm4gZmFsbGJhY2soaW5mbywgc3NyKTtcbiAgICB9O1xuICAgIGNvbnN0IHVzZXJEZWZpbmVkT3V0cHV0ID0gY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vdXRwdXQ7XG4gICAgY29uc3QgaGFzT3RoZXJPdXRwdXQgPVxuICAgICAgQXJyYXkuaXNBcnJheSh1c2VyRGVmaW5lZE91dHB1dCkgJiYgdXNlckRlZmluZWRPdXRwdXQubGVuZ3RoID4gMTtcbiAgICBjb25zdCBoYXNWYWxpZE91dHB1dCA9IHVzZXJEZWZpbmVkT3V0cHV0ICYmICFoYXNPdGhlck91dHB1dDtcbiAgICBjb25zdCBoYXNPYmplY3RPdXRwdXQgPVxuICAgICAgdXNlckRlZmluZWRPdXRwdXQgJiZcbiAgICAgICFoYXNPdGhlck91dHB1dCAmJlxuICAgICAgdHlwZW9mIHVzZXJEZWZpbmVkT3V0cHV0ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB1c2VyRGVmaW5lZE91dHB1dCAhPT0gbnVsbDtcblxuICAgIGNvbnN0IHVzZXJEZWZpbmVkQXNzZXRGaWxlTmFtZXMgPSBoYXNPYmplY3RPdXRwdXRcbiAgICAgID8gXCJhc3NldEZpbGVOYW1lc1wiIGluIHVzZXJEZWZpbmVkT3V0cHV0XG4gICAgICAgID8gdXNlckRlZmluZWRPdXRwdXQuYXNzZXRGaWxlTmFtZXNcbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIDogLy8gZmluZCB0aGUgb3RoZXIgYXNzZXQgZmlsZSBuYW1lc1xuICAgICAgaGFzT3RoZXJPdXRwdXRcbiAgICAgID8gKHVzZXJEZWZpbmVkT3V0cHV0LmZpbmQoKG8pID0+IG8uYXNzZXRGaWxlTmFtZXMpIGFzIE91dHB1dE9wdGlvbnMpXG4gICAgICAgICAgLmFzc2V0RmlsZU5hbWVzXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHVzZXJEZWZpbmVkQ2h1bmtGaWxlTmFtZXMgPSBoYXNWYWxpZE91dHB1dFxuICAgICAgPyBcImNodW5rRmlsZU5hbWVzXCIgaW4gdXNlckRlZmluZWRPdXRwdXRcbiAgICAgICAgPyB1c2VyRGVmaW5lZE91dHB1dC5jaHVua0ZpbGVOYW1lc1xuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdXNlckRlZmluZWRFbnRyeUZpbGVOYW1lcyA9IGhhc1ZhbGlkT3V0cHV0XG4gICAgICA/IFwiZW50cnlGaWxlTmFtZXNcIiBpbiB1c2VyRGVmaW5lZE91dHB1dFxuICAgICAgICA/IHVzZXJEZWZpbmVkT3V0cHV0LmVudHJ5RmlsZU5hbWVzXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHN0YXNoZWRSZXR1cm5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgY29uc3QgcGx1Z2luT3V0cHV0ID0ge1xuICAgICAgcHJlc2VydmVNb2R1bGVzUm9vdDogdXNlck9wdGlvbnMuYnVpbGQucHJlc2VydmVNb2R1bGVzUm9vdFxuICAgICAgICA/IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBlbnRyeUZpbGVOYW1lczpcbiAgICAgICAgdXNlckRlZmluZWRFbnRyeUZpbGVOYW1lcyA/P1xuICAgICAgICAoKGluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBpbnB1dCA9XG4gICAgICAgICAgICBpbmZvLmZhY2FkZU1vZHVsZUlkID8/XG4gICAgICAgICAgICBpbmZvLm5hbWUgKyB1c2VyT3B0aW9ucy5idWlsZC5tb2R1bGVFeHRlbnNpb247XG4gICAgICAgICAgY29uc3QgaW5wdXRJZCA9IGlucHV0ICsgKHNzciA/IFwiLXNzclwiIDogXCJcIik7XG4gICAgICAgICAgaWYgKCFzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSkge1xuICAgICAgICAgICAgY29uc3QgciA9IGhhbmRsZVNzckVudHJ5TmFtZShcbiAgICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgIHVzZXJPcHRpb25zLmJ1aWxkLmVudHJ5RmlsZSxcbiAgICAgICAgICAgICAgc3NyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHVzZXJPcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlbnRyeUZpbGVOYW1lc1wiLCBpbnB1dCwgcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSA9IHIgPz8gaW5mby5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBlbXB0eSBiYXNlUGF0aCwgaXQgd2lsbCBub3QgYmUgc2xpY2VkIGZyb20gdGhlIHBhdGgsIHNvLCB3ZSBuZWVkIHRvIHNsaWNlIGl0IGhlcmVcbiAgICAgICAgICAvLyBhdCB0aGUgbGFzdCBwb3NzaWJsZSBtb21lbnQgYXMgdG8gbm90IGNvbmZ1c2UgdGhlIHJlc3Qgb2YgdGhlIGxvZ2ljIGFyb3VuZCB0aGUgYmFzZVBhdGhcbiAgICAgICAgICByZXR1cm4gc3Rhc2hlZFJldHVybnNbaW5wdXRJZF0uc2xpY2UoXG4gICAgICAgICAgICBOdW1iZXIoc3Rhc2hlZFJldHVybnNbaW5wdXRJZF0uc3RhcnRzV2l0aChcIi9cIikpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICBhc3NldEZpbGVOYW1lczogcHJvY2Vzcy5lbnZbXCJWSVRFU1RcIl1cbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiB1c2VyRGVmaW5lZEFzc2V0RmlsZU5hbWVzID8/XG4gICAgICAgICAgKChpbmZvKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IGluZm8ub3JpZ2luYWxGaWxlTmFtZXNbMF07XG4gICAgICAgICAgICBjb25zdCBpbnB1dElkID0gaW5wdXQgKyAoc3NyID8gXCItc3NyXCIgOiBcIlwiKTtcblxuICAgICAgICAgICAgaWYgKCFzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSkge1xuICAgICAgICAgICAgICBjb25zdCByID0gaGFuZGxlU3NyQXNzZXROYW1lKFxuICAgICAgICAgICAgICAgIGluZm8sXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgdXNlck9wdGlvbnMuYnVpbGQuYXNzZXRGaWxlLFxuICAgICAgICAgICAgICAgIHNzclxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYgKHVzZXJPcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFzc2V0RmlsZU5hbWVzXCIsIGlucHV0LCByKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdGFzaGVkUmV0dXJuc1tpbnB1dElkXSA9IHIgPz8gam9pbih1c2VyT3B0aW9ucy5idWlsZC5hc3NldHNEaXIsIHVzZXJPcHRpb25zLm5vcm1hbGl6ZXIoaW5wdXQpWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGVtcHR5IGJhc2VQYXRoLCBpdCB3aWxsIG5vdCBiZSBzbGljZWQgZnJvbSB0aGUgcGF0aCwgc28sIHdlIG5lZWQgdG8gc2xpY2UgaXQgaGVyZVxuICAgICAgICAgICAgLy8gYXQgdGhlIGxhc3QgcG9zc2libGUgbW9tZW50IGFzIHRvIG5vdCBjb25mdXNlIHRoZSByZXN0IG9mIHRoZSBsb2dpYyBhcm91bmQgdGhlIGJhc2VQYXRoXG4gICAgICAgICAgICByZXR1cm4gc3Rhc2hlZFJldHVybnNbaW5wdXRJZF0uc2xpY2UoXG4gICAgICAgICAgICAgIE51bWJlcihzdGFzaGVkUmV0dXJuc1tpbnB1dElkXS5zdGFydHNXaXRoKFwiL1wiKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICBjaHVua0ZpbGVOYW1lczpcbiAgICAgICAgdXNlckRlZmluZWRDaHVua0ZpbGVOYW1lcyA/P1xuICAgICAgICAoKGluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBpbnB1dCA9XG4gICAgICAgICAgICBpbmZvLmZhY2FkZU1vZHVsZUlkID8/XG4gICAgICAgICAgICBpbmZvLm5hbWUgKyB1c2VyT3B0aW9ucy5hdXRvRGlzY292ZXIubW9kdWxlUGF0dGVybi5zb3VyY2U7XG4gICAgICAgICAgY29uc3QgaW5wdXRJZCA9IGlucHV0ICsgKHNzciA/IFwiLXNzclwiIDogXCJcIik7XG5cbiAgICAgICAgICBpZiAoIXN0YXNoZWRSZXR1cm5zW2lucHV0SWRdKSB7XG4gICAgICAgICAgICBjb25zdCByID0gaGFuZGxlU3NyRW50cnlOYW1lKFxuICAgICAgICAgICAgICBpbmZvLFxuICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgdXNlck9wdGlvbnMuYnVpbGQuY2h1bmtGaWxlLFxuICAgICAgICAgICAgICBzc3JcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICh1c2VyT3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2h1bmtGaWxlTmFtZXNcIiwgaW5wdXQsIHN0YXNoZWRSZXR1cm5zW2lucHV0SWRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXNoZWRSZXR1cm5zW2lucHV0SWRdID0gciA/PyBpbmZvLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGVtcHR5IGJhc2VQYXRoLCBpdCB3aWxsIG5vdCBiZSBzbGljZWQgZnJvbSB0aGUgcGF0aCwgc28sIHdlIG5lZWQgdG8gc2xpY2UgaXQgaGVyZVxuICAgICAgICAgIC8vIGF0IHRoZSBsYXN0IHBvc3NpYmxlIG1vbWVudCBhcyB0byBub3QgY29uZnVzZSB0aGUgcmVzdCBvZiB0aGUgbG9naWMgYXJvdW5kIHRoZSBiYXNlUGF0aFxuICAgICAgICAgIHJldHVybiBzdGFzaGVkUmV0dXJuc1tpbnB1dElkXS5zbGljZShcbiAgICAgICAgICAgIE51bWJlcihzdGFzaGVkUmV0dXJuc1tpbnB1dElkXS5zdGFydHNXaXRoKFwiL1wiKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIGZvcm1hdDogXCJlc21cIixcbiAgICAgIGV4cG9ydHM6IFwibmFtZWRcIixcbiAgICB9IHNhdGlzZmllcyBPdXRwdXRPcHRpb25zO1xuXG4gICAgY29uc3QgbmV3T3V0cHV0ID0gQXJyYXkuaXNBcnJheShjb25maWcuYnVpbGQ/LnJvbGx1cE9wdGlvbnM/Lm91dHB1dClcbiAgICAgID8gWy4uLihjb25maWcuYnVpbGQ/LnJvbGx1cE9wdGlvbnM/Lm91dHB1dCB8fCBudWxsKSwgcGx1Z2luT3V0cHV0XVxuICAgICAgOiB0eXBlb2YgY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vdXRwdXQgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zPy5vdXRwdXQgIT09IG51bGxcbiAgICAgID8gW2NvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8ub3V0cHV0LCBwbHVnaW5PdXRwdXRdXG4gICAgICA6IHBsdWdpbk91dHB1dDtcbiAgICBjb25zdCB2aXRlUHJlZml4ID0gY29uZmlnLmVudlByZWZpeCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYO1xuICAgIGNvbnN0IG5vZGVFbnYgPSBnZXROb2RlRW52KCk7XG4gICAgbGV0IG1vZGUgPVxuICAgICAgY29uZmlnLm1vZGUgPz9cbiAgICAgIHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9TU9ERWBdID8/XG4gICAgICBwcm9jZXNzLmVudltcIk5PREVfRU5WXCJdID8/XG4gICAgICBub2RlRW52O1xuXG4gICAgaWYgKG1vZGUgIT09IG5vZGVFbnYpIHtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnLm1vZGUgPT09IFwic3RyaW5nXCIgJiYgbm9kZUVudiAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlICR7bW9kZX0gbXVzdCBiZSBlcXVhbCB0byBOT0RFX0VOViAke25vZGVFbnZ9LmApO1xuICAgICAgfVxuICAgICAgbW9kZSA9IG5vZGVFbnY7XG4gICAgfVxuICAgIGNvbnN0IG1pbmlmeSA9IGNvbmZpZy5idWlsZD8ubWluaWZ5O1xuXG4gICAgY29uc3Qgc3JyQ29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLnNzcixcbiAgICAgIHRhcmdldDogY29uZmlnLnNzcj8udGFyZ2V0ID8/IFwibm9kZVwiLFxuICAgICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICAgIC4uLmNvbmZpZy5zc3I/Lm9wdGltaXplRGVwcyxcbiAgICAgICAgaW5jbHVkZTogY29uZmlnLnNzcj8ub3B0aW1pemVEZXBzPy5pbmNsdWRlID8/IFtcbiAgICAgICAgICBcInJlYWN0XCIsXG4gICAgICAgICAgXCJyZWFjdC1kb21cIixcbiAgICAgICAgICBcInJlYWN0LXNlcnZlci1kb20tZXNtL2NsaWVudFwiLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgLi4uY29uZmlnLnNzcj8ucmVzb2x2ZSxcbiAgICAgICAgZXh0ZXJuYWxDb25kaXRpb25zOiBjb25maWcuc3NyPy5yZXNvbHZlPy5leHRlcm5hbENvbmRpdGlvbnMgPz8gW1xuICAgICAgICAgIFwicmVhY3Qtc2VydmVyXCIsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gICAgbGV0IHB1YmxpY09yaWdpbiA9XG4gICAgICB1c2VyT3B0aW9ucy5wdWJsaWNPcmlnaW4gPz9cbiAgICAgIHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9UFVCTElDX09SSUdJTmBdID8/XG4gICAgICBcIlwiO1xuICAgIGNvbnN0IFBST0QgPSBtb2RlID09PSBcInByb2R1Y3Rpb25cIjtcbiAgICBjb25zdCBERVYgPSBtb2RlID09PSBcImRldmVsb3BtZW50XCI7XG4gICAgY29uc3QgcG9ydCA9XG4gICAgICB0eXBlb2YgY29uZmlnLnNlcnZlcj8ucG9ydCA9PT0gXCJudW1iZXJcIiA/IGNvbmZpZy5zZXJ2ZXI/LnBvcnQgOiA1MTczO1xuICAgIGNvbnN0IHN0cmljdFBvcnQgPSBjb25maWcuc2VydmVyPy5zdHJpY3RQb3J0ID8/IHRydWU7XG4gICAgY29uc3QgaG9zdCA9XG4gICAgICB0eXBlb2YgY29uZmlnLnNlcnZlcj8uaG9zdCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IGNvbmZpZy5zZXJ2ZXI/Lmhvc3RcbiAgICAgICAgOiBcImxvY2FsaG9zdFwiO1xuICAgIGlmIChjb25maWdFbnYuY29tbWFuZCA9PT0gXCJzZXJ2ZVwiICYmICFjb25maWdFbnYuaXNQcmV2aWV3KSB7XG4gICAgICBpZiAoc3RyaWN0UG9ydCkge1xuICAgICAgICBwdWJsaWNPcmlnaW4gPSBgaHR0cCR7XG4gICAgICAgICAgY29uZmlnLnNlcnZlcj8uaHR0cHMgPyBcInNcIiA6IFwiXCJcbiAgICAgICAgfTovLyR7aG9zdH06JHtwb3J0fWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdWJsaWNPcmlnaW4gPSBcIlwiO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzc3JEZWZpbmUgPSBzc3JcbiAgICAgID8ge1xuICAgICAgICAgIFtgcHJvY2Vzcy5lbnYuJHt2aXRlUHJlZml4fVNTUmBdOiBgJHtzc3J9YCxcbiAgICAgICAgICBbYHByb2Nlc3MuZW52LiR7dml0ZVByZWZpeH1ERVZgXTogYCR7REVWfWAsXG4gICAgICAgICAgW2Bwcm9jZXNzLmVudi4ke3ZpdGVQcmVmaXh9UFJPRGBdOiBgJHtQUk9EfWAsXG4gICAgICAgICAgW2Bwcm9jZXNzLmVudi4ke3ZpdGVQcmVmaXh9TU9ERWBdOiBgXCIke21vZGV9XCJgLFxuICAgICAgICAgIFtgcHJvY2Vzcy5lbnYuJHt2aXRlUHJlZml4fUJBU0VfVVJMYF06IGBcIiR7dXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTH1cImAsXG4gICAgICAgICAgW2Bwcm9jZXNzLmVudi4ke3ZpdGVQcmVmaXh9UFVCTElDX09SSUdJTmBdOiBgXCIke3B1YmxpY09yaWdpbn1cImAsXG4gICAgICAgIH1cbiAgICAgIDoge307XG4gICAgY29uc3QgZGVmaW5lID0ge1xuICAgICAgLi4uY29uZmlnLmRlZmluZSxcbiAgICAgIFtgaW1wb3J0Lm1ldGEuZW52LkJBU0VfVVJMYF06IGBcIiR7dXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTH1cImAsXG4gICAgICBbYGltcG9ydC5tZXRhLmVudi5QVUJMSUNfT1JJR0lOYF06IGBcIiR7cHVibGljT3JpZ2lufVwiYCxcbiAgICAgIC4uLnNzckRlZmluZSxcbiAgICB9O1xuICAgIC8vIHRoZXNlIHdpbGwgbmV2ZXIgYmUgY2xlYW5lZCB1cCwgYmVjYXVzZSwgd2UgYXJlIHJlc29sdmluZyB0aGUgdXNlciBjb25maWdcbiAgICAvLyBhbmQgaXQncyBhc3N1bWVkIHRoZSB0aHJlYWQgY2xvc2VzIGFmdGVyIHRoaXMgYW5kIHdlIGRvbid0IHdhbnRcbiAgICAvLyBpdCB0byBjaGFuZ2UgYWZ0ZXIgdGhlIGNvbmZpZyBoYXMgYmVlbiByZXNvbHZlZFxuICAgIGlmIChwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fUJBU0VfVVJMYF0gIT09IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwpIHtcbiAgICAgIHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9QkFTRV9VUkxgXSA9IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkw7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fVBVQkxJQ19PUklHSU5gXSAhPT0gcHVibGljT3JpZ2luKSB7XG4gICAgICBwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fVBVQkxJQ19PUklHSU5gXSA9IHB1YmxpY09yaWdpbjtcbiAgICB9XG5cbiAgICBpZiAoY29uZGl0aW9uID09PSBcInJlYWN0LWNsaWVudFwiKSB7XG4gICAgICAvLyBjbGllbnQgcGx1Z2luIGJ1aWxkIG9wdGlvbnMgKGNsaWVudCBwbHVnaW4gc3RpbGwgb3V0cHV0cyBzZXJ2ZXIgZmlsZXMpXG4gICAgICBjb25zdCBjbGllbnRDb25maWcgPSB7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgcm9vdDogcm9vdCxcbiAgICAgICAgbW9kZTogbW9kZSxcbiAgICAgICAgYmFzZTogY29uZmlnLmJhc2UgPz8gdXNlck9wdGlvbnMubW9kdWxlQmFzZVVSTCxcbiAgICAgICAgZW52UHJlZml4OiB2aXRlUHJlZml4LFxuICAgICAgICByZXNvbHZlOiB7XG4gICAgICAgICAgLi4uY29uZmlnLnJlc29sdmUsXG4gICAgICAgICAgZXh0ZXJuYWw6IGNvbmZpZy5yZXNvbHZlPy5leHRlcm5hbCA/PyBbXG4gICAgICAgICAgICBcInJlYWN0XCIsXG4gICAgICAgICAgICBcInJlYWN0LWRvbVwiLFxuICAgICAgICAgICAgXCJyZWFjdC1zZXJ2ZXItZG9tLWVzbS9jbGllbnRcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBkZWZpbmU6IGRlZmluZSxcbiAgICAgICAgc3NyOiBzcnJDb25maWcsXG4gICAgICAgIHNlcnZlcjoge1xuICAgICAgICAgIC4uLmNvbmZpZy5zZXJ2ZXIsXG4gICAgICAgICAgLy8gY29tbW9uIGRlZmF1bHQgZm9yIHN0cmljdGVyIHNlcnZlciBvcGVyYXRpb25zXG4gICAgICAgICAgLy8gYW5kIGVuc3VyZXMgdGVzdHMgdGhhdCB1c2UgYSBzZXJ2ZXIgd2lsbCBmYWlsIGVhcmx5XG4gICAgICAgICAgLy8gYWxzbywgd2UgY2FuJ3Qgc2V0IHRoZSBwdWJsaWMgb3JpZ2luIHdpdGhvdXQgYSBwb3J0XG4gICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICBzdHJpY3RQb3J0OiBzdHJpY3RQb3J0LFxuICAgICAgICAgIGhvc3Q6IGhvc3QsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGNsaWVudCBidWlsZCBvcHRpb25zXG4gICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgLi4uY29uZmlnLmJ1aWxkLFxuICAgICAgICAgIG1vZHVsZVByZWxvYWQ6IGNvbmZpZy5idWlsZD8ubW9kdWxlUHJlbG9hZCA/PyBmYWxzZSxcbiAgICAgICAgICBlbXB0eU91dERpcjogY29uZmlnLmJ1aWxkPy5lbXB0eU91dERpciA/PyB0cnVlLFxuICAgICAgICAgIG91dERpcjpcbiAgICAgICAgICAgIGNvbmZpZy5idWlsZD8ub3V0RGlyID8/IGpvaW4odXNlck9wdGlvbnMuYnVpbGQub3V0RGlyLCBlbnZEaXIpLFxuICAgICAgICAgIGFzc2V0c0RpcjogY29uZmlnLmJ1aWxkPy5hc3NldHNEaXIgPz8gdXNlck9wdGlvbnMuYnVpbGQuYXNzZXRzRGlyLFxuICAgICAgICAgIGNvcHlQdWJsaWNEaXI6XG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLmJ1aWxkPy5jb3B5UHVibGljRGlyID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICA/IGNvbmZpZy5idWlsZD8uY29weVB1YmxpY0RpclxuICAgICAgICAgICAgICA6ICFzc3IsXG4gICAgICAgICAgLy8gbW9kZXJuIGJyb3dzZXJzXG4gICAgICAgICAgdGFyZ2V0OiBjb25maWcuYnVpbGQ/LnRhcmdldCA/PyBbXCJlc25leHRcIl0sXG4gICAgICAgICAgbWluaWZ5OiBtaW5pZnksXG4gICAgICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICAgICAgLi4uY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zLFxuICAgICAgICAgICAgaW5wdXQ6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYXV0b0Rpc2NvdmVyZWRGaWxlcy5pbnB1dHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlLnNsaWNlKE51bWJlcih2YWx1ZS5zdGFydHNXaXRoKFwiL1wiKSkpLFxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG91dHB1dDogbmV3T3V0cHV0LFxuICAgICAgICAgICAgcHJlc2VydmVFbnRyeVNpZ25hdHVyZXM6XG4gICAgICAgICAgICAgIGNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8ucHJlc2VydmVFbnRyeVNpZ25hdHVyZXMgPz9cbiAgICAgICAgICAgICAgXCJleHBvcnRzLW9ubHlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNzcjogc3NyLFxuICAgICAgICAgIG1hbmlmZXN0OiBjb25maWcuYnVpbGQ/Lm1hbmlmZXN0ID8/IGAudml0ZS9tYW5pZmVzdC5qc29uYCxcbiAgICAgICAgICBzc3JNYW5pZmVzdDogY29uZmlnLmJ1aWxkPy5zc3JNYW5pZmVzdCA/PyBgLnZpdGUvc3NyLW1hbmlmZXN0Lmpzb25gLFxuICAgICAgICAgIHNzckVtaXRBc3NldHM6IGNvbmZpZy5idWlsZD8uc3NyRW1pdEFzc2V0cyA/PyB0cnVlLFxuICAgICAgICAgIGNzc0NvZGVTcGxpdDpcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdCA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgPyBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdFxuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9IHNhdGlzZmllcyBSZXNvbHZlZFVzZXJDb25maWc7XG4gICAgICBzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0gPSBjbGllbnRDb25maWc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgdXNlckNvbmZpZzogY2xpZW50Q29uZmlnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VydmVyQ29uZmlnID0ge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgIGJhc2U6IHVzZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwsXG4gICAgICAgIGVudlByZWZpeDogdml0ZVByZWZpeCxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgIC4uLmNvbmZpZy5yZXNvbHZlLFxuICAgICAgICAgIGV4dGVybmFsQ29uZGl0aW9uczogY29uZmlnLnJlc29sdmU/LmV4dGVybmFsQ29uZGl0aW9ucyA/PyBbXG4gICAgICAgICAgICBcInJlYWN0LXNlcnZlclwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmluZTogZGVmaW5lLFxuICAgICAgICBzc3I6IHNyckNvbmZpZyxcbiAgICAgICAgLy8gc2VydmVyIGJ1aWxkIG9wdGlvbnNcbiAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAuLi5jb25maWcuYnVpbGQsXG4gICAgICAgICAgbW9kdWxlUHJlbG9hZDogY29uZmlnLmJ1aWxkPy5tb2R1bGVQcmVsb2FkID8/IGZhbHNlLFxuICAgICAgICAgIGVtcHR5T3V0RGlyOiBjb25maWcuYnVpbGQ/LmVtcHR5T3V0RGlyID8/IHRydWUsXG4gICAgICAgICAgb3V0RGlyOlxuICAgICAgICAgICAgY29uZmlnLmJ1aWxkPy5vdXREaXIgPz8gam9pbih1c2VyT3B0aW9ucy5idWlsZC5vdXREaXIsIGVudkRpciksXG4gICAgICAgICAgdGFyZ2V0OiBjb25maWcuYnVpbGQ/LnRhcmdldCA/PyBcIm5vZGUxOFwiLFxuICAgICAgICAgIG1pbmlmeTogbWluaWZ5LFxuICAgICAgICAgIHNzcjogc3NyLFxuICAgICAgICAgIG1hbmlmZXN0OiBjb25maWcuYnVpbGQ/Lm1hbmlmZXN0ID8/IGAudml0ZS9tYW5pZmVzdC5qc29uYCxcbiAgICAgICAgICBzc3JNYW5pZmVzdDogY29uZmlnLmJ1aWxkPy5zc3JNYW5pZmVzdCA/PyBgLnZpdGUvc3NyLW1hbmlmZXN0Lmpzb25gLFxuICAgICAgICAgIHNzckVtaXRBc3NldHM6XG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLmJ1aWxkPy5zc3JFbWl0QXNzZXRzID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICA/IGNvbmZpZy5idWlsZD8uc3NyRW1pdEFzc2V0c1xuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgY29weVB1YmxpY0RpcjpcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuYnVpbGQ/LmNvcHlQdWJsaWNEaXIgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgID8gY29uZmlnLmJ1aWxkPy5jb3B5UHVibGljRGlyXG4gICAgICAgICAgICAgIDogIXNzcixcbiAgICAgICAgICBhc3NldHNEaXI6IGNvbmZpZy5idWlsZD8uYXNzZXRzRGlyID8/IHVzZXJPcHRpb25zLmJ1aWxkLmFzc2V0c0RpcixcbiAgICAgICAgICAvLyBFbnN1cmUgQ1NTIGZpbGVzIGFyZSBvdXRwdXQgdG8gc3RhdGljIGRpcmVjdG9yeVxuICAgICAgICAgIGNzc0NvZGVTcGxpdDpcbiAgICAgICAgICAgIHR5cGVvZiBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdCA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgPyBjb25maWcuYnVpbGQ/LmNzc0NvZGVTcGxpdFxuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICAgICAgLi4uY29uZmlnLmJ1aWxkPy5yb2xsdXBPcHRpb25zLFxuICAgICAgICAgICAgaW5wdXQ6IGF1dG9EaXNjb3ZlcmVkRmlsZXMuaW5wdXRzLFxuICAgICAgICAgICAgcHJlc2VydmVFbnRyeVNpZ25hdHVyZXM6XG4gICAgICAgICAgICAgIGNvbmZpZy5idWlsZD8ucm9sbHVwT3B0aW9ucz8ucHJlc2VydmVFbnRyeVNpZ25hdHVyZXMgPz8gXCJzdHJpY3RcIixcbiAgICAgICAgICAgIG91dHB1dDogbmV3T3V0cHV0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9IHNhdGlzZmllcyBSZXNvbHZlZFVzZXJDb25maWc7XG4gICAgICBzdGFzaGVkVXNlckNvbmZpZ1tlbnZJZF0gPSBzZXJ2ZXJDb25maWc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgdXNlckNvbmZpZzogc2VydmVyQ29uZmlnLFxuICAgICAgfTtcbiAgICB9XG4gIH07XG4iXSwibmFtZXMiOlsic3NyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFXQSxNQUFNLG9CQUErRCxFQUFDO0FBa0J6RCxNQUFBLGlCQUFBLEdBQ1gsU0FBUyxrQkFBbUIsQ0FBQTtBQUFBLEVBQzFCLFNBQUE7QUFBQSxFQUNBLE1BQUE7QUFBQSxFQUNBLFNBQUE7QUFBQSxFQUNBLFdBQUE7QUFBQSxFQUNBO0FBQ0YsQ0FBRyxFQUFBO0FBQ0QsRUFBQSxNQUFNLEdBQ0osR0FBQSxPQUFPLE1BQU8sQ0FBQSxLQUFBLEVBQU8sUUFBUSxTQUN6QixHQUFBLE1BQUEsQ0FBTyxLQUFPLEVBQUEsR0FBQSxHQUNkLFFBQVEsU0FBVSxDQUFBLFVBQVUsQ0FDNUIsSUFBQSxTQUFBLEtBQWMsbUJBQ2IsT0FBTyxPQUFBLENBQVEsR0FBSSxDQUFBLFVBQVUsTUFBTSxRQUNoQyxHQUFBLE9BQUEsQ0FBUSxHQUFJLENBQUEsVUFBVSxNQUFNLE1BQzVCLElBQUEsT0FBQSxDQUFRLEdBQUksQ0FBQSxVQUFVLE1BQU0sR0FDNUIsR0FBQSxPQUFBLENBQVEsT0FBUSxDQUFBLEdBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBO0FBQ3pDLEVBQUEsTUFBTSxNQUNKLEdBQUEsU0FBQSxLQUFjLGNBQWtCLElBQUEsR0FBQSxHQUM1QixXQUFZLENBQUEsS0FBQSxDQUFNLE1BQ2xCLEdBQUEsU0FBQSxLQUFjLGNBQ2QsR0FBQSxXQUFBLENBQVksS0FBTSxDQUFBLE1BQUEsR0FDbEIs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
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { Plugin } from "vite";
|
|
2
|
+
import type { ConfigEnv } from "vite";
|
|
3
|
+
/**
|
|
4
|
+
* Reconstruct ConfigEnv from process.argv and environment variables
|
|
5
|
+
* This allows us to determine the config environment before the config hook runs
|
|
6
|
+
*/
|
|
7
|
+
export declare const createConfigEnv: () => ConfigEnv;
|
|
2
8
|
/**
|
|
3
9
|
* This plugin can be used to set up the environment defined in the env file
|
|
4
10
|
* and the `define` clause in the vite config to be directly assigned to the process.env,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/env/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/env/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,SA0BlC,CAAC;AA4CF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAqElC"}
|
|
@@ -1,97 +1,115 @@
|
|
|
1
|
-
import { resolveConfigDefine, resolveEnv } from "../config/resolveEnv.js";
|
|
2
|
-
import { DEFAULT_CONFIG } from "../config/defaults.js";
|
|
3
|
-
import { userProjectRoot } from "../root.js";
|
|
4
|
-
const isBuild = process.argv[process.argv.length - 1] === "build";
|
|
5
|
-
const isPreview = process.argv.findIndex((arg) => arg === "preview") !== -1;
|
|
6
|
-
// Set up environment variables from .env files as early as possible
|
|
7
|
-
// This is to ensure that the env variables are available even in the config file,
|
|
8
|
-
// and you can use process.env to configure the plugin.
|
|
9
|
-
const cleanupInitialUserConfigEnv = resolveEnv(process.env["NODE_ENV"] || (isBuild || isPreview ? "production" : "development"), userProjectRoot, DEFAULT_CONFIG.ENV_PREFIX);
|
|
10
1
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* You can also set these variable in the package.json script like `VITE_PUBLIC_ORIGIN=https://example.com npm run build`
|
|
16
|
-
* The default ones like `VITE_DEV` etc, are set to the default values if not defined in the env file or the `define` clause.
|
|
17
|
-
*
|
|
18
|
-
* If they do end up in the build, the define clause replaces process.env.VITE_BASE_URL etc, same like it
|
|
19
|
-
* replaces `import.meta.env.BASE_URL`.
|
|
20
|
-
*
|
|
21
|
-
* While using node.process.env is dangerous as it may expose valuable information to the client, the define clause
|
|
22
|
-
* replaces them in the build so it's safe as long as you stick to simple stuff like const baseUrl = process.env.VITE_BASE_URL
|
|
23
|
-
* would be the same as writing const baseUrl = import.meta.env.BASE_URL. But this plugin doesn't enable that feature nor does
|
|
24
|
-
* it return any config, it just sets the process.env variables at a early momemt and deletes them after the build unless they were
|
|
25
|
-
* already set in the environment.
|
|
26
|
-
*
|
|
27
|
-
* This plugin will not override process.env variable that were previously set, and will remove any values that it did set after the bundle closes.
|
|
28
|
-
* ```example
|
|
29
|
-
* const config = {
|
|
30
|
-
* moduleBase: 'src',
|
|
31
|
-
* // loaded from either .env file or existing process.env, based on the NODE_ENV
|
|
32
|
-
* publicOrigin: process.env.VITE_PUBLIC_ORIGIN,
|
|
33
|
-
* }
|
|
34
|
-
* ```
|
|
35
|
-
* @returns
|
|
2
|
+
* vite-plugin-react-server
|
|
3
|
+
* Copyright (c) Nico Brinkkemper
|
|
4
|
+
* MIT License
|
|
36
5
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
6
|
+
import { resolveEnv, resolveConfigDefine } from '../config/resolveEnv.js';
|
|
7
|
+
import { DEFAULT_CONFIG } from '../config/defaults.js';
|
|
8
|
+
import { userProjectRoot } from '../root.js';
|
|
9
|
+
import { getNodeEnv } from '../getNodeEnv.js';
|
|
10
|
+
|
|
11
|
+
const createConfigEnv = () => {
|
|
12
|
+
const argv = process.argv;
|
|
13
|
+
let command = "serve";
|
|
14
|
+
if (argv.includes("build")) {
|
|
15
|
+
command = "build";
|
|
16
|
+
} else if (argv.includes("dev") || argv.includes("serve") || argv.includes("preview")) {
|
|
17
|
+
command = "serve";
|
|
18
|
+
}
|
|
19
|
+
let mode = getNodeEnv();
|
|
20
|
+
const modeIndex = argv.findIndex((arg) => arg === "--mode" || arg === "-m");
|
|
21
|
+
if (modeIndex !== -1 && argv[modeIndex + 1]) {
|
|
22
|
+
mode = argv[modeIndex + 1];
|
|
23
|
+
}
|
|
24
|
+
const isSsrBuild = argv.includes("--ssr");
|
|
25
|
+
return {
|
|
26
|
+
command,
|
|
27
|
+
mode,
|
|
28
|
+
isSsrBuild
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
function getArgValue(argName) {
|
|
32
|
+
const equalsArg = process.argv.find((arg) => arg.startsWith(`--${argName}=`));
|
|
33
|
+
if (equalsArg) {
|
|
34
|
+
return equalsArg.substring(`--${argName}=`.length);
|
|
35
|
+
}
|
|
36
|
+
const argIndex = process.argv.findIndex((arg) => arg === `--${argName}`);
|
|
37
|
+
if (argIndex !== -1 && argIndex + 1 < process.argv.length) {
|
|
38
|
+
const value = process.argv[argIndex + 1];
|
|
39
|
+
if (value && !value.startsWith("--")) {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
const isBuild = process.argv.includes("build");
|
|
46
|
+
const isPreview = process.argv.includes("preview");
|
|
47
|
+
const detectedMode = getArgValue("mode");
|
|
48
|
+
const cleanupInitialUserConfigEnv = resolveEnv(
|
|
49
|
+
detectedMode || process.env["NODE_ENV"] || (isBuild || isPreview ? "production" : "development"),
|
|
50
|
+
userProjectRoot,
|
|
51
|
+
DEFAULT_CONFIG.ENV_PREFIX
|
|
52
|
+
);
|
|
53
|
+
function envPlugin() {
|
|
54
|
+
let cleanupEnv;
|
|
55
|
+
let vitePrefix = DEFAULT_CONFIG.ENV_PREFIX;
|
|
56
|
+
return {
|
|
57
|
+
name: "vite-plugin-react-server:env",
|
|
58
|
+
enforce: "pre",
|
|
59
|
+
config(config, { mode }) {
|
|
60
|
+
if (config.envPrefix) {
|
|
61
|
+
if (typeof config.envPrefix === "string") {
|
|
62
|
+
vitePrefix = config.envPrefix;
|
|
63
|
+
} else if (Array.isArray(config.envPrefix)) {
|
|
64
|
+
vitePrefix = config.envPrefix[0];
|
|
95
65
|
}
|
|
96
|
-
|
|
66
|
+
}
|
|
67
|
+
const invalidEnv = mode !== void 0 && mode !== process.env[`${vitePrefix}MODE`] || config.root !== void 0 && config.root !== userProjectRoot;
|
|
68
|
+
if (invalidEnv) {
|
|
69
|
+
cleanupInitialUserConfigEnv();
|
|
70
|
+
}
|
|
71
|
+
const cleanupUserConfigEnv = invalidEnv ? resolveEnv(
|
|
72
|
+
mode || process.env[`${vitePrefix}MODE`] || "production",
|
|
73
|
+
config.root ?? userProjectRoot,
|
|
74
|
+
vitePrefix
|
|
75
|
+
) : cleanupInitialUserConfigEnv;
|
|
76
|
+
const cleanupUserConfig = resolveConfigDefine(config);
|
|
77
|
+
cleanupEnv = () => {
|
|
78
|
+
cleanupUserConfig();
|
|
79
|
+
cleanupUserConfigEnv();
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
closeBundle() {
|
|
83
|
+
cleanupEnv?.();
|
|
84
|
+
},
|
|
85
|
+
configureServer(server) {
|
|
86
|
+
const envPrefix = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
|
|
87
|
+
const publicOrigin = process.env[`${envPrefix}PUBLIC_ORIGIN`] ?? "";
|
|
88
|
+
const desiredPort = server.config.server.port;
|
|
89
|
+
let shouldUpdatePublicOrigin = false;
|
|
90
|
+
if (publicOrigin && publicOrigin.includes(`:${desiredPort}`)) {
|
|
91
|
+
shouldUpdatePublicOrigin = true;
|
|
92
|
+
}
|
|
93
|
+
if (shouldUpdatePublicOrigin) {
|
|
94
|
+
server.httpServer?.once("listening", () => {
|
|
95
|
+
const address = server.httpServer?.address();
|
|
96
|
+
if (address && typeof address !== "string") {
|
|
97
|
+
const port = address.port;
|
|
98
|
+
if (port !== desiredPort) {
|
|
99
|
+
const envPrefix2 = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX;
|
|
100
|
+
const newOrigin = publicOrigin.replace(
|
|
101
|
+
`:${desiredPort}`,
|
|
102
|
+
`:${port}`
|
|
103
|
+
);
|
|
104
|
+
process.env[`${envPrefix2}PUBLIC_ORIGIN`] = newOrigin;
|
|
105
|
+
console.warn("PUBLIC_ORIGIN did not match the port: " + port);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
97
112
|
}
|
|
113
|
+
|
|
114
|
+
export { createConfigEnv, envPlugin };
|
|
115
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vZW52L3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgeyByZXNvbHZlQ29uZmlnRGVmaW5lLCByZXNvbHZlRW52IH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlRW52LmpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0NPTkZJRyB9IGZyb20gXCIuLi9jb25maWcvZGVmYXVsdHMuanNcIjtcbmltcG9ydCB7IHVzZXJQcm9qZWN0Um9vdCB9IGZyb20gXCIuLi9yb290LmpzXCI7XG5pbXBvcnQgeyBnZXROb2RlRW52IH0gZnJvbSBcIi4uL2dldE5vZGVFbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52IH0gZnJvbSBcInZpdGVcIjtcblxuLyoqXG4gKiBSZWNvbnN0cnVjdCBDb25maWdFbnYgZnJvbSBwcm9jZXNzLmFyZ3YgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICogVGhpcyBhbGxvd3MgdXMgdG8gZGV0ZXJtaW5lIHRoZSBjb25maWcgZW52aXJvbm1lbnQgYmVmb3JlIHRoZSBjb25maWcgaG9vayBydW5zXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDb25maWdFbnYgPSAoKTogQ29uZmlnRW52ID0+IHtcbiAgY29uc3QgYXJndiA9IHByb2Nlc3MuYXJndjtcbiAgXG4gIC8vIERldGVjdCBjb21tYW5kIGZyb20gYXJndlxuICBsZXQgY29tbWFuZDogJ2J1aWxkJyB8ICdzZXJ2ZScgPSAnc2VydmUnO1xuICBpZiAoYXJndi5pbmNsdWRlcygnYnVpbGQnKSkge1xuICAgIGNvbW1hbmQgPSAnYnVpbGQnO1xuICB9IGVsc2UgaWYgKGFyZ3YuaW5jbHVkZXMoJ2RldicpIHx8IGFyZ3YuaW5jbHVkZXMoJ3NlcnZlJykgfHwgYXJndi5pbmNsdWRlcygncHJldmlldycpKSB7XG4gICAgY29tbWFuZCA9ICdzZXJ2ZSc7XG4gIH1cbiAgXG4gIC8vIERldGVjdCBtb2RlIGZyb20gYXJndiBvciBlbnZpcm9ubWVudFxuICBsZXQgbW9kZTogc3RyaW5nID0gZ2V0Tm9kZUVudigpO1xuICBjb25zdCBtb2RlSW5kZXggPSBhcmd2LmZpbmRJbmRleChhcmcgPT4gYXJnID09PSAnLS1tb2RlJyB8fCBhcmcgPT09ICctbScpO1xuICBpZiAobW9kZUluZGV4ICE9PSAtMSAmJiBhcmd2W21vZGVJbmRleCArIDFdKSB7XG4gICAgbW9kZSA9IGFyZ3ZbbW9kZUluZGV4ICsgMV07XG4gIH1cbiAgXG4gIC8vIERldGVjdCBTU1IgYnVpbGRcbiAgY29uc3QgaXNTc3JCdWlsZCA9IGFyZ3YuaW5jbHVkZXMoJy0tc3NyJyk7XG4gIFxuICByZXR1cm4ge1xuICAgIGNvbW1hbmQsXG4gICAgbW9kZSxcbiAgICBpc1NzckJ1aWxkXG4gIH07XG59O1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBwYXJzZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGluIGJvdGggZm9ybWF0czpcbiAqIC0tYXJnIHZhbHVlIChzcGFjZS1zZXBhcmF0ZWQpIGFuZCAtLWFyZz12YWx1ZSAoZXF1YWxzLXNlcGFyYXRlZClcbiAqIEhhbmRsZXMgYW55IElGUyBjaGFyYWN0ZXJzIGFuZCBlZGdlIGNhc2VzXG4gKi9cbmZ1bmN0aW9uIGdldEFyZ1ZhbHVlKGFyZ05hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIENoZWNrIGZvciAtLWFyZz12YWx1ZSBmb3JtYXQgZmlyc3QgKGhhbmRsZXMgYW55IGNoYXJhY3RlciBhZnRlciA9KVxuICBjb25zdCBlcXVhbHNBcmcgPSBwcm9jZXNzLmFyZ3YuZmluZCgoYXJnKSA9PiBhcmcuc3RhcnRzV2l0aChgLS0ke2FyZ05hbWV9PWApKTtcbiAgaWYgKGVxdWFsc0FyZykge1xuICAgIHJldHVybiBlcXVhbHNBcmcuc3Vic3RyaW5nKGAtLSR7YXJnTmFtZX09YC5sZW5ndGgpO1xuICB9XG4gIFxuICAvLyBDaGVjayBmb3IgLS1hcmcgdmFsdWUgZm9ybWF0IChoYW5kbGVzIGFueSBJRlMgY2hhcmFjdGVycylcbiAgY29uc3QgYXJnSW5kZXggPSBwcm9jZXNzLmFyZ3YuZmluZEluZGV4KChhcmcpID0+IGFyZyA9PT0gYC0tJHthcmdOYW1lfWApO1xuICBpZiAoYXJnSW5kZXggIT09IC0xICYmIGFyZ0luZGV4ICsgMSA8IHByb2Nlc3MuYXJndi5sZW5ndGgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuYXJndlthcmdJbmRleCArIDFdO1xuICAgIC8vIE9ubHkgcmV0dXJuIGlmIHRoZSBuZXh0IGFyZ3VtZW50IGRvZXNuJ3Qgc3RhcnQgd2l0aCAtLSAoaXNuJ3QgYW5vdGhlciBmbGFnKVxuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5jb25zdCBpc0J1aWxkID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiYnVpbGRcIik7XG5jb25zdCBpc1ByZXZpZXcgPSBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoXCJwcmV2aWV3XCIpO1xuXG5cbi8vIFNldCB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSAuZW52IGZpbGVzIGFzIGVhcmx5IGFzIHBvc3NpYmxlXG4vLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBlbnYgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgZXZlbiBpbiB0aGUgY29uZmlnIGZpbGUsXG4vLyBhbmQgeW91IGNhbiB1c2UgcHJvY2Vzcy5lbnYgdG8gY29uZmlndXJlIHRoZSBwbHVnaW4uXG5cbi8vIERldGVjdCBtb2RlIGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuY29uc3QgZGV0ZWN0ZWRNb2RlID0gZ2V0QXJnVmFsdWUoXCJtb2RlXCIpO1xuXG5jb25zdCBjbGVhbnVwSW5pdGlhbFVzZXJDb25maWdFbnYgPSByZXNvbHZlRW52KFxuICBkZXRlY3RlZE1vZGUgfHwgcHJvY2Vzcy5lbnZbXCJOT0RFX0VOVlwiXSB8fCAoaXNCdWlsZCB8fCBpc1ByZXZpZXcgPyBcInByb2R1Y3Rpb25cIiA6IFwiZGV2ZWxvcG1lbnRcIiksXG4gIHVzZXJQcm9qZWN0Um9vdCxcbiAgREVGQVVMVF9DT05GSUcuRU5WX1BSRUZJWFxuKTtcblxuLyoqXG4gKiBUaGlzIHBsdWdpbiBjYW4gYmUgdXNlZCB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50IGRlZmluZWQgaW4gdGhlIGVudiBmaWxlXG4gKiBhbmQgdGhlIGBkZWZpbmVgIGNsYXVzZSBpbiB0aGUgdml0ZSBjb25maWcgdG8gYmUgZGlyZWN0bHkgYXNzaWduZWQgdG8gdGhlIHByb2Nlc3MuZW52LFxuICogbWFraW5nIGl0IGF2YWlsYWJsZSBpbiB3b3JrZXJzLCBzZXJ2ZXIgY29tcG9uZW50cyBhbmQgcGx1Z2luIGhvb2tzIGxpa2UgY29uZmlnLCBjb25maWd1cmVTZXJ2ZXIsIGV0Yy5cbiAqXG4gKiBZb3UgY2FuIGFsc28gc2V0IHRoZXNlIHZhcmlhYmxlIGluIHRoZSBwYWNrYWdlLmpzb24gc2NyaXB0IGxpa2UgYFZJVEVfUFVCTElDX09SSUdJTj1odHRwczovL2V4YW1wbGUuY29tIG5wbSBydW4gYnVpbGRgXG4gKiBUaGUgZGVmYXVsdCBvbmVzIGxpa2UgYFZJVEVfREVWYCBldGMsIGFyZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWVzIGlmIG5vdCBkZWZpbmVkIGluIHRoZSBlbnYgZmlsZSBvciB0aGUgYGRlZmluZWAgY2xhdXNlLlxuICpcbiAqIElmIHRoZXkgZG8gZW5kIHVwIGluIHRoZSBidWlsZCwgdGhlIGRlZmluZSBjbGF1c2UgcmVwbGFjZXMgcHJvY2Vzcy5lbnYuVklURV9CQVNFX1VSTCBldGMsIHNhbWUgbGlrZSBpdFxuICogcmVwbGFjZXMgYGltcG9ydC5tZXRhLmVudi5CQVNFX1VSTGAuXG4gKlxuICogV2hpbGUgdXNpbmcgbm9kZS5wcm9jZXNzLmVudiBpcyBkYW5nZXJvdXMgYXMgaXQgbWF5IGV4cG9zZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiB0byB0aGUgY2xpZW50LCB0aGUgZGVmaW5lIGNsYXVzZVxuICogcmVwbGFjZXMgdGhlbSBpbiB0aGUgYnVpbGQgc28gaXQncyBzYWZlIGFzIGxvbmcgYXMgeW91IHN0aWNrIHRvIHNpbXBsZSBzdHVmZiBsaWtlIGNvbnN0IGJhc2VVcmwgPSBwcm9jZXNzLmVudi5WSVRFX0JBU0VfVVJMXG4gKiB3b3VsZCBiZSB0aGUgc2FtZSBhcyB3cml0aW5nIGNvbnN0IGJhc2VVcmwgPSBpbXBvcnQubWV0YS5lbnYuQkFTRV9VUkwuIEJ1dCB0aGlzIHBsdWdpbiBkb2Vzbid0IGVuYWJsZSB0aGF0IGZlYXR1cmUgbm9yIGRvZXNcbiAqIGl0IHJldHVybiBhbnkgY29uZmlnLCBpdCBqdXN0IHNldHMgdGhlIHByb2Nlc3MuZW52IHZhcmlhYmxlcyBhdCBhIGVhcmx5IG1vbWVtdCBhbmQgZGVsZXRlcyB0aGVtIGFmdGVyIHRoZSBidWlsZCB1bmxlc3MgdGhleSB3ZXJlXG4gKiBhbHJlYWR5IHNldCBpbiB0aGUgZW52aXJvbm1lbnQuXG4gKiBcbiAqIFRoaXMgcGx1Z2luIHdpbGwgbm90IG92ZXJyaWRlIHByb2Nlc3MuZW52IHZhcmlhYmxlIHRoYXQgd2VyZSBwcmV2aW91c2x5IHNldCwgYW5kIHdpbGwgcmVtb3ZlIGFueSB2YWx1ZXMgdGhhdCBpdCBkaWQgc2V0IGFmdGVyIHRoZSBidW5kbGUgY2xvc2VzLlxuICogYGBgZXhhbXBsZVxuICogY29uc3QgY29uZmlnID0ge1xuICogICAgbW9kdWxlQmFzZTogJ3NyYycsXG4gKiAgICAvLyBsb2FkZWQgZnJvbSBlaXRoZXIgLmVudiBmaWxlIG9yIGV4aXN0aW5nIHByb2Nlc3MuZW52LCBiYXNlZCBvbiB0aGUgTk9ERV9FTlZcbiAqICAgIHB1YmxpY09yaWdpbjogcHJvY2Vzcy5lbnYuVklURV9QVUJMSUNfT1JJR0lOLFxuICogfVxuICogYGBgXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZW52UGx1Z2luKCk6IFBsdWdpbiB7XG4gIGxldCBjbGVhbnVwRW52OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIGxldCB2aXRlUHJlZml4ID0gREVGQVVMVF9DT05GSUcuRU5WX1BSRUZJWCBhcyBzdHJpbmc7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJ2aXRlLXBsdWdpbi1yZWFjdC1zZXJ2ZXI6ZW52XCIsXG4gICAgZW5mb3JjZTogXCJwcmVcIixcbiAgICBjb25maWcoY29uZmlnLCB7IG1vZGUgfSkge1xuICAgICAgaWYoY29uZmlnLmVudlByZWZpeCkge1xuICAgICAgICBpZih0eXBlb2YgY29uZmlnLmVudlByZWZpeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHZpdGVQcmVmaXggPSBjb25maWcuZW52UHJlZml4O1xuICAgICAgICB9IGVsc2UgaWYoQXJyYXkuaXNBcnJheShjb25maWcuZW52UHJlZml4KSkge1xuICAgICAgICAgIHZpdGVQcmVmaXggPSBjb25maWcuZW52UHJlZml4WzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBpbnZhbGlkRW52ID1cbiAgICAgICAgKG1vZGUgIT09IHVuZGVmaW5lZCAmJiBtb2RlICE9PSBwcm9jZXNzLmVudltgJHt2aXRlUHJlZml4fU1PREVgXSkgfHxcbiAgICAgICAgKGNvbmZpZy5yb290ICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLnJvb3QgIT09IHVzZXJQcm9qZWN0Um9vdCk7XG4gICAgICBpZiAoaW52YWxpZEVudikge1xuICAgICAgICBjbGVhbnVwSW5pdGlhbFVzZXJDb25maWdFbnYoKTtcbiAgICAgIH1cbiAgICAgIC8vIENsZWFuIHVwIGFueSBwcmV2aW91cyBlbnYgc2V0dXBcbiAgICAgIGNvbnN0IGNsZWFudXBVc2VyQ29uZmlnRW52ID0gaW52YWxpZEVudlxuICAgICAgICA/IHJlc29sdmVFbnYoXG4gICAgICAgICAgICBtb2RlIHx8IHByb2Nlc3MuZW52W2Ake3ZpdGVQcmVmaXh9TU9ERWBdIHx8IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgICAgY29uZmlnLnJvb3QgPz8gdXNlclByb2plY3RSb290LFxuICAgICAgICAgICAgdml0ZVByZWZpeFxuICAgICAgICAgIClcbiAgICAgICAgOiBjbGVhbnVwSW5pdGlhbFVzZXJDb25maWdFbnY7XG4gICAgICBjb25zdCBjbGVhbnVwVXNlckNvbmZpZyA9IHJlc29sdmVDb25maWdEZWZpbmUoY29uZmlnKTtcblxuICAgICAgLy8gQ29tYmluZSBjbGVhbnVwIGZ1bmN0aW9uc1xuICAgICAgY2xlYW51cEVudiA9ICgpID0+IHtcbiAgICAgICAgY2xlYW51cFVzZXJDb25maWcoKTtcbiAgICAgICAgY2xlYW51cFVzZXJDb25maWdFbnYoKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBjbG9zZUJ1bmRsZSgpIHtcbiAgICAgIC8vIENsZWFuIHVwIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGVuIHRoZSBidW5kbGUgaXMgY2xvc2VkXG4gICAgICBjbGVhbnVwRW52Py4oKTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXIpIHtcbiAgICAgIGNvbnN0IGVudlByZWZpeCA9IEFycmF5LmlzQXJyYXkoc2VydmVyLmNvbmZpZy5lbnZQcmVmaXgpID8gc2VydmVyLmNvbmZpZy5lbnZQcmVmaXhbMF0gOiBzZXJ2ZXIuY29uZmlnLmVudlByZWZpeCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYO1xuICAgICAgY29uc3QgcHVibGljT3JpZ2luID0gcHJvY2Vzcy5lbnZbYCR7ZW52UHJlZml4fVBVQkxJQ19PUklHSU5gXSA/PyBcIlwiXG5cbiAgICAgIGNvbnN0IGRlc2lyZWRQb3J0ID0gc2VydmVyLmNvbmZpZy5zZXJ2ZXIucG9ydDtcbiAgICAgIGxldCBzaG91bGRVcGRhdGVQdWJsaWNPcmlnaW4gPSBmYWxzZTtcbiAgICAgIGlmIChwdWJsaWNPcmlnaW4gJiYgcHVibGljT3JpZ2luLmluY2x1ZGVzKGA6JHtkZXNpcmVkUG9ydH1gKSkge1xuICAgICAgICBzaG91bGRVcGRhdGVQdWJsaWNPcmlnaW4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuIGZvciB3aGVuIHRoZSBzZXJ2ZXIgYWN0dWFsbHkgc3RhcnRzXG4gICAgICBpZiAoc2hvdWxkVXBkYXRlUHVibGljT3JpZ2luKSB7XG4gICAgICAgIHNlcnZlci5odHRwU2VydmVyPy5vbmNlKFwibGlzdGVuaW5nXCIsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzID0gc2VydmVyLmh0dHBTZXJ2ZXI/LmFkZHJlc3MoKTtcbiAgICAgICAgICBpZiAoYWRkcmVzcyAmJiB0eXBlb2YgYWRkcmVzcyAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgcG9ydCA9IGFkZHJlc3MucG9ydDtcbiAgICAgICAgICAgIGlmIChwb3J0ICE9PSBkZXNpcmVkUG9ydCkge1xuICAgICAgICAgICAgICBjb25zdCBlbnZQcmVmaXggPSBBcnJheS5pc0FycmF5KHNlcnZlci5jb25maWcuZW52UHJlZml4KSA/IHNlcnZlci5jb25maWcuZW52UHJlZml4WzBdIDogc2VydmVyLmNvbmZpZy5lbnZQcmVmaXggPz8gREVGQVVMVF9DT05GSUcuRU5WX1BSRUZJWDtcbiAgICAgICAgICAgICAgY29uc3QgbmV3T3JpZ2luID0gcHVibGljT3JpZ2luLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYDoke2Rlc2lyZWRQb3J0fWAsXG4gICAgICAgICAgICAgICAgYDoke3BvcnR9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBwcm9jZXNzLmVudltgJHtlbnZQcmVmaXh9UFVCTElDX09SSUdJTmBdID0gbmV3T3JpZ2luXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlBVQkxJQ19PUklHSU4gZGlkIG5vdCBtYXRjaCB0aGUgcG9ydDogXCIgKyBwb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1c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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DirectiveMatch } from "../loader/directives/types.js";
|
|
2
|
+
export declare const DIRECTIVE_ERRORS: {
|
|
3
|
+
readonly FILE_LEVEL: {
|
|
4
|
+
readonly NOT_AT_TOP: "'use {directive}' directive must be at the top of the file, before any other statements.";
|
|
5
|
+
readonly MIXED_DIRECTIVES: "Cannot use both 'use client' and 'use server' directives in the same file";
|
|
6
|
+
};
|
|
7
|
+
readonly FUNCTION_LEVEL: {
|
|
8
|
+
readonly CLIENT_NOT_ALLOWED: "Directive 'use client' is not allowed at function level. Only 'use server' is allowed at the start of async functions.";
|
|
9
|
+
readonly SERVER_NOT_ASYNC: "'use server' directive is only allowed at the start of async functions";
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare function isFileLevelWarning(warning: DirectiveMatch): boolean;
|
|
13
|
+
//# sourceMappingURL=directiveError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directiveError.d.ts","sourceRoot":"","sources":["../../../plugin/error/directiveError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpE,eAAO,MAAM,gBAAgB;;;;;;;;;CAanB,CAAC;AAGX,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CASnE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Error types for better maintainability
|
|
2
|
+
export const DIRECTIVE_ERRORS = {
|
|
3
|
+
FILE_LEVEL: {
|
|
4
|
+
NOT_AT_TOP: "'use {directive}' directive must be at the top of the file, before any other statements.",
|
|
5
|
+
MIXED_DIRECTIVES: "Cannot use both 'use client' and 'use server' directives in the same file",
|
|
6
|
+
},
|
|
7
|
+
FUNCTION_LEVEL: {
|
|
8
|
+
CLIENT_NOT_ALLOWED: "Directive 'use client' is not allowed at function level. Only 'use server' is allowed at the start of async functions.",
|
|
9
|
+
SERVER_NOT_ASYNC: "'use server' directive is only allowed at the start of async functions",
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
// Helper to check if a warning is about file-level issues
|
|
13
|
+
export function isFileLevelWarning(warning) {
|
|
14
|
+
if (!warning.message)
|
|
15
|
+
return false;
|
|
16
|
+
return (warning.message ===
|
|
17
|
+
DIRECTIVE_ERRORS.FILE_LEVEL.NOT_AT_TOP.replace("{directive}", "client") ||
|
|
18
|
+
warning.message ===
|
|
19
|
+
DIRECTIVE_ERRORS.FILE_LEVEL.NOT_AT_TOP.replace("{directive}", "server") ||
|
|
20
|
+
warning.message === DIRECTIVE_ERRORS.FILE_LEVEL.MIXED_DIRECTIVES);
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a new error with context from any input.
|
|
3
|
+
* Always creates a fresh stack trace and sets the original as the cause.
|
|
4
|
+
* This is the preferred way to wrap errors with context.
|
|
5
|
+
*/
|
|
6
|
+
export declare function enhanceError(originalError: Error | string | {
|
|
7
|
+
message: string;
|
|
8
|
+
}, captureStackTraceFunction: Function, context?: string): Error;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new error with context and captured stack trace
|
|
11
|
+
* Useful for creating contextual errors at specific points in the code
|
|
12
|
+
*/
|
|
13
|
+
export declare function createContextualError(message: string, context?: string, captureStackTraceFunction?: Function): Error;
|
|
14
|
+
//# sourceMappingURL=enhanceError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanceError.d.ts","sourceRoot":"","sources":["../../../plugin/error/enhanceError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,EACjD,yBAAyB,EAAE,QAAQ,EACnC,OAAO,GAAE,MAAuC,GAC/C,KAAK,CASP;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAW,EACpB,yBAAyB,CAAC,EAAE,QAAQ,GACnC,KAAK,CAYP"}
|