tungsten 0.6.3 → 0.7.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/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 +7 -1
- package/dist/FrameworkConfig.d.ts.map +1 -1
- 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 +39 -8
- package/dist/Instance/InstanceConfig.d.ts +2 -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 +62 -20
- package/dist/Servers/ProdServer.d.ts +4 -2
- package/dist/Servers/ProdServer.d.ts.map +1 -1
- package/dist/Servers/ProdServer.js +77 -18
- 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 +3 -2
- 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 +18 -0
- package/dist/componentHelpers.d.ts.map +1 -0
- package/dist/componentHelpers.js +28 -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 +14 -2
- package/dist/frameworkConfigSchema.d.ts.map +1 -1
- package/dist/frameworkConfigSchema.js +11 -2
- 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/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 +57 -44
- 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/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/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -1
- package/dist/makeInstanceConfigFromFrameworkConfig.js +1 -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 +96 -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 +64 -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 +105 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +108 -0
- package/dist/pipeline/pipeline.types.test.d.ts +650 -0
- package/dist/pipeline/pipeline.types.test.d.ts.map +1 -0
- package/dist/pipeline/pipeline.types.test.js +342 -0
- package/dist/pipeline/pipelineDefinition.d.ts +67 -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 +1971 -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 +31 -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 +48 -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 +2 -1
- 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 +11 -0
- package/dist/routing/MatchedRouteInfo.d.ts.map +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/RoutePaths.js +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 +17 -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 +99 -0
- package/dist/routing/builder.d.ts.map +1 -0
- package/dist/routing/builder.js +213 -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/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 +33 -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/createTestApp.d.ts +25 -1
- package/dist/testing/createTestApp.d.ts.map +1 -1
- package/dist/testing/createTestApp.js +12 -3
- package/dist/testing/createTestPipelineApp.d.ts +25 -0
- package/dist/testing/createTestPipelineApp.d.ts.map +1 -0
- package/dist/testing/createTestPipelineApp.js +153 -0
- package/dist/testing/ensure.d.ts +108 -0
- package/dist/testing/ensure.d.ts.map +1 -0
- package/dist/testing/ensure.js +522 -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/helpers/contentHtmlElements.d.ts.map +1 -1
- package/dist/testing/host.d.ts +80 -9
- package/dist/testing/host.d.ts.map +1 -1
- package/dist/testing/host.js +81 -20
- package/dist/testing/hostPipeline.d.ts +157 -0
- package/dist/testing/hostPipeline.d.ts.map +1 -0
- package/dist/testing/hostPipeline.js +341 -0
- package/dist/testing/hydrateTestApp.d.ts +17 -0
- package/dist/testing/hydrateTestApp.d.ts.map +1 -1
- package/dist/testing/hydrateTestApp.js +26 -6
- package/dist/testing/hydrateTestPipelineApp.d.ts +30 -0
- package/dist/testing/hydrateTestPipelineApp.d.ts.map +1 -0
- package/dist/testing/hydrateTestPipelineApp.js +190 -0
- package/dist/testing/index.d.ts +6 -3
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4 -1
- package/dist/testing/resolveContent.d.ts +16 -0
- package/dist/testing/resolveContent.d.ts.map +1 -0
- package/dist/testing/resolveContent.js +65 -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 +20 -18
- 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/dotenv.js +2 -2
- package/vendor/express.js +61 -10
- package/vendor/manifest.json +2 -2
- 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 → routing}/MatchedRouteInfo.js +0 -0
|
@@ -0,0 +1,190 @@
|
|
|
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 { waitForEnvIfLoading } from './loadEnv.js';
|
|
16
|
+
// the framework brands what it builds
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
18
|
+
const asGlobalData = data => data;
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
20
|
+
const asContext = context => context;
|
|
21
|
+
const applyStores = async (instance, overrides) => {
|
|
22
|
+
for (const override of overrides) {
|
|
23
|
+
await override.initialize(override.registration.getStore(instance.stores));
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const appRoutesFor = (app, init) => reqRes => pipelineRoutes(app, reqRes, init, true);
|
|
27
|
+
/**
|
|
28
|
+
* hydrateTestApp() for an app built with pipeline() or splitPipeline(): the server pass runs the
|
|
29
|
+
* app's server stages, as a request does, and renders; the page carries the all-routes data and
|
|
30
|
+
* the networked data; the client pass runs the app's client stages, as hydratePipeline() does, and
|
|
31
|
+
* hydrates the parsed HTML. So a component whose markup depends on a context only one side makes
|
|
32
|
+
* shows up in `mismatches`, or throws on a structural difference.
|
|
33
|
+
*/
|
|
34
|
+
export async function hydrateTestPipelineApp(app, RootComponent, ...args) {
|
|
35
|
+
requireClient('hydrateTestPipelineApp()');
|
|
36
|
+
await waitForEnvIfLoading();
|
|
37
|
+
const options = args[0];
|
|
38
|
+
const suppliedDocument = options?.document ?? globalThis.document;
|
|
39
|
+
if (suppliedDocument === undefined) {
|
|
40
|
+
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
41
|
+
throw new Error('hydrateTestPipelineApp() requires options.document when no global document is' + ' available.');
|
|
42
|
+
}
|
|
43
|
+
const document = suppliedDocument;
|
|
44
|
+
const ownsContainer = options?.container === undefined;
|
|
45
|
+
const container = options?.container ?? document.createElement('div');
|
|
46
|
+
if (container.ownerDocument !== document) {
|
|
47
|
+
throw new Error('The HydrateTestApp container must belong to options.document.');
|
|
48
|
+
}
|
|
49
|
+
if (container.childNodes.length > 0) {
|
|
50
|
+
throw new Error('The HydrateTestApp container must be empty before hydrating.');
|
|
51
|
+
}
|
|
52
|
+
const clientProps = options?.props ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
53
|
+
const serverProps = options?.serverProps ?? clientProps;
|
|
54
|
+
const location = options?.location ?? '/';
|
|
55
|
+
const overrides = options?.stores ?? [];
|
|
56
|
+
const instanceConfig = {
|
|
57
|
+
prod: false,
|
|
58
|
+
useRootComponent: true,
|
|
59
|
+
clientSideNav: true,
|
|
60
|
+
siteBasePath: '/',
|
|
61
|
+
staticSite: false,
|
|
62
|
+
csr: options?.csr ?? false
|
|
63
|
+
};
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- a stand-in request
|
|
65
|
+
const reqRes = options?.reqRes ?? {
|
|
66
|
+
req: {
|
|
67
|
+
url: location,
|
|
68
|
+
headers: {}
|
|
69
|
+
},
|
|
70
|
+
res: {}
|
|
71
|
+
};
|
|
72
|
+
// Server pass: the app's server stages, as PipelineRequestHandler runs them, then the render
|
|
73
|
+
const runner = app.split === true ? splitServer : symmetricServer;
|
|
74
|
+
const serverDataLoading = {
|
|
75
|
+
value: false
|
|
76
|
+
};
|
|
77
|
+
const routed = await runner.route(app, reqRes, location, serverDataLoading, true);
|
|
78
|
+
const post = await runner.post(app, reqRes, routed.init, routed.allRoutesData);
|
|
79
|
+
const served = runner.networked(routed.init, post);
|
|
80
|
+
const transport = new NetworkedTransport(served);
|
|
81
|
+
transport.snapshotAfterRouting();
|
|
82
|
+
const serverGlobalData = asGlobalData(routed.allRoutesData);
|
|
83
|
+
const ssrScheduler = new UpdateScheduler();
|
|
84
|
+
let html;
|
|
85
|
+
try {
|
|
86
|
+
const serverContext = asContext(runner.context(routed.init, post));
|
|
87
|
+
const serverNetworked = transport; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- as the request handler hands it
|
|
88
|
+
const ssrStores = initStores(location, reqRes, serverGlobalData, routed.matchedRouteInfo, serverDataLoading, serverContext, serverNetworked);
|
|
89
|
+
const ssrInstance = new Instance(location, instanceConfig, reqRes, appRoutesFor(app, routed.init), routed.routes, ssrStores.internalStore, ssrStores.stores, ssrStores.storeSubscriptions, serverGlobalData, routed.matchedRouteInfo, {
|
|
90
|
+
document,
|
|
91
|
+
window: document.defaultView,
|
|
92
|
+
scheduler: ssrScheduler,
|
|
93
|
+
navigation: false
|
|
94
|
+
});
|
|
95
|
+
ssrInstance.fileVersions = options?.fileVersions;
|
|
96
|
+
ssrInstance.context = serverContext;
|
|
97
|
+
ssrInstance.networkedData = serverNetworked;
|
|
98
|
+
ssrInstance.pipelineNetworked = served ?? {};
|
|
99
|
+
await applyStores(ssrInstance, overrides);
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- rootToHtml.ts builds a root content node the same way
|
|
101
|
+
const componentNode = {
|
|
102
|
+
[$type]: RootComponent,
|
|
103
|
+
[$props]: serverProps
|
|
104
|
+
};
|
|
105
|
+
const renderingTree = await contentTreeToRenderingTree(componentNode, null, ssrInstance, false);
|
|
106
|
+
const headData = {
|
|
107
|
+
found: false,
|
|
108
|
+
instance: ssrInstance,
|
|
109
|
+
clientImportAliases: {},
|
|
110
|
+
importAliases: {},
|
|
111
|
+
compilationLocation: '',
|
|
112
|
+
dev: false,
|
|
113
|
+
tungstenPublicEnv: undefined,
|
|
114
|
+
siteBasePath: '',
|
|
115
|
+
hmr: true,
|
|
116
|
+
csr: instanceConfig.csr
|
|
117
|
+
};
|
|
118
|
+
html = await renderingNodeToHtml(renderingTree, false, headData, null);
|
|
119
|
+
} finally {
|
|
120
|
+
ssrScheduler.dispose();
|
|
121
|
+
}
|
|
122
|
+
// what the page carries: processHead writes the transport after the render
|
|
123
|
+
const fromPage = JSON.parse(JSONstringify(transport));
|
|
124
|
+
if (ownsContainer) {
|
|
125
|
+
if (document.body === null) {
|
|
126
|
+
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
127
|
+
throw new Error('The supplied document must have a body element.');
|
|
128
|
+
}
|
|
129
|
+
document.body.appendChild(container);
|
|
130
|
+
}
|
|
131
|
+
container.innerHTML = html;
|
|
132
|
+
bridgeHappyDomGlobals(document);
|
|
133
|
+
// Client pass: the app's own client run, with the page's data, as hydratePipeline() runs it
|
|
134
|
+
const ran = await app.client(app, serverGlobalData, fromPage);
|
|
135
|
+
const routes = pipelineRoutes(app, null, ran.init, true);
|
|
136
|
+
const {
|
|
137
|
+
key,
|
|
138
|
+
params,
|
|
139
|
+
data
|
|
140
|
+
} = routed.matchedRouteInfo;
|
|
141
|
+
const matchedRouteInfo = hydrationRouting({
|
|
142
|
+
key,
|
|
143
|
+
params,
|
|
144
|
+
...('data' in routed.matchedRouteInfo ? {
|
|
145
|
+
data
|
|
146
|
+
} : {})
|
|
147
|
+
}, routes);
|
|
148
|
+
const afterRouting = afterRoutingFor(ran.afterRouting);
|
|
149
|
+
const context = afterRouting === undefined ? asContext(ran.context) : await afterRouting(clientRoute(matchedRouteInfo, location), serverGlobalData);
|
|
150
|
+
const networkedData = routingNetworkedData(ran.routingNetworkedData);
|
|
151
|
+
const scheduler = new UpdateScheduler();
|
|
152
|
+
const {
|
|
153
|
+
internalStore,
|
|
154
|
+
stores,
|
|
155
|
+
storeSubscriptions
|
|
156
|
+
} = initStores(location, null, serverGlobalData, matchedRouteInfo, null, context, networkedData);
|
|
157
|
+
const instance = new Instance(location, instanceConfig, null, appRoutesFor(app, ran.init), routes, internalStore, stores, storeSubscriptions, serverGlobalData, matchedRouteInfo, {
|
|
158
|
+
document,
|
|
159
|
+
window: document.defaultView,
|
|
160
|
+
scheduler,
|
|
161
|
+
navigation: false
|
|
162
|
+
});
|
|
163
|
+
instance.fileVersions = options?.fileVersions;
|
|
164
|
+
instance.context = context;
|
|
165
|
+
instance.networkedData = networkedData;
|
|
166
|
+
instance.pipelineNetworked = ran.networked;
|
|
167
|
+
const rerun = ran.allRoutesData;
|
|
168
|
+
instance.pipeline = {
|
|
169
|
+
routingContext: routingContext(ran.routingContext),
|
|
170
|
+
routingNetworkedData: networkedData,
|
|
171
|
+
allRoutesData: rerun && (async () => asGlobalData(await rerun())),
|
|
172
|
+
afterRouting
|
|
173
|
+
};
|
|
174
|
+
try {
|
|
175
|
+
await applyStores(instance, overrides);
|
|
176
|
+
const meta = makeDefaultHydrateMeta();
|
|
177
|
+
const component = await hydrateRootComponent(instance, RootComponent, new DomPointer(container, 0), meta, clientProps, matchedRouteInfo.params, matchedRouteInfo.data);
|
|
178
|
+
return new HydrateTestAppImplementation(document, container, component, instance, scheduler, ownsContainer, html, meta.mismatches);
|
|
179
|
+
} catch (error) {
|
|
180
|
+
try {
|
|
181
|
+
instance.disposeRegisteredComponents();
|
|
182
|
+
} catch {
|
|
183
|
+
// Preserve the mount failure.
|
|
184
|
+
}
|
|
185
|
+
scheduler.dispose();
|
|
186
|
+
while (container.firstChild !== null) container.removeChild(container.firstChild);
|
|
187
|
+
if (ownsContainer) container.remove();
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export { loadEnv } from './loadEnv.js';
|
|
2
2
|
export { testEnvVariableName } from './testEnvIsRequested.js';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
3
|
+
export { type HydrateTestApp, type HydrateTestAppOptions, hydrateTestApp, } from './hydrateTestApp.js';
|
|
4
|
+
export { type HydrateTestPipelineApp, type HydrateTestPipelineAppOptions, hydrateTestPipelineApp, } from './hydrateTestPipelineApp.js';
|
|
5
|
+
export { type ComponentProps, type CreateTestAppArgs, type TestApp, type TestAppOptions, type TestStore, type TestStoreOverride, type TestStoreRegistration, type TestRoutes, createTestApp, testStore, } from './createTestApp.js';
|
|
6
|
+
export { type CreateTestPipelineAppArgs, type TestPipelineApp, type TestPipelineAppOptions, createTestPipelineApp, } from './createTestPipelineApp.js';
|
|
7
|
+
export { type HostOptions, type HostStoreOptions, type Hosted, type HostedResolved, host, hostGeneric, hostJsx, } from './host.js';
|
|
6
8
|
export { testingComponentPackage } from './testingComponentPackage.js';
|
|
7
9
|
export { contentHtmlElements } from './helpers/contentHtmlElements.js';
|
|
10
|
+
export { ensure } from './ensure.js';
|
|
8
11
|
export { makeStore, type TrueStore } from '../Store/makeStore.js';
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EACH,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAC/C,cAAc,GACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,KAAK,sBAAsB,EAAE,KAAK,6BAA6B,EAC/D,sBAAsB,GACzB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACH,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAC9F,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,UAAU,EACnE,aAAa,EAAE,SAAS,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,KAAK,yBAAyB,EAAE,KAAK,eAAe,EAAE,KAAK,sBAAsB,EACjF,qBAAqB,GACxB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACH,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EACzE,IAAI,EAAE,WAAW,EAAE,OAAO,GAC7B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/testing/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export { loadEnv } from './loadEnv.js';
|
|
2
2
|
export { testEnvVariableName } from './testEnvIsRequested.js';
|
|
3
3
|
export { hydrateTestApp } from './hydrateTestApp.js';
|
|
4
|
+
export { hydrateTestPipelineApp } from './hydrateTestPipelineApp.js';
|
|
4
5
|
export { createTestApp, testStore } from './createTestApp.js';
|
|
5
|
-
export {
|
|
6
|
+
export { createTestPipelineApp } from './createTestPipelineApp.js';
|
|
7
|
+
export { host, hostGeneric, hostJsx } from './host.js';
|
|
6
8
|
export { testingComponentPackage } from './testingComponentPackage.js';
|
|
7
9
|
export { contentHtmlElements } from './helpers/contentHtmlElements.js';
|
|
10
|
+
export { ensure } from './ensure.js';
|
|
8
11
|
export { makeStore } from '../Store/makeStore.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnyComponent } from '../AnyComponent.js';
|
|
2
|
+
import type { Instance } from '../Instance/Instance.js';
|
|
3
|
+
import type { ContentNode } from '../ContentNode.js';
|
|
4
|
+
/**
|
|
5
|
+
* The tree as it renders: every component in it constructed and asked for its content, down to
|
|
6
|
+
* html and text. host({ resolve: true }) hands this back, where host() alone hands back what the
|
|
7
|
+
* hosted component itself returned, its child components still unexpanded.
|
|
8
|
+
*
|
|
9
|
+
* render/contentTreeToRenderingTree does this for the app, but a rendering tree drops a component's
|
|
10
|
+
* props, keeping only its rendered children. Here a component node stays as written - its type, key
|
|
11
|
+
* and props - with what it rendered in place of the children it was passed, so a test can read it
|
|
12
|
+
* by name and by prop as well as by what it put on the page.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveContent(content: ContentNode, parentComponent: AnyComponent | null, instance: Instance, constructed?: Constructed): Promise<ContentNode>;
|
|
15
|
+
export type Constructed = (component: object) => void;
|
|
16
|
+
//# sourceMappingURL=resolveContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveContent.d.ts","sourceRoot":"","sources":["../../src/testing/resolveContent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAA4C,MAAM,mBAAmB,CAAA;AAa9F;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAG9E,WAAW,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ContentNodeComponentIsClassComponent, ContentNodeElementIsComponent, ContentNodeIsArray, ContentNodeIsElement, ContentNodeIsLiteral } from '../ContentNode.js';
|
|
2
|
+
import { $props, $type } from '../contentNodeSymbols.js';
|
|
3
|
+
import { clearCurrentComponent } from '../hooks/clearCurrentComponent.js';
|
|
4
|
+
import { setCurrentComponent } from '../hooks/setCurrentComponent.js';
|
|
5
|
+
import { getStyledContentFromFunctionComponent } from '../getStyledContentFromFunctionComponent.js';
|
|
6
|
+
import { instantiateClassComponent } from '../render/instantiateClassComponent.js';
|
|
7
|
+
import { instantiateFunctionComponent } from '../render/instantiateFunctionComponent.js';
|
|
8
|
+
/**
|
|
9
|
+
* The tree as it renders: every component in it constructed and asked for its content, down to
|
|
10
|
+
* html and text. host({ resolve: true }) hands this back, where host() alone hands back what the
|
|
11
|
+
* hosted component itself returned, its child components still unexpanded.
|
|
12
|
+
*
|
|
13
|
+
* render/contentTreeToRenderingTree does this for the app, but a rendering tree drops a component's
|
|
14
|
+
* props, keeping only its rendered children. Here a component node stays as written - its type, key
|
|
15
|
+
* and props - with what it rendered in place of the children it was passed, so a test can read it
|
|
16
|
+
* by name and by prop as well as by what it put on the page.
|
|
17
|
+
*/
|
|
18
|
+
export async function resolveContent(content, parentComponent, instance,
|
|
19
|
+
// each component once built, before its content is asked for: host() guards a partial store on
|
|
20
|
+
// it, as it does the one it hosts. Its init has already run, so a key read there is not covered
|
|
21
|
+
constructed) {
|
|
22
|
+
if (ContentNodeIsArray(content)) {
|
|
23
|
+
const nodes = [];
|
|
24
|
+
// in order: a component's init may read what an earlier one wrote
|
|
25
|
+
for (const node of content) {
|
|
26
|
+
nodes.push(await resolveContent(node, parentComponent, instance, constructed));
|
|
27
|
+
}
|
|
28
|
+
return nodes;
|
|
29
|
+
}
|
|
30
|
+
if (ContentNodeIsLiteral(content) || !ContentNodeIsElement(content)) return content;
|
|
31
|
+
// an element or fragment: its children as they render. A component's children are its output
|
|
32
|
+
if (!ContentNodeElementIsComponent(content)) {
|
|
33
|
+
return withChildren(content, await resolveContent(content[$props].children, parentComponent, instance, constructed));
|
|
34
|
+
}
|
|
35
|
+
return withChildren(content, await rendered(content, parentComponent, instance, constructed));
|
|
36
|
+
}
|
|
37
|
+
// what the component put on the page, resolved in its turn.
|
|
38
|
+
// As render/componentNodeToRenderingTree: a component the app renders on the client alone never
|
|
39
|
+
// runs its content here, so its placeholder stands for it
|
|
40
|
+
async function rendered(node, parentComponent, instance, constructed) {
|
|
41
|
+
const render = node[$type].render;
|
|
42
|
+
if (render !== undefined) {
|
|
43
|
+
const placeholder = typeof render === 'object' && 'placeholder' in render ? render.placeholder : null;
|
|
44
|
+
return resolveContent(placeholder, parentComponent, instance, constructed);
|
|
45
|
+
}
|
|
46
|
+
// parentComponent, not the component itself: the parent the framework's own render path passes
|
|
47
|
+
if (ContentNodeComponentIsClassComponent(node)) {
|
|
48
|
+
const component = await instantiateClassComponent(node, parentComponent, instance);
|
|
49
|
+
constructed?.(component);
|
|
50
|
+
return resolveContent(await component.__styledContent(), parentComponent, instance, constructed);
|
|
51
|
+
}
|
|
52
|
+
const standIn = instantiateFunctionComponent(node, parentComponent, instance);
|
|
53
|
+
setCurrentComponent(standIn);
|
|
54
|
+
const content = await getStyledContentFromFunctionComponent(standIn);
|
|
55
|
+
clearCurrentComponent();
|
|
56
|
+
return resolveContent(content, parentComponent, instance, constructed);
|
|
57
|
+
}
|
|
58
|
+
// the node as written, with the content it holds replaced
|
|
59
|
+
const withChildren = (node, children) => ({
|
|
60
|
+
...node,
|
|
61
|
+
[$props]: {
|
|
62
|
+
...node[$props],
|
|
63
|
+
children
|
|
64
|
+
}
|
|
65
|
+
});
|
|
@@ -3,11 +3,13 @@ import type { Instance } from '../Instance/Instance.js';
|
|
|
3
3
|
import type { InstanceConfig } from '../Instance/InstanceConfig.js';
|
|
4
4
|
import type { PartialInternalStoreSchema } from '../Store/InternalStoreSchema.js';
|
|
5
5
|
import type { GlobalData } from '../routing/registerGlobalData.js';
|
|
6
|
-
import {
|
|
6
|
+
import { type TrueStore, $trueStoreValue } from '../Store/makeStore.js';
|
|
7
7
|
export type TestingComponentPackageOptions = {
|
|
8
8
|
store?: Partial<TrueStore<any>>;
|
|
9
9
|
routes?: object;
|
|
10
10
|
globalData?: GlobalData;
|
|
11
|
+
context?: object;
|
|
12
|
+
networkedData?: object;
|
|
11
13
|
internalStore?: PartialInternalStoreSchema;
|
|
12
14
|
config?: Partial<InstanceConfig>;
|
|
13
15
|
trackWork?: Instance['trackWork'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingComponentPackage.d.ts","sourceRoot":"","sources":["../../src/testing/testingComponentPackage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"testingComponentPackage.d.ts","sourceRoot":"","sources":["../../src/testing/testingComponentPackage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EACa,0BAA0B,EAClD,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAIlE,OAAO,EACH,KAAK,SAAS,EACd,eAAe,EAClB,MAAM,uBAAuB,CAAA;AAK9B,MAAM,MAAM,8BAA8B,GAAG;IAIzC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAG/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IAMtB,aAAa,CAAC,EAAE,0BAA0B,CAAA;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAGhC,SAAS,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IAIjC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAGrC,SAAS,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAG/B,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;CAClC,CAAA;AAYD,eAAO,MAAM,iBAAiB,GAAI,KAAK,EAAE,KAAK,MAAM;;eAEvC,KAAK;;;;gBAIJ,KAAK;aACN,EAAE,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,EAAE;iBAC3F,EAAE,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,EAAE;;CAErE,CAAA;AAoC3C,eAAO,MAAM,uBAAuB,GAAI,KAAK,SAAS,MAAM,EACxD,OAAO,KAAK,EACZ,UAAS,8BAAmC,KAC7C,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAyDlC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { $trueStoreValue, StoreValue } from '../Store/makeStore.js';
|
|
2
2
|
import { routeKeyToUrl } from '../routing/routeUrl.js';
|
|
3
|
+
import { storeSchemas } from '../Store/storeCreators.js';
|
|
3
4
|
const missing = key => {
|
|
4
5
|
throw new Error(`testingComponentPackage: no ${key} supplied. Pass one in the options if the value is part` + ` of the test, or use createTestApp() for a component that needs a real app.`);
|
|
5
6
|
};
|
|
@@ -51,14 +52,23 @@ export const testingComponentPackage = (props, options = {}) => ({
|
|
|
51
52
|
// the rest.
|
|
52
53
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
53
54
|
instance: {
|
|
55
|
+
// the one store stands in every slot, whichever registerStore() gave the component
|
|
56
|
+
stores: Array.from({
|
|
57
|
+
length: Math.max(storeSchemas.length, 1)
|
|
58
|
+
},
|
|
54
59
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- partial by design: host() names the keys left out
|
|
55
|
-
|
|
60
|
+
() => options.store ?? {}),
|
|
56
61
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- the mock supplies store keys, not the store machinery behind them
|
|
57
62
|
internalStore: internalStore(options.internalStore),
|
|
58
63
|
// Route passthrough: tests supply loosely-typed route maps, narrowed
|
|
59
64
|
// to Routes here (assertion confined to this boundary).
|
|
60
65
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
61
66
|
getRoutes: () => options.routes ?? {},
|
|
67
|
+
// what this.tungsten.routes reads
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
69
|
+
get routes() {
|
|
70
|
+
return options.routes ?? {};
|
|
71
|
+
},
|
|
62
72
|
// the instance's own copies of what the store holds - one source, as
|
|
63
73
|
// updateLocation() keeps them in the real thing
|
|
64
74
|
get location() {
|
|
@@ -68,6 +78,11 @@ export const testingComponentPackage = (props, options = {}) => ({
|
|
|
68
78
|
return options.internalStore?.matchedRouteInfo ?? missing('internalStore.matchedRouteInfo');
|
|
69
79
|
},
|
|
70
80
|
globalData: options.globalData ?? {},
|
|
81
|
+
// the framework brands what it builds, and here the test built it
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
83
|
+
context: options.context ?? {},
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
85
|
+
networkedData: options.networkedData ?? {},
|
|
71
86
|
config: {
|
|
72
87
|
...defaultConfig,
|
|
73
88
|
...options.config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { setCurrentComponent } from '
|
|
2
|
-
import { clearCurrentComponent } from '
|
|
1
|
+
import { setCurrentComponent } from '../hooks/setCurrentComponent.js';
|
|
2
|
+
import { clearCurrentComponent } from '../hooks/clearCurrentComponent.js';
|
|
3
3
|
import { IsHTMLElement } from '../DomNodes.js';
|
|
4
4
|
import { DomRegion } from '../DomRegion.js';
|
|
5
5
|
import { DomPointer } from '../DomPointer.js';
|
|
@@ -10,6 +10,7 @@ import { out, warn } from '../appOutput.js';
|
|
|
10
10
|
import { getStyledContentFromFunctionComponent } from '../getStyledContentFromFunctionComponent.js';
|
|
11
11
|
import { FunctionElement } from '../FunctionComponentStandIn.js';
|
|
12
12
|
import { jssToCss } from '../style/jssToCss.js';
|
|
13
|
+
import { versionAttributes } from '../fileVersions.js';
|
|
13
14
|
import { htmlEventHandlerKey } from '../htmlEventHandlerKey.js';
|
|
14
15
|
import { $contentNull } from '../symbols.js';
|
|
15
16
|
import { throwError } from '../throwError.js';
|
|
@@ -717,13 +718,14 @@ export function processHtmlNode(node, parentNode) {
|
|
|
717
718
|
//// we have event handler code here as well as in addAttributes -- should this be moved to updateAttributes??
|
|
718
719
|
if (node[$type] in bindableHtmlElementsString) {
|
|
719
720
|
debug('binding');
|
|
720
|
-
const [bindObject, bindKey] = props.bind;
|
|
721
|
-
|
|
721
|
+
const [bindObject, bindKey] = props.bind; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
722
|
+
// nullish coalesce to avoid putting undef/null into elements
|
|
723
|
+
props.value = bindObject[bindKey] ?? ''; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
722
724
|
let handler;
|
|
723
|
-
if ('
|
|
724
|
-
const
|
|
725
|
+
if ('convert' in props) {
|
|
726
|
+
const convertFunc = props.convert;
|
|
725
727
|
handler = async event => {
|
|
726
|
-
bindObject[bindKey] = await
|
|
728
|
+
bindObject[bindKey] = await convertFunc(event.target.value, event);
|
|
727
729
|
};
|
|
728
730
|
} else {
|
|
729
731
|
handler = event => {
|
|
@@ -741,16 +743,17 @@ export function processHtmlNode(node, parentNode) {
|
|
|
741
743
|
// should we be saving the handler like we do in hydrate?
|
|
742
744
|
//props[eventName] = handler
|
|
743
745
|
delete props.bind;
|
|
744
|
-
delete props.
|
|
746
|
+
delete props.convert;
|
|
745
747
|
} else if (node[$type] in bindableHtmlElementsNumber) {
|
|
746
748
|
debug('binding');
|
|
747
|
-
const [bindObject, bindKey] = props.bind;
|
|
748
|
-
|
|
749
|
+
const [bindObject, bindKey] = props.bind; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
750
|
+
// nullish coalesce to avoid putting undef/null into elements
|
|
751
|
+
props.value = bindObject[bindKey] ?? ''; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
749
752
|
let handler;
|
|
750
|
-
if ('
|
|
751
|
-
const
|
|
753
|
+
if ('convert' in props) {
|
|
754
|
+
const convertFunc = props.convert;
|
|
752
755
|
handler = async event => {
|
|
753
|
-
bindObject[bindKey] = await
|
|
756
|
+
bindObject[bindKey] = await convertFunc(event.target.value, event);
|
|
754
757
|
};
|
|
755
758
|
} else {
|
|
756
759
|
handler = event => {
|
|
@@ -767,19 +770,19 @@ export function processHtmlNode(node, parentNode) {
|
|
|
767
770
|
}
|
|
768
771
|
//props[eventName] = handler
|
|
769
772
|
delete props.bind;
|
|
770
|
-
delete props.
|
|
773
|
+
delete props.convert;
|
|
771
774
|
}
|
|
772
775
|
}
|
|
773
776
|
if (props.bindChecked !== undefined) {
|
|
774
777
|
const eventName = 'onChange';
|
|
775
778
|
debug('bindChecked');
|
|
776
|
-
const [bindObject, bindKey] = props.bindChecked;
|
|
779
|
+
const [bindObject, bindKey] = props.bindChecked; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
777
780
|
props.checked = checkedValueToBoolean(bindObject[bindKey]);
|
|
778
781
|
let handler;
|
|
779
|
-
if ('
|
|
780
|
-
const
|
|
782
|
+
if ('convertChecked' in props) {
|
|
783
|
+
const convertFunc = props.convertChecked;
|
|
781
784
|
handler = async event => {
|
|
782
|
-
bindObject[bindKey] = await
|
|
785
|
+
bindObject[bindKey] = await convertFunc(event.target.checked, event);
|
|
783
786
|
};
|
|
784
787
|
} else {
|
|
785
788
|
handler = event => {
|
|
@@ -795,12 +798,12 @@ export function processHtmlNode(node, parentNode) {
|
|
|
795
798
|
props[eventName] = handler;
|
|
796
799
|
}
|
|
797
800
|
delete props.bindChecked;
|
|
798
|
-
delete props.
|
|
801
|
+
delete props.convertChecked;
|
|
799
802
|
}
|
|
800
803
|
if (props.bindRadio !== undefined) {
|
|
801
804
|
const eventName = 'onChange';
|
|
802
805
|
debug('bindRadio');
|
|
803
|
-
const [bindObject, bindKey] = props.bindRadio;
|
|
806
|
+
const [bindObject, bindKey] = props.bindRadio; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
804
807
|
props.checked = bindObject[bindKey] === props.value;
|
|
805
808
|
const handler = event => {
|
|
806
809
|
//console.log('bound radio changed 3', (event.target as HTMLCheckedBindableElement).value)
|
|
@@ -922,7 +925,7 @@ function removeAttribute(htmlElement, attr) {
|
|
|
922
925
|
}
|
|
923
926
|
function addAttributes(tungstenElement, instance, node, domNode) {
|
|
924
927
|
//console.log('-addAttributes', node)
|
|
925
|
-
const attributes = processAttributes(node);
|
|
928
|
+
const attributes = versionAttributes(processAttributes(node), instance);
|
|
926
929
|
debug('attributes', attributes);
|
|
927
930
|
for (const key in attributes) {
|
|
928
931
|
//console.log('attr', key)
|
|
@@ -965,7 +968,7 @@ function updateAttributes(tungstenElement, instance, node, oldNode, domNodeHTMLE
|
|
|
965
968
|
const domNode = domNodeHTMLElement;
|
|
966
969
|
//console.log('-updateAttributes', node)
|
|
967
970
|
debug('-updateAttributes', node);
|
|
968
|
-
const newAttributes = processAttributes(node);
|
|
971
|
+
const newAttributes = versionAttributes(processAttributes(node), instance);
|
|
969
972
|
// are re-process the old node attribs here to we can see what we applied last time.
|
|
970
973
|
// would be better to save this and then grab it later
|
|
971
974
|
//const oldAttributes = processAttributes(oldNode)
|
|
@@ -1064,10 +1067,10 @@ function processAttributes(node) {
|
|
|
1064
1067
|
// this will overwrite any other onChange
|
|
1065
1068
|
if (node[$type] in bindableHtmlElementsString) {
|
|
1066
1069
|
let handler;
|
|
1067
|
-
if ('
|
|
1068
|
-
const
|
|
1070
|
+
if ('convert' in attributes) {
|
|
1071
|
+
const convertFunc = attributes.convert;
|
|
1069
1072
|
handler = async event => {
|
|
1070
|
-
bind[0][bind[1]] = await
|
|
1073
|
+
bind[0][bind[1]] = await convertFunc(event.target.value, event);
|
|
1071
1074
|
};
|
|
1072
1075
|
} else {
|
|
1073
1076
|
handler = event => {
|
|
@@ -1077,10 +1080,10 @@ function processAttributes(node) {
|
|
|
1077
1080
|
attributes.onChange = handler;
|
|
1078
1081
|
} else if (node[$type] in bindableHtmlElementsNumber) {
|
|
1079
1082
|
let handler;
|
|
1080
|
-
if ('
|
|
1081
|
-
const
|
|
1083
|
+
if ('convert' in attributes) {
|
|
1084
|
+
const convertFunc = attributes.convert;
|
|
1082
1085
|
handler = async event => {
|
|
1083
|
-
bind[0][bind[1]] = await
|
|
1086
|
+
bind[0][bind[1]] = await convertFunc(event.target.value, event);
|
|
1084
1087
|
};
|
|
1085
1088
|
} else {
|
|
1086
1089
|
handler = event => {
|
|
@@ -1090,7 +1093,7 @@ function processAttributes(node) {
|
|
|
1090
1093
|
attributes.onChange = handler;
|
|
1091
1094
|
}
|
|
1092
1095
|
delete attributes.bind;
|
|
1093
|
-
delete attributes.
|
|
1096
|
+
delete attributes.convert;
|
|
1094
1097
|
}
|
|
1095
1098
|
if (attributes.children !== undefined) {
|
|
1096
1099
|
delete attributes.children;
|
|
@@ -1448,7 +1451,7 @@ export async function hotSwapFunctionComponent(oldElement, NewType) {
|
|
|
1448
1451
|
standIn.__domRegion = new DomRegion(parent, domStartIndex, domPointer.index - domStartIndex);
|
|
1449
1452
|
standIn.__currentContent = renderedContent;
|
|
1450
1453
|
wrapper.element = standIn;
|
|
1451
|
-
wrapper[$props] = standIn.props;
|
|
1454
|
+
wrapper[$props] = standIn.props; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
1452
1455
|
standIn.__renderedNode = wrapper;
|
|
1453
1456
|
return standIn;
|
|
1454
1457
|
}
|
|
@@ -1464,6 +1467,7 @@ export async function hotSwapClassComponent(oldElement, NewType) {
|
|
|
1464
1467
|
if (wrapper === undefined) return null;
|
|
1465
1468
|
const newElement = new NewType({
|
|
1466
1469
|
props: oldElement.props,
|
|
1470
|
+
// eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
1467
1471
|
routeParams: oldElement.routeParams,
|
|
1468
1472
|
routeData: oldElement.routeData,
|
|
1469
1473
|
instance: oldElement.__instance,
|
|
@@ -1491,7 +1495,7 @@ export async function hotSwapClassComponent(oldElement, NewType) {
|
|
|
1491
1495
|
newElement.__currentContent = renderedContent;
|
|
1492
1496
|
queueMount(() => newElement.__didMount());
|
|
1493
1497
|
wrapper.element = newElement;
|
|
1494
|
-
wrapper[$props] = newElement.props;
|
|
1498
|
+
wrapper[$props] = newElement.props; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
1495
1499
|
newElement.__renderedNode = wrapper;
|
|
1496
1500
|
return newElement;
|
|
1497
1501
|
}
|