@next-core/runtime 1.38.0 → 1.38.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,10 +39,9 @@ function _renderRoutes() {
39
39
  _renderRoutes = _asyncToGenerator(function* (returnNode, routes, _runtimeContext, rendererContext, parentRoutes, menuRequestReturnNode, slotId, isIncremental) {
40
40
  var matched = yield matchRoutes(routes, _runtimeContext);
41
41
  var output = getEmptyRenderOutput();
42
- var menuRequestNode = {
42
+ var menuRequestNode = output.menuRequestNode = {
43
43
  return: menuRequestReturnNode
44
44
  };
45
- output.menuRequestNode = menuRequestNode;
46
45
  switch (matched) {
47
46
  case "missed":
48
47
  break;
@@ -105,7 +104,7 @@ function _renderRoutes() {
105
104
  newOutput = yield renderBricks(returnNode, route.bricks, runtimeContext, rendererContext, routePath, menuRequestNode, slotId);
106
105
  }
107
106
  mergeRenderOutput(output, newOutput);
108
- appendMenuRequestNode(menuRequestReturnNode, newOutput.menuRequestNode);
107
+ appendMenuRequestNode(menuRequestNode, newOutput.menuRequestNode);
109
108
  }
110
109
  }
111
110
  }
@@ -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","symbolForTPlExternalNoForEach","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","setupRootRuntimeContext","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_x8","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","matched","output","getEmptyRenderOutput","menuRequestNode","return","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","request","memoizeMenuRequestNode","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_x16","_x17","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x18","_x19","_x20","_x21","_x22","_x23","_x24","_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","_x35","renderControlNode","_ref2","_rawOutput$node","rawOutput","tag","PLACEHOLDER","_x36","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","BRICK","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","reMergeMenuRequestNodes","result","reCatch","_x37","_x38","childrenOutput","has","mergeSiblingRenderMenuRequest","child","_x25","_x26","_x27","_x28","_x29","_x30","_x31","_x32","_x33","_x34","_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 symbolForTPlExternalNoForEach,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\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\";\nimport { setupRootRuntimeContext } from \"./setupRootRuntimeContext.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 menuRequestNode?: MenuRequestNode;\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 menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n const menuRequestNode: MenuRequestNode = {\n return: menuRequestReturnNode,\n };\n output.menuRequestNode = menuRequestNode;\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 menuRequestNode.request = menuRequest;\n }\n\n if (!isIncremental) {\n rendererContext.memoizeMenuRequestNode(routes, menuRequestNode);\n }\n\n let newOutput: RenderOutput;\n if (route.type === \"routes\") {\n newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n }\n\n mergeRenderOutput(output, newOutput);\n appendMenuRequestNode(menuRequestReturnNode, newOutput.menuRequestNode);\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 menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\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 menuRequestReturnNode,\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 menuRequestReturnNode: MenuRequestNode,\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 menuRequestReturnNode,\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 } else if (brickConf[symbolForTPlExternalNoForEach]) {\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\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 menuRequestReturnNode,\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 menuRequestReturnNode,\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 menuRequestReturnNode,\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 slotConf,\n parentRoutes,\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 menuRequestReturnNode,\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 if (incrementalOutput.route) {\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n await postAsyncRender(\n incrementalOutput,\n scopedRuntimeContext,\n [scopedRuntimeContext.ctxStore, ...scopedStores]\n );\n }\n\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\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.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\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 // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n return incrementalOutput.route ? true : null;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\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 mergeSiblingRenderMenuRequest(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = childrenOutput.menuRequestNode)\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 menuRequestReturnNode: MenuRequestNode,\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 menuRequestReturnNode,\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, menuRequestNode, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\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 mergeSiblingRenderMenuRequest(\n output: RenderOutput,\n newOutput: RenderOutput\n) {\n const menuRequestNode = newOutput.menuRequestNode;\n if (menuRequestNode) {\n if (output.menuRequestNode) {\n let last = output.menuRequestNode;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n output.menuRequestNode = menuRequestNode;\n }\n }\n}\n\nfunction appendMenuRequestNode(\n menuRequestReturnNode: MenuRequestNode,\n menuRequestNode: MenuRequestNode | undefined\n) {\n if (!menuRequestNode) {\n return;\n }\n if (menuRequestReturnNode.child) {\n let last = menuRequestReturnNode.child;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n menuRequestReturnNode.child = menuRequestNode;\n }\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return { blockingList: [] };\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","symbolForTPlExternalNoForEach","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","setupRootRuntimeContext","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_x8","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","matched","output","getEmptyRenderOutput","menuRequestNode","return","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","request","memoizeMenuRequestNode","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_x16","_x17","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x18","_x19","_x20","_x21","_x22","_x23","_x24","_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","_x35","renderControlNode","_ref2","_rawOutput$node","rawOutput","tag","PLACEHOLDER","_x36","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","BRICK","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","reMergeMenuRequestNodes","result","reCatch","_x37","_x38","childrenOutput","has","mergeSiblingRenderMenuRequest","child","_x25","_x26","_x27","_x28","_x29","_x30","_x31","_x32","_x33","_x34","_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 symbolForTPlExternalNoForEach,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\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\";\nimport { setupRootRuntimeContext } from \"./setupRootRuntimeContext.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 menuRequestNode?: MenuRequestNode;\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 menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n const menuRequestNode: MenuRequestNode = (output.menuRequestNode = {\n return: menuRequestReturnNode,\n });\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 menuRequestNode.request = menuRequest;\n }\n\n if (!isIncremental) {\n rendererContext.memoizeMenuRequestNode(routes, menuRequestNode);\n }\n\n let newOutput: RenderOutput;\n if (route.type === \"routes\") {\n newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n }\n\n mergeRenderOutput(output, newOutput);\n appendMenuRequestNode(menuRequestNode, newOutput.menuRequestNode);\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 menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\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 menuRequestReturnNode,\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 menuRequestReturnNode: MenuRequestNode,\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 menuRequestReturnNode,\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 } else if (brickConf[symbolForTPlExternalNoForEach]) {\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\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 menuRequestReturnNode,\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 menuRequestReturnNode,\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 menuRequestReturnNode,\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 slotConf,\n parentRoutes,\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 menuRequestReturnNode,\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 if (incrementalOutput.route) {\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n await postAsyncRender(\n incrementalOutput,\n scopedRuntimeContext,\n [scopedRuntimeContext.ctxStore, ...scopedStores]\n );\n }\n\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\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.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\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 // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n return incrementalOutput.route ? true : null;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\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 mergeSiblingRenderMenuRequest(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = childrenOutput.menuRequestNode)\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 menuRequestReturnNode: MenuRequestNode,\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 menuRequestReturnNode,\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, menuRequestNode, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\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 mergeSiblingRenderMenuRequest(\n output: RenderOutput,\n newOutput: RenderOutput\n) {\n const menuRequestNode = newOutput.menuRequestNode;\n if (menuRequestNode) {\n if (output.menuRequestNode) {\n let last = output.menuRequestNode;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n output.menuRequestNode = menuRequestNode;\n }\n }\n}\n\nfunction appendMenuRequestNode(\n menuRequestReturnNode: MenuRequestNode,\n menuRequestNode: MenuRequestNode | undefined\n) {\n if (!menuRequestNode) {\n return;\n }\n if (menuRequestReturnNode.child) {\n let last = menuRequestReturnNode.child;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n menuRequestReturnNode.child = menuRequestNode;\n }\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return { blockingList: [] };\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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"}
@@ -157,12 +157,11 @@ export class RendererContext {
157
157
  * ignore normal rendering.
158
158
  */
159
159
  performIncrementalRender(slotConf, parentRoutes, callback) {
160
- if (!_classPrivateFieldGet(_incrementalRenderStates, this).has(slotConf)) {
161
- _classPrivateFieldGet(_incrementalRenderStates, this).set(slotConf, {
162
- parentRoutes,
163
- callback
164
- });
165
- }
160
+ // Override stale incremental render callbacks
161
+ _classPrivateFieldGet(_incrementalRenderStates, this).set(slotConf, {
162
+ parentRoutes,
163
+ callback
164
+ });
166
165
  }
167
166
  registerBrickLifeCycle(brick, lifeCycle) {
168
167
  if (!lifeCycle) {