@next-core/runtime 1.22.4 → 1.22.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/cjs/index.js.map +1 -1
  2. package/dist/cjs/internal/Renderer.js +26 -22
  3. package/dist/cjs/internal/Renderer.js.map +1 -1
  4. package/dist/cjs/internal/RendererContext.js +36 -7
  5. package/dist/cjs/internal/RendererContext.js.map +1 -1
  6. package/dist/cjs/internal/Router.js +19 -8
  7. package/dist/cjs/internal/Router.js.map +1 -1
  8. package/dist/cjs/internal/Runtime.js.map +1 -1
  9. package/dist/cjs/internal/enums.js +1 -0
  10. package/dist/cjs/internal/enums.js.map +1 -1
  11. package/dist/cjs/internal/interfaces.js.map +1 -1
  12. package/dist/cjs/internal/mount.js +41 -39
  13. package/dist/cjs/internal/mount.js.map +1 -1
  14. package/dist/cjs/internal/secret_internals.js +5 -2
  15. package/dist/cjs/internal/secret_internals.js.map +1 -1
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/internal/Renderer.js +47 -38
  18. package/dist/esm/internal/Renderer.js.map +1 -1
  19. package/dist/esm/internal/RendererContext.js +36 -7
  20. package/dist/esm/internal/RendererContext.js.map +1 -1
  21. package/dist/esm/internal/Router.js +19 -7
  22. package/dist/esm/internal/Router.js.map +1 -1
  23. package/dist/esm/internal/Runtime.js.map +1 -1
  24. package/dist/esm/internal/enums.js +1 -0
  25. package/dist/esm/internal/enums.js.map +1 -1
  26. package/dist/esm/internal/interfaces.js.map +1 -1
  27. package/dist/esm/internal/mount.js +41 -39
  28. package/dist/esm/internal/mount.js.map +1 -1
  29. package/dist/esm/internal/secret_internals.js +5 -2
  30. package/dist/esm/internal/secret_internals.js.map +1 -1
  31. package/dist/types/index.d.ts +1 -1
  32. package/dist/types/internal/Renderer.d.ts +6 -5
  33. package/dist/types/internal/RendererContext.d.ts +5 -5
  34. package/dist/types/internal/Runtime.d.ts +8 -0
  35. package/dist/types/internal/enums.d.ts +2 -1
  36. package/dist/types/internal/interfaces.d.ts +11 -5
  37. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_auth","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_CustomProcessors","_CustomTemplates","_fetchByProvider","_getBasePath","_getPageInfo","_handleHttpError","_history","_createRoot","_Runtime","__secret_internals","_interopRequireWildcard","_test_only","_themeAndMode","_checkIf","_WidgetFunctions","_WidgetI18n","_StoryboardFunctionRegistry","_matchPath","_Notification","_Dialog"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.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 {\n createRuntime,\n getRuntime,\n type RuntimeOptions,\n type RuntimeHooks,\n type RuntimeHooksMenuHelpers,\n type ImagesFactory,\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 } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_auth","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_CustomProcessors","_CustomTemplates","_fetchByProvider","_getBasePath","_getPageInfo","_handleHttpError","_history","_createRoot","_Runtime","__secret_internals","_interopRequireWildcard","_test_only","_themeAndMode","_checkIf","_WidgetFunctions","_WidgetI18n","_StoryboardFunctionRegistry","_matchPath","_Notification","_Dialog"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./auth.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 {\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 } from \"./internal/matchPath.js\";\nexport { Notification, type NotificationOptions } from \"./Notification.js\";\nexport { Dialog, type DialogOptions } from \"./Dialog.js\";\n"],"mappings":"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"}
@@ -36,10 +36,7 @@ var _matchStoryboard = require("./matchStoryboard.js");
36
36
  var _bindListeners = require("./bindListeners.js");
37
37
  async function renderRoutes(returnNode, routes, _runtimeContext, rendererContext, parentRoutes, slotId, isIncremental) {
38
38
  const matched = await (0, _matchRoutes.matchRoutes)(routes, _runtimeContext);
39
- const output = {
40
- blockingList: [],
41
- menuRequests: []
42
- };
39
+ const output = getEmptyRenderOutput();
43
40
  switch (matched) {
44
41
  case "missed":
45
42
  break;
@@ -50,6 +47,7 @@ async function renderRoutes(returnNode, routes, _runtimeContext, rendererContext
50
47
  {
51
48
  var _hooks$checkPermissio;
52
49
  const route = output.route = matched.route;
50
+ output.path = matched.match.path;
53
51
  const runtimeContext = {
54
52
  ..._runtimeContext,
55
53
  match: matched.match
@@ -109,10 +107,7 @@ async function renderRoutes(returnNode, routes, _runtimeContext, rendererContext
109
107
  return output;
110
108
  }
111
109
  async function renderBricks(returnNode, bricks, runtimeContext, rendererContext, parentRoutes, slotId, tplStack, keyPath) {
112
- const output = {
113
- blockingList: [],
114
- menuRequests: []
115
- };
110
+ const output = getEmptyRenderOutput();
116
111
  const kPath = keyPath !== null && keyPath !== void 0 ? keyPath : [];
117
112
  // 多个构件并行异步转换,但转换的结果按原顺序串行合并。
118
113
  const rendered = await Promise.all(bricks.map((brickConf, index) => renderBrick(returnNode, brickConf, runtimeContext, rendererContext, parentRoutes, slotId, kPath.concat(index), tplStack && new Map(tplStack))));
@@ -127,10 +122,7 @@ async function renderBricks(returnNode, bricks, runtimeContext, rendererContext,
127
122
  }
128
123
  async function renderBrick(returnNode, brickConf, _runtimeContext, rendererContext, parentRoutes, slotId, keyPath = [], tplStack = new Map()) {
129
124
  var _hooks$checkPermissio2, _runtimeContext$app;
130
- const output = {
131
- blockingList: [],
132
- menuRequests: []
133
- };
125
+ const output = getEmptyRenderOutput();
134
126
  if (!brickConf.brick) {
135
127
  if (brickConf.template) {
136
128
  // eslint-disable-next-line no-console
@@ -203,7 +195,7 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
203
195
  const {
204
196
  dataSource
205
197
  } = brickConf;
206
- const renderControlNode = async runtimeContext => {
198
+ const lowerLevelRenderControlNode = async runtimeContext => {
207
199
  var _slots$slot;
208
200
  // First, compute the `dataSource`
209
201
  const computedDataSource = await (0, _computeRealValue.asyncComputeRealValue)(dataSource, runtimeContext);
@@ -217,13 +209,13 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
217
209
  // Then, get the bricks in that matched slot.
218
210
  const bricks = slots && (0, _general.hasOwnProperty)(slots, slot) && ((_slots$slot = slots[slot]) === null || _slots$slot === void 0 ? void 0 : _slots$slot.bricks);
219
211
  if (!Array.isArray(bricks)) {
220
- return output;
212
+ return getEmptyRenderOutput();
221
213
  }
222
214
  switch (brickName) {
223
215
  case ":forEach":
224
216
  {
225
217
  if (!Array.isArray(computedDataSource)) {
226
- return output;
218
+ return getEmptyRenderOutput();
227
219
  }
228
220
  return renderForEach(returnNode, computedDataSource, bricks, runtimeContext, rendererContext, parentRoutes, slotId, tplStack, keyPath);
229
221
  }
@@ -234,6 +226,15 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
234
226
  }
235
227
  }
236
228
  };
229
+ const renderControlNode = async runtimeContext => {
230
+ var _rawOutput$node;
231
+ const rawOutput = await lowerLevelRenderControlNode(runtimeContext);
232
+ (_rawOutput$node = rawOutput.node) !== null && _rawOutput$node !== void 0 ? _rawOutput$node : rawOutput.node = {
233
+ tag: _enums.RenderTag.PLACEHOLDER,
234
+ return: returnNode
235
+ };
236
+ return rawOutput;
237
+ };
237
238
  const controlledOutput = await renderControlNode(runtimeContext);
238
239
  const {
239
240
  onMount,
@@ -249,9 +250,9 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
249
250
  const listener = async () => {
250
251
  const currentRenderId = ++renderId;
251
252
  const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] = createScopedRuntimeContext(runtimeContext);
252
- const controlOutput = await renderControlNode(scopedRuntimeContext);
253
+ const reControlledOutput = await renderControlNode(scopedRuntimeContext);
253
254
  const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];
254
- await postAsyncRender(controlOutput, scopedRuntimeContext, scopedStores);
255
+ await postAsyncRender(reControlledOutput, scopedRuntimeContext, scopedStores);
255
256
 
256
257
  // Ignore stale renders
257
258
  if (renderId === currentRenderId) {
@@ -262,7 +263,7 @@ async function renderBrick(returnNode, brickConf, _runtimeContext, rendererConte
262
263
  }
263
264
  }));
264
265
  }
265
- rendererContext.reRender(slotId, keyPath, controlOutput.node, returnNode);
266
+ rendererContext.reRender(slotId, keyPath, reControlledOutput.node, returnNode);
266
267
  if (onMount) {
267
268
  (0, _bindListeners.listenerFactory)(onMount, scopedRuntimeContext)(new CustomEvent("mount", {
268
269
  detail: {
@@ -528,10 +529,7 @@ function ensureValidControlBrick(brick) {
528
529
  }
529
530
  }
530
531
  async function renderForEach(returnNode, dataSource, bricks, runtimeContext, rendererContext, parentRoutes, slotId, tplStack, keyPath) {
531
- const output = {
532
- blockingList: [],
533
- menuRequests: []
534
- };
532
+ const output = getEmptyRenderOutput();
535
533
  const rows = dataSource.length;
536
534
  const rendered = await Promise.all(dataSource.map((item, i) => Promise.all(bricks.map((brickConf, j) => renderBrick(returnNode, brickConf, {
537
535
  ...runtimeContext,
@@ -610,6 +608,12 @@ function mergeRenderOutput(output, newOutput) {
610
608
  }
611
609
  Object.assign(output, rest);
612
610
  }
611
+ function getEmptyRenderOutput() {
612
+ return {
613
+ blockingList: [],
614
+ menuRequests: []
615
+ };
616
+ }
613
617
  function childrenToSlots(children, originalSlots) {
614
618
  let newSlots = originalSlots;
615
619
  // istanbul ignore next
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","_matchStoryboard","_bindListeners","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","matchRoutes","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","RenderTag","BRICK","memoizeMenuRequests","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","forEachIndex","symbolForTPlExternalForEachIndex","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","renderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","scopedStores","postAsyncRender","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","catchLoad","unknownBricks","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","FORM_RENDERER","FormRendererElement","HTMLElement","$$typeof","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","return","events","portal","iid","ref","usedProcessors","strictCollectMemberUsage","size","loadProcessorsImperatively","join","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotIndexes","Set","entries","childSlotId","slotConf","flags","add","performIncrementalRender","location","homepage","pathname","matchHomepage","every","matchRoute","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","childrenOutput","has","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n 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 controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n 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 controlOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["_loader","require","_cook","_general","_storyboard","_lodash","_checkIf","_computeRealProperties","_resolveData","_computeRealValue","_listenOnTrackingContext","_matchRoutes","_constants","_expandCustomTemplate","_utils","_CustomTemplates","_Runtime","_enums","_getTracks","_isStrictMode","_constants2","_expandFormRenderer","_evaluate","_matchStoryboard","_bindListeners","renderRoutes","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","matchRoutes","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","hooks","checkPermissions","preCheckPermissionsForBrickOrRoute","value","asyncComputeRealValue","preLoadBricks","Array","isArray","blockingList","loadBricksImperatively","getBrickPackages","type","redirectTo","redirect","resolved","resolveData","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","RenderTag","BRICK","memoizeMenuRequests","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_hooks$checkPermissio2","_runtimeContext$app","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","symbolForTplStateStoreId","formStateStoreId","symbolForFormStateStoreId","hasOwnProperty","symbolForTPlExternalForEachItem","forEachItem","forEachIndex","symbolForTPlExternalForEachIndex","length","strict","isStrictMode","warnAboutStrictMode","asyncCheckBrickIf","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","renderControlNode","_rawOutput$node","rawOutput","PLACEHOLDER","return","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","getTracks","renderId","listener","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","listenerFactory","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","debounce","contextName","onChange","tplStateStore","getTplStateStore","registerArbitraryLifeCycle","test","customTemplates","get","catchLoad","unknownBricks","tplTagName","getTagNameOfCustomTemplate","app","id","_tplStack$get","tplCount","set","includes","customElements","FORM_RENDERER","FormRendererElement","HTMLElement","$$typeof","enqueueStableLoadBricks","formData","confProps","_brickConf$properties","properties","trackingContextList","asyncPropertyEntries","asyncComputeRealPropertyEntries","computedPropsFromHost","symbolForAsyncComputedPropsFromHost","isScript","props","constructAsyncProperties","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","loadScript","loadStyle","events","portal","iid","ref","usedProcessors","strictCollectMemberUsage","size","loadProcessorsImperatively","join","loadProperties","listenOnTrackingContext","registerBrickLifeCycle","expandedBrickConf","expandCustomTemplate","expandFormRenderer","childRuntimeContext","loadChildren","routeSlotIndexes","Set","entries","childSlotId","slotConf","flags","add","performIncrementalRender","location","homepage","pathname","matchHomepage","every","matchRoute","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","childrenOutput","has","child","isTrackAll","isPreEvaluated","getPreEvaluatedRaw","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","flushStableLoadBricks","waitForAll","menuConf","warn","rest","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderChildNode,\n RenderReturnNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderChildNode;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n path?: string;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderReturnNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output = getEmptyRenderOutput();\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n output.path = matched.match.path;\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderReturnNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderReturnNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const lowerLevelRenderControlNode = async (\n runtimeContext: RuntimeContext\n ) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return getEmptyRenderOutput();\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return getEmptyRenderOutput();\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n const rawOutput = await lowerLevelRenderControlNode(runtimeContext);\n rawOutput.node ??= {\n tag: RenderTag.PLACEHOLDER,\n return: returnNode,\n };\n return rawOutput;\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const reControlledOutput =\n await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n reControlledOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n reControlledOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderReturnNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output = getEmptyRenderOutput();\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nfunction getEmptyRenderOutput(): RenderOutput {\n return {\n blockingList: [],\n menuRequests: [],\n };\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
@@ -200,7 +200,6 @@ class RendererContext {
200
200
  });
201
201
  }
202
202
  reRender(slotId, keyPath, node, returnNode) {
203
- var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme, _prevLastPortal$eleme2;
204
203
  const memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
205
204
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
206
205
  const memoized = (0, _classPrivateFieldGet2.default)(this, _memoized).get(returnNode).get(memKey);
@@ -210,8 +209,17 @@ class RendererContext {
210
209
  lastNormal: prevLastNormal,
211
210
  lastPortal: prevLastPortal
212
211
  } = memoized;
213
- const insertBeforeChild = (_prevLastNormal$eleme = prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme2 = prevLastNormal.element) === null || _prevLastNormal$eleme2 === void 0 ? void 0 : _prevLastNormal$eleme2.nextSibling) !== null && _prevLastNormal$eleme !== void 0 ? _prevLastNormal$eleme : null;
214
- const insertPortalBeforeChild = (_prevLastPortal$eleme = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme2 = prevLastPortal.element) === null || _prevLastPortal$eleme2 === void 0 ? void 0 : _prevLastPortal$eleme2.nextSibling) !== null && _prevLastPortal$eleme !== void 0 ? _prevLastPortal$eleme : null;
212
+ let insertBeforeChild;
213
+ let insertPortalBeforeChild;
214
+ if ((prevNode === null || prevNode === void 0 ? void 0 : prevNode.tag) === _enums.RenderTag.PLACEHOLDER) {
215
+ var _getNextNormalNode$el, _getNextNormalNode, _getNextPortalNode$el, _getNextPortalNode;
216
+ insertBeforeChild = (_getNextNormalNode$el = (_getNextNormalNode = getNextNormalNode(prevNode)) === null || _getNextNormalNode === void 0 ? void 0 : _getNextNormalNode.element) !== null && _getNextNormalNode$el !== void 0 ? _getNextNormalNode$el : null;
217
+ insertPortalBeforeChild = (_getNextPortalNode$el = (_getNextPortalNode = getNextPortalNode(prevNode)) === null || _getNextPortalNode === void 0 ? void 0 : _getNextPortalNode.element) !== null && _getNextPortalNode$el !== void 0 ? _getNextPortalNode$el : null;
218
+ } else {
219
+ var _prevLastNormal$eleme, _prevLastNormal$eleme2, _prevLastPortal$eleme, _prevLastPortal$eleme2;
220
+ insertBeforeChild = (_prevLastNormal$eleme = prevLastNormal === null || prevLastNormal === void 0 || (_prevLastNormal$eleme2 = prevLastNormal.element) === null || _prevLastNormal$eleme2 === void 0 ? void 0 : _prevLastNormal$eleme2.nextSibling) !== null && _prevLastNormal$eleme !== void 0 ? _prevLastNormal$eleme : null;
221
+ insertPortalBeforeChild = (_prevLastPortal$eleme = prevLastPortal === null || prevLastPortal === void 0 || (_prevLastPortal$eleme2 = prevLastPortal.element) === null || _prevLastPortal$eleme2 === void 0 ? void 0 : _prevLastPortal$eleme2.nextSibling) !== null && _prevLastPortal$eleme !== void 0 ? _prevLastPortal$eleme : null;
222
+ }
215
223
  const last = getLastNode(node);
216
224
  memoized.node = node;
217
225
  memoized.last = last;
@@ -278,8 +286,9 @@ class RendererContext {
278
286
  while (root && root.return) {
279
287
  root = root.return;
280
288
  }
289
+ // istanbul ignore next
281
290
  if (((_root = root) === null || _root === void 0 ? void 0 : _root.tag) !== _enums.RenderTag.ROOT) {
282
- throw new Error("Cannot find render root node");
291
+ throw new Error("Cannot find render root node. This is a bug of Brick Next, please report it.");
283
292
  }
284
293
  const portal = typeof root.createPortal === "function" ? root.createPortal() : root.createPortal;
285
294
  portal.insertBefore(portalFragment, insertPortalBeforeChild);
@@ -491,10 +500,19 @@ function getLastNode(node) {
491
500
  return last;
492
501
  }
493
502
  function getLastNormalNode(node) {
503
+ return getSpecifiedNormalNode(node, false);
504
+ }
505
+ function getNextNormalNode(node) {
506
+ return getSpecifiedNormalNode(node, true);
507
+ }
508
+ function getSpecifiedNormalNode(node, next) {
494
509
  let last;
495
510
  let current = node;
496
511
  while (current) {
497
- if (!current.portal) {
512
+ if (current.tag === _enums.RenderTag.BRICK && !current.portal) {
513
+ if (next) {
514
+ return current;
515
+ }
498
516
  last = current;
499
517
  }
500
518
  current = current.sibling;
@@ -502,10 +520,19 @@ function getLastNormalNode(node) {
502
520
  return last;
503
521
  }
504
522
  function getLastPortalNode(node) {
523
+ return getSpecifiedPortalNode(node, false);
524
+ }
525
+ function getNextPortalNode(node) {
526
+ return getSpecifiedPortalNode(node, true);
527
+ }
528
+ function getSpecifiedPortalNode(node, next) {
505
529
  let last;
506
530
  let current = node;
507
531
  while (current) {
508
- if (current.portal) {
532
+ if (current.tag === _enums.RenderTag.BRICK && current.portal) {
533
+ if (next) {
534
+ return current;
535
+ }
509
536
  last = current;
510
537
  }
511
538
  if (current.child) {
@@ -530,7 +557,9 @@ function getBrickRange(from, to) {
530
557
  const range = new Set();
531
558
  let current = from;
532
559
  while (current) {
533
- range.add(current);
560
+ if (current.tag === _enums.RenderTag.BRICK) {
561
+ range.add(current);
562
+ }
534
563
  if (current.child) {
535
564
  current = current.child;
536
565
  } else if (current === to) {