@next-core/runtime 1.64.0 → 1.65.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +6 -1
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +20 -5
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +1 -0
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/cjs/themeAndMode.js +18 -0
- package/dist/cjs/themeAndMode.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/Renderer.js +6 -1
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +20 -5
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +2 -1
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/esm/themeAndMode.js +16 -0
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal/interfaces.d.ts +2 -0
- package/dist/types/themeAndMode.d.ts +3 -1
- package/package.json +6 -6
package/dist/cjs/index.js
CHANGED
|
@@ -12,6 +12,7 @@ var _exportNames = {
|
|
|
12
12
|
getCssPropertyValue: true,
|
|
13
13
|
getCurrentTheme: true,
|
|
14
14
|
getCurrentMode: true,
|
|
15
|
+
getThemeVariant: true,
|
|
15
16
|
batchSetAppsLocalTheme: true,
|
|
16
17
|
applyTheme: true,
|
|
17
18
|
checkIfOfComputed: true,
|
|
@@ -103,6 +104,12 @@ Object.defineProperty(exports, "getRuntime", {
|
|
|
103
104
|
return _Runtime.getRuntime;
|
|
104
105
|
}
|
|
105
106
|
});
|
|
107
|
+
Object.defineProperty(exports, "getThemeVariant", {
|
|
108
|
+
enumerable: true,
|
|
109
|
+
get: function () {
|
|
110
|
+
return _themeAndMode.getThemeVariant;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
106
113
|
Object.defineProperty(exports, "matchPath", {
|
|
107
114
|
enumerable: true,
|
|
108
115
|
get: function () {
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_auth","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_CustomEditors","_CustomProcessors","_CustomTemplates","_fetchByProvider","_getBasePath","_getPageInfo","_handleHttpError","_history","_createRoot","_getRealValue","_Runtime","__secret_internals","_interopRequireWildcard","_test_only","_themeAndMode","_checkIf","_WidgetFunctions","_WidgetI18n","_StoryboardFunctionRegistry","_matchPath","_Notification","_Dialog","_getV2RuntimeFromDll","_setUIVersion","_ModalStack","_isNetworkError","_shouldReloadForError"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomEditors.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport * from \"./getRealValue.js\";\nexport {\n createRuntime,\n getRuntime,\n type RuntimeOptions,\n type RuntimeHooks,\n type RuntimeHooksMenuHelpers,\n type ImagesFactory,\n type PageViewInfo,\n} from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport { __test_only } from \"./internal/test_only.js\";\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath, type MatchOptions } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\nexport * from \"./getV2RuntimeFromDll.js\";\nexport { setUIVersion } from \"./setUIVersion.js\";\nexport * from \"./ModalStack.js\";\nexport * from \"./isNetworkError.js\";\nexport * from \"./shouldReloadForError.js\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_auth","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_CustomEditors","_CustomProcessors","_CustomTemplates","_fetchByProvider","_getBasePath","_getPageInfo","_handleHttpError","_history","_createRoot","_getRealValue","_Runtime","__secret_internals","_interopRequireWildcard","_test_only","_themeAndMode","_checkIf","_WidgetFunctions","_WidgetI18n","_StoryboardFunctionRegistry","_matchPath","_Notification","_Dialog","_getV2RuntimeFromDll","_setUIVersion","_ModalStack","_isNetworkError","_shouldReloadForError"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.js\";\nexport * from \"./CustomEditors.js\";\nexport * from \"./CustomProcessors.js\";\nexport * from \"./CustomTemplates.js\";\nexport * from \"./fetchByProvider.js\";\nexport * from \"./getBasePath.js\";\nexport * from \"./getPageInfo.js\";\nexport * from \"./handleHttpError.js\";\nexport * from \"./history.js\";\nexport * from \"./createRoot.js\";\nexport * from \"./getRealValue.js\";\nexport {\n createRuntime,\n getRuntime,\n type RuntimeOptions,\n type RuntimeHooks,\n type RuntimeHooksMenuHelpers,\n type ImagesFactory,\n type PageViewInfo,\n} from \"./internal/Runtime.js\";\nimport * as __secret_internals from \"./internal/secret_internals.js\";\nexport { __secret_internals };\nexport { __test_only } from \"./internal/test_only.js\";\nexport {\n getCssPropertyValue,\n getCurrentTheme,\n getCurrentMode,\n getThemeVariant,\n batchSetAppsLocalTheme,\n applyTheme,\n} from \"./themeAndMode.js\";\nexport {\n checkIfOfComputed,\n checkIfByTransform,\n} from \"./internal/compute/checkIf.js\";\nexport { registerWidgetFunctions } from \"./internal/compute/WidgetFunctions.js\";\nexport { registerWidgetI18n } from \"./internal/compute/WidgetI18n.js\";\nexport { StoryboardFunctionRegistryFactory } from \"./StoryboardFunctionRegistry.js\";\nexport { matchPath, type MatchOptions } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\nexport * from \"./getV2RuntimeFromDll.js\";\nexport { setUIVersion } from \"./setUIVersion.js\";\nexport * from \"./ModalStack.js\";\nexport * from \"./isNetworkError.js\";\nexport * from \"./shouldReloadForError.js\";\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -345,7 +345,7 @@ async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendere
|
|
|
345
345
|
});
|
|
346
346
|
|
|
347
347
|
// Ignore stale renders
|
|
348
|
-
if (renderId === currentRenderId) {
|
|
348
|
+
if (renderId === currentRenderId && !(returnNode.tag !== _enums.RenderTag.ROOT && returnNode.disposed)) {
|
|
349
349
|
if (onUnmount) {
|
|
350
350
|
(0, _bindListeners.listenerFactory)(onUnmount, runtimeContext)(new CustomEvent("unmount", {
|
|
351
351
|
detail: {
|
|
@@ -604,6 +604,11 @@ async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendere
|
|
|
604
604
|
output: incrementalOutput
|
|
605
605
|
} = result);
|
|
606
606
|
}
|
|
607
|
+
|
|
608
|
+
// istanbul ignore next: covered by e2e tests
|
|
609
|
+
if (brick.disposed) {
|
|
610
|
+
return true;
|
|
611
|
+
}
|
|
607
612
|
newControlNode.child = incrementalOutput.node;
|
|
608
613
|
mergeRenderOutput(newOutput, {
|
|
609
614
|
...incrementalOutput,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_registerFormRenderer","_evaluate","_matchStoryboard","_bindListeners","_setupRootRuntimeContext","_routeMatchedMap","_ErrorNode","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","initialTracker","matched","matchRoutes","output","getEmptyRenderOutput","menuRequestNode","return","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","iid","setMatchedRoute","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","blockingList","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","menuRequest","loadMenu","menu","request","memoizeMenuRequestNode","usedProcessors","strictCollectMemberUsage","size","catchLoad","loadProcessorsImperatively","join","unknownBricks","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","tplStack","setupRootRuntimeContext","rendered","Promise","all","map","brickConf","renderBrick","Map","forEach","item","legacyRenderBrick","errorBoundary","node","ErrorNode","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","forEachIndex","symbolForTPlExternalForEachIndex","forEachSize","symbolForTPlExternalForEachSize","strict","isStrictMode","length","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","contextNames","stateNames","getTracks","tracking","lowerLevelRenderControlNode","tracker","trackDataSource","_slots$slot","computedDataSource","trackAfterInitial","propValue","slot","String","childrenToSlots","children","abstractNode","tag","RenderTag","ABSTRACT","childrenOutput","renderForEach","child","renderControlNode","tplStateStoreScope","formStateStoreScope","changedAfterInitial","disposes","listener","rerenderCount","rawOutput","uninitialized","scopedStores","postAsyncRender","dispose","controlledOutput","onMount","onUnmount","lifeCycle","renderId","currentRenderId","scopedRuntimeContext","createScopedRuntimeContext","reControlledOutput","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","leading","trailing","runtimeBrick","ROOT","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","tplTagName","getTagNameOfCustomTemplate","app","id","tplCount","set","includes","customElements","FORM_RENDERER","registerFormRenderer","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","compute","inUseBrick","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","BRICK","events","portal","ref","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotFromIndexToSlotId","entries","childSlotId","slotConf","index","lastOutput","parentRoute","incrementalSubRoutes","performIncrementalRender","location","prevLocation","homepage","pathname","matchHomepage","every","prevMatch","newMatch","matchRoute","isEqual","params","query","URLSearchParams","search","failed","incrementalOutput","newControlNode","reBailout","result","reCatch","reMergeMenuRequestNodes","routesOutput","mergeSiblingRenderMenuRequest","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","i","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","sl","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 trackAfterInitial,\n type InitialTracker,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTPlExternalForEachSize,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderAbstract,\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 { registerFormRenderer } from \"./FormRenderer/registerFormRenderer.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 { setMatchedRoute } from \"./routeMatchedMap.js\";\nimport { ErrorNode } from \"./ErrorNode.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}\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 initialTracker?: InitialTracker\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\n if (route.iid) {\n setMatchedRoute(route.iid, matched.match);\n }\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 const usedProcessors = strictCollectMemberUsage(\n route.context,\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 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 undefined,\n initialTracker\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId,\n undefined,\n initialTracker\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 initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\n const output = getEmptyRenderOutput();\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n );\n\n rendered.forEach((item) => {\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 tplStack = new Map<string, number>(),\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n try {\n return await legacyRenderBrick(\n returnNode,\n brickConf,\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n initialTracker\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: await ErrorNode(error, returnNode),\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 tplStack: Map<string, number>,\n initialTracker?: InitialTracker\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 iid: brickConf.iid,\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[symbol as typeof symbolForTplStateStoreId],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n initialTracker\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 `forEach*` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n runtimeContext.forEachSize = brickConf[symbolForTPlExternalForEachSize];\n }\n\n const strict = isStrictMode(runtimeContext);\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\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 const { contextNames, stateNames } = getTracks(dataSource);\n const tracking = !!(contextNames || stateNames);\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext,\n tracker: InitialTracker,\n trackDataSource: boolean\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n if (trackDataSource) {\n trackAfterInitial(\n runtimeContext,\n [{ contextNames, stateNames, propValue: dataSource }],\n tracker\n );\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 const output = getEmptyRenderOutput();\n const abstractNode: RenderAbstract = {\n tag: RenderTag.ABSTRACT,\n return: returnNode,\n iid: brickConf.iid,\n };\n output.node = abstractNode;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n let childrenOutput: RenderOutput | undefined;\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n break;\n }\n childrenOutput = await renderForEach(\n abstractNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n tracker\n );\n break;\n }\n case \":if\":\n case \":switch\": {\n childrenOutput = await renderBricks(\n abstractNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n tracker\n );\n }\n }\n\n if (childrenOutput) {\n abstractNode.child = childrenOutput.node;\n mergeRenderOutput(output, { ...childrenOutput, node: undefined });\n }\n\n return output;\n };\n\n type RenderControlNodeOptions =\n | {\n type: \"initial\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope?: undefined;\n formStateStoreScope?: undefined;\n }\n | {\n type: \"rerender\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope: DataStore<\"STATE\">[];\n formStateStoreScope: DataStore<\"FORM_STATE\">[];\n };\n\n const renderControlNode = async ({\n type,\n runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n }: RenderControlNodeOptions) => {\n let changedAfterInitial = false;\n const tracker: InitialTracker = {\n disposes: [],\n listener: () => {\n changedAfterInitial = true;\n },\n };\n let rerenderCount = 0;\n let rawOutput: RenderOutput;\n let uninitialized = true;\n\n // When perform an incremental sub-route render, for control nodes,\n // context maybe changed just after their data source being computed,\n // as well as props of their children bricks being computed, and before\n // bricks being mounted. Thus these changes may not take any effects.\n // So we need to track the context changes after the initial render,\n // and perform re-renders for these control nodes if necessary.\n while (uninitialized || changedAfterInitial) {\n changedAfterInitial = false;\n rawOutput = await lowerLevelRenderControlNode(\n runtimeContext,\n tracker,\n uninitialized && type === \"initial\"\n );\n\n // Changes may happen during `postAsyncRender`.\n if (!changedAfterInitial && type === \"rerender\") {\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(rawOutput, runtimeContext, [\n runtimeContext.ctxStore,\n ...scopedStores,\n ]);\n }\n\n tracker.disposes.forEach((dispose) => dispose());\n tracker.disposes.length = 0;\n uninitialized = false;\n // istanbul ignore next\n if (++rerenderCount > 10) {\n throw new Error(\n `Maximum rerender stack overflowed (iid: ${brickConf.iid})`\n );\n }\n }\n\n return rawOutput!;\n };\n\n let controlledOutput = await renderControlNode({\n type: \"initial\",\n runtimeContext,\n });\n\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n if (tracking) {\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput = await renderControlNode({\n type: \"rerender\",\n runtimeContext: scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\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 returnNode,\n reControlledOutput.node!,\n controlledOutput.node!\n );\n controlledOutput = reControlledOutput;\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of [...tplStateStoreScope, ...formStateStoreScope]) {\n store.mountAsyncData();\n }\n }\n };\n // Enable leading invocation, to keep tracking orders.\n const debouncedListener = debounce(listener, 0, {\n leading: true,\n trailing: true,\n });\n const runtimeBrick =\n returnNode.tag === RenderTag.ROOT ? null : returnNode;\n const disposes = runtimeBrick ? (runtimeBrick.disposes ??= []) : [];\n if (contextNames) {\n for (const contextName of contextNames) {\n disposes.push(\n runtimeContext.ctxStore.onChange(contextName, debouncedListener)\n );\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n disposes.push(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 registerFormRenderer();\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\n if (brickConf.properties?.compute) {\n formData = await asyncComputeRealValue(formData, runtimeContext);\n }\n } else {\n if (runtimeContext.inUseBrick) {\n // Keep v2 behavior for `useBrick`: treat `transform` as `properties`.\n const transform = (brickConf as { transform?: Record<string, unknown> })\n .transform;\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n brickConf\n );\n\n if (!strict) {\n confProps = {\n ...brickConf.properties,\n ...transform,\n };\n }\n }\n }\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 // Note: properties here has already been initialized.\n trackAfterInitial(runtimeContext, trackingContextList, initialTracker);\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 delete childRuntimeContext.forEachSize;\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(async ([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 initialTracker\n );\n }\n\n let lastOutput = getEmptyRenderOutput();\n const abstractNode: RenderAbstract = {\n tag: RenderTag.ABSTRACT,\n return: brick,\n };\n lastOutput.node = abstractNode;\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 const newOutput = getEmptyRenderOutput();\n const newControlNode: RenderAbstract = {\n tag: RenderTag.ABSTRACT,\n return: brick,\n };\n newOutput.node = newControlNode;\n\n try {\n incrementalOutput = await renderRoutes(\n newControlNode,\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 } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = await rendererContext.reCatch(\n error,\n newControlNode\n );\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n }\n\n newControlNode.child = incrementalOutput.node;\n mergeRenderOutput(newOutput, {\n ...incrementalOutput,\n node: undefined,\n });\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n\n rendererContext.reRender(brick, newControlNode, lastOutput.node!);\n\n lastOutput = newOutput;\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 // Even if all sub-routes missed, treat the incremental rendering as performed.\n return true;\n }\n );\n }\n\n const routesOutput = await renderRoutes(\n abstractNode,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n undefined,\n initialTracker\n );\n\n abstractNode.child = routesOutput.node;\n mergeRenderOutput(output, { ...routesOutput, node: undefined });\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = routesOutput.menuRequestNode)\n );\n\n return lastOutput;\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\n };\n rendered.forEach((item) => {\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 initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const size = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n forEachSize: size,\n },\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item) => {\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 const { blockingList, node, menuRequestNode, ...rest } = 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 { slot: sl, ...child } of children) {\n const slot = sl ?? \"\";\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":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_registerFormRenderer","_evaluate","_matchStoryboard","_bindListeners","_setupRootRuntimeContext","_routeMatchedMap","_ErrorNode","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","menuRequestReturnNode","slotId","isIncremental","initialTracker","matched","matchRoutes","output","getEmptyRenderOutput","menuRequestNode","return","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","iid","setMatchedRoute","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","blockingList","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","menuRequest","loadMenu","menu","request","memoizeMenuRequestNode","usedProcessors","strictCollectMemberUsage","size","catchLoad","loadProcessorsImperatively","join","unknownBricks","newOutput","renderBricks","bricks","mergeRenderOutput","appendMenuRequestNode","tplStack","setupRootRuntimeContext","rendered","Promise","all","map","brickConf","renderBrick","Map","forEach","item","legacyRenderBrick","errorBoundary","node","ErrorNode","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","forEachIndex","symbolForTPlExternalForEachIndex","forEachSize","symbolForTPlExternalForEachSize","strict","isStrictMode","length","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","ensureValidControlBrick","contextNames","stateNames","getTracks","tracking","lowerLevelRenderControlNode","tracker","trackDataSource","_slots$slot","computedDataSource","trackAfterInitial","propValue","slot","String","childrenToSlots","children","abstractNode","tag","RenderTag","ABSTRACT","childrenOutput","renderForEach","child","renderControlNode","tplStateStoreScope","formStateStoreScope","changedAfterInitial","disposes","listener","rerenderCount","rawOutput","uninitialized","scopedStores","postAsyncRender","dispose","controlledOutput","onMount","onUnmount","lifeCycle","renderId","currentRenderId","scopedRuntimeContext","createScopedRuntimeContext","reControlledOutput","ROOT","disposed","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","leading","trailing","runtimeBrick","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","tplTagName","getTagNameOfCustomTemplate","app","id","tplCount","set","includes","customElements","FORM_RENDERER","registerFormRenderer","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","compute","inUseBrick","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","BRICK","events","portal","ref","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotFromIndexToSlotId","entries","childSlotId","slotConf","index","lastOutput","parentRoute","incrementalSubRoutes","performIncrementalRender","location","prevLocation","homepage","pathname","matchHomepage","every","prevMatch","newMatch","matchRoute","isEqual","params","query","URLSearchParams","search","failed","incrementalOutput","newControlNode","reBailout","result","reCatch","reMergeMenuRequestNodes","routesOutput","mergeSiblingRenderMenuRequest","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","i","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","sl","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 trackAfterInitial,\n type InitialTracker,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTPlExternalForEachSize,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n MenuRequestNode,\n RenderBrick,\n RenderChildNode,\n RenderAbstract,\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 { registerFormRenderer } from \"./FormRenderer/registerFormRenderer.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 { setMatchedRoute } from \"./routeMatchedMap.js\";\nimport { ErrorNode } from \"./ErrorNode.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}\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 initialTracker?: InitialTracker\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\n if (route.iid) {\n setMatchedRoute(route.iid, matched.match);\n }\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 const usedProcessors = strictCollectMemberUsage(\n route.context,\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 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 undefined,\n initialTracker\n );\n } else {\n newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n menuRequestNode,\n slotId,\n undefined,\n initialTracker\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 initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n setupRootRuntimeContext(bricks, runtimeContext, true);\n const output = getEmptyRenderOutput();\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n );\n\n rendered.forEach((item) => {\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 tplStack = new Map<string, number>(),\n initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n try {\n return await legacyRenderBrick(\n returnNode,\n brickConf,\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n initialTracker\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: await ErrorNode(error, returnNode),\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 tplStack: Map<string, number>,\n initialTracker?: InitialTracker\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 iid: brickConf.iid,\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[symbol as typeof symbolForTplStateStoreId],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n initialTracker\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 `forEach*` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n runtimeContext.forEachSize = brickConf[symbolForTPlExternalForEachSize];\n }\n\n const strict = isStrictMode(runtimeContext);\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\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 const { contextNames, stateNames } = getTracks(dataSource);\n const tracking = !!(contextNames || stateNames);\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext,\n tracker: InitialTracker,\n trackDataSource: boolean\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n if (trackDataSource) {\n trackAfterInitial(\n runtimeContext,\n [{ contextNames, stateNames, propValue: dataSource }],\n tracker\n );\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 const output = getEmptyRenderOutput();\n const abstractNode: RenderAbstract = {\n tag: RenderTag.ABSTRACT,\n return: returnNode,\n iid: brickConf.iid,\n };\n output.node = abstractNode;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n let childrenOutput: RenderOutput | undefined;\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n break;\n }\n childrenOutput = await renderForEach(\n abstractNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n tracker\n );\n break;\n }\n case \":if\":\n case \":switch\": {\n childrenOutput = await renderBricks(\n abstractNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack,\n tracker\n );\n }\n }\n\n if (childrenOutput) {\n abstractNode.child = childrenOutput.node;\n mergeRenderOutput(output, { ...childrenOutput, node: undefined });\n }\n\n return output;\n };\n\n type RenderControlNodeOptions =\n | {\n type: \"initial\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope?: undefined;\n formStateStoreScope?: undefined;\n }\n | {\n type: \"rerender\";\n runtimeContext: RuntimeContext;\n tplStateStoreScope: DataStore<\"STATE\">[];\n formStateStoreScope: DataStore<\"FORM_STATE\">[];\n };\n\n const renderControlNode = async ({\n type,\n runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n }: RenderControlNodeOptions) => {\n let changedAfterInitial = false;\n const tracker: InitialTracker = {\n disposes: [],\n listener: () => {\n changedAfterInitial = true;\n },\n };\n let rerenderCount = 0;\n let rawOutput: RenderOutput;\n let uninitialized = true;\n\n // When perform an incremental sub-route render, for control nodes,\n // context maybe changed just after their data source being computed,\n // as well as props of their children bricks being computed, and before\n // bricks being mounted. Thus these changes may not take any effects.\n // So we need to track the context changes after the initial render,\n // and perform re-renders for these control nodes if necessary.\n while (uninitialized || changedAfterInitial) {\n changedAfterInitial = false;\n rawOutput = await lowerLevelRenderControlNode(\n runtimeContext,\n tracker,\n uninitialized && type === \"initial\"\n );\n\n // Changes may happen during `postAsyncRender`.\n if (!changedAfterInitial && type === \"rerender\") {\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(rawOutput, runtimeContext, [\n runtimeContext.ctxStore,\n ...scopedStores,\n ]);\n }\n\n tracker.disposes.forEach((dispose) => dispose());\n tracker.disposes.length = 0;\n uninitialized = false;\n // istanbul ignore next\n if (++rerenderCount > 10) {\n throw new Error(\n `Maximum rerender stack overflowed (iid: ${brickConf.iid})`\n );\n }\n }\n\n return rawOutput!;\n };\n\n let controlledOutput = await renderControlNode({\n type: \"initial\",\n runtimeContext,\n });\n\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n if (tracking) {\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput = await renderControlNode({\n type: \"rerender\",\n runtimeContext: scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n });\n\n // Ignore stale renders\n if (\n renderId === currentRenderId &&\n !(returnNode.tag !== RenderTag.ROOT && returnNode.disposed)\n ) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n returnNode,\n reControlledOutput.node!,\n controlledOutput.node!\n );\n controlledOutput = reControlledOutput;\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of [...tplStateStoreScope, ...formStateStoreScope]) {\n store.mountAsyncData();\n }\n }\n };\n // Enable leading invocation, to keep tracking orders.\n const debouncedListener = debounce(listener, 0, {\n leading: true,\n trailing: true,\n });\n const runtimeBrick =\n returnNode.tag === RenderTag.ROOT ? null : returnNode;\n const disposes = runtimeBrick ? (runtimeBrick.disposes ??= []) : [];\n if (contextNames) {\n for (const contextName of contextNames) {\n disposes.push(\n runtimeContext.ctxStore.onChange(contextName, debouncedListener)\n );\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n disposes.push(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 registerFormRenderer();\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\n if (brickConf.properties?.compute) {\n formData = await asyncComputeRealValue(formData, runtimeContext);\n }\n } else {\n if (runtimeContext.inUseBrick) {\n // Keep v2 behavior for `useBrick`: treat `transform` as `properties`.\n const transform = (brickConf as { transform?: Record<string, unknown> })\n .transform;\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n brickConf\n );\n\n if (!strict) {\n confProps = {\n ...brickConf.properties,\n ...transform,\n };\n }\n }\n }\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 // Note: properties here has already been initialized.\n trackAfterInitial(runtimeContext, trackingContextList, initialTracker);\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 delete childRuntimeContext.forEachSize;\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(async ([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 initialTracker\n );\n }\n\n let lastOutput = getEmptyRenderOutput();\n const abstractNode: RenderAbstract = {\n tag: RenderTag.ABSTRACT,\n return: brick,\n };\n lastOutput.node = abstractNode;\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 const newOutput = getEmptyRenderOutput();\n const newControlNode: RenderAbstract = {\n tag: RenderTag.ABSTRACT,\n return: brick,\n };\n newOutput.node = newControlNode;\n\n try {\n incrementalOutput = await renderRoutes(\n newControlNode,\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 } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = await rendererContext.reCatch(\n error,\n newControlNode\n );\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n }\n\n // istanbul ignore next: covered by e2e tests\n if (brick.disposed) {\n return true;\n }\n\n newControlNode.child = incrementalOutput.node;\n mergeRenderOutput(newOutput, {\n ...incrementalOutput,\n node: undefined,\n });\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequestNodes(\n menuRequestReturnNode,\n slotConf.routes,\n incrementalOutput.menuRequestNode\n );\n\n rendererContext.reRender(brick, newControlNode, lastOutput.node!);\n\n lastOutput = newOutput;\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 // Even if all sub-routes missed, treat the incremental rendering as performed.\n return true;\n }\n );\n }\n\n const routesOutput = await renderRoutes(\n abstractNode,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n childSlotId,\n undefined,\n initialTracker\n );\n\n abstractNode.child = routesOutput.node;\n mergeRenderOutput(output, { ...routesOutput, node: undefined });\n appendMenuRequestNode(\n menuRequestReturnNode,\n (output.menuRequestNode = routesOutput.menuRequestNode)\n );\n\n return lastOutput;\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequestNode: undefined,\n };\n rendered.forEach((item) => {\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 initialTracker?: InitialTracker\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const size = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n forEachSize: size,\n },\n rendererContext,\n parentRoutes,\n menuRequestReturnNode,\n slotId,\n tplStack && new Map(tplStack),\n initialTracker\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item) => {\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 const { blockingList, node, menuRequestNode, ...rest } = 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 { slot: sl, ...child } of children) {\n const slot = sl ?? \"\";\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":[]}
|
|
@@ -194,6 +194,10 @@ class RendererContext {
|
|
|
194
194
|
}
|
|
195
195
|
reRender(returnNode, node, oldNode) {
|
|
196
196
|
var _prevLastNormal$eleme, _findNextSiblingNode, _prevLastPortal$eleme, _findNextSiblingNode2;
|
|
197
|
+
// istanbul ignore next: defensive check
|
|
198
|
+
if (returnNode.tag !== _enums.RenderTag.ROOT && returnNode.disposed) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
197
201
|
const [prevLastNormal, prevLastPortal] = findLastChildNodes(oldNode);
|
|
198
202
|
const insertBeforeChild = (prevLastNormal ? (_prevLastNormal$eleme = prevLastNormal.element) === null || _prevLastNormal$eleme === void 0 ? void 0 : _prevLastNormal$eleme.nextSibling : (_findNextSiblingNode = findNextSiblingNode(oldNode, false)) === null || _findNextSiblingNode === void 0 ? void 0 : _findNextSiblingNode.element) ?? null;
|
|
199
203
|
const insertPortalBeforeChildCandidates = [];
|
|
@@ -248,11 +252,8 @@ class RendererContext {
|
|
|
248
252
|
returnNode.child = node;
|
|
249
253
|
}
|
|
250
254
|
node.sibling = oldNode.sibling;
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
delete oldNode.child;
|
|
254
|
-
delete oldNode.sibling;
|
|
255
|
-
delete oldNode.return;
|
|
255
|
+
(0, _assertClassBrand2.default)(_RendererContext_brand, this, _cleanUpNodes).call(this, removeAbstracts);
|
|
256
|
+
(0, _assertClassBrand2.default)(_RendererContext_brand, this, _cleanUpNodes).call(this, removeBricks);
|
|
256
257
|
|
|
257
258
|
// Resume `return`
|
|
258
259
|
current = node;
|
|
@@ -439,6 +440,20 @@ function _unmountAbstracts(abstracts) {
|
|
|
439
440
|
for (const item of abstracts) {
|
|
440
441
|
var _item$disposes;
|
|
441
442
|
(_item$disposes = item.disposes) === null || _item$disposes === void 0 || _item$disposes.forEach(dispose => dispose());
|
|
443
|
+
delete item.disposes;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
function _cleanUpNodes(nodes) {
|
|
447
|
+
for (const node of nodes) {
|
|
448
|
+
delete node.child;
|
|
449
|
+
delete node.sibling;
|
|
450
|
+
delete node.return;
|
|
451
|
+
node.disposed = true;
|
|
452
|
+
if (node.tag === _enums.RenderTag.BRICK) {
|
|
453
|
+
delete node.element;
|
|
454
|
+
delete node.runtimeContext;
|
|
455
|
+
}
|
|
456
|
+
Object.freeze(node);
|
|
442
457
|
}
|
|
443
458
|
}
|
|
444
459
|
function _initializeRerenderBricks(bricks) {
|