@next-core/runtime 1.30.4 → 1.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -180,7 +180,7 @@ class Router {
180
180
  }
181
181
  if (!ignoreRendering && !((_location$state2 = location.state) !== null && _location$state2 !== void 0 && _location$state2.noIncremental)) {
182
182
  var _classPrivateFieldGet3;
183
- ignoreRendering = await ((_classPrivateFieldGet3 = (0, _classPrivateFieldGet7.default)(this, _rendererContext)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.didPerformIncrementalRender(location));
183
+ ignoreRendering = await ((_classPrivateFieldGet3 = (0, _classPrivateFieldGet7.default)(this, _rendererContext)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.didPerformIncrementalRender(location, (0, _classPrivateFieldGet7.default)(this, _prevLocation)));
184
184
  }
185
185
 
186
186
  // Ignore stale renders
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","names":["_history2","require","_http","_lodash","_history3","_Renderer","_DataStore","_resolveData","_mount","_matchStoryboard","_StoryboardFunctions","_RendererContext","_themeAndMode","_Runtime","_getPageInfo","_markAsComputed","_handleHttpError","_abortController","_setLoginStateCookie","_registerCustomTemplates","_fulfilStoryboard","_enums","_insertPreviewRoutes","_devtools","_setUIVersion","_setAppVariable","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","writable","value","Set","_classPrivateFieldSet2","history","getHistory","window","addEventListener","event","message","_classPrivateMethodGet2","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet7","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","initAbortController","renderId","listen","_classPrivateFieldGet2","_location$state","_location$state2","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","locationsAreEqual","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","abortPendingRequest","dispatchPageLeave","storyboard","matchStoryboard","pathname","isOutsideApp","reload","devtoolsHookEmit","_queuedRender2","catch","handleHttpError","exports","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","search","process","env","NODE_ENV","console","error","Error","replace","_render2","nextLocation","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet6","_storyboard$app","uniqueId","resetAllComputedMarks","clearResolveCache","hooks","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","setAppVariable","appId","version","currentVersion","fulfilStoryboard","appChanged","flags","getRuntime","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","setLoginStateCookie","main","document","querySelector","portal","renderRoot","tag","RenderTag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","unmountTree","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","setTheme","getLocalAppsTheme","theme","setMode","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","_internalApiGetAppInBootstrapData","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","menuRequests","menuConfs","Promise","all","mergeMenuConfs","returnNode","isUnauthenticatedError","NO_AUTH_GUARD","HttpAbortError","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","httpErrorToString","runtimeContext","return","blockingList","rendererContext","RendererContext","query","URLSearchParams","sys","auth","getAuth","getPageInfo","settings","brand","getBrandSettings","ctxStore","DataStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","registerCustomTemplates","registerStoryboardFunctions","meta","functions","collectContract","contracts","stores","renderRoutes","insertPreviewRoutes","routes","getDataStores","postAsyncRender","setInitialMenuRequests","result","child","route","dispatchBeforePageLoad","applyTheme","applyMode","setUIVersion","uiVersion","mountTree","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering && !location.state?.noIncremental) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(location);\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({\n status: \"redirected\",\n });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n menuRequests: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n []\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n await routeHelper.mergeMenus(output.menuRequests);\n rendererContext.setInitialMenuRequests(output.menuRequests);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Router.js","names":["_history2","require","_http","_lodash","_history3","_Renderer","_DataStore","_resolveData","_mount","_matchStoryboard","_StoryboardFunctions","_RendererContext","_themeAndMode","_Runtime","_getPageInfo","_markAsComputed","_handleHttpError","_abortController","_setLoginStateCookie","_registerCustomTemplates","_fulfilStoryboard","_enums","_insertPreviewRoutes","_devtools","_setUIVersion","_setAppVariable","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","writable","value","Set","_classPrivateFieldSet2","history","getHistory","window","addEventListener","event","message","_classPrivateMethodGet2","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet7","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","initAbortController","renderId","listen","_classPrivateFieldGet2","_location$state","_location$state2","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","locationsAreEqual","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","abortPendingRequest","dispatchPageLeave","storyboard","matchStoryboard","pathname","isOutsideApp","reload","devtoolsHookEmit","_queuedRender2","catch","handleHttpError","exports","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","search","process","env","NODE_ENV","console","error","Error","replace","_render2","nextLocation","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet6","_storyboard$app","uniqueId","resetAllComputedMarks","clearResolveCache","hooks","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","setAppVariable","appId","version","currentVersion","fulfilStoryboard","appChanged","flags","getRuntime","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","setLoginStateCookie","main","document","querySelector","portal","renderRoot","tag","RenderTag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","unmountTree","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","setTheme","getLocalAppsTheme","theme","setMode","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","_internalApiGetAppInBootstrapData","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","menuRequests","menuConfs","Promise","all","mergeMenuConfs","returnNode","isUnauthenticatedError","NO_AUTH_GUARD","HttpAbortError","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","httpErrorToString","runtimeContext","return","blockingList","rendererContext","RendererContext","query","URLSearchParams","sys","auth","getAuth","getPageInfo","settings","brand","getBrandSettings","ctxStore","DataStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","registerCustomTemplates","registerStoryboardFunctions","meta","functions","collectContract","contracts","stores","renderRoutes","insertPreviewRoutes","routes","getDataStores","postAsyncRender","setInitialMenuRequests","result","child","route","dispatchBeforePageLoad","applyTheme","applyMode","setUIVersion","uiVersion","mountTree","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering && !location.state?.noIncremental) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n this.#prevLocation\n );\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({\n status: \"redirected\",\n });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n menuRequests: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n []\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n await routeHelper.mergeMenus(output.menuRequests);\n rendererContext.setInitialMenuRequests(output.menuRequests);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
@@ -455,7 +455,7 @@ function _renderBrick() {
455
455
  if (!slots) {
456
456
  return;
457
457
  }
458
- var routeSlotIndexes = new Set();
458
+ var routeSlotFromIndexToSlotId = new Map();
459
459
  var rendered = yield Promise.all(Object.entries(slots).map((_ref7, index) => {
460
460
  var [childSlotId, slotConf] = _ref7;
461
461
  if (slotConf.type !== "routes") {
@@ -463,22 +463,20 @@ function _renderBrick() {
463
463
  }
464
464
  var parentRoute = parentRoutes[parentRoutes.length - 1];
465
465
  if (parentRoute !== null && parentRoute !== void 0 && parentRoute.incrementalSubRoutes) {
466
- routeSlotIndexes.add(index);
466
+ routeSlotFromIndexToSlotId.set(index, childSlotId);
467
467
  rendererContext.performIncrementalRender( /*#__PURE__*/function () {
468
- var _ref8 = _asyncToGenerator(function* (location) {
469
- var _childRuntimeContext$;
468
+ var _ref8 = _asyncToGenerator(function* (location, prevLocation) {
470
469
  var {
471
470
  homepage
472
471
  } = childRuntimeContext.app;
473
472
  var {
474
473
  pathname
475
474
  } = location;
476
- var previousParams = (_childRuntimeContext$ = childRuntimeContext.match) === null || _childRuntimeContext$ === void 0 ? void 0 : _childRuntimeContext$.params;
477
475
  // Ignore if any one of homepage and parent routes not matched.
478
476
  if (!matchHomepage(homepage, pathname) || !parentRoutes.every(route => {
479
- var newMatch = matchRoute(route, homepage, pathname);
480
- // Ignore if the direct parent route params changed
481
- return newMatch && (route !== parentRoute || isEqual(previousParams, newMatch.params));
477
+ var prevMatch;
478
+ var newMatch;
479
+ return (prevMatch = matchRoute(route, homepage, prevLocation.pathname)) && (newMatch = matchRoute(route, homepage, pathname)) && (route !== parentRoute || isEqual(prevMatch.params, newMatch.params));
482
480
  })) {
483
481
  return false;
484
482
  }
@@ -526,7 +524,7 @@ function _renderBrick() {
526
524
  }
527
525
  return true;
528
526
  });
529
- return function (_x33) {
527
+ return function (_x33, _x34) {
530
528
  return _ref8.apply(this, arguments);
531
529
  };
532
530
  }());
@@ -539,9 +537,9 @@ function _renderBrick() {
539
537
  menuRequests: []
540
538
  });
541
539
  rendered.forEach((item, index) => {
542
- if (routeSlotIndexes.has(index)) {
540
+ if (routeSlotFromIndexToSlotId.has(index)) {
543
541
  // Memoize a render node before it's been merged.
544
- rendererContext.memoize(slotId, [], item.node, brick);
542
+ rendererContext.memoize(routeSlotFromIndexToSlotId.get(index), [], item.node, brick);
545
543
  }
546
544
  mergeRenderOutput(childrenOutput, item);
547
545
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","isEqual","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","return","_x32","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotIndexes","Set","entries","_ref7","childSlotId","slotConf","parentRoute","incrementalSubRoutes","add","performIncrementalRender","_ref8","location","_childRuntimeContext$","homepage","pathname","previousParams","params","every","newMatch","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x33","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n RouteConfOfBricks,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce, isEqual } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n const rawOutput = await lowerLevelRenderControlNode(runtimeContext);\n rawOutput.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n };\n return rawOutput;\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput =\n await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n reControlledOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n const parentRoute = parentRoutes[parentRoutes.length - 1] as\n | RouteConfOfBricks\n | undefined;\n if (parentRoute?.incrementalSubRoutes) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n const previousParams = childRuntimeContext.match?.params;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) => {\n const newMatch = matchRoute(route, homepage, pathname);\n // Ignore if the direct parent route params changed\n return (\n newMatch &&\n (route !== parentRoute ||\n isEqual(previousParams, newMatch.params))\n );\n })\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return {\n blockingList: [],\n menuRequests: [],\n };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load %s \"%s\" failed:`, type, name, e);\n })\n : promise;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","isEqual","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","return","_x32","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotFromIndexToSlotId","entries","_ref7","childSlotId","slotConf","parentRoute","incrementalSubRoutes","performIncrementalRender","_ref8","location","prevLocation","homepage","pathname","every","prevMatch","newMatch","params","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x33","_x34","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n RouteConfOfBricks,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce, isEqual } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport type { MatchResult } from \"./matchPath.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n const rawOutput = await lowerLevelRenderControlNode(runtimeContext);\n rawOutput.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n };\n return rawOutput;\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput =\n await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n reControlledOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotFromIndexToSlotId = new Map<number, string>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n const parentRoute = parentRoutes[parentRoutes.length - 1] as\n | RouteConfOfBricks\n | undefined;\n if (parentRoute?.incrementalSubRoutes) {\n routeSlotFromIndexToSlotId.set(index, childSlotId);\n rendererContext.performIncrementalRender(\n async (location, prevLocation) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) => {\n let prevMatch: MatchResult | null;\n let newMatch: MatchResult | null;\n return (\n (prevMatch = matchRoute(\n route,\n homepage,\n prevLocation.pathname\n )) &&\n (newMatch = matchRoute(route, homepage, pathname)) &&\n (route !== parentRoute ||\n isEqual(prevMatch.params, newMatch.params))\n );\n })\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotFromIndexToSlotId.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n routeSlotFromIndexToSlotId.get(index),\n [],\n item.node,\n brick\n );\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return {\n blockingList: [],\n menuRequests: [],\n };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load %s \"%s\" failed:`, type, name, e);\n })\n : promise;\n}\n"],"mappings":"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"}
@@ -145,11 +145,18 @@ export class RendererContext {
145
145
  reCatch(error, returnNode) {
146
146
  return _classPrivateFieldGet(this, _routeHelper).catch(error, returnNode);
147
147
  }
148
- didPerformIncrementalRender(location) {
148
+ didPerformIncrementalRender(location, prevLocation) {
149
149
  var _this2 = this;
150
150
  return _asyncToGenerator(function* () {
151
- var results = yield Promise.all(_classPrivateFieldGet(_this2, _locationChangeCallbacks).map(callback => callback(location)));
152
- return results.some(result => result);
151
+ // Perform incremental rendering from inside out.
152
+ // This allows nested incremental sub-routes.
153
+ for (var i = _classPrivateFieldGet(_this2, _locationChangeCallbacks).length - 1; i >= 0; i--) {
154
+ var callback = _classPrivateFieldGet(_this2, _locationChangeCallbacks)[i];
155
+ if (yield callback(location, prevLocation)) {
156
+ return true;
157
+ }
158
+ }
159
+ return false;
153
160
  })();
154
161
  }
155
162