@next-core/runtime 1.21.0 → 1.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/cjs/createRoot.js +4 -6
  2. package/dist/cjs/createRoot.js.map +1 -1
  3. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +1 -1
  4. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  5. package/dist/cjs/internal/Renderer.js +159 -59
  6. package/dist/cjs/internal/Renderer.js.map +1 -1
  7. package/dist/cjs/internal/RendererContext.js +87 -11
  8. package/dist/cjs/internal/RendererContext.js.map +1 -1
  9. package/dist/cjs/internal/Router.js +109 -77
  10. package/dist/cjs/internal/Router.js.map +1 -1
  11. package/dist/cjs/internal/data/DataStore.js +53 -7
  12. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  13. package/dist/cjs/internal/matchRoutes.js +9 -5
  14. package/dist/cjs/internal/matchRoutes.js.map +1 -1
  15. package/dist/cjs/internal/matchStoryboard.js +8 -3
  16. package/dist/cjs/internal/matchStoryboard.js.map +1 -1
  17. package/dist/cjs/internal/secret_internals.js +11 -18
  18. package/dist/cjs/internal/secret_internals.js.map +1 -1
  19. package/dist/esm/createRoot.js +5 -7
  20. package/dist/esm/createRoot.js.map +1 -1
  21. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +1 -1
  22. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  23. package/dist/esm/internal/Renderer.js +167 -69
  24. package/dist/esm/internal/Renderer.js.map +1 -1
  25. package/dist/esm/internal/RendererContext.js +94 -11
  26. package/dist/esm/internal/RendererContext.js.map +1 -1
  27. package/dist/esm/internal/Router.js +148 -103
  28. package/dist/esm/internal/Router.js.map +1 -1
  29. package/dist/esm/internal/data/DataStore.js +51 -6
  30. package/dist/esm/internal/data/DataStore.js.map +1 -1
  31. package/dist/esm/internal/matchRoutes.js +8 -5
  32. package/dist/esm/internal/matchRoutes.js.map +1 -1
  33. package/dist/esm/internal/matchStoryboard.js +7 -3
  34. package/dist/esm/internal/matchStoryboard.js.map +1 -1
  35. package/dist/esm/internal/secret_internals.js +13 -20
  36. package/dist/esm/internal/secret_internals.js.map +1 -1
  37. package/dist/types/internal/Renderer.d.ts +12 -4
  38. package/dist/types/internal/RendererContext.d.ts +31 -5
  39. package/dist/types/internal/data/DataStore.d.ts +13 -4
  40. package/dist/types/internal/matchRoutes.d.ts +6 -0
  41. package/dist/types/internal/matchStoryboard.d.ts +1 -0
  42. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","strictCollectMemberUsage","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","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_renderBrick","_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","controlOutput","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","tag","BRICK","return","events","portal","iid","ref","usedProcessors","lifeCycle","size","join","loadProperties","_ref4","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","entries","_ref6","childSlotId","slotConf","childrenOutput","child","_x18","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","rows","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { 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\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\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 keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string,\n keyPath: 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 keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\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 keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n keyPath\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 controlOutput = await renderControlNode();\n controlOutput.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(controlOutput.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n keyPath,\n controlOutput.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 catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } 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 keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","scopedStores","postAsyncRender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","return","events","portal","iid","ref","usedProcessors","lifeCycle","size","join","loadProperties","_ref4","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","routeSlotIndexes","Set","entries","_ref6","childSlotId","slotConf","flags","add","performIncrementalRender","_ref7","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x32","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n 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\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.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>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: 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 if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: 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 parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\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 (runtimeContext: RuntimeContext) => {\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 parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.reRender(\n slotId,\n keyPath,\n controlOutput.node,\n returnNode\n );\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[]\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _classPrivateMethodInitSpec from "@babel/runtime/helpers/classPrivateMethodInitSpec";
2
3
  import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
3
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- import _classPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
5
5
  import _classPrivateMethodGet from "@babel/runtime/helpers/classPrivateMethodGet";
6
6
  import _classPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
7
+ import _classPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
7
8
  import { isEmpty, remove } from "lodash";
8
9
  import { listenerFactory } from "./bindListeners.js";
9
10
  import { getHistory } from "../history.js";
@@ -15,11 +16,15 @@ import { unbindTemplateProxy } from "./CustomTemplates/bindTemplateProxy.js";
15
16
  import { hooks } from "./Runtime.js";
16
17
  var commonLifeCycles = ["onMount", "onUnmount", "onMediaChange", "onScrollIntoView", "onMessage", "onMessageClose"];
17
18
  var pageOnlyLifeCycles = ["onBeforePageLoad", "onPageLoad", "onPageLeave", "onBeforePageLeave", "onAnchorLoad", "onAnchorUnload"];
19
+ var _routeHelper = /*#__PURE__*/new WeakMap();
18
20
  var _memoizedLifeCycle = /*#__PURE__*/new WeakMap();
19
21
  var _observers = /*#__PURE__*/new WeakMap();
20
22
  var _mediaListener = /*#__PURE__*/new WeakMap();
21
23
  var _arbitraryLifeCycle = /*#__PURE__*/new WeakMap();
22
- var _memoizedControlNodes = /*#__PURE__*/new WeakMap();
24
+ var _memoized = /*#__PURE__*/new WeakMap();
25
+ var _allMenuRequests = /*#__PURE__*/new WeakMap();
26
+ var _memoizedMenuRequestMap = /*#__PURE__*/new WeakMap();
27
+ var _locationChangeCallbacks = /*#__PURE__*/new WeakMap();
23
28
  var _unmountBricks = /*#__PURE__*/new WeakSet();
24
29
  var _initializeRerenderBricks = /*#__PURE__*/new WeakSet();
25
30
  var _dispatchGeneralLifeCycle = /*#__PURE__*/new WeakSet();
@@ -38,6 +43,10 @@ export class RendererContext {
38
43
  */
39
44
  _defineProperty(this, "scope", void 0);
40
45
  _defineProperty(this, "unknownBricks", void 0);
46
+ _classPrivateFieldInitSpec(this, _routeHelper, {
47
+ writable: true,
48
+ value: void 0
49
+ });
41
50
  _classPrivateFieldInitSpec(this, _memoizedLifeCycle, {
42
51
  writable: true,
43
52
  value: {
@@ -67,12 +76,83 @@ export class RendererContext {
67
76
  writable: true,
68
77
  value: new Map()
69
78
  });
70
- _classPrivateFieldInitSpec(this, _memoizedControlNodes, {
79
+ _classPrivateFieldInitSpec(this, _memoized, {
80
+ writable: true,
81
+ value: void 0
82
+ });
83
+ _classPrivateFieldInitSpec(this, _allMenuRequests, {
84
+ writable: true,
85
+ value: void 0
86
+ });
87
+ _classPrivateFieldInitSpec(this, _memoizedMenuRequestMap, {
71
88
  writable: true,
72
89
  value: void 0
73
90
  });
91
+ _classPrivateFieldInitSpec(this, _locationChangeCallbacks, {
92
+ writable: true,
93
+ value: []
94
+ });
74
95
  this.scope = scope;
75
96
  this.unknownBricks = (_options$unknownBrick = options === null || options === void 0 ? void 0 : options.unknownBricks) !== null && _options$unknownBrick !== void 0 ? _options$unknownBrick : "throw";
97
+ _classPrivateFieldSet(this, _routeHelper, options === null || options === void 0 ? void 0 : options.routeHelper);
98
+ }
99
+ setInitialMenuRequests(menuRequests) {
100
+ _classPrivateFieldSet(this, _allMenuRequests, menuRequests);
101
+ }
102
+ memoizeMenuRequests(route, menuRequests) {
103
+ if (!_classPrivateFieldGet(this, _memoizedMenuRequestMap)) {
104
+ _classPrivateFieldSet(this, _memoizedMenuRequestMap, new WeakMap());
105
+ }
106
+ _classPrivateFieldGet(this, _memoizedMenuRequestMap).set(route, menuRequests[0]);
107
+ }
108
+ reMergeMenuRequests(routes, currentRoute, menuRequests) {
109
+ var _this = this;
110
+ return _asyncToGenerator(function* () {
111
+ var previousMenuRequest;
112
+ var previousRoute;
113
+ for (var route of routes) {
114
+ previousMenuRequest = _classPrivateFieldGet(_this, _memoizedMenuRequestMap).get(route);
115
+ if (previousMenuRequest) {
116
+ previousRoute = route;
117
+ break;
118
+ }
119
+ }
120
+ var mergedMenuRequests = _classPrivateFieldGet(_this, _allMenuRequests);
121
+ var previousIndex = previousMenuRequest ? mergedMenuRequests.indexOf(previousMenuRequest) : -1;
122
+ if (previousIndex === -1) {
123
+ if (!menuRequests.length) {
124
+ return;
125
+ }
126
+ mergedMenuRequests.push(...menuRequests);
127
+ } else {
128
+ mergedMenuRequests.splice(previousIndex, mergedMenuRequests.length - previousIndex, ...menuRequests);
129
+ }
130
+ if (previousRoute && previousRoute !== currentRoute) {
131
+ _classPrivateFieldGet(_this, _memoizedMenuRequestMap).delete(previousRoute);
132
+ }
133
+ yield _classPrivateFieldGet(_this, _routeHelper).mergeMenus(mergedMenuRequests);
134
+ })();
135
+ }
136
+ reBailout(output) {
137
+ return _classPrivateFieldGet(this, _routeHelper).bailout(output);
138
+ }
139
+ reCatch(error, returnNode) {
140
+ return _classPrivateFieldGet(this, _routeHelper).catch(error, returnNode);
141
+ }
142
+ didPerformIncrementalRender(location) {
143
+ var _this2 = this;
144
+ return _asyncToGenerator(function* () {
145
+ var results = yield Promise.all(_classPrivateFieldGet(_this2, _locationChangeCallbacks).map(callback => callback(location)));
146
+ return results.some(result => result);
147
+ })();
148
+ }
149
+
150
+ /**
151
+ * When `callback` resolved to `true` which means incremental rendering is performed,
152
+ * ignore normal rendering.
153
+ */
154
+ performIncrementalRender(callback) {
155
+ _classPrivateFieldGet(this, _locationChangeCallbacks).push(callback);
76
156
  }
77
157
  registerBrickLifeCycle(brick, lifeCycle) {
78
158
  if (!lifeCycle) {
@@ -102,15 +182,15 @@ export class RendererContext {
102
182
  _classPrivateFieldGet(this, _arbitraryLifeCycle).set(lifeCycle, new Set([fn]));
103
183
  }
104
184
  }
105
- memoizeControlNode(slotId, keyPath, node, returnNode) {
106
- if (!_classPrivateFieldGet(this, _memoizedControlNodes)) {
107
- _classPrivateFieldSet(this, _memoizedControlNodes, new WeakMap());
185
+ memoize(slotId, keyPath, node, returnNode) {
186
+ if (!_classPrivateFieldGet(this, _memoized)) {
187
+ _classPrivateFieldSet(this, _memoized, new WeakMap());
108
188
  }
109
189
  var memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
110
- var mem = _classPrivateFieldGet(this, _memoizedControlNodes).get(returnNode);
190
+ var mem = _classPrivateFieldGet(this, _memoized).get(returnNode);
111
191
  if (!mem) {
112
192
  mem = new Map();
113
- _classPrivateFieldGet(this, _memoizedControlNodes).set(returnNode, mem);
193
+ _classPrivateFieldGet(this, _memoized).set(returnNode, mem);
114
194
  }
115
195
  mem.set(memKey, {
116
196
  node,
@@ -119,11 +199,11 @@ export class RendererContext {
119
199
  lastPortal: getLastPortalNode(node)
120
200
  });
121
201
  }
122
- rerenderControlNode(slotId, keyPath, node, returnNode) {
202
+ reRender(slotId, keyPath, node, returnNode) {
123
203
  var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme, _prevLastPortal$eleme2;
124
204
  var memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
125
205
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
126
- var memoized = _classPrivateFieldGet(this, _memoizedControlNodes).get(returnNode).get(memKey);
206
+ var memoized = _classPrivateFieldGet(this, _memoized).get(returnNode).get(memKey);
127
207
  var {
128
208
  node: prevNode,
129
209
  last: prevLast,
@@ -222,8 +302,11 @@ export class RendererContext {
222
302
  mediaEventTarget.removeEventListener("change", _classPrivateFieldGet(this, _mediaListener));
223
303
  _classPrivateFieldSet(this, _mediaListener, undefined);
224
304
  }
225
- _classPrivateFieldSet(this, _memoizedControlNodes, undefined);
305
+ _classPrivateFieldSet(this, _memoized, undefined);
306
+ _classPrivateFieldSet(this, _allMenuRequests, undefined);
307
+ _classPrivateFieldSet(this, _memoizedMenuRequestMap, undefined);
226
308
  _classPrivateFieldGet(this, _arbitraryLifeCycle).clear();
309
+ _classPrivateFieldGet(this, _locationChangeCallbacks).length = 0;
227
310
  }
228
311
  dispatchBeforePageLoad() {
229
312
  _classPrivateMethodGet(this, _dispatchGeneralLifeCycle, _dispatchGeneralLifeCycle2).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));