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
|
@@ -3,44 +3,49 @@
|
|
|
3
3
|
* Copyright (c) Nico Brinkkemper
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
|
-
import { DEFAULT_CONFIG } from './defaults.js';
|
|
6
|
+
import { DEFAULT_CONFIG, BASE_PATTERNS, DEFAULT_LOADER_CONFIG } from './defaults.js';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { pluginRoot } from '../root.js';
|
|
9
|
-
import { CssCollector } from '../components/css-collector.js';
|
|
10
9
|
import { createInputNormalizer } from '../helpers/inputNormalizer.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
10
|
+
import { getNodeEnv } from '../getNodeEnv.js';
|
|
11
|
+
import { resolveDirectiveMatcher } from './resolveDirectiveMatcher.js';
|
|
12
|
+
import { resolveAllowedDirectives } from './resolveAllowedDirectives.js';
|
|
13
|
+
import { resolveRegExp } from './resolveRegExp.js';
|
|
14
|
+
import { parse } from '../loader/parse.js';
|
|
13
15
|
|
|
14
16
|
const handleSearchQuery = (path) => {
|
|
15
17
|
const searchQuery = path.split("?")[1];
|
|
16
18
|
if (!searchQuery) return path;
|
|
17
19
|
const folder = path.split("/").slice(0, -1).join("/");
|
|
18
20
|
const filename = path.split("/").pop();
|
|
19
|
-
|
|
21
|
+
const fileNameExtIndex = filename?.lastIndexOf(".");
|
|
22
|
+
const fileNameWithoutExt = filename?.slice(0, fileNameExtIndex);
|
|
23
|
+
const extension = filename?.slice(fileNameExtIndex);
|
|
24
|
+
return `${folder}/${fileNameWithoutExt}.${searchQuery}.${extension}`;
|
|
20
25
|
};
|
|
21
|
-
const registerPath = (path,
|
|
22
|
-
if (ext && !path.endsWith(ext)) {
|
|
26
|
+
const registerPath = (path, pattern, ext) => {
|
|
27
|
+
if (pattern && !pattern.test(path) || ext && !path.endsWith(ext)) {
|
|
23
28
|
return path + ext;
|
|
24
29
|
}
|
|
25
30
|
return path;
|
|
26
31
|
};
|
|
27
|
-
const
|
|
32
|
+
const stashedUserOptions = {};
|
|
33
|
+
const resolveOptions = function _resolveOptions(options) {
|
|
34
|
+
const envId = process.env.NODE_ENV ?? "development";
|
|
35
|
+
if (stashedUserOptions[envId]) {
|
|
36
|
+
return {
|
|
37
|
+
type: "success",
|
|
38
|
+
userOptions: stashedUserOptions[envId]
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const loaderMode = options.loader?.mode ?? getNodeEnv();
|
|
28
42
|
const moduleBase = typeof options.moduleBase === "string" ? options.moduleBase : DEFAULT_CONFIG.MODULE_BASE;
|
|
29
43
|
const projectRoot = options.projectRoot ?? process.cwd();
|
|
30
44
|
const preserveModulesRoot = options.build?.preserveModulesRoot ?? DEFAULT_CONFIG.BUILD.preserveModulesRoot;
|
|
31
45
|
const isProd = process.env["NODE_ENV"] === "production" || process.env["VITE_PROD"] === "true" || process.env["VITE_PROD"] === "1";
|
|
32
46
|
const prodModuleBase = isProd && preserveModulesRoot ? moduleBase : void 0;
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
propsExportName = DEFAULT_CONFIG.PROPS_EXPORT_NAME
|
|
36
|
-
} = options;
|
|
37
|
-
const pages = typeof options.build?.pages === "function" ? options.build.pages : Array.isArray(options.build?.pages) ? options.build.pages : DEFAULT_CONFIG.BUILD.pages;
|
|
38
|
-
let client = options.build?.client ?? DEFAULT_CONFIG.BUILD.client;
|
|
39
|
-
let server = options.build?.server ?? DEFAULT_CONFIG.BUILD.server;
|
|
40
|
-
const api = options.build?.api ?? DEFAULT_CONFIG.BUILD.api;
|
|
41
|
-
const staticBuild = options.build?.static ?? DEFAULT_CONFIG.BUILD.static;
|
|
42
|
-
const outDir = options.build?.outDir ?? DEFAULT_CONFIG.BUILD.outDir;
|
|
43
|
-
const assetsDir = options.build?.assetsDir ?? `${DEFAULT_CONFIG.CLIENT_ASSETS_DIR}`;
|
|
47
|
+
const client = typeof options.build?.client === "string" ? options.build.client : DEFAULT_CONFIG.BUILD.client;
|
|
48
|
+
const outDir = typeof options.build?.outDir === "string" ? options.build.outDir : DEFAULT_CONFIG.BUILD.outDir;
|
|
44
49
|
const moduleBasePath = typeof options.moduleBasePath === "string" ? options.moduleBasePath : process.env.VITE_BASE_URL ?? DEFAULT_CONFIG.MODULE_BASE_PATH;
|
|
45
50
|
const moduleBaseURL = typeof options.moduleBaseURL === "string" ? options.moduleBaseURL : process.env.VITE_BASE_URL ?? DEFAULT_CONFIG.MODULE_BASE_URL;
|
|
46
51
|
const moduleRootPath = typeof options.moduleRootPath === "string" ? options.moduleRootPath : join(projectRoot, outDir, client);
|
|
@@ -48,86 +53,99 @@ const resolveOptions = (options) => {
|
|
|
48
53
|
const rscWorkerPath = typeof options.rscWorkerPath === "string" ? join(projectRoot, options.rscWorkerPath) : join(pluginRoot, DEFAULT_CONFIG.RSC_WORKER_PATH);
|
|
49
54
|
const htmlWorkerPath = typeof options.htmlWorkerPath === "string" ? join(projectRoot, options.htmlWorkerPath) : join(pluginRoot, DEFAULT_CONFIG.HTML_WORKER_PATH);
|
|
50
55
|
const loaderPath = typeof options.loaderPath === "string" ? join(projectRoot, options.loaderPath) : join(pluginRoot, DEFAULT_CONFIG.LOADER_PATH);
|
|
56
|
+
const preserveDirectives = typeof options.build?.preserveDirectives === "boolean" ? options.build.preserveDirectives : DEFAULT_CONFIG.BUILD.preserveDirectives;
|
|
57
|
+
const jsExtension = typeof options.build?.jsExtension === "string" ? options.build.jsExtension : DEFAULT_CONFIG.BUILD.jsExtension;
|
|
58
|
+
const cssExtension = typeof options.build?.cssExtension === "string" ? options.build.cssExtension : DEFAULT_CONFIG.BUILD.cssExtension;
|
|
59
|
+
const cssModuleExtension = typeof options.build?.cssModuleExtension === "string" ? options.build.cssModuleExtension : DEFAULT_CONFIG.BUILD.cssModuleExtension;
|
|
60
|
+
const htmlExtension = typeof options.build?.htmlExtension === "string" ? options.build.htmlExtension : DEFAULT_CONFIG.BUILD.htmlExtension;
|
|
61
|
+
const jsonExtension = typeof options.build?.jsonExtension === "string" ? options.build.jsonExtension : DEFAULT_CONFIG.BUILD.jsonExtension;
|
|
62
|
+
const rscExtension = typeof options.build?.rscExtension === "string" ? options.build.rscExtension : DEFAULT_CONFIG.BUILD.rscExtension;
|
|
63
|
+
const rscOutputPath = typeof options.build?.rscOutputPath === "string" ? options.build.rscOutputPath : DEFAULT_CONFIG.BUILD.rscOutputPath;
|
|
64
|
+
const htmlOutputPath = typeof options.build?.htmlOutputPath === "string" ? options.build.htmlOutputPath : DEFAULT_CONFIG.BUILD.htmlOutputPath;
|
|
51
65
|
if (process.env.VITE_BASE_URL !== moduleBaseURL) {
|
|
52
66
|
process.env.VITE_BASE_URL = moduleBaseURL;
|
|
53
67
|
}
|
|
54
68
|
if (process.env.VITE_PUBLIC_ORIGIN !== publicOrigin) {
|
|
55
69
|
process.env.VITE_PUBLIC_ORIGIN = publicOrigin;
|
|
56
70
|
}
|
|
57
|
-
const
|
|
58
|
-
options.autoDiscover?.moduleExtension,
|
|
59
|
-
DEFAULT_CONFIG.AUTO_DISCOVER.moduleExtension
|
|
60
|
-
);
|
|
61
|
-
const modulePattern = resolveAutoDiscoverMatcher(
|
|
71
|
+
const modulePattern = resolveRegExp(
|
|
62
72
|
options.autoDiscover?.modulePattern,
|
|
63
|
-
|
|
73
|
+
DEFAULT_CONFIG.AUTO_DISCOVER.modulePattern
|
|
64
74
|
);
|
|
65
|
-
const jsonPattern =
|
|
75
|
+
const jsonPattern = resolveRegExp(
|
|
66
76
|
options.autoDiscover?.jsonPattern,
|
|
67
77
|
DEFAULT_CONFIG.AUTO_DISCOVER.jsonPattern
|
|
68
78
|
);
|
|
69
|
-
const cssPattern =
|
|
79
|
+
const cssPattern = resolveRegExp(
|
|
70
80
|
options.autoDiscover?.cssPattern,
|
|
71
81
|
DEFAULT_CONFIG.AUTO_DISCOVER.cssPattern
|
|
72
82
|
);
|
|
73
|
-
const
|
|
83
|
+
const htmlPattern = resolveRegExp(
|
|
74
84
|
options.autoDiscover?.htmlPattern,
|
|
75
85
|
DEFAULT_CONFIG.AUTO_DISCOVER.htmlPattern
|
|
76
86
|
);
|
|
77
|
-
const
|
|
87
|
+
const rscPattern = resolveRegExp(
|
|
78
88
|
options.autoDiscover?.rscPattern,
|
|
79
89
|
DEFAULT_CONFIG.AUTO_DISCOVER.rscPattern
|
|
80
90
|
);
|
|
81
|
-
const
|
|
82
|
-
options.autoDiscover?.
|
|
83
|
-
|
|
91
|
+
const clientPattern = resolveRegExp(
|
|
92
|
+
options.autoDiscover?.clientPattern,
|
|
93
|
+
DEFAULT_CONFIG.AUTO_DISCOVER.clientPattern
|
|
84
94
|
);
|
|
85
|
-
const
|
|
86
|
-
options.autoDiscover?.
|
|
87
|
-
|
|
95
|
+
const serverPattern = resolveRegExp(
|
|
96
|
+
options.autoDiscover?.serverPattern,
|
|
97
|
+
DEFAULT_CONFIG.AUTO_DISCOVER.serverPattern
|
|
88
98
|
);
|
|
89
|
-
const
|
|
90
|
-
options.autoDiscover?.
|
|
99
|
+
const nodePattern = resolveRegExp(
|
|
100
|
+
options.autoDiscover?.nodePattern,
|
|
91
101
|
DEFAULT_CONFIG.AUTO_DISCOVER.nodeOnly
|
|
92
102
|
);
|
|
93
|
-
const propsPattern =
|
|
103
|
+
const propsPattern = resolveRegExp(
|
|
94
104
|
options.autoDiscover?.propsPattern,
|
|
95
|
-
|
|
105
|
+
DEFAULT_CONFIG.AUTO_DISCOVER.propsPattern
|
|
96
106
|
);
|
|
97
|
-
const pagePattern =
|
|
107
|
+
const pagePattern = resolveRegExp(
|
|
98
108
|
options.autoDiscover?.pagePattern,
|
|
99
|
-
|
|
109
|
+
DEFAULT_CONFIG.AUTO_DISCOVER.pagePattern
|
|
100
110
|
);
|
|
101
|
-
const cssModulePattern =
|
|
111
|
+
const cssModulePattern = resolveRegExp(
|
|
102
112
|
options.autoDiscover?.cssModulePattern,
|
|
103
113
|
DEFAULT_CONFIG.AUTO_DISCOVER.cssModulePattern
|
|
104
114
|
);
|
|
105
|
-
const vendorPattern =
|
|
115
|
+
const vendorPattern = resolveRegExp(
|
|
106
116
|
options.autoDiscover?.vendorPattern,
|
|
107
117
|
DEFAULT_CONFIG.AUTO_DISCOVER.vendorPattern
|
|
108
118
|
);
|
|
109
|
-
const virtualPattern =
|
|
119
|
+
const virtualPattern = resolveRegExp(
|
|
110
120
|
options.autoDiscover?.virtualPattern,
|
|
111
121
|
DEFAULT_CONFIG.AUTO_DISCOVER.virtualPattern
|
|
112
122
|
);
|
|
113
|
-
const
|
|
114
|
-
options.autoDiscover?.
|
|
115
|
-
|
|
123
|
+
const dotPattern = resolveRegExp(
|
|
124
|
+
options.autoDiscover?.dotPattern,
|
|
125
|
+
BASE_PATTERNS.DOT_FILES
|
|
126
|
+
);
|
|
127
|
+
const serverDirective = resolveRegExp(
|
|
128
|
+
options.loader?.serverDirective,
|
|
129
|
+
DEFAULT_LOADER_CONFIG.serverDirective
|
|
116
130
|
);
|
|
117
|
-
const
|
|
118
|
-
options.
|
|
119
|
-
|
|
131
|
+
const clientDirective = resolveRegExp(
|
|
132
|
+
options.loader?.clientDirective,
|
|
133
|
+
DEFAULT_LOADER_CONFIG.clientDirective
|
|
120
134
|
);
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
const isServerFunctionCode = resolveDirectiveMatcher(
|
|
136
|
+
serverDirective,
|
|
137
|
+
(code, moduleId) => code.match(serverDirective) != null || typeof moduleId === "string" && serverPattern.test(moduleId) || false
|
|
138
|
+
);
|
|
139
|
+
const isClientComponentCode = resolveDirectiveMatcher(
|
|
140
|
+
clientDirective,
|
|
141
|
+
(code, moduleId) => code.match(clientDirective) != null || typeof moduleId === "string" && clientPattern.test(moduleId) || false
|
|
124
142
|
);
|
|
125
143
|
const hashOption = typeof options.build?.hash === "string" ? options.build.hash : DEFAULT_CONFIG.BUILD.hash;
|
|
126
144
|
const hashString = hashOption === "" ? "" : `-[${hashOption}]`;
|
|
127
145
|
const hash = (n, ssr) => {
|
|
128
146
|
if (!n) return "";
|
|
129
147
|
if (ssr) return n;
|
|
130
|
-
if (hashString === "" ||
|
|
148
|
+
if (hashString === "" || new RegExp(BASE_PATTERNS.EXT.NODE).test(n)) {
|
|
131
149
|
return n;
|
|
132
150
|
}
|
|
133
151
|
const extensionIndex = n.lastIndexOf(".");
|
|
@@ -139,198 +157,202 @@ const resolveOptions = (options) => {
|
|
|
139
157
|
return n + hashString;
|
|
140
158
|
}
|
|
141
159
|
};
|
|
142
|
-
const jsExtension = options.autoDiscover?.jsExtension ?? ".js";
|
|
143
|
-
const cssExtension = options.autoDiscover?.cssExtension ?? ".css";
|
|
144
|
-
const htmlExtension = options.autoDiscover?.htmlExtension ?? ".html";
|
|
145
|
-
const jsonExtension = options.autoDiscover?.jsonExtension ?? ".json";
|
|
146
|
-
const rscExtension = options.autoDiscover?.rscExtension ?? ".rsc";
|
|
147
160
|
const getOutputPath = (n) => {
|
|
148
161
|
if (!n) return "";
|
|
149
162
|
let path = handleSearchQuery(n);
|
|
150
163
|
path = path.startsWith(moduleBase + moduleBasePath) ? path.slice(moduleBase.length + moduleBasePath.length) : path;
|
|
151
|
-
if (vendorPattern(path))
|
|
152
|
-
return registerPath(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
);
|
|
157
|
-
if (
|
|
158
|
-
return registerPath(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
);
|
|
163
|
-
if (
|
|
164
|
-
return registerPath(path,
|
|
165
|
-
if (
|
|
166
|
-
return registerPath(
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
);
|
|
171
|
-
|
|
172
|
-
return registerPath(
|
|
173
|
-
path,
|
|
174
|
-
options.autoDiscover?.htmlPattern,
|
|
175
|
-
htmlExtension
|
|
176
|
-
);
|
|
177
|
-
if (jsonPattern(path))
|
|
178
|
-
return registerPath(
|
|
179
|
-
path,
|
|
180
|
-
options.autoDiscover?.jsonPattern,
|
|
181
|
-
jsonExtension
|
|
182
|
-
);
|
|
183
|
-
if (propsPattern(path))
|
|
184
|
-
return registerPath(
|
|
185
|
-
path,
|
|
186
|
-
options.autoDiscover?.propsPattern,
|
|
187
|
-
jsExtension
|
|
188
|
-
);
|
|
189
|
-
if (pagePattern(path))
|
|
190
|
-
return registerPath(path, options.autoDiscover?.pagePattern, jsExtension);
|
|
191
|
-
if (serverFunctions(path))
|
|
192
|
-
return registerPath(
|
|
193
|
-
path,
|
|
194
|
-
options.autoDiscover?.serverFunctions,
|
|
195
|
-
jsExtension
|
|
196
|
-
);
|
|
197
|
-
if (modulePattern(path))
|
|
198
|
-
return registerPath(
|
|
199
|
-
path,
|
|
200
|
-
options.autoDiscover?.modulePattern,
|
|
201
|
-
jsExtension
|
|
202
|
-
);
|
|
203
|
-
return registerPath(path, options.autoDiscover?.modulePattern, jsExtension);
|
|
164
|
+
if (vendorPattern.test(path))
|
|
165
|
+
return registerPath(path, vendorPattern, jsExtension);
|
|
166
|
+
if (cssModulePattern.test(path))
|
|
167
|
+
return registerPath(path, cssModulePattern, cssExtension);
|
|
168
|
+
if (cssPattern.test(path))
|
|
169
|
+
return registerPath(path, cssPattern, cssExtension);
|
|
170
|
+
if (clientPattern.test(path))
|
|
171
|
+
return registerPath(path, clientPattern, jsExtension);
|
|
172
|
+
if (htmlPattern.test(path))
|
|
173
|
+
return registerPath(path, htmlPattern, htmlExtension);
|
|
174
|
+
if (jsonPattern.test(path))
|
|
175
|
+
return registerPath(path, jsonPattern, jsonExtension);
|
|
176
|
+
if (propsPattern.test(path))
|
|
177
|
+
return registerPath(path, propsPattern, jsExtension);
|
|
178
|
+
if (pagePattern.test(path))
|
|
179
|
+
return registerPath(path, pagePattern, jsExtension);
|
|
180
|
+
if (serverPattern.test(path))
|
|
181
|
+
return registerPath(path, serverPattern, jsExtension);
|
|
182
|
+
if (modulePattern.test(path))
|
|
183
|
+
return registerPath(path, modulePattern, jsExtension);
|
|
184
|
+
return registerPath(path, modulePattern, jsExtension);
|
|
204
185
|
};
|
|
205
186
|
const normalizer = options.normalizer ?? createInputNormalizer({
|
|
206
187
|
root: projectRoot,
|
|
207
188
|
preserveModulesRoot: prodModuleBase,
|
|
208
189
|
removeExtension: true,
|
|
209
|
-
moduleBasePath
|
|
190
|
+
moduleBasePath,
|
|
191
|
+
moduleBaseURL
|
|
210
192
|
});
|
|
211
193
|
const entryFile = (n, ssr) => {
|
|
212
|
-
if (vendorPattern(n.name)) {
|
|
213
|
-
const search = n.facadeModuleId?.split("?")[1];
|
|
214
|
-
if (search) {
|
|
215
|
-
return hash(`${n.name}.${search}${jsExtension}`, ssr);
|
|
216
|
-
} else {
|
|
217
|
-
return hash(`${n.name}${jsExtension}`, ssr);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
194
|
return hash(getOutputPath(normalizer(n.name)[0]), ssr);
|
|
221
195
|
};
|
|
222
196
|
const chunkFile = (n, ssr) => {
|
|
223
197
|
return hash(getOutputPath(normalizer(n.name)[0]), ssr);
|
|
224
198
|
};
|
|
225
|
-
const assetFile = (n, ssr) => {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const nameWithoutExtension = firstName.slice(0, extIndex);
|
|
229
|
-
const extension = firstName.slice(extIndex);
|
|
230
|
-
const assetName = normalizer(nameWithoutExtension)[0] + extension;
|
|
231
|
-
return hash(getOutputPath(assetName), ssr);
|
|
232
|
-
};
|
|
233
|
-
const moduleID = typeof options.moduleID === "function" ? options.moduleID : (id) => {
|
|
234
|
-
if (prodModuleBase && id.startsWith(prodModuleBase)) {
|
|
235
|
-
id = id.slice(prodModuleBase.length);
|
|
236
|
-
}
|
|
237
|
-
if (!id.startsWith(moduleBasePath)) {
|
|
238
|
-
id = join(moduleBasePath, id);
|
|
239
|
-
}
|
|
240
|
-
if (prodModuleBase && id.startsWith("/" + prodModuleBase)) {
|
|
241
|
-
id = id.slice(prodModuleBase.length + 1);
|
|
199
|
+
const assetFile = (n, ssr = false) => {
|
|
200
|
+
if (n.names.length > 1) {
|
|
201
|
+
return n.names.map((name) => hash(name, ssr)).join(",");
|
|
242
202
|
}
|
|
243
|
-
|
|
244
|
-
|
|
203
|
+
let firstName = n.names[0];
|
|
204
|
+
const assetsDir = build.assetsDir || "assets";
|
|
205
|
+
if (firstName.startsWith(assetsDir + "/" + moduleBase + "/")) {
|
|
206
|
+
firstName = assetsDir + "/" + firstName.slice((assetsDir + "/" + moduleBase + "/").length);
|
|
207
|
+
} else if (moduleBasePath && firstName.startsWith(moduleBasePath)) {
|
|
208
|
+
firstName = firstName.slice(moduleBasePath.length);
|
|
209
|
+
} else if (moduleBaseURL && moduleBaseURL !== "/" && moduleBaseURL !== "" && firstName.startsWith(moduleBaseURL)) {
|
|
210
|
+
firstName = firstName.slice(moduleBaseURL.length);
|
|
211
|
+
} else if (firstName.startsWith(moduleBase + "/")) {
|
|
212
|
+
firstName = firstName.slice(moduleBase.length + 1);
|
|
245
213
|
}
|
|
246
|
-
if (
|
|
247
|
-
return
|
|
214
|
+
if (firstName.endsWith(".css")) {
|
|
215
|
+
return hash(firstName, false);
|
|
248
216
|
}
|
|
249
|
-
return
|
|
217
|
+
return hash(getOutputPath(firstName), false);
|
|
250
218
|
};
|
|
251
|
-
const rscOutputPath = options.build?.rscOutputPath ?? DEFAULT_CONFIG.BUILD.rscOutputPath;
|
|
252
|
-
const htmlOutputPath = options.build?.htmlOutputPath ?? DEFAULT_CONFIG.BUILD.htmlOutputPath;
|
|
253
219
|
const build = {
|
|
254
|
-
pages,
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
220
|
+
pages: options.build?.pages ?? DEFAULT_CONFIG.BUILD.pages,
|
|
221
|
+
assetsDir: options.build?.assetsDir ?? DEFAULT_CONFIG.BUILD.assetsDir,
|
|
222
|
+
client: options.build?.client ?? DEFAULT_CONFIG.BUILD.client,
|
|
223
|
+
server: options.build?.server ?? DEFAULT_CONFIG.BUILD.server,
|
|
224
|
+
static: options.build?.static ?? DEFAULT_CONFIG.BUILD.static,
|
|
225
|
+
api: options.build?.api ?? DEFAULT_CONFIG.BUILD.api,
|
|
226
|
+
preserveModulesRoot: options.build?.preserveModulesRoot ?? DEFAULT_CONFIG.BUILD.preserveModulesRoot,
|
|
227
|
+
outDir: options.build?.outDir ?? DEFAULT_CONFIG.BUILD.outDir,
|
|
228
|
+
hash: options.build?.hash ?? DEFAULT_CONFIG.BUILD.hash,
|
|
229
|
+
extensionMap: {
|
|
230
|
+
// File extensions first (more specific patterns should come first)
|
|
231
|
+
[BASE_PATTERNS.EXT.CSS]: cssExtension,
|
|
232
|
+
[BASE_PATTERNS.EXT.JSON]: jsonExtension,
|
|
233
|
+
[BASE_PATTERNS.EXT.HTML]: htmlExtension,
|
|
234
|
+
[BASE_PATTERNS.EXT.RSC]: rscExtension,
|
|
235
|
+
// Special case for .node files
|
|
236
|
+
[BASE_PATTERNS.EXT.NODE]: BASE_PATTERNS.EXT.NODE + (options.build?.jsExtension ?? DEFAULT_CONFIG.BUILD.jsExtension),
|
|
237
|
+
// General module pattern last (less specific)
|
|
238
|
+
[BASE_PATTERNS.MODULE]: jsExtension,
|
|
239
|
+
...options.build?.extensionMap
|
|
240
|
+
},
|
|
241
|
+
entryFile,
|
|
242
|
+
chunkFile,
|
|
243
|
+
assetFile,
|
|
244
|
+
preserveDirectives,
|
|
263
245
|
rscOutputPath,
|
|
264
246
|
htmlOutputPath,
|
|
265
|
-
|
|
266
|
-
chunkFile: typeof options.build?.chunkFile === "function" ? options.build.chunkFile : chunkFile,
|
|
267
|
-
assetFile: typeof options.build?.assetFile === "function" ? options.build.assetFile : assetFile
|
|
268
|
-
};
|
|
269
|
-
const autoDiscover = {
|
|
247
|
+
moduleExtension: jsExtension,
|
|
270
248
|
jsExtension,
|
|
271
249
|
cssExtension,
|
|
272
250
|
htmlExtension,
|
|
273
251
|
jsonExtension,
|
|
274
252
|
rscExtension,
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
253
|
+
cssModuleExtension,
|
|
254
|
+
nodeExtension: DEFAULT_CONFIG.BUILD.nodeExtension
|
|
255
|
+
};
|
|
256
|
+
const autoDiscover = {
|
|
278
257
|
modulePattern,
|
|
279
|
-
cssPattern,
|
|
280
258
|
jsonPattern,
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
259
|
+
cssPattern,
|
|
260
|
+
htmlPattern,
|
|
261
|
+
rscPattern,
|
|
262
|
+
clientPattern,
|
|
263
|
+
serverPattern,
|
|
264
|
+
nodePattern,
|
|
284
265
|
propsPattern,
|
|
285
266
|
pagePattern,
|
|
286
267
|
cssModulePattern,
|
|
287
268
|
vendorPattern,
|
|
288
|
-
dotFiles,
|
|
289
269
|
virtualPattern,
|
|
290
|
-
|
|
291
|
-
|
|
270
|
+
dotPattern
|
|
271
|
+
};
|
|
272
|
+
const allowedDirectives = resolveAllowedDirectives(
|
|
273
|
+
options.loader?.allowedDirectives ?? DEFAULT_LOADER_CONFIG.allowedDirectives
|
|
274
|
+
);
|
|
275
|
+
const loader = {
|
|
276
|
+
serverDirective: resolveRegExp(
|
|
277
|
+
options.loader?.serverDirective,
|
|
278
|
+
DEFAULT_LOADER_CONFIG.serverDirective
|
|
279
|
+
),
|
|
280
|
+
clientDirective: resolveRegExp(
|
|
281
|
+
options.loader?.clientDirective,
|
|
282
|
+
DEFAULT_LOADER_CONFIG.clientDirective
|
|
283
|
+
),
|
|
284
|
+
allowedDirectives,
|
|
285
|
+
getDirectiveType: options.loader?.getDirectiveType ?? options.loader?.allowedDirectives ? (directive) => {
|
|
286
|
+
if (options.loader?.allowedDirectives) {
|
|
287
|
+
if (Array.isArray(options.loader?.allowedDirectives)) {
|
|
288
|
+
return options.loader?.allowedDirectives.includes(directive) ? directive === "use server" ? "server" : "client" : void 0;
|
|
289
|
+
} else {
|
|
290
|
+
const config = options.loader?.allowedDirectives[directive];
|
|
291
|
+
return config ? directive === "use server" ? "server" : "client" : void 0;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return void 0;
|
|
295
|
+
} : DEFAULT_LOADER_CONFIG.getDirectiveType,
|
|
296
|
+
mode: loaderMode,
|
|
297
|
+
importServerPath: options.loader?.importServerPath ?? DEFAULT_CONFIG.RSC_LOADER[loaderMode].importServerPath,
|
|
298
|
+
importClientPath: options.loader?.importClientPath ?? DEFAULT_CONFIG.RSC_LOADER[loaderMode].importClientPath,
|
|
299
|
+
registerClientReferenceName: options.loader?.registerClientReferenceName ?? DEFAULT_CONFIG.RSC_LOADER[loaderMode].registerClientReferenceName,
|
|
300
|
+
registerServerReferenceName: options.loader?.registerServerReferenceName ?? DEFAULT_CONFIG.RSC_LOADER[loaderMode].registerServerReferenceName,
|
|
292
301
|
isServerFunctionCode,
|
|
293
|
-
isClientComponentCode
|
|
302
|
+
isClientComponentCode,
|
|
303
|
+
parse
|
|
294
304
|
};
|
|
295
|
-
const mapExtension = extMap(autoDiscover);
|
|
296
305
|
const pipeableStreamOptions = options.pipeableStreamOptions ? options.pipeableStreamOptions : {};
|
|
297
306
|
try {
|
|
307
|
+
const userOptions = {
|
|
308
|
+
projectRoot,
|
|
309
|
+
moduleBase,
|
|
310
|
+
moduleBasePath,
|
|
311
|
+
moduleBaseURL,
|
|
312
|
+
moduleRootPath,
|
|
313
|
+
publicOrigin,
|
|
314
|
+
build,
|
|
315
|
+
verbose: options.verbose ?? DEFAULT_CONFIG.VERBOSE,
|
|
316
|
+
onMetrics: options.onMetrics ?? DEFAULT_CONFIG.ON_METRICS,
|
|
317
|
+
onEvent: options.onEvent,
|
|
318
|
+
Page: options.Page,
|
|
319
|
+
props: options.props,
|
|
320
|
+
Html: options.Html ?? DEFAULT_CONFIG.HTML,
|
|
321
|
+
Root: options.Root ?? DEFAULT_CONFIG.ROOT,
|
|
322
|
+
components: options.components,
|
|
323
|
+
normalizer,
|
|
324
|
+
moduleID: options.moduleID,
|
|
325
|
+
// if not provided, will be created when config hook is called
|
|
326
|
+
pageExportName: options.pageExportName ?? DEFAULT_CONFIG.PAGE_EXPORT_NAME,
|
|
327
|
+
propsExportName: options.propsExportName ?? DEFAULT_CONFIG.PROPS_EXPORT_NAME,
|
|
328
|
+
htmlExportName: options.htmlExportName ?? DEFAULT_CONFIG.HTML_EXPORT_NAME,
|
|
329
|
+
rootExportName: options.rootExportName ?? DEFAULT_CONFIG.ROOT_EXPORT_NAME,
|
|
330
|
+
css: {
|
|
331
|
+
inlineCss: options.css?.inlineCss ?? DEFAULT_CONFIG.CSS.inlineCss,
|
|
332
|
+
inlineThreshold: options.css?.inlineThreshold ?? DEFAULT_CONFIG.CSS.inlineThreshold,
|
|
333
|
+
inlinePatterns: options.css?.inlinePatterns ?? DEFAULT_CONFIG.CSS.inlinePatterns,
|
|
334
|
+
linkPatterns: options.css?.linkPatterns ?? DEFAULT_CONFIG.CSS.linkPatterns
|
|
335
|
+
},
|
|
336
|
+
htmlWorkerPath,
|
|
337
|
+
rscWorkerPath,
|
|
338
|
+
loaderPath,
|
|
339
|
+
reactLoaderPath: options.reactLoaderPath ?? DEFAULT_CONFIG.REACT_LOADER_PATH,
|
|
340
|
+
cssLoaderPath: options.cssLoaderPath ?? DEFAULT_CONFIG.CSS_LOADER_PATH,
|
|
341
|
+
envLoaderPath: options.envLoaderPath ?? DEFAULT_CONFIG.ENV_LOADER_PATH,
|
|
342
|
+
clientEntry: options.clientEntry ?? DEFAULT_CONFIG.CLIENT_ENTRY,
|
|
343
|
+
serverEntry: options.serverEntry ?? DEFAULT_CONFIG.SERVER_ENTRY,
|
|
344
|
+
autoDiscover,
|
|
345
|
+
loader,
|
|
346
|
+
pipeableStreamOptions,
|
|
347
|
+
rscTimeout: typeof options.rscTimeout === "number" ? options.rscTimeout : DEFAULT_CONFIG.RSC_TIMEOUT,
|
|
348
|
+
htmlWorkerStartupTimeout: typeof options.htmlWorkerStartupTimeout === "number" ? options.htmlWorkerStartupTimeout : DEFAULT_CONFIG.HTML_WORKER_STARTUP_TIMEOUT,
|
|
349
|
+
rscWorkerStartupTimeout: typeof options.rscWorkerStartupTimeout === "number" ? options.rscWorkerStartupTimeout : DEFAULT_CONFIG.RSC_WORKER_STARTUP_TIMEOUT,
|
|
350
|
+
panicThreshold: typeof options.panicThreshold === "string" ? options.panicThreshold : DEFAULT_CONFIG.PANIC_THRESHOLD
|
|
351
|
+
};
|
|
352
|
+
stashedUserOptions[envId] = userOptions;
|
|
298
353
|
return {
|
|
299
354
|
type: "success",
|
|
300
|
-
userOptions
|
|
301
|
-
projectRoot,
|
|
302
|
-
moduleBase,
|
|
303
|
-
moduleBasePath,
|
|
304
|
-
moduleBaseURL,
|
|
305
|
-
moduleRootPath,
|
|
306
|
-
publicOrigin,
|
|
307
|
-
build,
|
|
308
|
-
verbose: options.verbose ?? DEFAULT_CONFIG.VERBOSE,
|
|
309
|
-
onMetrics: options.onMetrics ?? DEFAULT_CONFIG.ON_METRICS,
|
|
310
|
-
onEvent: options.onEvent,
|
|
311
|
-
Page: options.Page ?? void 0,
|
|
312
|
-
props: options.props ?? void 0,
|
|
313
|
-
Html: options.Html ?? DEFAULT_CONFIG.HTML,
|
|
314
|
-
CssCollector: options.CssCollector ?? CssCollector,
|
|
315
|
-
normalizer,
|
|
316
|
-
moduleID,
|
|
317
|
-
pageExportName,
|
|
318
|
-
propsExportName,
|
|
319
|
-
css: {
|
|
320
|
-
inlineCss: options.css?.inlineCss ?? DEFAULT_CONFIG.CSS.inlineCss,
|
|
321
|
-
inlineThreshold: options.css?.inlineThreshold ?? DEFAULT_CONFIG.CSS.inlineThreshold,
|
|
322
|
-
inlinePatterns: options.css?.inlinePatterns ?? DEFAULT_CONFIG.CSS.inlinePatterns,
|
|
323
|
-
linkPatterns: options.css?.linkPatterns ?? DEFAULT_CONFIG.CSS.linkPatterns
|
|
324
|
-
},
|
|
325
|
-
htmlWorkerPath,
|
|
326
|
-
rscWorkerPath,
|
|
327
|
-
loaderPath,
|
|
328
|
-
clientEntry: options.clientEntry ?? DEFAULT_CONFIG.CLIENT_ENTRY,
|
|
329
|
-
serverEntry: options.serverEntry ?? DEFAULT_CONFIG.SERVER_ENTRY,
|
|
330
|
-
// moduleBaseExceptions: options.moduleBaseExceptions ?? [],
|
|
331
|
-
autoDiscover,
|
|
332
|
-
pipeableStreamOptions
|
|
333
|
-
}
|
|
355
|
+
userOptions
|
|
334
356
|
};
|
|
335
357
|
} catch (error) {
|
|
336
358
|
return {
|
|
@@ -341,4 +363,4 @@ const resolveOptions = (options) => {
|
|
|
341
363
|
};
|
|
342
364
|
|
|
343
365
|
export { resolveOptions };
|
|
344
|
-
//# sourceMappingURL=resolveOptions.js.map
|
|
366
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZU9wdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9jb25maWcvcmVzb2x2ZU9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcmVSZW5kZXJlZEFzc2V0IH0gZnJvbSBcInJvbGx1cFwiO1xuaW1wb3J0IHR5cGUgeyBQcmVSZW5kZXJlZENodW5rIH0gZnJvbSBcInJvbGx1cFwiO1xuaW1wb3J0IHR5cGUge1xuICBTdHJlYW1QbHVnaW5PcHRpb25zLFxuICBSZXNvbHZlZFVzZXJPcHRpb25zLFxuICBQYWdlTmFtZSxcbiAgUHJvcHNOYW1lLFxuICBIdG1sTmFtZSxcbiAgUm9vdE5hbWUsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHtcbiAgQkFTRV9QQVRURVJOUyxcbiAgREVGQVVMVF9DT05GSUcsXG4gIERFRkFVTFRfTE9BREVSX0NPTkZJRyxcbn0gZnJvbSBcIi4vZGVmYXVsdHMuanNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwbHVnaW5Sb290IH0gZnJvbSBcIi4uL3Jvb3QuanNcIjtcbmltcG9ydCB7IGNyZWF0ZUlucHV0Tm9ybWFsaXplciB9IGZyb20gXCIuLi9oZWxwZXJzL2lucHV0Tm9ybWFsaXplci5qc1wiO1xuaW1wb3J0IHsgZ2V0Tm9kZUVudiB9IGZyb20gXCIuLi9nZXROb2RlRW52LmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlRGlyZWN0aXZlTWF0Y2hlciB9IGZyb20gXCIuL3Jlc29sdmVEaXJlY3RpdmVNYXRjaGVyLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlQWxsb3dlZERpcmVjdGl2ZXMgfSBmcm9tIFwiLi9yZXNvbHZlQWxsb3dlZERpcmVjdGl2ZXMuanNcIjtcbmltcG9ydCB7IHJlc29sdmVSZWdFeHAgfSBmcm9tIFwiLi9yZXNvbHZlUmVnRXhwLmpzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuLi9sb2FkZXIvcGFyc2UuanNcIjtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZU9wdGlvbnNSZXR1cm4gPVxuICB8IHtcbiAgICAgIHR5cGU6IFwic3VjY2Vzc1wiO1xuICAgICAgdXNlck9wdGlvbnM6IFJlc29sdmVkVXNlck9wdGlvbnM7XG4gICAgICBlcnJvcj86IG5ldmVyO1xuICAgIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IEVycm9yOyB1c2VyT3B0aW9ucz86IG5ldmVyIH07XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVPcHRpb25zRm4gPSAoXG4gIG9wdGlvbnM6IFN0cmVhbVBsdWdpbk9wdGlvbnNcbikgPT4gUmVzb2x2ZU9wdGlvbnNSZXR1cm47XG5cbi8vIC8qKlxuLy8gICogRW5zdXJlcyBhIHBhdGggZW5kcyB3aXRoIC5qcyBleHRlbnNpb25cbi8vICAqL1xuLy8gY29uc3QgYWRkRXh0ZW5zaW9uID0gKHBhdGg6IHN0cmluZywgZXh0ZW5zaW9uOiBzdHJpbmcgPSBcImpzXCIpID0+IHtcbi8vICAgaWYgKHBhdGguZW5kc1dpdGgoYC4ke2V4dGVuc2lvbn1gKSkgcmV0dXJuIHBhdGg7XG4vLyAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLy5cIikpIHJldHVybiBwYXRoLnNsaWNlKDAsIC0yKSArIFwiLlwiICsgZXh0ZW5zaW9uO1xuLy8gICBpZiAocGF0aC5lbmRzV2l0aChcIi5cIikpIHJldHVybiBwYXRoICsgXCIuXCIgKyBleHRlbnNpb247XG4vLyAgIHJldHVybiBwYXRoICsgXCIuXCIgKyBleHRlbnNpb247XG4vLyB9O1xuXG4vKipcbiAqIEhhbmRsZXMgc2VhcmNoIHF1ZXJ5IHBhcmFtZXRlcnMgaW4gZmlsZSBwYXRoc1xuICovXG5jb25zdCBoYW5kbGVTZWFyY2hRdWVyeSA9IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgc2VhcmNoUXVlcnkgPSBwYXRoLnNwbGl0KFwiP1wiKVsxXTtcbiAgaWYgKCFzZWFyY2hRdWVyeSkgcmV0dXJuIHBhdGg7XG4gIGNvbnN0IGZvbGRlciA9IHBhdGguc3BsaXQoXCIvXCIpLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiKTtcbiAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLnNwbGl0KFwiL1wiKS5wb3AoKTtcbiAgY29uc3QgZmlsZU5hbWVFeHRJbmRleCA9IGZpbGVuYW1lPy5sYXN0SW5kZXhPZihcIi5cIik7XG4gIGNvbnN0IGZpbGVOYW1lV2l0aG91dEV4dCA9IGZpbGVuYW1lPy5zbGljZSgwLCBmaWxlTmFtZUV4dEluZGV4KTtcbiAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZW5hbWU/LnNsaWNlKGZpbGVOYW1lRXh0SW5kZXgpO1xuICByZXR1cm4gYCR7Zm9sZGVyfS8ke2ZpbGVOYW1lV2l0aG91dEV4dH0uJHtzZWFyY2hRdWVyeX0uJHtleHRlbnNpb259YDtcbn07XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgcGF0aCB3aXRoIGFuIG9wdGlvbmFsIHBhdHRlcm4gbWF0Y2hlciBhbmQgZXh0ZW5zaW9uLlxuICogSWYgYSBwYXR0ZXJuIG1hdGNoZXMgYW5kIHRoZSBwYXRoIGRvZXNuJ3QgZW5kIHdpdGggdGhlIGV4dGVuc2lvbiwgdGhlIGV4dGVuc2lvbiBpcyBhcHBlbmRlZC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHJlZ2lzdGVyXG4gKiBAcGFyYW0gcGF0dGVybiAtIE9wdGlvbmFsIHBhdHRlcm4gbWF0Y2hlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0aCBtYXRjaGVzXG4gKiBAcGFyYW0gZXh0IC0gT3B0aW9uYWwgZXh0ZW5zaW9uIHRvIGFwcGVuZCBpZiBwYXR0ZXJuIG1hdGNoZXMgYW5kIHBhdGggZG9lc24ndCBhbHJlYWR5IGVuZCB3aXRoIGl0XG4gKi9cbmNvbnN0IHJlZ2lzdGVyUGF0aCA9IChwYXRoOiBzdHJpbmcsIHBhdHRlcm4/OiBSZWdFeHAsIGV4dD86IHN0cmluZykgPT4ge1xuICAvLyBJZiB3ZSBoYXZlIGEgcGF0dGVybiBhbmQgaXQgZG9lc24ndCBtYXRjaCwgb3Igd2UgaGF2ZSBhbiBleHRlbnNpb24gYW5kIHRoZSBwYXRoIGRvZXNuJ3QgZW5kIHdpdGggaXQsIGFwcGVuZCB0aGUgZXh0ZW5zaW9uXG4gIGlmICgocGF0dGVybiAmJiAhcGF0dGVybi50ZXN0KHBhdGgpKSB8fCAoZXh0ICYmICFwYXRoLmVuZHNXaXRoKGV4dCkpKSB7XG4gICAgcmV0dXJuIHBhdGggKyBleHQ7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNYWluIE9wdGlvbnMgUmVzb2x2ZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3Qgc3Rhc2hlZFVzZXJPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBSZXNvbHZlZFVzZXJPcHRpb25zIHwgbnVsbD4gPSB7fTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdXNlciBvcHRpb25zIGZvciB0aGUgcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHVzZXIgb3B0aW9ucyB0byByZXNvbHZlLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlT3B0aW9uczogUmVzb2x2ZU9wdGlvbnNGbiA9IGZ1bmN0aW9uIF9yZXNvbHZlT3B0aW9ucyhcbiAgb3B0aW9uc1xuKSB7XG4gIGNvbnN0IGVudklkID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPz8gXCJkZXZlbG9wbWVudFwiO1xuXG4gIC8vIFJldHVybiBzdGFzaGVkIG9wdGlvbnMgaWYgYXZhaWxhYmxlXG4gIGlmIChzdGFzaGVkVXNlck9wdGlvbnNbZW52SWRdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgdXNlck9wdGlvbnM6IHN0YXNoZWRVc2VyT3B0aW9uc1tlbnZJZF0gYXMgbmV2ZXIsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGxvYWRlck1vZGUgPSBvcHRpb25zLmxvYWRlcj8ubW9kZSA/PyBnZXROb2RlRW52KCk7XG4gIC8vIE1vZHVsZSBwYXRoIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgbW9kdWxlQmFzZSA9XG4gICAgdHlwZW9mIG9wdGlvbnMubW9kdWxlQmFzZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLm1vZHVsZUJhc2VcbiAgICAgIDogREVGQVVMVF9DT05GSUcuTU9EVUxFX0JBU0U7XG4gIC8vIEJhc2ljIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgcHJvamVjdFJvb3QgPSBvcHRpb25zLnByb2plY3RSb290ID8/IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gQnVpbGQgb3B0aW9uc1xuICBjb25zdCBwcmVzZXJ2ZU1vZHVsZXNSb290ID1cbiAgICBvcHRpb25zLmJ1aWxkPy5wcmVzZXJ2ZU1vZHVsZXNSb290ID8/XG4gICAgREVGQVVMVF9DT05GSUcuQlVJTEQucHJlc2VydmVNb2R1bGVzUm9vdDtcblxuICBjb25zdCBpc1Byb2QgPVxuICAgIHByb2Nlc3MuZW52W1wiTk9ERV9FTlZcIl0gPT09IFwicHJvZHVjdGlvblwiIHx8XG4gICAgcHJvY2Vzcy5lbnZbXCJWSVRFX1BST0RcIl0gPT09IFwidHJ1ZVwiIHx8XG4gICAgcHJvY2Vzcy5lbnZbXCJWSVRFX1BST0RcIl0gPT09IFwiMVwiO1xuICBjb25zdCBwcm9kTW9kdWxlQmFzZSA9IGlzUHJvZCAmJiBwcmVzZXJ2ZU1vZHVsZXNSb290ID8gbW9kdWxlQmFzZSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBjbGllbnQgPVxuICAgIHR5cGVvZiBvcHRpb25zLmJ1aWxkPy5jbGllbnQgPT09IFwic3RyaW5nXCJcbiAgICAgID8gb3B0aW9ucy5idWlsZC5jbGllbnRcbiAgICAgIDogREVGQVVMVF9DT05GSUcuQlVJTEQuY2xpZW50O1xuXG4gIGNvbnN0IG91dERpciA9XG4gICAgdHlwZW9mIG9wdGlvbnMuYnVpbGQ/Lm91dERpciA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLmJ1aWxkLm91dERpclxuICAgICAgOiBERUZBVUxUX0NPTkZJRy5CVUlMRC5vdXREaXI7XG5cbiAgY29uc3QgbW9kdWxlQmFzZVBhdGggPVxuICAgIHR5cGVvZiBvcHRpb25zLm1vZHVsZUJhc2VQYXRoID09PSBcInN0cmluZ1wiXG4gICAgICA/IG9wdGlvbnMubW9kdWxlQmFzZVBhdGhcbiAgICAgIDogcHJvY2Vzcy5lbnYuVklURV9CQVNFX1VSTCA/PyBERUZBVUxUX0NPTkZJRy5NT0RVTEVfQkFTRV9QQVRIO1xuXG4gIGNvbnN0IG1vZHVsZUJhc2VVUkwgPVxuICAgIHR5cGVvZiBvcHRpb25zLm1vZHVsZUJhc2VVUkwgPT09IFwic3RyaW5nXCJcbiAgICAgID8gb3B0aW9ucy5tb2R1bGVCYXNlVVJMXG4gICAgICA6IHByb2Nlc3MuZW52LlZJVEVfQkFTRV9VUkwgPz8gREVGQVVMVF9DT05GSUcuTU9EVUxFX0JBU0VfVVJMO1xuXG4gIGNvbnN0IG1vZHVsZVJvb3RQYXRoID1cbiAgICB0eXBlb2Ygb3B0aW9ucy5tb2R1bGVSb290UGF0aCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLm1vZHVsZVJvb3RQYXRoXG4gICAgICA6IGpvaW4ocHJvamVjdFJvb3QsIG91dERpciwgY2xpZW50KTtcblxuICBjb25zdCBwdWJsaWNPcmlnaW4gPVxuICAgIHR5cGVvZiBvcHRpb25zLnB1YmxpY09yaWdpbiA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLnB1YmxpY09yaWdpblxuICAgICAgOiBwcm9jZXNzLmVudi5WSVRFX1BVQkxJQ19PUklHSU4gPz8gREVGQVVMVF9DT05GSUcuUFVCTElDX09SSUdJTjtcblxuICAvLyBXb3JrZXIgYW5kIGxvYWRlciBwYXRoc1xuICBjb25zdCByc2NXb3JrZXJQYXRoID1cbiAgICB0eXBlb2Ygb3B0aW9ucy5yc2NXb3JrZXJQYXRoID09PSBcInN0cmluZ1wiXG4gICAgICA/IGpvaW4ocHJvamVjdFJvb3QsIG9wdGlvbnMucnNjV29ya2VyUGF0aClcbiAgICAgIDogam9pbihwbHVnaW5Sb290LCBERUZBVUxUX0NPTkZJRy5SU0NfV09SS0VSX1BBVEgpO1xuXG4gIGNvbnN0IGh0bWxXb3JrZXJQYXRoID1cbiAgICB0eXBlb2Ygb3B0aW9ucy5odG1sV29ya2VyUGF0aCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBqb2luKHByb2plY3RSb290LCBvcHRpb25zLmh0bWxXb3JrZXJQYXRoKVxuICAgICAgOiBqb2luKHBsdWdpblJvb3QsIERFRkFVTFRfQ09ORklHLkhUTUxfV09SS0VSX1BBVEgpO1xuXG4gIGNvbnN0IGxvYWRlclBhdGggPVxuICAgIHR5cGVvZiBvcHRpb25zLmxvYWRlclBhdGggPT09IFwic3RyaW5nXCJcbiAgICAgID8gam9pbihwcm9qZWN0Um9vdCwgb3B0aW9ucy5sb2FkZXJQYXRoKVxuICAgICAgOiBqb2luKHBsdWdpblJvb3QsIERFRkFVTFRfQ09ORklHLkxPQURFUl9QQVRIKTtcblxuICBjb25zdCBwcmVzZXJ2ZURpcmVjdGl2ZXMgPVxuICAgIHR5cGVvZiBvcHRpb25zLmJ1aWxkPy5wcmVzZXJ2ZURpcmVjdGl2ZXMgPT09IFwiYm9vbGVhblwiXG4gICAgICA/IG9wdGlvbnMuYnVpbGQucHJlc2VydmVEaXJlY3RpdmVzXG4gICAgICA6IERFRkFVTFRfQ09ORklHLkJVSUxELnByZXNlcnZlRGlyZWN0aXZlcztcblxuICBjb25zdCBqc0V4dGVuc2lvbiA9XG4gICAgdHlwZW9mIG9wdGlvbnMuYnVpbGQ/LmpzRXh0ZW5zaW9uID09PSBcInN0cmluZ1wiXG4gICAgICA/IG9wdGlvbnMuYnVpbGQuanNFeHRlbnNpb25cbiAgICAgIDogREVGQVVMVF9DT05GSUcuQlVJTEQuanNFeHRlbnNpb247XG4gIGNvbnN0IGNzc0V4dGVuc2lvbiA9XG4gICAgdHlwZW9mIG9wdGlvbnMuYnVpbGQ/LmNzc0V4dGVuc2lvbiA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLmJ1aWxkLmNzc0V4dGVuc2lvblxuICAgICAgOiBERUZBVUxUX0NPTkZJRy5CVUlMRC5jc3NFeHRlbnNpb247XG4gIGNvbnN0IGNzc01vZHVsZUV4dGVuc2lvbiA9XG4gICAgdHlwZW9mIG9wdGlvbnMuYnVpbGQ/LmNzc01vZHVsZUV4dGVuc2lvbiA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLmJ1aWxkLmNzc01vZHVsZUV4dGVuc2lvblxuICAgICAgOiBERUZBVUxUX0NPTkZJRy5CVUlMRC5jc3NNb2R1bGVFeHRlbnNpb247XG4gIGNvbnN0IGh0bWxFeHRlbnNpb24gPVxuICAgIHR5cGVvZiBvcHRpb25zLmJ1aWxkPy5odG1sRXh0ZW5zaW9uID09PSBcInN0cmluZ1wiXG4gICAgICA/IG9wdGlvbnMuYnVpbGQuaHRtbEV4dGVuc2lvblxuICAgICAgOiBERUZBVUxUX0NPTkZJRy5CVUlMRC5odG1sRXh0ZW5zaW9uO1xuICBjb25zdCBqc29uRXh0ZW5zaW9uID1cbiAgICB0eXBlb2Ygb3B0aW9ucy5idWlsZD8uanNvbkV4dGVuc2lvbiA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLmJ1aWxkLmpzb25FeHRlbnNpb25cbiAgICAgIDogREVGQVVMVF9DT05GSUcuQlVJTEQuanNvbkV4dGVuc2lvbjtcbiAgY29uc3QgcnNjRXh0ZW5zaW9uID1cbiAgICB0eXBlb2Ygb3B0aW9ucy5idWlsZD8ucnNjRXh0ZW5zaW9uID09PSBcInN0cmluZ1wiXG4gICAgICA/IG9wdGlvbnMuYnVpbGQucnNjRXh0ZW5zaW9uXG4gICAgICA6IERFRkFVTFRfQ09ORklHLkJVSUxELnJzY0V4dGVuc2lvbjtcblxuICBjb25zdCByc2NPdXRwdXRQYXRoID1cbiAgICB0eXBlb2Ygb3B0aW9ucy5idWlsZD8ucnNjT3V0cHV0UGF0aCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLmJ1aWxkLnJzY091dHB1dFBhdGhcbiAgICAgIDogREVGQVVMVF9DT05GSUcuQlVJTEQucnNjT3V0cHV0UGF0aDtcbiAgY29uc3QgaHRtbE91dHB1dFBhdGggPVxuICAgIHR5cGVvZiBvcHRpb25zLmJ1aWxkPy5odG1sT3V0cHV0UGF0aCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBvcHRpb25zLmJ1aWxkLmh0bWxPdXRwdXRQYXRoXG4gICAgICA6IERFRkFVTFRfQ09ORklHLkJVSUxELmh0bWxPdXRwdXRQYXRoO1xuXG4gIC8vIHRoZXNlIHdpbGwgbmV2ZXIgYmUgY2xlYW5lZCB1cCwgYmVjYXVzZSwgd2UgYXJlIHJlc29sdmluZyB0aGUgdXNlciBvcHRpb25zXG4gIC8vIGFuZCBpdCdzIGFzc3VtZWQgdGhleSBhcmUgcmVsZXZhbnQgdW50aWwgdGhlIHByb2Nlc3Mgc3RvcHNcbiAgaWYgKHByb2Nlc3MuZW52LlZJVEVfQkFTRV9VUkwgIT09IG1vZHVsZUJhc2VVUkwpIHtcbiAgICBwcm9jZXNzLmVudi5WSVRFX0JBU0VfVVJMID0gbW9kdWxlQmFzZVVSTDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuVklURV9QVUJMSUNfT1JJR0lOICE9PSBwdWJsaWNPcmlnaW4pIHtcbiAgICBwcm9jZXNzLmVudi5WSVRFX1BVQkxJQ19PUklHSU4gPSBwdWJsaWNPcmlnaW47XG4gIH1cblxuICBjb25zdCBtb2R1bGVQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8ubW9kdWxlUGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLm1vZHVsZVBhdHRlcm5cbiAgKTtcblxuICBjb25zdCBqc29uUGF0dGVybiA9IHJlc29sdmVSZWdFeHAoXG4gICAgb3B0aW9ucy5hdXRvRGlzY292ZXI/Lmpzb25QYXR0ZXJuLFxuICAgIERFRkFVTFRfQ09ORklHLkFVVE9fRElTQ09WRVIuanNvblBhdHRlcm5cbiAgKTtcblxuICBjb25zdCBjc3NQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8uY3NzUGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLmNzc1BhdHRlcm5cbiAgKTtcblxuICBjb25zdCBodG1sUGF0dGVybiA9IHJlc29sdmVSZWdFeHAoXG4gICAgb3B0aW9ucy5hdXRvRGlzY292ZXI/Lmh0bWxQYXR0ZXJuLFxuICAgIERFRkFVTFRfQ09ORklHLkFVVE9fRElTQ09WRVIuaHRtbFBhdHRlcm5cbiAgKTtcblxuICBjb25zdCByc2NQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8ucnNjUGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLnJzY1BhdHRlcm5cbiAgKTtcblxuICBjb25zdCBjbGllbnRQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8uY2xpZW50UGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLmNsaWVudFBhdHRlcm5cbiAgKTtcblxuICBjb25zdCBzZXJ2ZXJQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8uc2VydmVyUGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLnNlcnZlclBhdHRlcm5cbiAgKTtcblxuICBjb25zdCBub2RlUGF0dGVybiA9IHJlc29sdmVSZWdFeHAoXG4gICAgb3B0aW9ucy5hdXRvRGlzY292ZXI/Lm5vZGVQYXR0ZXJuLFxuICAgIERFRkFVTFRfQ09ORklHLkFVVE9fRElTQ09WRVIubm9kZU9ubHlcbiAgKTtcblxuICBjb25zdCBwcm9wc1BhdHRlcm4gPSByZXNvbHZlUmVnRXhwKFxuICAgIG9wdGlvbnMuYXV0b0Rpc2NvdmVyPy5wcm9wc1BhdHRlcm4sXG4gICAgREVGQVVMVF9DT05GSUcuQVVUT19ESVNDT1ZFUi5wcm9wc1BhdHRlcm5cbiAgKTtcblxuICBjb25zdCBwYWdlUGF0dGVybiA9IHJlc29sdmVSZWdFeHAoXG4gICAgb3B0aW9ucy5hdXRvRGlzY292ZXI/LnBhZ2VQYXR0ZXJuLFxuICAgIERFRkFVTFRfQ09ORklHLkFVVE9fRElTQ09WRVIucGFnZVBhdHRlcm5cbiAgKTtcblxuICBjb25zdCBjc3NNb2R1bGVQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8uY3NzTW9kdWxlUGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLmNzc01vZHVsZVBhdHRlcm5cbiAgKTtcblxuICBjb25zdCB2ZW5kb3JQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8udmVuZG9yUGF0dGVybixcbiAgICBERUZBVUxUX0NPTkZJRy5BVVRPX0RJU0NPVkVSLnZlbmRvclBhdHRlcm5cbiAgKTtcblxuICBjb25zdCB2aXJ0dWFsUGF0dGVybiA9IHJlc29sdmVSZWdFeHAoXG4gICAgb3B0aW9ucy5hdXRvRGlzY292ZXI/LnZpcnR1YWxQYXR0ZXJuLFxuICAgIERFRkFVTFRfQ09ORklHLkFVVE9fRElTQ09WRVIudmlydHVhbFBhdHRlcm5cbiAgKTtcblxuICBjb25zdCBkb3RQYXR0ZXJuID0gcmVzb2x2ZVJlZ0V4cChcbiAgICBvcHRpb25zLmF1dG9EaXNjb3Zlcj8uZG90UGF0dGVybixcbiAgICBCQVNFX1BBVFRFUk5TLkRPVF9GSUxFU1xuICApO1xuXG4gIC8qKiBMb2FkZXIgb3B0aW9ucyAqL1xuICBjb25zdCBzZXJ2ZXJEaXJlY3RpdmUgPSByZXNvbHZlUmVnRXhwKFxuICAgIG9wdGlvbnMubG9hZGVyPy5zZXJ2ZXJEaXJlY3RpdmUsXG4gICAgREVGQVVMVF9MT0FERVJfQ09ORklHLnNlcnZlckRpcmVjdGl2ZVxuICApO1xuICBjb25zdCBjbGllbnREaXJlY3RpdmUgPSByZXNvbHZlUmVnRXhwKFxuICAgIG9wdGlvbnMubG9hZGVyPy5jbGllbnREaXJlY3RpdmUsXG4gICAgREVGQVVMVF9MT0FERVJfQ09ORklHLmNsaWVudERpcmVjdGl2ZVxuICApO1xuICBjb25zdCBpc1NlcnZlckZ1bmN0aW9uQ29kZSA9IHJlc29sdmVEaXJlY3RpdmVNYXRjaGVyKFxuICAgIHNlcnZlckRpcmVjdGl2ZSxcbiAgICAoY29kZTogc3RyaW5nLCBtb2R1bGVJZD86IHN0cmluZykgPT5cbiAgICAgIGNvZGUubWF0Y2goc2VydmVyRGlyZWN0aXZlKSAhPSBudWxsIHx8XG4gICAgICAodHlwZW9mIG1vZHVsZUlkID09PSBcInN0cmluZ1wiICYmIHNlcnZlclBhdHRlcm4udGVzdChtb2R1bGVJZCkpIHx8XG4gICAgICBmYWxzZVxuICApO1xuXG4gIGNvbnN0IGlzQ2xpZW50Q29tcG9uZW50Q29kZSA9IHJlc29sdmVEaXJlY3RpdmVNYXRjaGVyKFxuICAgIGNsaWVudERpcmVjdGl2ZSxcbiAgICAoY29kZTogc3RyaW5nLCBtb2R1bGVJZD86IHN0cmluZykgPT5cbiAgICAgIGNvZGUubWF0Y2goY2xpZW50RGlyZWN0aXZlKSAhPSBudWxsIHx8XG4gICAgICAodHlwZW9mIG1vZHVsZUlkID09PSBcInN0cmluZ1wiICYmIGNsaWVudFBhdHRlcm4udGVzdChtb2R1bGVJZCkpIHx8XG4gICAgICBmYWxzZVxuICApO1xuXG4gIGNvbnN0IGhhc2hPcHRpb24gPVxuICAgIHR5cGVvZiBvcHRpb25zLmJ1aWxkPy5oYXNoID09PSBcInN0cmluZ1wiXG4gICAgICA/IG9wdGlvbnMuYnVpbGQuaGFzaFxuICAgICAgOiBERUZBVUxUX0NPTkZJRy5CVUlMRC5oYXNoO1xuXG4gIGNvbnN0IGhhc2hTdHJpbmcgPSBoYXNoT3B0aW9uID09PSBcIlwiID8gXCJcIiA6IGAtWyR7aGFzaE9wdGlvbn1dYDtcbiAgLy8gY29uc3QgYWRkTW9kdWxlRXh0ZW5zaW9uID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAvLyAgIGNvbnN0IGlzQXNzZXQgPVxuICAvLyAgICAgYXV0b0Rpc2NvdmVyLmNzc1BhdHRlcm4ocGF0aCkgfHwgYXV0b0Rpc2NvdmVyLmpzb25QYXR0ZXJuKHBhdGgpO1xuICAvLyAgIGlmIChpc0Fzc2V0KSB7XG4gIC8vICAgICByZXR1cm4gcGF0aDtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIGFkZEV4dGVuc2lvbihwYXRoKTtcbiAgLy8gfTtcblxuICAvLyBGaWxlIG5hbWluZyBhbmQgaGFzaGluZ1xuICBjb25zdCBoYXNoID0gKG46IHN0cmluZyB8IG51bGwsIHNzcjogYm9vbGVhbikgPT4ge1xuICAgIGlmICghbikgcmV0dXJuIFwiXCI7XG4gICAgaWYgKHNzcikgcmV0dXJuIG47XG4gICAgaWYgKGhhc2hTdHJpbmcgPT09IFwiXCIgfHwgbmV3IFJlZ0V4cChCQVNFX1BBVFRFUk5TLkVYVC5OT0RFKS50ZXN0KG4pKSB7XG4gICAgICByZXR1cm4gbjtcbiAgICB9XG4gICAgY29uc3QgZXh0ZW5zaW9uSW5kZXggPSBuLmxhc3RJbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoZXh0ZW5zaW9uSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBleHRlbnNpb24gPSBuLnNsaWNlKGV4dGVuc2lvbkluZGV4KTtcbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gbi5zbGljZSgwLCBleHRlbnNpb25JbmRleCk7XG4gICAgICByZXR1cm4gZmlsZW5hbWUgKyBoYXNoU3RyaW5nICsgZXh0ZW5zaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbiArIGhhc2hTdHJpbmc7XG4gICAgfVxuICB9O1xuXG4gIC8vIE91dHB1dCBwYXRoIHJlc29sdXRpb25cbiAgY29uc3QgZ2V0T3V0cHV0UGF0aCA9IChuOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFuKSByZXR1cm4gXCJcIjtcbiAgICBsZXQgcGF0aCA9IGhhbmRsZVNlYXJjaFF1ZXJ5KG4pO1xuICAgIHBhdGggPSBwYXRoLnN0YXJ0c1dpdGgobW9kdWxlQmFzZSArIG1vZHVsZUJhc2VQYXRoKVxuICAgICAgPyBwYXRoLnNsaWNlKG1vZHVsZUJhc2UubGVuZ3RoICsgbW9kdWxlQmFzZVBhdGgubGVuZ3RoKVxuICAgICAgOiBwYXRoO1xuXG4gICAgaWYgKHZlbmRvclBhdHRlcm4udGVzdChwYXRoKSlcbiAgICAgIHJldHVybiByZWdpc3RlclBhdGgocGF0aCwgdmVuZG9yUGF0dGVybiwganNFeHRlbnNpb24pO1xuICAgIGlmIChjc3NNb2R1bGVQYXR0ZXJuLnRlc3QocGF0aCkpXG4gICAgICByZXR1cm4gcmVnaXN0ZXJQYXRoKHBhdGgsIGNzc01vZHVsZVBhdHRlcm4sIGNzc0V4dGVuc2lvbik7XG4gICAgaWYgKGNzc1BhdHRlcm4udGVzdChwYXRoKSlcbiAgICAgIHJldHVybiByZWdpc3RlclBhdGgocGF0aCwgY3NzUGF0dGVybiwgY3NzRXh0ZW5zaW9uKTtcbiAgICBpZiAoY2xpZW50UGF0dGVybi50ZXN0KHBhdGgpKVxuICAgICAgcmV0dXJuIHJlZ2lzdGVyUGF0aChwYXRoLCBjbGllbnRQYXR0ZXJuLCBqc0V4dGVuc2lvbik7XG4gICAgaWYgKGh0bWxQYXR0ZXJuLnRlc3QocGF0aCkpXG4gICAgICByZXR1cm4gcmVnaXN0ZXJQYXRoKHBhdGgsIGh0bWxQYXR0ZXJuLCBodG1sRXh0ZW5zaW9uKTtcbiAgICBpZiAoanNvblBhdHRlcm4udGVzdChwYXRoKSlcbiAgICAgIHJldHVybiByZWdpc3RlclBhdGgocGF0aCwganNvblBhdHRlcm4sIGpzb25FeHRlbnNpb24pO1xuICAgIGlmIChwcm9wc1BhdHRlcm4udGVzdChwYXRoKSlcbiAgICAgIHJldHVybiByZWdpc3RlclBhdGgocGF0aCwgcHJvcHNQYXR0ZXJuLCBqc0V4dGVuc2lvbik7XG4gICAgaWYgKHBhZ2VQYXR0ZXJuLnRlc3QocGF0aCkpXG4gICAgICByZXR1cm4gcmVnaXN0ZXJQYXRoKHBhdGgsIHBhZ2VQYXR0ZXJuLCBqc0V4dGVuc2lvbik7XG4gICAgaWYgKHNlcnZlclBhdHRlcm4udGVzdChwYXRoKSlcbiAgICAgIHJldHVybiByZWdpc3RlclBhdGgocGF0aCwgc2VydmVyUGF0dGVybiwganNFeHRlbnNpb24pO1xuICAgIGlmIChtb2R1bGVQYXR0ZXJuLnRlc3QocGF0aCkpXG4gICAgICByZXR1cm4gcmVnaXN0ZXJQYXRoKHBhdGgsIG1vZHVsZVBhdHRlcm4sIGpzRXh0ZW5zaW9uKTtcbiAgICByZXR1cm4gcmVnaXN0ZXJQYXRoKHBhdGgsIG1vZHVsZVBhdHRlcm4sIGpzRXh0ZW5zaW9uKTtcbiAgfTtcblxuICBjb25zdCBub3JtYWxpemVyID1cbiAgICBvcHRpb25zLm5vcm1hbGl6ZXIgPz9cbiAgICBjcmVhdGVJbnB1dE5vcm1hbGl6ZXIoe1xuICAgICAgcm9vdDogcHJvamVjdFJvb3QsXG4gICAgICBwcmVzZXJ2ZU1vZHVsZXNSb290OiBwcm9kTW9kdWxlQmFzZSxcbiAgICAgIHJlbW92ZUV4dGVuc2lvbjogdHJ1ZSxcbiAgICAgIG1vZHVsZUJhc2VQYXRoLFxuICAgICAgbW9kdWxlQmFzZVVSTCxcbiAgICB9KTtcbiAgLy8gRmlsZSBuYW1pbmcgZnVuY3Rpb25zXG4gIGNvbnN0IGVudHJ5RmlsZSA9IChuOiBQcmVSZW5kZXJlZENodW5rLCBzc3I6IGJvb2xlYW4pID0+IHtcbiAgICByZXR1cm4gaGFzaChnZXRPdXRwdXRQYXRoKG5vcm1hbGl6ZXIobi5uYW1lKVswXSksIHNzcik7XG4gIH07XG5cbiAgY29uc3QgY2h1bmtGaWxlID0gKG46IFByZVJlbmRlcmVkQ2h1bmssIHNzcjogYm9vbGVhbikgPT4ge1xuICAgIHJldHVybiBoYXNoKGdldE91dHB1dFBhdGgobm9ybWFsaXplcihuLm5hbWUpWzBdKSwgc3NyKTtcbiAgfTtcblxuICBjb25zdCBhc3NldEZpbGU6IChuOiBQcmVSZW5kZXJlZEFzc2V0LCBzc3I/OiBib29sZWFuKSA9PiBzdHJpbmcgPSAobjogUHJlUmVuZGVyZWRBc3NldCwgc3NyID0gZmFsc2UpID0+IHtcbiAgICBpZiAobi5uYW1lcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gbi5uYW1lcy5tYXAoKG5hbWUpID0+IGhhc2gobmFtZSwgc3NyKSkuam9pbihcIixcIik7XG4gICAgfVxuICAgIGxldCBmaXJzdE5hbWUgPSBuLm5hbWVzWzBdO1xuICAgIFxuICAgIC8vIENsZWFuIHVwIGFzc2V0IHBhdGhzIGJ5IHJlbW92aW5nIHRoZSBtb2R1bGVCYXNlIGZyb20gd2l0aGluIGFzc2V0cyBkaXJlY3RvcnlcbiAgICAvLyBUcmFuc2Zvcm06IGFzc2V0cy9zcmMvcGFnZS9maWxlLmNzcyAtPiBhc3NldHMvcGFnZS9maWxlLmNzc1xuICAgIGNvbnN0IGFzc2V0c0RpciA9IGJ1aWxkLmFzc2V0c0RpciB8fCBcImFzc2V0c1wiO1xuICAgIGlmIChmaXJzdE5hbWUuc3RhcnRzV2l0aChhc3NldHNEaXIgKyBcIi9cIiArIG1vZHVsZUJhc2UgKyBcIi9cIikpIHtcbiAgICAgIGZpcnN0TmFtZSA9IGFzc2V0c0RpciArIFwiL1wiICsgZmlyc3ROYW1lLnNsaWNlKChhc3NldHNEaXIgKyBcIi9cIiArIG1vZHVsZUJhc2UgKyBcIi9cIikubGVuZ3RoKTtcbiAgICB9XG4gICAgLy8gSGFuZGxlIG1vZHVsZUJhc2VQYXRoIHJlbW92YWxcbiAgICBlbHNlIGlmIChtb2R1bGVCYXNlUGF0aCAmJiBmaXJzdE5hbWUuc3RhcnRzV2l0aChtb2R1bGVCYXNlUGF0aCkpIHtcbiAgICAgIGZpcnN0TmFtZSA9IGZpcnN0TmFtZS5zbGljZShtb2R1bGVCYXNlUGF0aC5sZW5ndGgpO1xuICAgIH0gZWxzZSBpZihtb2R1bGVCYXNlVVJMICYmIG1vZHVsZUJhc2VVUkwgIT09IFwiL1wiICYmIG1vZHVsZUJhc2VVUkwgIT09IFwiXCIgJiYgZmlyc3ROYW1lLnN0YXJ0c1dpdGgobW9kdWxlQmFzZVVSTCkpIHtcbiAgICAgIGZpcnN0TmFtZSA9IGZpcnN0TmFtZS5zbGljZShtb2R1bGVCYXNlVVJMLmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEhhbmRsZSBkaXJlY3QgbW9kdWxlQmFzZSByZW1vdmFsICBcbiAgICBlbHNlIGlmIChmaXJzdE5hbWUuc3RhcnRzV2l0aChtb2R1bGVCYXNlICsgXCIvXCIpKSB7XG4gICAgICBmaXJzdE5hbWUgPSBmaXJzdE5hbWUuc2xpY2UobW9kdWxlQmFzZS5sZW5ndGggKyAxKTtcbiAgICB9XG4gICAgXG4gICAgLy8gRm9yIENTUyBmaWxlcywgbWFrZSBzdXJlIHdlIHByZXNlcnZlIHRoZSAuY3NzIGV4dGVuc2lvbiBhbmQgZG9uJ3QgYXBwbHkgSlMgZXh0ZW5zaW9uIG1hcHBpbmdcbiAgICBpZiAoZmlyc3ROYW1lLmVuZHNXaXRoKCcuY3NzJykpIHtcbiAgICAgIHJldHVybiBoYXNoKGZpcnN0TmFtZSwgZmFsc2UpO1xuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igb3RoZXIgYXNzZXRzLCBhcHBseSB0aGUgZXh0ZW5zaW9uIG1hcHBpbmcgaWYgbmVlZGVkXG4gICAgcmV0dXJuIGhhc2goZ2V0T3V0cHV0UGF0aChmaXJzdE5hbWUpLCBmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHBhZ2VzXG4gICAqIGFzc2V0c0RpclxuICAgKiBjbGllbnRcbiAgICogc2VydmVyXG4gICAqIHN0YXRpY1xuICAgKiBhcGlcbiAgICogb3V0RGlyXG4gICAqIGhhc2hcbiAgICogcHJlc2VydmVEaXJlY3RpdmVzXG4gICAqIHByZXNlcnZlTW9kdWxlc1Jvb3RcbiAgICogcnNjT3V0cHV0UGF0aFxuICAgKiBodG1sT3V0cHV0UGF0aFxuICAgKiBlbnRyeUZpbGVcbiAgICogY2h1bmtGaWxlXG4gICAqIGFzc2V0RmlsZVxuICAgKiBleHRlbnNpb25NYXBcbiAgICogbW9kdWxlRXh0ZW5zaW9uXG4gICAqIGpzRXh0ZW5zaW9uXG4gICAqIGNzc0V4dGVuc2lvblxuICAgKiBodG1sRXh0ZW5zaW9uXG4gICAqIGpzb25FeHRlbnNpb25cbiAgICogcnNjRXh0ZW5zaW9uXG4gICAqIGNzc01vZHVsZUV4dGVuc2lvblxuICAgKiBub2RlRXh0ZW5zaW9uXG4gICAqL1xuICBjb25zdCBidWlsZCA9IHtcbiAgICBwYWdlczogb3B0aW9ucy5idWlsZD8ucGFnZXMgPz8gREVGQVVMVF9DT05GSUcuQlVJTEQucGFnZXMsXG4gICAgYXNzZXRzRGlyOiBvcHRpb25zLmJ1aWxkPy5hc3NldHNEaXIgPz8gREVGQVVMVF9DT05GSUcuQlVJTEQuYXNzZXRzRGlyLFxuICAgIGNsaWVudDogb3B0aW9ucy5idWlsZD8uY2xpZW50ID8/IERFRkFVTFRfQ09ORklHLkJVSUxELmNsaWVudCxcbiAgICBzZXJ2ZXI6IG9wdGlvbnMuYnVpbGQ/LnNlcnZlciA/PyBERUZBVUxUX0NPTkZJRy5CVUlMRC5zZXJ2ZXIsXG4gICAgc3RhdGljOiBvcHRpb25zLmJ1aWxkPy5zdGF0aWMgPz8gREVGQVVMVF9DT05GSUcuQlVJTEQuc3RhdGljLFxuICAgIGFwaTogb3B0aW9ucy5idWlsZD8uYXBpID8/IERFRkFVTFRfQ09ORklHLkJVSUxELmFwaSxcbiAgICBwcmVzZXJ2ZU1vZHVsZXNSb290OlxuICAgICAgb3B0aW9ucy5idWlsZD8ucHJlc2VydmVNb2R1bGVzUm9vdCA/P1xuICAgICAgREVGQVVMVF9DT05GSUcuQlVJTEQucHJlc2VydmVNb2R1bGVzUm9vdCxcbiAgICBvdXREaXI6IG9wdGlvbnMuYnVpbGQ/Lm91dERpciA/PyBERUZBVUxUX0NPTkZJRy5CVUlMRC5vdXREaXIsXG4gICAgaGFzaDogb3B0aW9ucy5idWlsZD8uaGFzaCA/PyBERUZBVUxUX0NPTkZJRy5CVUlMRC5oYXNoLFxuICAgIGV4dGVuc2lvbk1hcDoge1xuICAgICAgLy8gRmlsZSBleHRlbnNpb25zIGZpcnN0IChtb3JlIHNwZWNpZmljIHBhdHRlcm5zIHNob3VsZCBjb21lIGZpcnN0KVxuICAgICAgW0JBU0VfUEFUVEVSTlMuRVhULkNTU106IGNzc0V4dGVuc2lvbixcbiAgICAgIFtCQVNFX1BBVFRFUk5TLkVYVC5KU09OXToganNvbkV4dGVuc2lvbixcbiAgICAgIFtCQVNFX1BBVFRFUk5TLkVYVC5IVE1MXTogaHRtbEV4dGVuc2lvbixcbiAgICAgIFtCQVNFX1BBVFRFUk5TLkVYVC5SU0NdOiByc2NFeHRlbnNpb24sXG4gICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIC5ub2RlIGZpbGVzXG4gICAgICBbQkFTRV9QQVRURVJOUy5FWFQuTk9ERV06XG4gICAgICAgIEJBU0VfUEFUVEVSTlMuRVhULk5PREUgK1xuICAgICAgICAob3B0aW9ucy5idWlsZD8uanNFeHRlbnNpb24gPz8gREVGQVVMVF9DT05GSUcuQlVJTEQuanNFeHRlbnNpb24pLFxuICAgICAgLy8gR2VuZXJhbCBtb2R1bGUgcGF0dGVybiBsYXN0IChsZXNzIHNwZWNpZmljKVxuICAgICAgW0JBU0VfUEFUVEVSTlMuTU9EVUxFXToganNFeHRlbnNpb24sXG4gICAgICAuLi5vcHRpb25zLmJ1aWxkPy5leHRlbnNpb25NYXAsXG4gICAgfSxcbiAgICBlbnRyeUZpbGUsXG4gICAgY2h1bmtGaWxlLFxuICAgIGFzc2V0RmlsZSxcbiAgICBwcmVzZXJ2ZURpcmVjdGl2ZXM6IHByZXNlcnZlRGlyZWN0aXZlcyxcbiAgICByc2NPdXRwdXRQYXRoOiByc2NPdXRwdXRQYXRoLFxuICAgIGh0bWxPdXRwdXRQYXRoOiBodG1sT3V0cHV0UGF0aCxcbiAgICBtb2R1bGVFeHRlbnNpb246IGpzRXh0ZW5zaW9uLFxuICAgIGpzRXh0ZW5zaW9uOiBqc0V4dGVuc2lvbixcbiAgICBjc3NFeHRlbnNpb246IGNzc0V4dGVuc2lvbixcbiAgICBodG1sRXh0ZW5zaW9uOiBodG1sRXh0ZW5zaW9uLFxuICAgIGpzb25FeHRlbnNpb246IGpzb25FeHRlbnNpb24sXG4gICAgcnNjRXh0ZW5zaW9uOiByc2NFeHRlbnNpb24sXG4gICAgY3NzTW9kdWxlRXh0ZW5zaW9uOiBjc3NNb2R1bGVFeHRlbnNpb24sXG4gICAgbm9kZUV4dGVuc2lvbjogREVGQVVMVF9DT05GSUcuQlVJTEQubm9kZUV4dGVuc2lvbixcbiAgfSBzYXRpc2ZpZXMgUmVzb2x2ZWRVc2VyT3B0aW9uc1tcImJ1aWxkXCJdO1xuXG4gIC8vIEF1dG8tZGlzY292ZXJ5IGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgYXV0b0Rpc2NvdmVyID0ge1xuICAgIG1vZHVsZVBhdHRlcm4sXG4gICAganNvblBhdHRlcm4sXG4gICAgY3NzUGF0dGVybixcbiAgICBodG1sUGF0dGVybixcbiAgICByc2NQYXR0ZXJuLFxuICAgIGNsaWVudFBhdHRlcm4sXG4gICAgc2VydmVyUGF0dGVybixcbiAgICBub2RlUGF0dGVybixcbiAgICBwcm9wc1BhdHRlcm4sXG4gICAgcGFnZVBhdHRlcm4sXG4gICAgY3NzTW9kdWxlUGF0dGVybixcbiAgICB2ZW5kb3JQYXR0ZXJuLFxuICAgIHZpcnR1YWxQYXR0ZXJuLFxuICAgIGRvdFBhdHRlcm4sXG4gIH0gc2F0aXNmaWVzIFJlc29sdmVkVXNlck9wdGlvbnNbXCJhdXRvRGlzY292ZXJcIl07XG5cbiAgY29uc3QgYWxsb3dlZERpcmVjdGl2ZXMgPSByZXNvbHZlQWxsb3dlZERpcmVjdGl2ZXMoXG4gICAgb3B0aW9ucy5sb2FkZXI/LmFsbG93ZWREaXJlY3RpdmVzID8/IERFRkFVTFRfTE9BREVSX0NPTkZJRy5hbGxvd2VkRGlyZWN0aXZlc1xuICApO1xuXG5cbiAgLy8gQ3JlYXRlIGxvYWRlciBjb25maWd1cmF0aW9uXG4gIGNvbnN0IGxvYWRlciA9IHtcbiAgICBzZXJ2ZXJEaXJlY3RpdmU6IHJlc29sdmVSZWdFeHAoXG4gICAgICBvcHRpb25zLmxvYWRlcj8uc2VydmVyRGlyZWN0aXZlLFxuICAgICAgREVGQVVMVF9MT0FERVJfQ09ORklHLnNlcnZlckRpcmVjdGl2ZVxuICAgICksXG4gICAgY2xpZW50RGlyZWN0aXZlOiByZXNvbHZlUmVnRXhwKFxuICAgICAgb3B0aW9ucy5sb2FkZXI/LmNsaWVudERpcmVjdGl2ZSxcbiAgICAgIERFRkFVTFRfTE9BREVSX0NPTkZJRy5jbGllbnREaXJlY3RpdmVcbiAgICApLFxuICAgIGFsbG93ZWREaXJlY3RpdmVzOiBhbGxvd2VkRGlyZWN0aXZlcyxcbiAgICBnZXREaXJlY3RpdmVUeXBlOlxuICAgICAgb3B0aW9ucy5sb2FkZXI/LmdldERpcmVjdGl2ZVR5cGUgPz8gb3B0aW9ucy5sb2FkZXI/LmFsbG93ZWREaXJlY3RpdmVzXG4gICAgICAgID8gKGRpcmVjdGl2ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5sb2FkZXI/LmFsbG93ZWREaXJlY3RpdmVzKSB7XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMubG9hZGVyPy5hbGxvd2VkRGlyZWN0aXZlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5sb2FkZXI/LmFsbG93ZWREaXJlY3RpdmVzLmluY2x1ZGVzKGRpcmVjdGl2ZSlcbiAgICAgICAgICAgICAgICAgID8gZGlyZWN0aXZlID09PSBcInVzZSBzZXJ2ZXJcIlxuICAgICAgICAgICAgICAgICAgICA/IFwic2VydmVyXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcImNsaWVudFwiXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBvcHRpb25zLmxvYWRlcj8uYWxsb3dlZERpcmVjdGl2ZXNbZGlyZWN0aXZlXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnXG4gICAgICAgICAgICAgICAgICA/IGRpcmVjdGl2ZSA9PT0gXCJ1c2Ugc2VydmVyXCJcbiAgICAgICAgICAgICAgICAgICAgPyBcInNlcnZlclwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJjbGllbnRcIlxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICA6IERFRkFVTFRfTE9BREVSX0NPTkZJRy5nZXREaXJlY3RpdmVUeXBlLFxuICAgIG1vZGU6IGxvYWRlck1vZGUsXG4gICAgaW1wb3J0U2VydmVyUGF0aDpcbiAgICAgIG9wdGlvbnMubG9hZGVyPy5pbXBvcnRTZXJ2ZXJQYXRoID8/XG4gICAgICBERUZBVUxUX0NPTkZJRy5SU0NfTE9BREVSW2xvYWRlck1vZGVdLmltcG9ydFNlcnZlclBhdGgsXG4gICAgaW1wb3J0Q2xpZW50UGF0aDpcbiAgICAgIG9wdGlvbnMubG9hZGVyPy5pbXBvcnRDbGllbnRQYXRoID8/XG4gICAgICBERUZBVUxUX0NPTkZJRy5SU0NfTE9BREVSW2xvYWRlck1vZGVdLmltcG9ydENsaWVudFBhdGgsXG4gICAgcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2VOYW1lOlxuICAgICAgb3B0aW9ucy5sb2FkZXI/LnJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlTmFtZSA/P1xuICAgICAgREVGQVVMVF9DT05GSUcuUlNDX0xPQURFUltsb2FkZXJNb2RlXS5yZWdpc3RlckNsaWVudFJlZmVyZW5jZU5hbWUsXG4gICAgcmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2VOYW1lOlxuICAgICAgb3B0aW9ucy5sb2FkZXI/LnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlTmFtZSA/P1xuICAgICAgREVGQVVMVF9DT05GSUcuUlNDX0xPQURFUltsb2FkZXJNb2RlXS5yZWdpc3RlclNlcnZlclJlZmVyZW5jZU5hbWUsXG4gICAgaXNTZXJ2ZXJGdW5jdGlvbkNvZGUsXG4gICAgaXNDbGllbnRDb21wb25lbnRDb2RlLFxuICAgIHBhcnNlOiBwYXJzZSxcbiAgfSBzYXRpc2ZpZXMgUmVzb2x2ZWRVc2VyT3B0aW9uc1tcImxvYWRlclwiXTtcblxuICBjb25zdCBwaXBlYWJsZVN0cmVhbU9wdGlvbnMgPSBvcHRpb25zLnBpcGVhYmxlU3RyZWFtT3B0aW9uc1xuICAgID8gb3B0aW9ucy5waXBlYWJsZVN0cmVhbU9wdGlvbnNcbiAgICA6IHt9O1xuXG4gIC8vIFJldHVybiByZXNvbHZlZCBvcHRpb25zXG4gIHRyeSB7XG4gICAgY29uc3QgdXNlck9wdGlvbnM6IFJlc29sdmVkVXNlck9wdGlvbnMgPSB7XG4gICAgICBwcm9qZWN0Um9vdCxcbiAgICAgIG1vZHVsZUJhc2UsXG4gICAgICBtb2R1bGVCYXNlUGF0aCxcbiAgICAgIG1vZHVsZUJhc2VVUkwsXG4gICAgICBtb2R1bGVSb290UGF0aCxcbiAgICAgIHB1YmxpY09yaWdpbixcbiAgICAgIGJ1aWxkOiBidWlsZCxcbiAgICAgIHZlcmJvc2U6IG9wdGlvbnMudmVyYm9zZSA/PyBERUZBVUxUX0NPTkZJRy5WRVJCT1NFLFxuICAgICAgb25NZXRyaWNzOiBvcHRpb25zLm9uTWV0cmljcyA/PyBERUZBVUxUX0NPTkZJRy5PTl9NRVRSSUNTLFxuICAgICAgb25FdmVudDogb3B0aW9ucy5vbkV2ZW50LFxuICAgICAgUGFnZTogb3B0aW9ucy5QYWdlLFxuICAgICAgcHJvcHM6IG9wdGlvbnMucHJvcHMsXG4gICAgICBIdG1sOiBvcHRpb25zLkh0bWwgPz8gREVGQVVMVF9DT05GSUcuSFRNTCxcbiAgICAgIFJvb3Q6IG9wdGlvbnMuUm9vdCA/PyBERUZBVUxUX0NPTkZJRy5ST09ULFxuICAgICAgY29tcG9uZW50czogb3B0aW9ucy5jb21wb25lbnRzLFxuICAgICAgICAgICAgICBub3JtYWxpemVyOiBub3JtYWxpemVyLFxuICAgICAgICBtb2R1bGVJRDogb3B0aW9ucy5tb2R1bGVJRCwgLy8gaWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIGNyZWF0ZWQgd2hlbiBjb25maWcgaG9vayBpcyBjYWxsZWRcbiAgICAgIHBhZ2VFeHBvcnROYW1lOlxuICAgICAgICBvcHRpb25zLnBhZ2VFeHBvcnROYW1lID8/IChERUZBVUxUX0NPTkZJRy5QQUdFX0VYUE9SVF9OQU1FIGFzIFBhZ2VOYW1lKSxcbiAgICAgIHByb3BzRXhwb3J0TmFtZTpcbiAgICAgICAgb3B0aW9ucy5wcm9wc0V4cG9ydE5hbWUgPz9cbiAgICAgICAgKERFRkFVTFRfQ09ORklHLlBST1BTX0VYUE9SVF9OQU1FIGFzIFByb3BzTmFtZSksXG4gICAgICBodG1sRXhwb3J0TmFtZTpcbiAgICAgICAgb3B0aW9ucy5odG1sRXhwb3J0TmFtZSA/PyAoREVGQVVMVF9DT05GSUcuSFRNTF9FWFBPUlRfTkFNRSBhcyBIdG1sTmFtZSksXG4gICAgICByb290RXhwb3J0TmFtZTpcbiAgICAgICAgb3B0aW9ucy5yb290RXhwb3J0TmFtZSA/PyAoREVGQVVMVF9DT05GSUcuUk9PVF9FWFBPUlRfTkFNRSBhcyBSb290TmFtZSksXG4gICAgICBjc3M6IHtcbiAgICAgICAgaW5saW5lQ3NzOiBvcHRpb25zLmNzcz8uaW5saW5lQ3NzID8/IERFRkFVTFRfQ09ORklHLkNTUy5pbmxpbmVDc3MsXG4gICAgICAgIGlubGluZVRocmVzaG9sZDpcbiAgICAgICAgICBvcHRpb25zLmNzcz8uaW5saW5lVGhyZXNob2xkID8/IERFRkFVTFRfQ09ORklHLkNTUy5pbmxpbmVUaHJlc2hvbGQsXG4gICAgICAgIGlubGluZVBhdHRlcm5zOlxuICAgICAgICAgIG9wdGlvbnMuY3NzPy5pbmxpbmVQYXR0ZXJucyA/PyBERUZBVUxUX0NPTkZJRy5DU1MuaW5saW5lUGF0dGVybnMsXG4gICAgICAgIGxpbmtQYXR0ZXJuczpcbiAgICAgICAgICBvcHRpb25zLmNzcz8ubGlua1BhdHRlcm5zID8/IERFRkFVTFRfQ09ORklHLkNTUy5saW5rUGF0dGVybnMsXG4gICAgICB9LFxuICAgICAgaHRtbFdvcmtlclBhdGg6IGh0bWxXb3JrZXJQYXRoLFxuICAgICAgcnNjV29ya2VyUGF0aDogcnNjV29ya2VyUGF0aCxcbiAgICAgIGxvYWRlclBhdGg6IGxvYWRlclBhdGgsXG4gICAgICByZWFjdExvYWRlclBhdGg6IG9wdGlvbnMucmVhY3RMb2FkZXJQYXRoID8/IERFRkFVTFRfQ09ORklHLlJFQUNUX0xPQURFUl9QQVRILFxuICAgICAgY3NzTG9hZGVyUGF0aDogb3B0aW9ucy5jc3NMb2FkZXJQYXRoID8/IERFRkFVTFRfQ09ORklHLkNTU19MT0FERVJfUEFUSCxcbiAgICAgIGVudkxvYWRlclBhdGg6IG9wdGlvbnMuZW52TG9hZGVyUGF0aCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfTE9BREVSX1BBVEgsXG4gICAgICBjbGllbnRFbnRyeTogb3B0aW9ucy5jbGllbnRFbnRyeSA/PyBERUZBVUxUX0NPTkZJRy5DTElFTlRfRU5UUlksXG4gICAgICBzZXJ2ZXJFbnRyeTogb3B0aW9ucy5zZXJ2ZXJFbnRyeSA/PyBERUZBVUxUX0NPTkZJRy5TRVJWRVJfRU5UUlksXG4gICAgICBhdXRvRGlzY292ZXI6IGF1dG9EaXNjb3ZlcixcbiAgICAgIGxvYWRlcjogbG9hZGVyLFxuICAgICAgcGlwZWFibGVTdHJlYW1PcHRpb25zLFxuICAgICAgcnNjVGltZW91dDpcbiAgICAgICAgdHlwZW9mIG9wdGlvbnMucnNjVGltZW91dCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgID8gb3B0aW9ucy5yc2NUaW1lb3V0XG4gICAgICAgICAgOiBERUZBVUxUX0NPTkZJRy5SU0NfVElNRU9VVCxcbiAgICAgIGh0bWxXb3JrZXJTdGFydHVwVGltZW91dDpcbiAgICAgICAgdHlwZW9mIG9wdGlvbnMuaHRtbFdvcmtlclN0YXJ0dXBUaW1lb3V0ID09PSBcIm51bWJlclwiXG4gICAgICAgICAgPyBvcHRpb25zLmh0bWxXb3JrZXJTdGFydHVwVGltZW91dFxuICAgICAgICAgIDogREVGQVVMVF9DT05GSUcuSFRNTF9XT1JLRVJfU1RBUlRVUF9USU1FT1VULFxuICAgICAgcnNjV29ya2VyU3RhcnR1cFRpbWVvdXQ6XG4gICAgICAgIHR5cGVvZiBvcHRpb25zLnJzY1dvcmtlclN0YXJ0dXBUaW1lb3V0ID09PSBcIm51bWJlclwiXG4gICAgICAgICAgPyBvcHRpb25zLnJzY1dvcmtlclN0YXJ0dXBUaW1lb3V0XG4gICAgICAgICAgOiBERUZBVUxUX0NPTkZJRy5SU0NfV09SS0VSX1NUQVJUVVBfVElNRU9VVCxcbiAgICAgIHBhbmljVGhyZXNob2xkOlxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5wYW5pY1RocmVzaG9sZCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gb3B0aW9ucy5wYW5pY1RocmVzaG9sZFxuICAgICAgICAgIDogREVGQVVMVF9DT05GSUcuUEFOSUNfVEhSRVNIT0xELFxuICAgIH07XG5cbiAgICAvLyBTdGFzaCB0aGUgcmVzb2x2ZWQgb3B0aW9uc1xuICAgIHN0YXNoZWRVc2VyT3B0aW9uc1tlbnZJZF0gPSB1c2VyT3B0aW9ucztcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgIHVzZXJPcHRpb25zLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgIGVycm9yOlxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcmVzb2x2ZSBvcHRpb25zXCIpLFxuICAgIH07XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBaURBLE1BQU0saUJBQUEsR0FBb0IsQ0FBQyxJQUFpQixLQUFBO0FBQzFDLEVBQUEsTUFBTSxXQUFjLEdBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQ3JDLEVBQUksSUFBQSxDQUFDLGFBQW9CLE9BQUEsSUFBQTtBQUN6QixFQUFNLE1BQUEsTUFBQSxHQUFTLElBQUssQ0FBQSxLQUFBLENBQU0sR0FBRyxDQUFBLENBQUUsTUFBTSxDQUFHLEVBQUEsRUFBRSxDQUFFLENBQUEsSUFBQSxDQUFLLEdBQUcsQ0FBQTtBQUNwRCxFQUFBLE1BQU0sUUFBVyxHQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsR0FBRyxFQUFFLEdBQUksRUFBQTtBQUNyQyxFQUFNLE1BQUEsZ0JBQUEsR0FBbUIsUUFBVSxFQUFBLFdBQUEsQ0FBWSxHQUFHLENBQUE7QUFDbEQsRUFBQSxNQUFNLGtCQUFxQixHQUFBLFFBQUEsRUFBVSxLQUFNLENBQUEsQ0FBQSxFQUFHLGdCQUFnQixDQUFBO0FBQzlELEVBQU0sTUFBQSxTQUFBLEdBQVksUUFBVSxFQUFBLEtBQUEsQ0FBTSxnQkFBZ0IsQ0FBQTtBQUNsRCxFQUFBLE9BQU8sR0FBRyxNQUFNLENBQUEsQ0FBQSxFQUFJLGtCQUFrQixDQUFJLENBQUEsRUFBQSxXQUFX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
|