tungsten 0.6.3 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-complete +1 -1
- package/dist/Brands.d.ts +16 -0
- package/dist/Brands.d.ts.map +1 -0
- package/dist/Brands.js +22 -0
- package/dist/Components.d.ts +4 -1
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js +24 -6
- package/dist/ContentNode.d.ts +3 -2
- package/dist/ContentNode.d.ts.map +1 -1
- package/dist/ContentNode.js +11 -0
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js +23 -4
- package/dist/FrameworkConfig.d.ts +9 -1
- package/dist/FrameworkConfig.d.ts.map +1 -1
- package/dist/FrameworkConfig.types.test.d.ts +2 -0
- package/dist/FrameworkConfig.types.test.d.ts.map +1 -0
- package/dist/FrameworkConfig.types.test.js +6 -0
- package/dist/FunctionComponent.d.ts +1 -0
- package/dist/FunctionComponent.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.d.ts.map +1 -1
- package/dist/Instance/Instance.d.ts +21 -9
- package/dist/Instance/Instance.d.ts.map +1 -1
- package/dist/Instance/Instance.js +42 -38
- package/dist/Instance/InstanceConfig.d.ts +3 -1
- package/dist/Instance/InstanceConfig.d.ts.map +1 -1
- package/dist/RenderedContentNode.d.ts.map +1 -1
- package/dist/RenderingNode.d.ts.map +1 -1
- package/dist/Servers/DevServer.d.ts +4 -2
- package/dist/Servers/DevServer.d.ts.map +1 -1
- package/dist/Servers/DevServer.js +72 -21
- package/dist/Servers/ProdServer.d.ts +5 -2
- package/dist/Servers/ProdServer.d.ts.map +1 -1
- package/dist/Servers/ProdServer.js +95 -19
- package/dist/Servers/StaticSiteServer.d.ts +1 -1
- package/dist/Servers/StaticSiteServer.d.ts.map +1 -1
- package/dist/Servers/TungstenServer.d.ts +2 -1
- package/dist/Servers/TungstenServer.d.ts.map +1 -1
- package/dist/Servers/TungstenServer.js +7 -0
- package/dist/Servers/cacheVersioned.d.ts +3 -0
- package/dist/Servers/cacheVersioned.d.ts.map +1 -0
- package/dist/Servers/cacheVersioned.js +23 -0
- package/dist/Servers/devErrorPageAutoRetry.d.ts.map +1 -1
- package/dist/Servers/devErrorPageAutoRetry.js +1 -0
- package/dist/Servers/initStores.d.ts +4 -4
- package/dist/Servers/initStores.d.ts.map +1 -1
- package/dist/Servers/initStores.js +2 -2
- package/dist/Servers/loadEnvsDev.d.ts.map +1 -1
- package/dist/Servers/loadEnvsDev.js +7 -6
- package/dist/Servers/resetRegistrations.d.ts +2 -0
- package/dist/Servers/resetRegistrations.d.ts.map +1 -0
- package/dist/Servers/resetRegistrations.js +13 -0
- package/dist/Servers/routing.d.ts +3 -2
- package/dist/Servers/routing.d.ts.map +1 -1
- package/dist/Servers/routing.js +12 -7
- package/dist/Servers/stubInstance.d.ts +8 -0
- package/dist/Servers/stubInstance.d.ts.map +1 -0
- package/dist/Servers/stubInstance.js +40 -0
- package/dist/Store/InternalStoreSchema.d.ts +1 -1
- package/dist/Store/Store.js +2 -1
- package/dist/Store/StoreSchemaClass.d.ts +6 -3
- package/dist/Store/StoreSchemaClass.d.ts.map +1 -1
- package/dist/Store/StoreSchemaClass.js +8 -1
- package/dist/Store/TypeSafeStore.js +2 -1
- package/dist/Store/createStores.d.ts +3 -3
- package/dist/Store/createStores.d.ts.map +1 -1
- package/dist/Store/createStores.js +7 -2
- package/dist/Store/getInternalStore.d.ts.map +1 -1
- package/dist/Store/registerStore.d.ts.map +1 -1
- package/dist/Store/registerStore.js +2 -2
- package/dist/Store/storeCreators.d.ts +2 -2
- package/dist/Store/storeCreators.d.ts.map +1 -1
- package/dist/TungstenApp.d.ts +3 -3
- package/dist/TungstenApp.d.ts.map +1 -1
- package/dist/_client/cjsHelpers.d.ts.map +1 -1
- package/dist/_client/cjsHelpers.js +5 -3
- package/dist/_client/client.d.ts +2 -0
- package/dist/_client/client.d.ts.map +1 -1
- package/dist/_client/client.js +10 -3
- package/dist/api/getApiRoutes.d.ts.map +1 -1
- package/dist/api/getExport.d.ts +1 -1
- package/dist/api/getExport.d.ts.map +1 -1
- package/dist/api/getExport.js +2 -1
- package/dist/api/getExportDev.d.ts +1 -1
- package/dist/api/getExportDev.d.ts.map +1 -1
- package/dist/appBuilder.d.ts +69 -0
- package/dist/appBuilder.d.ts.map +1 -0
- package/dist/appBuilder.js +98 -0
- package/dist/appBuilder.types.test.d.ts +110 -0
- package/dist/appBuilder.types.test.d.ts.map +1 -0
- package/dist/appBuilder.types.test.js +240 -0
- package/dist/babelPlugins/BabelTransformBindDirect.js +7 -7
- package/dist/babelPlugins/BabelTransformBindVar.js +7 -7
- package/dist/babelPlugins/BabelTransformComponentState.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformComponentStyles.js +5 -5
- package/dist/babelPlugins/BabelTransformCssImports.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformCssImports.js +2 -2
- package/dist/babelPlugins/BabelTransformDeproxyState.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.js +11 -6
- package/dist/babelPlugins/BabelTransformRemoveDevBlocks.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformRemoveServerBlocks.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTypes.d.ts.map +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.js +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.js +2 -2
- package/dist/bin/commands/compile.d.ts.map +1 -1
- package/dist/bin/commands/compile.js +2 -1
- package/dist/build/CompilationInfo.d.ts +3 -0
- package/dist/build/CompilationInfo.d.ts.map +1 -1
- package/dist/build/assetVersions.d.ts +9 -0
- package/dist/build/assetVersions.d.ts.map +1 -0
- package/dist/build/assetVersions.js +39 -0
- package/dist/build/babel.user.common.config.d.ts.map +1 -1
- package/dist/build/bundle.d.ts.map +1 -1
- package/dist/build/bundle.js +2 -1
- package/dist/build/bundleBabelOptions.d.ts.map +1 -1
- package/dist/build/clientRoutesFile.d.ts +2 -0
- package/dist/build/clientRoutesFile.d.ts.map +1 -0
- package/dist/build/clientRoutesFile.js +13 -0
- package/dist/build/compileJavascript.d.ts.map +1 -1
- package/dist/build/compileJavascript.js +4 -3
- package/dist/build/compileStyles.d.ts +2 -1
- package/dist/build/compileStyles.d.ts.map +1 -1
- package/dist/build/compileStyles.js +38 -83
- package/dist/build/compileUserApp.d.ts.map +1 -1
- package/dist/build/componentStylesCache.d.ts.map +1 -1
- package/dist/build/componentStylesCache.js +3 -2
- package/dist/build/copyAssets.d.ts.map +1 -1
- package/dist/build/copyAssets.js +2 -1
- package/dist/build/copyPackageModulesToPackagesFolder.d.ts.map +1 -1
- package/dist/build/copyPackageModulesToPackagesFolder.js +1 -1
- package/dist/build/copyPublicFiles.d.ts.map +1 -1
- package/dist/build/copyPublicFiles.js +2 -1
- package/dist/build/createClientFiles.d.ts.map +1 -1
- package/dist/build/createClientFiles.js +9 -5
- package/dist/build/createInstanceConfigFile.d.ts +1 -1
- package/dist/build/createInstanceConfigFile.d.ts.map +1 -1
- package/dist/build/createInstanceConfigFile.js +9 -3
- package/dist/build/frameworkDestLocation.d.ts.map +1 -1
- package/dist/build/frameworkDestLocation.js +5 -6
- package/dist/build/frameworkStylesheets.d.ts.map +1 -1
- package/dist/build/frameworkStylesheets.js +1 -1
- package/dist/build/makeBabelRawConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserDevConfig.d.ts +2 -2
- package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
- package/dist/build/rollup.user.prod.config.d.ts.map +1 -1
- package/dist/build/rollup.user.prod.config.js +5 -3
- package/dist/build/rollupProdConstants.d.ts +5 -0
- package/dist/build/rollupProdConstants.d.ts.map +1 -0
- package/dist/build/rollupProdConstants.js +21 -0
- package/dist/cacheControl.d.ts +13 -0
- package/dist/cacheControl.d.ts.map +1 -0
- package/dist/cacheControl.js +22 -0
- package/dist/compat/types.d.ts +1 -1
- package/dist/compat/types.d.ts.map +1 -1
- package/dist/componentHelpers.d.ts +19 -0
- package/dist/componentHelpers.d.ts.map +1 -0
- package/dist/componentHelpers.js +31 -0
- package/dist/componentProxyHandlers.d.ts.map +1 -1
- package/dist/components/Fragment.d.ts +8 -0
- package/dist/components/Fragment.d.ts.map +1 -0
- package/dist/components/Fragment.js +10 -0
- package/dist/components/Link.d.ts +4 -3
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/Link.js +1 -0
- package/dist/components/NoEscape.d.ts +8 -0
- package/dist/components/NoEscape.d.ts.map +1 -0
- package/dist/components/NoEscape.js +6 -0
- package/dist/components/RouteRedirectComponent.d.ts.map +1 -1
- package/dist/components/RouteRedirectComponent.js +1 -1
- package/dist/components/WebRedirectComponent.d.ts.map +1 -1
- package/dist/components/WebRedirectComponent.js +1 -1
- package/dist/components/bindable/BindVariable.d.ts +1 -0
- package/dist/components/bindable/BindVariable.d.ts.map +1 -1
- package/dist/components/bindable/BindableCheckbox.d.ts +7 -7
- package/dist/components/bindable/BindableCheckbox.d.ts.map +1 -1
- package/dist/components/bindable/BindableInput.d.ts +7 -7
- package/dist/components/bindable/BindableInput.d.ts.map +1 -1
- package/dist/components/bindable/BindableInputNonString.d.ts +2 -2
- package/dist/components/bindable/BindableInputNonString.d.ts.map +1 -1
- package/dist/components/bindable/BindableInputString.d.ts +2 -2
- package/dist/components/bindable/BindableInputString.d.ts.map +1 -1
- package/dist/components/bindable/BindableInputTyped.d.ts +3 -3
- package/dist/components/bindable/BindableInputTyped.d.ts.map +1 -1
- package/dist/components/bindable/BindableInputTypedLegacy.d.ts +3 -3
- package/dist/components/bindable/BindableInputTypedLegacy.d.ts.map +1 -1
- package/dist/components/bindable/BindableRadio.js +2 -2
- package/dist/components/bindable/BindableSelect.d.ts +13 -10
- package/dist/components/bindable/BindableSelect.d.ts.map +1 -1
- package/dist/components/bindable/BindableSelectNaive.js +3 -3
- package/dist/components/bindable/BindableTextarea.d.ts +7 -7
- package/dist/components/bindable/BindableTextarea.d.ts.map +1 -1
- package/dist/components/bindable/bindableCandidates.comparison.d.ts +136 -0
- package/dist/components/bindable/bindableCandidates.comparison.d.ts.map +1 -0
- package/dist/components/bindable/bindableCandidates.comparison.js +268 -0
- package/dist/components/bindable/bindableProps.types.test.d.ts +50 -0
- package/dist/components/bindable/bindableProps.types.test.d.ts.map +1 -0
- package/dist/components/bindable/bindableProps.types.test.js +252 -0
- package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -1
- package/dist/components/library/RichTextEditor/contentTree.d.ts.map +1 -1
- package/dist/components/makeTypedLink.d.ts +9 -0
- package/dist/components/makeTypedLink.d.ts.map +1 -0
- package/dist/components/makeTypedLink.js +15 -0
- package/dist/context/registerContext.d.ts +22 -0
- package/dist/context/registerContext.d.ts.map +1 -0
- package/dist/context/registerContext.js +18 -0
- package/dist/env/getEnvSchemas.d.ts.map +1 -1
- package/dist/env/getEnvSchemas.js +2 -1
- package/dist/fileVersions.d.ts +9 -0
- package/dist/fileVersions.d.ts.map +1 -0
- package/dist/fileVersions.js +28 -0
- package/dist/findUserConfig.d.ts +1 -1
- package/dist/findUserConfig.d.ts.map +1 -1
- package/dist/findUserConfig.js +2 -1
- package/dist/frameworkConfigSchema.d.ts +16 -2
- package/dist/frameworkConfigSchema.d.ts.map +1 -1
- package/dist/frameworkConfigSchema.js +15 -3
- package/dist/getComponent.d.ts.map +1 -1
- package/dist/getComponent.js +4 -3
- package/dist/getRoutes.d.ts.map +1 -1
- package/dist/getRoutes.js +9 -8
- package/dist/getUserConfig.d.ts.map +1 -1
- package/dist/hmr/applyHmrModule.d.ts.map +1 -1
- package/dist/hmr/componentIdentity.js +1 -1
- package/dist/hooks/getCurrentComponent.d.ts +1 -1
- package/dist/hooks/getCurrentComponent.d.ts.map +1 -1
- package/dist/hydrate/hydrate.d.ts +5 -1
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +86 -52
- package/dist/hydrate/hydrateGlobalData.d.ts +4 -3
- package/dist/hydrate/hydrateGlobalData.d.ts.map +1 -1
- package/dist/hydrate/reconcileHydratedAttributes.d.ts +2 -1
- package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +1 -1
- package/dist/hydrate/reconcileHydratedAttributes.js +4 -3
- package/dist/hydrate/renderHydrationMismatchBanner.d.ts.map +1 -1
- package/dist/hydrate/renderHydrationMismatchBanner.js +2 -1
- package/dist/hydrate/stubRouting.d.ts +8 -0
- package/dist/hydrate/stubRouting.d.ts.map +1 -0
- package/dist/hydrate/stubRouting.js +25 -0
- package/dist/importDevModuleWithRetry.d.ts +2 -1
- package/dist/importDevModuleWithRetry.d.ts.map +1 -1
- package/dist/importDevModuleWithRetry.js +2 -1
- package/dist/importModule.d.ts +3 -0
- package/dist/importModule.d.ts.map +1 -0
- package/dist/importModule.js +4 -0
- package/dist/index.js +2 -1
- package/dist/indexInner.d.ts +30 -7
- package/dist/indexInner.d.ts.map +1 -1
- package/dist/indexInner.js +37 -2
- package/dist/json.d.ts +12 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +8 -0
- package/dist/jsxHelpers.d.ts +3 -0
- package/dist/jsxHelpers.d.ts.map +1 -0
- package/dist/jsxHelpers.js +6 -0
- package/dist/jsxRuntime.d.ts +1 -0
- package/dist/jsxRuntime.d.ts.map +1 -1
- package/dist/jsxRuntime.js +3 -1
- package/dist/jsxRuntimeSignals.d.ts.map +1 -1
- package/dist/jsxRuntimeSignals.js +1 -0
- package/dist/makeFinalConfig.d.ts.map +1 -1
- package/dist/makeFinalConfig.js +2 -0
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -1
- package/dist/makeInstanceConfigFromFrameworkConfig.js +2 -0
- package/dist/mergeConfigs.d.ts.map +1 -1
- package/dist/mergeConfigs.js +2 -6
- package/dist/nbsp.d.ts +1 -2
- package/dist/nbsp.d.ts.map +1 -1
- package/dist/nbsp.js +3 -7
- package/dist/objectMap.d.ts +1 -1
- package/dist/objectMap.d.ts.map +1 -1
- package/dist/pipeline/PipelineRequestHandler.d.ts +25 -0
- package/dist/pipeline/PipelineRequestHandler.d.ts.map +1 -0
- package/dist/pipeline/PipelineRequestHandler.js +104 -0
- package/dist/pipeline/contextStore.d.ts +12 -0
- package/dist/pipeline/contextStore.d.ts.map +1 -0
- package/dist/pipeline/contextStore.js +13 -0
- package/dist/pipeline/hydratePipeline.d.ts +4 -0
- package/dist/pipeline/hydratePipeline.d.ts.map +1 -0
- package/dist/pipeline/hydratePipeline.js +83 -0
- package/dist/pipeline/importRoutesModule.d.ts +6 -0
- package/dist/pipeline/importRoutesModule.d.ts.map +1 -0
- package/dist/pipeline/importRoutesModule.js +33 -0
- package/dist/pipeline/networkedTransport.d.ts +11 -0
- package/dist/pipeline/networkedTransport.d.ts.map +1 -0
- package/dist/pipeline/networkedTransport.js +54 -0
- package/dist/pipeline/pipeline.d.ts +107 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +113 -0
- package/dist/pipeline/pipeline.types.test.d.ts +760 -0
- package/dist/pipeline/pipeline.types.test.d.ts.map +1 -0
- package/dist/pipeline/pipeline.types.test.js +344 -0
- package/dist/pipeline/pipelineDefinition.d.ts +78 -0
- package/dist/pipeline/pipelineDefinition.d.ts.map +1 -0
- package/dist/pipeline/pipelineDefinition.js +11 -0
- package/dist/pipeline/pipelineSplit.types.test.d.ts +2445 -0
- package/dist/pipeline/pipelineSplit.types.test.d.ts.map +1 -0
- package/dist/pipeline/pipelineSplit.types.test.js +440 -0
- package/dist/pipeline/runPipeline.d.ts +29 -0
- package/dist/pipeline/runPipeline.d.ts.map +1 -0
- package/dist/pipeline/runPipeline.js +71 -0
- package/dist/pipeline/runSplitPipeline.d.ts +10 -0
- package/dist/pipeline/runSplitPipeline.d.ts.map +1 -0
- package/dist/pipeline/runSplitPipeline.js +52 -0
- package/dist/pipeline/splitPipeline.d.ts +62 -0
- package/dist/pipeline/splitPipeline.d.ts.map +1 -0
- package/dist/pipeline/splitPipeline.js +76 -0
- package/dist/pop.js +1 -1
- package/dist/rawHtml/filterContentNode.d.ts.map +1 -1
- package/dist/render/HeadData.d.ts +3 -1
- package/dist/render/HeadData.d.ts.map +1 -1
- package/dist/render/classComponentNodeToRenderingTree.d.ts.map +1 -1
- package/dist/render/componentNodeToRenderingTree.d.ts.map +1 -1
- package/dist/render/contentToHtml.d.ts +2 -2
- package/dist/render/contentToHtml.d.ts.map +1 -1
- package/dist/render/contentToHtml.js +2 -1
- package/dist/render/contentToHtmlDev.d.ts +1 -1
- package/dist/render/contentToHtmlDev.d.ts.map +1 -1
- package/dist/render/contentTreeToRenderingTree.d.ts.map +1 -1
- package/dist/render/contentTreeToRenderingTree.js +6 -2
- package/dist/render/functionComponentNodeToRenderingTree.d.ts.map +1 -1
- package/dist/render/functionComponentNodeToRenderingTree.js +2 -2
- package/dist/render/instantiateComponent.d.ts.map +1 -1
- package/dist/render/processHead.d.ts.map +1 -1
- package/dist/render/processHead.js +12 -18
- package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
- package/dist/render/renderingTreeToHtml.js +6 -3
- package/dist/render/rootToHtml.d.ts +2 -2
- package/dist/render/rootToHtml.d.ts.map +1 -1
- package/dist/requests/fetch/delete.d.ts.map +1 -1
- package/dist/requests/fetch/delete.js +5 -2
- package/dist/requests/fetch/get.js +1 -1
- package/dist/requests/fetch/patch.d.ts.map +1 -1
- package/dist/requests/fetch/patch.js +5 -2
- package/dist/requests/fetch/post.d.ts.map +1 -1
- package/dist/requests/fetch/post.js +5 -2
- package/dist/requests/fetch/put.d.ts.map +1 -1
- package/dist/requests/fetch/put.js +5 -2
- package/dist/routesLocationParts.d.ts +6 -0
- package/dist/routesLocationParts.d.ts.map +1 -0
- package/dist/routesLocationParts.js +10 -0
- package/dist/routing/AppRoutes.d.ts +5 -3
- package/dist/routing/AppRoutes.d.ts.map +1 -1
- package/dist/routing/MatchedRouteInfo.d.ts +13 -0
- package/dist/routing/MatchedRouteInfo.d.ts.map +1 -0
- package/dist/routing/MatchedRouteInfo.js +1 -0
- package/dist/routing/RouteContentFunction.d.ts +1 -2
- package/dist/routing/RouteContentFunction.d.ts.map +1 -1
- package/dist/routing/RouteDataFunction.type.d.ts +4 -2
- package/dist/routing/RouteDataFunction.type.d.ts.map +1 -1
- package/dist/routing/RoutePaths.d.ts +12 -0
- package/dist/routing/RoutePaths.d.ts.map +1 -0
- package/dist/routing/RouteTypes.d.ts +6 -4
- package/dist/routing/RouteTypes.d.ts.map +1 -1
- package/dist/routing/Routes.d.ts +20 -11
- package/dist/routing/Routes.d.ts.map +1 -1
- package/dist/routing/RoutesFunction.d.ts +11 -2
- package/dist/routing/RoutesFunction.d.ts.map +1 -1
- package/dist/routing/Serializable.d.ts +5 -0
- package/dist/routing/Serializable.d.ts.map +1 -0
- package/dist/routing/Serializable.js +1 -0
- package/dist/routing/builder.d.ts +100 -0
- package/dist/routing/builder.d.ts.map +1 -0
- package/dist/routing/builder.js +219 -0
- package/dist/routing/builder.trial.d.ts +2 -0
- package/dist/routing/builder.trial.d.ts.map +1 -0
- package/dist/routing/builder.trial.js +85 -0
- package/dist/routing/defineRoutes.d.ts +8 -0
- package/dist/routing/defineRoutes.d.ts.map +1 -0
- package/dist/routing/defineRoutes.js +3 -0
- package/dist/routing/pyramidRouting.d.ts +2 -0
- package/dist/routing/pyramidRouting.d.ts.map +1 -0
- package/dist/routing/pyramidRouting.js +13 -0
- package/dist/routing/redirectOf.d.ts +11 -0
- package/dist/routing/redirectOf.d.ts.map +1 -0
- package/dist/routing/redirectOf.js +32 -0
- package/dist/routing/registerGlobalData.d.ts +11 -3
- package/dist/routing/registerGlobalData.d.ts.map +1 -1
- package/dist/routing/registerGlobalData.js +6 -0
- package/dist/routing/registerParts.types.test.d.ts +2 -0
- package/dist/routing/registerParts.types.test.d.ts.map +1 -0
- package/dist/routing/registerParts.types.test.js +139 -0
- package/dist/routing/registerRoutes.d.ts +10 -0
- package/dist/routing/registerRoutes.d.ts.map +1 -0
- package/dist/routing/registerRoutes.js +9 -0
- package/dist/routing/registerRouting.d.ts +36 -0
- package/dist/routing/registerRouting.d.ts.map +1 -0
- package/dist/routing/registerRouting.js +34 -0
- package/dist/routing/registerRouting.types.test.d.ts +80 -0
- package/dist/routing/registerRouting.types.test.d.ts.map +1 -0
- package/dist/routing/registerRouting.types.test.js +120 -0
- package/dist/routing/registrationTypes.d.ts +11 -0
- package/dist/routing/registrationTypes.d.ts.map +1 -0
- package/dist/routing/registrationTypes.js +1 -0
- package/dist/routing/resolveAppRoutes.d.ts +5 -0
- package/dist/routing/resolveAppRoutes.d.ts.map +1 -0
- package/dist/routing/resolveAppRoutes.js +25 -0
- package/dist/routing/routesArray.d.ts +23 -0
- package/dist/routing/routesArray.d.ts.map +1 -0
- package/dist/routing/routesArray.js +20 -0
- package/dist/routing/routesArray.types.test.d.ts +2 -0
- package/dist/routing/routesArray.types.test.d.ts.map +1 -0
- package/dist/routing/routesArray.types.test.js +132 -0
- package/dist/routing/routingBuilder.d.ts +34 -0
- package/dist/routing/routingBuilder.d.ts.map +1 -0
- package/dist/routing/routingBuilder.js +32 -0
- package/dist/routing/routingBuilder.types.test.d.ts +2 -0
- package/dist/routing/routingBuilder.types.test.d.ts.map +1 -0
- package/dist/routing/routingBuilder.types.test.js +171 -0
- package/dist/routing/routingRegistry.d.ts +19 -0
- package/dist/routing/routingRegistry.d.ts.map +1 -0
- package/dist/routing/routingRegistry.js +29 -0
- package/dist/staticGen/getAppRoutes.d.ts +2 -2
- package/dist/staticGen/getAppRoutes.d.ts.map +1 -1
- package/dist/staticGen/getAppRoutes.js +9 -6
- package/dist/staticGen/staticGen.d.ts.map +1 -1
- package/dist/staticGen/staticGen.js +8 -2
- package/dist/style/styleContentSxy.d.ts.map +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +2 -0
- package/dist/syncServer/index.cjs +1 -2
- package/dist/syncServer/preload.js +2 -0
- package/dist/testing/contentToString.d.ts +13 -0
- package/dist/testing/contentToString.d.ts.map +1 -0
- package/dist/testing/contentToString.js +105 -0
- package/dist/testing/createTestApp.d.ts +25 -1
- package/dist/testing/createTestApp.d.ts.map +1 -1
- package/dist/testing/createTestApp.js +12 -3
- package/dist/testing/display.d.ts +2 -0
- package/dist/testing/display.d.ts.map +1 -0
- package/dist/testing/display.js +37 -0
- package/dist/testing/ensure.d.ts +119 -0
- package/dist/testing/ensure.d.ts.map +1 -0
- package/dist/testing/ensure.js +664 -0
- package/dist/testing/ensure.trial.d.ts +2 -0
- package/dist/testing/ensure.trial.d.ts.map +1 -0
- package/dist/testing/ensure.trial.js +9 -0
- package/dist/testing/ensure.types.test.d.ts +2 -0
- package/dist/testing/ensure.types.test.d.ts.map +1 -0
- package/dist/testing/ensure.types.test.js +34 -0
- package/dist/testing/helpers/contentHtmlElements.d.ts.map +1 -1
- package/dist/testing/host.d.ts +86 -15
- package/dist/testing/host.d.ts.map +1 -1
- package/dist/testing/host.js +82 -23
- package/dist/testing/host.types.test.d.ts +2 -0
- package/dist/testing/host.types.test.d.ts.map +1 -0
- package/dist/testing/host.types.test.js +81 -0
- package/dist/testing/hydrateTestApp.d.ts +17 -0
- package/dist/testing/hydrateTestApp.d.ts.map +1 -1
- package/dist/testing/hydrateTestApp.js +27 -6
- package/dist/testing/index.d.ts +5 -3
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -1
- package/dist/testing/pipeline/createTestPacketApp.d.ts +30 -0
- package/dist/testing/pipeline/createTestPacketApp.d.ts.map +1 -0
- package/dist/testing/pipeline/createTestPacketApp.js +45 -0
- package/dist/testing/pipeline/createTestPacketApp.types.test.d.ts +3 -0
- package/dist/testing/pipeline/createTestPacketApp.types.test.d.ts.map +1 -0
- package/dist/testing/pipeline/createTestPacketApp.types.test.js +101 -0
- package/dist/testing/pipeline/createTestPipelineApp.d.ts +70 -0
- package/dist/testing/pipeline/createTestPipelineApp.d.ts.map +1 -0
- package/dist/testing/pipeline/createTestPipelineApp.js +90 -0
- package/dist/testing/pipeline/createTestPipelineApp.types.test.d.ts +6 -0
- package/dist/testing/pipeline/createTestPipelineApp.types.test.d.ts.map +1 -0
- package/dist/testing/pipeline/createTestPipelineApp.types.test.js +146 -0
- package/dist/testing/pipeline/hostPipeline.d.ts +25 -0
- package/dist/testing/pipeline/hostPipeline.d.ts.map +1 -0
- package/dist/testing/pipeline/hostPipeline.js +18 -0
- package/dist/testing/pipeline/hydrateTestPipelineApp.d.ts +30 -0
- package/dist/testing/pipeline/hydrateTestPipelineApp.d.ts.map +1 -0
- package/dist/testing/pipeline/hydrateTestPipelineApp.js +193 -0
- package/dist/testing/pipeline/hydrateTestPipelineApp.types.test.d.ts +2 -0
- package/dist/testing/pipeline/hydrateTestPipelineApp.types.test.d.ts.map +1 -0
- package/dist/testing/pipeline/hydrateTestPipelineApp.types.test.js +27 -0
- package/dist/testing/pipeline/index.d.ts +5 -0
- package/dist/testing/pipeline/index.d.ts.map +1 -0
- package/dist/testing/pipeline/index.js +4 -0
- package/dist/testing/pipeline/pipelineTestApp.d.ts +34 -0
- package/dist/testing/pipeline/pipelineTestApp.d.ts.map +1 -0
- package/dist/testing/pipeline/pipelineTestApp.js +100 -0
- package/dist/testing/pipeline/testPipelineRoute.d.ts +2 -0
- package/dist/testing/pipeline/testPipelineRoute.d.ts.map +1 -0
- package/dist/testing/pipeline/testPipelineRoute.js +1 -0
- package/dist/testing/resolveContent.d.ts +18 -0
- package/dist/testing/resolveContent.d.ts.map +1 -0
- package/dist/testing/resolveContent.js +73 -0
- package/dist/testing/testingComponentPackage.d.ts +3 -1
- package/dist/testing/testingComponentPackage.d.ts.map +1 -1
- package/dist/testing/testingComponentPackage.js +16 -1
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +35 -31
- package/dist/update/integrateUpdateVdomPrebuild.js +20 -20
- package/dist/validChildren.d.ts.map +1 -1
- package/dist/zones/react.d.ts.map +1 -1
- package/package.json +23 -19
- package/types/helpers.d.ts +11 -2
- package/types/jsx/html.d.ts +29 -25
- package/types/jsx/jsx.d.ts +8 -8
- package/types/modules.d.ts +14 -3
- package/types/testing.d.ts +0 -0
- package/vendor/babel-core.js +5 -5
- package/vendor/babel-parser.js +1 -1
- package/vendor/babel-preset-react.js +32 -34
- package/vendor/babel-preset-typescript.js +5 -5
- package/vendor/chalk-extensions.js +3 -146
- package/vendor/chokidar.js +311 -5
- package/vendor/chunk-B34JUlnS.js +169 -0
- package/vendor/{chunk-Bu8ZRE-c.js → chunk-B9ttgKqg.js} +28 -25
- package/vendor/{chunk-D2EnpcLg.js → chunk-BGvapINa.js} +3 -164
- package/vendor/{chunk-Cqrj-Zqr.js → chunk-BmAiqUzD.js} +22 -8
- package/vendor/{chunk-BiUcnLhT.js → chunk-But4T5N_.js} +8 -3
- package/vendor/{chunk-OUnVY4Wm.js → chunk-DuR6SGzI.js} +162 -35
- package/vendor/css-select.js +3383 -0
- package/vendor/dotenv.js +2 -2
- package/vendor/express.js +61 -10
- package/vendor/manifest.json +4 -3
- package/vendor/postcss.js +1 -1
- package/vendor/precinct.js +5914 -3591
- package/vendor/valibot.js +418 -504
- package/dist/Servers/MatchedRouteInfo.d.ts +0 -11
- package/dist/Servers/MatchedRouteInfo.d.ts.map +0 -1
- package/dist/routing/__fluentRouteBuilder.d.ts +0 -80
- package/dist/routing/__fluentRouteBuilder.d.ts.map +0 -1
- package/dist/routing/__fluentRouteBuilder.js +0 -183
- package/dist/routing/__fluentRoutes.d.ts +0 -2
- package/dist/routing/__fluentRoutes.d.ts.map +0 -1
- package/dist/routing/__fluentRoutes.js +0 -59
- package/vendor/chunk-Hy-cCmu-.js +0 -23
- /package/dist/{Servers/MatchedRouteInfo.js → routing/RoutePaths.js} +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
+
import { TungstenSimpleComponent } from "../../Components.js";
|
|
5
|
+
import { contextStore } from '../../pipeline/contextStore.js';
|
|
6
|
+
import { pipeline } from '../../pipeline/pipeline.js';
|
|
7
|
+
import { splitPipeline } from '../../pipeline/splitPipeline.js';
|
|
8
|
+
import { createTestPipelineApp } from './createTestPipelineApp.js';
|
|
9
|
+
// Type tests: tsc is the assertion - nothing here runs. The root says what it reads, from its
|
|
10
|
+
// pipeline base; the app handed in must make it
|
|
11
|
+
const stage = pipeline.server('express').init(() => ({
|
|
12
|
+
api: 'client'
|
|
13
|
+
})).allRoutesData(() => ({
|
|
14
|
+
theme: 'dark'
|
|
15
|
+
}));
|
|
16
|
+
const app = stage.routes(() => []);
|
|
17
|
+
class Reads extends stage.SimpleComponent {
|
|
18
|
+
constructor(...args) {
|
|
19
|
+
super(...args);
|
|
20
|
+
_defineProperty(this, "content", () => `${this.tungsten.context.api} ${this.tungsten.allRoutesData.theme}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const other = pipeline.server('express').init(() => ({
|
|
24
|
+
db: 1
|
|
25
|
+
}));
|
|
26
|
+
class ReadsOther extends other.SimpleComponent {
|
|
27
|
+
constructor(...args) {
|
|
28
|
+
super(...args);
|
|
29
|
+
_defineProperty(this, "content", () => String(this.tungsten.context.db));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
class Plain extends TungstenSimpleComponent {
|
|
33
|
+
constructor(...args) {
|
|
34
|
+
super(...args);
|
|
35
|
+
_defineProperty(this, "content", () => null);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function checks() {
|
|
39
|
+
await createTestPipelineApp(app, Reads);
|
|
40
|
+
// not a pipeline component: it reads nothing of the app's
|
|
41
|
+
await createTestPipelineApp(app, Plain);
|
|
42
|
+
// @ts-expect-error -- ReadsOther reads a context this app does not make
|
|
43
|
+
await createTestPipelineApp(app, ReadsOther);
|
|
44
|
+
// the server's all-routes data, in the app's shape
|
|
45
|
+
await createTestPipelineApp(app, Reads, {
|
|
46
|
+
allRoutesData: {
|
|
47
|
+
theme: 'light'
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
// @ts-expect-error -- not the app's all-routes data
|
|
51
|
+
await createTestPipelineApp(app, Reads, {
|
|
52
|
+
allRoutesData: {
|
|
53
|
+
theme: 1
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const _mismatch = true;
|
|
58
|
+
const _fits = true;
|
|
59
|
+
// a stage in place of the app: the harness adds empty routes
|
|
60
|
+
export async function stageChecks() {
|
|
61
|
+
await createTestPipelineApp(stage, Reads);
|
|
62
|
+
// @ts-expect-error -- another pipeline's stage
|
|
63
|
+
await createTestPipelineApp(other, Reads);
|
|
64
|
+
await createTestPipelineApp(stage, Reads, {
|
|
65
|
+
allRoutesData: {
|
|
66
|
+
theme: 'light'
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// @ts-expect-error -- not the stage's all-routes data
|
|
70
|
+
await createTestPipelineApp(stage, Reads, {
|
|
71
|
+
allRoutesData: {
|
|
72
|
+
theme: 1
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// no Init: the stage's context is undefined, which its components read as Nothing
|
|
77
|
+
const bare = pipeline.server('express');
|
|
78
|
+
class ReadsNothing extends bare.SimpleComponent {
|
|
79
|
+
constructor(...args) {
|
|
80
|
+
super(...args);
|
|
81
|
+
_defineProperty(this, "content", () => null);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export async function bareChecks() {
|
|
85
|
+
await createTestPipelineApp(bare.routes(() => []), ReadsNothing);
|
|
86
|
+
}
|
|
87
|
+
// the split pipeline: the networked data the components read, this.tungsten.networked
|
|
88
|
+
const split = splitPipeline.server('express').serverInit(() => ({
|
|
89
|
+
networked: {
|
|
90
|
+
count: contextStore({
|
|
91
|
+
n: 0
|
|
92
|
+
}),
|
|
93
|
+
userId: 0
|
|
94
|
+
}
|
|
95
|
+
})).clientInit(networked => ({
|
|
96
|
+
context: {
|
|
97
|
+
userId: networked.userId
|
|
98
|
+
}
|
|
99
|
+
}));
|
|
100
|
+
const splitApp = split.routes(() => []);
|
|
101
|
+
class ReadsNetworked extends split.SimpleComponent {
|
|
102
|
+
constructor(...args) {
|
|
103
|
+
super(...args);
|
|
104
|
+
_defineProperty(this, "content", () => String(this.tungsten.networked.count.n.get()));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const _networked = true;
|
|
108
|
+
export async function splitChecks() {
|
|
109
|
+
await createTestPipelineApp(splitApp, ReadsNetworked, {
|
|
110
|
+
networked: {
|
|
111
|
+
count: contextStore({
|
|
112
|
+
n: 3
|
|
113
|
+
}),
|
|
114
|
+
userId: 7
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
await createTestPipelineApp(splitApp, ReadsNetworked, {
|
|
118
|
+
// @ts-expect-error -- not the networked data the app makes
|
|
119
|
+
networked: {
|
|
120
|
+
count: 3,
|
|
121
|
+
userId: 7
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// the server makes all-routes data, so clientInit's stage has no .routes() until the client's is
|
|
126
|
+
// given: the error says so
|
|
127
|
+
const serverData = splitPipeline.server('express').serverInit(() => undefined).serverAllRoutesData(() => ({
|
|
128
|
+
theme: 'dark'
|
|
129
|
+
}));
|
|
130
|
+
const noClientData = serverData.clientInit(() => undefined);
|
|
131
|
+
const withClientData = noClientData.clientAllRoutesData(() => ({
|
|
132
|
+
theme: 'dark'
|
|
133
|
+
}));
|
|
134
|
+
class ReadsTheme extends withClientData.SimpleComponent {
|
|
135
|
+
constructor(...args) {
|
|
136
|
+
super(...args);
|
|
137
|
+
_defineProperty(this, "content", () => this.tungsten.allRoutesData.theme);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const _noClientData = true;
|
|
141
|
+
const _notAStage = true;
|
|
142
|
+
export async function clientDataChecks() {
|
|
143
|
+
await createTestPipelineApp(withClientData, ReadsTheme);
|
|
144
|
+
// @ts-expect-error -- no .routes() yet
|
|
145
|
+
await createTestPipelineApp(noClientData, ReadsTheme);
|
|
146
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TungstenBaseComponent, TungstenComponentClass, TungstenComponentPropsBase } from '../../Components.jsx';
|
|
2
|
+
import type { ContentNodeElement } from '../../ContentNode.js';
|
|
3
|
+
import type { AppDataOptions, DontResolve, Hosted, HostedResolved, Resolve, ResolveOption, RouteOptions } from '../host.js';
|
|
4
|
+
export type { ComponentApi, Hosted, HostedResolved, HostedRoute, HostStoreOptions, Navigation, StateSetter, } from '../host.js';
|
|
5
|
+
export type HostPipelineOptions = RouteOptions & ResolveOption & AppDataOptions;
|
|
6
|
+
export type HostPipelineResolveOptions = RouteOptions & AppDataOptions & Resolve;
|
|
7
|
+
export type HostPipelineDontResolveOptions = RouteOptions & AppDataOptions & DontResolve;
|
|
8
|
+
type AnyClassComponent = TungstenBaseComponent<any, any>;
|
|
9
|
+
/** host() for a pipeline component: its data comes from the context, so there is no store option */
|
|
10
|
+
export declare function hostPipeline<Props extends TungstenComponentPropsBase, Component extends AnyClassComponent>(ComponentType: TungstenComponentClass<Props, Component>, props?: Props, options?: HostPipelineResolveOptions): Promise<HostedResolved<Component>>;
|
|
11
|
+
export declare function hostPipeline<Props extends TungstenComponentPropsBase, Component extends AnyClassComponent>(ComponentType: TungstenComponentClass<Props, Component>, props?: Props, options?: HostPipelineDontResolveOptions): Promise<Hosted<Component>>;
|
|
12
|
+
export declare function hostPipeline<Props extends TungstenComponentPropsBase, Component extends AnyClassComponent>(ComponentType: TungstenComponentClass<Props, Component>, props?: Props, options?: HostPipelineOptions): Promise<HostedResolved<Component> | Hosted<Component>>;
|
|
13
|
+
export declare namespace hostPipeline {
|
|
14
|
+
var generic: typeof hostPipelineGeneric;
|
|
15
|
+
var jsx: typeof hostPipelineJsx;
|
|
16
|
+
}
|
|
17
|
+
/** host.generic() with hostPipeline()'s options */
|
|
18
|
+
export declare function hostPipelineGeneric<Props extends TungstenComponentPropsBase, Component extends AnyClassComponent>(ComponentType: TungstenComponentClass<Props, Component>, options?: HostPipelineResolveOptions): (props: Props) => Promise<HostedResolved<Component>>;
|
|
19
|
+
export declare function hostPipelineGeneric<Props extends TungstenComponentPropsBase, Component extends AnyClassComponent>(ComponentType: TungstenComponentClass<Props, Component>, options: HostPipelineDontResolveOptions): (props: Props) => Promise<Hosted<Component>>;
|
|
20
|
+
export declare function hostPipelineGeneric<Props extends TungstenComponentPropsBase, Component extends AnyClassComponent>(ComponentType: TungstenComponentClass<Props, Component>, options?: HostPipelineOptions): (props: Props) => Promise<Hosted<Component> | HostedResolved<Component>>;
|
|
21
|
+
/** host.jsx() with hostPipeline()'s options */
|
|
22
|
+
export declare function hostPipelineJsx<Component extends AnyClassComponent = AnyClassComponent>(element: ContentNodeElement, options?: HostPipelineResolveOptions): Promise<HostedResolved<Component>>;
|
|
23
|
+
export declare function hostPipelineJsx<Component extends AnyClassComponent = AnyClassComponent>(element: ContentNodeElement, options: HostPipelineDontResolveOptions): Promise<Hosted<Component>>;
|
|
24
|
+
export declare function hostPipelineJsx<Component extends AnyClassComponent = AnyClassComponent>(element: ContentNodeElement, options?: HostPipelineOptions): Promise<Hosted<Component> | HostedResolved<Component>>;
|
|
25
|
+
//# sourceMappingURL=hostPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostPipeline.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/hostPipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,qBAAqB,EAAE,sBAAsB,EAAE,0BAA0B,EAC5E,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EACR,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAC5F,MAAM,YAAY,CAAA;AAGnB,YAAY,EACR,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,GAC/F,MAAM,YAAY,CAAA;AAInB,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAAA;AAE/E,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,CAAA;AAChF,MAAM,MAAM,8BAA8B,GAAG,YAAY,GAAG,cAAc,GAAG,WAAW,CAAA;AAExF,KAAK,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAOxD,oGAAoG;AAEpG,wBAAsB,YAAY,CAC9B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,iBAAiB,EAEnC,aAAa,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,CAAC,EAAE,0BAA0B,GACrC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;AAErC,wBAAsB,YAAY,CAC9B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,iBAAiB,EAEnC,aAAa,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,CAAC,EAAE,8BAA8B,GACzC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;AAE7B,wBAAsB,YAAY,CAC9B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,iBAAiB,EAEnC,aAAa,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;yBAPnC,YAAY;;;;AAoBlC,mDAAmD;AAEnD,wBAAgB,mBAAmB,CAC/B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,iBAAiB,EAEnC,aAAa,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,OAAO,CAAC,EAAE,0BAA0B,GACrC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;AAEvD,wBAAgB,mBAAmB,CAC/B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,iBAAiB,EAEnC,aAAa,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,OAAO,EAAE,8BAA8B,GACxC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;AAE/C,wBAAgB,mBAAmB,CAC/B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,iBAAiB,EAEnC,aAAa,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EACvD,OAAO,CAAC,EAAE,mBAAmB,GAC9B,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;AAY3E,+CAA+C;AAE/C,wBAAsB,eAAe,CAAC,SAAS,SAAS,iBAAiB,GAAG,iBAAiB,EACzF,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAClE,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;AAErC,wBAAsB,eAAe,CAAC,SAAS,SAAS,iBAAiB,GAAG,iBAAiB,EACzF,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,8BAA8B,GACrE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;AAE7B,wBAAsB,eAAe,CAAC,SAAS,SAAS,iBAAiB,GAAG,iBAAiB,EACzF,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { host, hostJsx } from '../host.js';
|
|
2
|
+
// host()'s implementation signature, which its overloads hide
|
|
3
|
+
const hostImplementation = host;
|
|
4
|
+
// Implementation
|
|
5
|
+
export async function hostPipeline(ComponentType, props, options) {
|
|
6
|
+
return hostImplementation(ComponentType, props, options);
|
|
7
|
+
}
|
|
8
|
+
// implementation
|
|
9
|
+
export function hostPipelineGeneric(ComponentType, options) {
|
|
10
|
+
return async props => hostImplementation(ComponentType, props, options);
|
|
11
|
+
}
|
|
12
|
+
// implementation
|
|
13
|
+
export async function hostPipelineJsx(element, options) {
|
|
14
|
+
return hostJsx(element, options); // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the overloads above type them
|
|
15
|
+
}
|
|
16
|
+
// the variants hang off hostPipeline() too, as host()'s do
|
|
17
|
+
hostPipeline.generic = hostPipelineGeneric;
|
|
18
|
+
hostPipeline.jsx = hostPipelineJsx;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ConstructPackage, TungstenBaseComponent, TungstenComponentPropsBase } from '../../Components.jsx';
|
|
2
|
+
import type { ReqRes } from '../../ReqRes.js';
|
|
3
|
+
import type { TestStoreOverride } from '../createTestApp.js';
|
|
4
|
+
import type { AppCheck } from './createTestPipelineApp.js';
|
|
5
|
+
import type { HydrateTestApp } from '../hydrateTestApp.js';
|
|
6
|
+
export type HydrateTestPipelineAppOptions<Props extends object> = {
|
|
7
|
+
document?: Document;
|
|
8
|
+
props?: Props;
|
|
9
|
+
serverProps?: Props;
|
|
10
|
+
container?: HTMLElement;
|
|
11
|
+
location?: string;
|
|
12
|
+
reqRes?: ReqRes;
|
|
13
|
+
stores?: readonly TestStoreOverride<any>[];
|
|
14
|
+
fileVersions?: Record<string, string>;
|
|
15
|
+
csr?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type HydrateTestPipelineApp<Component extends TungstenBaseComponent> = HydrateTestApp<Component>;
|
|
18
|
+
type HydrateTestPipelineAppArgs<Props extends object> = object extends Props ? [options?: HydrateTestPipelineAppOptions<Props>] : keyof Props extends never ? [options?: HydrateTestPipelineAppOptions<Props>] : [options: HydrateTestPipelineAppOptions<Props> & {
|
|
19
|
+
props: Props;
|
|
20
|
+
}];
|
|
21
|
+
/**
|
|
22
|
+
* hydrateTestApp() for an app built with pipeline() or splitPipeline(): the server pass runs the
|
|
23
|
+
* app's server stages, as a request does, and renders; the page carries the all-routes data and
|
|
24
|
+
* the networked data; the client pass runs the app's client stages, as hydratePipeline() does, and
|
|
25
|
+
* hydrates the parsed HTML. So a component whose markup depends on a context only one side makes
|
|
26
|
+
* shows up in `mismatches`, or throws on a structural difference.
|
|
27
|
+
*/
|
|
28
|
+
export declare function hydrateTestPipelineApp<Props extends TungstenComponentPropsBase, Component extends TungstenBaseComponent<any, any>, A extends object, RouteData = undefined>(pipelineOrApp: A & AppCheck<A, Component>, RootComponent: new (pkg: ConstructPackage<Props, RouteData>) => Component, ...args: HydrateTestPipelineAppArgs<Props>): Promise<HydrateTestPipelineApp<Component>>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=hydrateTestPipelineApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrateTestPipelineApp.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/hydrateTestPipelineApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EACtE,MAAM,sBAAsB,CAAA;AAI7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAK7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AA0B1D,MAAM,MAAM,6BAA6B,CAAC,KAAK,SAAS,MAAM,IAAI;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAA;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,GAAG,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,qBAAqB,IACpE,cAAc,CAAC,SAAS,CAAC,CAAA;AAE/B,KAAK,0BAA0B,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,SAAS,KAAK,GACtE,CAAC,OAAO,CAAC,EAAE,6BAA6B,CAAC,KAAK,CAAC,CAAC,GAChD,MAAM,KAAK,SAAS,KAAK,GACrB,CAAC,OAAO,CAAC,EAAE,6BAA6B,CAAC,KAAK,CAAC,CAAC,GAChD,CAAC,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAiB5E;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CACxC,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,EAEjD,CAAC,SAAS,MAAM,EAChB,SAAS,GAAG,SAAS,EAErB,aAAa,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,EACzC,aAAa,EAAE,KAAK,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,SAAS,EACzE,GAAG,IAAI,EAAE,0BAA0B,CAAC,KAAK,CAAC,GAC3C,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAiJ5C"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { $props, $type } from '../../contentNodeSymbols.js';
|
|
2
|
+
import { DomPointer } from '../../DomPointer.js';
|
|
3
|
+
import { hydrateRootComponent, hydrationRouting, makeDefaultHydrateMeta } from "../../hydrate/hydrate.js";
|
|
4
|
+
import { Instance } from '../../Instance/Instance.js';
|
|
5
|
+
import { JSONstringify } from '../../json.js';
|
|
6
|
+
import { NetworkedTransport } from '../../pipeline/networkedTransport.js';
|
|
7
|
+
import { afterRoutingFor, pipelineRoutes, routingContext, routingNetworkedData, symmetricServer } from '../../pipeline/runPipeline.js';
|
|
8
|
+
import { clientRoute } from '../../pipeline/pipelineDefinition.js';
|
|
9
|
+
import { splitServer } from '../../pipeline/runSplitPipeline.js';
|
|
10
|
+
import { contentTreeToRenderingTree } from '../../render/contentTreeToRenderingTree.js';
|
|
11
|
+
import { renderingNodeToHtml } from '../../render/renderingTreeToHtml.js';
|
|
12
|
+
import { initStores } from '../../Servers/initStores.js';
|
|
13
|
+
import { UpdateScheduler } from '../../update/UpdateScheduler.js';
|
|
14
|
+
import { bridgeHappyDomGlobals, HydrateTestAppImplementation, requireClient } from '../hydrateTestApp.js';
|
|
15
|
+
import { toApp } from './createTestPipelineApp.js';
|
|
16
|
+
import { waitForEnvIfLoading } from '../loadEnv.js';
|
|
17
|
+
// the framework brands what it builds
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
19
|
+
const asGlobalData = data => data;
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
21
|
+
const asContext = context => context;
|
|
22
|
+
const applyStores = async (instance, overrides) => {
|
|
23
|
+
for (const override of overrides) {
|
|
24
|
+
await override.initialize(override.registration.getStore(instance.stores));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const appRoutesFor = (app, init) => reqRes => pipelineRoutes(app, reqRes, init, true);
|
|
28
|
+
/**
|
|
29
|
+
* hydrateTestApp() for an app built with pipeline() or splitPipeline(): the server pass runs the
|
|
30
|
+
* app's server stages, as a request does, and renders; the page carries the all-routes data and
|
|
31
|
+
* the networked data; the client pass runs the app's client stages, as hydratePipeline() does, and
|
|
32
|
+
* hydrates the parsed HTML. So a component whose markup depends on a context only one side makes
|
|
33
|
+
* shows up in `mismatches`, or throws on a structural difference.
|
|
34
|
+
*/
|
|
35
|
+
export async function hydrateTestPipelineApp(pipelineOrApp, RootComponent, ...args) {
|
|
36
|
+
requireClient('hydrateTestPipelineApp()');
|
|
37
|
+
await waitForEnvIfLoading();
|
|
38
|
+
const app = toApp(pipelineOrApp);
|
|
39
|
+
const options = args[0];
|
|
40
|
+
const suppliedDocument = options?.document ?? globalThis.document;
|
|
41
|
+
if (suppliedDocument === undefined) {
|
|
42
|
+
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
43
|
+
throw new Error('hydrateTestPipelineApp() requires options.document when no global document is' + ' available.');
|
|
44
|
+
}
|
|
45
|
+
const document = suppliedDocument;
|
|
46
|
+
const ownsContainer = options?.container === undefined;
|
|
47
|
+
const container = options?.container ?? document.createElement('div');
|
|
48
|
+
if (container.ownerDocument !== document) {
|
|
49
|
+
throw new Error('The HydrateTestApp container must belong to options.document.');
|
|
50
|
+
}
|
|
51
|
+
if (container.childNodes.length > 0) {
|
|
52
|
+
throw new Error('The HydrateTestApp container must be empty before hydrating.');
|
|
53
|
+
}
|
|
54
|
+
const clientProps = options?.props ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
55
|
+
const serverProps = options?.serverProps ?? clientProps;
|
|
56
|
+
const location = options?.location ?? '/';
|
|
57
|
+
const overrides = options?.stores ?? [];
|
|
58
|
+
const instanceConfig = {
|
|
59
|
+
prod: false,
|
|
60
|
+
useRootComponent: true,
|
|
61
|
+
clientSideNav: true,
|
|
62
|
+
siteBasePath: '/',
|
|
63
|
+
staticSite: false,
|
|
64
|
+
csr: options?.csr ?? false
|
|
65
|
+
};
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- a stand-in request
|
|
67
|
+
const reqRes = options?.reqRes ?? {
|
|
68
|
+
req: {
|
|
69
|
+
url: location,
|
|
70
|
+
headers: {}
|
|
71
|
+
},
|
|
72
|
+
res: {}
|
|
73
|
+
};
|
|
74
|
+
// Server pass: the app's server stages, as PipelineRequestHandler runs them, then the render
|
|
75
|
+
const runner = app.split === true ? splitServer : symmetricServer;
|
|
76
|
+
const serverDataLoading = {
|
|
77
|
+
value: false
|
|
78
|
+
};
|
|
79
|
+
const routed = await runner.route(app, reqRes, location, serverDataLoading, true);
|
|
80
|
+
const post = await runner.post(app, reqRes, routed.init, routed.allRoutesData);
|
|
81
|
+
const served = runner.networked(routed.init, post);
|
|
82
|
+
const transport = new NetworkedTransport(served);
|
|
83
|
+
transport.snapshotAfterRouting();
|
|
84
|
+
const serverGlobalData = asGlobalData(routed.allRoutesData);
|
|
85
|
+
const ssrScheduler = new UpdateScheduler();
|
|
86
|
+
let html;
|
|
87
|
+
try {
|
|
88
|
+
const serverContext = asContext(runner.context(routed.init, post));
|
|
89
|
+
const serverNetworked = transport; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- as the request handler hands it
|
|
90
|
+
const ssrStores = initStores(location, reqRes, serverGlobalData, routed.matchedRouteInfo, serverDataLoading, serverContext, serverNetworked);
|
|
91
|
+
const ssrInstance = new Instance(location, instanceConfig, reqRes, appRoutesFor(app, routed.init), routed.routes, ssrStores.internalStore, ssrStores.stores, ssrStores.storeSubscriptions, serverGlobalData, routed.matchedRouteInfo, {
|
|
92
|
+
document,
|
|
93
|
+
window: document.defaultView,
|
|
94
|
+
scheduler: ssrScheduler,
|
|
95
|
+
navigation: false
|
|
96
|
+
});
|
|
97
|
+
ssrInstance.fileVersions = options?.fileVersions;
|
|
98
|
+
ssrInstance.context = serverContext;
|
|
99
|
+
ssrInstance.networkedData = serverNetworked;
|
|
100
|
+
ssrInstance.pipelineNetworked = served ?? {};
|
|
101
|
+
await applyStores(ssrInstance, overrides);
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- rootToHtml.ts builds a root content node the same way
|
|
103
|
+
const componentNode = {
|
|
104
|
+
[$type]: RootComponent,
|
|
105
|
+
[$props]: serverProps
|
|
106
|
+
};
|
|
107
|
+
const renderingTree = await contentTreeToRenderingTree(componentNode, null, ssrInstance, false);
|
|
108
|
+
const headData = {
|
|
109
|
+
found: false,
|
|
110
|
+
instance: ssrInstance,
|
|
111
|
+
clientImportAliases: {},
|
|
112
|
+
importAliases: {},
|
|
113
|
+
compilationLocation: '',
|
|
114
|
+
dev: false,
|
|
115
|
+
tungstenPublicEnv: undefined,
|
|
116
|
+
siteBasePath: '',
|
|
117
|
+
hmr: true,
|
|
118
|
+
csr: instanceConfig.csr
|
|
119
|
+
};
|
|
120
|
+
html = await renderingNodeToHtml(renderingTree, false, headData, null);
|
|
121
|
+
} finally {
|
|
122
|
+
ssrScheduler.dispose();
|
|
123
|
+
}
|
|
124
|
+
// what the page carries: processHead writes the transport after the render
|
|
125
|
+
const fromPage = JSON.parse(JSONstringify(transport));
|
|
126
|
+
if (ownsContainer) {
|
|
127
|
+
if (document.body === null) {
|
|
128
|
+
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
129
|
+
throw new Error('The supplied document must have a body element.');
|
|
130
|
+
}
|
|
131
|
+
document.body.appendChild(container);
|
|
132
|
+
}
|
|
133
|
+
container.innerHTML = html;
|
|
134
|
+
bridgeHappyDomGlobals(document);
|
|
135
|
+
// Client pass: the app's own client run, with the page's data, as hydratePipeline() runs it
|
|
136
|
+
const ran = await app.client(app, fromPage);
|
|
137
|
+
const routes = pipelineRoutes(app, null, ran.init, true);
|
|
138
|
+
const {
|
|
139
|
+
key,
|
|
140
|
+
params,
|
|
141
|
+
data
|
|
142
|
+
} = routed.matchedRouteInfo;
|
|
143
|
+
const matchedRouteInfo = hydrationRouting({
|
|
144
|
+
key,
|
|
145
|
+
params,
|
|
146
|
+
...('data' in routed.matchedRouteInfo ? {
|
|
147
|
+
data
|
|
148
|
+
} : {})
|
|
149
|
+
}, routes);
|
|
150
|
+
const posted = await ran.post(serverGlobalData);
|
|
151
|
+
const afterRouting = afterRoutingFor(posted.afterRouting);
|
|
152
|
+
const context = afterRouting === undefined ? asContext(posted.context) : await afterRouting(clientRoute(matchedRouteInfo, location), serverGlobalData);
|
|
153
|
+
const networkedData = routingNetworkedData(ran.routingNetworkedData);
|
|
154
|
+
const scheduler = new UpdateScheduler();
|
|
155
|
+
const {
|
|
156
|
+
internalStore,
|
|
157
|
+
stores,
|
|
158
|
+
storeSubscriptions
|
|
159
|
+
} = initStores(location, null, serverGlobalData, matchedRouteInfo, null, context, networkedData);
|
|
160
|
+
const instance = new Instance(location, instanceConfig, null, appRoutesFor(app, ran.init), routes, internalStore, stores, storeSubscriptions, serverGlobalData, matchedRouteInfo, {
|
|
161
|
+
document,
|
|
162
|
+
window: document.defaultView,
|
|
163
|
+
scheduler,
|
|
164
|
+
navigation: false
|
|
165
|
+
});
|
|
166
|
+
instance.fileVersions = options?.fileVersions;
|
|
167
|
+
instance.context = context;
|
|
168
|
+
instance.networkedData = networkedData;
|
|
169
|
+
instance.pipelineNetworked = ran.networked;
|
|
170
|
+
const rerun = ran.allRoutesData;
|
|
171
|
+
instance.pipeline = {
|
|
172
|
+
routingContext: routingContext(ran.routingContext),
|
|
173
|
+
routingNetworkedData: networkedData,
|
|
174
|
+
allRoutesData: rerun && (async () => asGlobalData(await rerun())),
|
|
175
|
+
afterRouting
|
|
176
|
+
};
|
|
177
|
+
try {
|
|
178
|
+
await applyStores(instance, overrides);
|
|
179
|
+
const meta = makeDefaultHydrateMeta();
|
|
180
|
+
const component = await hydrateRootComponent(instance, RootComponent, new DomPointer(container, 0), meta, clientProps, matchedRouteInfo.params, matchedRouteInfo.data);
|
|
181
|
+
return new HydrateTestAppImplementation(document, container, component, instance, scheduler, ownsContainer, html, meta.mismatches);
|
|
182
|
+
} catch (error) {
|
|
183
|
+
try {
|
|
184
|
+
instance.disposeRegisteredComponents();
|
|
185
|
+
} catch {
|
|
186
|
+
// Preserve the mount failure.
|
|
187
|
+
}
|
|
188
|
+
scheduler.dispose();
|
|
189
|
+
while (container.firstChild !== null) container.removeChild(container.firstChild);
|
|
190
|
+
if (ownsContainer) container.remove();
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrateTestPipelineApp.types.test.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/hydrateTestPipelineApp.types.test.ts"],"names":[],"mappings":"AAeA,wBAAsB,MAAM,kBAO3B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
+
import { pipeline } from '../../pipeline/pipeline.js';
|
|
5
|
+
import { hydrateTestPipelineApp } from './hydrateTestPipelineApp.js';
|
|
6
|
+
// Type tests: tsc is the assertion - nothing here runs. The app or stage must make what the root
|
|
7
|
+
// reads, as createTestPipelineApp()'s must
|
|
8
|
+
const stage = pipeline.server('express').init(() => ({
|
|
9
|
+
api: 'client'
|
|
10
|
+
}));
|
|
11
|
+
class Reads extends stage.SimpleComponent {
|
|
12
|
+
constructor(...args) {
|
|
13
|
+
super(...args);
|
|
14
|
+
_defineProperty(this, "content", () => this.tungsten.context.api);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const other = pipeline.server('express').init(() => ({
|
|
18
|
+
db: 1
|
|
19
|
+
}));
|
|
20
|
+
export async function checks() {
|
|
21
|
+
await hydrateTestPipelineApp(stage.routes(() => []), Reads);
|
|
22
|
+
await hydrateTestPipelineApp(stage, Reads);
|
|
23
|
+
// @ts-expect-error -- another pipeline's app
|
|
24
|
+
await hydrateTestPipelineApp(other.routes(() => []), Reads);
|
|
25
|
+
// @ts-expect-error -- another pipeline's stage
|
|
26
|
+
await hydrateTestPipelineApp(other, Reads);
|
|
27
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { type AppCheck, type CreateTestPipelineAppArgs, type TestPipelineApp, type TestPipelineAppOptions, createTestPipelineApp, } from './createTestPipelineApp.js';
|
|
2
|
+
export { type CreateTestPacketAppArgs, type PacketForComponent, type TestPacketAppOptions, createTestPacketApp, } from './createTestPacketApp.js';
|
|
3
|
+
export { type HydrateTestPipelineApp, type HydrateTestPipelineAppOptions, hydrateTestPipelineApp, } from './hydrateTestPipelineApp.js';
|
|
4
|
+
export { type HostPipelineDontResolveOptions, type HostPipelineOptions, type HostPipelineResolveOptions, type HostStoreOptions, type Hosted, type HostedResolved, type HostedRoute, hostPipeline, hostPipelineGeneric, hostPipelineJsx, } from './hostPipeline.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,QAAQ,EAAE,KAAK,yBAAyB,EAAE,KAAK,eAAe,EACnE,KAAK,sBAAsB,EAC3B,qBAAqB,GACxB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACH,KAAK,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAChF,mBAAmB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACH,KAAK,sBAAsB,EAAE,KAAK,6BAA6B,EAC/D,sBAAsB,GACzB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACH,KAAK,8BAA8B,EAAE,KAAK,mBAAmB,EAAE,KAAK,0BAA0B,EAC9F,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EACzE,YAAY,EAAE,mBAAmB,EAAE,eAAe,GACrD,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createTestPipelineApp } from './createTestPipelineApp.js';
|
|
2
|
+
export { createTestPacketApp } from './createTestPacketApp.js';
|
|
3
|
+
export { hydrateTestPipelineApp } from './hydrateTestPipelineApp.js';
|
|
4
|
+
export { hostPipeline, hostPipelineGeneric, hostPipelineJsx } from './hostPipeline.js';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ConstructPackage, TungstenBaseComponent } from '../../Components.jsx';
|
|
2
|
+
import type { AsGlobalData, BrandedContext, BrandedNetworkedData } from '../../Brands.js';
|
|
3
|
+
import type { InstancePipeline } from '../../Instance/Instance.js';
|
|
4
|
+
import type { AppRoutes } from '../../routing/AppRoutes.js';
|
|
5
|
+
import type { MatchedRouteInfo } from '../../routing/MatchedRouteInfo.js';
|
|
6
|
+
import type { RoutesWithSettings } from '../../routing/Routes.js';
|
|
7
|
+
import { type TestApp, type TestStoreOverride } from '../createTestApp.js';
|
|
8
|
+
export type PipelineTestAppOptions<Props extends object> = {
|
|
9
|
+
document?: Document;
|
|
10
|
+
props?: Props;
|
|
11
|
+
container?: HTMLElement;
|
|
12
|
+
location?: string;
|
|
13
|
+
stores?: readonly TestStoreOverride<any>[];
|
|
14
|
+
fileVersions?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
export type PipelineTestTarget = {
|
|
17
|
+
document: Document;
|
|
18
|
+
container: HTMLElement;
|
|
19
|
+
ownsContainer: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type PipelineTestData = {
|
|
22
|
+
location: string;
|
|
23
|
+
routes: RoutesWithSettings<any>;
|
|
24
|
+
appRoutes: AppRoutes<any>;
|
|
25
|
+
matchedRouteInfo: MatchedRouteInfo;
|
|
26
|
+
allRoutesData: AsGlobalData;
|
|
27
|
+
context: BrandedContext;
|
|
28
|
+
networkedData: BrandedNetworkedData;
|
|
29
|
+
networked: object;
|
|
30
|
+
pipeline: InstancePipeline;
|
|
31
|
+
};
|
|
32
|
+
export declare function pipelineTestTarget(options: PipelineTestAppOptions<object> | undefined, name: string): PipelineTestTarget;
|
|
33
|
+
export declare function mountPipelineTestApp<Props extends object, Component extends TungstenBaseComponent, RouteData>(target: PipelineTestTarget, data: PipelineTestData, RootComponent: new (pkg: ConstructPackage<Props, RouteData>) => Component, options: PipelineTestAppOptions<Props> | undefined): Promise<TestApp<Component>>;
|
|
34
|
+
//# sourceMappingURL=pipelineTestApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipelineTestApp.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/pipelineTestApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAKjE,OAAO,EAAyB,KAAK,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKjG,MAAM,MAAM,sBAAsB,CAAC,KAAK,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,SAAS,CAAC,EAAE,WAAW,CAAA;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAA;IAE1C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,WAAW,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACzB,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC/B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACzB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,YAAY,CAAA;IAC3B,OAAO,EAAE,cAAc,CAAA;IACvB,aAAa,EAAE,oBAAoB,CAAA;IAEnC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAGD,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAClE,kBAAkB,CAqBpB;AAED,wBAAsB,oBAAoB,CACtC,KAAK,SAAS,MAAM,EAAE,SAAS,SAAS,qBAAqB,EAAE,SAAS,EAExE,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,gBAAgB,EACtB,aAAa,EAAE,KAAK,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,SAAS,EACzE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAkF7B"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Instance } from '../../Instance/Instance.js';
|
|
2
|
+
import { initStores } from '../../Servers/initStores.js';
|
|
3
|
+
import { createTungstenRootComponent } from '../../update/integrateUpdateVdom.js';
|
|
4
|
+
import { UpdateScheduler } from '../../update/UpdateScheduler.js';
|
|
5
|
+
import { TestAppImplementation } from '../createTestApp.js';
|
|
6
|
+
// checked before anything runs
|
|
7
|
+
export function pipelineTestTarget(options, name) {
|
|
8
|
+
const suppliedDocument = options?.document ?? globalThis.document;
|
|
9
|
+
if (suppliedDocument === undefined) {
|
|
10
|
+
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
11
|
+
throw new Error(`${name} requires options.document when no global document is available.`);
|
|
12
|
+
}
|
|
13
|
+
const document = suppliedDocument;
|
|
14
|
+
const ownsContainer = options?.container === undefined;
|
|
15
|
+
const container = options?.container ?? document.createElement('div');
|
|
16
|
+
if (container.ownerDocument !== document) {
|
|
17
|
+
throw new Error('The TestApp container must belong to options.document.');
|
|
18
|
+
}
|
|
19
|
+
if (container.childNodes.length > 0) {
|
|
20
|
+
throw new Error('The TestApp container must be empty before mounting.');
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
document,
|
|
24
|
+
container,
|
|
25
|
+
ownsContainer
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export async function mountPipelineTestApp(target, data, RootComponent, options) {
|
|
29
|
+
const {
|
|
30
|
+
document,
|
|
31
|
+
container,
|
|
32
|
+
ownsContainer
|
|
33
|
+
} = target;
|
|
34
|
+
const {
|
|
35
|
+
location,
|
|
36
|
+
allRoutesData,
|
|
37
|
+
matchedRouteInfo,
|
|
38
|
+
context,
|
|
39
|
+
networkedData
|
|
40
|
+
} = data;
|
|
41
|
+
if (ownsContainer) {
|
|
42
|
+
if (document.body === null) {
|
|
43
|
+
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
44
|
+
throw new Error('The supplied document must have a body element.');
|
|
45
|
+
}
|
|
46
|
+
document.body.appendChild(container);
|
|
47
|
+
}
|
|
48
|
+
const scheduler = new UpdateScheduler();
|
|
49
|
+
const runtimeContext = {
|
|
50
|
+
document,
|
|
51
|
+
window: document.defaultView,
|
|
52
|
+
scheduler,
|
|
53
|
+
navigation: false
|
|
54
|
+
};
|
|
55
|
+
const {
|
|
56
|
+
internalStore,
|
|
57
|
+
stores,
|
|
58
|
+
storeSubscriptions
|
|
59
|
+
} = initStores(location, null, allRoutesData, matchedRouteInfo, null, context, networkedData);
|
|
60
|
+
const instanceConfig = {
|
|
61
|
+
prod: false,
|
|
62
|
+
useRootComponent: true,
|
|
63
|
+
clientSideNav: true,
|
|
64
|
+
siteBasePath: '/',
|
|
65
|
+
staticSite: false,
|
|
66
|
+
csr: false
|
|
67
|
+
};
|
|
68
|
+
const instance = new Instance(location, instanceConfig, null, data.appRoutes, data.routes, internalStore, stores, storeSubscriptions, allRoutesData, matchedRouteInfo, runtimeContext);
|
|
69
|
+
instance.fileVersions = options?.fileVersions;
|
|
70
|
+
instance.context = context;
|
|
71
|
+
instance.networkedData = networkedData;
|
|
72
|
+
instance.pipelineNetworked = data.networked;
|
|
73
|
+
instance.pipeline = data.pipeline;
|
|
74
|
+
try {
|
|
75
|
+
for (const override of options?.stores ?? []) {
|
|
76
|
+
const store = override.registration.getStore(instance.stores);
|
|
77
|
+
await override.initialize(store);
|
|
78
|
+
}
|
|
79
|
+
const props = options?.props ?? {};
|
|
80
|
+
const root = await createTungstenRootComponent(RootComponent, props, matchedRouteInfo.params, matchedRouteInfo.data, instance, container);
|
|
81
|
+
const testApp = new TestAppImplementation(document, container, root.component, instance, scheduler, root, ownsContainer);
|
|
82
|
+
try {
|
|
83
|
+
await testApp.resolved();
|
|
84
|
+
return testApp;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
await testApp.unmount();
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
} catch (error) {
|
|
90
|
+
try {
|
|
91
|
+
instance.disposeRegisteredComponents();
|
|
92
|
+
} catch {
|
|
93
|
+
// Preserve the mount failure.
|
|
94
|
+
}
|
|
95
|
+
scheduler.dispose();
|
|
96
|
+
while (container.firstChild !== null) container.removeChild(container.firstChild);
|
|
97
|
+
if (ownsContainer) container.remove();
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testPipelineRoute.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/testPipelineRoute.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|