@next-core/runtime 1.16.0 → 1.17.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.
Files changed (42) hide show
  1. package/dist/cjs/createRoot.js +6 -1
  2. package/dist/cjs/createRoot.js.map +1 -1
  3. package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
  4. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +7 -5
  5. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  6. package/dist/cjs/internal/Renderer.js +3 -5
  7. package/dist/cjs/internal/Renderer.js.map +1 -1
  8. package/dist/cjs/internal/Router.js +6 -1
  9. package/dist/cjs/internal/Router.js.map +1 -1
  10. package/dist/cjs/internal/Runtime.js.map +1 -1
  11. package/dist/cjs/internal/compute/computeRealProperties.js +27 -38
  12. package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -1
  13. package/dist/cjs/internal/data/DataStore.js +31 -11
  14. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  15. package/dist/cjs/internal/interfaces.js.map +1 -1
  16. package/dist/cjs/internal/secret_internals.js +9 -3
  17. package/dist/cjs/internal/secret_internals.js.map +1 -1
  18. package/dist/esm/createRoot.js +6 -1
  19. package/dist/esm/createRoot.js.map +1 -1
  20. package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
  21. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +23 -15
  22. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  23. package/dist/esm/internal/Renderer.js +4 -6
  24. package/dist/esm/internal/Renderer.js.map +1 -1
  25. package/dist/esm/internal/Router.js +6 -1
  26. package/dist/esm/internal/Router.js.map +1 -1
  27. package/dist/esm/internal/Runtime.js.map +1 -1
  28. package/dist/esm/internal/compute/computeRealProperties.js +47 -58
  29. package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
  30. package/dist/esm/internal/data/DataStore.js +31 -11
  31. package/dist/esm/internal/data/DataStore.js.map +1 -1
  32. package/dist/esm/internal/interfaces.js.map +1 -1
  33. package/dist/esm/internal/secret_internals.js +9 -3
  34. package/dist/esm/internal/secret_internals.js.map +1 -1
  35. package/dist/types/internal/CustomTemplates/constants.d.ts +2 -2
  36. package/dist/types/internal/CustomTemplates/setupTemplateProxy.d.ts +2 -2
  37. package/dist/types/internal/Runtime.d.ts +2 -2
  38. package/dist/types/internal/compute/computeRealProperties.d.ts +4 -3
  39. package/dist/types/internal/data/DataStore.d.ts +3 -0
  40. package/dist/types/internal/interfaces.d.ts +3 -2
  41. package/dist/types/internal/secret_internals.d.ts +3 -1
  42. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_hooks$checkPermissio2","_runtimeContext$app","length","undefined","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoadBrick","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","tag","BRICK","return","events","portal","iid","ref","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","loadProperties","_ref4","computedPropsFromHost","_brick$properties","computed","propName","propValue","entries","asyncProperties","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","_ref6","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport { asyncComputeRealProperties } 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 { matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\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\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\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 const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\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 slotId,\n key,\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`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\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 renderControlNode = async () => {\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 output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n brickName,\n rendererContext.unknownBricks\n )\n );\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 // const confProps = brickConf.properties;\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const loadProperties = async () => {\n brick.properties = await asyncComputeRealProperties(\n confProps,\n runtimeContext,\n trackingContextList\n );\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n brick.properties ??= {};\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\n };\n const asyncProperties = loadProperties();\n blockingList.push(asyncProperties);\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 asyncProperties,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncProperties,\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 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\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":";;;;;;AAUA,SACEA,uBAAuB,EACvBC,sBAAsB,QACjB,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,QAAQ,QAAQ,QAAQ;AACjC,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SAASC,0BAA0B,QAAQ,oCAAoC;AAC/E,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,qBAAqB,QAAQ,+BAA+B;AACrE,SAEEC,uBAAuB,QAClB,sCAAsC;AAE7C,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SACEC,mCAAmC,EACnCC,+BAA+B,EAC/BC,wBAAwB,QACnB,gCAAgC;AACvC,SAASC,oBAAoB,QAAQ,2CAA2C;AAOhF,SACEC,0BAA0B,EAC1BC,gBAAgB,QACX,4BAA4B;AACnC,SAASC,eAAe,QAAQ,uBAAuB;AAEvD,SAASC,gBAAgB,EAAEC,KAAK,QAAQ,cAAc;AACtD,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,oBAAoB;AACtE,SACEC,aAAa,EAEbC,yBAAyB,QACpB,6BAA6B;AACpC,SAASC,kBAAkB,QAAQ,sCAAsC;AACzE,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,kBAAkB,QAAQ,uBAAuB;AAgB1D,gBAAsBC,YAAYA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAgGjC,SAAAF,cAAA;EAAAA,aAAA,GAAAG,iBAAA,CAhGM,WACLC,UAAsB,EACtBC,MAAmB,EACnBC,eAA+B,EAC/BC,eAAgC,EAChCC,MAAe,EACQ;IACvB,IAAMC,OAAO,SAASlC,WAAW,CAAC8B,MAAM,EAAEC,eAAe,CAAC;IAC1D,IAAMI,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IACD,QAAQH,OAAO;MACb,KAAK,QAAQ;QACX;MACF,KAAK,iBAAiB;QACpBC,MAAM,CAACG,eAAe,GAAG,IAAI;QAC7B;MACF;QAAS;UAAA,IAAAC,qBAAA;UACP,IAAMC,KAAK,GAAIL,MAAM,CAACK,KAAK,GAAGN,OAAO,CAACM,KAAM;UAC5C,IAAMC,cAAc,GAAAC,aAAA,CAAAA,aAAA,KACfX,eAAe;YAClBY,KAAK,EAAET,OAAO,CAACS;UAAK,EACrB;UACDF,cAAc,CAACG,QAAQ,CAACC,MAAM,CAACL,KAAK,CAACM,OAAO,EAAEL,cAAc,CAAC;UAC7DA,cAAc,CAACM,0BAA0B,CAACC,IAAI,CAC5CvC,KAAK,aAALA,KAAK,wBAAA8B,qBAAA,GAAL9B,KAAK,CAAEwC,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBW,kCAAkC,CACzDV,KAAK,EACJW,KAAK,IAAKrD,qBAAqB,CAACqD,KAAK,EAAEV,cAAc,CACxD,CACF,CAAC;;UAED;UACA;UACA,IAAM;YAAEW;UAAc,CAAC,GAAGZ,KAAqC;UAC/D,IAAIa,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;YAChCjB,MAAM,CAACC,YAAY,CAACY,IAAI,CACtBzD,sBAAsB,CAAC6D,aAAa,EAAE5C,gBAAgB,CAAC,CAAC,CAC1D,CAAC;UACH;UAEA,QAAQgC,KAAK,CAACe,IAAI;YAChB,KAAK,UAAU;cAAE;gBACf,IAAIC,UAAmB;gBACvB,IAAI,OAAOhB,KAAK,CAACiB,QAAQ,KAAK,QAAQ,EAAE;kBACtCD,UAAU,SAAS1D,qBAAqB,CACtC0C,KAAK,CAACiB,QAAQ,EACdhB,cACF,CAAC;gBACH,CAAC,MAAM;kBACL,IAAMiB,QAAQ,SAAU7D,WAAW,CAAA6C,aAAA;oBAE/BiB,SAAS,EAAE;kBAAU,GAClBnB,KAAK,CAACiB,QAAQ,GAEnBhB,cACF,CAA4B;kBAC5Be,UAAU,GAAGE,QAAQ,CAACD,QAAQ;gBAChC;gBACA,IAAI,OAAOD,UAAU,KAAK,QAAQ,EAAE;kBAClC;kBACAI,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEL,UAAU,CAAC;kBACxD,MAAM,IAAIM,KAAK,wCAAAC,MAAA,CAC0B,OAAOP,UAAU,CAC1D,CAAC;gBACH;gBACArB,MAAM,CAACsB,QAAQ,GAAG;kBAAEO,IAAI,EAAER;gBAAW,CAAC;gBACtC;cACF;YACA,KAAK,QAAQ;cAAE;gBACbrB,MAAM,CAACE,YAAY,CAACW,IAAI,CAACiB,QAAQ,CAACzB,KAAK,CAAC0B,IAAI,EAAEzB,cAAc,CAAC,CAAC;gBAC9D,IAAM0B,SAAS,SAAShD,YAAY,CAClCU,UAAU,EACVW,KAAK,CAACV,MAAM,EACZW,cAAc,EACdT,eAAe,EACfC,MACF,CAAC;gBACDmC,iBAAiB,CAACjC,MAAM,EAAEgC,SAAS,CAAC;gBACpC;cACF;YACA;cAAS;gBACPhC,MAAM,CAACE,YAAY,CAACW,IAAI,CAACiB,QAAQ,CAACzB,KAAK,CAAC0B,IAAI,EAAEzB,cAAc,CAAC,CAAC;gBAC9D,IAAM0B,UAAS,SAASE,YAAY,CAClCxC,UAAU,EACVW,KAAK,CAAC8B,MAAM,EACZ7B,cAAc,EACdT,eAAe,EACfC,MACF,CAAC;gBACDmC,iBAAiB,CAACjC,MAAM,EAAEgC,UAAS,CAAC;cACtC;UACF;QACF;IACF;IACA,OAAOhC,MAAM;EACf,CAAC;EAAA,OAAAV,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,gBAAsB0C,YAAYA,CAAAE,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,aAAA,CAAApD,KAAA,OAAAC,SAAA;AAAA;AAqCjC,SAAAmD,cAAA;EAAAA,aAAA,GAAAlD,iBAAA,CArCM,WACLC,UAAsB,EACtByC,MAAmB,EACnB7B,cAA8B,EAC9BT,eAAgC,EAChCC,MAAe,EACf8C,QAA8B,EAC9BC,SAAmB,EACI;IACvB,IAAM7C,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IACD;IACA,IAAM4C,QAAQ,SAASC,OAAO,CAACC,GAAG,CAChCb,MAAM,CAACc,GAAG,CAAC,CAACC,SAAS,EAAEC,KAAK,KAC1BC,WAAW,CACT1D,UAAU,EACVwD,SAAS,EACT5C,cAAc,EACdT,eAAe,EACfC,MAAM,EACNqD,KAAK,EACLP,QAAQ,IAAI,IAAIS,GAAG,CAACT,QAAQ,CAC9B,CACF,CACF,CAAC;IAEDE,QAAQ,CAACQ,OAAO,CAAC,CAACC,IAAI,EAAEJ,KAAK,KAAK;MAChC,IAAI,CAACN,SAAS,IAAIU,IAAI,CAACC,mBAAmB,EAAE;QAC1C;QACA3D,eAAe,CAAC4D,kBAAkB,CAAC3D,MAAM,EAAEqD,KAAK,EAAEI,IAAI,CAACG,IAAI,EAAEhE,UAAU,CAAC;MAC1E;MACAuC,iBAAiB,CAACjC,MAAM,EAAEuD,IAAI,CAAC;IACjC,CAAC,CAAC;IAEF,OAAOvD,MAAM;EACf,CAAC;EAAA,OAAA2C,aAAA,CAAApD,KAAA,OAAAC,SAAA;AAAA;AAED,gBAAsB4D,WAAWA,CAAAO,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,YAAA,CAAA1E,KAAA,OAAAC,SAAA;AAAA;AAuYhC,SAAAyE,aAAA;EAAAA,YAAA,GAAAxE,iBAAA,CAvYM,WACLC,UAAsB,EACtBwD,SAAsC,EACtCtD,eAA+B,EAC/BC,eAAgC,EAChCC,MAAe,EACfoE,GAAY,EAEW;IAAA,IAAAC,sBAAA,EAAAC,mBAAA;IAAA,IADvBxB,QAAQ,GAAApD,SAAA,CAAA6E,MAAA,QAAA7E,SAAA,QAAA8E,SAAA,GAAA9E,SAAA,MAAG,IAAI6D,GAAG,CAAiB,CAAC;IAEpC,IAAMrD,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IAED,IAAI,CAACgD,SAAS,CAACqB,KAAK,EAAE;MACpB,IAAKrB,SAAS,CAA2BsB,QAAQ,EAAE;QACjD;QACA/C,OAAO,CAACC,KAAK,CAAC,qCAAqC,EAAEwB,SAAS,CAAC;MACjE,CAAC,MAAM;QACL;QACAzB,OAAO,CAACC,KAAK,CAAC,gBAAgB,EAAEwB,SAAS,CAAC;MAC5C;MACA,OAAOlD,MAAM;IACf;;IAEA;IACA;IACA,IAAM;QAAEyE,EAAE,EAAEC,OAAO;QAAEC;MAAsC,CAAC,GAAGzB,SAAS;MAA3B0B,aAAa,GAAAC,wBAAA,CAAK3B,SAAS,EAAA4B,UAAA;IACxE,IAAIC,qBAAqB,CAACL,OAAO,CAAC,EAAE;MAClC,OAAOtB,WAAW,CAChB1D,UAAU,EAAAa,aAAA;QAERgE,KAAK,EAAE,KAAK;QACZS,UAAU,EAAEN,OAAO;QACnB;QACAC,mBAAmB;QACnBM,KAAK,EAAE;UACL,EAAE,EAAE;YACF7D,IAAI,EAAE,QAAQ;YACde,MAAM,EAAE,CAACyC,aAAa;UACxB;QACF;MAAC,GAEEM,MAAM,CAACC,qBAAqB,CAACjC,SAAS,CAAC,CAACkC,MAAM,CAC/C,CAACC,GAAG,EAAEC,MAAM,KAAA/E,aAAA,CAAAA,aAAA,KACP8E,GAAG;QACN,CAACC,MAAM,GAAIpC,SAAS,CAASoC,MAAM;MAAC,EACpC,EACF,CAAC,CACH,CAAC,GAEH1F,eAAe,EACfC,eAAe,EACfC,MAAM,EACNoE,GAAG,EACHtB,QACF,CAAC;IACH;IAEA,IAAM2C,eAAe,GAAGrC,SAAS,CAAClF,wBAAwB,CAAC;IAC3D,IAAMwH,gBAAgB,GAAGtC,SAAS,CAACtE,yBAAyB,CAAC;IAC7D,IAAM0B,cAAc,GAAAC,aAAA,CAAAA,aAAA,KACfX,eAAe;MAClB2F,eAAe;MACfC;IAAgB,EACjB;IAED,IAAIlI,cAAc,CAAC4F,SAAS,EAAEnF,+BAA+B,CAAC,EAAE;MAC9D;MACA;MACAuC,cAAc,CAACmF,WAAW,GAAGvC,SAAS,CAACnF,+BAA+B,CAAC;IACzE;IAEA,IAAM;MAAE4C;IAAQ,CAAC,GAAGuC,SAAwC;IAC5D;IACA,IAAIhC,KAAK,CAACC,OAAO,CAACR,OAAO,CAAC,IAAIA,OAAO,CAAC0D,MAAM,GAAG,CAAC,EAAE;MAChD,IAAMqB,MAAM,GAAGjH,YAAY,CAAC6B,cAAc,CAAC;MAC3C5B,mBAAmB,CACjBgH,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnBxC,SACF,CAAC;MACD,IAAI,CAACwC,MAAM,EAAE;QACXpF,cAAc,CAACG,QAAQ,CAACC,MAAM,CAACC,OAAO,EAAEL,cAAc,CAAC;MACzD;IACF;IAEAA,cAAc,CAACM,0BAA0B,CAACC,IAAI,CAC5CvC,KAAK,aAALA,KAAK,wBAAA6F,sBAAA,GAAL7F,KAAK,CAAEwC,gBAAgB,cAAAqD,sBAAA,uBAAvBA,sBAAA,CAAyBpD,kCAAkC,CACzDmC,SAAS,EACRlC,KAAK,IAAKrD,qBAAqB,CAACqD,KAAK,EAAEV,cAAc,CACxD,CACF,CAAC;IAED,IAAI,QAAQ9C,iBAAiB,CAAC0F,SAAS,EAAE5C,cAAc,CAAC,CAAC,EAAE;MACzD,OAAON,MAAM;IACf;IAEA,IAAM2F,SAAS,GAAGzC,SAAS,CAACqB,KAAK;IACjC,IAAIoB,SAAS,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;MAC7BC,uBAAuB,CAACF,SAAS,CAAC;MAElC,IAAM;QAAEX;MAAW,CAAC,GAAG9B,SAAS;MAEhC,IAAM4C,iBAAiB;QAAA,IAAAC,IAAA,GAAAtG,iBAAA,CAAG,aAAY;UAAA,IAAAuG,WAAA;UACpC;UACA,IAAMC,kBAAkB,SAAStI,qBAAqB,CACpDqH,UAAU,EACV1E,cACF,CAAC;;UAED;UACA,IAAM4F,IAAI,GACRP,SAAS,KAAK,UAAU,GACpB,EAAE,GACFA,SAAS,KAAK,SAAS,GACvBQ,MAAM,CAACF,kBAAkB,CAAC,GAC1BA,kBAAkB,GAClB,EAAE,GACF,MAAM;;UAEZ;UACA,IAAMhB,KAAK,GAAGmB,eAAe,CAAClD,SAAS,CAACmD,QAAQ,EAAEnD,SAAS,CAAC+B,KAAK,CAAC;;UAElE;UACA,IAAM9C,MAAM,GACV8C,KAAK,IACL3H,cAAc,CAAC2H,KAAK,EAAEiB,IAAI,CAAC,MAAAF,WAAA,GAC1Bf,KAAK,CAACiB,IAAI,CAAC,cAAAF,WAAA,uBAAZA,WAAA,CAAmC7D,MAAM;UAE3C,IAAI,CAACjB,KAAK,CAACC,OAAO,CAACgB,MAAM,CAAC,EAAE;YAC1B,OAAOnC,MAAM;UACf;UAEA,QAAQ2F,SAAS;YACf,KAAK,UAAU;cAAE;gBACf,IAAI,CAACzE,KAAK,CAACC,OAAO,CAAC8E,kBAAkB,CAAC,EAAE;kBACtC,OAAOjG,MAAM;gBACf;gBACA,OAAOsG,aAAa,CAClB5G,UAAU,EACVuG,kBAAkB,EAClB9D,MAAM,EACN7B,cAAc,EACdT,eAAe,EACfC,MAAM,EACN8C,QACF,CAAC;cACH;YACA,KAAK,KAAK;YACV,KAAK,SAAS;cAAE;gBACd,OAAOV,YAAY,CACjBxC,UAAU,EACVyC,MAAM,EACN7B,cAAc,EACdT,eAAe,EACfC,MAAM,EACN8C,QAAQ,EACR,IACF,CAAC;cACH;UACF;QACF,CAAC;QAAA,gBA1DKkD,iBAAiBA,CAAA;UAAA,OAAAC,IAAA,CAAAxG,KAAA,OAAAC,SAAA;QAAA;MAAA,GA0DtB;MAED,IAAM+G,gBAAgB,SAAST,iBAAiB,CAAC,CAAC;MAElD,IAAM;QAAEU,YAAY;QAAEC;MAAW,CAAC,GAAGjI,SAAS,CAACwG,UAAU,CAAC;MAC1D,IAAIwB,YAAY,IAAIC,UAAU,EAAE;QAC9BF,gBAAgB,CAAC/C,mBAAmB,GAAG,IAAI;QAC3C,IAAIkD,QAAQ,GAAG,CAAC;QAChB,IAAMC,QAAQ;UAAA,IAAAC,KAAA,GAAAnH,iBAAA,CAAG,aAAY;YAC3B,IAAMoH,eAAe,GAAG,EAAEH,QAAQ;YAClC,IAAM1G,MAAM,SAAS8F,iBAAiB,CAAC,CAAC;YACxC9F,MAAM,CAACC,YAAY,CAACY,IAAI,CACtB,GAAG,CACD,GAAGP,cAAc,CAACwG,gBAAgB,CAACC,MAAM,CAAC,CAAC,EAC3C,GAAGzG,cAAc,CAAC0G,iBAAiB,CAACD,MAAM,CAAC,CAAC,CAC7C,CAAC9D,GAAG,CAAEgE,KAAK,IAAKA,KAAK,CAACC,UAAU,CAAC,CAAC,CAAC,EACpC,GAAG5G,cAAc,CAACM,0BACpB,CAAC;YACD,MAAMmC,OAAO,CAACC,GAAG,CAAChD,MAAM,CAACC,YAAY,CAAC;YACtC;YACA,IAAIyG,QAAQ,KAAKG,eAAe,EAAE;cAChChH,eAAe,CAACsH,mBAAmB,CACjCrH,MAAM,EACNoE,GAAG,EACHlE,MAAM,CAAC0D,IAAI,EACXhE,UACF,CAAC;YACH;UACF,CAAC;UAAA,gBApBKiH,QAAQA,CAAA;YAAA,OAAAC,KAAA,CAAArH,KAAA,OAAAC,SAAA;UAAA;QAAA,GAoBb;QACD,IAAM4H,iBAAiB,GAAG7J,QAAQ,CAACoJ,QAAQ,CAAC;QAC5C,IAAIH,YAAY,EAAE;UAChB,KAAK,IAAMa,WAAW,IAAIb,YAAY,EAAE;YACtClG,cAAc,CAACG,QAAQ,CAAC6G,QAAQ,CAACD,WAAW,EAAED,iBAAiB,CAAC;UAClE;QACF;QACA,IAAIX,UAAU,EAAE;UACd,KAAK,IAAMY,YAAW,IAAIZ,UAAU,EAAE;YACpC,IAAMc,aAAa,GAAGpJ,gBAAgB,CACpCmC,cAAc,EACd,OAAO,SAAAsB,MAAA,CACDoD,UAAU,OAClB,CAAC;YACDuC,aAAa,CAACD,QAAQ,CAACD,YAAW,EAAED,iBAAiB,CAAC;UACxD;QACF;MACF;MAEA,OAAOb,gBAAgB;IACzB;;IAEA;IACA,IAAI,QAAQ,CAACiB,IAAI,CAAC7B,SAAS,CAAC,IAAI,CAACvH,eAAe,CAACqJ,GAAG,CAAC9B,SAAS,CAAC,EAAE;MAC/D,MAAM+B,cAAc,CAClBtK,sBAAsB,CAAC,CAACuI,SAAS,CAAC,EAAEtH,gBAAgB,CAAC,CAAC,CAAC,EACvDsH,SAAS,EACT9F,eAAe,CAAC8H,aAClB,CAAC;IACH;IAEA,IAAMC,UAAU,GAAG1J,0BAA0B,CAC3CyH,SAAS,GAAAvB,mBAAA,GACT9D,cAAc,CAACuH,GAAG,cAAAzD,mBAAA,uBAAlBA,mBAAA,CAAoB0D,EACtB,CAAC;IAED,IAAIF,UAAU,EAAE;MAAA,IAAAG,aAAA;MACd,IAAMC,QAAQ,IAAAD,aAAA,GAAGnF,QAAQ,CAAC6E,GAAG,CAACG,UAAU,CAAC,cAAAG,aAAA,cAAAA,aAAA,GAAI,CAAC;MAC9C,IAAIC,QAAQ,IAAI,EAAE,EAAE;QAClB,MAAM,IAAIrG,KAAK,gDAAAC,MAAA,CACiCgG,UAAU,OAC1D,CAAC;MACH;MACAhF,QAAQ,CAACqF,GAAG,CAACL,UAAU,EAAEI,QAAQ,GAAG,CAAC,CAAC;IACxC,CAAC,MAAM,IAAIrC,SAAS,CAACuC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACC,cAAc,CAACV,GAAG,CAAC9B,SAAS,CAAC,EAAE;MACpE,IAAIA,SAAS,KAAKhH,aAAa,EAAE;QAC/BwJ,cAAc,CAACzH,MAAM,CACnB/B,aAAa,EACb,MAAMyJ,mBAAmB,SAASC,WAAW,CAAC;UAC5C,IAAIC,QAAQA,CAAA,EAAW;YACrB,OAAO,eAAe;UACxB;QACF,CACF,CAAC;MACH,CAAC,MAAM;QACLtI,MAAM,CAACC,YAAY,CAACY,IAAI,CACtB6G,cAAc,CACZvK,uBAAuB,CAAC,CAACwI,SAAS,CAAC,EAAEtH,gBAAgB,CAAC,CAAC,CAAC,EACxDsH,SAAS,EACT9F,eAAe,CAAC8H,aAClB,CACF,CAAC;MACH;IACF;IAEA,IAAMpD,KAAkB,GAAG;MACzBgE,GAAG,EAAEhK,SAAS,CAACiK,KAAK;MACpBpH,IAAI,EAAEwG,UAAU,IAAIjC,SAAS;MAC7B8C,MAAM,EAAE/I,UAAU;MAClBI,MAAM;MACN4I,MAAM,EAAExF,SAAS,CAACwF,MAAM;MACxBpI,cAAc;MACdqI,MAAM,EAAEzF,SAAS,CAACyF,MAAM;MACxBC,GAAG,EAAE1F,SAAS,CAAC0F,GAAG;MAClBC,GAAG,EAAG3F,SAAS,CAAyB2F;IAC1C,CAAC;IAED7I,MAAM,CAAC0D,IAAI,GAAGa,KAAK;;IAEnB;IACA,IAAIuE,QAAiB;IACrB,IAAIC,SAA8C;IAClD,IAAIpD,SAAS,KAAKhH,aAAa,EAAE;MAAA,IAAAqK,qBAAA;MAAA,IAAAC,KAAA,IAAAD,qBAAA,GACD9F,SAAS,CAACgG,UAAU,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;MAAA,CAAvD;QAAEF;MAAuB,CAAC,GAAAG,KAA6B;MAAxCF,SAAS,GAAAlE,wBAAA,CAAAoE,KAAA,EAAAE,UAAA;MAAAF,KAAA;IAC3B,CAAC,MAAM;MACLF,SAAS,GAAG7F,SAAS,CAACgG,UAAU;IAClC;;IAEA;IACA,IAAMjJ,YAAgC,GAAG,EAAE;IAE3C,IAAMmJ,mBAA0C,GAAG,EAAE;IACrD,IAAMC,cAAc;MAAA,IAAAC,KAAA,GAAA7J,iBAAA,CAAG,aAAY;QACjC8E,KAAK,CAAC2E,UAAU,SAASzL,0BAA0B,CACjDsL,SAAS,EACTzI,cAAc,EACd8I,mBACF,CAAC;QACD,IAAMG,qBAAqB,GACzBrG,SAAS,CAACpF,mCAAmC,CAAC;QAChD,IAAIyL,qBAAqB,EAAE;UAAA,IAAAC,iBAAA;UACzB,CAAAA,iBAAA,GAAAjF,KAAK,CAAC2E,UAAU,cAAAM,iBAAA,cAAAA,iBAAA,GAAhBjF,KAAK,CAAC2E,UAAU,GAAK,CAAC,CAAC;UACvB,IAAMO,QAAQ,SAASF,qBAAqB;UAC5C,KAAK,IAAM,CAACG,QAAQ,EAAEC,SAAS,CAAC,IAAIzE,MAAM,CAAC0E,OAAO,CAACH,QAAQ,CAAC,EAAE;YAC5DlF,KAAK,CAAC2E,UAAU,CAACQ,QAAQ,CAAC,GAAGC,SAAS;UACxC;QACF;QACA/L,uBAAuB,CAAC2G,KAAK,EAAE6E,mBAAmB,CAAC;QACnD,OAAO7E,KAAK,CAAC2E,UAAU;MACzB,CAAC;MAAA,gBAjBKG,cAAcA,CAAA;QAAA,OAAAC,KAAA,CAAA/J,KAAA,OAAAC,SAAA;MAAA;IAAA,GAiBnB;IACD,IAAMqK,eAAe,GAAGR,cAAc,CAAC,CAAC;IACxCpJ,YAAY,CAACY,IAAI,CAACgJ,eAAe,CAAC;IAElChK,eAAe,CAACiK,sBAAsB,CAACvF,KAAK,EAAErB,SAAS,CAAC6G,SAAS,CAAC;IAElE,IAAIC,iBAAiB,GAAG9G,SAAS;IACjC,IAAI0E,UAAU,EAAE;MACdoC,iBAAiB,GAAG/L,oBAAoB,CACtC2J,UAAU,EACV1E,SAAS,EACTqB,KAAK,EACLsF,eAAe,EACfhK,eACF,CAAC;IACH,CAAC,MAAM,IAAI8F,SAAS,KAAKhH,aAAa,EAAE;MACtCqL,iBAAiB,GAAGnL,kBAAkB,CACpCiK,QAAQ,EACR5F,SAAS,EACTqB,KAAK,EACLsF,eAAe,EACfhK,eACF,CAAC;IACH;IAEA,IAAImK,iBAAiB,CAACrB,MAAM,EAAE;MAC5B;MACApE,KAAK,CAACzE,MAAM,GAAGwE,SAAS;IAC1B;IAEA,IAAI2F,mBAAmC;IACvC,IAAIrC,UAAU,EAAE;MACd;MACAqC,mBAAmB,GAAA1J,aAAA,KACdD,cAAc,CAClB;MACD,OAAO2J,mBAAmB,CAACxE,WAAW;IACxC,CAAC,MAAM;MACLwE,mBAAmB,GAAG3J,cAAc;IACtC;IAEA,IAAM4J,YAAY;MAAA,IAAAC,KAAA,GAAA1K,iBAAA,CAAG,aAAY;QAC/B,IAAMwF,KAAK,GAAGmB,eAAe,CAC3B4D,iBAAiB,CAAC3D,QAAQ,EAC1B2D,iBAAiB,CAAC/E,KACpB,CAAC;QACD,IAAI,CAACA,KAAK,EAAE;UACV;QACF;QACA,IAAMnC,QAAQ,SAASC,OAAO,CAACC,GAAG,CAChCkC,MAAM,CAAC0E,OAAO,CAAC3E,KAAK,CAAC,CAAChC,GAAG,CAACmH,KAAA;UAAA,IAAC,CAACC,WAAW,EAAEC,QAAQ,CAAC,GAAAF,KAAA;UAAA,OAChDE,QAAQ,CAAClJ,IAAI,KAAK,QAAQ,GACtBc,YAAY,CACVqC,KAAK,EACJ+F,QAAQ,CAAsBnI,MAAM,EACrC8H,mBAAmB,EACnBpK,eAAe,EACfwK,WAAW,EACXzH,QACF,CAAC,GACD5D,YAAY,CACVuF,KAAK,EACL+F,QAAQ,CAAC3K,MAAM,EACfsK,mBAAmB,EACnBpK,eAAe,EACfwK,WACF,CAAC;QAAA,CACP,CACF,CAAC;QAED,IAAME,cAA4B,GAAAhK,aAAA,CAAAA,aAAA,KAC7BP,MAAM;UACT0D,IAAI,EAAEY,SAAS;UACfrE,YAAY,EAAE;QAAE,EACjB;QACD,KAAK,IAAMsD,IAAI,IAAIT,QAAQ,EAAE;UAC3Bb,iBAAiB,CAACsI,cAAc,EAAEhH,IAAI,CAAC;QACzC;QACA,IAAIgH,cAAc,CAAC7G,IAAI,EAAE;UACvBa,KAAK,CAACiG,KAAK,GAAGD,cAAc,CAAC7G,IAAI;QACnC;QACAzB,iBAAiB,CAACjC,MAAM,EAAAO,aAAA,CAAAA,aAAA,KACnBgK,cAAc;UACjB7G,IAAI,EAAEY;QAAS,EAChB,CAAC;MACJ,CAAC;MAAA,gBA5CK4F,YAAYA,CAAA;QAAA,OAAAC,KAAA,CAAA5K,KAAA,OAAAC,SAAA;MAAA;IAAA,GA4CjB;IACDS,YAAY,CAACY,IAAI,CAACqJ,YAAY,CAAC,CAAC,CAAC;IAEjC,MAAMnH,OAAO,CAACC,GAAG,CAAC/C,YAAY,CAAC;IAE/B,OAAOD,MAAM;EACf,CAAC;EAAA,OAAAiE,YAAA,CAAA1E,KAAA,OAAAC,SAAA;AAAA;AAED,SAASuF,qBAAqBA,CAACL,OAAgB,EAAW;EACxD,OAAO,OAAOA,OAAO,KAAK,QAAQ,GAC9BrH,UAAU,CAACqH,OAAO,CAAC,GACnB5F,cAAc,CAAC4F,OAAO,CAAC;EACrB;EACArH,UAAU,CAAC0B,kBAAkB,CAAC2F,OAAO,CAAC,CAAC;AAC/C;AAIA,SAASmB,uBAAuBA,CAC9BtB,KAAa,EACuB;EACpC,IAAIA,KAAK,KAAK,UAAU,IAAIA,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,SAAS,EAAE;IAClE,MAAM,IAAI5C,KAAK,uCAAAC,MAAA,CAAsC2C,KAAK,OAAG,CAAC;EAChE;AACF;AAAC,SAEc+B,aAAaA,CAAAmE,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,cAAA,CAAAzL,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAwL,eAAA;EAAAA,cAAA,GAAAvL,iBAAA,CAA5B,WACEC,UAAsB,EACtBsF,UAAqB,EACrB7C,MAAmB,EACnB7B,cAA8B,EAC9BT,eAAgC,EAChCC,MAA0B,EAC1B8C,QAA8B,EACP;IACvB,IAAM5C,MAAoB,GAAG;MAC3BC,YAAY,EAAE,EAAE;MAChBC,YAAY,EAAE;IAChB,CAAC;IAED,IAAM4C,QAAQ,SAASC,OAAO,CAACC,GAAG,CAChCgC,UAAU,CAAC/B,GAAG,CAAC,CAACM,IAAI,EAAE0H,CAAC,KACrBlI,OAAO,CAACC,GAAG,CACTb,MAAM,CAACc,GAAG,CAAC,CAACC,SAAS,EAAEgI,CAAC,KACtB9H,WAAW,CACT1D,UAAU,EACVwD,SAAS,EAAA3C,aAAA,CAAAA,aAAA,KAEJD,cAAc;MACjBmF,WAAW,EAAElC;IAAI,IAEnB1D,eAAe,EACfC,MAAM,EACNmL,CAAC,GAAGC,CAAC,EACLtI,QAAQ,IAAI,IAAIS,GAAG,CAACT,QAAQ,CAC9B,CACF,CACF,CACF,CACF,CAAC;;IAED;IACA,KAAK,IAAMW,IAAI,IAAIT,QAAQ,CAACqI,IAAI,CAAC,CAAC,EAAE;MAClClJ,iBAAiB,CAACjC,MAAM,EAAEuD,IAAI,CAAC;IACjC;IACA,OAAOvD,MAAM;EACf,CAAC;EAAA,OAAAgL,cAAA,CAAAzL,KAAA,OAAAC,SAAA;AAAA;AAED,SAASsC,QAAQA,CACfsJ,QAA8B,EAC9B9K,cAA8B,EAC9B;EACA,IAAI,CAAC8K,QAAQ,EAAE;IACb;EACF;;EAEA;EACA,IAAKA,QAAQ,CAAwBhK,IAAI,KAAK,OAAO,EAAE;IACrD;IACAK,OAAO,CAACC,KAAK,CAAC,uCAAuC,EAAE0J,QAAQ,CAAC;IAChE,MAAM,IAAIzJ,KAAK,CAAC,sCAAsC,CAAC;EACzD;;EAEA;EACA,IAAIyJ,QAAQ,CAAChK,IAAI,KAAK,SAAS,EAAE;IAC/B;IACAK,OAAO,CAAC4J,IAAI,CAAC,mDAAmD,EAAED,QAAQ,CAAC;IAC3E;EACF;EAEA,OAAOzN,qBAAqB,CAC1ByN,QAAQ,EACR9K,cACF,CAAC;AACH;AAEA,SAAS2B,iBAAiBA,CACxBjC,MAAoB,EACpBgC,SAAuB,EACjB;EACN,IAAM;MAAE/B,YAAY;MAAEyD,IAAI;MAAExD,YAAY;MAAEsD;IAA6B,CAAC,GACtExB,SAAS;IADuDsJ,IAAI,GAAAzG,wBAAA,CACpE7C,SAAS,EAAAuJ,SAAA;EACXvL,MAAM,CAACC,YAAY,CAACY,IAAI,CAAC,GAAGZ,YAAY,CAAC;EACzCD,MAAM,CAACE,YAAY,CAACW,IAAI,CAAC,GAAGX,YAAY,CAAC;EAEzC,IAAIwD,IAAI,EAAE;IACR,IAAI1D,MAAM,CAAC0D,IAAI,EAAE;MACf,IAAI8H,IAAI,GAAGxL,MAAM,CAAC0D,IAAI;MACtB,OAAO8H,IAAI,CAACC,OAAO,EAAE;QACnBD,IAAI,GAAGA,IAAI,CAACC,OAAO;MACrB;MACAD,IAAI,CAACC,OAAO,GAAG/H,IAAI;IACrB,CAAC,MAAM;MACL1D,MAAM,CAAC0D,IAAI,GAAGA,IAAI;IACpB;EACF;EAEAwB,MAAM,CAACwG,MAAM,CAAC1L,MAAM,EAAEsL,IAAI,CAAC;AAC7B;AAEA,OAAO,SAASlF,eAAeA,CAC7BC,QAAiC,EACjCsF,aAAoC,EACpC;EACA,IAAIC,QAAQ,GAAGD,aAAa;EAC5B;EACA,IACEE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IACtC1F,QAAQ,IACR,CAACnF,KAAK,CAACC,OAAO,CAACkF,QAAQ,CAAC,EACxB;IACA;IACA5E,OAAO,CAAC4J,IAAI,CACV,yCAAyC,MAAAzJ,MAAA,CACrC,OAAOyE,QAAQ,QACnBA,QACF,CAAC;EACH;EACA,IAAInF,KAAK,CAACC,OAAO,CAACkF,QAAQ,CAAC,IAAI,CAACuF,QAAQ,EAAE;IACxCA,QAAQ,GAAG,CAAC,CAAC;IACb,KAAK,IAAMpB,KAAK,IAAInE,QAAQ,EAAE;MAAA,IAAA2F,WAAA;MAC5B,IAAM9F,IAAI,IAAA8F,WAAA,GAAGxB,KAAK,CAACtE,IAAI,cAAA8F,WAAA,cAAAA,WAAA,GAAI,EAAE;MAC7B,IAAI,CAAC1O,cAAc,CAACsO,QAAQ,EAAE1F,IAAI,CAAC,EAAE;QACnC0F,QAAQ,CAAC1F,IAAI,CAAC,GAAG;UACf9E,IAAI,EAAE,QAAQ;UACde,MAAM,EAAE;QACV,CAAC;MACH;MACCyJ,QAAQ,CAAC1F,IAAI,CAAC,CAAsB/D,MAAM,CAACtB,IAAI,CAAC2J,KAAK,CAAC;IACzD;EACF;EACA,OAAOoB,QAAQ;AACjB;AAEA,SAASlE,cAAcA,CACrBuE,OAAyB,EACzBtG,SAAiB,EACjBgC,aAA+C,EAC/C;EACA,OAAOA,aAAa,KAAK,QAAQ,GAC7BsE,OAAO,CAACC,KAAK,CAAEC,CAAC,IAAK;IACnB;IACA1K,OAAO,CAACC,KAAK,iBAAAE,MAAA,CAAgB+D,SAAS,iBAAawG,CAAC,CAAC;EACvD,CAAC,CAAC,GACFF,OAAO;AACb"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealProperties","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_hooks$checkPermissio2","_runtimeContext$app","length","undefined","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoadBrick","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","tag","BRICK","return","events","portal","iid","ref","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncProperties","loadProperties","_ref4","computedPropsFromHost","computed","propName","propValue","entries","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","_ref6","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealProperties,\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 { matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\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\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: (Promise<StaticMenuConf | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\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 const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n }\n }\n }\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n key?: number,\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\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 slotId,\n key,\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`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\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 renderControlNode = async () => {\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 output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n brickName,\n rendererContext.unknownBricks\n )\n );\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 // const confProps = brickConf.properties;\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncProperties = asyncComputeRealProperties(\n confProps,\n runtimeContext,\n trackingContextList\n );\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncProperties);\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\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 asyncProperties,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncProperties,\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 } 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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 },\n rendererContext,\n slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 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\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
@@ -330,6 +330,7 @@ function _render3() {
330
330
  hooks === null || hooks === void 0 ? void 0 : (_hooks$flowApi2 = hooks.flowApi) === null || _hooks$flowApi2 === void 0 ? void 0 : _hooks$flowApi2.collectContract((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.contracts);
331
331
  var failed = false;
332
332
  var output;
333
+ var stores = [];
333
334
  try {
334
335
  output = yield renderRoutes(renderRoot, insertPreviewRoutes(storyboard.routes), runtimeContext, rendererContext);
335
336
  if (output.unauthenticated) {
@@ -343,7 +344,8 @@ function _render3() {
343
344
  // Reset redirect count if no redirect is set.
344
345
  _classPrivateFieldSet(this, _redirectCount, 0);
345
346
  flushStableLoadBricks();
346
- yield Promise.all([...output.blockingList, ...[runtimeContext.ctxStore, ...runtimeContext.tplStateStoreMap.values(), ...runtimeContext.formStateStoreMap.values()].map(store => store.waitForAll()),
347
+ stores = [runtimeContext.ctxStore, ...runtimeContext.tplStateStoreMap.values(), ...runtimeContext.formStateStoreMap.values()];
348
+ yield Promise.all([...output.blockingList, ...stores.map(store => store.waitForAll()),
347
349
  // Todo: load processors only when they would used in current rendering.
348
350
  // loadProcessorsImperatively(
349
351
  // strictCollectMemberUsage(
@@ -397,6 +399,9 @@ function _render3() {
397
399
  // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md
398
400
  window.scrollTo(0, 0);
399
401
  if (!failed) {
402
+ for (var store of stores) {
403
+ store.handleAsyncAfterMount();
404
+ }
400
405
  rendererContext.dispatchPageLoad();
401
406
  rendererContext.dispatchAnchorLoad();
402
407
  rendererContext.dispatchOnMount();
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","names":["locationsAreEqual","flushStableLoadBricks","HttpAbortError","uniqueId","getHistory","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_classPrivateMethodGet","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","listen","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet3","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","dispatchPageLeave","storyboard","pathname","reload","_queuedRender2","catch","detail","_classPrivateFieldGet4","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x","_queuedRender3","apply","arguments","_asyncToGenerator","_render2","nextLocation","_x2","_render3","_hooks$flowApi","_classPrivateFieldGet5","flowApi","clearCollectWidgetContract","app","appChanged","id","flags","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","theme","dispatchEvent","CustomEvent","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","appId","rendererContext","runtimeContext","query","URLSearchParams","sys","auth","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","meta","functions","collectContract","contracts","failed","output","routes","unauthenticated","redirect","path","Promise","all","blockingList","values","map","store","waitForAll","menuConfs","menuRequests","mergeMenuConfs","NO_AUTH_GUARD","node","BRICK","type","properties","textContent","return","child","route","dispatchBeforePageLoad","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { RenderOutput, renderRoutes } from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n history.listen((location, action) => {\n let ignoreRendering = false;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\"\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext\n );\n if (output.unauthenticated) {\n redirectToLogin();\n return;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n\n flushStableLoadBricks();\n\n await Promise.all([\n ...output.blockingList,\n ...[\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n // Todo: load processors only when they would used in current rendering.\n // loadProcessorsImperatively(\n // strictCollectMemberUsage(\n // [storyboard.routes, storyboard.meta?.customTemplates],\n // \"PROCESSORS\",\n // 2\n // ),\n // getBrickPackages()\n // ),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n const menuConfs = await Promise.all(output.menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: renderRoot,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: (StaticMenuConf | undefined)[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n if (menuConf) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Router.js","names":["locationsAreEqual","flushStableLoadBricks","HttpAbortError","uniqueId","getHistory","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_getBlockMessageBeforePageLave","WeakSet","_safeRedirect","_queuedRender","_render","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_classPrivateMethodGet","_getBlockMessageBeforePageLave2","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","listen","_classPrivateFieldGet2","_location$state","_classPrivateFieldGet3","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","dispatchPageLeave","storyboard","pathname","reload","_queuedRender2","catch","detail","_classPrivateFieldGet4","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect2","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x","_queuedRender3","apply","arguments","_asyncToGenerator","_render2","nextLocation","_x2","_render3","_hooks$flowApi","_classPrivateFieldGet5","flowApi","clearCollectWidgetContract","app","appChanged","id","flags","getFeatureFlags","prevRendererContext","redirectTo","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","theme","dispatchEvent","CustomEvent","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","appId","rendererContext","runtimeContext","query","URLSearchParams","sys","auth","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","meta","functions","collectContract","contracts","failed","output","stores","routes","unauthenticated","redirect","path","values","Promise","all","blockingList","map","store","waitForAll","menuConfs","menuRequests","mergeMenuConfs","NO_AUTH_GUARD","node","BRICK","type","properties","textContent","return","child","route","dispatchBeforePageLoad","scrollTo","handleAsyncAfterMount","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport { RenderOutput, renderRoutes } from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type { RenderBrick, RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n history.listen((location, action) => {\n let ignoreRendering = false;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n // devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n this.#renderId = uniqueId(\"render-id-1\");\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n const currentApp = (this.#currentApp = storyboard?.app);\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\"\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext\n );\n if (output.unauthenticated) {\n redirectToLogin();\n return;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n\n flushStableLoadBricks();\n\n stores = [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n\n await Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n // Todo: load processors only when they would used in current rendering.\n // loadProcessorsImperatively(\n // strictCollectMemberUsage(\n // [storyboard.routes, storyboard.meta?.customTemplates],\n // \"PROCESSORS\",\n // 2\n // ),\n // getBrickPackages()\n // ),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n const menuConfs = await Promise.all(output.menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n failed = true;\n output = {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n runtimeContext: null!,\n return: renderRoot,\n },\n blockingList: [],\n menuRequests: [],\n };\n }\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n for (const store of stores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n }\n}\n\nfunction mergeMenuConfs(menuConfs: (StaticMenuConf | undefined)[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n if (menuConf) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Runtime.js","names":["i18n","initializeI18n","loadBricksImperatively","deepFreeze","isObject","moment","createHistory","matchStoryboard","Router","NS","locales","loadNotificationService","loadDialogService","injectedBrickPackages","runtime","bootstrapData","router","hooks","createRuntime","options","Error","locale","language","on","Runtime","getRuntime","_initialized","WeakMap","_bootstrapped","constructor","_classPrivateFieldInitSpec","writable","value","initialize","data","_data$settings$preset","_data$settings","_classPrivateFieldGet","_classPrivateFieldSet","normalizeBootstrapData","notification","dialog","settings","presetBricks","loadBricks","bootstrap","_this","_asyncToGenerator","storyboards","getRecentApps","_router$getRecentApps","_router","getCurrentApp","_router2","currentApp","getFeatureFlags","_bootstrapData","_bootstrapData$settin","_router3","_router3$getRecentApp","_router3$getRecentApp2","_router3$getRecentApp3","_objectSpread","featureFlags","config","getMiscSettings","_bootstrapData2","_bootstrapData2$setti","_router4","_router4$getRecentApp","_router4$getRecentApp2","_router4$getRecentApp3","misc","getBrandSettings","_bootstrapData3","_bootstrapData3$setti","base_title","brand","getLaunchpadSettings","_bootstrapData4","_bootstrapData4$setti","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData5","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData6","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","baseTitle","title","concat","getNavConfig","_router5","bricks","getBrickPackages","Array","isArray","_loop","app","ns","id","Object","entries","forEach","_ref","lang","resources","addResourceBundle","localeName","getFixedT","name","keys","removeResourceBundle","brickPackages","_bootstrapData$brickP","_bootstrapData7","_internalApiLoadBricks","_internalApiGetRenderId","_router6","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData8","_internalApiGetRuntimeContext","_router7","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","appId","_bootstrapData9","_bootstrapData9$story","find","storyboard","_internalApiGetAppInBootstrapData","_internalApiGetStoryb","_test_only_setBootstrapData","process","env","NODE_ENV"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n Contract,\n Storyboard,\n BrickConf,\n RouteConf,\n ResolveConf,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { deepFreeze, isObject } from \"@next-core/utils/general\";\nimport type { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\nimport { injectedBrickPackages } from \"./injected.js\";\nimport type { AppForCheck } from \"./hasInstalledApp.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\n\nlet runtime: Runtime;\n\n// Allow inject bootstrap data in a runtime other than Brick Next.\nlet bootstrapData: BootstrapData | undefined;\nlet router: Router | undefined;\n\nexport interface RuntimeOptions {\n hooks?: RuntimeHooks;\n}\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport interface RuntimeHooks {\n auth?: {\n getAuth(): object;\n isLoggedIn(): boolean;\n authenticate?(...args: unknown[]): unknown;\n logout?(...args: unknown[]): unknown;\n };\n fulfilStoryboard?: (storyboard: RuntimeStoryboard) => Promise<void>;\n validatePermissions?: typeof PermissionApi_validatePermissions;\n checkPermissions?: {\n checkPermissions(...actions: string[]): boolean;\n preCheckPermissions(storyboard: Storyboard): Promise<void> | undefined;\n preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n ): Promise<void> | undefined;\n };\n checkInstalledApps?: {\n preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n ): void;\n waitForCheckingApps(appIds: string[]): Promise<void>;\n getCheckedApp(appId: string): AppForCheck | undefined;\n };\n flowApi?: {\n FLOW_API_PROVIDER: string;\n registerFlowApiProvider(): void;\n isFlowApiProvider(provider: string): boolean;\n getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string\n ): Promise<unknown[]>;\n collectContract(contracts: Contract[] | undefined): void;\n collectWidgetContract(contracts: Contract[] | undefined): void;\n clearCollectWidgetContract(): void;\n };\n menu?: {\n getMenuById(menuId: string): unknown;\n fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n runtimeHelpers: RuntimeHooksMenuHelpers\n ): Promise<unknown>;\n };\n images?: {\n imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n ): ImagesFactory;\n widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n ): ImagesFactory;\n };\n messageDispatcher?: {\n subscribe(...args: unknown[]): Promise<Event>;\n unsubscribe(...args: unknown[]): Promise<Event>;\n onMessage(channel: string, listener: (data: unknown) => void): void;\n onClose(listener: () => void): void;\n reset(): void;\n };\n}\n\nexport interface RuntimeHooksMenuHelpers {\n getStoryboardByAppId(appId: string): Storyboard | undefined;\n resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext\n ): Promise<unknown>;\n asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n options?: { ignoreSymbols?: boolean; noInject?: boolean }\n ): Promise<unknown>;\n}\n\nexport let hooks: RuntimeHooks | undefined;\n\nexport function createRuntime(options?: RuntimeOptions) {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n hooks = options?.hooks;\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nexport function getRuntime() {\n return runtime;\n}\n\nexport class Runtime {\n #initialized = false;\n #bootstrapped = false;\n\n initialize(data: BootstrapData) {\n if (this.#initialized) {\n throw new Error(\"The runtime cannot be initialized more than once\");\n }\n this.#initialized = true;\n normalizeBootstrapData(data);\n bootstrapData = data;\n const { notification, dialog } = (data.settings?.presetBricks ?? {}) as {\n notification?: string | false;\n dialog?: string | false;\n };\n if (notification !== false) {\n loadNotificationService(\n notification ?? \"basic.show-notification\",\n this.loadBricks\n );\n }\n if (dialog !== false) {\n loadDialogService(dialog ?? \"basic.show-dialog\", this.loadBricks);\n }\n }\n\n async bootstrap(data?: BootstrapData) {\n if (data) {\n this.initialize(data);\n }\n if (this.#bootstrapped) {\n throw new Error(\"The runtime cannot be bootstrapped more than once\");\n }\n this.#bootstrapped = true;\n router = new Router(bootstrapData!.storyboards!);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n document.title = pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle;\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n\n loadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n }\n}\n\nfunction normalizeBootstrapData(data: BootstrapData) {\n if (Array.isArray(data.storyboards)) {\n for (const { app } of data.storyboards) {\n if (app.locales) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const ns = `tmp/${app.id}`;\n // Support any languages in `app.locales`.\n Object.entries(app.locales).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, ns, resources);\n });\n // Use `app.name` as the fallback `app.localeName`.\n app.localeName = i18n.getFixedT(null, ns)(\"name\", app.name) as string;\n // Remove the temporary i18n resource bundles.\n Object.keys(app.locales).forEach((lang) => {\n i18n.removeResourceBundle(lang, ns);\n });\n } else {\n app.localeName = app.name;\n }\n }\n }\n if (isObject(data.settings)) {\n deepFreeze(data.settings);\n }\n if (data.brickPackages) {\n deepFreeze(data.brickPackages);\n }\n}\n\nexport function getBrickPackages() {\n return bootstrapData?.brickPackages ?? injectedBrickPackages;\n}\n\nexport function _internalApiLoadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n\nexport let _test_only_setBootstrapData: (data: BootstrapData) => void;\n\n// istanbul ignore next\nif (process.env.NODE_ENV === \"test\") {\n _test_only_setBootstrapData = (data) => {\n bootstrapData = data as BootstrapData;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Runtime.js","names":["i18n","initializeI18n","loadBricksImperatively","deepFreeze","isObject","moment","createHistory","matchStoryboard","Router","NS","locales","loadNotificationService","loadDialogService","injectedBrickPackages","runtime","bootstrapData","router","hooks","createRuntime","options","Error","locale","language","on","Runtime","getRuntime","_initialized","WeakMap","_bootstrapped","constructor","_classPrivateFieldInitSpec","writable","value","initialize","data","_data$settings$preset","_data$settings","_classPrivateFieldGet","_classPrivateFieldSet","normalizeBootstrapData","notification","dialog","settings","presetBricks","loadBricks","bootstrap","_this","_asyncToGenerator","storyboards","getRecentApps","_router$getRecentApps","_router","getCurrentApp","_router2","currentApp","getFeatureFlags","_bootstrapData","_bootstrapData$settin","_router3","_router3$getRecentApp","_router3$getRecentApp2","_router3$getRecentApp3","_objectSpread","featureFlags","config","getMiscSettings","_bootstrapData2","_bootstrapData2$setti","_router4","_router4$getRecentApp","_router4$getRecentApp2","_router4$getRecentApp3","misc","getBrandSettings","_bootstrapData3","_bootstrapData3$setti","base_title","brand","getLaunchpadSettings","_bootstrapData4","_bootstrapData4$setti","columns","rows","launchpad","getDesktops","_bootstrapData$deskto","_bootstrapData5","desktops","getLaunchpadSiteMap","_bootstrapData$siteSo","_bootstrapData6","siteSort","toggleLaunchpadEffect","open","document","body","classList","toggle","applyPageTitle","pageTitle","baseTitle","title","concat","getNavConfig","_router5","bricks","getBrickPackages","Array","isArray","_loop","app","ns","id","Object","entries","forEach","_ref","lang","resources","addResourceBundle","localeName","getFixedT","name","keys","removeResourceBundle","brickPackages","_bootstrapData$brickP","_bootstrapData7","_internalApiLoadBricks","_internalApiGetRenderId","_router6","getRenderId","_internalApiMatchStoryboard","pathname","_bootstrapData$storyb","_bootstrapData8","_internalApiGetRuntimeContext","_router7","getRuntimeContext","_internalApiGetStoryboardInBootstrapData","appId","_bootstrapData9","_bootstrapData9$story","find","storyboard","_internalApiGetAppInBootstrapData","_internalApiGetStoryb","_test_only_setBootstrapData","process","env","NODE_ENV"],"sources":["../../../src/internal/Runtime.ts"],"sourcesContent":["import type {\n RuntimeStoryboard,\n BootstrapSettings,\n FeatureFlags,\n BootstrapData,\n Contract,\n Storyboard,\n BrickConf,\n RouteConf,\n ResolveConf,\n} from \"@next-core/types\";\nimport { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { loadBricksImperatively } from \"@next-core/loader\";\nimport { deepFreeze, isObject } from \"@next-core/utils/general\";\nimport type { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport moment from \"moment\";\nimport \"moment/locale/zh-cn.js\";\nimport { createHistory } from \"../history.js\";\nimport { matchStoryboard } from \"./matchStoryboard.js\";\nimport { Router } from \"./Router.js\";\nimport { NS, locales } from \"./i18n.js\";\nimport { loadNotificationService } from \"../Notification.js\";\nimport { loadDialogService } from \"../Dialog.js\";\nimport { injectedBrickPackages } from \"./injected.js\";\nimport type { AppForCheck } from \"./hasInstalledApp.js\";\nimport type { RuntimeContext } from \"./interfaces.js\";\n\nlet runtime: Runtime;\n\n// Allow inject bootstrap data in a runtime other than Brick Next.\nlet bootstrapData: BootstrapData | undefined;\nlet router: Router | undefined;\n\nexport interface RuntimeOptions {\n hooks?: RuntimeHooks;\n}\n\nexport interface ImagesFactory {\n get(name: string): string;\n}\n\nexport interface RuntimeHooks {\n auth?: {\n getAuth(): object;\n isLoggedIn(): boolean;\n authenticate?(...args: unknown[]): unknown;\n logout?(...args: unknown[]): unknown;\n };\n fulfilStoryboard?: (storyboard: RuntimeStoryboard) => Promise<void>;\n validatePermissions?: typeof PermissionApi_validatePermissions;\n checkPermissions?: {\n checkPermissions(...actions: string[]): boolean;\n preCheckPermissions(storyboard: Storyboard): Promise<void> | undefined;\n preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n ): Promise<void> | undefined;\n };\n checkInstalledApps?: {\n preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n ): void;\n waitForCheckingApps(appIds: string[]): Promise<void>;\n getCheckedApp(appId: string): AppForCheck | undefined;\n };\n flowApi?: {\n FLOW_API_PROVIDER: string;\n registerFlowApiProvider(): void;\n isFlowApiProvider(provider: string): boolean;\n getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string\n ): Promise<unknown[]>;\n collectContract(contracts: Contract[] | undefined): void;\n collectWidgetContract(contracts: Contract[] | undefined): void;\n clearCollectWidgetContract(): void;\n };\n menu?: {\n getMenuById(menuId: string): unknown;\n fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n runtimeHelpers: RuntimeHooksMenuHelpers\n ): Promise<unknown>;\n };\n images?: {\n imagesFactory(\n appId: string,\n isBuildPush?: boolean,\n version?: string\n ): ImagesFactory;\n widgetImagesFactory(\n widgetId: string,\n widgetVersion?: string\n ): ImagesFactory;\n };\n messageDispatcher?: {\n subscribe(...args: unknown[]): Promise<unknown>;\n unsubscribe(...args: unknown[]): Promise<unknown>;\n onMessage(channel: string, listener: (data: unknown) => void): void;\n onClose(listener: () => void): void;\n reset(): void;\n };\n}\n\nexport interface RuntimeHooksMenuHelpers {\n getStoryboardByAppId(appId: string): Storyboard | undefined;\n resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext\n ): Promise<unknown>;\n asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n options?: { ignoreSymbols?: boolean; noInject?: boolean }\n ): Promise<unknown>;\n}\n\nexport let hooks: RuntimeHooks | undefined;\n\nexport function createRuntime(options?: RuntimeOptions) {\n if (runtime) {\n throw new Error(\"Cannot create multiple runtimes\");\n }\n hooks = options?.hooks;\n initializeI18n(NS, locales);\n moment.locale(i18n.language);\n i18n.on(\"languageChanged\", () => {\n moment.locale(i18n.language);\n });\n createHistory();\n runtime = new Runtime();\n return runtime;\n}\n\nexport function getRuntime() {\n return runtime;\n}\n\nexport class Runtime {\n #initialized = false;\n #bootstrapped = false;\n\n initialize(data: BootstrapData) {\n if (this.#initialized) {\n throw new Error(\"The runtime cannot be initialized more than once\");\n }\n this.#initialized = true;\n normalizeBootstrapData(data);\n bootstrapData = data;\n const { notification, dialog } = (data.settings?.presetBricks ?? {}) as {\n notification?: string | false;\n dialog?: string | false;\n };\n if (notification !== false) {\n loadNotificationService(\n notification ?? \"basic.show-notification\",\n this.loadBricks\n );\n }\n if (dialog !== false) {\n loadDialogService(dialog ?? \"basic.show-dialog\", this.loadBricks);\n }\n }\n\n async bootstrap(data?: BootstrapData) {\n if (data) {\n this.initialize(data);\n }\n if (this.#bootstrapped) {\n throw new Error(\"The runtime cannot be bootstrapped more than once\");\n }\n this.#bootstrapped = true;\n router = new Router(bootstrapData!.storyboards!);\n await router.bootstrap();\n }\n\n getRecentApps() {\n return router?.getRecentApps() ?? {};\n }\n\n getCurrentApp() {\n return router?.getRecentApps().currentApp;\n }\n\n getFeatureFlags(): FeatureFlags {\n return {\n ...bootstrapData?.settings?.featureFlags,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.featureFlags,\n \"migrate-to-brick-next-v3\": true,\n };\n }\n\n getMiscSettings() {\n return {\n ...bootstrapData?.settings?.misc,\n ...(\n router?.getRecentApps().currentApp?.config\n ?.settings as BootstrapSettings\n )?.misc,\n };\n }\n\n getBrandSettings(): Record<string, string> {\n return {\n base_title: \"DevOps 管理专家\",\n ...(bootstrapData?.settings?.brand as Record<string, string>),\n };\n }\n\n getLaunchpadSettings() {\n return {\n columns: 7,\n rows: 4,\n ...bootstrapData?.settings?.launchpad,\n };\n }\n\n getDesktops(): unknown[] {\n return bootstrapData?.desktops ?? [];\n }\n\n getLaunchpadSiteMap(): unknown[] {\n return bootstrapData?.siteSort ?? [];\n }\n\n toggleLaunchpadEffect(open: boolean): void {\n document.body.classList.toggle(\"launchpad-open\", open);\n }\n\n applyPageTitle(pageTitle: string): void {\n const baseTitle = this.getBrandSettings().base_title;\n document.title = pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle;\n }\n\n getNavConfig() {\n return router?.getNavConfig();\n }\n\n loadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n }\n}\n\nfunction normalizeBootstrapData(data: BootstrapData) {\n if (Array.isArray(data.storyboards)) {\n for (const { app } of data.storyboards) {\n if (app.locales) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const ns = `tmp/${app.id}`;\n // Support any languages in `app.locales`.\n Object.entries(app.locales).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, ns, resources);\n });\n // Use `app.name` as the fallback `app.localeName`.\n app.localeName = i18n.getFixedT(null, ns)(\"name\", app.name) as string;\n // Remove the temporary i18n resource bundles.\n Object.keys(app.locales).forEach((lang) => {\n i18n.removeResourceBundle(lang, ns);\n });\n } else {\n app.localeName = app.name;\n }\n }\n }\n if (isObject(data.settings)) {\n deepFreeze(data.settings);\n }\n if (data.brickPackages) {\n deepFreeze(data.brickPackages);\n }\n}\n\nexport function getBrickPackages() {\n return bootstrapData?.brickPackages ?? injectedBrickPackages;\n}\n\nexport function _internalApiLoadBricks(bricks: string[] | Set<string>) {\n return loadBricksImperatively(bricks, getBrickPackages());\n}\n\nexport function _internalApiGetRenderId(): string | undefined {\n return router?.getRenderId();\n}\n\nexport function _internalApiMatchStoryboard(\n pathname: string\n): RuntimeStoryboard | undefined {\n return matchStoryboard(bootstrapData?.storyboards ?? [], pathname);\n}\n\nexport function _internalApiGetRuntimeContext() {\n return router?.getRuntimeContext();\n}\n\nexport function _internalApiGetStoryboardInBootstrapData(appId: string) {\n return bootstrapData?.storyboards?.find(\n (storyboard) => storyboard.app.id === appId\n );\n}\n\nexport function _internalApiGetAppInBootstrapData(appId: string) {\n return _internalApiGetStoryboardInBootstrapData(appId)?.app;\n}\n\nexport let _test_only_setBootstrapData: (data: BootstrapData) => void;\n\n// istanbul ignore next\nif (process.env.NODE_ENV === \"test\") {\n _test_only_setBootstrapData = (data) => {\n bootstrapData = data as BootstrapData;\n };\n}\n"],"mappings":"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"}