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,29 @@
|
|
|
1
|
+
// all set by registerRouting() when the app's routes module is imported. The routes stand in for
|
|
2
|
+
// routesLocation's named export. Reset per request in dev, like globalDataFunc
|
|
3
|
+
export const registeredRouting = {
|
|
4
|
+
value: undefined
|
|
5
|
+
};
|
|
6
|
+
// handed the request's context, whichever way the store was registered
|
|
7
|
+
export const registeredNetworkedStore = {
|
|
8
|
+
value: undefined
|
|
9
|
+
};
|
|
10
|
+
// the store is handed the global Context; ND is inferred from the class, and handed back as a
|
|
11
|
+
// type-only token for NetworkedData's augmentation - `NetworkedDataType<typeof registration>`.
|
|
12
|
+
// Also set by registerRouting() and the routing builder - the last registration wins
|
|
13
|
+
export function registerNetworkedData(store) {
|
|
14
|
+
registeredNetworkedStore.value = store;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- the token is type-only
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
// made per request on the server, once per page on the client - beside createContext(), because
|
|
19
|
+
// the routes function receives it and that runs before initStores(). {} when none is registered,
|
|
20
|
+
// so nothing downstream tests for absence (as createContext does)
|
|
21
|
+
// the context is passed too: it is built first, so a store registered through routingBuilder may
|
|
22
|
+
// take it as a second constructor argument. A one-argument store simply ignores it. Required, not
|
|
23
|
+
// defaulted: a default handed the store a different context from the one the request made
|
|
24
|
+
export function createNetworkedData(reqRes, context) {
|
|
25
|
+
const registered = registeredNetworkedStore.value;
|
|
26
|
+
if (registered === undefined) return {};
|
|
27
|
+
// as createContext: the app's class returns an object, which carries no symbol index signature
|
|
28
|
+
return new registered(reqRes, context);
|
|
29
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AppRoutes } from '
|
|
1
|
+
import type { AppRoutes } from '../routing/AppRoutes.js';
|
|
2
2
|
import type { FrameworkConfigComplete } from '../FrameworkConfig.js';
|
|
3
3
|
import type { CompilationInfo } from '../build/CompilationInfo.js';
|
|
4
|
-
export declare function getAppRoutes(compilationInfo: CompilationInfo, config: FrameworkConfigComplete, quiet?: boolean): Promise<AppRoutes
|
|
4
|
+
export declare function getAppRoutes(compilationInfo: CompilationInfo, config: FrameworkConfigComplete, quiet?: boolean): Promise<AppRoutes<any>>;
|
|
5
5
|
//# sourceMappingURL=getAppRoutes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAppRoutes.d.ts","sourceRoot":"","sources":["../../src/staticGen/getAppRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAppRoutes.d.ts","sourceRoot":"","sources":["../../src/staticGen/getAppRoutes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAalE,wBAAsB,YAAY,CAC9B,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,uBAAuB,EAAE,KAAK,UAAQ,GACjF,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAuBzB"}
|
|
@@ -2,11 +2,16 @@ import { join } from 'path';
|
|
|
2
2
|
import { fixExtension } from '../fixExtension.js';
|
|
3
3
|
import { TungstenError } from '../TungstenError.js';
|
|
4
4
|
import { cliLog } from '../cliOutput.js';
|
|
5
|
+
import { importModule } from '../importModule.js';
|
|
6
|
+
import { routesLocationParts } from '../routesLocationParts.js';
|
|
7
|
+
import { resolveAppRoutes } from '../routing/resolveAppRoutes.js';
|
|
5
8
|
// prod: const appRoutes: AppRoutes = await getRoutes(this.compilationInfo, this.config)
|
|
6
9
|
// this file is outdated and may not work correctly
|
|
7
10
|
// should compare this to the functions used by Servers
|
|
8
11
|
export async function getAppRoutes(compilationInfo, config, quiet = false) {
|
|
9
|
-
const
|
|
12
|
+
const {
|
|
13
|
+
routesFile
|
|
14
|
+
} = routesLocationParts(config.routesLocation);
|
|
10
15
|
try {
|
|
11
16
|
const filePath = fixExtension(join(compilationInfo.buildCodeLocation, routesFile));
|
|
12
17
|
if (!quiet) {
|
|
@@ -17,11 +22,9 @@ export async function getAppRoutes(compilationInfo, config, quiet = false) {
|
|
|
17
22
|
}
|
|
18
23
|
const target = 'file://' + filePath;
|
|
19
24
|
if (!quiet) cliLog('[1] target', target);
|
|
20
|
-
const module = await
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
return module[routeExport];
|
|
25
|
+
const module = await importModule(target);
|
|
26
|
+
// importing the module is what runs the app's registerRouting() call
|
|
27
|
+
return resolveAppRoutes(module, config.routesLocation, 'prod');
|
|
25
28
|
} catch (e) {
|
|
26
29
|
throw new TungstenError(`Error loading app routes.` + ` You can specify the location of your routes object in tungsten.config.js,` + ` e.g. routesLocation: ['Routes.jsx', 'routes'] (file, exportName)` + `\n${e}`);
|
|
27
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staticGen.d.ts","sourceRoot":"","sources":["../../src/staticGen/staticGen.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"staticGen.d.ts","sourceRoot":"","sources":["../../src/staticGen/staticGen.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAqBhD,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,iBA4NnD"}
|
|
@@ -9,6 +9,7 @@ import { staticSiteFolder, staticFolder, assetsFolder, publicFolder, bundleFolde
|
|
|
9
9
|
import { getAppRoutes } from './getAppRoutes.js';
|
|
10
10
|
import { cliError, cliLog, cliWarn } from '../cliOutput.js';
|
|
11
11
|
import { matchPath } from '../routing/matchPath.js';
|
|
12
|
+
import { toRoutes } from '../routing/routesArray.js';
|
|
12
13
|
import { throwError } from '../throwError.js';
|
|
13
14
|
import { RouteKeyIsPath, StringIsPath } from '../routing/RouteTypes.js';
|
|
14
15
|
import { findLinks, pathToLink, pathToFileName, rewriteLinks } from './staticGenFunctions.js';
|
|
@@ -26,8 +27,10 @@ export async function staticGen(framework) {
|
|
|
26
27
|
const projectDir = process.cwd();
|
|
27
28
|
//let appRoutes: RouteDefinition[] | Record<RouteKey, RouteDefinition> = await getAppRoutes(framework.compilationInfo, config)
|
|
28
29
|
const getRoutes = await getAppRoutes(framework.compilationInfo, config, quiet);
|
|
30
|
+
// only the paths are read here, with no request - nothing reads the networked store
|
|
31
|
+
const networkedData = {};
|
|
29
32
|
// ! unsure about this
|
|
30
|
-
//
|
|
33
|
+
// the routes proper, without RoutesSettings, whose symbol keys iteration never meets
|
|
31
34
|
const appRoutes = getRoutes === null ? {
|
|
32
35
|
'/': {
|
|
33
36
|
content: 'Code for static rendering SPA TBC'
|
|
@@ -35,7 +38,10 @@ export async function staticGen(framework) {
|
|
|
35
38
|
404: {
|
|
36
39
|
content: '404 TBC'
|
|
37
40
|
}
|
|
38
|
-
}
|
|
41
|
+
}
|
|
42
|
+
// only the paths are read here, with no request; each page is then fetched from the prod
|
|
43
|
+
// server, whose request makes its context
|
|
44
|
+
: toRoutes(typeof getRoutes === 'function' ? getRoutes(null, {}, networkedData) : getRoutes, false);
|
|
39
45
|
const buildLocation = framework.compilationInfo.location;
|
|
40
46
|
const server = await framework.createProdServer();
|
|
41
47
|
const serverLocation = await server.start(null, true); // port, mute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styleContentSxy.d.ts","sourceRoot":"","sources":["../../src/style/styleContentSxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"styleContentSxy.d.ts","sourceRoot":"","sources":["../../src/style/styleContentSxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EACH,KAAK,WAAW,EAEnB,MAAM,mBAAmB,CAAA;AAe1B,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,eAIrE"}
|
package/dist/sync/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAMxE,eAAO,MAAM,IAAI,SAAK,CAAA;AAEtB,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,QAM7F"}
|
package/dist/sync/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// @
|
|
4
|
-
module.exports = global.__tungsten_framework_modules;
|
|
3
|
+
module.exports = globalThis.__tungsten_framework_modules; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ContentNode } from '../ContentNode.js';
|
|
2
|
+
export type ContentToStringOptions = {
|
|
3
|
+
/** A resolved component's passed children in full, where otherwise children={...} */
|
|
4
|
+
children?: boolean;
|
|
5
|
+
/** Fragments as `<>`…`</>`, where otherwise their content stands in their place */
|
|
6
|
+
fragments?: boolean;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The tree as JSX. A component host() resolved has its output under it, marked ⤵, and the children
|
|
10
|
+
* it was passed as a prop; one unresolved holds its passed children, as written.
|
|
11
|
+
*/
|
|
12
|
+
export declare function contentToString(content: ContentNode, options?: ContentToStringOptions): string;
|
|
13
|
+
//# sourceMappingURL=contentToString.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contentToString.d.ts","sourceRoot":"","sources":["../../src/testing/contentToString.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAA0C,MAAM,mBAAmB,CAAA;AAW5F,MAAM,MAAM,sBAAsB,GAAG;IACjC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,sBAA2B,GAC3D,MAAM,CAKR"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ContentNodeIsArray, ContentNodeIsElement, ContentNodeIsFragment, ContentNodeIsLiteral, IsContentNode } from '../ContentNode.js';
|
|
2
|
+
import { $fragment, $key, $props, $type } from '../contentNodeSymbols.js';
|
|
3
|
+
import { componentTypeIdentityKey } from '../hmr/componentIdentity.js';
|
|
4
|
+
import { display } from './display.js';
|
|
5
|
+
import { $passedChildren } from './resolveContent.js';
|
|
6
|
+
const indent = ' ';
|
|
7
|
+
const width = 100;
|
|
8
|
+
/**
|
|
9
|
+
* The tree as JSX. A component host() resolved has its output under it, marked ⤵, and the children
|
|
10
|
+
* it was passed as a prop; one unresolved holds its passed children, as written.
|
|
11
|
+
*/
|
|
12
|
+
export function contentToString(content, options = {}) {
|
|
13
|
+
const lines = contentLines(content, '', options);
|
|
14
|
+
if (lines.length > 0) return lines.join('\n');
|
|
15
|
+
// a tree that renders nothing says what it was: null and false are different returns
|
|
16
|
+
return ContentNodeIsFragment(content) ? '<></>' : `{${display(content)}}`;
|
|
17
|
+
}
|
|
18
|
+
// adjacent text is one line, as the page shows it: JSX splits `Hi, {name}.` into three
|
|
19
|
+
function contentLines(content, at, options) {
|
|
20
|
+
const lines = [];
|
|
21
|
+
let text;
|
|
22
|
+
for (const node of rendered(content, options)) {
|
|
23
|
+
if (ContentNodeIsLiteral(node)) text = (text ?? '') + String(node);else {
|
|
24
|
+
if (text !== undefined) lines.push(at + textLine(text));
|
|
25
|
+
text = undefined;
|
|
26
|
+
lines.push(...elementLines(node, at, options));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (text !== undefined) lines.push(at + textLine(text));
|
|
30
|
+
return lines;
|
|
31
|
+
}
|
|
32
|
+
// quoted where spaces at an edge, or no text at all, would not show
|
|
33
|
+
const textLine = text => text !== '' && text === text.trim() ? text : `{${display(text)}}`;
|
|
34
|
+
// arrays flattened, and fragments unless asked for, as neither renders anything of its own;
|
|
35
|
+
// null, undefined and booleans render nothing
|
|
36
|
+
function rendered(content, options) {
|
|
37
|
+
if (ContentNodeIsArray(content)) return content.flatMap(each => rendered(each, options));
|
|
38
|
+
if (ContentNodeIsFragment(content) && options.fragments !== true) {
|
|
39
|
+
return rendered(content[$props].children, options);
|
|
40
|
+
}
|
|
41
|
+
return ContentNodeIsLiteral(content) || ContentNodeIsElement(content) ? [content] : [];
|
|
42
|
+
}
|
|
43
|
+
function elementLines(node, at, options) {
|
|
44
|
+
const type = node[$type];
|
|
45
|
+
if (type === $fragment) {
|
|
46
|
+
const body = contentLines(node[$props].children, at + indent, options);
|
|
47
|
+
return body.length === 0 ? [`${at}<></>`] : [`${at}<>`, ...body, `${at}</>`];
|
|
48
|
+
}
|
|
49
|
+
const name = typeof type === 'string' ? type : componentTypeIdentityKey(type);
|
|
50
|
+
const {
|
|
51
|
+
children,
|
|
52
|
+
...props
|
|
53
|
+
} = node[$props];
|
|
54
|
+
const key = node[$key];
|
|
55
|
+
const attributes = [...(key === undefined || key === null ? [] : [attribute('key', key)]), ...Object.entries(props).map(([prop, value]) => attribute(prop, value))];
|
|
56
|
+
const resolved = $passedChildren in node;
|
|
57
|
+
const passed = resolved && IsContentNode(node[$passedChildren]) ? node[$passedChildren] : null;
|
|
58
|
+
const passedNodes = rendered(passed, options);
|
|
59
|
+
const passedLines = passedNodes.every(each => ContentNodeIsLiteral(each)) ? [] // none, or text, which is a prop like any other
|
|
60
|
+
: options.children === true ? elementsLines(passed, at + indent, options) : [];
|
|
61
|
+
if (passedNodes.length > 0 && passedLines.length === 0) {
|
|
62
|
+
attributes.push(options.children === true ? attribute('children', passedNodes.join('')) : 'children={...}');
|
|
63
|
+
}
|
|
64
|
+
const body = contentLines(children, at + indent, options);
|
|
65
|
+
const opened = end => passedLines.length === 0 ? tag(`<${name}`, attributes, end, at) : [...tag(`<${name}`, attributes, ' children={', at), ...passedLines, `${at}}${end}`];
|
|
66
|
+
if (body.length === 0) return opened(' />');
|
|
67
|
+
const close = `</${name}>`;
|
|
68
|
+
if (resolved) return [...opened('> ⤵'), ...body, at + close];
|
|
69
|
+
const text = rendered(children, options).every(each => ContentNodeIsLiteral(each));
|
|
70
|
+
const open = opened('>');
|
|
71
|
+
const inline = `${open.at(-1) ?? ''}${body[0]?.trim() ?? ''}${close}`;
|
|
72
|
+
if (text && body.length === 1 && inline.length <= width) return [...open.slice(0, -1), inline];
|
|
73
|
+
return [...open, ...body, at + close];
|
|
74
|
+
}
|
|
75
|
+
// passed children as one JSX expression: an element, or a fragment round several
|
|
76
|
+
function elementsLines(content, at, options) {
|
|
77
|
+
const [only, ...more] = rendered(content, options);
|
|
78
|
+
if (only !== undefined && more.length === 0 && !ContentNodeIsLiteral(only)) {
|
|
79
|
+
return elementLines(only, at, options);
|
|
80
|
+
}
|
|
81
|
+
return [`${at}<>`, ...contentLines(content, at + indent, options), `${at}</>`];
|
|
82
|
+
}
|
|
83
|
+
// an opening tag, its attributes wrapped to the width, each line after the first indented
|
|
84
|
+
function tag(start, attributes, end, at) {
|
|
85
|
+
const lines = [];
|
|
86
|
+
let line = at + start;
|
|
87
|
+
let empty = true; // nothing yet on this line to break after
|
|
88
|
+
attributes.forEach((each, i) => {
|
|
89
|
+
const after = i === attributes.length - 1 ? end : '';
|
|
90
|
+
if (!empty && `${line} ${each}${after}`.length > width) {
|
|
91
|
+
lines.push(line);
|
|
92
|
+
line = at + indent + each;
|
|
93
|
+
} else line += ` ${each}`;
|
|
94
|
+
empty = false;
|
|
95
|
+
});
|
|
96
|
+
return [...lines, line + end];
|
|
97
|
+
}
|
|
98
|
+
function attribute(name, value) {
|
|
99
|
+
if (typeof value === 'string') return `${name}=${display(value)}`;
|
|
100
|
+
// ƒ and the name, not source: an inline arrow takes its prop's name, a bound one 'bound x'
|
|
101
|
+
if (typeof value === 'function') {
|
|
102
|
+
return `${name}={ƒ${value.name === '' ? '' : ` ${value.name}`}}`;
|
|
103
|
+
}
|
|
104
|
+
return `${name}={${display(value)}}`;
|
|
105
|
+
}
|
|
@@ -2,7 +2,13 @@ import type { ConstructPackage, TungstenBaseComponent, TungstenBaseComponentType
|
|
|
2
2
|
import type { TrueStore } from '../Store/makeStore.js';
|
|
3
3
|
import type { Endpoint, Path } from '../routing/RouteTypes.js';
|
|
4
4
|
import type { ErrorRouteType } from '../routing/ErrorRouteType.js';
|
|
5
|
+
import type { RoutesArray } from '../routing/routesArray.js';
|
|
5
6
|
import type { ReqRes } from '../ReqRes.js';
|
|
7
|
+
import type { Context } from '../context/registerContext.js';
|
|
8
|
+
import type { NetworkedData } from '../routing/routingRegistry.js';
|
|
9
|
+
import { Instance } from '../Instance/Instance.js';
|
|
10
|
+
import { type MountedTungstenRoot } from '../update/integrateUpdateVdom.js';
|
|
11
|
+
import { UpdateScheduler } from '../update/UpdateScheduler.js';
|
|
6
12
|
export type ComponentProps<ComponentType extends TungstenBaseComponentType<any, any>> = InstanceType<ComponentType>['props'];
|
|
7
13
|
export type TestStoreRegistration<Schema extends object> = {
|
|
8
14
|
getStore: (stores: TrueStore<unknown>[]) => TrueStore<Schema>;
|
|
@@ -22,8 +28,14 @@ export type TestAppOptions<Props extends object> = {
|
|
|
22
28
|
routeData?: unknown;
|
|
23
29
|
globalData?: Record<string, unknown>;
|
|
24
30
|
stores?: readonly TestStoreOverride<any>[];
|
|
25
|
-
routes?: TestRoutes |
|
|
31
|
+
routes?: TestRoutes | RoutesArray | TestRoutesFunction;
|
|
32
|
+
fileVersions?: Record<string, string>;
|
|
33
|
+
context?: Context;
|
|
34
|
+
networkedData?: NetworkedData;
|
|
26
35
|
};
|
|
36
|
+
type TestRoutesFunction = {
|
|
37
|
+
routes(reqRes: ReqRes | null, context: Context): TestRoutes | RoutesArray;
|
|
38
|
+
}['routes'];
|
|
27
39
|
export type TestRoutes = {
|
|
28
40
|
[key in Path]: Endpoint<any, any>;
|
|
29
41
|
} & {
|
|
@@ -43,5 +55,17 @@ export type TestApp<Component extends TungstenBaseComponent> = {
|
|
|
43
55
|
export type CreateTestAppArgs<Props extends object> = object extends Props ? [options?: TestAppOptions<Props>] : keyof Props extends never ? [options?: TestAppOptions<Props>] : [options: TestAppOptions<Props> & {
|
|
44
56
|
props: Props;
|
|
45
57
|
}];
|
|
58
|
+
export declare class TestAppImplementation<Component extends TungstenBaseComponent> implements TestApp<Component> {
|
|
59
|
+
#private;
|
|
60
|
+
readonly document: Document;
|
|
61
|
+
readonly container: HTMLElement;
|
|
62
|
+
readonly component: Component;
|
|
63
|
+
constructor(document: Document, container: HTMLElement, component: Component, instance: Instance, scheduler: UpdateScheduler, root: MountedTungstenRoot<TungstenBaseComponentType<any, any>>, ownsContainer: boolean);
|
|
64
|
+
resolved: () => Promise<void>;
|
|
65
|
+
setProps: (props: Component["props"]) => Promise<void>;
|
|
66
|
+
[Symbol.asyncDispose]: () => Promise<void>;
|
|
67
|
+
unmount: () => Promise<void>;
|
|
68
|
+
}
|
|
46
69
|
export declare function createTestApp<Props extends TungstenComponentPropsBase, Component extends TungstenBaseComponent<any, any>, RouteData = undefined>(RootComponent: new (pkg: ConstructPackage<Props, RouteData>) => Component, ...args: CreateTestAppArgs<Props>): Promise<TestApp<Component>>;
|
|
70
|
+
export {};
|
|
47
71
|
//# sourceMappingURL=createTestApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTestApp.d.ts","sourceRoot":"","sources":["../../src/testing/createTestApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createTestApp.d.ts","sourceRoot":"","sources":["../../src/testing/createTestApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,0BAA0B,EACjG,MAAM,mBAAmB,CAAA;AAI1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGlD,OAAO,EACH,KAAK,mBAAmB,EAE3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAI9D,MAAM,MAAM,cAAc,CACtB,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,IACzD,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAA;AAExC,MAAM,MAAM,qBAAqB,CAAC,MAAM,SAAS,MAAM,IAAI;IACvD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;AAEhE,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IAC5D,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC3C,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjE,CAAA;AAED,wBAAgB,SAAS,CAAC,MAAM,SAAS,MAAM,EAC3C,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAC3C,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC/D,iBAAiB,CAAC,MAAM,CAAC,CAE3B;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,IAAI;IAC/C,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,MAAM,CAAC,EAAE,SAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAA;IAE1C,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAAA;IAEtD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAErC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,aAAa,CAAA;CAChC,CAAA;AAGD,KAAK,kBAAkB,GAAG;IACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAA;CAC5E,CAAC,QAAQ,CAAC,CAAA;AAIX,MAAM,MAAM,UAAU,GAAG;KAAG,GAAG,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CAAE,GAAG;IAC7D,KAAK,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC1B,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,SAAS,SAAS,qBAAqB,IAAI;IAC3D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAE7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAExB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,SAAS,KAAK,GACpE,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,GACjC,MAAM,KAAK,SAAS,KAAK,GACrB,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE7D,qBAAa,qBAAqB,CAAC,SAAS,SAAS,qBAAqB,CAC1E,YAAW,OAAO,CAAC,SAAS,CAAC;;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;gBAQzB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC9D,aAAa,EAAE,OAAO;IAW1B,QAAQ,QAAa,OAAO,CAAC,IAAI,CAAC,CAEjC;IAED,QAAQ,GAAU,OAAO,SAAS,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAK1D;IAED,CAAC,MAAM,CAAC,YAAY,CAAC,QAAa,OAAO,CAAC,IAAI,CAAC,CAE9C;IAED,OAAO,QAAa,OAAO,CAAC,IAAI,CAAC,CAwBhC;CACJ;AAED,wBAAsB,aAAa,CAC/B,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,EACjD,SAAS,GAAG,SAAS,EAGrB,aAAa,EAAE,KAAK,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,SAAS,EACzE,GAAG,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAClC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAqI7B"}
|
|
@@ -8,6 +8,7 @@ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a),
|
|
|
8
8
|
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
9
9
|
import { Instance } from '../Instance/Instance.js';
|
|
10
10
|
import { initStores } from '../Servers/initStores.js';
|
|
11
|
+
import { toRoutes } from '../routing/routesArray.js';
|
|
11
12
|
import { createTungstenRootComponent, deleteTungstenRoot } from '../update/integrateUpdateVdom.js';
|
|
12
13
|
import { UpdateScheduler } from '../update/UpdateScheduler.js';
|
|
13
14
|
import { waitForEnvIfLoading } from './loadEnv.js';
|
|
@@ -22,7 +23,7 @@ var _scheduler = /*#__PURE__*/new WeakMap();
|
|
|
22
23
|
var _root = /*#__PURE__*/new WeakMap();
|
|
23
24
|
var _ownsContainer = /*#__PURE__*/new WeakMap();
|
|
24
25
|
var _unmounted = /*#__PURE__*/new WeakMap();
|
|
25
|
-
class TestAppImplementation {
|
|
26
|
+
export class TestAppImplementation {
|
|
26
27
|
constructor(document, container, component, instance, scheduler, root, ownsContainer) {
|
|
27
28
|
_defineProperty(this, "document", void 0);
|
|
28
29
|
_defineProperty(this, "container", void 0);
|
|
@@ -103,6 +104,10 @@ RootComponent, ...args) {
|
|
|
103
104
|
}
|
|
104
105
|
const location = options?.location ?? '/';
|
|
105
106
|
const globalData = options?.globalData ?? {};
|
|
107
|
+
// made once, as a request makes them: the routes function, the stores and the instance must all
|
|
108
|
+
// see the same objects, which separate `?? {}`s at each use did not give them
|
|
109
|
+
const context = options?.context ?? {};
|
|
110
|
+
const networkedData = options?.networkedData ?? {};
|
|
106
111
|
const matchedRouteInfo = {
|
|
107
112
|
key: null,
|
|
108
113
|
params: options?.routeParams ?? {},
|
|
@@ -122,7 +127,7 @@ RootComponent, ...args) {
|
|
|
122
127
|
internalStore,
|
|
123
128
|
stores,
|
|
124
129
|
storeSubscriptions
|
|
125
|
-
} = initStores(location, null, globalData, matchedRouteInfo);
|
|
130
|
+
} = initStores(location, null, globalData, matchedRouteInfo, null, context, networkedData);
|
|
126
131
|
const instanceConfig = {
|
|
127
132
|
prod: false,
|
|
128
133
|
useRootComponent: true,
|
|
@@ -134,8 +139,12 @@ RootComponent, ...args) {
|
|
|
134
139
|
// routing() falls back to the built-in 404 when neither '404' nor 'default' is given
|
|
135
140
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
136
141
|
const appRoutes = options?.routes ?? {};
|
|
137
|
-
|
|
142
|
+
// dev, so a path given twice fails the test
|
|
143
|
+
const routes = toRoutes(typeof appRoutes === 'function' ? appRoutes(null, context, networkedData) : appRoutes, true);
|
|
138
144
|
const instance = new Instance(location, instanceConfig, null, appRoutes, routes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, runtimeContext);
|
|
145
|
+
instance.fileVersions = options?.fileVersions;
|
|
146
|
+
instance.context = context;
|
|
147
|
+
instance.networkedData = networkedData;
|
|
139
148
|
try {
|
|
140
149
|
for (const override of options?.stores ?? []) {
|
|
141
150
|
const store = override.registration.getStore(instance.stores);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/testing/display.ts"],"names":[],"mappings":"AAUA,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CAmCzD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ContentNodeIsElement, IsContentNode } from '../ContentNode.js';
|
|
2
|
+
import { $fragment, $type } from '../contentNodeSymbols.js';
|
|
3
|
+
import { componentTypeIdentityKey } from '../hmr/componentIdentity.js';
|
|
4
|
+
const displayed = 5; // entries shown of an array or object
|
|
5
|
+
const displayDepth = 2;
|
|
6
|
+
// a value as a failure message shows it; arrays and objects shortened by length and depth
|
|
7
|
+
export function display(value, depth = 0) {
|
|
8
|
+
if (typeof value === 'string') return `'${value}'`;
|
|
9
|
+
if (typeof value === 'function') {
|
|
10
|
+
return value.name === '' ? '[function]' : `[function ${value.name}]`;
|
|
11
|
+
}
|
|
12
|
+
if (typeof value !== 'object' || value === null) {
|
|
13
|
+
return String(value); // a number, boolean, bigint, symbol, null or undefined
|
|
14
|
+
}
|
|
15
|
+
if (value instanceof Date) {
|
|
16
|
+
return isNaN(value.getTime()) ? 'Date(invalid)' : `Date(${value.toISOString()})`;
|
|
17
|
+
}
|
|
18
|
+
// an element held as a value, as in a prop: by tag or name, as its symbol keys hide it as data
|
|
19
|
+
if ($type in value && IsContentNode(value) && ContentNodeIsElement(value)) {
|
|
20
|
+
const type = value[$type];
|
|
21
|
+
if (type === $fragment) return '<>';
|
|
22
|
+
return `<${typeof type === 'string' ? type : componentTypeIdentityKey(type)}>`;
|
|
23
|
+
}
|
|
24
|
+
const shown = entries => depth >= displayDepth ? '…' : entries.slice(0, displayed).join(', ') + (entries.length > displayed ? ', …' : '');
|
|
25
|
+
if (Array.isArray(value)) {
|
|
26
|
+
return value.length === 0 ? '[]' : `[${shown(value.map(each => display(each, depth + 1)))}]`;
|
|
27
|
+
}
|
|
28
|
+
if (value instanceof Set) {
|
|
29
|
+
return `Set { ${shown([...value].map(each => display(each, depth + 1)))} }`;
|
|
30
|
+
}
|
|
31
|
+
if (value instanceof Map) {
|
|
32
|
+
const pairs = [...value].map(([key, each]) => `${display(key, depth + 1)} => ${display(each, depth + 1)}`);
|
|
33
|
+
return `Map { ${shown(pairs)} }`;
|
|
34
|
+
}
|
|
35
|
+
const entries = Object.entries(value).map(([key, each]) => `${key}: ${display(each, depth + 1)}`);
|
|
36
|
+
return entries.length === 0 ? '{}' : `{ ${shown(entries)} }`;
|
|
37
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { ContentNode } from '../ContentNode.js';
|
|
2
|
+
type Kind = 'text' | 'interruptedText' | ElementKind | 'fragment' | 'className' | 'id' | 'children' | `prop:${string}` | 'elements';
|
|
3
|
+
type ElementKind = `html:${string}` | `component:${string}` | SelectKind;
|
|
4
|
+
type SelectKind = `select:${string}`;
|
|
5
|
+
type Test = (seen: unknown) => boolean;
|
|
6
|
+
type Failure = {
|
|
7
|
+
actual: unknown;
|
|
8
|
+
expected: unknown;
|
|
9
|
+
saw: string;
|
|
10
|
+
showDiff: boolean;
|
|
11
|
+
};
|
|
12
|
+
type TrackFn = (match: boolean) => boolean | void;
|
|
13
|
+
type DecideFn = (ofKind: number) => Failure | undefined;
|
|
14
|
+
type Requirement = () => [track: TrackFn, decide: DecideFn];
|
|
15
|
+
type Fact = [
|
|
16
|
+
Kind,
|
|
17
|
+
Test,
|
|
18
|
+
Requirement,
|
|
19
|
+
quantifier: string,
|
|
20
|
+
end: string,
|
|
21
|
+
spoken: string,
|
|
22
|
+
explain?: Explain | undefined
|
|
23
|
+
];
|
|
24
|
+
type Explain = (seen: unknown) => Outcome | undefined;
|
|
25
|
+
type Outcome = 'not content' | {
|
|
26
|
+
misses: Miss[];
|
|
27
|
+
met: BuiltFact[];
|
|
28
|
+
score: number;
|
|
29
|
+
};
|
|
30
|
+
type Miss = {
|
|
31
|
+
fact: BuiltFact;
|
|
32
|
+
failure: Failure;
|
|
33
|
+
sightings: Sighting[];
|
|
34
|
+
};
|
|
35
|
+
export type EnsureOptions = {
|
|
36
|
+
readable?: boolean;
|
|
37
|
+
color?: boolean;
|
|
38
|
+
};
|
|
39
|
+
type Props = Record<string, unknown> & {
|
|
40
|
+
children?: ContentNode;
|
|
41
|
+
};
|
|
42
|
+
type WithFn = (props: Props) => boolean;
|
|
43
|
+
declare const property: unique symbol;
|
|
44
|
+
type PropertyFact = Fact & {
|
|
45
|
+
readonly [property]: true;
|
|
46
|
+
};
|
|
47
|
+
type Made<Scope extends Fact | undefined, Own extends Fact> = [Scope] extends [Fact] ? Scope : Own;
|
|
48
|
+
type Quantifiers<E> = {
|
|
49
|
+
readonly no: E;
|
|
50
|
+
readonly none: E;
|
|
51
|
+
readonly one: E;
|
|
52
|
+
readonly two: E;
|
|
53
|
+
readonly three: E;
|
|
54
|
+
readonly count: (num: number) => E;
|
|
55
|
+
readonly a: E;
|
|
56
|
+
readonly an: E;
|
|
57
|
+
readonly some: E;
|
|
58
|
+
readonly all: E;
|
|
59
|
+
};
|
|
60
|
+
type StringEnd<F extends Fact> = ((text: string) => F) & {
|
|
61
|
+
contains: (substring: string) => F;
|
|
62
|
+
matches: (regex: RegExp) => F;
|
|
63
|
+
};
|
|
64
|
+
type ElementEnd<F extends Fact> = F & {
|
|
65
|
+
with: ((facts: PropertyFact[] | WithFn) => F) & Quantifiers<PropertyEnds<F>> & {
|
|
66
|
+
children: ((facts: Fact[]) => F) & Quantifiers<Ends<F>>;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
type PropEnd<F extends Fact> = F & {
|
|
70
|
+
is: (value: unknown) => F;
|
|
71
|
+
contains: (substring: string) => F;
|
|
72
|
+
matches: (regex: RegExp) => F;
|
|
73
|
+
exact: (value: unknown) => F;
|
|
74
|
+
subset: (shape: unknown) => F;
|
|
75
|
+
duck: (shape: unknown) => F;
|
|
76
|
+
content: () => F & {
|
|
77
|
+
with: ((facts: Fact[]) => F) & Quantifiers<Ends<F>>;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
type Ends<Scope extends Fact | undefined = undefined> = {
|
|
81
|
+
text: StringEnd<Made<Scope, Fact>>;
|
|
82
|
+
textCi: StringEnd<Made<Scope, Fact>>;
|
|
83
|
+
interruptedText: StringEnd<Made<Scope, PropertyFact>>;
|
|
84
|
+
html: (tag: string) => ElementEnd<Made<Scope, Fact>>;
|
|
85
|
+
component: (name: string) => ElementEnd<Made<Scope, Fact>>;
|
|
86
|
+
select: (selector: string) => ElementEnd<Made<Scope, Fact>>;
|
|
87
|
+
fragment: () => Made<Scope, Fact>;
|
|
88
|
+
className: (className?: string) => Made<Scope, PropertyFact>;
|
|
89
|
+
id: (id?: string) => Made<Scope, PropertyFact>;
|
|
90
|
+
prop: (prop: string) => PropEnd<Made<Scope, PropertyFact>>;
|
|
91
|
+
};
|
|
92
|
+
declare const propertyEnds: readonly ["interruptedText", "className", "id", "prop"];
|
|
93
|
+
type PropertyEnds<F extends Fact> = Pick<Ends<F>, typeof propertyEnds[number]>;
|
|
94
|
+
declare const _ensure: typeof ensure & Quantifiers<Ends<undefined>>;
|
|
95
|
+
export { _ensure as ensure };
|
|
96
|
+
export declare const no: Ends<undefined>, none: Ends<undefined>, one: Ends<undefined>, two: Ends<undefined>, three: Ends<undefined>, a: Ends<undefined>, an: Ends<undefined>, some: Ends<undefined>, all: Ends<undefined>, count: (num: number) => Ends<undefined>;
|
|
97
|
+
export declare class EnsureError extends Error {
|
|
98
|
+
actual: unknown;
|
|
99
|
+
expected: unknown;
|
|
100
|
+
operator: string;
|
|
101
|
+
showDiff: boolean;
|
|
102
|
+
name: string;
|
|
103
|
+
constructor(message: string, actual: unknown, expected: unknown, operator: string, showDiff: boolean);
|
|
104
|
+
}
|
|
105
|
+
declare function ensure(tree: ContentNode, facts: Fact[], options?: EnsureOptions): void;
|
|
106
|
+
export declare const children: ((facts: Fact[]) => PropertyFact) & Quantifiers<Ends<PropertyFact>>;
|
|
107
|
+
type BuiltFact = {
|
|
108
|
+
kind: Kind;
|
|
109
|
+
test: Test;
|
|
110
|
+
track: TrackFn;
|
|
111
|
+
decide: DecideFn;
|
|
112
|
+
explain: Explain | undefined;
|
|
113
|
+
chained: string;
|
|
114
|
+
spoken: string;
|
|
115
|
+
operator: string;
|
|
116
|
+
};
|
|
117
|
+
type Sighting = ['text', string] | [Exclude<Kind, 'text'>, unknown];
|
|
118
|
+
export declare const cssSelectBundle: string;
|
|
119
|
+
//# sourceMappingURL=ensure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure.d.ts","sourceRoot":"","sources":["../../src/testing/ensure.ts"],"names":[],"mappings":"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"}
|