@next-core/runtime 1.44.0 → 1.44.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.
- package/dist/cjs/createRoot.js +7 -1
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +3 -0
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/Router.js +3 -0
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/esm/createRoot.js +7 -1
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/internal/Renderer.js +3 -0
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/Router.js +3 -0
- package/dist/esm/internal/Router.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","isEqual","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTPlExternalNoForEach","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","setupRootRuntimeContext","httpErrorToString","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_x8","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","matched","output","getEmptyRenderOutput","menuRequestNode","return","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","request","memoizeMenuRequestNode","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_x16","_x17","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x18","_x19","_x20","_x21","_x22","_x23","_x24","_renderBrick","length","legacyRenderBrick","errorBoundary","tag","BRICK","properties","textContent","style","color","_x25","_x26","_x27","_x28","_x29","_x30","_x31","_x32","_x33","_legacyRenderBrick","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x44","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","_x45","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotFromIndexToSlotId","entries","_ref7","childSlotId","slotConf","parentRoute","incrementalSubRoutes","performIncrementalRender","_ref8","location","prevLocation","homepage","pathname","every","prevMatch","newMatch","params","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequestNodes","result","reCatch","_x46","_x47","childrenOutput","has","mergeSiblingRenderMenuRequest","child","_x34","_x35","_x36","_x37","_x38","_x39","_x40","_x41","_x42","_x43","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n RouteConfOfBricks,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce, isEqual } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTPlExternalNoForEach,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport type { MatchResult } from \"./matchPath.js\";\nimport { setupRootRuntimeContext } from \"./setupRootRuntimeContext.js\";\nimport { httpErrorToString } from \"../handleHttpError.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequestNode?: MenuRequestNode;\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n const menuRequestNode: MenuRequestNode = (output.menuRequestNode = {\n return: menuRequestReturnNode,\n });\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n menuRequestNode.request = menuRequest;\n }\n\n if (!isIncremental) {\n rendererContext.memoizeMenuRequestNode(routes, menuRequestNode);\n }\n\n let newOutput: RenderOutput;\n if (route.type === \"routes\") {\n newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n }\n\n mergeRenderOutput(output, newOutput);\n appendMenuRequestNode(menuRequestNode, newOutput.menuRequestNode);\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n try {\n return await legacyRenderBrick(\n returnNode,\n brickConf,\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack\n );\n } catch (error) {\n if (brickConf.errorBoundary) {\n // eslint-disable-next-line no-console\n console.error(\"Error caught by error boundary:\", error);\n return {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n style: {\n color: \"var(--color-error)\",\n },\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n };\n } else {\n throw error;\n }\n }\n}\n\nasync function legacyRenderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n keyPath: number[],\n tplStack: Map<string, number>\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n } else if (brickConf[symbolForTPlExternalNoForEach]) {\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n const rawOutput = await lowerLevelRenderControlNode(runtimeContext);\n rawOutput.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n };\n return rawOutput;\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput =\n await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n reControlledOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotFromIndexToSlotId = new Map<number, string>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n tplStack\n );\n }\n\n const parentRoute = parentRoutes[parentRoutes.length - 1] as\n | RouteConfOfBricks\n | undefined;\n if (parentRoute?.incrementalSubRoutes) {\n routeSlotFromIndexToSlotId.set(index, childSlotId);\n rendererContext.performIncrementalRender(\n slotConf,\n parentRoutes,\n async (location, prevLocation) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) => {\n let prevMatch: MatchResult | null;\n let newMatch: MatchResult | null;\n return (\n (prevMatch = matchRoute(\n route,\n homepage,\n prevLocation.pathname\n )) &&\n (newMatch = matchRoute(route, homepage, pathname)) &&\n (route !== parentRoute ||\n isEqual(prevMatch.params, newMatch.params))\n );\n })\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n true\n );\n\n // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\n if (incrementalOutput.route) {\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n await postAsyncRender(\n incrementalOutput,\n scopedRuntimeContext,\n [scopedRuntimeContext.ctxStore, ...scopedStores]\n );\n }\n\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n return incrementalOutput.route ? true : null;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\n };\n rendered.forEach((item, index) => {\n if (routeSlotFromIndexToSlotId.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n routeSlotFromIndexToSlotId.get(index),\n [],\n item.node,\n brick\n );\n }\n mergeRenderOutput(childrenOutput, item);\n mergeSiblingRenderMenuRequest(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = childrenOutput.menuRequestNode)\n );\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequestNode, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction mergeSiblingRenderMenuRequest(\n output: RenderOutput,\n newOutput: RenderOutput\n) {\n const menuRequestNode = newOutput.menuRequestNode;\n if (menuRequestNode) {\n if (output.menuRequestNode) {\n let last = output.menuRequestNode;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n output.menuRequestNode = menuRequestNode;\n }\n }\n}\n\nfunction appendMenuRequestNode(\n menuRequestReturnNode: MenuRequestNode,\n menuRequestNode: MenuRequestNode | undefined\n) {\n if (!menuRequestNode) {\n return;\n }\n if (menuRequestReturnNode.child) {\n let last = menuRequestReturnNode.child;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n menuRequestReturnNode.child = menuRequestNode;\n }\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return { blockingList: [] };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load %s \"%s\" failed:`, type, name, e);\n })\n : promise;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","isEqual","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTPlExternalNoForEach","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","setupRootRuntimeContext","httpErrorToString","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_x8","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","matched","output","getEmptyRenderOutput","menuRequestNode","return","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","request","memoizeMenuRequestNode","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_x16","_x17","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x18","_x19","_x20","_x21","_x22","_x23","_x24","_renderBrick","length","legacyRenderBrick","errorBoundary","tag","BRICK","properties","textContent","dataset","style","color","_x25","_x26","_x27","_x28","_x29","_x30","_x31","_x32","_x33","_legacyRenderBrick","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x44","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","_x45","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotFromIndexToSlotId","entries","_ref7","childSlotId","slotConf","parentRoute","incrementalSubRoutes","performIncrementalRender","_ref8","location","prevLocation","homepage","pathname","every","prevMatch","newMatch","params","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequestNodes","result","reCatch","_x46","_x47","childrenOutput","has","mergeSiblingRenderMenuRequest","child","_x34","_x35","_x36","_x37","_x38","_x39","_x40","_x41","_x42","_x43","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n RouteConfOfBricks,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce, isEqual } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTPlExternalNoForEach,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\nimport type { MatchResult } from \"./matchPath.js\";\nimport { setupRootRuntimeContext } from \"./setupRootRuntimeContext.js\";\nimport { httpErrorToString } from \"../handleHttpError.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequestNode?: MenuRequestNode;\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n const menuRequestNode: MenuRequestNode = (output.menuRequestNode = {\n return: menuRequestReturnNode,\n });\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n menuRequestNode.request = menuRequest;\n }\n\n if (!isIncremental) {\n rendererContext.memoizeMenuRequestNode(routes, menuRequestNode);\n }\n\n let newOutput: RenderOutput;\n if (route.type === \"routes\") {\n newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId\n );\n }\n\n mergeRenderOutput(output, newOutput);\n appendMenuRequestNode(menuRequestNode, newOutput.menuRequestNode);\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n try {\n return await legacyRenderBrick(\n returnNode,\n brickConf,\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack\n );\n } catch (error) {\n if (brickConf.errorBoundary) {\n // eslint-disable-next-line no-console\n console.error(\"Error caught by error boundary:\", error);\n return {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n dataset: {\n errorBoundary: \"\",\n },\n style: {\n color: \"var(--color-error)\",\n },\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n };\n } else {\n throw error;\n }\n }\n}\n\nasync function legacyRenderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n keyPath: number[],\n tplStack: Map<string, number>\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n } else if (brickConf[symbolForTPlExternalNoForEach]) {\n delete runtimeContext.forEachItem;\n delete runtimeContext.forEachIndex;\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n const rawOutput = await lowerLevelRenderControlNode(runtimeContext);\n rawOutput.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n };\n return rawOutput;\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput =\n await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n reControlledOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotFromIndexToSlotId = new Map<number, string>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n tplStack\n );\n }\n\n const parentRoute = parentRoutes[parentRoutes.length - 1] as\n | RouteConfOfBricks\n | undefined;\n if (parentRoute?.incrementalSubRoutes) {\n routeSlotFromIndexToSlotId.set(index, childSlotId);\n rendererContext.performIncrementalRender(\n slotConf,\n parentRoutes,\n async (location, prevLocation) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) => {\n let prevMatch: MatchResult | null;\n let newMatch: MatchResult | null;\n return (\n (prevMatch = matchRoute(\n route,\n homepage,\n prevLocation.pathname\n )) &&\n (newMatch = matchRoute(route, homepage, pathname)) &&\n (route !== parentRoute ||\n isEqual(prevMatch.params, newMatch.params))\n );\n })\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n true\n );\n\n // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\n if (incrementalOutput.route) {\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n await postAsyncRender(\n incrementalOutput,\n scopedRuntimeContext,\n [scopedRuntimeContext.ctxStore, ...scopedStores]\n );\n }\n\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n // When result is null, it means the incremental rendering is tried but routes missed.\n // In this case, we should continue to re-render the parent routes.\n return incrementalOutput.route ? true : null;\n }\n );\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\n };\n rendered.forEach((item, index) => {\n if (routeSlotFromIndexToSlotId.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n routeSlotFromIndexToSlotId.get(index),\n [],\n item.node,\n brick\n );\n }\n mergeRenderOutput(childrenOutput, item);\n mergeSiblingRenderMenuRequest(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = childrenOutput.menuRequestNode)\n );\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n menuRequestReturnNode: MenuRequestNode,\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequestNode, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction mergeSiblingRenderMenuRequest(\n output: RenderOutput,\n newOutput: RenderOutput\n) {\n const menuRequestNode = newOutput.menuRequestNode;\n if (menuRequestNode) {\n if (output.menuRequestNode) {\n let last = output.menuRequestNode;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n output.menuRequestNode = menuRequestNode;\n }\n }\n}\n\nfunction appendMenuRequestNode(\n menuRequestReturnNode: MenuRequestNode,\n menuRequestNode: MenuRequestNode | undefined\n) {\n if (!menuRequestNode) {\n return;\n }\n if (menuRequestReturnNode.child) {\n let last = menuRequestReturnNode.child;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = menuRequestNode;\n } else {\n menuRequestReturnNode.child = menuRequestNode;\n }\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return { blockingList: [] };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load %s \"%s\" failed:`, type, name, e);\n })\n : promise;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.js","names":["locationsAreEqual","HttpAbortError","uniqueId","getHistory","getDataStores","postAsyncRender","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","setLoginStateCookie","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","devtoolsHookEmit","setUIVersion","setAppVariable","setWatermark","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_Router_brand","WeakSet","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_assertClassBrand","_getBlockMessageBeforePageLave","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","_this","renderId","listen","_ref","_asyncToGenerator","_classPrivateFieldGet2","_location$state","_location$state2","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","dispatchPageLeave","storyboard","pathname","reload","_queuedRender","catch","_x","_x2","apply","arguments","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x3","_queuedRender2","_render","nextLocation","_x4","_render2","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet6","_storyboard$app","_this2","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","appId","version","currentVersion","appChanged","flags","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","theme","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","_ref2","menuRequests","menuConfs","Promise","all","mergeMenuConfs","_x5","returnNode","NO_AUTH_GUARD","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","style","color","runtimeContext","return","blockingList","rendererContext","query","URLSearchParams","sys","auth","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","meta","functions","collectContract","contracts","stores","rootMenuRequestNode","routes","child","menuRequestNode","setInitialMenuRequestNode","getMenuRequests","result","route","dispatchBeforePageLoad","uiVersion","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\nimport { setWatermark } from \"../setWatermark.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering && !location.state?.noIncremental) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n this.#prevLocation\n );\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n setWatermark();\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({\n status: \"redirected\",\n });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n window.dispatchEvent(\n new CustomEvent(\"navConfig.change\", { detail: this.#navConfig })\n );\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n style: {\n color: \"var(--color-error)\",\n },\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n const rootMenuRequestNode: MenuRequestNode = {};\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n [],\n rootMenuRequestNode\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n rootMenuRequestNode.child = output.menuRequestNode;\n rendererContext.setInitialMenuRequestNode(rootMenuRequestNode);\n await routeHelper.mergeMenus(rendererContext.getMenuRequests());\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Router.js","names":["locationsAreEqual","HttpAbortError","uniqueId","getHistory","getDataStores","postAsyncRender","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","httpErrorToString","isUnauthenticatedError","abortPendingRequest","initAbortController","setLoginStateCookie","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","devtoolsHookEmit","setUIVersion","setAppVariable","setWatermark","_storyboards","WeakMap","_rendering","_prevLocation","_nextLocation","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_Router_brand","WeakSet","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_assertClassBrand","_getBlockMessageBeforePageLave","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","_this","renderId","listen","_ref","_asyncToGenerator","_classPrivateFieldGet2","_location$state","_location$state2","_classPrivateFieldGet4","currentRenderId","ignoreRendering","omittedLocationProps","hash","undefined","state","key","notify","_objectSpread","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","dispatchPageLeave","storyboard","pathname","reload","_queuedRender","catch","_x","_x2","apply","arguments","detail","_classPrivateFieldGet5","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect","to","from","_this$redirectCount","_this$redirectCount2","concat","search","process","env","NODE_ENV","console","error","Error","replace","_x3","_queuedRender2","_render","nextLocation","_x4","_render2","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet6","_storyboard$app","_this2","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","appId","version","currentVersion","appChanged","flags","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","item","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","theme","_hooks$checkInstalled","_hooks$auth","_hooks$checkPermissio","_storyboard$meta","_hooks$flowApi2","_storyboard$meta2","checkInstalledApps","preCheckInstalledApps","routeHelper","bailout","output","unauthenticated","redirect","path","mergeMenus","_ref2","menuRequests","menuConfs","Promise","all","mergeMenuConfs","_x5","returnNode","NO_AUTH_GUARD","noAuthGuardLoginPath","getMiscSettings","failed","node","BRICK","type","properties","textContent","dataset","errorBoundary","style","color","runtimeContext","return","blockingList","rendererContext","query","URLSearchParams","sys","auth","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","meta","functions","collectContract","contracts","stores","rootMenuRequestNode","routes","child","menuRequestNode","setInitialMenuRequestNode","getMenuRequests","result","route","dispatchBeforePageLoad","uiVersion","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport {\n handleHttpError,\n httpErrorToString,\n isUnauthenticatedError,\n} from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\nimport { setWatermark } from \"../setWatermark.js\";\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #prevLocation!: NextLocation;\n #nextLocation?: NextLocation;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: {\n breadcrumb?: BreadcrumbItemConf[];\n };\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return {\n currentApp: this.#currentApp,\n previousApp: this.#previousApp,\n };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n this.#prevLocation = history.location;\n let renderId = 0;\n history.listen(async (location, action) => {\n const currentRenderId = ++renderId;\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (this.#prevLocation.key === undefined ||\n // or the previous location specified notify false.\n this.#prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...this.#prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n if (!ignoreRendering && !location.state?.noIncremental) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n this.#prevLocation\n );\n }\n\n // Ignore stale renders\n if (renderId !== currentRenderId) {\n return;\n }\n\n if (ignoreRendering) {\n this.#prevLocation = location;\n return;\n }\n\n abortPendingRequest();\n this.#prevLocation = location;\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n if (this.#rendering) {\n this.#nextLocation = location;\n } else {\n devtoolsHookEmit(\"locationChange\");\n this.#queuedRender(location).catch(handleHttpError);\n }\n });\n return this.#queuedRender(history.location);\n }\n\n async #queuedRender(location: NextLocation): Promise<void> {\n this.#rendering = true;\n try {\n await this.#render(location);\n } finally {\n this.#rendering = false;\n if (this.#nextLocation) {\n const nextLocation = this.#nextLocation;\n this.#nextLocation = undefined;\n await this.#queuedRender(nextLocation);\n }\n }\n }\n\n async #render(location: NextLocation): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n setWatermark();\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({\n status: \"redirected\",\n });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", {\n detail: {\n previousApp,\n currentApp,\n },\n })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n\n if (currentApp) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n window.dispatchEvent(\n new CustomEvent(\"navConfig.change\", { detail: this.#navConfig })\n );\n },\n catch: (error, returnNode) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n return {\n failed: true,\n output: {\n node: {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n dataset: {\n errorBoundary: \"\",\n },\n style: {\n color: \"var(--color-error)\",\n },\n },\n runtimeContext: null!,\n return: returnNode,\n },\n blockingList: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: {\n brand: getRuntime().getBrandSettings(),\n },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n const rootMenuRequestNode: MenuRequestNode = {};\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n [],\n rootMenuRequestNode\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n rootMenuRequestNode.child = output.menuRequestNode;\n rendererContext.setInitialMenuRequestNode(rootMenuRequestNode);\n await routeHelper.mergeMenus(rendererContext.getMenuRequests());\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n\n const result = routeHelper.catch(error, renderRoot);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n renderRoot.child = output.node;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node: RenderBrick = {\n tag: RenderTag.BRICK,\n type: \"div\",\n properties: {\n textContent: \"Page not found\",\n },\n runtimeContext: null!,\n return: renderRoot,\n };\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = {\n breadcrumb: [] as BreadcrumbItemConf[],\n };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.44.
|
|
3
|
+
"version": "1.44.2",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
"@next-core/color-theme": "^0.4.8",
|
|
47
47
|
"@next-core/cook": "^2.2.16",
|
|
48
48
|
"@next-core/http": "^1.2.2",
|
|
49
|
-
"@next-core/i18n": "^1.0.
|
|
49
|
+
"@next-core/i18n": "^1.0.47",
|
|
50
50
|
"@next-core/inject": "^1.0.35",
|
|
51
51
|
"@next-core/loader": "^1.5.8",
|
|
52
52
|
"@next-core/supply": "^2.1.15",
|
|
53
53
|
"@next-core/types": "^1.11.0",
|
|
54
|
-
"@next-core/utils": "^1.7.
|
|
54
|
+
"@next-core/utils": "^1.7.5",
|
|
55
55
|
"@ungap/event-target": "^0.2.4",
|
|
56
56
|
"compare-versions": "^6.1.0",
|
|
57
57
|
"history": "^4.10.1",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"@next-core/build-next-libs": "^1.0.15",
|
|
67
67
|
"@next-core/test-next": "^1.1.1"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "4e473ace7bb317528a18b36f8f5220bed8e97eef"
|
|
70
70
|
}
|