@next-core/runtime 1.29.1 → 1.30.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.
@@ -427,21 +427,27 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
427
427
  }
428
428
  const routeSlotIndexes = new Set();
429
429
  const rendered = await Promise.all(Object.entries(slots).map(([childSlotId, slotConf], index) => {
430
- var _parentRoutes;
431
430
  if (slotConf.type !== "routes") {
432
431
  return renderBricks(brick, slotConf.bricks, childRuntimeContext, rendererContext, parentRoutes, childSlotId, tplStack);
433
432
  }
434
- if ((_parentRoutes = parentRoutes[parentRoutes.length - 1]) !== null && _parentRoutes !== void 0 && _parentRoutes.incrementalSubRoutes) {
433
+ const parentRoute = parentRoutes[parentRoutes.length - 1];
434
+ if (parentRoute !== null && parentRoute !== void 0 && parentRoute.incrementalSubRoutes) {
435
435
  routeSlotIndexes.add(index);
436
436
  rendererContext.performIncrementalRender(async location => {
437
+ var _childRuntimeContext$;
437
438
  const {
438
439
  homepage
439
440
  } = childRuntimeContext.app;
440
441
  const {
441
442
  pathname
442
443
  } = location;
444
+ const previousParams = (_childRuntimeContext$ = childRuntimeContext.match) === null || _childRuntimeContext$ === void 0 ? void 0 : _childRuntimeContext$.params;
443
445
  // Ignore if any one of homepage and parent routes not matched.
444
- if (!(0, _matchStoryboard.matchHomepage)(homepage, pathname) || !parentRoutes.every(route => (0, _matchRoutes.matchRoute)(route, homepage, pathname))) {
446
+ if (!(0, _matchStoryboard.matchHomepage)(homepage, pathname) || !parentRoutes.every(route => {
447
+ const newMatch = (0, _matchRoutes.matchRoute)(route, homepage, pathname);
448
+ // Ignore if the direct parent route params changed
449
+ return newMatch && (route !== parentRoute || (0, _lodash.isEqual)(previousParams, newMatch.params));
450
+ })) {
445
451
  return false;
446
452
  }
447
453
  const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] = createScopedRuntimeContext({
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","_matchStoryboard","_bindListeners","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","matchRoutes","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","blockingList","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","RenderTag","BRICK","memoizeMenuRequests","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","forEachIndex","symbolForTPlExternalForEachIndex","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","renderControlNode","_rawOutput$node","rawOutput","PLACEHOLDER","return","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","catchLoad","unknownBricks","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","FORM_RENDERER","FormRendererElement","HTMLElement","$$typeof","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","events","portal","iid","ref","usedProcessors","strictCollectMemberUsage","size","loadProcessorsImperatively","join","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotIndexes","Set","entries","childSlotId","slotConf","_parentRoutes","incrementalSubRoutes","add","performIncrementalRender","location","homepage","pathname","matchHomepage","every","matchRoute","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","childrenOutput","has","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","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 } 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 if (\n (parentRoutes[parentRoutes.length - 1] as RouteConfOfBricks)\n ?.incrementalSubRoutes\n ) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\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 matchRoute(route, homepage, pathname)\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":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","_matchStoryboard","_bindListeners","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","matchRoutes","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","blockingList","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","RenderTag","BRICK","memoizeMenuRequests","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","forEachIndex","symbolForTPlExternalForEachIndex","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","renderControlNode","_rawOutput$node","rawOutput","PLACEHOLDER","return","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","catchLoad","unknownBricks","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","FORM_RENDERER","FormRendererElement","HTMLElement","$$typeof","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","events","portal","iid","ref","usedProcessors","strictCollectMemberUsage","size","loadProcessorsImperatively","join","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotIndexes","Set","entries","childSlotId","slotConf","parentRoute","incrementalSubRoutes","add","performIncrementalRender","location","_childRuntimeContext$","homepage","pathname","previousParams","params","matchHomepage","every","newMatch","matchRoute","isEqual","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","childrenOutput","has","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","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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"}
@@ -9,7 +9,7 @@ var _classPrivateMethodInitSpec2 = _interopRequireDefault(require("@babel/runtim
9
9
  var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _classPrivateMethodGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodGet"));
12
- var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
12
+ var _classPrivateFieldGet4 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
13
13
  var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
14
14
  var _lodash = require("lodash");
15
15
  var _bindListeners = require("./bindListeners.js");
@@ -108,22 +108,25 @@ class RendererContext {
108
108
  (0, _classPrivateFieldSet2.default)(this, _allMenuRequests, menuRequests);
109
109
  }
110
110
  memoizeMenuRequests(route, menuRequests) {
111
- if (!(0, _classPrivateFieldGet2.default)(this, _memoizedMenuRequestMap)) {
111
+ if (!(0, _classPrivateFieldGet4.default)(this, _memoizedMenuRequestMap)) {
112
112
  (0, _classPrivateFieldSet2.default)(this, _memoizedMenuRequestMap, new WeakMap());
113
113
  }
114
- (0, _classPrivateFieldGet2.default)(this, _memoizedMenuRequestMap).set(route, menuRequests[0]);
114
+ (0, _classPrivateFieldGet4.default)(this, _memoizedMenuRequestMap).set(route, menuRequests[0]);
115
115
  }
116
116
  async reMergeMenuRequests(routes, currentRoute, menuRequests) {
117
117
  let previousMenuRequest;
118
118
  let previousRoute;
119
119
  for (const route of routes) {
120
- previousMenuRequest = (0, _classPrivateFieldGet2.default)(this, _memoizedMenuRequestMap).get(route);
120
+ var _classPrivateFieldGet2;
121
+ // If the sub-routes doesn't match, then `this.memoizeMenuRequests` will
122
+ // not be called, thus `this.#memoizedMenuRequestMap` is not set.
123
+ previousMenuRequest = (_classPrivateFieldGet2 = (0, _classPrivateFieldGet4.default)(this, _memoizedMenuRequestMap)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.get(route);
121
124
  if (previousMenuRequest) {
122
125
  previousRoute = route;
123
126
  break;
124
127
  }
125
128
  }
126
- const mergedMenuRequests = (0, _classPrivateFieldGet2.default)(this, _allMenuRequests);
129
+ const mergedMenuRequests = (0, _classPrivateFieldGet4.default)(this, _allMenuRequests);
127
130
  const previousIndex = previousMenuRequest ? mergedMenuRequests.indexOf(previousMenuRequest) : -1;
128
131
  if (previousIndex === -1) {
129
132
  if (!menuRequests.length) {
@@ -134,18 +137,19 @@ class RendererContext {
134
137
  mergedMenuRequests.splice(previousIndex, mergedMenuRequests.length - previousIndex, ...menuRequests);
135
138
  }
136
139
  if (previousRoute && previousRoute !== currentRoute) {
137
- (0, _classPrivateFieldGet2.default)(this, _memoizedMenuRequestMap).delete(previousRoute);
140
+ var _classPrivateFieldGet3;
141
+ (_classPrivateFieldGet3 = (0, _classPrivateFieldGet4.default)(this, _memoizedMenuRequestMap)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.delete(previousRoute);
138
142
  }
139
- await (0, _classPrivateFieldGet2.default)(this, _routeHelper).mergeMenus(mergedMenuRequests);
143
+ await (0, _classPrivateFieldGet4.default)(this, _routeHelper).mergeMenus(mergedMenuRequests);
140
144
  }
141
145
  reBailout(output) {
142
- return (0, _classPrivateFieldGet2.default)(this, _routeHelper).bailout(output);
146
+ return (0, _classPrivateFieldGet4.default)(this, _routeHelper).bailout(output);
143
147
  }
144
148
  reCatch(error, returnNode) {
145
- return (0, _classPrivateFieldGet2.default)(this, _routeHelper).catch(error, returnNode);
149
+ return (0, _classPrivateFieldGet4.default)(this, _routeHelper).catch(error, returnNode);
146
150
  }
147
151
  async didPerformIncrementalRender(location) {
148
- const results = await Promise.all((0, _classPrivateFieldGet2.default)(this, _locationChangeCallbacks).map(callback => callback(location)));
152
+ const results = await Promise.all((0, _classPrivateFieldGet4.default)(this, _locationChangeCallbacks).map(callback => callback(location)));
149
153
  return results.some(result => result);
150
154
  }
151
155
 
@@ -154,7 +158,7 @@ class RendererContext {
154
158
  * ignore normal rendering.
155
159
  */
156
160
  performIncrementalRender(callback) {
157
- (0, _classPrivateFieldGet2.default)(this, _locationChangeCallbacks).push(callback);
161
+ (0, _classPrivateFieldGet4.default)(this, _locationChangeCallbacks).push(callback);
158
162
  }
159
163
  registerBrickLifeCycle(brick, lifeCycle) {
160
164
  if (!lifeCycle) {
@@ -164,7 +168,7 @@ class RendererContext {
164
168
  for (const key of lifeCycleTypes) {
165
169
  const handlers = lifeCycle[key];
166
170
  if (handlers) {
167
- (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle)[key].push({
171
+ (0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle)[key].push({
168
172
  brick,
169
173
  handlers: handlers
170
174
  });
@@ -177,22 +181,22 @@ class RendererContext {
177
181
  }
178
182
  }
179
183
  registerArbitraryLifeCycle(lifeCycle, fn) {
180
- const arbitraryCallbacks = (0, _classPrivateFieldGet2.default)(this, _arbitraryLifeCycle).get(lifeCycle);
184
+ const arbitraryCallbacks = (0, _classPrivateFieldGet4.default)(this, _arbitraryLifeCycle).get(lifeCycle);
181
185
  if (arbitraryCallbacks) {
182
186
  arbitraryCallbacks.add(fn);
183
187
  } else {
184
- (0, _classPrivateFieldGet2.default)(this, _arbitraryLifeCycle).set(lifeCycle, new Set([fn]));
188
+ (0, _classPrivateFieldGet4.default)(this, _arbitraryLifeCycle).set(lifeCycle, new Set([fn]));
185
189
  }
186
190
  }
187
191
  memoize(slotId, keyPath, node, returnNode) {
188
- if (!(0, _classPrivateFieldGet2.default)(this, _memoized)) {
192
+ if (!(0, _classPrivateFieldGet4.default)(this, _memoized)) {
189
193
  (0, _classPrivateFieldSet2.default)(this, _memoized, new WeakMap());
190
194
  }
191
195
  const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
192
- let mem = (0, _classPrivateFieldGet2.default)(this, _memoized).get(returnNode);
196
+ let mem = (0, _classPrivateFieldGet4.default)(this, _memoized).get(returnNode);
193
197
  if (!mem) {
194
198
  mem = new Map();
195
- (0, _classPrivateFieldGet2.default)(this, _memoized).set(returnNode, mem);
199
+ (0, _classPrivateFieldGet4.default)(this, _memoized).set(returnNode, mem);
196
200
  }
197
201
  mem.set(memKey, {
198
202
  node,
@@ -204,7 +208,7 @@ class RendererContext {
204
208
  reRender(slotId, keyPath, node, returnNode) {
205
209
  const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
206
210
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
207
- const memoized = (0, _classPrivateFieldGet2.default)(this, _memoized).get(returnNode).get(memKey);
211
+ const memoized = (0, _classPrivateFieldGet4.default)(this, _memoized).get(returnNode).get(memKey);
208
212
  const {
209
213
  node: prevNode,
210
214
  last: prevLast,
@@ -299,25 +303,25 @@ class RendererContext {
299
303
  (0, _classPrivateMethodGet2.default)(this, _initializeRerenderBricks, _initializeRerenderBricks2).call(this, newBricks);
300
304
  }
301
305
  dispose() {
302
- for (const list of Object.values((0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle))) {
306
+ for (const list of Object.values((0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle))) {
303
307
  list.length = 0;
304
308
  }
305
- for (const list of (0, _classPrivateFieldGet2.default)(this, _observers).values()) {
309
+ for (const list of (0, _classPrivateFieldGet4.default)(this, _observers).values()) {
306
310
  for (const observer of list) {
307
311
  observer.disconnect();
308
312
  }
309
313
  list.length = 0;
310
314
  }
311
- (0, _classPrivateFieldGet2.default)(this, _observers).clear();
312
- if ((0, _classPrivateFieldGet2.default)(this, _mediaListener)) {
313
- _mediaQuery.mediaEventTarget.removeEventListener("change", (0, _classPrivateFieldGet2.default)(this, _mediaListener));
315
+ (0, _classPrivateFieldGet4.default)(this, _observers).clear();
316
+ if ((0, _classPrivateFieldGet4.default)(this, _mediaListener)) {
317
+ _mediaQuery.mediaEventTarget.removeEventListener("change", (0, _classPrivateFieldGet4.default)(this, _mediaListener));
314
318
  (0, _classPrivateFieldSet2.default)(this, _mediaListener, undefined);
315
319
  }
316
320
  (0, _classPrivateFieldSet2.default)(this, _memoized, undefined);
317
321
  (0, _classPrivateFieldSet2.default)(this, _allMenuRequests, undefined);
318
322
  (0, _classPrivateFieldSet2.default)(this, _memoizedMenuRequestMap, undefined);
319
- (0, _classPrivateFieldGet2.default)(this, _arbitraryLifeCycle).clear();
320
- (0, _classPrivateFieldGet2.default)(this, _locationChangeCallbacks).length = 0;
323
+ (0, _classPrivateFieldGet4.default)(this, _arbitraryLifeCycle).clear();
324
+ (0, _classPrivateFieldGet4.default)(this, _locationChangeCallbacks).length = 0;
321
325
  }
322
326
  dispatchBeforePageLoad() {
323
327
  (0, _classPrivateMethodGet2.default)(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));
@@ -355,7 +359,7 @@ class RendererContext {
355
359
  for (const {
356
360
  brick,
357
361
  handlers: conf
358
- } of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onScrollIntoView) {
362
+ } of (0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle).onScrollIntoView) {
359
363
  (0, _classPrivateMethodGet2.default)(this, _addObserver, _addObserver2).call(this, brick, conf);
360
364
  }
361
365
  }
@@ -365,14 +369,14 @@ class RendererContext {
365
369
  detail: (0, _proxyFactories.getReadOnlyProxy)(event.detail)
366
370
  }));
367
371
  });
368
- _mediaQuery.mediaEventTarget.addEventListener("change", (0, _classPrivateFieldGet2.default)(this, _mediaListener));
372
+ _mediaQuery.mediaEventTarget.addEventListener("change", (0, _classPrivateFieldGet4.default)(this, _mediaListener));
369
373
  }
370
374
  initializeMessageDispatcher() {
371
375
  var _hooks$messageDispatc2;
372
376
  for (const {
373
377
  brick,
374
378
  handlers: confList
375
- } of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onMessage) {
379
+ } of (0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle).onMessage) {
376
380
  for (const conf of [].concat(confList)) {
377
381
  var _hooks$messageDispatc;
378
382
  _Runtime.hooks === null || _Runtime.hooks === void 0 || (_hooks$messageDispatc = _Runtime.hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 || _hooks$messageDispatc.onMessage(conf.channel, detail => {
@@ -400,7 +404,7 @@ function _unmountBricks2(bricks) {
400
404
 
401
405
  // Clear life cycle handlers, record `onUnmount` at the same time
402
406
  for (const key of lifeCycleTypes) {
403
- const removed = (0, _lodash.remove)((0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle)[key], item => bricks.has(item.brick));
407
+ const removed = (0, _lodash.remove)((0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle)[key], item => bricks.has(item.brick));
404
408
  if (key === "onUnmount") {
405
409
  unmountList.push(...removed);
406
410
  }
@@ -409,13 +413,13 @@ function _unmountBricks2(bricks) {
409
413
  // Clear intersection observers
410
414
  for (const brick of bricks) {
411
415
  var _brick$element, _brick$element2;
412
- const observers = (0, _classPrivateFieldGet2.default)(this, _observers).get(brick);
416
+ const observers = (0, _classPrivateFieldGet4.default)(this, _observers).get(brick);
413
417
  if (observers !== null && observers !== void 0 && observers.length) {
414
418
  for (const observer of observers) {
415
419
  observer.disconnect();
416
420
  }
417
421
  observers.length = 0;
418
- (0, _classPrivateFieldGet2.default)(this, _observers).delete(brick);
422
+ (0, _classPrivateFieldGet4.default)(this, _observers).delete(brick);
419
423
  }
420
424
  (0, _bindTemplateProxy.unbindTemplateProxy)(brick);
421
425
  (_brick$element = brick.element) === null || _brick$element === void 0 || delete _brick$element.$$tplStateStore;
@@ -438,7 +442,7 @@ function _initializeRerenderBricks2(bricks) {
438
442
  for (const {
439
443
  brick,
440
444
  handlers
441
- } of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onMount) {
445
+ } of (0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle).onMount) {
442
446
  if (bricks.has(brick)) {
443
447
  (0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(mountEvent);
444
448
  }
@@ -446,7 +450,7 @@ function _initializeRerenderBricks2(bricks) {
446
450
  for (const {
447
451
  brick,
448
452
  handlers: conf
449
- } of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle).onScrollIntoView) {
453
+ } of (0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle).onScrollIntoView) {
450
454
  if (bricks.has(brick)) {
451
455
  (0, _classPrivateMethodGet2.default)(this, _addObserver, _addObserver2).call(this, brick, conf);
452
456
  }
@@ -460,10 +464,10 @@ function _dispatchGeneralLifeCycle2(type, event) {
460
464
  for (const {
461
465
  brick,
462
466
  handlers
463
- } of (0, _classPrivateFieldGet2.default)(this, _memoizedLifeCycle)[type]) {
467
+ } of (0, _classPrivateFieldGet4.default)(this, _memoizedLifeCycle)[type]) {
464
468
  (0, _bindListeners.listenerFactory)(handlers, brick.runtimeContext, brick)(event);
465
469
  }
466
- const arbitraryCallbacks = (0, _classPrivateFieldGet2.default)(this, _arbitraryLifeCycle).get(type);
470
+ const arbitraryCallbacks = (0, _classPrivateFieldGet4.default)(this, _arbitraryLifeCycle).get(type);
467
471
  if (arbitraryCallbacks) {
468
472
  for (const fn of arbitraryCallbacks) {
469
473
  fn();
@@ -486,10 +490,10 @@ function _addObserver2(brick, conf) {
486
490
  threshold
487
491
  });
488
492
  observer.observe(brick.element);
489
- let list = (0, _classPrivateFieldGet2.default)(this, _observers).get(brick);
493
+ let list = (0, _classPrivateFieldGet4.default)(this, _observers).get(brick);
490
494
  if (!list) {
491
495
  list = [];
492
- (0, _classPrivateFieldGet2.default)(this, _observers).set(brick, list);
496
+ (0, _classPrivateFieldGet4.default)(this, _observers).set(brick, list);
493
497
  }
494
498
  list.push(observer);
495
499
  }