@next-core/runtime 1.22.3 → 1.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/internal/CustomTemplates/constants.js +3 -1
- package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +1 -0
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +7 -6
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +1 -0
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +6 -3
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +10 -6
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js +1 -0
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +1 -0
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +8 -7
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +1 -0
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/Renderer.js +7 -4
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +10 -6
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/types/internal/CustomTemplates/constants.d.ts +2 -0
- package/dist/types/internal/interfaces.d.ts +1 -0
- package/package.json +2 -2
|
@@ -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","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","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","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","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","return","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref4","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","routeSlotIndexes","Set","entries","_ref6","childSlotId","slotConf","flags","add","performIncrementalRender","_ref7","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x32","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem`\n // from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n controlOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[]\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"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","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","disposeDataInRoutes","routePath","concat","define","context","undefined","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","path","menuRequest","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","tag","BRICK","memoizeMenuRequests","_x8","_x9","_x10","_x11","_x12","_x13","_x14","_x15","_renderBricks","tplStack","keyPath","kPath","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoize","node","_x16","_x17","_x18","_x19","_x20","_x21","_renderBrick","_hooks$checkPermissio2","_runtimeContext$app","length","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","forEachIndex","strict","brickName","startsWith","_brickConf$lifeCycle","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","_x31","controlledOutput","onMount","onUnmount","lifeCycle","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","scopedRuntimeContext","tplStateStoreScope","formStateStoreScope","createScopedRuntimeContext","controlOutput","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","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","isScript","props","src","rel","href","_window$PUBLIC_ROOT","prefix","window","PUBLIC_ROOT","attrs","_excluded4","_excluded5","return","events","portal","iid","ref","usedProcessors","size","join","loadProperties","_ref4","registerBrickLifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","routeSlotIndexes","Set","entries","_ref6","childSlotId","slotConf","flags","add","performIncrementalRender","_ref7","location","homepage","pathname","every","query","URLSearchParams","search","failed","incrementalOutput","reBailout","reMergeMenuRequests","result","reCatch","_x32","childrenOutput","has","child","_x22","_x23","_x24","_x25","_x26","_x27","_x28","_x29","_x30","_renderForEach","rows","i","j","flat","getDataStores","tplStateStoreMap","values","formStateStoreMap","stores","waitForAll","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","name","unknownPolicy","catch","e"],"sources":["../../../src/internal/Renderer.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickConfInTemplate,\n ContextConf,\n MenuConf,\n RouteConf,\n SlotConfOfBricks,\n SlotsConf,\n StaticMenuConf,\n} from \"@next-core/types\";\nimport {\n enqueueStableLoadBricks,\n flushStableLoadBricks,\n loadBricksImperatively,\n loadProcessorsImperatively,\n loadScript,\n loadStyle,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealPropertyEntries,\n constructAsyncProperties,\n} from \"./compute/computeRealProperties.js\";\nimport { resolveData } from \"./data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./compute/computeRealValue.js\";\nimport {\n TrackingContextItem,\n listenOnTrackingContext,\n} from \"./compute/listenOnTrackingContext.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport { matchRoute, matchRoutes } from \"./matchRoutes.js\";\nimport {\n symbolForAsyncComputedPropsFromHost,\n symbolForTPlExternalForEachIndex,\n symbolForTPlExternalForEachItem,\n symbolForTplStateStoreId,\n} from \"./CustomTemplates/constants.js\";\nimport { expandCustomTemplate } from \"./CustomTemplates/expandCustomTemplate.js\";\nimport type {\n RenderBrick,\n RenderNode,\n RuntimeBrickConfWithSymbols,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport {\n getTagNameOfCustomTemplate,\n getTplStateStore,\n} from \"./CustomTemplates/utils.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport type { NextHistoryState } from \"./historyExtended.js\";\nimport { getBrickPackages, hooks } from \"./Runtime.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { getTracks } from \"./compute/getTracks.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport {\n FORM_RENDERER,\n RuntimeBrickConfOfFormSymbols,\n symbolForFormStateStoreId,\n} from \"./FormRenderer/constants.js\";\nimport { expandFormRenderer } from \"./FormRenderer/expandFormRenderer.js\";\nimport { isPreEvaluated } from \"./compute/evaluate.js\";\nimport { getPreEvaluatedRaw } from \"./compute/evaluate.js\";\nimport { RuntimeBrickConfOfTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { matchHomepage } from \"./matchStoryboard.js\";\nimport type { DataStore, DataStoreType } from \"./data/DataStore.js\";\nimport { listenerFactory } from \"./bindListeners.js\";\n\nexport interface RenderOutput {\n node?: RenderBrick;\n unauthenticated?: boolean;\n redirect?: {\n path: string;\n state?: NextHistoryState;\n };\n route?: RouteConf;\n blockingList: (Promise<unknown> | undefined)[];\n menuRequests: Promise<StaticMenuConf>[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n isIncremental?: boolean\n): Promise<RenderOutput> {\n const matched = await matchRoutes(routes, _runtimeContext);\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n switch (matched) {\n case \"missed\":\n break;\n case \"unauthenticated\":\n output.unauthenticated = true;\n break;\n default: {\n const route = (output.route = matched.route);\n const runtimeContext = {\n ..._runtimeContext,\n match: matched.match,\n };\n if (isIncremental) {\n runtimeContext.ctxStore.disposeDataInRoutes(routes);\n }\n const routePath = parentRoutes.concat(route);\n runtimeContext.ctxStore.define(\n route.context,\n runtimeContext,\n undefined,\n routePath\n );\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n route,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n // Currently, this is only used for brick size-checking: these bricks\n // will be loaded before page rendering, but they will NOT be rendered.\n const { preLoadBricks } = route as { preLoadBricks?: string[] };\n if (Array.isArray(preLoadBricks)) {\n output.blockingList.push(\n loadBricksImperatively(preLoadBricks, getBrickPackages())\n );\n }\n\n if (route.type === \"redirect\") {\n let redirectTo: unknown;\n if (typeof route.redirect === \"string\") {\n redirectTo = await asyncComputeRealValue(\n route.redirect,\n runtimeContext\n );\n } else {\n const resolved = (await resolveData(\n {\n transform: \"redirect\",\n ...route.redirect,\n },\n runtimeContext\n )) as { redirect?: unknown };\n redirectTo = resolved.redirect;\n }\n if (typeof redirectTo !== \"string\") {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected redirect result:\", redirectTo);\n throw new Error(\n `Unexpected type of redirect result: ${typeof redirectTo}`\n );\n }\n output.redirect = { path: redirectTo };\n } else {\n const menuRequest = loadMenu(route.menu, runtimeContext);\n if (menuRequest) {\n output.menuRequests.push(menuRequest);\n }\n\n if (route.type === \"routes\") {\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n } else {\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n routePath,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n }\n\n if (returnNode.tag === RenderTag.BRICK) {\n rendererContext.memoizeMenuRequests(route, output.menuRequests);\n }\n }\n }\n }\n\n return output;\n}\n\nexport async function renderBricks(\n returnNode: RenderNode,\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n tplStack?: Map<string, number>,\n keyPath?: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n const kPath = keyPath ?? [];\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n kPath.concat(index),\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n kPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport async function renderBrick(\n returnNode: RenderNode,\n brickConf: RuntimeBrickConfWithSymbols,\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId?: string,\n keyPath: number[] = [],\n tplStack = new Map<string, number>()\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n if (!brickConf.brick) {\n if ((brickConf as { template?: string }).template) {\n // eslint-disable-next-line no-console\n console.error(\"Legacy templates are dropped in v3:\", brickConf);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Invalid brick:\", brickConf);\n }\n return output;\n }\n\n // Translate `if: \"<%= ... %>\"` to `brick: \":if\", dataSource: \"<%= ... %>\"`.\n // In other words, translate tracking if expressions to tracking control nodes of `:if`.\n const { if: brickIf, permissionsPreCheck, ...restBrickConf } = brickConf;\n if (isGeneralizedTrackAll(brickIf)) {\n return renderBrick(\n returnNode,\n {\n brick: \":if\",\n dataSource: brickIf,\n // `permissionsPreCheck` maybe required before computing `if`.\n permissionsPreCheck,\n slots: {\n \"\": {\n type: \"bricks\",\n bricks: [restBrickConf],\n },\n },\n // These symbols have to be copied to the new brick conf.\n ...Object.getOwnPropertySymbols(brickConf).reduce(\n (acc, symbol) => ({\n ...acc,\n [symbol]: (brickConf as any)[symbol],\n }),\n {} as RuntimeBrickConfOfTplSymbols & RuntimeBrickConfOfFormSymbols\n ),\n },\n _runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n keyPath,\n tplStack\n );\n }\n\n const tplStateStoreId = brickConf[symbolForTplStateStoreId];\n const formStateStoreId = brickConf[symbolForFormStateStoreId];\n const runtimeContext = {\n ..._runtimeContext,\n tplStateStoreId,\n formStateStoreId,\n };\n\n if (hasOwnProperty(brickConf, symbolForTPlExternalForEachItem)) {\n // The external bricks of a template should restore their `forEachItem` and\n // `forEachIndex` from their host.\n runtimeContext.forEachItem = brickConf[symbolForTPlExternalForEachItem];\n runtimeContext.forEachIndex = brickConf[symbolForTPlExternalForEachIndex];\n }\n\n const { context } = brickConf as { context?: ContextConf[] };\n // istanbul ignore next\n if (Array.isArray(context) && context.length > 0) {\n const strict = isStrictMode(runtimeContext);\n warnAboutStrictMode(\n strict,\n \"Defining context on bricks\",\n \"check your brick:\",\n brickConf\n );\n if (!strict) {\n runtimeContext.ctxStore.define(context, runtimeContext);\n }\n }\n\n runtimeContext.pendingPermissionsPreCheck.push(\n hooks?.checkPermissions?.preCheckPermissionsForBrickOrRoute(\n brickConf,\n (value) => asyncComputeRealValue(value, runtimeContext)\n )\n );\n\n if (!(await asyncCheckBrickIf(brickConf, runtimeContext))) {\n return output;\n }\n\n const brickName = brickConf.brick;\n if (brickName.startsWith(\":\")) {\n ensureValidControlBrick(brickName);\n\n const { dataSource } = brickConf;\n\n const renderControlNode = async (runtimeContext: RuntimeContext) => {\n // First, compute the `dataSource`\n const computedDataSource = await asyncComputeRealValue(\n dataSource,\n runtimeContext\n );\n\n // Then, get the matched slot.\n const slot =\n brickName === \":forEach\"\n ? \"\"\n : brickName === \":switch\"\n ? String(computedDataSource)\n : computedDataSource\n ? \"\"\n : \"else\";\n\n // Don't forget to transpile children to slots.\n const slots = childrenToSlots(brickConf.children, brickConf.slots);\n\n // Then, get the bricks in that matched slot.\n const bricks =\n slots &&\n hasOwnProperty(slots, slot) &&\n (slots[slot] as SlotConfOfBricks)?.bricks;\n\n if (!Array.isArray(bricks)) {\n return output;\n }\n\n switch (brickName) {\n case \":forEach\": {\n if (!Array.isArray(computedDataSource)) {\n return output;\n }\n return renderForEach(\n returnNode,\n computedDataSource,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n parentRoutes,\n slotId,\n tplStack,\n keyPath\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode(runtimeContext);\n const { onMount, onUnmount } = brickConf.lifeCycle ?? {};\n\n const { contextNames, stateNames } = getTracks(dataSource);\n if (contextNames || stateNames) {\n controlledOutput.hasTrackingControls = true;\n let renderId = 0;\n const listener = async () => {\n const currentRenderId = ++renderId;\n const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] =\n createScopedRuntimeContext(runtimeContext);\n\n const controlOutput = await renderControlNode(scopedRuntimeContext);\n\n const scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(\n controlOutput,\n scopedRuntimeContext,\n scopedStores\n );\n\n // Ignore stale renders\n if (renderId === currentRenderId) {\n if (onUnmount) {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: true } }));\n }\n\n rendererContext.reRender(\n slotId,\n keyPath,\n controlOutput.node,\n returnNode\n );\n\n if (onMount) {\n listenerFactory(\n onMount,\n scopedRuntimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: true } }));\n }\n\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n };\n const debouncedListener = debounce(listener);\n if (contextNames) {\n for (const contextName of contextNames) {\n runtimeContext.ctxStore.onChange(contextName, debouncedListener);\n }\n }\n if (stateNames) {\n for (const contextName of stateNames) {\n const tplStateStore = getTplStateStore(\n runtimeContext,\n \"STATE\",\n `: \"${dataSource}\"`\n );\n tplStateStore.onChange(contextName, debouncedListener);\n }\n }\n }\n\n if (onMount) {\n rendererContext.registerArbitraryLifeCycle(\"onMount\", () => {\n listenerFactory(\n onMount,\n runtimeContext\n )(new CustomEvent(\"mount\", { detail: { rerender: false } }));\n });\n }\n\n if (onUnmount) {\n rendererContext.registerArbitraryLifeCycle(\"onUnmount\", () => {\n listenerFactory(\n onUnmount,\n runtimeContext\n )(new CustomEvent(\"unmount\", { detail: { rerender: false } }));\n });\n }\n\n return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoad(\n loadBricksImperatively([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n );\n }\n\n const tplTagName = getTagNameOfCustomTemplate(\n brickName,\n runtimeContext.app?.id\n );\n\n if (tplTagName) {\n const tplCount = tplStack.get(tplTagName) ?? 0;\n if (tplCount >= 10) {\n throw new Error(\n `Maximum custom template stack overflowed: \"${tplTagName}\"`\n );\n }\n tplStack.set(tplTagName, tplCount + 1);\n } else if (brickName.includes(\"-\") && !customElements.get(brickName)) {\n if (brickName === FORM_RENDERER) {\n customElements.define(\n FORM_RENDERER,\n class FormRendererElement extends HTMLElement {\n get $$typeof(): string {\n return \"form-renderer\";\n }\n }\n );\n } else {\n output.blockingList.push(\n catchLoad(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n \"brick\",\n brickName,\n rendererContext.unknownBricks\n )\n );\n }\n }\n\n let formData: unknown;\n let confProps: Record<string, unknown> | undefined;\n if (brickName === FORM_RENDERER) {\n ({ formData, ...confProps } = brickConf.properties ?? {});\n } else {\n confProps = brickConf.properties;\n }\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncPropertyEntries = asyncComputeRealPropertyEntries(\n confProps,\n runtimeContext,\n trackingContextList\n );\n\n const computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n asyncPropertyEntries.push(...computedPropsFromHost);\n }\n\n const isScript = brickName === \"script\";\n if (isScript || brickName === \"link\") {\n const props = await constructAsyncProperties(asyncPropertyEntries);\n if (isScript ? props.src : props.rel === \"stylesheet\" && props.href) {\n const prefix = window.PUBLIC_ROOT ?? \"\";\n if (isScript) {\n const { src, ...attrs } = props;\n await catchLoad(\n loadScript(src as string, prefix, attrs),\n \"script\",\n src as string,\n \"silent\"\n );\n } else {\n const { href, ...attrs } = props;\n await catchLoad(\n loadStyle(href as string, prefix, attrs),\n \"stylesheet\",\n href as string,\n \"silent\"\n );\n }\n return output;\n }\n }\n\n const brick: RenderBrick = {\n tag: RenderTag.BRICK,\n type: tplTagName || brickName,\n return: returnNode,\n slotId,\n events: brickConf.events,\n runtimeContext,\n portal: brickConf.portal,\n iid: brickConf.iid,\n ref: (brickConf as BrickConfInTemplate).ref,\n };\n\n output.node = brick;\n\n // 在最终挂载前,先加载所有可能用到的 processors。\n const usedProcessors = strictCollectMemberUsage(\n [brickConf.events, brickConf.lifeCycle],\n \"PROCESSORS\",\n 2\n );\n if (usedProcessors.size > 0) {\n output.blockingList.push(\n catchLoad(\n loadProcessorsImperatively(usedProcessors, getBrickPackages()),\n \"processors\",\n [...usedProcessors].join(\", \"),\n rendererContext.unknownBricks\n )\n );\n }\n\n // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n };\n blockingList.push(loadProperties());\n\n rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);\n\n let expandedBrickConf = brickConf;\n if (tplTagName) {\n expandedBrickConf = expandCustomTemplate(\n tplTagName,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncPropertyEntries,\n rendererContext\n );\n }\n\n if (expandedBrickConf.portal) {\n // A portal brick has no slotId.\n brick.slotId = undefined;\n }\n\n let childRuntimeContext: RuntimeContext;\n if (tplTagName) {\n // There is a boundary for `forEachItem` between template internals and externals.\n childRuntimeContext = {\n ...runtimeContext,\n };\n delete childRuntimeContext.forEachItem;\n delete childRuntimeContext.forEachIndex;\n } else {\n childRuntimeContext = runtimeContext;\n }\n\n const loadChildren = async () => {\n const slots = childrenToSlots(\n expandedBrickConf.children,\n expandedBrickConf.slots\n );\n if (!slots) {\n return;\n }\n const routeSlotIndexes = new Set<number>();\n const rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf], index) => {\n if (slotConf.type !== \"routes\") {\n return renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n tplStack\n );\n }\n\n if (runtimeContext.flags[\"incremental-sub-route-rendering\"]) {\n routeSlotIndexes.add(index);\n rendererContext.performIncrementalRender(async (location) => {\n const { homepage } = childRuntimeContext.app;\n const { pathname } = location;\n // Ignore if any one of homepage and parent routes not matched.\n if (\n !matchHomepage(homepage, pathname) ||\n !parentRoutes.every((route) =>\n matchRoute(route, homepage, pathname)\n )\n ) {\n return false;\n }\n\n const [\n scopedRuntimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n ] = createScopedRuntimeContext({\n ...childRuntimeContext,\n location,\n query: new URLSearchParams(location.search),\n });\n\n let failed = false;\n let incrementalOutput: RenderOutput;\n let scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n incrementalOutput = await renderRoutes(\n brick,\n slotConf.routes,\n scopedRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId,\n true\n );\n\n // If all sub-routes are missed, ignore incremental rendering\n if (!incrementalOutput.route) {\n return false;\n }\n\n // Bailout if redirect or unauthenticated is set\n if (rendererContext.reBailout(incrementalOutput)) {\n return true;\n }\n\n scopedStores = [...tplStateStoreScope, ...formStateStoreScope];\n await postAsyncRender(incrementalOutput, scopedRuntimeContext, [\n scopedRuntimeContext.ctxStore,\n ...scopedStores,\n ]);\n\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Incremental sub-router failed:\", error);\n\n const result = rendererContext.reCatch(error, brick);\n if (!result) {\n return true;\n }\n ({ failed, output: incrementalOutput } = result);\n\n // Assert: no errors will be throw\n await rendererContext.reMergeMenuRequests(\n slotConf.routes,\n incrementalOutput.route,\n incrementalOutput.menuRequests\n );\n }\n\n rendererContext.reRender(\n childSlotId,\n [],\n incrementalOutput.node,\n brick\n );\n\n if (!failed) {\n scopedRuntimeContext.ctxStore.mountAsyncData(\n incrementalOutput.route\n );\n for (const store of scopedStores) {\n store.mountAsyncData();\n }\n }\n\n return true;\n });\n }\n\n return renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n parentRoutes,\n childSlotId\n );\n })\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n menuRequests: [],\n };\n rendered.forEach((item, index) => {\n if (routeSlotIndexes.has(index)) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(slotId, [], item.node, brick);\n }\n mergeRenderOutput(childrenOutput, item);\n });\n if (childrenOutput.node) {\n brick.child = childrenOutput.node;\n }\n mergeRenderOutput(output, {\n ...childrenOutput,\n node: undefined,\n });\n };\n blockingList.push(loadChildren());\n\n await Promise.all(blockingList);\n\n return output;\n}\n\nfunction isGeneralizedTrackAll(brickIf: unknown): boolean {\n return typeof brickIf === \"string\"\n ? isTrackAll(brickIf)\n : isPreEvaluated(brickIf) &&\n // istanbul ignore next: covered by e2e tests\n isTrackAll(getPreEvaluatedRaw(brickIf));\n}\n\ntype ValidControlBrick = \":forEach\" | \":if\" | \":switch\";\n\nfunction ensureValidControlBrick(\n brick: string\n): asserts brick is ValidControlBrick {\n if (brick !== \":forEach\" && brick !== \":if\" && brick !== \":switch\") {\n throw new Error(`Unknown storyboard control node: \"${brick}\"`);\n }\n}\n\nasync function renderForEach(\n returnNode: RenderNode,\n dataSource: unknown[],\n bricks: BrickConf[],\n runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n parentRoutes: RouteConf[],\n slotId: string | undefined,\n tplStack: Map<string, number>,\n keyPath: number[]\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\n const rows = dataSource.length;\n const rendered = await Promise.all(\n dataSource.map((item, i) =>\n Promise.all(\n bricks.map((brickConf, j) =>\n renderBrick(\n returnNode,\n brickConf,\n {\n ...runtimeContext,\n forEachItem: item,\n forEachIndex: i,\n },\n rendererContext,\n parentRoutes,\n slotId,\n keyPath.concat(i * rows + j),\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n rendered.flat().forEach((item, index) => {\n if (item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoize(\n slotId,\n keyPath.concat(index),\n item.node,\n returnNode\n );\n }\n mergeRenderOutput(output, item);\n });\n\n return output;\n}\n\nexport function getDataStores(runtimeContext: RuntimeContext) {\n return [\n runtimeContext.ctxStore,\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ];\n}\n\nexport function postAsyncRender(\n output: RenderOutput,\n runtimeContext: RuntimeContext,\n stores: DataStore<DataStoreType>[]\n) {\n flushStableLoadBricks();\n\n return Promise.all([\n ...output.blockingList,\n ...stores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n}\n\nexport function createScopedRuntimeContext(\n runtimeContext: RuntimeContext\n): [\n scopedRuntimeContext: RuntimeContext,\n tplStateStoreScope: DataStore<\"STATE\">[],\n formStateStoreScope: DataStore<\"FORM_STATE\">[],\n] {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const scopedRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n tplStateStoreScope,\n formStateStoreScope,\n };\n return [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope];\n}\n\nfunction loadMenu(\n menuConf: MenuConf | undefined,\n runtimeContext: RuntimeContext\n) {\n if (!menuConf) {\n return;\n }\n\n // istanbul ignore next\n if ((menuConf as { type?: \"brick\" }).type === \"brick\") {\n // eslint-disable-next-line no-console\n console.error(\"Set menu with brick is dropped in v3:\", menuConf);\n throw new Error(\"Set menu with brick is dropped in v3\");\n }\n\n // istanbul ignore next\n if (menuConf.type === \"resolve\") {\n // eslint-disable-next-line no-console\n console.warn(\"Set menu with resolve is not supported in v3 yet:\", menuConf);\n return;\n }\n\n return asyncComputeRealValue(\n menuConf,\n runtimeContext\n ) as Promise<StaticMenuConf>;\n}\n\nfunction mergeRenderOutput(\n output: RenderOutput,\n newOutput: RenderOutput\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { blockingList, node, menuRequests, hasTrackingControls, ...rest } =\n newOutput;\n output.blockingList.push(...blockingList);\n output.menuRequests.push(...menuRequests);\n\n if (node) {\n if (output.node) {\n let last = output.node;\n while (last.sibling) {\n last = last.sibling;\n }\n last.sibling = node;\n } else {\n output.node = node;\n }\n }\n\n Object.assign(output, rest);\n}\n\nexport function childrenToSlots(\n children: BrickConf[] | undefined,\n originalSlots: SlotsConf | undefined\n) {\n let newSlots = originalSlots;\n // istanbul ignore next\n if (\n process.env.NODE_ENV === \"development\" &&\n children &&\n !Array.isArray(children)\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Specified brick children but not array:\",\n `<${typeof children}>`,\n children\n );\n }\n if (Array.isArray(children) && !newSlots) {\n newSlots = {};\n for (const child of children) {\n const slot = child.slot ?? \"\";\n if (!hasOwnProperty(newSlots, slot)) {\n newSlots[slot] = {\n type: \"bricks\",\n bricks: [],\n };\n }\n (newSlots[slot] as SlotConfOfBricks).bricks.push(child);\n }\n }\n return newSlots;\n}\n\nfunction catchLoad(\n promise: Promise<unknown>,\n type: \"brick\" | \"processors\" | \"script\" | \"stylesheet\",\n name: string,\n unknownPolicy: RendererContext[\"unknownBricks\"]\n) {\n return unknownPolicy === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load ${type} \"${name}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
|
|
@@ -260,13 +260,17 @@ runtimeContext) {
|
|
|
260
260
|
});
|
|
261
261
|
break;
|
|
262
262
|
case "ITEM":
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
263
|
+
case "INDEX":
|
|
264
|
+
{
|
|
265
|
+
var property = variableName === "ITEM" ? "forEachItem" : "forEachIndex";
|
|
266
|
+
if (!hasOwnProperty(runtimeContext, property)) {
|
|
267
|
+
// eslint-disable-next-line no-console
|
|
268
|
+
console.error("Using `".concat(variableName, "` but no `:forEach` is found, check your expression: \"").concat(raw, "\""));
|
|
269
|
+
} else {
|
|
270
|
+
globalVariables[variableName] = runtimeContext[property];
|
|
271
|
+
}
|
|
272
|
+
break;
|
|
268
273
|
}
|
|
269
|
-
break;
|
|
270
274
|
case "LOCAL_STORAGE":
|
|
271
275
|
globalVariables[variableName] = getReadOnlyProxy({
|
|
272
276
|
getItem: getStorageItem("local")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","names":["cook","preevaluate","shouldAllowRecursiveEvaluations","loadProcessorsImperatively","supply","hasOwnProperty","strictCollectMemberUsage","collectAppGetMenuUsage","collectInstalledAppsHasUsage","cloneDeep","omit","customProcessors","checkPermissionsUsage","storyboardFunctions","getGeneralGlobals","getDynamicReadOnlyProxy","getReadOnlyProxy","devtoolsHookEmit","getDevHook","getMedia","getStorageItem","_internalApiGetStoryboardInBootstrapData","getBrickPackages","getRuntime","hooks","getTplStateStore","widgetFunctions","widgetI18nFactory","hasInstalledApp","isStrictMode","warnAboutStrictMode","getFormStateStore","resolveData","asyncComputeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","_x","_x2","_x3","_asyncEvaluate","apply","arguments","_asyncToGenerator","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","length","undefined","isAsync","passByRuntimeContext","_objectSpread","menuUsage","usedArgs","Set","hasAppUsage","precooked","withParent","beforeVisitGlobal","node","parent","message","concat","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","Object","keys","usedCtx","usedProcessors","usedStates","tplStateStore","strict","usedFormStates","formStateStore","devHook","push","ctxStore","waitFor","usedTpls","tpl","add","attemptToCheckPermissions","usedFunctions","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_runtimeContext$overr","_hooks$menu","_match$params","_hooks$images","app","currentApp","location","query","match","flags","sys","data","event","overrideApp","variableName","hash","substring","getMenu","getMenuById","get","target","key","getValue","ownKeys","Array","from","console","forEachItem","getItem","getMiscSettings","URLSearchParams","params","pathname","pkg","t","k","processor","namespace","split","fromEntries","getAll","images","widgetImagesFactory","assign","appendI18nNamespace","result","expression","source","detail","context"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n strictCollectMemberUsage,\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { cloneDeep, omit } from \"lodash\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { devtoolsHookEmit, getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport {\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n getRuntime,\n hooks,\n} from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { hasInstalledApp } from \"../hasInstalledApp.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\nimport { resolveData } from \"../data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./computeRealValue.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const passByRuntimeContext = omit(runtimeContext, [\n \"pendingPermissionsPreCheck\",\n \"tplStateStoreMap\",\n \"tplStateStoreScope\",\n \"formStateStoreMap\",\n \"formStateStoreScope\",\n ]);\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string>;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n let usedFormStates: Set<string>;\n let formStateStore: DataStore<\"FORM_STATE\"> | undefined;\n if (attemptToVisitGlobals.has(\"FORM_STATE\")) {\n formStateStore = getFormStateStore(\n runtimeContext,\n \"FORM_STATE\",\n `: \"${raw}\"`\n );\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (formStateStore) {\n usedFormStates = strictCollectMemberUsage(raw, \"FORM_STATE\");\n isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0 && hooks?.menu) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) =>\n hooks!.menu!.fetchMenuById(menuId, runtimeContext, {\n getStoryboardByAppId: _internalApiGetStoryboardInBootstrapData,\n resolveData,\n asyncComputeRealValue,\n })\n )\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(\n hooks?.checkInstalledApps?.waitForCheckingApps([\n ...hasAppUsage.usedArgs,\n ])\n );\n }\n }\n\n return {\n blockingList,\n run() {\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n ctxStore,\n data,\n event,\n } = runtimeContext;\n const app = runtimeContext.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: hooks?.menu?.getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedCtx);\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"FORM_STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return formStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedFormStates);\n },\n });\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n if (!hasOwnProperty(runtimeContext, \"forEachItem\")) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`ITEM\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext.forEachItem;\n }\n break;\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n const keys = new Set<string>();\n for (const processor of usedProcessors) {\n const namespace = processor.split(\".\")[0];\n keys.add(namespace);\n }\n return Array.from(keys);\n },\n });\n break;\n case \"QUERY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = hooks?.images?.widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app: runtimeContext.app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n const detail = { raw, context: globalVariables, result };\n devtoolsHookEmit(\"evaluation\", detail);\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluate.js","names":["cook","preevaluate","shouldAllowRecursiveEvaluations","loadProcessorsImperatively","supply","hasOwnProperty","strictCollectMemberUsage","collectAppGetMenuUsage","collectInstalledAppsHasUsage","cloneDeep","omit","customProcessors","checkPermissionsUsage","storyboardFunctions","getGeneralGlobals","getDynamicReadOnlyProxy","getReadOnlyProxy","devtoolsHookEmit","getDevHook","getMedia","getStorageItem","_internalApiGetStoryboardInBootstrapData","getBrickPackages","getRuntime","hooks","getTplStateStore","widgetFunctions","widgetI18nFactory","hasInstalledApp","isStrictMode","warnAboutStrictMode","getFormStateStore","resolveData","asyncComputeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","_x","_x2","_x3","_asyncEvaluate","apply","arguments","_asyncToGenerator","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","length","undefined","isAsync","passByRuntimeContext","_objectSpread","menuUsage","usedArgs","Set","hasAppUsage","precooked","withParent","beforeVisitGlobal","node","parent","message","concat","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","Object","keys","usedCtx","usedProcessors","usedStates","tplStateStore","strict","usedFormStates","formStateStore","devHook","push","ctxStore","waitFor","usedTpls","tpl","add","attemptToCheckPermissions","usedFunctions","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_runtimeContext$overr","_hooks$menu","_match$params","_hooks$images","app","currentApp","location","query","match","flags","sys","data","event","overrideApp","variableName","hash","substring","getMenu","getMenuById","get","target","key","getValue","ownKeys","Array","from","property","console","getItem","getMiscSettings","URLSearchParams","params","pathname","pkg","t","k","processor","namespace","split","fromEntries","getAll","images","widgetImagesFactory","assign","appendI18nNamespace","result","expression","source","detail","context"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n strictCollectMemberUsage,\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { cloneDeep, omit } from \"lodash\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { devtoolsHookEmit, getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport {\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n getRuntime,\n hooks,\n} from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { hasInstalledApp } from \"../hasInstalledApp.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\nimport { resolveData } from \"../data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./computeRealValue.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const passByRuntimeContext = omit(runtimeContext, [\n \"pendingPermissionsPreCheck\",\n \"tplStateStoreMap\",\n \"tplStateStoreScope\",\n \"formStateStoreMap\",\n \"formStateStoreScope\",\n ]);\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string>;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n let usedFormStates: Set<string>;\n let formStateStore: DataStore<\"FORM_STATE\"> | undefined;\n if (attemptToVisitGlobals.has(\"FORM_STATE\")) {\n formStateStore = getFormStateStore(\n runtimeContext,\n \"FORM_STATE\",\n `: \"${raw}\"`\n );\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (formStateStore) {\n usedFormStates = strictCollectMemberUsage(raw, \"FORM_STATE\");\n isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0 && hooks?.menu) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) =>\n hooks!.menu!.fetchMenuById(menuId, runtimeContext, {\n getStoryboardByAppId: _internalApiGetStoryboardInBootstrapData,\n resolveData,\n asyncComputeRealValue,\n })\n )\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(\n hooks?.checkInstalledApps?.waitForCheckingApps([\n ...hasAppUsage.usedArgs,\n ])\n );\n }\n }\n\n return {\n blockingList,\n run() {\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n ctxStore,\n data,\n event,\n } = runtimeContext;\n const app = runtimeContext.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: hooks?.menu?.getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedCtx);\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"FORM_STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return formStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedFormStates);\n },\n });\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n case \"INDEX\": {\n const property =\n variableName === \"ITEM\" ? \"forEachItem\" : \"forEachIndex\";\n if (!hasOwnProperty(runtimeContext, property)) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`${variableName}\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext[property];\n }\n break;\n }\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n const keys = new Set<string>();\n for (const processor of usedProcessors) {\n const namespace = processor.split(\".\")[0];\n keys.add(namespace);\n }\n return Array.from(keys);\n },\n });\n break;\n case \"QUERY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = hooks?.images?.widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app: runtimeContext.app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n const detail = { raw, context: globalVariables, result };\n devtoolsHookEmit(\"evaluation\", detail);\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n provider?: string;\n}\n"],"mappings":""}
|
|
@@ -3,9 +3,11 @@ import type { AsyncPropertyEntry } from "../interfaces.js";
|
|
|
3
3
|
export declare const symbolForAsyncComputedPropsFromHost: unique symbol;
|
|
4
4
|
export declare const symbolForTplStateStoreId: unique symbol;
|
|
5
5
|
export declare const symbolForTPlExternalForEachItem: unique symbol;
|
|
6
|
+
export declare const symbolForTPlExternalForEachIndex: unique symbol;
|
|
6
7
|
export type RuntimeBrickConfWithTplSymbols = BrickConf & RuntimeBrickConfOfTplSymbols;
|
|
7
8
|
export interface RuntimeBrickConfOfTplSymbols {
|
|
8
9
|
[symbolForAsyncComputedPropsFromHost]?: AsyncPropertyEntry[];
|
|
9
10
|
[symbolForTplStateStoreId]?: string;
|
|
10
11
|
[symbolForTPlExternalForEachItem]?: unknown;
|
|
12
|
+
[symbolForTPlExternalForEachIndex]?: number;
|
|
11
13
|
}
|
|
@@ -11,6 +11,7 @@ export interface RuntimeContext extends LegacyCompatibleRuntimeContext {
|
|
|
11
11
|
tplStateStoreId?: string;
|
|
12
12
|
tplStateStoreScope?: DataStore<"STATE">[];
|
|
13
13
|
forEachItem?: unknown;
|
|
14
|
+
forEachIndex?: number;
|
|
14
15
|
appendI18nNamespace?: string;
|
|
15
16
|
formStateStoreMap: Map<string, DataStore<"FORM_STATE">>;
|
|
16
17
|
formStateStoreId?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.4",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"@next-core/build-next-libs": "^1.0.7",
|
|
66
66
|
"@next-core/test-next": "^1.0.9"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "ca72173601442dd993dc425aaeed85cbd47c6336"
|
|
69
69
|
}
|