@next-core/runtime 1.25.7 → 1.26.0

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 (30) hide show
  1. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +1 -1
  2. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  3. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +1 -1
  4. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  5. package/dist/cjs/internal/Renderer.js +4 -5
  6. package/dist/cjs/internal/Renderer.js.map +1 -1
  7. package/dist/cjs/internal/data/DataStore.js +27 -4
  8. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  9. package/dist/cjs/internal/data/realTimeDataInspect.js +42 -0
  10. package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -0
  11. package/dist/cjs/internal/secret_internals.js +13 -0
  12. package/dist/cjs/internal/secret_internals.js.map +1 -1
  13. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +1 -1
  14. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  15. package/dist/esm/internal/FormRenderer/expandFormRenderer.js +1 -1
  16. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  17. package/dist/esm/internal/Renderer.js +4 -5
  18. package/dist/esm/internal/Renderer.js.map +1 -1
  19. package/dist/esm/internal/data/DataStore.js +27 -4
  20. package/dist/esm/internal/data/DataStore.js.map +1 -1
  21. package/dist/esm/internal/data/realTimeDataInspect.js +32 -0
  22. package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -0
  23. package/dist/esm/internal/secret_internals.js +1 -0
  24. package/dist/esm/internal/secret_internals.js.map +1 -1
  25. package/dist/types/internal/data/DataStore.d.ts +4 -1
  26. package/dist/types/internal/data/realTimeDataInspect.d.ts +25 -0
  27. package/dist/types/internal/mediaQuery.d.ts +1 -0
  28. package/dist/types/internal/secret_internals.d.ts +1 -0
  29. package/dist/types/tsdoc-metadata.json +1 -1
  30. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","return","_x32","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotIndexes","Set","entries","_ref7","childSlotId","slotConf","flags","add","performIncrementalRender","_ref8","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x33","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n 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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"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","flushStableLoadBricks","loadBricksImperatively","loadProcessorsImperatively","loadScript","loadStyle","isTrackAll","hasOwnProperty","strictCollectMemberUsage","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoute","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachIndex","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","matchHomepage","listenerFactory","renderRoutes","_x","_x2","_x3","_x4","_x5","_x6","_x7","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","parentRoutes","slotId","isIncremental","matched","output","getEmptyRenderOutput","unauthenticated","_hooks$checkPermissio","route","path","match","runtimeContext","_objectSpread","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","blockingList","type","redirectTo","redirect","resolved","transform","console","error","Error","menuRequest","loadMenu","menu","menuRequests","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","lowerLevelRenderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","renderControlNode","_ref2","_rawOutput$node","rawOutput","PLACEHOLDER","return","_x32","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref3","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","reControlledOutput","scopedStores","postAsyncRender","CustomEvent","detail","rerender","reRender","store","mountAsyncData","debouncedListener","contextName","onChange","tplStateStore","registerArbitraryLifeCycle","test","get","catchLoad","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","formData","confProps","_brickConf$properties","_ref4","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref5","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref6","routeSlotIndexes","Set","entries","_ref7","_parentRoutes","childSlotId","slotConf","incrementalSubRoutes","add","performIncrementalRender","_ref8","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x33","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n 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 } 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 (\n (parentRoutes[parentRoutes.length - 1] as RouteConfOfBricks)\n ?.incrementalSubRoutes\n ) {\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 // Do not ignore incremental rendering even if all sub-routes are missed.\n // Since parent route is matched.\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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"}
@@ -12,15 +12,17 @@ import { resolveDataStore } from "./resolveDataStore.js";
12
12
  import { handleHttpError } from "../../handleHttpError.js";
13
13
  import { computePropertyValue } from "../compute/computeRealProperties.js";
14
14
  import { _internalApiGetRenderId } from "../Runtime.js";
15
+ import { callRealTimeDataInspectHooks, realTimeDataInspectRoot } from "./realTimeDataInspect.js";
15
16
  var supportContextResolveTriggerBrickLifeCycle = ["onBeforePageLoad", "onPageLoad", "onBeforePageLeave", "onPageLeave", "onAnchorLoad", "onAnchorUnload"];
16
17
  export class DataStore {
17
18
  // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整
18
- constructor(type, hostBrick, rendererContext) {
19
+ constructor(type, hostBrick, rendererContext, stateStoreId) {
19
20
  _defineProperty(this, "type", void 0);
20
21
  _defineProperty(this, "data", new Map());
21
22
  _defineProperty(this, "changeEventType", void 0);
22
23
  _defineProperty(this, "pendingStack", []);
23
24
  _defineProperty(this, "hostBrick", void 0);
25
+ _defineProperty(this, "stateStoreId", void 0);
24
26
  _defineProperty(this, "batchUpdate", false);
25
27
  _defineProperty(this, "batchUpdateContextsNames", []);
26
28
  _defineProperty(this, "rendererContext", void 0);
@@ -29,6 +31,7 @@ export class DataStore {
29
31
  this.changeEventType = this.type === "FORM_STATE" ? "formstate.change" : this.type === "STATE" ? "state.change" : "context.change";
30
32
  this.hostBrick = hostBrick;
31
33
  this.rendererContext = rendererContext;
34
+ this.stateStoreId = stateStoreId;
32
35
  }
33
36
  getAllValues() {
34
37
  return Object.fromEntries([...this.data.entries()].map(_ref => {
@@ -42,6 +45,23 @@ export class DataStore {
42
45
  var _this$data$get;
43
46
  return (_this$data$get = this.data.get(name)) === null || _this$data$get === void 0 ? void 0 : _this$data$get.value;
44
47
  }
48
+ notifyRealTimeDataChange(name, value) {
49
+ if (realTimeDataInspectRoot) {
50
+ var {
51
+ tplStateStoreId
52
+ } = realTimeDataInspectRoot;
53
+ if (tplStateStoreId ? this.type === "STATE" && this.stateStoreId === tplStateStoreId : this.type === "CTX") {
54
+ callRealTimeDataInspectHooks({
55
+ changeType: "update",
56
+ tplStateStoreId,
57
+ detail: {
58
+ name,
59
+ value
60
+ }
61
+ });
62
+ }
63
+ }
64
+ }
45
65
  getAffectListByContext(name) {
46
66
  var affectNames = [name];
47
67
  this.data.forEach((value, key) => {
@@ -289,6 +309,9 @@ export class DataStore {
289
309
  value = yield asyncComputeRealValue(dataConf.value, runtimeContext);
290
310
  }
291
311
  }
312
+ if (_this3.data.has(dataConf.name)) {
313
+ throw new Error("".concat(_this3.type, " '").concat(dataConf.name, "' has already been declared"));
314
+ }
292
315
  var newData = {
293
316
  name: dataConf.name,
294
317
  value,
@@ -330,9 +353,9 @@ export class DataStore {
330
353
  }, dataConf));
331
354
  }
332
355
  }
333
- if (_this3.data.has(dataConf.name)) {
334
- throw new Error("".concat(_this3.type, " '").concat(dataConf.name, "' has already been declared"));
335
- }
356
+ newData.eventTarget.addEventListener(_this3.changeEventType, e => {
357
+ _this3.notifyRealTimeDataChange(dataConf.name, e.detail);
358
+ });
336
359
  _this3.data.set(dataConf.name, newData);
337
360
  if (Array.isArray(routePath)) {
338
361
  for (var route of routePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","EventTarget","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","_internalApiGetRenderId","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","WeakMap","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","_objectSpread","cache","then","val","err","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","routeMap","has","asyncMounted","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_this3$rendererContex","_x","apply","arguments","lazy","newData","trigger","_this3$rendererContex2","registerArbitraryLifeCycle","track","dep","batchAddListener","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\nimport { _internalApiGetRenderId } from \"../Runtime.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n const shouldDismiss = (error: unknown) => {\n // If render twice immediately, flow API contracts maybe cleared before\n // the second rendering, while the page load handlers of the first\n // rendering can't be cancelled, which throws `FlowApiNotFoundError`.\n // So we ignore error reporting for this case.\n let renderId: string | undefined;\n return (\n (error as Error)?.name === \"FlowApiNotFoundError\" &&\n !!(renderId = this.rendererContext?.renderId) &&\n renderId !== _internalApiGetRenderId()\n );\n };\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!shouldDismiss(err) && !callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n if (!shouldDismiss(err) && callback.error) {\n callbackFactory(\"error\")(err);\n }\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, {\n ...options,\n renderId: this.rendererContext?.renderId,\n })) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","EventTarget","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","_internalApiGetRenderId","callRealTimeDataInspectHooks","realTimeDataInspectRoot","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","stateStoreId","_defineProperty","Map","WeakMap","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","notifyRealTimeDataChange","tplStateStoreId","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","_objectSpread","cache","then","val","err","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","routeMap","has","asyncMounted","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_this3$rendererContex","_x","apply","arguments","lazy","newData","trigger","_this3$rendererContex2","registerArbitraryLifeCycle","track","dep","batchAddListener","e","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\nimport { _internalApiGetRenderId } from \"../Runtime.js\";\nimport {\n callRealTimeDataInspectHooks,\n realTimeDataInspectRoot,\n} from \"./realTimeDataInspect.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n private readonly stateStoreId?: string;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext,\n stateStoreId?: string\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n this.stateStoreId = stateStoreId;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private notifyRealTimeDataChange(name: string, value: unknown) {\n if (realTimeDataInspectRoot) {\n const { tplStateStoreId } = realTimeDataInspectRoot;\n if (\n tplStateStoreId\n ? this.type === \"STATE\" && this.stateStoreId === tplStateStoreId\n : this.type === \"CTX\"\n ) {\n callRealTimeDataInspectHooks({\n changeType: \"update\",\n tplStateStoreId,\n detail: {\n name,\n value,\n },\n });\n }\n }\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n const shouldDismiss = (error: unknown) => {\n // If render twice immediately, flow API contracts maybe cleared before\n // the second rendering, while the page load handlers of the first\n // rendering can't be cancelled, which throws `FlowApiNotFoundError`.\n // So we ignore error reporting for this case.\n let renderId: string | undefined;\n return (\n (error as Error)?.name === \"FlowApiNotFoundError\" &&\n !!(renderId = this.rendererContext?.renderId) &&\n renderId !== _internalApiGetRenderId()\n );\n };\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!shouldDismiss(err) && !callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n if (!shouldDismiss(err) && callback.error) {\n callbackFactory(\"error\")(err);\n }\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, {\n ...options,\n renderId: this.rendererContext?.renderId,\n })) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n newData.eventTarget.addEventListener(this.changeEventType, (e) => {\n this.notifyRealTimeDataChange(dataConf.name, (e as CustomEvent).detail);\n });\n\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { getAllContextValues } from "../secret_internals.js";
2
+ export var realTimeDataInspectRoot;
3
+ export var RealTimeDataInspectHooks = [];
4
+ export function setRealTimeDataInspectRoot(root) {
5
+ realTimeDataInspectRoot = root;
6
+ var data = getAllContextValues({
7
+ tplStateStoreId: root.tplStateStoreId
8
+ });
9
+ callRealTimeDataInspectHooks({
10
+ changeType: "initialize",
11
+ tplStateStoreId: root.tplStateStoreId,
12
+ detail: {
13
+ data
14
+ }
15
+ });
16
+ }
17
+ export function addRealTimeDataInspectHook(hook) {
18
+ RealTimeDataInspectHooks.push(hook);
19
+ }
20
+ export function callRealTimeDataInspectHooks(detail) {
21
+ setTimeout(() => {
22
+ for (var hook of RealTimeDataInspectHooks) {
23
+ try {
24
+ hook(detail);
25
+ } catch (error) {
26
+ // eslint-disable-next-line no-console
27
+ console.error("RealTimeDataInspectHook failed (".concat(detail.changeType, "):"), error);
28
+ }
29
+ }
30
+ });
31
+ }
32
+ //# sourceMappingURL=realTimeDataInspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realTimeDataInspect.js","names":["getAllContextValues","realTimeDataInspectRoot","RealTimeDataInspectHooks","setRealTimeDataInspectRoot","root","data","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","addRealTimeDataInspectHook","hook","push","setTimeout","error","console","concat"],"sources":["../../../../src/internal/data/realTimeDataInspect.ts"],"sourcesContent":["import { getAllContextValues } from \"../secret_internals.js\";\n\nexport interface RealTimeDataInspectRoot {\n tplStateStoreId?: string;\n}\n\nexport type RealTimeDataInspectHook = (\n detail: RealTimeDataInspectDetail\n) => void;\n\nexport type RealTimeDataInspectDetail =\n | RealTimeDataInspectUpdateDetail\n | RealTimeDataInspectInitializeDetail;\n\nexport interface RealTimeDataInspectUpdateDetail {\n changeType: \"update\";\n tplStateStoreId?: string;\n detail: {\n name: string;\n value: unknown;\n };\n}\n\nexport interface RealTimeDataInspectInitializeDetail {\n changeType: \"initialize\";\n tplStateStoreId?: string;\n detail: {\n data: Record<string, unknown>;\n };\n}\n\nexport let realTimeDataInspectRoot: RealTimeDataInspectRoot | undefined;\n\nexport const RealTimeDataInspectHooks: RealTimeDataInspectHook[] = [];\n\nexport function setRealTimeDataInspectRoot(root: RealTimeDataInspectRoot) {\n realTimeDataInspectRoot = root;\n\n const data = getAllContextValues({ tplStateStoreId: root.tplStateStoreId });\n callRealTimeDataInspectHooks({\n changeType: \"initialize\",\n tplStateStoreId: root.tplStateStoreId,\n detail: { data },\n });\n}\n\nexport function addRealTimeDataInspectHook(hook: RealTimeDataInspectHook) {\n RealTimeDataInspectHooks.push(hook);\n}\n\nexport function callRealTimeDataInspectHooks(\n detail: RealTimeDataInspectDetail\n) {\n setTimeout(() => {\n for (const hook of RealTimeDataInspectHooks) {\n try {\n hook(detail);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `RealTimeDataInspectHook failed (${detail.changeType}):`,\n error\n );\n }\n }\n });\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,wBAAwB;AA+B5D,OAAO,IAAIC,uBAA4D;AAEvE,OAAO,IAAMC,wBAAmD,GAAG,EAAE;AAErE,OAAO,SAASC,0BAA0BA,CAACC,IAA6B,EAAE;EACxEH,uBAAuB,GAAGG,IAAI;EAE9B,IAAMC,IAAI,GAAGL,mBAAmB,CAAC;IAAEM,eAAe,EAAEF,IAAI,CAACE;EAAgB,CAAC,CAAC;EAC3EC,4BAA4B,CAAC;IAC3BC,UAAU,EAAE,YAAY;IACxBF,eAAe,EAAEF,IAAI,CAACE,eAAe;IACrCG,MAAM,EAAE;MAAEJ;IAAK;EACjB,CAAC,CAAC;AACJ;AAEA,OAAO,SAASK,0BAA0BA,CAACC,IAA6B,EAAE;EACxET,wBAAwB,CAACU,IAAI,CAACD,IAAI,CAAC;AACrC;AAEA,OAAO,SAASJ,4BAA4BA,CAC1CE,MAAiC,EACjC;EACAI,UAAU,CAAC,MAAM;IACf,KAAK,IAAMF,IAAI,IAAIT,wBAAwB,EAAE;MAC3C,IAAI;QACFS,IAAI,CAACF,MAAM,CAAC;MACd,CAAC,CAAC,OAAOK,KAAK,EAAE;QACd;QACAC,OAAO,CAACD,KAAK,oCAAAE,MAAA,CACwBP,MAAM,CAACD,UAAU,SACpDM,KACF,CAAC;MACH;IACF;EACF,CAAC,CAAC;AACJ"}
@@ -264,4 +264,5 @@ function _getAddedContracts() {
264
264
  });
265
265
  return _getAddedContracts.apply(this, arguments);
266
266
  }
267
+ export { setRealTimeDataInspectRoot, addRealTimeDataInspectHook } from "./data/realTimeDataInspect.js";
267
268
  //# sourceMappingURL=secret_internals.js.map