tungsten 0.3.2 → 0.3.4
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 -0
- package/dist/Components.d.ts +6 -1
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js +103 -40
- package/dist/DomPointer.d.ts +11 -0
- package/dist/DomPointer.d.ts.map +1 -1
- package/dist/DomPointer.js +15 -0
- package/dist/DomRegion.d.ts +2 -0
- package/dist/DomRegion.d.ts.map +1 -1
- package/dist/DomRegion.js +23 -3
- package/dist/Framework.d.ts +2 -0
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js +94 -61
- package/dist/FrameworkConfig.d.ts +4 -0
- package/dist/FrameworkConfig.d.ts.map +1 -1
- package/dist/Instance/Instance.d.ts +1 -1
- package/dist/Instance/Instance.d.ts.map +1 -1
- package/dist/Instance/Instance.js +18 -1
- package/dist/Instance/InstanceConfig.d.ts +1 -0
- package/dist/Instance/InstanceConfig.d.ts.map +1 -1
- package/dist/PopMessage.type.d.ts +6 -0
- package/dist/PopMessage.type.d.ts.map +1 -0
- package/dist/PopMessage.type.js +1 -0
- package/dist/Servers/DevServer.d.ts +2 -0
- package/dist/Servers/DevServer.d.ts.map +1 -1
- package/dist/Servers/DevServer.js +87 -11
- package/dist/Servers/MatchedRouteInfo.d.ts +1 -1
- package/dist/Servers/MatchedRouteInfo.d.ts.map +1 -1
- package/dist/Servers/ProdServer.d.ts +2 -1
- package/dist/Servers/ProdServer.d.ts.map +1 -1
- package/dist/Servers/ProdServer.js +92 -8
- package/dist/Servers/hono/DevServerHono.js +25 -29
- package/dist/Servers/hono/ProdServerHono.js +49 -142
- package/dist/Servers/hono/TungstenServerHono.d.ts +1 -1
- package/dist/Servers/hono/TungstenServerHono.d.ts.map +1 -1
- package/dist/Servers/hono/TungstenServerHono.js +12 -29
- package/dist/Servers/loadEnvsDev.d.ts.map +1 -1
- package/dist/Servers/loadEnvsDev.js +16 -5
- package/dist/Servers/routing.d.ts.map +1 -1
- package/dist/Servers/routing.js +10 -6
- package/dist/Servers/tungstenCorePrivateEnvSchema.d.ts +0 -3
- package/dist/Servers/tungstenCorePrivateEnvSchema.d.ts.map +1 -1
- package/dist/Servers/tungstenCorePrivateEnvSchema.js +3 -3
- package/dist/Servers/tungstenCorePublicEnvSchema.d.ts +8 -0
- package/dist/Servers/tungstenCorePublicEnvSchema.d.ts.map +1 -0
- package/dist/Servers/tungstenCorePublicEnvSchema.js +14 -0
- package/dist/Store/InternalStoreSchema.d.ts +2 -0
- package/dist/Store/InternalStoreSchema.d.ts.map +1 -1
- package/dist/Store/InternalStoreSchema.js +1 -0
- package/dist/api/Request.d.ts +1 -1
- package/dist/api/Request.d.ts.map +1 -1
- package/dist/api/Response.d.ts +1 -1
- package/dist/api/Response.d.ts.map +1 -1
- package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts +13 -0
- package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts.map +1 -0
- package/dist/babelPlugins/BabelExtractComponentStylesheet.js +24 -0
- package/dist/babelPlugins/BabelTransformComponentStyles.d.ts +2 -0
- package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformComponentStyles.js +21 -5
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts +1 -0
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.js +21 -9
- package/dist/babelPlugins/BabelTypes.d.ts +2 -2
- package/dist/babelPlugins/BabelTypes.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTypes.js +0 -1
- package/dist/bin/commands/build.d.ts.map +1 -1
- package/dist/bin/commands/build.js +12 -2
- package/dist/bin/commands/compile.d.ts.map +1 -1
- package/dist/bin/commands/compile.js +7 -2
- package/dist/bin/commands/dev.d.ts.map +1 -1
- package/dist/bin/commands/dev.js +15 -4
- package/dist/bin/commands/devmon.d.ts +2 -0
- package/dist/bin/commands/devmon.d.ts.map +1 -0
- package/dist/bin/commands/devmon.js +66 -0
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +6 -0
- package/dist/booleanAttributeValue.d.ts +21 -0
- package/dist/booleanAttributeValue.d.ts.map +1 -0
- package/dist/booleanAttributeValue.js +23 -0
- package/dist/build/CompilationInfo.d.ts +1 -0
- package/dist/build/CompilationInfo.d.ts.map +1 -1
- package/dist/build/combineComponentCss.d.ts +1 -1
- package/dist/build/combineComponentCss.d.ts.map +1 -1
- package/dist/build/combineComponentCss.js +3 -3
- package/dist/build/compileJavascript.d.ts.map +1 -1
- package/dist/build/compileJavascript.js +3 -3
- package/dist/build/compileUserApp.d.ts +2 -1
- package/dist/build/compileUserApp.d.ts.map +1 -1
- package/dist/build/compileUserApp.js +18 -8
- package/dist/build/createInstanceConfigFile.js +1 -1
- package/dist/build/frameworkStylesheets.d.ts +5 -0
- package/dist/build/frameworkStylesheets.d.ts.map +1 -0
- package/dist/build/frameworkStylesheets.js +49 -0
- package/dist/build/getPackageDirForFile.d.ts +2 -0
- package/dist/build/getPackageDirForFile.d.ts.map +1 -0
- package/dist/build/getPackageDirForFile.js +11 -0
- package/dist/build/getSxyClientPackageAliases.d.ts.map +1 -1
- package/dist/build/getSxyClientPackageAliases.js +3 -1
- package/dist/build/makeBabelUserDevConfig.d.ts +1 -1
- package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserDevConfig.js +3 -2
- package/dist/build/makeBabelUserProdConfig.d.ts +1 -1
- package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserProdConfig.js +4 -2
- package/dist/build/rollup.user.prod.config.d.ts.map +1 -1
- package/dist/build/rollup.user.prod.config.js +4 -1
- package/dist/build/rollupExtractComponentStylesheets.d.ts +12 -0
- package/dist/build/rollupExtractComponentStylesheets.d.ts.map +1 -0
- package/dist/build/rollupExtractComponentStylesheets.js +35 -0
- package/dist/compat/context.d.ts +1 -1
- package/dist/compat/context.d.ts.map +1 -1
- package/dist/compat/types.d.ts +1 -1
- package/dist/compat/types.d.ts.map +1 -1
- package/dist/componentCss/i/T-components-library-RichTextEditor-RichTextEditor.css +115 -0
- package/dist/componentCss/i/T-components-library-__StatefulMessage-StatefulMessage.css +25 -0
- package/dist/componentCss/tungsten.css +2 -0
- package/dist/componentProxyHandlers.d.ts +2 -1
- package/dist/componentProxyHandlers.d.ts.map +1 -1
- package/dist/componentProxyHandlers.js +45 -9
- package/dist/components/GoToComponent.d.ts +1 -1
- package/dist/components/GoToComponent.d.ts.map +1 -1
- package/dist/components/PopMessages.d.ts +12 -0
- package/dist/components/PopMessages.d.ts.map +1 -0
- package/dist/components/PopMessages.js +45 -0
- package/dist/components/_GoToComponent.d.ts +10 -0
- package/dist/components/_GoToComponent.d.ts.map +1 -0
- package/dist/components/_GoToComponent.js +13 -0
- package/dist/components/library/RichTextEditor/RichTextEditor.d.ts +50 -0
- package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -0
- package/dist/components/library/RichTextEditor/RichTextEditor.js +458 -0
- package/dist/components/library/RichTextEditor/StoredContentNode.d.ts +5 -0
- package/dist/components/library/RichTextEditor/StoredContentNode.d.ts.map +1 -0
- package/dist/components/library/RichTextEditor/StoredContentNode.js +1 -0
- package/dist/components/library/RichTextEditor/activeFormats.d.ts +20 -0
- package/dist/components/library/RichTextEditor/activeFormats.d.ts.map +1 -0
- package/dist/components/library/RichTextEditor/activeFormats.js +48 -0
- package/dist/components/library/RichTextEditor/contentTree.d.ts +30 -0
- package/dist/components/library/RichTextEditor/contentTree.d.ts.map +1 -0
- package/dist/components/library/RichTextEditor/contentTree.js +81 -0
- package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts +30 -0
- package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts.map +1 -0
- package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.js +97 -0
- package/dist/components/library/__StatefulMessage/MessageData.d.ts +7 -0
- package/dist/components/library/__StatefulMessage/MessageData.d.ts.map +1 -0
- package/dist/components/library/__StatefulMessage/MessageData.js +1 -0
- package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts +22 -0
- package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts.map +1 -0
- package/dist/components/library/__StatefulMessage/StatefulMessage.js +88 -0
- package/dist/components/library/index.d.ts +5 -0
- package/dist/components/library/index.d.ts.map +1 -0
- package/dist/components/library/index.js +7 -0
- package/dist/defaultConfig.d.ts +2 -0
- package/dist/defaultConfig.d.ts.map +1 -1
- package/dist/defaultConfig.js +3 -1
- package/dist/env/Interfaces.d.ts +2 -1
- package/dist/env/Interfaces.d.ts.map +1 -1
- package/dist/env/getEnvSchemas.d.ts +1 -1
- package/dist/env/getEnvSchemas.d.ts.map +1 -1
- package/dist/env/injectEnv.d.ts +1 -1
- package/dist/env/injectEnv.d.ts.map +1 -1
- package/dist/env/injectEnv.js +16 -6
- package/dist/env/publicEnv.d.ts.map +1 -1
- package/dist/env/publicEnv.js +4 -1
- package/dist/findUserConfig.d.ts +1 -1
- package/dist/frameworkConfigSchema.d.ts +4 -0
- package/dist/frameworkConfigSchema.d.ts.map +1 -1
- package/dist/frameworkConfigSchema.js +2 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useInstance.d.ts +3 -0
- package/dist/hooks/useInstance.d.ts.map +1 -0
- package/dist/hooks/useInstance.js +4 -0
- package/dist/hydrate/hydrate.d.ts +6 -4
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +51 -13
- package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +1 -1
- package/dist/hydrate/reconcileHydratedAttributes.js +4 -3
- package/dist/hydrate/renderHydrationMismatchBanner.d.ts +7 -0
- package/dist/hydrate/renderHydrationMismatchBanner.d.ts.map +1 -0
- package/dist/hydrate/renderHydrationMismatchBanner.js +69 -0
- package/dist/indexInner.d.ts +13 -5
- package/dist/indexInner.d.ts.map +1 -1
- package/dist/indexInner.js +9 -2
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -1
- package/dist/makeInstanceConfigFromFrameworkConfig.js +2 -1
- package/dist/pop.d.ts +10 -0
- package/dist/pop.d.ts.map +1 -0
- package/dist/pop.js +49 -0
- package/dist/postcssPlugins/TransformCssNames.d.ts.map +1 -1
- package/dist/postcssPlugins/TransformCssNames.js +10 -2
- package/dist/propsAreEqual.d.ts +8 -0
- package/dist/propsAreEqual.d.ts.map +1 -0
- package/dist/propsAreEqual.js +97 -0
- package/dist/rawHtml/filterContentNode.d.ts +20 -0
- package/dist/rawHtml/filterContentNode.d.ts.map +1 -0
- package/dist/rawHtml/filterContentNode.js +96 -0
- package/dist/rawHtml/parseHtml.d.ts +14 -0
- package/dist/rawHtml/parseHtml.d.ts.map +1 -1
- package/dist/rawHtml/parseHtml.js +4 -4
- package/dist/rawHtml/sanitizeHtml.d.ts +17 -0
- package/dist/rawHtml/sanitizeHtml.d.ts.map +1 -0
- package/dist/rawHtml/sanitizeHtml.js +19 -0
- package/dist/render/HeadData.d.ts +2 -0
- package/dist/render/HeadData.d.ts.map +1 -1
- package/dist/render/contentNodeToHtml.d.ts +18 -0
- package/dist/render/contentNodeToHtml.d.ts.map +1 -0
- package/dist/render/contentNodeToHtml.js +66 -0
- package/dist/render/contentToHtml.d.ts.map +1 -1
- package/dist/render/contentToHtml.js +3 -1
- package/dist/render/instantiateClassComponent.d.ts.map +1 -1
- package/dist/render/instantiateClassComponent.js +4 -0
- package/dist/render/processHead.d.ts.map +1 -1
- package/dist/render/processHead.js +22 -3
- package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
- package/dist/render/renderingTreeToHtml.js +8 -1
- package/dist/routing/ErrorRouteType.d.ts +6 -0
- package/dist/routing/ErrorRouteType.d.ts.map +1 -0
- package/dist/routing/ErrorRouteType.js +1 -0
- package/dist/routing/RouteTypes.d.ts +2 -1
- package/dist/routing/RouteTypes.d.ts.map +1 -1
- package/dist/routing/Routes.d.ts +5 -0
- package/dist/routing/Routes.d.ts.map +1 -1
- package/dist/routing/TungstenErrorInfo.d.ts +6 -0
- package/dist/routing/TungstenErrorInfo.d.ts.map +1 -0
- package/dist/routing/TungstenErrorInfo.js +6 -0
- package/dist/settings.d.ts +2 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +3 -0
- package/dist/stateTracking.d.ts +47 -0
- package/dist/stateTracking.d.ts.map +1 -0
- package/dist/stateTracking.js +83 -0
- package/dist/staticGen/staticGen.d.ts.map +1 -1
- package/dist/staticGen/staticGen.js +117 -107
- package/dist/style/styleContentSxy.js +21 -0
- package/dist/testing/hydrateTestApp.d.ts +38 -0
- package/dist/testing/hydrateTestApp.d.ts.map +1 -0
- package/dist/testing/hydrateTestApp.js +242 -0
- package/dist/testing/index.d.ts +4 -3
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +16 -2
- package/dist/testing/installTestStyleProcessors.d.ts +2 -0
- package/dist/testing/installTestStyleProcessors.d.ts.map +1 -0
- package/dist/testing/installTestStyleProcessors.js +21 -0
- package/dist/testing/temp/componentPackageMock.d.ts +18 -0
- package/dist/testing/temp/componentPackageMock.d.ts.map +1 -0
- package/dist/testing/temp/componentPackageMock.js +37 -0
- package/dist/testing/temp/contentHtmlElements.d.ts +3 -0
- package/dist/testing/temp/contentHtmlElements.d.ts.map +1 -0
- package/dist/testing/temp/contentHtmlElements.js +12 -0
- package/dist/timeProfiler.d.ts +6 -0
- package/dist/timeProfiler.d.ts.map +1 -0
- package/dist/timeProfiler.js +31 -0
- package/dist/update/integrateUpdateVdom.d.ts +11 -0
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +169 -54
- package/dist/update/pendingMounts.d.ts +25 -0
- package/dist/update/pendingMounts.d.ts.map +1 -0
- package/dist/update/pendingMounts.js +55 -0
- package/dist/warnOnFrameworkChange.d.ts.map +1 -1
- package/dist/warnOnFrameworkChange.js +8 -8
- package/package.json +21 -17
- package/dist/FunctionComponentStandIn.sxyt.d.ts +0 -2
- package/dist/FunctionComponentStandIn.sxyt.d.ts.map +0 -1
- package/dist/FunctionComponentStandIn.sxyt.js +0 -52
- package/dist/Instance/gotoRedirect.sxyt.d.ts +0 -2
- package/dist/Instance/gotoRedirect.sxyt.d.ts.map +0 -1
- package/dist/Instance/gotoRedirect.sxyt.js +0 -148
- package/dist/Instance/runTrackedWork.sxyt.d.ts +0 -2
- package/dist/Instance/runTrackedWork.sxyt.d.ts.map +0 -1
- package/dist/Instance/runTrackedWork.sxyt.js +0 -35
- package/dist/Servers/devErrorPageAutoRetry.sxyt.d.ts +0 -2
- package/dist/Servers/devErrorPageAutoRetry.sxyt.d.ts.map +0 -1
- package/dist/Servers/devErrorPageAutoRetry.sxyt.js +0 -117
- package/dist/_client/cjsHelpers.sxyt.d.ts +0 -2
- package/dist/_client/cjsHelpers.sxyt.d.ts.map +0 -1
- package/dist/_client/cjsHelpers.sxyt.js +0 -45
- package/dist/auth/passwordHashing.sxyt.d.ts +0 -2
- package/dist/auth/passwordHashing.sxyt.d.ts.map +0 -1
- package/dist/auth/passwordHashing.sxyt.js +0 -46
- package/dist/auth/ref/checkPasswordResetToken.sxyt.d.ts +0 -2
- package/dist/auth/ref/checkPasswordResetToken.sxyt.d.ts.map +0 -1
- package/dist/auth/ref/checkPasswordResetToken.sxyt.js +0 -40
- package/dist/auth/ref/createPasswordResetToken.sxyt.d.ts +0 -2
- package/dist/auth/ref/createPasswordResetToken.sxyt.d.ts.map +0 -1
- package/dist/auth/ref/createPasswordResetToken.sxyt.js +0 -10
- package/dist/babelPlugins/BabelAddDevCacheBust.sxyt.d.ts +0 -2
- package/dist/babelPlugins/BabelAddDevCacheBust.sxyt.d.ts.map +0 -1
- package/dist/babelPlugins/BabelAddDevCacheBust.sxyt.js +0 -138
- package/dist/babelPlugins/fixImportsInSassErrorMessage.sxyt.d.ts +0 -2
- package/dist/babelPlugins/fixImportsInSassErrorMessage.sxyt.d.ts.map +0 -1
- package/dist/babelPlugins/fixImportsInSassErrorMessage.sxyt.js +0 -108
- package/dist/babelPlugins/transformPackageImports/resolveBareImport.sxyt.d.ts +0 -2
- package/dist/babelPlugins/transformPackageImports/resolveBareImport.sxyt.d.ts.map +0 -1
- package/dist/babelPlugins/transformPackageImports/resolveBareImport.sxyt.js +0 -104
- package/dist/bin/commands/compile.sxyt.d.ts +0 -2
- package/dist/bin/commands/compile.sxyt.d.ts.map +0 -1
- package/dist/bin/commands/compile.sxyt.js +0 -255
- package/dist/build/modifySassImports.sxyt.d.ts +0 -2
- package/dist/build/modifySassImports.sxyt.d.ts.map +0 -1
- package/dist/build/modifySassImports.sxyt.js +0 -55
- package/dist/build/sassImportParser.sxyt.d.ts +0 -2
- package/dist/build/sassImportParser.sxyt.d.ts.map +0 -1
- package/dist/build/sassImportParser.sxyt.js +0 -110
- package/dist/build/scssImportParserChatgpt.sxyt.d.ts +0 -2
- package/dist/build/scssImportParserChatgpt.sxyt.d.ts.map +0 -1
- package/dist/build/scssImportParserChatgpt.sxyt.js +0 -120
- package/dist/clone.sxyt.d.ts +0 -2
- package/dist/clone.sxyt.d.ts.map +0 -1
- package/dist/clone.sxyt.js +0 -24
- package/dist/componentProxyHandlers.sxyt.d.ts +0 -2
- package/dist/componentProxyHandlers.sxyt.d.ts.map +0 -1
- package/dist/componentProxyHandlers.sxyt.js +0 -130
- package/dist/components/RawHtml.sxyt.d.ts +0 -2
- package/dist/components/RawHtml.sxyt.d.ts.map +0 -1
- package/dist/components/RawHtml.sxyt.js +0 -104
- package/dist/components/bindable/BindableSelect.sxyt.d.ts +0 -2
- package/dist/components/bindable/BindableSelect.sxyt.d.ts.map +0 -1
- package/dist/components/bindable/BindableSelect.sxyt.js +0 -186
- package/dist/env/injectEnv.sxyt.d.ts +0 -2
- package/dist/env/injectEnv.sxyt.d.ts.map +0 -1
- package/dist/env/injectEnv.sxyt.js +0 -20
- package/dist/env/parseEnv.d.ts +0 -2
- package/dist/env/parseEnv.d.ts.map +0 -1
- package/dist/env/parseEnv.js +0 -14
- package/dist/env/parseEnv.sxyt.d.ts +0 -2
- package/dist/env/parseEnv.sxyt.d.ts.map +0 -1
- package/dist/env/parseEnv.sxyt.js +0 -11
- package/dist/findProjectDir.sxyt.d.ts +0 -2
- package/dist/findProjectDir.sxyt.d.ts.map +0 -1
- package/dist/findProjectDir.sxyt.js +0 -82
- package/dist/hmr/applyHmrModule.sxyt.d.ts +0 -2
- package/dist/hmr/applyHmrModule.sxyt.d.ts.map +0 -1
- package/dist/hmr/applyHmrModule.sxyt.js +0 -182
- package/dist/hmr/instanceRegistry.sxyt.d.ts +0 -2
- package/dist/hmr/instanceRegistry.sxyt.d.ts.map +0 -1
- package/dist/hmr/instanceRegistry.sxyt.js +0 -24
- package/dist/hmr/refreshStylesheets.sxyt.d.ts +0 -2
- package/dist/hmr/refreshStylesheets.sxyt.d.ts.map +0 -1
- package/dist/hmr/refreshStylesheets.sxyt.js +0 -46
- package/dist/hydrate/hydrate.sxyt.d.ts +0 -2
- package/dist/hydrate/hydrate.sxyt.d.ts.map +0 -1
- package/dist/hydrate/hydrate.sxyt.js +0 -302
- package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts +0 -2
- package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts.map +0 -1
- package/dist/hydrate/reconcileHydratedAttributes.sxyt.js +0 -190
- package/dist/importDevModuleWithRetry.sxyt.d.ts +0 -2
- package/dist/importDevModuleWithRetry.sxyt.d.ts.map +0 -1
- package/dist/importDevModuleWithRetry.sxyt.js +0 -104
- package/dist/innerHtmlFromProps.sxyt.d.ts +0 -2
- package/dist/innerHtmlFromProps.sxyt.d.ts.map +0 -1
- package/dist/innerHtmlFromProps.sxyt.js +0 -99
- package/dist/postcssPlugins/parseSelectors.sxyt.d.ts +0 -2
- package/dist/postcssPlugins/parseSelectors.sxyt.d.ts.map +0 -1
- package/dist/postcssPlugins/parseSelectors.sxyt.js +0 -62
- package/dist/postcssPlugins/parseSelectorsRich.sxyt.d.ts +0 -2
- package/dist/postcssPlugins/parseSelectorsRich.sxyt.d.ts.map +0 -1
- package/dist/postcssPlugins/parseSelectorsRich.sxyt.js +0 -155
- package/dist/rawHtml/parseHtml.sxyt.d.ts +0 -2
- package/dist/rawHtml/parseHtml.sxyt.d.ts.map +0 -1
- package/dist/rawHtml/parseHtml.sxyt.js +0 -239
- package/dist/render/getFunctionBodyAsString.sxyt.d.ts +0 -2
- package/dist/render/getFunctionBodyAsString.sxyt.d.ts.map +0 -1
- package/dist/render/getFunctionBodyAsString.sxyt.js +0 -37
- package/dist/render/processHead.sxyt.d.ts +0 -2
- package/dist/render/processHead.sxyt.d.ts.map +0 -1
- package/dist/render/processHead.sxyt.js +0 -93
- package/dist/render/processProps.sxyt.d.ts +0 -2
- package/dist/render/processProps.sxyt.d.ts.map +0 -1
- package/dist/render/processProps.sxyt.js +0 -90
- package/dist/routing/compareRequestToRegex.sxyt.d.ts +0 -2
- package/dist/routing/compareRequestToRegex.sxyt.d.ts.map +0 -1
- package/dist/routing/compareRequestToRegex.sxyt.js +0 -65
- package/dist/routing/getPathPriority.sxyt.d.ts +0 -2
- package/dist/routing/getPathPriority.sxyt.d.ts.map +0 -1
- package/dist/routing/getPathPriority.sxyt.js +0 -24
- package/dist/routing/matchPath.sxyt.d.ts +0 -2
- package/dist/routing/matchPath.sxyt.d.ts.map +0 -1
- package/dist/routing/matchPath.sxyt.js +0 -41
- package/dist/routing/patternToRegex.sxyt.d.ts +0 -2
- package/dist/routing/patternToRegex.sxyt.d.ts.map +0 -1
- package/dist/routing/patternToRegex.sxyt.js +0 -69
- package/dist/routing/splitRequest.sxyt.d.ts +0 -2
- package/dist/routing/splitRequest.sxyt.d.ts.map +0 -1
- package/dist/routing/splitRequest.sxyt.js +0 -47
- package/dist/style/jssToCss.sxyt.d.ts +0 -2
- package/dist/style/jssToCss.sxyt.d.ts.map +0 -1
- package/dist/style/jssToCss.sxyt.js +0 -17
- package/dist/testing/createTestApp.sxyt.d.ts +0 -2
- package/dist/testing/createTestApp.sxyt.d.ts.map +0 -1
- package/dist/testing/createTestApp.sxyt.js +0 -470
- package/dist/testing/ensureTestEnvLoaded.sxyt.d.ts +0 -2
- package/dist/testing/ensureTestEnvLoaded.sxyt.d.ts.map +0 -1
- package/dist/testing/ensureTestEnvLoaded.sxyt.js +0 -20
- package/dist/update/hotSwap.sxyt.d.ts +0 -2
- package/dist/update/hotSwap.sxyt.d.ts.map +0 -1
- package/dist/update/hotSwap.sxyt.js +0 -252
package/dist/Framework.js
CHANGED
|
@@ -17,6 +17,9 @@ import { bundle } from "./build/bundle.js";
|
|
|
17
17
|
import { TungstenError } from "./TungstenError.js";
|
|
18
18
|
import { cliNews, cliOut } from "./cliOutput.js";
|
|
19
19
|
import { staticGen } from "./staticGen/staticGen.js";
|
|
20
|
+
import { combineComponentCss } from "./build/combineComponentCss.js";
|
|
21
|
+
import { frameworkCssPath } from "./build/frameworkStylesheets.js";
|
|
22
|
+
import { frameworkCssFile, frameworkCssFolder } from "./settings.js";
|
|
20
23
|
import { throwError } from "./throwError.js";
|
|
21
24
|
//import { devBundle } from './build/devBundle.jsx'
|
|
22
25
|
import { existsSync, readFileSync, openSync, closeSync, writeFileSync, copyFileSync } from 'fs';
|
|
@@ -30,6 +33,8 @@ import { getUserConfig } from "./getUserConfig.js";
|
|
|
30
33
|
import { getRoutes } from "./getRoutes.js";
|
|
31
34
|
import { getComponent } from "./getComponent.js";
|
|
32
35
|
import { tungstenCorePrivateEnvSchema } from "./Servers/tungstenCorePrivateEnvSchema.js";
|
|
36
|
+
import { createTimeProfiler } from "./timeProfiler.js";
|
|
37
|
+
import { tungstenCorePublicEnvSchema } from "./Servers/tungstenCorePublicEnvSchema.js";
|
|
33
38
|
export class Framework {
|
|
34
39
|
constructor() {
|
|
35
40
|
_defineProperty(this, "config", void 0);
|
|
@@ -38,6 +43,10 @@ export class Framework {
|
|
|
38
43
|
_defineProperty(this, "clientImportAliases", void 0);
|
|
39
44
|
_defineProperty(this, "devServer", void 0);
|
|
40
45
|
_defineProperty(this, "prodServer", void 0);
|
|
46
|
+
// Off by default (a no-op wrapper) - tungsten dev/build enable it via --profile. See
|
|
47
|
+
// timeProfiler.ts. Public so those commands can also profile their own top-level phases
|
|
48
|
+
// (createDevServer, devServer.start) with the same instance.
|
|
49
|
+
_defineProperty(this, "profiler", createTimeProfiler(false));
|
|
41
50
|
}
|
|
42
51
|
async init() {
|
|
43
52
|
// const configOrUndefined = await this.getUserConfig()
|
|
@@ -45,48 +54,52 @@ export class Framework {
|
|
|
45
54
|
// throwError('Framework.init()', 'config is undefined')
|
|
46
55
|
// }
|
|
47
56
|
// return configOrUndefined
|
|
48
|
-
return this.getUserConfig();
|
|
57
|
+
return this.profiler.timeProfileAsync('init', () => this.getUserConfig());
|
|
49
58
|
}
|
|
50
59
|
async build(mode) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
await this.profiler.timeProfileAsync(`build (${mode})`, async () => {
|
|
61
|
+
if (mode === 'dev') {
|
|
62
|
+
const proms = [this.profiler.timeProfileAsync('compile user app', () => this.compileUserApp('dev')), this.profiler.timeProfileAsync('copy framework assets', () => this.copyFrameworkAssets('dev'))];
|
|
63
|
+
await Promise.all(proms);
|
|
64
|
+
//await devBundle()
|
|
65
|
+
cliNews(`Build complete`);
|
|
66
|
+
} else {
|
|
67
|
+
const proms = [this.profiler.timeProfileAsync('compile user app', () => this.compileUserApp('prod')), this.profiler.timeProfileAsync('copy framework assets', () => this.copyFrameworkAssets('prod'))];
|
|
68
|
+
await Promise.all(proms);
|
|
69
|
+
await this.profiler.timeProfileAsync('bundle', () => this.bundle());
|
|
70
|
+
//cliNews(`Production build complete`) // we will do the announcing in cli/commands/build.ts
|
|
71
|
+
}
|
|
72
|
+
});
|
|
62
73
|
}
|
|
63
74
|
async clean(mode) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
75
|
+
await this.profiler.timeProfileAsync(`clean${mode !== undefined ? ` (${mode})` : ''}`, async () => {
|
|
76
|
+
const projectDir = process.cwd();
|
|
77
|
+
switch (mode) {
|
|
78
|
+
case 'prod':
|
|
79
|
+
{
|
|
80
|
+
await Promise.all([removeRecursive(join(projectDir, prodBuildFolder)), removeRecursive(join(projectDir, bundleFolder))]);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'staticSite':
|
|
84
|
+
{
|
|
85
|
+
await removeRecursive(join(projectDir, staticSiteFolder));
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case 'dev':
|
|
89
|
+
{
|
|
90
|
+
await removeRecursive(join(projectDir, devBuildOuterFolder));
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
default:
|
|
94
|
+
{
|
|
95
|
+
await removeRecursive(join(projectDir, buildFolder));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
87
100
|
}
|
|
88
101
|
async staticGen() {
|
|
89
|
-
await staticGen(this);
|
|
102
|
+
await this.profiler.timeProfileAsync('static gen', () => staticGen(this));
|
|
90
103
|
}
|
|
91
104
|
async getUserConfig() {
|
|
92
105
|
return this.config = await getUserConfig();
|
|
@@ -104,7 +117,7 @@ export class Framework {
|
|
|
104
117
|
throw new TungstenError(`SxyFramework.compileUserApp() error: config is undefined`);
|
|
105
118
|
}
|
|
106
119
|
const projectDir = process.cwd();
|
|
107
|
-
const compilationInfo = await compileUserApp(projectDir, this.config, mode);
|
|
120
|
+
const compilationInfo = await compileUserApp(projectDir, this.config, mode, this.profiler);
|
|
108
121
|
this.compilationInfo = compilationInfo;
|
|
109
122
|
return compilationInfo;
|
|
110
123
|
}
|
|
@@ -123,28 +136,38 @@ export class Framework {
|
|
|
123
136
|
const projectDir = process.cwd();
|
|
124
137
|
if (this.config === undefined) throw new TungstenError(`SxyFramework.bundle() error, this.config is undefined`);
|
|
125
138
|
await bundle(projectDir);
|
|
139
|
+
// rollup extracts the framework component css in its own process, so the manifest only
|
|
140
|
+
// exists once bundling has finished
|
|
141
|
+
if (this.compilationInfo !== undefined) {
|
|
142
|
+
const manifest = join(this.compilationInfo.buildLocation, frameworkCssFolder, frameworkCssFile);
|
|
143
|
+
if (existsSync(manifest)) {
|
|
144
|
+
this.compilationInfo.frameworkCss = `/${frameworkCssFolder}/${frameworkCssFile}`;
|
|
145
|
+
await combineComponentCss(this.compilationInfo.buildLocation, frameworkCssFolder, frameworkCssFile);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
126
148
|
}
|
|
127
149
|
async createDevServer() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
return this.profiler.timeProfileAsync('create dev server', async () => {
|
|
151
|
+
cliOut(`Creating dev server`);
|
|
152
|
+
// TS define requires a var to exist or not, so we will initialize it to undefined to satisfy this expectation
|
|
153
|
+
global.tungstenPublicEnv = {};
|
|
154
|
+
// should we default the debug value? we'd have issues if they set DEBUG to undef
|
|
155
|
+
global.tungstenPrivateEnv = {/*TUNGSTEN_SERVER_PORT: -999*/};
|
|
156
|
+
//cliOut(`Try Load Env`)
|
|
157
|
+
//this.loadEnv()
|
|
158
|
+
if (this.config === undefined) throwError('Framework.createDevServer()', 'config is undefined');
|
|
159
|
+
if (this.compilationInfo === undefined) {
|
|
160
|
+
throwError('Framework.createDevServer()', 'compilationInfo is undefined');
|
|
161
|
+
}
|
|
162
|
+
const initialProcessEnv = {
|
|
163
|
+
...process.env
|
|
164
|
+
};
|
|
165
|
+
//const load = await createLoad(import.meta.url, sxyLoaderConfig)
|
|
166
|
+
// !REVIEW! why do we need to load envs here?
|
|
167
|
+
await loadEnvsDev(this.config, -1, initialProcessEnv, false);
|
|
168
|
+
this.devServer = new DevServer(this, this.config, this.compilationInfo);
|
|
169
|
+
return this.devServer;
|
|
170
|
+
});
|
|
148
171
|
}
|
|
149
172
|
async createEnvProd(config) {
|
|
150
173
|
/* NEW ENV
|
|
@@ -165,12 +188,17 @@ export class Framework {
|
|
|
165
188
|
// Load schemas
|
|
166
189
|
const envSchemas = await getEnvSchemas(config);
|
|
167
190
|
let someEnvLoaded = false; // eslint-disable-line no-type-assertion/no-type-assertion -- widening
|
|
191
|
+
// snapshot the real environment before any .env file is loaded, so those files can
|
|
192
|
+
// never overwrite it - see injectEnv()
|
|
193
|
+
const trueEnv = {
|
|
194
|
+
...process.env
|
|
195
|
+
};
|
|
168
196
|
//const envsLoadedMessages: string[] = []
|
|
169
197
|
function loadEnv(fileName, filePath, prefix = '') {
|
|
170
198
|
const env = dotenv.parse(readFileSync(filePath, 'utf-8'));
|
|
171
199
|
someEnvLoaded = true;
|
|
172
200
|
cliOut(`${fileName} loaded from ${filePath}`);
|
|
173
|
-
injectEnv(env, process.env, prefix);
|
|
201
|
+
injectEnv(env, process.env, prefix, trueEnv, config.suppressEnvOverwriteWarnings);
|
|
174
202
|
//console.log('process.env after injecting ' + fileName, process.env)
|
|
175
203
|
}
|
|
176
204
|
const projectDir = process.cwd();
|
|
@@ -207,8 +235,8 @@ export class Framework {
|
|
|
207
235
|
// we could toss the result of this parse and just use privateEnv
|
|
208
236
|
// but this may lead to violation of the contract if tungstenCorePrivateEnvSchema
|
|
209
237
|
// is set to alter data
|
|
210
|
-
const
|
|
211
|
-
global.tungstenPrivateEnv =
|
|
238
|
+
const withCorePrivateEnv = tungstenCorePrivateEnvSchema.parse(privateEnv);
|
|
239
|
+
global.tungstenPrivateEnv = withCorePrivateEnv;
|
|
212
240
|
cliOut('tungsten private env loaded and passed schema validation'); // save this so that we can show all messages about loading .env files first
|
|
213
241
|
}
|
|
214
242
|
if ('publicEnvSchema' in envSchemas) {
|
|
@@ -220,7 +248,9 @@ export class Framework {
|
|
|
220
248
|
// (key, value) => [key.slice('TUNGSTEN_PUBLIC_'.length), value]
|
|
221
249
|
// )
|
|
222
250
|
//console.log('env filtered for public env', filteredEnv)
|
|
223
|
-
|
|
251
|
+
const publicEnv = envSchemas.publicEnvSchema.parse(objectRemap(objectFilter(process.env, key => key.startsWith('TUNGSTEN_PUBLIC_')), (key, value) => [key.slice('TUNGSTEN_PUBLIC_'.length), value]));
|
|
252
|
+
const withCorePrivateEnv = tungstenCorePublicEnvSchema.parse(publicEnv);
|
|
253
|
+
global.tungstenPublicEnv = withCorePrivateEnv;
|
|
224
254
|
// save to public env file
|
|
225
255
|
const clientContents = readFileSync(join(projectDir, bundleFolder, 'client.js'), 'utf-8');
|
|
226
256
|
const publicEnvContent = windowGlobalEnvStatement('tungstenPublicEnv', global.tungstenPublicEnv);
|
|
@@ -256,6 +286,9 @@ export class Framework {
|
|
|
256
286
|
importAliases: {} // probably needs to be filled with some details
|
|
257
287
|
//packages: []
|
|
258
288
|
};
|
|
289
|
+
// `tungsten start` serves a build made by another process, so read it off disk
|
|
290
|
+
const servedFrameworkCss = frameworkCssPath(prodBuildLocation);
|
|
291
|
+
if (servedFrameworkCss !== undefined) this.compilationInfo.frameworkCss = servedFrameworkCss;
|
|
259
292
|
let serverMiddleware = null;
|
|
260
293
|
if (this.config.serverMiddleware) {
|
|
261
294
|
const [middlewareFile, middlewareExportName, middlewarePath] = this.config.serverMiddleware;
|
|
@@ -29,8 +29,10 @@ export type FrameworkConfigBase = {
|
|
|
29
29
|
apiPath?: string;
|
|
30
30
|
suppressNoHeadWarning?: boolean;
|
|
31
31
|
suppressOriginMismatchWarning?: boolean;
|
|
32
|
+
suppressEnvOverwriteWarnings?: boolean;
|
|
32
33
|
warnOnFrameworkChange?: boolean;
|
|
33
34
|
hmr?: boolean | 'reload';
|
|
35
|
+
csr?: boolean;
|
|
34
36
|
};
|
|
35
37
|
export type FrameworkConfigWithRootComponent = FrameworkConfigBase & {
|
|
36
38
|
useRootComponent?: true;
|
|
@@ -67,8 +69,10 @@ export type FrameworkConfigCompleteBase = {
|
|
|
67
69
|
apiPath: string;
|
|
68
70
|
suppressNoHeadWarning: boolean;
|
|
69
71
|
suppressOriginMismatchWarning: boolean;
|
|
72
|
+
suppressEnvOverwriteWarnings: boolean;
|
|
70
73
|
warnOnFrameworkChange: boolean;
|
|
71
74
|
hmr: boolean | 'reload';
|
|
75
|
+
csr: boolean;
|
|
72
76
|
};
|
|
73
77
|
export type FrameworkConfigCompleteWithRootComponent = FrameworkConfigCompleteBase & {
|
|
74
78
|
useRootComponent: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkConfig.d.ts","sourceRoot":"","sources":["../src/FrameworkConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,KAAK,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC5C,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACtC,KAAK,kBAAkB,GAAG,MAAM,CAAA;AAEhC,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAenF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IAMpB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,aAAa,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAClC,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1C,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,6BAA6B,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"FrameworkConfig.d.ts","sourceRoot":"","sources":["../src/FrameworkConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InstanceConfig } from '
|
|
1
|
+
import type { InstanceConfig } from './InstanceConfig.js';
|
|
2
2
|
import type { ReqRes } from '../ReqRes.js';
|
|
3
3
|
import type { AppRoutes } from '../routing/AppRoutes.js';
|
|
4
4
|
import type { GlobalData } from '../routing/registerGlobalData.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../../src/Instance/Instance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../../src/Instance/Instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ import { isServer as processIsServer } from "../isServer.js";
|
|
|
14
14
|
import { ContentNodeIsClassComponent } from "../ContentNode.js";
|
|
15
15
|
import { $props, $type } from "../contentNodeSymbols.js";
|
|
16
16
|
import { errorOut } from "../appOutput.js";
|
|
17
|
+
import { makeTungstenErrorInfo } from "../routing/TungstenErrorInfo.js";
|
|
17
18
|
export class Instance {
|
|
18
19
|
constructor(_location, instanceConfig, reqRes, appRoutes, routes,
|
|
19
20
|
//globalData: GlobalData,
|
|
@@ -57,7 +58,23 @@ export class Instance {
|
|
|
57
58
|
_defineProperty(this, "goto", async routeKey => {
|
|
58
59
|
// get route data
|
|
59
60
|
this.navigating = true;
|
|
60
|
-
|
|
61
|
+
let matchedRouteInfo;
|
|
62
|
+
try {
|
|
63
|
+
matchedRouteInfo = await routing(routeKey, this.getRoutes());
|
|
64
|
+
} catch (error) {
|
|
65
|
+
errorOut(`Tungsten client navigation to '${routeKey}' failed while loading route data:`, error);
|
|
66
|
+
const errorRoute = this.routes.error;
|
|
67
|
+
// Without an app-defined error route there's nothing better to show; at
|
|
68
|
+
// least this is now a logged, caught rejection rather than a silent
|
|
69
|
+
// unhandled one that left the previous page frozen with no feedback.
|
|
70
|
+
if (errorRoute === undefined) return;
|
|
71
|
+
matchedRouteInfo = {
|
|
72
|
+
key: 'error',
|
|
73
|
+
params: {},
|
|
74
|
+
content: errorRoute.content,
|
|
75
|
+
data: makeTungstenErrorInfo(error)
|
|
76
|
+
};
|
|
77
|
+
}
|
|
61
78
|
//console.log('matchedRouteInfo', location, matchedRouteInfo)
|
|
62
79
|
//console.log('matched route info', this.matchedRouteInfo)
|
|
63
80
|
// data here is the result of the route data function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceConfig.d.ts","sourceRoot":"","sources":["../../src/Instance/InstanceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG1D,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA"}
|
|
1
|
+
{"version":3,"file":"InstanceConfig.d.ts","sourceRoot":"","sources":["../../src/Instance/InstanceConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG1D,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,GAAG,EAAE,OAAO,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopMessage.type.d.ts","sourceRoot":"","sources":["../src/PopMessage.type.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -25,6 +25,7 @@ export declare class DevServer extends TungstenServer {
|
|
|
25
25
|
serverIterationCount: number;
|
|
26
26
|
private liveReloadClients;
|
|
27
27
|
private unsubscribeReload;
|
|
28
|
+
private bootId;
|
|
28
29
|
constructor(framework: Framework, config: FrameworkConfigComplete, compilationInfo: CompilationInfo, initialProcessEnv?: Record<string, string>);
|
|
29
30
|
private addServerMiddleware;
|
|
30
31
|
private handleLiveReloadStream;
|
|
@@ -36,6 +37,7 @@ export declare class DevServer extends TungstenServer {
|
|
|
36
37
|
private sourceFileToUrlPath;
|
|
37
38
|
private handleRequestApi;
|
|
38
39
|
private handleRequest;
|
|
40
|
+
private tryRenderErrorRoute;
|
|
39
41
|
getGlobalData: (func: GlobalDataFunction, reqRes: ReqRes) => Promise<GlobalData>;
|
|
40
42
|
errorLog: (error: unknown) => void;
|
|
41
43
|
errorPage: (error: unknown, errorTrack: string[]) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevServer.d.ts","sourceRoot":"","sources":["../../src/Servers/DevServer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,OAA4D,MAAM,SAAS,CAAA;AAGlF,OAAO,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,uBAAuB,EAAwB,MAAM,uBAAuB,CAAA;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAW3C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAKrC,OAAO,EAAE,UAAU,EAAkB,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAEjG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"DevServer.d.ts","sourceRoot":"","sources":["../../src/Servers/DevServer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,OAA4D,MAAM,SAAS,CAAA;AAGlF,OAAO,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,uBAAuB,EAAwB,MAAM,uBAAuB,CAAA;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAW3C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAKrC,OAAO,EAAE,UAAU,EAAkB,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAEjG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAqBrD,qBAAa,SAAU,SAAQ,cAAc;IACzC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,eAAe,EAAE,eAAe,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAC9B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IAExB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAO;IAC3B,cAAc,EAAE,MAAM,CAAI;IAC1B,oBAAoB,EAAE,MAAM,CAAI;IAChC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,iBAAiB,CAA4B;IAIrD,OAAO,CAAC,MAAM,CAA2C;gBAErD,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EACvF,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAiIlD,OAAO,CAAC,mBAAmB,CAyE1B;IAKD,OAAO,CAAC,sBAAsB,CAQ7B;IACD,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAC9C,OAAO,CAAC,oBAAoB,CAwB3B;IACD,OAAO,CAAC,mBAAmB,CAO1B;IACD,OAAO,CAAC,gBAAgB,CAcvB;IAED,OAAO,CAAC,aAAa,CA+NpB;IAaD,OAAO,CAAC,mBAAmB,CAsC1B;IAID,aAAa,GAAU,MAAM,kBAAkB,EAAE,QAAQ,MAAM,yBAQ9D;IACD,QAAQ,GAAI,OAAO,OAAO,UAIzB;IACD,SAAS,GAAI,OAAO,OAAO,EAAE,YAAY,MAAM,EAAE,YAiBhD;IACD,KAAK,QAAO,OAAO,CAAC,MAAM,CAAC,CAO1B;IACD,IAAI,aAMH;CAGJ"}
|
|
@@ -6,7 +6,7 @@ import { join, relative } from 'path';
|
|
|
6
6
|
import slash from 'slash';
|
|
7
7
|
import "../moduleReloader.js"; // V important ES module cache control
|
|
8
8
|
import { allObj as promiseAllObj } from 'sxy-lib/promises.js';
|
|
9
|
-
import { staticFolder, assetsFolder, publicFolder, packagesFolder, clientFolder, componentCssFolder } from "../settings.js";
|
|
9
|
+
import { staticFolder, assetsFolder, publicFolder, packagesFolder, clientFolder, componentCssFolder, frameworkCssFolder } from "../settings.js";
|
|
10
10
|
import { rootToHtmlDev as renderRootToHtmlDev } from "../render/rootToHtmlDev.js";
|
|
11
11
|
import { Instance } from "../Instance/Instance.js";
|
|
12
12
|
import { TungstenError } from "../TungstenError.js";
|
|
@@ -25,6 +25,7 @@ import { TungstenServer } from "./TungstenServer.js";
|
|
|
25
25
|
import { portError } from "./portError.js";
|
|
26
26
|
import { loadEnvsDev } from "./loadEnvsDev.js";
|
|
27
27
|
import { initStores } from "./initStores.js";
|
|
28
|
+
import { makeTungstenErrorInfo } from "../routing/TungstenErrorInfo.js";
|
|
28
29
|
import { MatchedRoute } from "../routing/MatchedRoute.js";
|
|
29
30
|
import { iterationQueryString } from "../iterationQueryString.js";
|
|
30
31
|
import { onReloadEvent } from "../hmr/liveReloadHub.js";
|
|
@@ -54,6 +55,10 @@ export class DevServer extends TungstenServer {
|
|
|
54
55
|
_defineProperty(this, "serverIterationCount", 0);
|
|
55
56
|
_defineProperty(this, "liveReloadClients", new Set());
|
|
56
57
|
_defineProperty(this, "unsubscribeReload", null);
|
|
58
|
+
// Sent as the first event on every live-reload connection (see handleLiveReloadStream), so
|
|
59
|
+
// the client can tell a fresh reconnect (server process restarted, e.g. by tungsten devmon)
|
|
60
|
+
// apart from its first-ever connection, and reload only in the former case.
|
|
61
|
+
_defineProperty(this, "bootId", `${Date.now()}-${Math.random()}`);
|
|
57
62
|
_defineProperty(this, "addServerMiddleware", serverMiddleware => {
|
|
58
63
|
//console.log('addServerMiddleware')
|
|
59
64
|
const [middlewareFile, middlewareExportName, middlewarePath] = serverMiddleware;
|
|
@@ -124,6 +129,9 @@ export class DevServer extends TungstenServer {
|
|
|
124
129
|
res.setHeader('Cache-Control', 'no-cache');
|
|
125
130
|
res.setHeader('Connection', 'keep-alive');
|
|
126
131
|
res.flushHeaders();
|
|
132
|
+
res.write(`event: boot\ndata: ${JSON.stringify({
|
|
133
|
+
bootId: this.bootId
|
|
134
|
+
})}\n\n`);
|
|
127
135
|
this.liveReloadClients.add(res);
|
|
128
136
|
req.on('close', () => {
|
|
129
137
|
this.liveReloadClients.delete(res);
|
|
@@ -193,7 +201,19 @@ export class DevServer extends TungstenServer {
|
|
|
193
201
|
res.status(404).end();
|
|
194
202
|
return;
|
|
195
203
|
}
|
|
204
|
+
cliLog('handling ' + req.url);
|
|
196
205
|
const errorTrack = [];
|
|
206
|
+
// Captured as soon as each resolves, independent of the promiseAllObj combinators
|
|
207
|
+
// below - those are all-or-nothing, so if routing/data-fetching/rendering fails
|
|
208
|
+
// afterwards, the destructured `routes`/`RootComponentClass` locals never get
|
|
209
|
+
// assigned even though resolving them didn't fail. The catch block below uses these
|
|
210
|
+
// to tell "app routes resolved fine, something later failed" apart from "routes
|
|
211
|
+
// themselves couldn't be resolved" - only the former can show the app's 'error' route.
|
|
212
|
+
let capturedRoutes;
|
|
213
|
+
let capturedRootComponentClass = null;
|
|
214
|
+
// Defaults to {} to match the "no global data function registered" branch below,
|
|
215
|
+
// which resolves synchronously to {} and is never itself a failure case.
|
|
216
|
+
let capturedGlobalData = {};
|
|
197
217
|
try {
|
|
198
218
|
const _firstRender = this.firstRender;
|
|
199
219
|
this.firstRender = false;
|
|
@@ -216,7 +236,6 @@ export class DevServer extends TungstenServer {
|
|
|
216
236
|
}
|
|
217
237
|
globalDataFunc.value = undefined;
|
|
218
238
|
//const load = await createLoad(import.meta.url, sxyLoaderConfig)
|
|
219
|
-
//await loadEnvsDev(this.config, load, this.initialProcessEnv, false)
|
|
220
239
|
await loadEnvsDev(this.config, iteration, this.initialProcessEnv, false);
|
|
221
240
|
// we are delaying instance creation until after we load the app code, to lets things initialise?
|
|
222
241
|
const reqRes = {
|
|
@@ -230,11 +249,15 @@ export class DevServer extends TungstenServer {
|
|
|
230
249
|
//const routingPromise = getRoutesDev(this.compilationInfo, this.config, load).then(
|
|
231
250
|
const routingPromise = getRoutesDev(this.compilationInfo, this.config, iteration).then(async appRoutes => {
|
|
232
251
|
const routes = typeof appRoutes === 'function' ? appRoutes(reqRes) : appRoutes;
|
|
252
|
+
capturedRoutes = routes;
|
|
233
253
|
// load data, and do routing
|
|
234
254
|
return promiseAllObj({
|
|
235
255
|
appRoutes,
|
|
236
256
|
routes,
|
|
237
|
-
globalData: globalDataFunc.value !== undefined ? this.getGlobalData(globalDataFunc.value, reqRes).
|
|
257
|
+
globalData: globalDataFunc.value !== undefined ? this.getGlobalData(globalDataFunc.value, reqRes).then(globalData => {
|
|
258
|
+
capturedGlobalData = globalData;
|
|
259
|
+
return globalData;
|
|
260
|
+
}).catch(e => {
|
|
238
261
|
const msg = 'Error getting global data';
|
|
239
262
|
cliError(msg);
|
|
240
263
|
errorTrack.push(msg);
|
|
@@ -278,7 +301,10 @@ export class DevServer extends TungstenServer {
|
|
|
278
301
|
} = await promiseAllObj({
|
|
279
302
|
routing: routingPromise,
|
|
280
303
|
//RootComponentClass: getComponentDev(rootComponentFileFull, this.config.rootComponent, load)
|
|
281
|
-
RootComponentClass: getComponentDev(rootComponentFileFull, this.config.rootComponent, iteration)
|
|
304
|
+
RootComponentClass: getComponentDev(rootComponentFileFull, this.config.rootComponent, iteration).then(c => {
|
|
305
|
+
capturedRootComponentClass = c;
|
|
306
|
+
return c;
|
|
307
|
+
})
|
|
282
308
|
})
|
|
283
309
|
// .catch(e => {
|
|
284
310
|
// cliError('ROUTING AND ROOT ERR')
|
|
@@ -340,11 +366,60 @@ export class DevServer extends TungstenServer {
|
|
|
340
366
|
res.send(html);
|
|
341
367
|
} catch (e) {
|
|
342
368
|
cliLog('error in TungstenServer handleRequest', e);
|
|
343
|
-
res.setHeader('Content-Type', 'text/html');
|
|
344
|
-
res.status(500);
|
|
345
369
|
this.errorLog(e);
|
|
346
370
|
cliLog('');
|
|
347
|
-
|
|
371
|
+
const errorRouteHtml = await this.tryRenderErrorRoute(req, res, capturedRoutes, capturedRootComponentClass, capturedGlobalData, e);
|
|
372
|
+
res.setHeader('Content-Type', 'text/html');
|
|
373
|
+
res.status(500);
|
|
374
|
+
res.send(errorRouteHtml ?? this.errorPage(e, errorTrack));
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
// Attempts to render the app's own 'error' route instead of the dev server's generic
|
|
378
|
+
// error dump, using whatever `routes`/`RootComponentClass`/`globalData` handleRequest
|
|
379
|
+
// above managed to capture before it failed. Global data and route data are independent
|
|
380
|
+
// tRPC calls (batched together, but batching doesn't couple their success/failure - see
|
|
381
|
+
// resolveResponse.ts in @trpc/server), so global data commonly did resolve even when
|
|
382
|
+
// route data or rendering is what actually failed; passing the real value through here
|
|
383
|
+
// (rather than defaulting to {}) lets the error route render with it, e.g. the real theme
|
|
384
|
+
// colour or username instead of framework defaults. Only succeeds when routes actually
|
|
385
|
+
// resolved (so `routes` is defined) and the app defines an 'error' route. Never throws -
|
|
386
|
+
// falls back to null (the caller's default error page) on any failure, since we're
|
|
387
|
+
// already handling one error and can't risk a second, unhandled one taking the dev
|
|
388
|
+
// server down.
|
|
389
|
+
_defineProperty(this, "tryRenderErrorRoute", async (req, res, routes, RootComponentClass, globalData, error) => {
|
|
390
|
+
try {
|
|
391
|
+
if (routes === undefined) return null;
|
|
392
|
+
const errorRouteDef = routes.error;
|
|
393
|
+
if (errorRouteDef === undefined) return null;
|
|
394
|
+
if (this.framework.clientImportAliases === undefined) {
|
|
395
|
+
throwError('DevServer.tryRenderErrorRoute()', 'framework.clientImportAliases is undefined');
|
|
396
|
+
}
|
|
397
|
+
const reqRes = {
|
|
398
|
+
req,
|
|
399
|
+
res
|
|
400
|
+
};
|
|
401
|
+
const instanceConfig = makeInstanceConfigFromFrameworkConfig(this.config, true);
|
|
402
|
+
const matchedRouteInfo = {
|
|
403
|
+
key: 'error',
|
|
404
|
+
params: {},
|
|
405
|
+
content: errorRouteDef.content,
|
|
406
|
+
data: makeTungstenErrorInfo(error)
|
|
407
|
+
};
|
|
408
|
+
const serverDataLoading = {
|
|
409
|
+
value: false
|
|
410
|
+
};
|
|
411
|
+
const {
|
|
412
|
+
internalStore,
|
|
413
|
+
stores,
|
|
414
|
+
storeSubscriptions
|
|
415
|
+
} = initStores(req.url, reqRes, globalData, matchedRouteInfo, serverDataLoading);
|
|
416
|
+
const instance = new Instance(req.url, instanceConfig, reqRes, routes, routes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo);
|
|
417
|
+
return await renderRootToHtmlDev(this.compilationInfo, this.framework.clientImportAliases, RootComponentClass ?? MatchedRoute, instance, this.config, global.tungstenPublicEnv, '' // siteBasePathOverride
|
|
418
|
+
);
|
|
419
|
+
} catch (renderError) {
|
|
420
|
+
cliError('Error rendering app error route, falling back to default error page');
|
|
421
|
+
cliLog(renderError);
|
|
422
|
+
return null;
|
|
348
423
|
}
|
|
349
424
|
});
|
|
350
425
|
// private async handlePost(req: express.Request, res: express.Response): Promise<void> {
|
|
@@ -367,7 +442,7 @@ export class DevServer extends TungstenServer {
|
|
|
367
442
|
_defineProperty(this, "errorPage", (error, errorTrack) => {
|
|
368
443
|
const autoRetryScript = devErrorPageAutoRetryScript(error);
|
|
369
444
|
return `<!DOCTYPE html>
|
|
370
|
-
|
|
445
|
+
<html>
|
|
371
446
|
<head>
|
|
372
447
|
<title>Error</title>
|
|
373
448
|
<style>html { font-family: arial }</style>
|
|
@@ -408,8 +483,8 @@ export class DevServer extends TungstenServer {
|
|
|
408
483
|
// + '\n Ensure that you have an env schema with this field, and a matching env file'
|
|
409
484
|
// )
|
|
410
485
|
// }
|
|
411
|
-
const proto =
|
|
412
|
-
const host =
|
|
486
|
+
const proto = tungstenPublicEnv.FRONTEND_PROTO ?? 'http';
|
|
487
|
+
const host = tungstenPublicEnv.FRONTEND_HOST ?? 'localhost';
|
|
413
488
|
const port = tungstenPrivateEnv.TUNGSTEN_SERVER_PORT ?? 3000;
|
|
414
489
|
if (isNaN(port) || port === 0) throwError('DevServer', portError(port));
|
|
415
490
|
this.port = port;
|
|
@@ -463,7 +538,8 @@ export class DevServer extends TungstenServer {
|
|
|
463
538
|
this.app.use(`/.tungsten.config.js`, express.static(join(this.compilationInfo.buildLocation, '.tungsten.config.js'))); // compiled packages
|
|
464
539
|
this.app.use(`/${packagesFolder}/`, express.static(join(this.compilationInfo.buildLocation, packagesFolder))); // compiled packages
|
|
465
540
|
this.app.use(`/${clientFolder}/`, express.static(join(this.compilationInfo.buildLocation, clientFolder))); // compiled packages
|
|
466
|
-
this.app.use(`/${componentCssFolder}/`, express.static(join(this.compilationInfo.buildLocation, componentCssFolder))); //
|
|
541
|
+
this.app.use(`/${componentCssFolder}/`, express.static(join(this.compilationInfo.buildLocation, componentCssFolder))); // user component css
|
|
542
|
+
this.app.use(`/${frameworkCssFolder}/`, express.static(join(this.compilationInfo.buildLocation, frameworkCssFolder))); // framework component css
|
|
467
543
|
this.app.use(express.static(join(this.compilationInfo.buildLocation, staticFolder))); // compiled stylesheets? -- etag: false to disable caching
|
|
468
544
|
const publicLocation = join(this.compilationInfo.buildLocation, publicFolder);
|
|
469
545
|
if (existsSync(publicLocation)) this.app.use(express.static(publicLocation)); // files from public folder
|
|
@@ -5,7 +5,7 @@ import type { RouteContentFunction } from '../routing/RouteContentFunction.js';
|
|
|
5
5
|
export type MatchedRouteInfo = {
|
|
6
6
|
key: RouteKey | null;
|
|
7
7
|
params: Record<string, string>;
|
|
8
|
-
content: ContentNode | RouteContentFunction
|
|
8
|
+
content: ContentNode | RouteContentFunction<any, any>;
|
|
9
9
|
data?: unknown | RoutingRedirect;
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=MatchedRouteInfo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatchedRouteInfo.d.ts","sourceRoot":"","sources":["../../src/Servers/MatchedRouteInfo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"MatchedRouteInfo.d.ts","sourceRoot":"","sources":["../../src/Servers/MatchedRouteInfo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAK9B,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACrD,IAAI,CAAC,EAAE,OAAO,GAAG,eAAe,CAAA;CACnC,CAAA"}
|
|
@@ -22,8 +22,9 @@ export declare class ProdServer extends TungstenServer {
|
|
|
22
22
|
constructor(framework: Framework, config: FrameworkConfigComplete, compilationInfo: CompilationInfo, appRoutes: AppRoutes, RootComponentOrNull: AnyComponentType | null, serverMiddleware: ServerMiddleware | null);
|
|
23
23
|
private handleRequestApi;
|
|
24
24
|
handleRequest: (req: express.Request, res: express.Response) => Promise<void>;
|
|
25
|
+
private tryRenderErrorRoute;
|
|
25
26
|
errorPage: () => string;
|
|
26
27
|
start(portOverride?: number | null, mute?: boolean): Promise<string>;
|
|
27
|
-
stop(): void
|
|
28
|
+
stop(): Promise<void>;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=ProdServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProdServer.d.ts","sourceRoot":"","sources":["../../src/Servers/ProdServer.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAI7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAQpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAM3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAKnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"ProdServer.d.ts","sourceRoot":"","sources":["../../src/Servers/ProdServer.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAI7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAQpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAM3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAKnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAWrD,qBAAa,UAAW,SAAQ,cAAc;IAC1C,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,eAAe,EAAE,eAAe,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAK5C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAC9B,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;gBAEX,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,uBAAuB,EAC/B,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,EACpB,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,EAC5C,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IAkI7C,OAAO,CAAC,gBAAgB,CAgBvB;IACD,aAAa,GAAU,KAAK,OAAO,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,KAAG,OAAO,CAAC,IAAI,CAAC,CA2HjF;IASD,OAAO,CAAC,mBAAmB,CA+C1B;IACD,SAAS,eASR;IAMD,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B5D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAY9B"}
|