tungsten 0.7.0 → 0.7.2
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/AGENTS.md +1246 -0
- package/dist/.build-complete +1 -1
- package/dist/FrameworkConfig.d.ts +2 -0
- package/dist/Instance/Instance.js +6 -33
- package/dist/Instance/InstanceConfig.d.ts +1 -0
- package/dist/Servers/DevServer.js +10 -1
- package/dist/Servers/ProdServer.d.ts +1 -0
- package/dist/Servers/ProdServer.js +18 -1
- package/dist/Servers/routing.js +9 -5
- package/dist/Servers/stubInstance.d.ts +8 -0
- package/dist/Servers/stubInstance.js +40 -0
- package/dist/build/createInstanceConfigFile.js +1 -1
- package/dist/componentHelpers.d.ts +2 -1
- package/dist/componentHelpers.js +3 -0
- package/dist/frameworkConfigSchema.d.ts +2 -0
- package/dist/frameworkConfigSchema.js +4 -1
- package/dist/hydrate/hydrate.js +31 -10
- package/dist/hydrate/stubRouting.d.ts +8 -0
- package/dist/hydrate/stubRouting.js +25 -0
- package/dist/makeFinalConfig.js +2 -0
- package/dist/makeInstanceConfigFromFrameworkConfig.js +1 -0
- package/dist/pipeline/PipelineRequestHandler.js +9 -1
- package/dist/pipeline/hydratePipeline.js +28 -9
- package/dist/pipeline/pipeline.d.ts +35 -33
- package/dist/pipeline/pipeline.js +10 -5
- package/dist/pipeline/pipelineDefinition.d.ts +20 -9
- package/dist/pipeline/runPipeline.d.ts +6 -8
- package/dist/pipeline/runPipeline.js +8 -8
- package/dist/pipeline/runSplitPipeline.d.ts +3 -3
- package/dist/pipeline/runSplitPipeline.js +12 -8
- package/dist/pipeline/splitPipeline.d.ts +8 -8
- package/dist/render/contentTreeToRenderingTree.js +4 -1
- package/dist/routing/MatchedRouteInfo.d.ts +2 -0
- package/dist/routing/MatchedRouteInfo.js +1 -1
- package/dist/routing/RouteContentFunction.d.ts +1 -1
- package/dist/routing/RouteTypes.d.ts +1 -1
- package/dist/routing/Routes.d.ts +9 -4
- package/dist/routing/builder.d.ts +2 -1
- package/dist/routing/builder.js +6 -0
- package/dist/routing/redirectOf.d.ts +11 -0
- package/dist/routing/redirectOf.js +32 -0
- package/dist/routing/routesArray.d.ts +2 -2
- package/dist/routing/routingBuilder.js +0 -1
- package/dist/testing/contentToString.d.ts +13 -0
- package/dist/testing/contentToString.js +105 -0
- package/dist/testing/display.d.ts +2 -0
- package/dist/testing/display.js +37 -0
- package/dist/testing/ensure.d.ts +52 -41
- package/dist/testing/ensure.js +204 -62
- package/dist/testing/host.d.ts +25 -25
- package/dist/testing/host.js +1 -3
- package/dist/testing/hydrateTestApp.js +4 -3
- package/dist/testing/index.d.ts +2 -3
- package/dist/testing/index.js +1 -2
- package/dist/testing/pipeline/createTestPacketApp.d.ts +30 -0
- package/dist/testing/pipeline/createTestPacketApp.js +45 -0
- package/dist/testing/pipeline/createTestPipelineApp.d.ts +70 -0
- package/dist/testing/pipeline/createTestPipelineApp.js +90 -0
- package/dist/testing/pipeline/hostPipeline.d.ts +25 -0
- package/dist/testing/pipeline/hostPipeline.js +18 -0
- package/dist/testing/{hydrateTestPipelineApp.d.ts → pipeline/hydrateTestPipelineApp.d.ts} +6 -6
- package/dist/testing/{hydrateTestPipelineApp.js → pipeline/hydrateTestPipelineApp.js} +22 -19
- package/dist/testing/pipeline/index.d.ts +5 -0
- package/dist/testing/pipeline/index.js +4 -0
- package/dist/testing/pipeline/pipelineTestApp.d.ts +34 -0
- package/dist/testing/pipeline/pipelineTestApp.js +100 -0
- package/dist/testing/pipeline/testPipelineRoute.d.ts +2 -0
- package/dist/testing/pipeline/testPipelineRoute.js +1 -0
- package/dist/testing/resolveContent.d.ts +2 -0
- package/dist/testing/resolveContent.js +9 -1
- package/package.json +10 -5
- package/vendor/css-select.js +3383 -0
- package/vendor/manifest.json +4 -3
- package/dist/AnyComponent.d.ts.map +0 -1
- package/dist/AnyComponentType.d.ts.map +0 -1
- package/dist/AppResponse.d.ts.map +0 -1
- package/dist/AppTypeExtraction.d.ts.map +0 -1
- package/dist/AssignedStyle.d.ts.map +0 -1
- package/dist/Brands.d.ts.map +0 -1
- package/dist/CjsTypes.d.ts.map +0 -1
- package/dist/ComponentInstance.d.ts.map +0 -1
- package/dist/ComponentRenderInfo.type.d.ts.map +0 -1
- package/dist/ComponentStyle.d.ts.map +0 -1
- package/dist/Components.d.ts.map +0 -1
- package/dist/ContentFunction.d.ts.map +0 -1
- package/dist/ContentNode.d.ts.map +0 -1
- package/dist/ContentNodeNew.d.ts.map +0 -1
- package/dist/CssNames.d.ts.map +0 -1
- package/dist/DomNodes.d.ts.map +0 -1
- package/dist/DomPointer.d.ts.map +0 -1
- package/dist/DomRegion.d.ts.map +0 -1
- package/dist/ExtendableHTMLElement.d.ts.map +0 -1
- package/dist/Framework.d.ts.map +0 -1
- package/dist/FrameworkConfig.d.ts.map +0 -1
- package/dist/FunctionComponent.d.ts.map +0 -1
- package/dist/FunctionComponentStandIn.d.ts.map +0 -1
- package/dist/GenericObject.type.d.ts.map +0 -1
- package/dist/HtmlElementAttributes.d.ts.map +0 -1
- package/dist/Instance/ClientRuntimeContext.d.ts.map +0 -1
- package/dist/Instance/Instance.d.ts.map +0 -1
- package/dist/Instance/InstanceConfig.d.ts.map +0 -1
- package/dist/IsDefined.d.ts.map +0 -1
- package/dist/IsIndexableObject.d.ts.map +0 -1
- package/dist/IsNumber.d.ts.map +0 -1
- package/dist/IsObject.d.ts.map +0 -1
- package/dist/Json.type.d.ts.map +0 -1
- package/dist/JsxContent.d.ts.map +0 -1
- package/dist/Key.d.ts.map +0 -1
- package/dist/KeyAttr.d.ts.map +0 -1
- package/dist/MapObject.d.ts.map +0 -1
- package/dist/Mode.d.ts.map +0 -1
- package/dist/Module.d.ts.map +0 -1
- package/dist/NoDeproxy.d.ts.map +0 -1
- package/dist/PopMessage.type.d.ts.map +0 -1
- package/dist/ProcessedStylesObject.d.ts.map +0 -1
- package/dist/RenderFunction.d.ts.map +0 -1
- package/dist/RenderedContentNode.d.ts.map +0 -1
- package/dist/RenderingNode.d.ts.map +0 -1
- package/dist/ReqRes.d.ts.map +0 -1
- package/dist/Sass.d.ts.map +0 -1
- package/dist/Script.d.ts.map +0 -1
- package/dist/ServerRpcFunction.type.d.ts.map +0 -1
- package/dist/Servers/DevServer.d.ts.map +0 -1
- package/dist/Servers/ProdServer.d.ts.map +0 -1
- package/dist/Servers/ServerMiddleware.d.ts.map +0 -1
- package/dist/Servers/StaticSiteServer.d.ts.map +0 -1
- package/dist/Servers/TungstenServer.d.ts.map +0 -1
- package/dist/Servers/cacheVersioned.d.ts.map +0 -1
- package/dist/Servers/devErrorPageAutoRetry.d.ts.map +0 -1
- package/dist/Servers/initStores.d.ts.map +0 -1
- package/dist/Servers/listenVerified.d.ts.map +0 -1
- package/dist/Servers/loadEnvsDev.d.ts.map +0 -1
- package/dist/Servers/portError.d.ts.map +0 -1
- package/dist/Servers/resetRegistrations.d.ts.map +0 -1
- package/dist/Servers/routing.d.ts.map +0 -1
- package/dist/Servers/serveStatic.d.ts.map +0 -1
- package/dist/Servers/tungstenCorePrivateEnvSchema.d.ts.map +0 -1
- package/dist/Servers/tungstenCorePublicEnvSchema.d.ts.map +0 -1
- package/dist/Store/BaseStoreSchema.d.ts.map +0 -1
- package/dist/Store/InternalStoreSchema.d.ts.map +0 -1
- package/dist/Store/ServerDataLoading.d.ts.map +0 -1
- package/dist/Store/Store.d.ts.map +0 -1
- package/dist/Store/StoreProxyInterface.d.ts.map +0 -1
- package/dist/Store/StoreSchemaClass.d.ts.map +0 -1
- package/dist/Store/StoreSubscriptions.types.d.ts.map +0 -1
- package/dist/Store/TypeSafeStore.d.ts.map +0 -1
- package/dist/Store/createStores.d.ts.map +0 -1
- package/dist/Store/exportStore.d.ts.map +0 -1
- package/dist/Store/getInternalStore.d.ts.map +0 -1
- package/dist/Store/getStore.d.ts.map +0 -1
- package/dist/Store/makeStore.d.ts.map +0 -1
- package/dist/Store/registerStore.d.ts.map +0 -1
- package/dist/Store/storeCreators.d.ts.map +0 -1
- package/dist/StoreBindVariable.d.ts.map +0 -1
- package/dist/StyleProcessor.d.ts.map +0 -1
- package/dist/TElement.d.ts.map +0 -1
- package/dist/TungstenApp.d.ts.map +0 -1
- package/dist/TungstenAppOld.d.ts.map +0 -1
- package/dist/TungstenElement.d.ts.map +0 -1
- package/dist/TungstenError.d.ts.map +0 -1
- package/dist/TungstenStyleObject.d.ts.map +0 -1
- package/dist/__deproxy.d.ts.map +0 -1
- package/dist/_client/RootComponent.d.ts.map +0 -1
- package/dist/_client/cjsHelpers.d.ts.map +0 -1
- package/dist/_client/client.d.ts.map +0 -1
- package/dist/_client/hmr.d.ts.map +0 -1
- package/dist/_client/liveReload.d.ts.map +0 -1
- package/dist/_client/liveReloadSource.d.ts.map +0 -1
- package/dist/_client/rootComponentRelFilePath.d.ts.map +0 -1
- package/dist/_client/routes.d.ts.map +0 -1
- package/dist/_testing/regexEquals.d.ts.map +0 -1
- package/dist/_testing/should.d.ts.map +0 -1
- package/dist/_testing/sxy-test-runner.types.d.ts.map +0 -1
- package/dist/alive.d.ts.map +0 -1
- package/dist/api/ApiEndpoint.d.ts.map +0 -1
- package/dist/api/ApiMethod.type.d.ts.map +0 -1
- package/dist/api/ApiRoute.d.ts.map +0 -1
- package/dist/api/ApiRoutes.d.ts.map +0 -1
- package/dist/api/Request.d.ts.map +0 -1
- package/dist/api/Response.d.ts.map +0 -1
- package/dist/api/getApiRoutes.d.ts.map +0 -1
- package/dist/api/getExport.d.ts.map +0 -1
- package/dist/api/getExportDev.d.ts.map +0 -1
- package/dist/appBuilder.d.ts.map +0 -1
- package/dist/appBuilder.types.test.d.ts +0 -110
- package/dist/appBuilder.types.test.d.ts.map +0 -1
- package/dist/appBuilder.types.test.js +0 -240
- package/dist/appOutput.d.ts.map +0 -1
- package/dist/assert.d.ts.map +0 -1
- package/dist/auth/checkPassword.d.ts.map +0 -1
- package/dist/auth/hashPassword.d.ts.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/babelPlugins/BabelAddDevCacheBust.d.ts.map +0 -1
- package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts.map +0 -1
- package/dist/babelPlugins/BabelFakeType.d.ts.map +0 -1
- package/dist/babelPlugins/BabelState.type.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformBindDirect.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformBindVar.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformComponentState.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformCssImports.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDependencyImportsOld.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDeproxyState.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDocInit.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformJsxExtensionsToJs.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformJsxSignals.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformReactive.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformReactiveSvelteStyle.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformRemoveBlocks.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformRemoveDevBlocks.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformRemoveServerBlocks.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformSxyFrameworkImports.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformSxyJsx.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformUniqueComponents.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTypes.d.ts.map +0 -1
- package/dist/babelPlugins/fixImportsInSassErrorMessage.d.ts.map +0 -1
- package/dist/babelPlugins/isBareImport.d.ts.map +0 -1
- package/dist/babelPlugins/test.d.ts.map +0 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +0 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +0 -1
- package/dist/babelPlugins/transformPackageImports/getWebLocationOfPackageFile.d.ts.map +0 -1
- package/dist/babelPlugins/transformPackageImports/resolveBareImport.d.ts.map +0 -1
- package/dist/bin/args.d.ts.map +0 -1
- package/dist/bin/commands/build.d.ts.map +0 -1
- package/dist/bin/commands/buildHelp.d.ts.map +0 -1
- package/dist/bin/commands/clean.d.ts.map +0 -1
- package/dist/bin/commands/compile.d.ts.map +0 -1
- package/dist/bin/commands/compileSimplePackage.d.ts.map +0 -1
- package/dist/bin/commands/dev.d.ts.map +0 -1
- package/dist/bin/commands/devmon.d.ts.map +0 -1
- package/dist/bin/commands/help.d.ts.map +0 -1
- package/dist/bin/commands/speed.d.ts.map +0 -1
- package/dist/bin/commands/start.d.ts.map +0 -1
- package/dist/bin/commands/static.d.ts.map +0 -1
- package/dist/bin/index.d.ts.map +0 -1
- package/dist/bin/moduleLoadAnalysis.d.ts.map +0 -1
- package/dist/bin/vendorHook.d.ts.map +0 -1
- package/dist/booleanAttributeValue.d.ts.map +0 -1
- package/dist/browserStorage.d.ts.map +0 -1
- package/dist/build/BabelConfig.d.ts.map +0 -1
- package/dist/build/CompilationInfo.d.ts.map +0 -1
- package/dist/build/CompilationInfoFailure.d.ts.map +0 -1
- package/dist/build/CompilationInfoSuccess.d.ts.map +0 -1
- package/dist/build/Event.type.d.ts.map +0 -1
- package/dist/build/ImportAliases.d.ts.map +0 -1
- package/dist/build/PackageList.d.ts.map +0 -1
- package/dist/build/PackagesCacheInfo.d.ts.map +0 -1
- package/dist/build/ProcessPackageResult.d.ts.map +0 -1
- package/dist/build/ProcessPackageResults.d.ts.map +0 -1
- package/dist/build/PromiseSettledResultIsPromiseRejectedResult.d.ts.map +0 -1
- package/dist/build/assetVersions.d.ts.map +0 -1
- package/dist/build/babel.user.common.config.d.ts.map +0 -1
- package/dist/build/bundle.d.ts.map +0 -1
- package/dist/build/bundleBabelOptions.d.ts.map +0 -1
- package/dist/build/clientModuleAliases.d.ts.map +0 -1
- package/dist/build/clientRoutesFile.d.ts.map +0 -1
- package/dist/build/combineComponentCss.d.ts.map +0 -1
- package/dist/build/compileJavascript.d.ts.map +0 -1
- package/dist/build/compileStyles.d.ts.map +0 -1
- package/dist/build/compileUserApp.d.ts.map +0 -1
- package/dist/build/componentStylesCache.d.ts.map +0 -1
- package/dist/build/copyAssets.d.ts.map +0 -1
- package/dist/build/copyPackageModulesToPackagesFolder.d.ts.map +0 -1
- package/dist/build/copyPublicFiles.d.ts.map +0 -1
- package/dist/build/createClientFiles.d.ts.map +0 -1
- package/dist/build/createInstanceConfigFile.d.ts.map +0 -1
- package/dist/build/createPackageVirtualFileSystem.d.ts.map +0 -1
- package/dist/build/createPackageVirtualFileSystems.d.ts.map +0 -1
- package/dist/build/customImportAliases.d.ts.map +0 -1
- package/dist/build/customPackageEntryPoints.d.ts.map +0 -1
- package/dist/build/devBundle.d.ts.map +0 -1
- package/dist/build/devBundle.rollup.config.d.ts.map +0 -1
- package/dist/build/findRequiredUserModules.d.ts.map +0 -1
- package/dist/build/frameworkDestLocation.d.ts.map +0 -1
- package/dist/build/frameworkStylesheets.d.ts.map +0 -1
- package/dist/build/getAllSxyClientModules.d.ts.map +0 -1
- package/dist/build/getPackageDirForFile.d.ts.map +0 -1
- package/dist/build/getSxyClientPackageAliases.d.ts.map +0 -1
- package/dist/build/getTempDirForAppCompilation.d.ts.map +0 -1
- package/dist/build/internalAliases.d.ts.map +0 -1
- package/dist/build/makeBabelRawConfig.d.ts.map +0 -1
- package/dist/build/makeBabelUserDevConfig.d.ts.map +0 -1
- package/dist/build/makeBabelUserProdConfig.d.ts.map +0 -1
- package/dist/build/makeEnvJavascriptContent.d.ts.map +0 -1
- package/dist/build/modifySassImports.d.ts.map +0 -1
- package/dist/build/packageIdentifier.d.ts.map +0 -1
- package/dist/build/processDataToLines.d.ts.map +0 -1
- package/dist/build/resolveSassScssImports.d.ts.map +0 -1
- package/dist/build/rollup.user.prod.config.d.ts.map +0 -1
- package/dist/build/rollupExtractComponentStylesheets.d.ts.map +0 -1
- package/dist/build/rollupProdConstants.d.ts.map +0 -1
- package/dist/build/sassImportParser.d.ts.map +0 -1
- package/dist/build/scssImportParserChatgpt.d.ts.map +0 -1
- package/dist/build/tallyBabel.d.ts.map +0 -1
- package/dist/cacheControl.d.ts.map +0 -1
- package/dist/calculateImportedStaticFileLocations.d.ts.map +0 -1
- package/dist/calledFrom.d.ts.map +0 -1
- package/dist/checkedAttributeToBoolean.d.ts.map +0 -1
- package/dist/checkedValueToBoolean.d.ts.map +0 -1
- package/dist/cliOutput.d.ts.map +0 -1
- package/dist/clone.d.ts.map +0 -1
- package/dist/compat/context.d.ts.map +0 -1
- package/dist/compat/forwardRef.d.ts.map +0 -1
- package/dist/compat/index.d.ts.map +0 -1
- package/dist/compat/propTypes.d.ts.map +0 -1
- package/dist/compat/toTungstenClassComponent.d.ts.map +0 -1
- package/dist/compat/toTungstenFunctionComponent.d.ts.map +0 -1
- package/dist/compat/types.d.ts.map +0 -1
- package/dist/componentClassName.d.ts.map +0 -1
- package/dist/componentHelpers.d.ts.map +0 -1
- package/dist/componentProxyHandlers.d.ts.map +0 -1
- package/dist/componentType.d.ts.map +0 -1
- package/dist/components/Await.d.ts.map +0 -1
- package/dist/components/Fragment.d.ts.map +0 -1
- package/dist/components/GoToComponent.d.ts.map +0 -1
- package/dist/components/Lazy.d.ts.map +0 -1
- package/dist/components/Link.d.ts.map +0 -1
- package/dist/components/NativeHtml.d.ts.map +0 -1
- package/dist/components/NoEscape.d.ts.map +0 -1
- package/dist/components/PopMessages.d.ts.map +0 -1
- package/dist/components/Protected.d.ts.map +0 -1
- package/dist/components/RawHtml.d.ts.map +0 -1
- package/dist/components/RouteRedirectComponent.d.ts.map +0 -1
- package/dist/components/Stylesheet.d.ts.map +0 -1
- package/dist/components/WebRedirectComponent.d.ts.map +0 -1
- package/dist/components/_GoToComponent.d.ts.map +0 -1
- package/dist/components/bindable/BindMode.d.ts.map +0 -1
- package/dist/components/bindable/BindVariable.d.ts.map +0 -1
- package/dist/components/bindable/BindableCheckbox.d.ts.map +0 -1
- package/dist/components/bindable/BindableInput.d.ts.map +0 -1
- package/dist/components/bindable/BindableInputNonString.d.ts.map +0 -1
- package/dist/components/bindable/BindableInputString.d.ts.map +0 -1
- package/dist/components/bindable/BindableInputTyped.d.ts.map +0 -1
- package/dist/components/bindable/BindableInputTypedLegacy.d.ts.map +0 -1
- package/dist/components/bindable/BindableRadio.d.ts.map +0 -1
- package/dist/components/bindable/BindableSelect.d.ts.map +0 -1
- package/dist/components/bindable/BindableSelectNaive.d.ts.map +0 -1
- package/dist/components/bindable/BindableTextarea.d.ts.map +0 -1
- package/dist/components/bindable/bindableCandidates.comparison.d.ts.map +0 -1
- package/dist/components/bindable/bindableHtmlElements.d.ts.map +0 -1
- package/dist/components/bindable/bindableProps.types.test.d.ts +0 -50
- package/dist/components/bindable/bindableProps.types.test.d.ts.map +0 -1
- package/dist/components/bindable/bindableProps.types.test.js +0 -252
- package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +0 -1
- package/dist/components/library/RichTextEditor/StoredContentNode.d.ts.map +0 -1
- package/dist/components/library/RichTextEditor/activeFormats.d.ts.map +0 -1
- package/dist/components/library/RichTextEditor/contentTree.d.ts.map +0 -1
- package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts.map +0 -1
- package/dist/components/library/__StatefulMessage/MessageData.d.ts.map +0 -1
- package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts.map +0 -1
- package/dist/components/library/index.d.ts.map +0 -1
- package/dist/components/makeTypedLink.d.ts.map +0 -1
- package/dist/concat.d.ts.map +0 -1
- package/dist/contentNodeSymbols.d.ts.map +0 -1
- package/dist/context/registerContext.d.ts.map +0 -1
- package/dist/copy.d.ts.map +0 -1
- package/dist/createElement.d.ts.map +0 -1
- package/dist/createRef.d.ts.map +0 -1
- package/dist/createRoutes.d.ts.map +0 -1
- package/dist/defaultConfig.d.ts.map +0 -1
- package/dist/deleteDirs.d.ts.map +0 -1
- package/dist/devBanner.d.ts.map +0 -1
- package/dist/docInit.d.ts.map +0 -1
- package/dist/domNodeChecks.d.ts.map +0 -1
- package/dist/env/Env.d.ts.map +0 -1
- package/dist/env/Interfaces.d.ts.map +0 -1
- package/dist/env/addToEnv.d.ts.map +0 -1
- package/dist/env/droppedCoreEnvKeys.d.ts.map +0 -1
- package/dist/env/funcs.d.ts.map +0 -1
- package/dist/env/getEnvSchemas.d.ts.map +0 -1
- package/dist/env/index.d.ts.map +0 -1
- package/dist/env/privateEnv.d.ts.map +0 -1
- package/dist/env/privateEnvOrThrow.d.ts.map +0 -1
- package/dist/env/publicEnv.d.ts.map +0 -1
- package/dist/env/publicEnvOrThrow.d.ts.map +0 -1
- package/dist/env/registerEnvSchemas.d.ts.map +0 -1
- package/dist/env/setPrivateEnvValidator.d.ts.map +0 -1
- package/dist/env/setPublicEnvValidator.d.ts.map +0 -1
- package/dist/env/test.d.ts.map +0 -1
- package/dist/env/types.d.ts.map +0 -1
- package/dist/env/windowGlobalEnvStatement.d.ts.map +0 -1
- package/dist/experiments.d.ts.map +0 -1
- package/dist/filePathFromUrl.d.ts.map +0 -1
- package/dist/fileVersions.d.ts.map +0 -1
- package/dist/findPackageDotJson.d.ts.map +0 -1
- package/dist/findProjectDir.d.ts.map +0 -1
- package/dist/findUserConfig.d.ts.map +0 -1
- package/dist/fixExtension.d.ts.map +0 -1
- package/dist/foreach.d.ts.map +0 -1
- package/dist/frameworkConfigSchema.d.ts.map +0 -1
- package/dist/getArrowFunctionBody.d.ts.map +0 -1
- package/dist/getComponent.d.ts.map +0 -1
- package/dist/getComponentDev.d.ts.map +0 -1
- package/dist/getConfig.d.ts.map +0 -1
- package/dist/getContentFromFunctionComponent.d.ts.map +0 -1
- package/dist/getFrameworkDir.d.ts.map +0 -1
- package/dist/getRoutes.d.ts.map +0 -1
- package/dist/getRoutesDevs.d.ts.map +0 -1
- package/dist/getStackTrace.d.ts.map +0 -1
- package/dist/getStyledContentFromFunctionComponent.d.ts.map +0 -1
- package/dist/getUserConfig.d.ts.map +0 -1
- package/dist/glob.d.ts.map +0 -1
- package/dist/globals.d.ts.map +0 -1
- package/dist/goto.d.ts.map +0 -1
- package/dist/hasDomain.d.ts.map +0 -1
- package/dist/hasValidKey.d.ts.map +0 -1
- package/dist/headChildren.d.ts.map +0 -1
- package/dist/helpers/combineClassNames.d.ts.map +0 -1
- package/dist/helpers/forwardingFetch.d.ts.map +0 -1
- package/dist/helpers/getFetchCompatibleHeaders.d.ts.map +0 -1
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/perRequest.d.ts.map +0 -1
- package/dist/hmr/applyHmrModule.d.ts.map +0 -1
- package/dist/hmr/componentIdentity.d.ts.map +0 -1
- package/dist/hmr/instanceRegistry.d.ts.map +0 -1
- package/dist/hmr/liveReloadHub.d.ts.map +0 -1
- package/dist/hmr/refreshStylesheets.d.ts.map +0 -1
- package/dist/hooks/clearCurrentComponent.d.ts.map +0 -1
- package/dist/hooks/getCurrentComponent.d.ts.map +0 -1
- package/dist/hooks/globalObj.d.ts.map +0 -1
- package/dist/hooks/globalType.d.ts.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/setCurrentComponent.d.ts.map +0 -1
- package/dist/hooks/shallowCompare.d.ts.map +0 -1
- package/dist/hooks/useCallback.d.ts.map +0 -1
- package/dist/hooks/useContext.d.ts.map +0 -1
- package/dist/hooks/useEffect.d.ts.map +0 -1
- package/dist/hooks/useInstance.d.ts.map +0 -1
- package/dist/hooks/useMemo.d.ts.map +0 -1
- package/dist/hooks/useReducer.d.ts.map +0 -1
- package/dist/hooks/useRef.d.ts.map +0 -1
- package/dist/hooks/useState.d.ts.map +0 -1
- package/dist/htmlEntities.d.ts.map +0 -1
- package/dist/htmlEventHandlerKey.d.ts.map +0 -1
- package/dist/htmlEvents.d.ts.map +0 -1
- package/dist/hydrate/hydrate.d.ts.map +0 -1
- package/dist/hydrate/hydrateGlobalData.d.ts.map +0 -1
- package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +0 -1
- package/dist/hydrate/renderHydrationMismatchBanner.d.ts.map +0 -1
- package/dist/importDevModuleWithRetry.d.ts.map +0 -1
- package/dist/importModule.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/indexInner.d.ts.map +0 -1
- package/dist/info.d.ts.map +0 -1
- package/dist/innerHtmlFromProps.d.ts.map +0 -1
- package/dist/isBrowser.d.ts.map +0 -1
- package/dist/isClient.d.ts.map +0 -1
- package/dist/isDev.d.ts.map +0 -1
- package/dist/isProd.d.ts.map +0 -1
- package/dist/isServer.d.ts.map +0 -1
- package/dist/iterationQueryString.d.ts.map +0 -1
- package/dist/json.d.ts.map +0 -1
- package/dist/jsx-runtime.d.ts.map +0 -1
- package/dist/jsxHelpers.d.ts.map +0 -1
- package/dist/jsxRuntime.d.ts.map +0 -1
- package/dist/jsxRuntimeSignals.d.ts.map +0 -1
- package/dist/loadPackageDotJsonFromDir.d.ts.map +0 -1
- package/dist/logAndReturn.d.ts.map +0 -1
- package/dist/makeFinalConfig.d.ts.map +0 -1
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +0 -1
- package/dist/makeServerRpc.d.ts.map +0 -1
- package/dist/markOptionSelected.d.ts.map +0 -1
- package/dist/mergeConfigs.d.ts.map +0 -1
- package/dist/moduleReloader.d.ts.map +0 -1
- package/dist/mutatingFunctions.d.ts.map +0 -1
- package/dist/nbsp.d.ts.map +0 -1
- package/dist/objectMap.d.ts.map +0 -1
- package/dist/objectTypesToCopy.d.ts.map +0 -1
- package/dist/objectTypesToProxy.d.ts.map +0 -1
- package/dist/output.d.ts.map +0 -1
- package/dist/packageSettings.d.ts.map +0 -1
- package/dist/pipeLog.d.ts.map +0 -1
- package/dist/pipeline/PipelineRequestHandler.d.ts.map +0 -1
- package/dist/pipeline/contextStore.d.ts.map +0 -1
- package/dist/pipeline/hydratePipeline.d.ts.map +0 -1
- package/dist/pipeline/importRoutesModule.d.ts.map +0 -1
- package/dist/pipeline/networkedTransport.d.ts.map +0 -1
- package/dist/pipeline/pipeline.d.ts.map +0 -1
- package/dist/pipeline/pipeline.types.test.d.ts +0 -650
- package/dist/pipeline/pipeline.types.test.d.ts.map +0 -1
- package/dist/pipeline/pipeline.types.test.js +0 -342
- package/dist/pipeline/pipelineDefinition.d.ts.map +0 -1
- package/dist/pipeline/pipelineSplit.types.test.d.ts +0 -1971
- package/dist/pipeline/pipelineSplit.types.test.d.ts.map +0 -1
- package/dist/pipeline/pipelineSplit.types.test.js +0 -440
- package/dist/pipeline/runPipeline.d.ts.map +0 -1
- package/dist/pipeline/runSplitPipeline.d.ts.map +0 -1
- package/dist/pipeline/splitPipeline.d.ts.map +0 -1
- package/dist/pop.d.ts.map +0 -1
- package/dist/possibleEnvFiles.d.ts.map +0 -1
- package/dist/postcssPlugins/TransformCssNames.d.ts.map +0 -1
- package/dist/postcssPlugins/parseSelectors.d.ts.map +0 -1
- package/dist/postcssPlugins/parseSelectorsRich.d.ts.map +0 -1
- package/dist/postcssPlugins/scopeAnimationValue.d.ts.map +0 -1
- package/dist/postcssPlugins/splitCssValue.d.ts.map +0 -1
- package/dist/postcssPlugins/unwrapIgnoreMarker.d.ts.map +0 -1
- package/dist/promise.d.ts.map +0 -1
- package/dist/propsAreEqual.d.ts.map +0 -1
- package/dist/rawHtml/HtmlAllowList.d.ts.map +0 -1
- package/dist/rawHtml/decodeHtmlEntities.d.ts.map +0 -1
- package/dist/rawHtml/filterContentNode.d.ts.map +0 -1
- package/dist/rawHtml/htmlParsingTags.d.ts.map +0 -1
- package/dist/rawHtml/parseHtml.d.ts.map +0 -1
- package/dist/rawHtml/safeHtmlAllowList.d.ts.map +0 -1
- package/dist/rawHtml/sanitizeHtml.d.ts.map +0 -1
- package/dist/rawHtml/tokenizeHtml.d.ts.map +0 -1
- package/dist/reRouting/addRequireResolveHooks.d.ts.map +0 -1
- package/dist/reRouting/importLoader.d.ts.map +0 -1
- package/dist/ref.d.ts.map +0 -1
- package/dist/regexEscape.d.ts.map +0 -1
- package/dist/removeRecursive.d.ts.map +0 -1
- package/dist/render/HeadData.d.ts.map +0 -1
- package/dist/render/SxyFrameworkModule.d.ts.map +0 -1
- package/dist/render/SxyFrameworkModules.d.ts.map +0 -1
- package/dist/render/addImportMap.d.ts.map +0 -1
- package/dist/render/classComponentNodeToRenderingTree.d.ts.map +0 -1
- package/dist/render/componentNodeToRenderingTree.d.ts.map +0 -1
- package/dist/render/contentNodeToHtml.d.ts.map +0 -1
- package/dist/render/contentToHtml.d.ts.map +0 -1
- package/dist/render/contentToHtmlDev.d.ts.map +0 -1
- package/dist/render/contentTreeToRenderingTree.d.ts.map +0 -1
- package/dist/render/debug.d.ts.map +0 -1
- package/dist/render/functionComponentNodeToRenderingTree.d.ts.map +0 -1
- package/dist/render/getFunctionBodyAsString.d.ts.map +0 -1
- package/dist/render/htmlMonoTags.d.ts.map +0 -1
- package/dist/render/htmlNoSelfCloseTags.d.ts.map +0 -1
- package/dist/render/htmlSelfClosableTags.d.ts.map +0 -1
- package/dist/render/htmlSingleOnlyTags.d.ts.map +0 -1
- package/dist/render/htmlVoidTags.d.ts.map +0 -1
- package/dist/render/instantiateClassComponent.d.ts.map +0 -1
- package/dist/render/instantiateComponent.d.ts.map +0 -1
- package/dist/render/instantiateFunctionComponent.d.ts.map +0 -1
- package/dist/render/printComponentNameInSource.d.ts.map +0 -1
- package/dist/render/processBody.d.ts.map +0 -1
- package/dist/render/processHead.d.ts.map +0 -1
- package/dist/render/processHtmlNode.d.ts.map +0 -1
- package/dist/render/processProps.d.ts.map +0 -1
- package/dist/render/processRenderingNodeHtml.d.ts.map +0 -1
- package/dist/render/readDocInitScript.d.ts.map +0 -1
- package/dist/render/renderingTreeToHtml.d.ts.map +0 -1
- package/dist/render/rootToHtml.d.ts.map +0 -1
- package/dist/render/rootToHtmlDev.d.ts.map +0 -1
- package/dist/requests/axios/get.d.ts.map +0 -1
- package/dist/requests/axios/post.d.ts.map +0 -1
- package/dist/requests/fetch/FetchExtras.d.ts.map +0 -1
- package/dist/requests/fetch/_fetchPromise.d.ts.map +0 -1
- package/dist/requests/fetch/delete.d.ts.map +0 -1
- package/dist/requests/fetch/get.d.ts.map +0 -1
- package/dist/requests/fetch/mergeFetchInit.d.ts.map +0 -1
- package/dist/requests/fetch/paramsObjectToParamsString.d.ts.map +0 -1
- package/dist/requests/fetch/patch.d.ts.map +0 -1
- package/dist/requests/fetch/post.d.ts.map +0 -1
- package/dist/requests/fetch/put.d.ts.map +0 -1
- package/dist/requests/index.d.ts.map +0 -1
- package/dist/routesLocationParts.d.ts.map +0 -1
- package/dist/routing/AppRoutes.d.ts.map +0 -1
- package/dist/routing/Default404.d.ts.map +0 -1
- package/dist/routing/ErrorRouteType.d.ts.map +0 -1
- package/dist/routing/Group.d.ts.map +0 -1
- package/dist/routing/Match.type.d.ts.map +0 -1
- package/dist/routing/MatchedRoute.d.ts.map +0 -1
- package/dist/routing/MatchedRouteInfo.d.ts.map +0 -1
- package/dist/routing/Params.d.ts.map +0 -1
- package/dist/routing/ParamsFromPath.d.ts.map +0 -1
- package/dist/routing/RedirectCode.d.ts.map +0 -1
- package/dist/routing/Route.d.ts.map +0 -1
- package/dist/routing/RouteContent.d.ts.map +0 -1
- package/dist/routing/RouteContentFunction.d.ts.map +0 -1
- package/dist/routing/RouteData.d.ts.map +0 -1
- package/dist/routing/RouteDataFunction.type.d.ts.map +0 -1
- package/dist/routing/RouteDataReturnType.d.ts.map +0 -1
- package/dist/routing/RouteParams.type.d.ts.map +0 -1
- package/dist/routing/RoutePaths.d.ts.map +0 -1
- package/dist/routing/RouteProp.d.ts.map +0 -1
- package/dist/routing/RouteType.d.ts.map +0 -1
- package/dist/routing/RouteTypes.d.ts.map +0 -1
- package/dist/routing/Router.d.ts.map +0 -1
- package/dist/routing/Routes.d.ts.map +0 -1
- package/dist/routing/RoutesFunction.d.ts.map +0 -1
- package/dist/routing/RoutesWithSafeParams.d.ts.map +0 -1
- package/dist/routing/RoutingRedirect.d.ts.map +0 -1
- package/dist/routing/Serializable.d.ts.map +0 -1
- package/dist/routing/TungstenErrorInfo.d.ts.map +0 -1
- package/dist/routing/WebRedirect.d.ts.map +0 -1
- package/dist/routing/builder.d.ts.map +0 -1
- package/dist/routing/builder.trial.d.ts.map +0 -1
- package/dist/routing/compareRequestToRegex.d.ts.map +0 -1
- package/dist/routing/debug.d.ts.map +0 -1
- package/dist/routing/defineRoutes.d.ts.map +0 -1
- package/dist/routing/getPathPriority.d.ts.map +0 -1
- package/dist/routing/matchPath.d.ts.map +0 -1
- package/dist/routing/patternToRegex.d.ts.map +0 -1
- package/dist/routing/pyramidRouting.d.ts.map +0 -1
- package/dist/routing/registerGlobalData.d.ts.map +0 -1
- package/dist/routing/registerParts.types.test.d.ts +0 -2
- package/dist/routing/registerParts.types.test.d.ts.map +0 -1
- package/dist/routing/registerParts.types.test.js +0 -139
- package/dist/routing/registerRoutes.d.ts.map +0 -1
- package/dist/routing/registerRouting.d.ts.map +0 -1
- package/dist/routing/registerRouting.types.test.d.ts +0 -80
- package/dist/routing/registerRouting.types.test.d.ts.map +0 -1
- package/dist/routing/registerRouting.types.test.js +0 -120
- package/dist/routing/registrationTypes.d.ts.map +0 -1
- package/dist/routing/resolveAppRoutes.d.ts.map +0 -1
- package/dist/routing/routeSymbols.d.ts.map +0 -1
- package/dist/routing/routeUrl.d.ts.map +0 -1
- package/dist/routing/routesArray.d.ts.map +0 -1
- package/dist/routing/routesArray.types.test.d.ts +0 -2
- package/dist/routing/routesArray.types.test.d.ts.map +0 -1
- package/dist/routing/routesArray.types.test.js +0 -132
- package/dist/routing/routingBuilder.d.ts.map +0 -1
- package/dist/routing/routingBuilder.types.test.d.ts +0 -2
- package/dist/routing/routingBuilder.types.test.d.ts.map +0 -1
- package/dist/routing/routingBuilder.types.test.js +0 -171
- package/dist/routing/routingRegistry.d.ts.map +0 -1
- package/dist/routing/runContentFunction.d.ts.map +0 -1
- package/dist/routing/splitRequest.d.ts.map +0 -1
- package/dist/run.d.ts.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/serverModuleLocation.d.ts.map +0 -1
- package/dist/serverRpc.d.ts.map +0 -1
- package/dist/serverRpcs.d.ts.map +0 -1
- package/dist/settings.d.ts.map +0 -1
- package/dist/signals/tracking.d.ts.map +0 -1
- package/dist/slash.d.ts.map +0 -1
- package/dist/spawnShellCommand.d.ts.map +0 -1
- package/dist/standardSchema.d.ts.map +0 -1
- package/dist/standardizeWebPath.d.ts.map +0 -1
- package/dist/startDevServer.d.ts.map +0 -1
- package/dist/stateTracking.d.ts.map +0 -1
- package/dist/staticGen/RouteDefinition.d.ts.map +0 -1
- package/dist/staticGen/getAppRoutes.d.ts.map +0 -1
- package/dist/staticGen/staticGen.d.ts.map +0 -1
- package/dist/staticGen/staticGenFunctions.d.ts.map +0 -1
- package/dist/style/jssToCss.d.ts.map +0 -1
- package/dist/style/styleContent.d.ts.map +0 -1
- package/dist/style/styleContentReact.d.ts.map +0 -1
- package/dist/style/styleContentReactClassOrClassname.d.ts.map +0 -1
- package/dist/style/styleContentSxy.d.ts.map +0 -1
- package/dist/style/styleContentSxyClassOrClassname.d.ts.map +0 -1
- package/dist/style/styleElementContent.d.ts.map +0 -1
- package/dist/style/unusedStyles.d.ts.map +0 -1
- package/dist/styleProcessors.d.ts.map +0 -1
- package/dist/symbols.d.ts.map +0 -1
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/syncServer/index.d.cts.map +0 -1
- package/dist/syncServer/preload.d.ts.map +0 -1
- package/dist/testing/createTestApp.d.ts.map +0 -1
- package/dist/testing/createTestPipelineApp.d.ts +0 -25
- package/dist/testing/createTestPipelineApp.d.ts.map +0 -1
- package/dist/testing/createTestPipelineApp.js +0 -153
- package/dist/testing/ensure.d.ts.map +0 -1
- package/dist/testing/ensure.trial.d.ts.map +0 -1
- package/dist/testing/helpers/contentHtmlElements.d.ts.map +0 -1
- package/dist/testing/host.d.ts.map +0 -1
- package/dist/testing/hostPipeline.d.ts +0 -157
- package/dist/testing/hostPipeline.d.ts.map +0 -1
- package/dist/testing/hostPipeline.js +0 -341
- package/dist/testing/hydrateTestApp.d.ts.map +0 -1
- package/dist/testing/hydrateTestPipelineApp.d.ts.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/installTestDocInit.d.ts.map +0 -1
- package/dist/testing/installTestStyleProcessors.d.ts.map +0 -1
- package/dist/testing/loadEnv.d.ts.map +0 -1
- package/dist/testing/normalize.d.ts.map +0 -1
- package/dist/testing/resolveContent.d.ts.map +0 -1
- package/dist/testing/testEnvIsRequested.d.ts.map +0 -1
- package/dist/testing/testingComponentPackage.d.ts.map +0 -1
- package/dist/throwError.d.ts.map +0 -1
- package/dist/timeProfiler.d.ts.map +0 -1
- package/dist/todo.d.ts.map +0 -1
- package/dist/update/UpdateResult.d.ts.map +0 -1
- package/dist/update/UpdateScheduler.d.ts.map +0 -1
- package/dist/update/guardedUpdate.d.ts.map +0 -1
- package/dist/update/integrateUpdateVdom.d.ts.map +0 -1
- package/dist/update/integrateUpdateVdomPrebuild.d.ts.map +0 -1
- package/dist/update/pendingMounts.d.ts.map +0 -1
- package/dist/validChildren.d.ts.map +0 -1
- package/dist/warnOnFrameworkChange.d.ts.map +0 -1
- package/dist/watch.d.ts.map +0 -1
- package/dist/when.d.ts.map +0 -1
- package/dist/zones/react.d.ts.map +0 -1
package/dist/.build-complete
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1791130589286
|
|
@@ -43,6 +43,7 @@ export type FrameworkConfigBase = {
|
|
|
43
43
|
suppressEnvOverwriteWarnings?: boolean;
|
|
44
44
|
hmr?: boolean | 'reload';
|
|
45
45
|
csr?: boolean;
|
|
46
|
+
serverSideRouting?: boolean;
|
|
46
47
|
defaultCacheControl?: CacheControl;
|
|
47
48
|
registration?: Registration;
|
|
48
49
|
};
|
|
@@ -96,6 +97,7 @@ export type FrameworkConfigCompleteBase = {
|
|
|
96
97
|
warnOnFrameworkChange: boolean;
|
|
97
98
|
hmr: boolean | 'reload';
|
|
98
99
|
csr: boolean;
|
|
100
|
+
serverSideRouting?: boolean;
|
|
99
101
|
defaultCacheControl?: CacheControl;
|
|
100
102
|
registration?: Registration;
|
|
101
103
|
};
|
|
@@ -3,15 +3,10 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import { isClient } from '../isClient.js';
|
|
5
5
|
import { routing } from "../Servers/routing.js";
|
|
6
|
-
import {
|
|
6
|
+
import { redirectOf } from '../routing/redirectOf.js';
|
|
7
7
|
import { routeKeyToUrl, urlToLocation } from '../routing/routeUrl.js';
|
|
8
8
|
import { isProd } from '../isProd.js';
|
|
9
|
-
import { WebRedirect } from '../routing/WebRedirect.js';
|
|
10
|
-
import { RouteRedirectComponent } from "../components/RouteRedirectComponent.js";
|
|
11
|
-
import { WebRedirectComponent } from "../components/WebRedirectComponent.js";
|
|
12
9
|
import { isServer } from '../isServer.js';
|
|
13
|
-
import { ContentNodeIsClassComponent } from '../ContentNode.js';
|
|
14
|
-
import { $props, $type } from '../contentNodeSymbols.js';
|
|
15
10
|
import { errorOut } from '../appOutput.js';
|
|
16
11
|
import { makeTungstenErrorInfo } from '../routing/TungstenErrorInfo.js';
|
|
17
12
|
import { toRoutes } from '../routing/routesArray.js';
|
|
@@ -131,35 +126,13 @@ export class Instance {
|
|
|
131
126
|
//console.log('matchedRouteInfo', location, matchedRouteInfo)
|
|
132
127
|
//console.log('matched route info', this.matchedRouteInfo)
|
|
133
128
|
if (i !== navigationIndex.get()) return; // another nav has taken over
|
|
134
|
-
//
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
// A redirect to a URL leaves the app: on the server redirect() writes an HTTP redirect;
|
|
130
|
+
// in the browser it replaces the location
|
|
131
|
+
const redirection = redirectOf(matchedRouteInfo);
|
|
132
|
+
if (redirection !== undefined) {
|
|
137
133
|
// awaited, so goto() settles when the navigation it started has
|
|
138
|
-
await this.goto(redirect.
|
|
134
|
+
if ('route' in redirection) await this.goto(redirection.route);else this.redirect(redirection.url, redirection.code);
|
|
139
135
|
return;
|
|
140
|
-
} else if (matchedRouteInfo.data instanceof WebRedirect) {
|
|
141
|
-
// A WebRedirect names a URL rather than a route, so it leaves the
|
|
142
|
-
// application — exactly as a WebRedirectComponent returned as
|
|
143
|
-
// content does below. On the server redirect() writes an HTTP
|
|
144
|
-
// redirect; in the browser it replaces the location.
|
|
145
|
-
const redirect = matchedRouteInfo.data;
|
|
146
|
-
this.redirect(redirect.to, redirect.code);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
// handle Redirect components
|
|
150
|
-
// if (
|
|
151
|
-
// matchedRouteInfo.content instanceof RedirectComponent
|
|
152
|
-
// //&& matchedRouteInfo.content.__tungstenComponentType === 'redirect'
|
|
153
|
-
// ) {
|
|
154
|
-
if (typeof matchedRouteInfo.content !== 'function' && ContentNodeIsClassComponent(matchedRouteInfo.content)) {
|
|
155
|
-
if (matchedRouteInfo.content[$type] === RouteRedirectComponent || matchedRouteInfo.content[$type].prototype instanceof RouteRedirectComponent) {
|
|
156
|
-
await this.goto(matchedRouteInfo.content[$props].to);
|
|
157
|
-
return;
|
|
158
|
-
} else if (matchedRouteInfo.content[$type] === WebRedirectComponent || matchedRouteInfo.content[$type].prototype instanceof WebRedirectComponent) {
|
|
159
|
-
//console.log('Content is a WebRedirectComponent - perform a hard redirect')
|
|
160
|
-
this.redirect(matchedRouteInfo.content[$props].to);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
136
|
}
|
|
164
137
|
// after routing, before the render: the components' context for the new route
|
|
165
138
|
const afterRouting = pipeline?.afterRouting;
|
|
@@ -31,9 +31,11 @@ import { TungstenServer } from "./TungstenServer.js";
|
|
|
31
31
|
import { portError } from './portError.js';
|
|
32
32
|
import { loadEnvsDev } from './loadEnvsDev.js';
|
|
33
33
|
import { initStores } from './initStores.js';
|
|
34
|
+
import { sendStub, stubInstance } from './stubInstance.js';
|
|
34
35
|
import { createContext } from '../context/registerContext.js';
|
|
35
36
|
import { makeTungstenErrorInfo } from '../routing/TungstenErrorInfo.js';
|
|
36
37
|
import { MatchedRoute } from '../routing/MatchedRoute.js';
|
|
38
|
+
import { responseStatus } from '../routing/MatchedRouteInfo.js';
|
|
37
39
|
import { toRoutes } from '../routing/routesArray.js';
|
|
38
40
|
import { resetRegistrations } from './resetRegistrations.js';
|
|
39
41
|
import { PipelineRequestHandler } from '../pipeline/PipelineRequestHandler.js';
|
|
@@ -303,6 +305,13 @@ export class DevServer extends TungstenServer {
|
|
|
303
305
|
const serverDataLoading = {
|
|
304
306
|
value: false
|
|
305
307
|
};
|
|
308
|
+
// the app's modules load, which registers its stores; none of its functions run
|
|
309
|
+
if (this.config.serverSideRouting === false && this.config.useRootComponent) {
|
|
310
|
+
const [appRoutes, Root] = await Promise.all([getRoutesDev(this.compilationInfo, this.config, iteration), getComponentDev(join(this.compilationInfo.buildCodeLocation, this.config.rootComponent), this.config.rootComponent, iteration)]);
|
|
311
|
+
const instance = stubInstance(location, instanceConfig, reqRes, appRoutes);
|
|
312
|
+
sendStub(reqRes, undefined, await renderRootToHtmlDev(this.compilationInfo, this.framework.clientImportAliases, Root, instance, this.config, global.tungstenPublicEnv, ''));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
306
315
|
//const routingPromise = getRoutesDev(this.compilationInfo, this.config, load).then(
|
|
307
316
|
const routingPromise = getRoutesDev(this.compilationInfo, this.config, iteration).then(async appRoutes => {
|
|
308
317
|
capturedContext = createContext('server', reqRes);
|
|
@@ -425,7 +434,7 @@ export class DevServer extends TungstenServer {
|
|
|
425
434
|
if (instance.redirected !== undefined) return;
|
|
426
435
|
//debug('html', html)
|
|
427
436
|
res.setHeader('Content-Type', 'text/html');
|
|
428
|
-
res.status(instance.matchedRouteInfo
|
|
437
|
+
res.status(responseStatus(instance.matchedRouteInfo));
|
|
429
438
|
res.send(html);
|
|
430
439
|
} catch (e) {
|
|
431
440
|
cliLog('error in TungstenServer handleRequest', e);
|
|
@@ -27,6 +27,7 @@ export declare class ProdServer extends TungstenServer {
|
|
|
27
27
|
private handleRequestApi;
|
|
28
28
|
handleRequest: (req: express.Request, res: express.Response) => Promise<void>;
|
|
29
29
|
private tryRenderErrorRoute;
|
|
30
|
+
private stubRoot;
|
|
30
31
|
errorPage: () => string;
|
|
31
32
|
start(portOverride?: number | null, mute?: boolean): Promise<string>;
|
|
32
33
|
stop(): Promise<void>;
|
|
@@ -25,9 +25,11 @@ import { initStores } from './initStores.js';
|
|
|
25
25
|
import { createContext } from '../context/registerContext.js';
|
|
26
26
|
import { createNetworkedData } from '../routing/routingRegistry.js';
|
|
27
27
|
import { makeTungstenErrorInfo } from '../routing/TungstenErrorInfo.js';
|
|
28
|
+
import { responseStatus } from '../routing/MatchedRouteInfo.js';
|
|
28
29
|
import { toRoutes } from '../routing/routesArray.js';
|
|
29
30
|
import { listenVerified, newBootId, registerBootProbe } from './listenVerified.js';
|
|
30
31
|
import { PipelineRequestHandler } from '../pipeline/PipelineRequestHandler.js';
|
|
32
|
+
import { sendStub, stubInstance } from './stubInstance.js';
|
|
31
33
|
function debug(...texts) {
|
|
32
34
|
// console.log(...texts)
|
|
33
35
|
}
|
|
@@ -122,6 +124,15 @@ export class ProdServer extends TungstenServer {
|
|
|
122
124
|
if (this.framework.clientImportAliases === undefined) {
|
|
123
125
|
throwError('ProdServer.handleRequest()', 'framework.clientImportAliases is undefined');
|
|
124
126
|
}
|
|
127
|
+
if (this.config.serverSideRouting === false) {
|
|
128
|
+
const reqRes = {
|
|
129
|
+
req,
|
|
130
|
+
res
|
|
131
|
+
};
|
|
132
|
+
const instance = stubInstance(location, instanceConfig, reqRes, this.appRoutes);
|
|
133
|
+
sendStub(reqRes, this.config.defaultCacheControl, await renderRootToHtml(this.compilationInfo, this.framework.clientImportAliases, this.stubRoot(), instance, this.config, this.config.siteBasePath));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
125
136
|
// const appRoutes: AppRoutes = await getRoutes(this.compilationInfo, this.config)
|
|
126
137
|
// let RootComponentClass: AnyComponentType
|
|
127
138
|
// if (this.config.useRootComponent) {
|
|
@@ -209,7 +220,7 @@ export class ProdServer extends TungstenServer {
|
|
|
209
220
|
const cacheControl = pageCacheControl(key !== null && Object.hasOwn(routes, key) ? byKey[key] : undefined, routes[$cacheControl], this.config.defaultCacheControl, reqRes);
|
|
210
221
|
if (cacheControl !== undefined) res.setHeader('Cache-Control', cacheControlHeader(cacheControl));
|
|
211
222
|
}
|
|
212
|
-
res.status(instance.matchedRouteInfo
|
|
223
|
+
res.status(responseStatus(instance.matchedRouteInfo));
|
|
213
224
|
res.send(html);
|
|
214
225
|
} catch (e) {
|
|
215
226
|
cliLog('handleRequest() error', e);
|
|
@@ -285,6 +296,12 @@ export class ProdServer extends TungstenServer {
|
|
|
285
296
|
return null;
|
|
286
297
|
}
|
|
287
298
|
});
|
|
299
|
+
_defineProperty(this, "stubRoot", () => {
|
|
300
|
+
if (this.RootComponentOrNull === null) {
|
|
301
|
+
throwError('ProdServer', 'config.serverSideRouting is false, which needs a root component');
|
|
302
|
+
}
|
|
303
|
+
return this.RootComponentOrNull;
|
|
304
|
+
});
|
|
288
305
|
_defineProperty(this, "errorPage", () => {
|
|
289
306
|
return `<!DOCTYPE html>
|
|
290
307
|
<html>
|
package/dist/Servers/routing.js
CHANGED
|
@@ -46,11 +46,15 @@ export async function routing(location, routes, context, networkedData, serverDa
|
|
|
46
46
|
params: {},
|
|
47
47
|
content: defaultRoute.content
|
|
48
48
|
};
|
|
49
|
-
if (_404Route)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
if (_404Route) {
|
|
50
|
+
const matched = {
|
|
51
|
+
key: '404',
|
|
52
|
+
params: {},
|
|
53
|
+
content: _404Route.content
|
|
54
|
+
};
|
|
55
|
+
if ('code' in _404Route && typeof _404Route.code === 'number') matched.code = _404Route.code;
|
|
56
|
+
return matched;
|
|
57
|
+
}
|
|
54
58
|
if (errorRoute) {
|
|
55
59
|
return {
|
|
56
60
|
key: 'error',
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CacheControl } from '../cacheControl.js';
|
|
2
|
+
import type { InstanceConfig } from '../Instance/InstanceConfig.js';
|
|
3
|
+
import type { ReqRes } from '../ReqRes.js';
|
|
4
|
+
import type { AppRoutes } from '../routing/AppRoutes.js';
|
|
5
|
+
import { Instance } from '../Instance/Instance.js';
|
|
6
|
+
export declare function stubInstance(location: string, instanceConfig: InstanceConfig, reqRes: ReqRes, appRoutes: AppRoutes<any>): Instance;
|
|
7
|
+
export declare function sendStub(reqRes: ReqRes, cacheControl: CacheControl | undefined, html: string): void;
|
|
8
|
+
//# sourceMappingURL=stubInstance.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { cacheControlHeader, pageCacheControl } from '../cacheControl.js';
|
|
2
|
+
import { Instance } from '../Instance/Instance.js';
|
|
3
|
+
import { initStores } from './initStores.js';
|
|
4
|
+
// config.serverSideRouting false: the instance for a page the server makes no data for and does not
|
|
5
|
+
// route. The render stops at the root's head and body (contentTreeToRenderingTree)
|
|
6
|
+
export function stubInstance(location, instanceConfig, reqRes, appRoutes) {
|
|
7
|
+
const matchedRouteInfo = {
|
|
8
|
+
key: null,
|
|
9
|
+
params: {},
|
|
10
|
+
content: null
|
|
11
|
+
};
|
|
12
|
+
const globalData = {};
|
|
13
|
+
const context = {};
|
|
14
|
+
const networkedData = {};
|
|
15
|
+
const {
|
|
16
|
+
internalStore,
|
|
17
|
+
stores,
|
|
18
|
+
storeSubscriptions
|
|
19
|
+
} = initStores(location, reqRes, globalData, matchedRouteInfo, {
|
|
20
|
+
value: false
|
|
21
|
+
}, context, networkedData);
|
|
22
|
+
const noRoutes = {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- never routed
|
|
23
|
+
const instance = new Instance(location, instanceConfig, reqRes, appRoutes, noRoutes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo);
|
|
24
|
+
instance.context = context;
|
|
25
|
+
instance.networkedData = networkedData;
|
|
26
|
+
return instance;
|
|
27
|
+
}
|
|
28
|
+
// the same page for every location: no route, so no 404. cacheControl: the config's, in prod
|
|
29
|
+
export function sendStub(reqRes, cacheControl, html) {
|
|
30
|
+
const {
|
|
31
|
+
res
|
|
32
|
+
} = reqRes;
|
|
33
|
+
res.setHeader('Content-Type', 'text/html');
|
|
34
|
+
if (res.getHeader('Cache-Control') === undefined) {
|
|
35
|
+
const chosen = pageCacheControl(undefined, undefined, cacheControl, reqRes);
|
|
36
|
+
if (chosen !== undefined) res.setHeader('Cache-Control', cacheControlHeader(chosen));
|
|
37
|
+
}
|
|
38
|
+
res.status(200);
|
|
39
|
+
res.send(html);
|
|
40
|
+
}
|
|
@@ -23,7 +23,7 @@ export async function createInstanceConfigFile(config, mode, buildLocation, file
|
|
|
23
23
|
// to
|
|
24
24
|
`export default { prod: ${(mode === 'prod').toString()}, useRootComponent: ${config.useRootComponent.toString()}, siteBasePath: "${siteBasePath}", clientSideNav: ${config.clientSideNav.toString()}, staticSite: ${config.staticSite.toString()}, csr: ${config.csr.toString()}` // eslint-disable-line @stylistic/max-len
|
|
25
25
|
// client.ts hydrates by it
|
|
26
|
-
+ (config.registration === 'pipeline' ? ', registration: "pipeline"' : '') + ' };\n'
|
|
26
|
+
+ (config.registration === 'pipeline' ? ', registration: "pipeline"' : '') + (config.serverSideRouting === false ? ', serverSideRouting: false' : '') + ' };\n'
|
|
27
27
|
// not config: the instance holds it. Always exported, as client.ts imports it by name
|
|
28
28
|
+ `export const fileVersions = ${JSONstringify(fileVersions) ?? 'undefined'};\n`
|
|
29
29
|
// a constant rollup folds, so the prod bundle holds one of client.ts's hydrate paths
|
|
@@ -8,8 +8,9 @@ export type ComponentHelpers = {
|
|
|
8
8
|
readonly routes: Routes;
|
|
9
9
|
readonly context: Context;
|
|
10
10
|
readonly globalData: GlobalData;
|
|
11
|
-
readonly allRoutesData: GlobalData;
|
|
11
|
+
readonly allRoutesData: GlobalData | undefined;
|
|
12
12
|
readonly networkedData: NetworkedData;
|
|
13
|
+
readonly networked: object;
|
|
13
14
|
readonly instance: Instance;
|
|
14
15
|
};
|
|
15
16
|
export declare function makeComponentHelpers(component: {
|
package/dist/componentHelpers.js
CHANGED
|
@@ -20,6 +20,9 @@ export function makeComponentHelpers(component) {
|
|
|
20
20
|
get networkedData() {
|
|
21
21
|
return component.__instance.networkedData;
|
|
22
22
|
},
|
|
23
|
+
get networked() {
|
|
24
|
+
return component.__instance.pipelineNetworked;
|
|
25
|
+
},
|
|
23
26
|
// a getter, not a captured value: the helpers are made once, on first use
|
|
24
27
|
get instance() {
|
|
25
28
|
return component.__instance;
|
|
@@ -45,6 +45,7 @@ export declare const frameworkConfigValidator: v.VariantSchema<"useRootComponent
|
|
|
45
45
|
readonly warnOnFrameworkChange: v.ExactOptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
46
46
|
readonly hmr: v.ExactOptionalSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.LiteralSchema<"reload", undefined>], undefined>, undefined>;
|
|
47
47
|
readonly csr: v.ExactOptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
48
|
+
readonly serverSideRouting: v.ExactOptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
48
49
|
readonly defaultCacheControl: v.ExactOptionalSchema<v.UnionSchema<[v.PicklistSchema<["no-store", "private-check", "public-check"], undefined>, v.ObjectSchema<{
|
|
49
50
|
readonly privacy: v.PicklistSchema<["private", "public"], undefined>;
|
|
50
51
|
readonly maxAge: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
@@ -53,6 +54,7 @@ export declare const frameworkConfigValidator: v.VariantSchema<"useRootComponent
|
|
|
53
54
|
readonly registration: v.ExactOptionalSchema<v.PicklistSchema<["register", "pipeline"], undefined>, undefined>;
|
|
54
55
|
}, undefined>, v.ObjectSchema<{
|
|
55
56
|
readonly useRootComponent: v.LiteralSchema<false, undefined>;
|
|
57
|
+
readonly serverSideRouting: v.ExactOptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
|
|
56
58
|
readonly codeDir: v.ExactOptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
57
59
|
readonly copy: v.ExactOptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
58
60
|
readonly copyExclude: v.ExactOptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -62,6 +62,7 @@ const frameworkConfigBaseEntries = {
|
|
|
62
62
|
warnOnFrameworkChange: v.exactOptional(v.boolean()),
|
|
63
63
|
hmr: v.exactOptional(v.union([v.boolean(), v.literal('reload')])),
|
|
64
64
|
csr: v.exactOptional(v.boolean()),
|
|
65
|
+
serverSideRouting: v.exactOptional(v.boolean()),
|
|
65
66
|
defaultCacheControl: v.exactOptional(cacheControlSchema),
|
|
66
67
|
registration: v.exactOptional(v.picklist(['register', 'pipeline']))
|
|
67
68
|
};
|
|
@@ -72,7 +73,9 @@ const frameworkConfigWithRootComponentSchema = v.object({
|
|
|
72
73
|
});
|
|
73
74
|
const frameworkConfigWithoutRootComponentSchema = v.object({
|
|
74
75
|
...frameworkConfigBaseEntries,
|
|
75
|
-
useRootComponent: v.literal(false)
|
|
76
|
+
useRootComponent: v.literal(false),
|
|
77
|
+
// the stub page's html/head/body come from the root component
|
|
78
|
+
serverSideRouting: v.exactOptional(v.literal(true))
|
|
76
79
|
});
|
|
77
80
|
// variant, not union: a plain union reports one issue at the union itself ("Expected Object but
|
|
78
81
|
// received Object"), where this picks the branch by useRootComponent and reports its actual fields
|
package/dist/hydrate/hydrate.js
CHANGED
|
@@ -38,6 +38,10 @@ import { renderHydrationMismatchBanner } from './renderHydrationMismatchBanner.j
|
|
|
38
38
|
import { setCurrentInstance } from '../hmr/instanceRegistry.js';
|
|
39
39
|
import { createContext } from '../context/registerContext.js';
|
|
40
40
|
import { renderDocInitErrorBanner } from '../docInit.js';
|
|
41
|
+
import { globalDataFunc } from '../routing/registerGlobalData.js';
|
|
42
|
+
import { createNetworkedData } from '../routing/routingRegistry.js';
|
|
43
|
+
import { routing } from "../Servers/routing.js";
|
|
44
|
+
import { stubRouting } from './stubRouting.js';
|
|
41
45
|
// side-effect only: pulls applyHmrModule.js (and its clean, non-dynamic-import dependencies)
|
|
42
46
|
// into the framework's traced dependency graph so it gets copied to .packages/ and is servable
|
|
43
47
|
// to the browser. It is invoked from a raw, untraced inline script (processHead.ts) instead of
|
|
@@ -63,14 +67,29 @@ export async function hydrate(appRoutes, RootComponent, instanceConfig, fileVers
|
|
|
63
67
|
// happens next (a read of its value throws below). Rendered again at the end, for the count.
|
|
64
68
|
if (isDev) renderDocInitErrorBanner();
|
|
65
69
|
//console.log('hydration global data ', __tungsten_global_data__)
|
|
66
|
-
|
|
70
|
+
let location = urlToLocation(window.location, instanceConfig.siteBasePath, isProd && instanceConfig.staticSite);
|
|
67
71
|
// one for the page: navigation keeps this instance, and so this context
|
|
68
72
|
const context = createContext('client', null);
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
const stub = instanceConfig.serverSideRouting === false;
|
|
74
|
+
// carried over from the server's render, not rebuilt: the client has no request to build from.
|
|
75
|
+
// A stub page carries none, so the client makes its own
|
|
76
|
+
const networkedData = stub ? createNetworkedData(null, context) : __tungsten_networked_data__;
|
|
71
77
|
const routes = toRoutes(typeof appRoutes === 'function' ? appRoutes(null, context, networkedData) : appRoutes, isDev);
|
|
72
|
-
|
|
73
|
-
|
|
78
|
+
let matchedRouteInfo;
|
|
79
|
+
let globalData;
|
|
80
|
+
if (stub) {
|
|
81
|
+
// as a client navigation fetches: the global data beside routing
|
|
82
|
+
const [fetched, routed] = await Promise.all([globalDataFunc.value?.(null, context, networkedData) ?? {}, stubRouting(location, to => routing(to, routes, context, networkedData), instanceConfig)]);
|
|
83
|
+
if (routed === null) return;
|
|
84
|
+
({
|
|
85
|
+
location,
|
|
86
|
+
matchedRouteInfo
|
|
87
|
+
} = routed);
|
|
88
|
+
globalData = fetched;
|
|
89
|
+
} else {
|
|
90
|
+
matchedRouteInfo = hydrationRouting(__tungsten_matched_route_info__, routes);
|
|
91
|
+
globalData = __tungsten_global_data__;
|
|
92
|
+
}
|
|
74
93
|
const {
|
|
75
94
|
internalStore,
|
|
76
95
|
stores,
|
|
@@ -87,7 +106,7 @@ export async function hydrate(appRoutes, RootComponent, instanceConfig, fileVers
|
|
|
87
106
|
// instance.routerData = __tungsten_router_data__
|
|
88
107
|
// }
|
|
89
108
|
// save the route data
|
|
90
|
-
if (typeof __tungsten_route_data__ !== 'undefined') {
|
|
109
|
+
if (!stub && typeof __tungsten_route_data__ !== 'undefined') {
|
|
91
110
|
instance.routeData = __tungsten_route_data__;
|
|
92
111
|
}
|
|
93
112
|
const domPointer = new DomPointer(document, 1);
|
|
@@ -530,12 +549,14 @@ parentElement, domPointer, instance, meta) {
|
|
|
530
549
|
const outerSelectValue = meta.selectValue;
|
|
531
550
|
if (node[$type] === 'select') meta.selectValue = node[$props].value;
|
|
532
551
|
let renderedChildren = $contentNull;
|
|
533
|
-
|
|
534
|
-
|
|
552
|
+
// CSR: body shipped empty on purpose, nothing to hydrate against - create fresh. A stub
|
|
553
|
+
// page (serverSideRouting false) ships the head without the app's children too
|
|
554
|
+
const fresh = node[$type] === 'body' && instance.config.csr || node[$type] === 'head' && instance.config.serverSideRouting === false;
|
|
555
|
+
if (fresh) {
|
|
535
556
|
if (parentElement === null) {
|
|
536
|
-
throwError('hydrateNodeSingle',
|
|
557
|
+
throwError('hydrateNodeSingle', `CSR hydration reached <${node[$type]}> with no owning component`);
|
|
537
558
|
}
|
|
538
|
-
const childDomPointer = new DomPointer(domNode);
|
|
559
|
+
const childDomPointer = new DomPointer(domNode, node[$type] === 'head' ? appHeadChildrenStart(domNode) : 0);
|
|
539
560
|
renderedChildren = await applyUpdate({
|
|
540
561
|
tungstenElement: parentElement,
|
|
541
562
|
instance,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InstanceConfig } from '../Instance/InstanceConfig.js';
|
|
2
|
+
import type { MatchedRouteInfo } from '../routing/MatchedRouteInfo.js';
|
|
3
|
+
export type StubRouted = {
|
|
4
|
+
location: string;
|
|
5
|
+
matchedRouteInfo: MatchedRouteInfo;
|
|
6
|
+
};
|
|
7
|
+
export declare function stubRouting(location: string, route: (location: string) => Promise<MatchedRouteInfo>, instanceConfig: InstanceConfig): Promise<StubRouted | null>;
|
|
8
|
+
//# sourceMappingURL=stubRouting.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isProd } from '../isProd.js';
|
|
2
|
+
import { redirectOf } from '../routing/redirectOf.js';
|
|
3
|
+
import { routeKeyToUrl } from '../routing/routeUrl.js';
|
|
4
|
+
import { TungstenError } from '../TungstenError.js';
|
|
5
|
+
// config.serverSideRouting false: the page's first routing is the client's, with its route data. A
|
|
6
|
+
// redirect to a route routes again, the address bar replaced, before anything is built; one to a
|
|
7
|
+
// URL leaves the page, and gives null
|
|
8
|
+
export async function stubRouting(location, route, instanceConfig) {
|
|
9
|
+
for (let hops = 0; hops <= 10; hops++) {
|
|
10
|
+
const matchedRouteInfo = await route(location);
|
|
11
|
+
const redirection = redirectOf(matchedRouteInfo);
|
|
12
|
+
if (redirection === undefined) return {
|
|
13
|
+
location,
|
|
14
|
+
matchedRouteInfo
|
|
15
|
+
};
|
|
16
|
+
if ('url' in redirection) {
|
|
17
|
+
window.location.replace(redirection.url);
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
location = redirection.route;
|
|
21
|
+
const url = routeKeyToUrl(redirection.route, instanceConfig.siteBasePath, isProd && instanceConfig.staticSite);
|
|
22
|
+
window.history.replaceState(null, '', url);
|
|
23
|
+
}
|
|
24
|
+
throw new TungstenError(`Routing '${location}' redirected more than 10 times`);
|
|
25
|
+
}
|
package/dist/makeFinalConfig.js
CHANGED
|
@@ -12,5 +12,7 @@ export function makeFinalConfig(userConfig, overrides = null) {
|
|
|
12
12
|
if (value === undefined) continue;
|
|
13
13
|
finalConfig[key] = value; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
14
14
|
}
|
|
15
|
+
// no server data means nothing for the body: the client builds it
|
|
16
|
+
if (finalConfig.serverSideRouting === false) finalConfig.csr = true;
|
|
15
17
|
return finalConfig;
|
|
16
18
|
}
|
|
@@ -10,5 +10,6 @@ export function makeInstanceConfigFromFrameworkConfig(frameworkConfig, dev = fal
|
|
|
10
10
|
};
|
|
11
11
|
if ('sourceDir' in frameworkConfig) c.sourceDir = frameworkConfig.sourceDir;
|
|
12
12
|
if (frameworkConfig.registration === 'pipeline') c.registration = 'pipeline';
|
|
13
|
+
if (frameworkConfig.serverSideRouting === false) c.serverSideRouting = false;
|
|
13
14
|
return c;
|
|
14
15
|
}
|
|
@@ -5,7 +5,9 @@ import { $cacheControl, cacheControlHeader, pageCacheControl } from '../cacheCon
|
|
|
5
5
|
import { cliLog } from '../cliOutput.js';
|
|
6
6
|
import { Instance } from '../Instance/Instance.js';
|
|
7
7
|
import { MatchedRoute } from '../routing/MatchedRoute.js';
|
|
8
|
+
import { responseStatus } from '../routing/MatchedRouteInfo.js';
|
|
8
9
|
import { initStores } from '../Servers/initStores.js';
|
|
10
|
+
import { sendStub, stubInstance } from '../Servers/stubInstance.js';
|
|
9
11
|
import { TungstenServer } from "../Servers/TungstenServer.js";
|
|
10
12
|
import { NetworkedTransport } from './networkedTransport.js';
|
|
11
13
|
import { pipelineRoutes, symmetricServer } from './runPipeline.js';
|
|
@@ -40,6 +42,12 @@ export class PipelineRequestHandler extends TungstenServer {
|
|
|
40
42
|
const serverDataLoading = {
|
|
41
43
|
value: false
|
|
42
44
|
};
|
|
45
|
+
if (config.serverSideRouting === false) {
|
|
46
|
+
const instance = stubInstance(location, this.options.instanceConfig(), reqRes, appRoutesFor(app, undefined, dev));
|
|
47
|
+
const html = await this.options.render(Root ?? MatchedRoute, instance);
|
|
48
|
+
sendStub(reqRes, dev ? undefined : config.defaultCacheControl, html);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
43
51
|
const runner = app.split === true ? splitServer : symmetricServer;
|
|
44
52
|
const {
|
|
45
53
|
init,
|
|
@@ -78,7 +86,7 @@ export class PipelineRequestHandler extends TungstenServer {
|
|
|
78
86
|
const cacheControl = pageCacheControl(key !== null && Object.hasOwn(routes, key) ? byKey[key] : undefined, routes[$cacheControl], config.defaultCacheControl, reqRes);
|
|
79
87
|
if (cacheControl !== undefined) res.setHeader('Cache-Control', cacheControlHeader(cacheControl));
|
|
80
88
|
}
|
|
81
|
-
res.status(instance.matchedRouteInfo
|
|
89
|
+
res.status(responseStatus(instance.matchedRouteInfo));
|
|
82
90
|
res.send(html);
|
|
83
91
|
} catch (e) {
|
|
84
92
|
cliLog('pipeline handleRequest() error', e);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { DomPointer } from '../DomPointer.js';
|
|
2
|
+
import { stubRouting } from '../hydrate/stubRouting.js';
|
|
3
|
+
import { routing } from "../Servers/routing.js";
|
|
2
4
|
import { renderDocInitErrorBanner } from '../docInit.js';
|
|
3
5
|
import { setCurrentInstance } from '../hmr/instanceRegistry.js';
|
|
4
6
|
import { hydrateRootComponent, hydrationRouting, makeDefaultHydrateMeta } from "../hydrate/hydrate.js";
|
|
@@ -21,16 +23,31 @@ export async function hydratePipeline(app, RootComponent, instanceConfig, fileVe
|
|
|
21
23
|
if (!isPipelineApp(app)) {
|
|
22
24
|
throw new TungstenError(`config.registration is 'pipeline', but the routes module exports no pipeline app under` + ` config.routesLocation's name: export the result of the pipeline's .routes().`);
|
|
23
25
|
}
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
const ran = await app.client(app, allRoutesData, __tungsten_networked_data__);
|
|
26
|
+
let location = urlToLocation(window.location, instanceConfig.siteBasePath, isProd && instanceConfig.staticSite);
|
|
27
|
+
const ran = await app.client(app, __tungsten_networked_data__);
|
|
27
28
|
const init = ran.init;
|
|
28
29
|
const routes = pipelineRoutes(app, null, init, isDev);
|
|
29
|
-
const
|
|
30
|
-
const afterRouting = afterRoutingFor(ran.afterRouting);
|
|
31
|
-
const brandedContext = afterRouting === undefined ? ran.context // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the framework brands what it builds
|
|
32
|
-
: await afterRouting(clientRoute(matchedRouteInfo, location), allRoutesData);
|
|
30
|
+
const routeContext = routingContext(ran.routingContext);
|
|
33
31
|
const networkedData = routingNetworkedData(ran.routingNetworkedData);
|
|
32
|
+
let allRoutesData;
|
|
33
|
+
let matchedRouteInfo;
|
|
34
|
+
if (instanceConfig.serverSideRouting === false) {
|
|
35
|
+
// a stub page: the client's own all-routes data, beside its first routing, as a navigation's
|
|
36
|
+
const [fetched, routed] = await Promise.all([ran.allRoutesData?.(), stubRouting(location, to => routing(to, routes, routeContext, networkedData), instanceConfig)]);
|
|
37
|
+
if (routed === null) return;
|
|
38
|
+
({
|
|
39
|
+
location,
|
|
40
|
+
matchedRouteInfo
|
|
41
|
+
} = routed);
|
|
42
|
+
allRoutesData = fetched; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the framework brands what it builds
|
|
43
|
+
} else {
|
|
44
|
+
allRoutesData = __tungsten_global_data__;
|
|
45
|
+
matchedRouteInfo = hydrationRouting(__tungsten_matched_route_info__, routes);
|
|
46
|
+
}
|
|
47
|
+
const posted = await ran.post(allRoutesData);
|
|
48
|
+
const afterRouting = afterRoutingFor(posted.afterRouting);
|
|
49
|
+
const brandedContext = afterRouting === undefined ? posted.context // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the framework brands what it builds
|
|
50
|
+
: await afterRouting(clientRoute(matchedRouteInfo, location), allRoutesData);
|
|
34
51
|
const {
|
|
35
52
|
internalStore,
|
|
36
53
|
stores,
|
|
@@ -42,13 +59,15 @@ export async function hydratePipeline(app, RootComponent, instanceConfig, fileVe
|
|
|
42
59
|
instance.networkedData = networkedData;
|
|
43
60
|
instance.pipelineNetworked = ran.networked;
|
|
44
61
|
instance.pipeline = {
|
|
45
|
-
routingContext:
|
|
62
|
+
routingContext: routeContext,
|
|
46
63
|
routingNetworkedData: networkedData,
|
|
47
64
|
allRoutesData: allRoutesDataFor(ran.allRoutesData),
|
|
48
65
|
afterRouting
|
|
49
66
|
};
|
|
50
67
|
if (isDev) setCurrentInstance(instance);
|
|
51
|
-
if (typeof __tungsten_route_data__ !== 'undefined')
|
|
68
|
+
if (instanceConfig.serverSideRouting !== false && typeof __tungsten_route_data__ !== 'undefined') {
|
|
69
|
+
instance.routeData = __tungsten_route_data__;
|
|
70
|
+
}
|
|
52
71
|
const meta = makeDefaultHydrateMeta();
|
|
53
72
|
await hydrateRootComponent(instance, RootComponent ?? MatchedRoute, new DomPointer(document, 1), meta);
|
|
54
73
|
instance.hydrationComplete = true;
|