@next-core/runtime 1.19.3 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/cjs/internal/CustomTemplates/constants.js.map +1 -1
  2. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +3 -3
  3. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  4. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +10 -13
  5. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  6. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +2 -2
  7. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  8. package/dist/cjs/internal/Renderer.js +8 -11
  9. package/dist/cjs/internal/Renderer.js.map +1 -1
  10. package/dist/cjs/internal/compute/computeRealProperties.js +24 -10
  11. package/dist/cjs/internal/compute/computeRealProperties.js.map +1 -1
  12. package/dist/cjs/internal/data/DataStore.js +6 -5
  13. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  14. package/dist/cjs/internal/interfaces.js.map +1 -1
  15. package/dist/cjs/internal/secret_internals.js +49 -1
  16. package/dist/cjs/internal/secret_internals.js.map +1 -1
  17. package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
  18. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +3 -3
  19. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  20. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +12 -20
  21. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  22. package/dist/esm/internal/FormRenderer/expandFormRenderer.js +2 -2
  23. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  24. package/dist/esm/internal/Renderer.js +9 -12
  25. package/dist/esm/internal/Renderer.js.map +1 -1
  26. package/dist/esm/internal/compute/computeRealProperties.js +32 -19
  27. package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
  28. package/dist/esm/internal/data/DataStore.js +6 -5
  29. package/dist/esm/internal/data/DataStore.js.map +1 -1
  30. package/dist/esm/internal/interfaces.js.map +1 -1
  31. package/dist/esm/internal/secret_internals.js +56 -2
  32. package/dist/esm/internal/secret_internals.js.map +1 -1
  33. package/dist/types/internal/CustomTemplates/constants.d.ts +2 -2
  34. package/dist/types/internal/CustomTemplates/expandCustomTemplate.d.ts +2 -2
  35. package/dist/types/internal/CustomTemplates/setupTemplateProxy.d.ts +2 -2
  36. package/dist/types/internal/FormRenderer/expandFormRenderer.d.ts +2 -2
  37. package/dist/types/internal/compute/computeRealProperties.d.ts +4 -3
  38. package/dist/types/internal/data/DataStore.d.ts +2 -2
  39. package/dist/types/internal/interfaces.d.ts +14 -4
  40. package/dist/types/internal/secret_internals.d.ts +2 -1
  41. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"expandFormRenderer.js","names":["hasOwnProperty","uniqueId","DataStore","getDefaultProperties","symbolForFormStateStoreId","formContainers","expandFormRenderer","formData","hostBrickConf","hostBrick","asyncHostProperties","rendererContext","_normalizedFormData$c","_hostBrickConf$proper","normalizedFormData","JSON","parse","formStateStoreId","runtimeContext","_objectSpread","forEachItem","tplStateStoreId","formStateStore","undefined","formStateStoreMap","set","formStateStoreScope","push","context","some","ctx","name","define","formConf","formSchemaToBrick","formSchema","fields","includes","brick","events","mergeEvents","renderRoot","properties","slots","children","style","padding","schema","id","bricks","mountPoint","instanceId","iid","field","find","item","fieldId","defaults","brickConf","slot","formSchemasToBricks","if","schemas","Array","isArray","map","targetEvents","sourceEvents","eventType","handlers","Object","entries","flat"],"sources":["../../../../src/internal/FormRenderer/expandFormRenderer.ts"],"sourcesContent":["import type { BrickConf, BrickEventsMap } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { uniqueId } from \"lodash\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport type { AsyncProperties, RuntimeBrick } from \"../interfaces.js\";\nimport type {\n FieldProperties,\n FormDataProperties,\n FormSchemaProperties,\n} from \"./interfaces.js\";\nimport { getDefaultProperties } from \"./getDefaultProperties.js\";\nimport { symbolForFormStateStoreId } from \"./constants.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst formContainers = [\"forms.general-form\", \"form.general-form\", \"eo-form\"];\n\nexport function expandFormRenderer(\n formData: unknown,\n hostBrickConf: BrickConf,\n hostBrick: RuntimeBrick,\n asyncHostProperties: AsyncProperties,\n rendererContext: RendererContext\n): BrickConf {\n const normalizedFormData = (\n typeof formData === \"string\" ? JSON.parse(formData) : formData\n ) as FormDataProperties;\n\n const formStateStoreId = uniqueId(\"form-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n formStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `STATE` between form internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.tplStateStoreId;\n\n const formStateStore = new DataStore(\n \"FORM_STATE\",\n undefined,\n rendererContext\n );\n runtimeContext.formStateStoreMap.set(formStateStoreId, formStateStore);\n if (runtimeContext.formStateStoreScope) {\n runtimeContext.formStateStoreScope.push(formStateStore);\n }\n\n // Always add a state of `params`.\n const context = normalizedFormData.context ?? [];\n if (!context.some((ctx) => ctx.name === \"params\")) {\n context.push({ name: \"params\" });\n }\n\n formStateStore.define(context, runtimeContext, asyncHostProperties);\n\n const formConf = formSchemaToBrick(\n normalizedFormData.formSchema,\n normalizedFormData.fields,\n formStateStoreId\n );\n\n if (formContainers.includes(formConf.brick) && hostBrickConf.events) {\n formConf.events = mergeEvents(formConf.events, hostBrickConf.events);\n }\n\n const renderRoot =\n typeof hostBrickConf.properties?.renderRoot !== \"boolean\" ||\n hostBrickConf.properties.renderRoot;\n\n if (renderRoot) {\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [\n {\n brick: \"eo-micro-view\",\n properties: { style: { padding: \"12px\" } },\n children: [formConf],\n },\n ],\n };\n }\n\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [formConf],\n };\n}\n\nfunction formSchemaToBrick(\n schema: FormSchemaProperties,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf {\n const { id, bricks, events, context, mountPoint, instanceId: iid } = schema;\n let { brick, properties } = schema;\n\n // 根据字段类型获取默认配置\n const field = fields.find((item: FieldProperties) => item.fieldId === id);\n if (field) {\n const defaults = getDefaultProperties(field);\n if (!brick) {\n brick = defaults.brick;\n }\n properties = {\n ...defaults.properties,\n ...properties,\n };\n }\n\n const brickConf = {\n brick,\n properties,\n iid,\n slot: mountPoint,\n events,\n context,\n children: formSchemasToBricks(bricks, fields, formStateStoreId),\n [symbolForFormStateStoreId]: formStateStoreId,\n } as BrickConf;\n\n if (hasOwnProperty(schema, \"if\")) {\n brickConf.if = schema.if;\n }\n\n return brickConf;\n}\n\nfunction formSchemasToBricks(\n schemas: FormSchemaProperties[] | undefined,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf[] | undefined {\n if (Array.isArray(schemas)) {\n return schemas.map((schema) =>\n formSchemaToBrick(schema, fields, formStateStoreId)\n );\n }\n}\n\nfunction mergeEvents(\n targetEvents: BrickEventsMap | undefined,\n sourceEvents: BrickEventsMap\n): BrickEventsMap {\n const events = targetEvents ?? {};\n\n for (const [eventType, handlers] of Object.entries(sourceEvents)) {\n events[eventType] = hasOwnProperty(events, eventType)\n ? [events[eventType], handlers].flat()\n : handlers;\n }\n\n return events;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"expandFormRenderer.js","names":["hasOwnProperty","uniqueId","DataStore","getDefaultProperties","symbolForFormStateStoreId","formContainers","expandFormRenderer","formData","hostBrickConf","hostBrick","asyncHostPropertyEntries","rendererContext","_normalizedFormData$c","_hostBrickConf$proper","normalizedFormData","JSON","parse","formStateStoreId","runtimeContext","_objectSpread","forEachItem","tplStateStoreId","formStateStore","undefined","formStateStoreMap","set","formStateStoreScope","push","context","some","ctx","name","define","formConf","formSchemaToBrick","formSchema","fields","includes","brick","events","mergeEvents","renderRoot","properties","slots","children","style","padding","schema","id","bricks","mountPoint","instanceId","iid","field","find","item","fieldId","defaults","brickConf","slot","formSchemasToBricks","if","schemas","Array","isArray","map","targetEvents","sourceEvents","eventType","handlers","Object","entries","flat"],"sources":["../../../../src/internal/FormRenderer/expandFormRenderer.ts"],"sourcesContent":["import type { BrickConf, BrickEventsMap } from \"@next-core/types\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { uniqueId } from \"lodash\";\nimport { DataStore } from \"../data/DataStore.js\";\nimport type { AsyncPropertyEntry, RuntimeBrick } from \"../interfaces.js\";\nimport type {\n FieldProperties,\n FormDataProperties,\n FormSchemaProperties,\n} from \"./interfaces.js\";\nimport { getDefaultProperties } from \"./getDefaultProperties.js\";\nimport { symbolForFormStateStoreId } from \"./constants.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst formContainers = [\"forms.general-form\", \"form.general-form\", \"eo-form\"];\n\nexport function expandFormRenderer(\n formData: unknown,\n hostBrickConf: BrickConf,\n hostBrick: RuntimeBrick,\n asyncHostPropertyEntries: AsyncPropertyEntry[],\n rendererContext: RendererContext\n): BrickConf {\n const normalizedFormData = (\n typeof formData === \"string\" ? JSON.parse(formData) : formData\n ) as FormDataProperties;\n\n const formStateStoreId = uniqueId(\"form-state-\");\n const runtimeContext = {\n ...hostBrick.runtimeContext,\n formStateStoreId,\n };\n\n // There is a boundary for `forEachItem` and `STATE` between form internals and externals.\n delete runtimeContext.forEachItem;\n delete runtimeContext.tplStateStoreId;\n\n const formStateStore = new DataStore(\n \"FORM_STATE\",\n undefined,\n rendererContext\n );\n runtimeContext.formStateStoreMap.set(formStateStoreId, formStateStore);\n if (runtimeContext.formStateStoreScope) {\n runtimeContext.formStateStoreScope.push(formStateStore);\n }\n\n // Always add a state of `params`.\n const context = normalizedFormData.context ?? [];\n if (!context.some((ctx) => ctx.name === \"params\")) {\n context.push({ name: \"params\" });\n }\n\n formStateStore.define(context, runtimeContext, asyncHostPropertyEntries);\n\n const formConf = formSchemaToBrick(\n normalizedFormData.formSchema,\n normalizedFormData.fields,\n formStateStoreId\n );\n\n if (formContainers.includes(formConf.brick) && hostBrickConf.events) {\n formConf.events = mergeEvents(formConf.events, hostBrickConf.events);\n }\n\n const renderRoot =\n typeof hostBrickConf.properties?.renderRoot !== \"boolean\" ||\n hostBrickConf.properties.renderRoot;\n\n if (renderRoot) {\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [\n {\n brick: \"eo-micro-view\",\n properties: { style: { padding: \"12px\" } },\n children: [formConf],\n },\n ],\n };\n }\n\n return {\n ...hostBrickConf,\n slots: undefined,\n children: [formConf],\n };\n}\n\nfunction formSchemaToBrick(\n schema: FormSchemaProperties,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf {\n const { id, bricks, events, context, mountPoint, instanceId: iid } = schema;\n let { brick, properties } = schema;\n\n // 根据字段类型获取默认配置\n const field = fields.find((item: FieldProperties) => item.fieldId === id);\n if (field) {\n const defaults = getDefaultProperties(field);\n if (!brick) {\n brick = defaults.brick;\n }\n properties = {\n ...defaults.properties,\n ...properties,\n };\n }\n\n const brickConf = {\n brick,\n properties,\n iid,\n slot: mountPoint,\n events,\n context,\n children: formSchemasToBricks(bricks, fields, formStateStoreId),\n [symbolForFormStateStoreId]: formStateStoreId,\n } as BrickConf;\n\n if (hasOwnProperty(schema, \"if\")) {\n brickConf.if = schema.if;\n }\n\n return brickConf;\n}\n\nfunction formSchemasToBricks(\n schemas: FormSchemaProperties[] | undefined,\n fields: FieldProperties[],\n formStateStoreId: string\n): BrickConf[] | undefined {\n if (Array.isArray(schemas)) {\n return schemas.map((schema) =>\n formSchemaToBrick(schema, fields, formStateStoreId)\n );\n }\n}\n\nfunction mergeEvents(\n targetEvents: BrickEventsMap | undefined,\n sourceEvents: BrickEventsMap\n): BrickEventsMap {\n const events = targetEvents ?? {};\n\n for (const [eventType, handlers] of Object.entries(sourceEvents)) {\n events[eventType] = hasOwnProperty(events, eventType)\n ? [events[eventType], handlers].flat()\n : handlers;\n }\n\n return events;\n}\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { isTrackAll } from "@next-core/cook";
9
9
  import { hasOwnProperty } from "@next-core/utils/general";
10
10
  import { debounce } from "lodash";
11
11
  import { asyncCheckBrickIf } from "./compute/checkIf.js";
12
- import { asyncComputeRealProperties, constructAsyncProperties } from "./compute/computeRealProperties.js";
12
+ import { asyncComputeRealPropertyEntries, constructAsyncProperties } from "./compute/computeRealProperties.js";
13
13
  import { resolveData } from "./data/resolveData.js";
14
14
  import { asyncComputeRealValue } from "./compute/computeRealValue.js";
15
15
  import { listenOnTrackingContext } from "./compute/listenOnTrackingContext.js";
@@ -330,17 +330,14 @@ function _renderBrick() {
330
330
  // 加载构件属性和加载子构件等任务,可以并行。
331
331
  var blockingList = [];
332
332
  var trackingContextList = [];
333
- var asyncProperties = asyncComputeRealProperties(confProps, runtimeContext, trackingContextList);
333
+ var asyncPropertyEntries = asyncComputeRealPropertyEntries(confProps, runtimeContext, trackingContextList);
334
+ var computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];
335
+ if (computedPropsFromHost) {
336
+ asyncPropertyEntries.push(...computedPropsFromHost);
337
+ }
334
338
  var loadProperties = /*#__PURE__*/function () {
335
339
  var _ref4 = _asyncToGenerator(function* () {
336
- brick.properties = yield constructAsyncProperties(asyncProperties);
337
- var computedPropsFromHost = brickConf[symbolForAsyncComputedPropsFromHost];
338
- if (computedPropsFromHost) {
339
- var computed = yield computedPropsFromHost;
340
- for (var [propName, propValue] of Object.entries(computed)) {
341
- brick.properties[propName] = propValue;
342
- }
343
- }
340
+ brick.properties = yield constructAsyncProperties(asyncPropertyEntries);
344
341
  listenOnTrackingContext(brick, trackingContextList);
345
342
  return brick.properties;
346
343
  });
@@ -352,9 +349,9 @@ function _renderBrick() {
352
349
  rendererContext.registerBrickLifeCycle(brick, brickConf.lifeCycle);
353
350
  var expandedBrickConf = brickConf;
354
351
  if (tplTagName) {
355
- expandedBrickConf = expandCustomTemplate(tplTagName, brickConf, brick, asyncProperties, rendererContext);
352
+ expandedBrickConf = expandCustomTemplate(tplTagName, brickConf, brick, asyncPropertyEntries, rendererContext);
356
353
  } else if (brickName === FORM_RENDERER) {
357
- expandedBrickConf = expandFormRenderer(formData, brickConf, brick, asyncProperties, rendererContext);
354
+ expandedBrickConf = expandFormRenderer(formData, brickConf, brick, asyncPropertyEntries, rendererContext);
358
355
  }
359
356
  if (expandedBrickConf.portal) {
360
357
  // A portal brick has no slotId.
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealProperties","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_hooks$checkPermissio2","_runtimeContext$app","length","undefined","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoadBrick","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","tag","BRICK","return","events","portal","iid","ref","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncProperties","loadProperties","_ref4","computedPropsFromHost","computed","propName","propValue","entries","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","_ref6","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","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 loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport { debounce } from \"lodash\";\nimport { asyncCheckBrickIf } from \"./compute/checkIf.js\";\nimport {\n asyncComputeRealProperties,\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 { 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\";\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 | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\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 runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\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 slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\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 slotId?: string,\n key?: 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 slotId,\n key,\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 () => {\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 slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n brickName,\n rendererContext.unknownBricks\n )\n );\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 // const confProps = brickConf.properties;\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\n\n const trackingContextList: TrackingContextItem[] = [];\n const asyncProperties = asyncComputeRealProperties(\n confProps,\n runtimeContext,\n trackingContextList\n );\n const loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncProperties);\n const computedPropsFromHost =\n brickConf[symbolForAsyncComputedPropsFromHost];\n if (computedPropsFromHost) {\n const computed = await computedPropsFromHost;\n for (const [propName, propValue] of Object.entries(computed)) {\n brick.properties[propName] = propValue;\n }\n }\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\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 asyncProperties,\n rendererContext\n );\n } else if (brickName === FORM_RENDERER) {\n expandedBrickConf = expandFormRenderer(\n formData,\n brickConf,\n brick,\n asyncProperties,\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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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 slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","names":["enqueueStableLoadBricks","loadBricksImperatively","isTrackAll","hasOwnProperty","debounce","asyncCheckBrickIf","asyncComputeRealPropertyEntries","constructAsyncProperties","resolveData","asyncComputeRealValue","listenOnTrackingContext","matchRoutes","symbolForAsyncComputedPropsFromHost","symbolForTPlExternalForEachItem","symbolForTplStateStoreId","expandCustomTemplate","getTagNameOfCustomTemplate","getTplStateStore","customTemplates","getBrickPackages","hooks","RenderTag","getTracks","isStrictMode","warnAboutStrictMode","FORM_RENDERER","symbolForFormStateStoreId","expandFormRenderer","isPreEvaluated","getPreEvaluatedRaw","renderRoutes","_x","_x2","_x3","_x4","_x5","_renderRoutes","apply","arguments","_asyncToGenerator","returnNode","routes","_runtimeContext","rendererContext","slotId","matched","output","blockingList","menuRequests","unauthenticated","_hooks$checkPermissio","route","runtimeContext","_objectSpread","match","ctxStore","define","context","pendingPermissionsPreCheck","push","checkPermissions","preCheckPermissionsForBrickOrRoute","value","preLoadBricks","Array","isArray","type","redirectTo","redirect","resolved","transform","console","error","Error","concat","path","loadMenu","menu","newOutput","mergeRenderOutput","renderBricks","bricks","_x6","_x7","_x8","_x9","_x10","_x11","_x12","_renderBricks","tplStack","noMemoize","rendered","Promise","all","map","brickConf","index","renderBrick","Map","forEach","item","hasTrackingControls","memoizeControlNode","node","_x13","_x14","_x15","_x16","_x17","_x18","_renderBrick","key","_hooks$checkPermissio2","_runtimeContext$app","length","undefined","brick","template","if","brickIf","permissionsPreCheck","restBrickConf","_objectWithoutProperties","_excluded2","isGeneralizedTrackAll","dataSource","slots","Object","getOwnPropertySymbols","reduce","acc","symbol","tplStateStoreId","formStateStoreId","forEachItem","strict","brickName","startsWith","ensureValidControlBrick","renderControlNode","_ref","_slots$slot","computedDataSource","slot","String","childrenToSlots","children","renderForEach","controlledOutput","contextNames","stateNames","renderId","listener","_ref2","currentRenderId","tplStateStoreMap","values","formStateStoreMap","store","waitForAll","rerenderControlNode","debouncedListener","contextName","onChange","tplStateStore","test","get","catchLoadBrick","unknownBricks","tplTagName","app","id","_tplStack$get","tplCount","set","includes","customElements","FormRendererElement","HTMLElement","$$typeof","tag","BRICK","return","events","portal","iid","ref","formData","confProps","_brickConf$properties","_ref3","properties","_excluded3","trackingContextList","asyncPropertyEntries","computedPropsFromHost","loadProperties","_ref4","registerBrickLifeCycle","lifeCycle","expandedBrickConf","childRuntimeContext","loadChildren","_ref5","entries","_ref6","childSlotId","slotConf","childrenOutput","child","_x19","_x20","_x21","_x22","_x23","_x24","_x25","_renderForEach","i","j","flat","menuConf","warn","rest","_excluded","last","sibling","assign","originalSlots","newSlots","process","env","NODE_ENV","_child$slot","promise","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 loadBricksImperatively,\n} from \"@next-core/loader\";\nimport { isTrackAll } from \"@next-core/cook\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\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 { 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\";\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 | undefined> | undefined)[];\n hasTrackingControls?: boolean;\n}\n\nexport async function renderRoutes(\n returnNode: RenderNode,\n routes: RouteConf[],\n _runtimeContext: RuntimeContext,\n rendererContext: RendererContext,\n slotId?: string\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 runtimeContext.ctxStore.define(route.context, runtimeContext);\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 switch (route.type) {\n case \"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 break;\n }\n case \"routes\": {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderRoutes(\n returnNode,\n route.routes,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\n break;\n }\n default: {\n output.menuRequests.push(loadMenu(route.menu, runtimeContext));\n const newOutput = await renderBricks(\n returnNode,\n route.bricks,\n runtimeContext,\n rendererContext,\n slotId\n );\n mergeRenderOutput(output, newOutput);\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 slotId?: string,\n tplStack?: Map<string, number>,\n noMemoize?: boolean\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n // 多个构件并行异步转换,但转换的结果按原顺序串行合并。\n const rendered = await Promise.all(\n bricks.map((brickConf, index) =>\n renderBrick(\n returnNode,\n brickConf,\n runtimeContext,\n rendererContext,\n slotId,\n index,\n tplStack && new Map(tplStack)\n )\n )\n );\n\n rendered.forEach((item, index) => {\n if (!noMemoize && item.hasTrackingControls) {\n // Memoize a render node before it's been merged.\n rendererContext.memoizeControlNode(slotId, index, item.node, returnNode);\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 slotId?: string,\n key?: 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 slotId,\n key,\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 () => {\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 slotId,\n tplStack\n );\n }\n case \":if\":\n case \":switch\": {\n return renderBricks(\n returnNode,\n bricks,\n runtimeContext,\n rendererContext,\n slotId,\n tplStack,\n true\n );\n }\n }\n };\n\n const controlledOutput = await renderControlNode();\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 output = await renderControlNode();\n output.blockingList.push(\n ...[\n ...runtimeContext.tplStateStoreMap.values(),\n ...runtimeContext.formStateStoreMap.values(),\n ].map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck\n );\n await Promise.all(output.blockingList);\n // Ignore stale renders\n if (renderId === currentRenderId) {\n rendererContext.rerenderControlNode(\n slotId,\n key as number,\n output.node,\n returnNode\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 return controlledOutput;\n }\n\n // Widgets need to be defined before rendering.\n if (/\\.tpl-/.test(brickName) && !customTemplates.get(brickName)) {\n await catchLoadBrick(\n loadBricksImperatively([brickName], getBrickPackages()),\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 catchLoadBrick(\n enqueueStableLoadBricks([brickName], getBrickPackages()),\n brickName,\n rendererContext.unknownBricks\n )\n );\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 // const confProps = brickConf.properties;\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 // 加载构件属性和加载子构件等任务,可以并行。\n const blockingList: Promise<unknown>[] = [];\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 loadProperties = async () => {\n brick.properties = await constructAsyncProperties(asyncPropertyEntries);\n listenOnTrackingContext(brick, trackingContextList);\n return brick.properties;\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 rendered = await Promise.all(\n Object.entries(slots).map(([childSlotId, slotConf]) =>\n slotConf.type !== \"routes\"\n ? renderBricks(\n brick,\n (slotConf as SlotConfOfBricks).bricks,\n childRuntimeContext,\n rendererContext,\n childSlotId,\n tplStack\n )\n : renderRoutes(\n brick,\n slotConf.routes,\n childRuntimeContext,\n rendererContext,\n childSlotId\n )\n )\n );\n\n const childrenOutput: RenderOutput = {\n ...output,\n node: undefined,\n blockingList: [],\n };\n for (const item of rendered) {\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 slotId: string | undefined,\n tplStack?: Map<string, number>\n): Promise<RenderOutput> {\n const output: RenderOutput = {\n blockingList: [],\n menuRequests: [],\n };\n\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 slotId,\n i * j,\n tplStack && new Map(tplStack)\n )\n )\n )\n )\n );\n\n // 多层构件并行异步转换,但转换的结果按原顺序串行合并。\n for (const item of rendered.flat()) {\n mergeRenderOutput(output, item);\n }\n return output;\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 catchLoadBrick(\n promise: Promise<unknown>,\n brickName: string,\n unknownBricks: RendererContext[\"unknownBricks\"]\n) {\n return unknownBricks === \"silent\"\n ? promise.catch((e) => {\n // eslint-disable-next-line no-console\n console.error(`Load brick \"${brickName}\" failed:`, e);\n })\n : promise;\n}\n"],"mappings":"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"}
@@ -3,9 +3,9 @@ import { isObject } from "@next-core/utils/general";
3
3
  import { asyncComputeRealValue, computeRealValue } from "./computeRealValue.js";
4
4
  import { StateOfUseBrick } from "./getNextStateOfUseBrick.js";
5
5
  import { getTracks } from "./getTracks.js";
6
- export function asyncComputeRealProperties(properties, runtimeContext, trackingContextList) {
6
+ export function asyncComputeRealPropertyEntries(properties, runtimeContext, trackingContextList) {
7
7
  if (isObject(properties)) {
8
- return Object.fromEntries(Object.entries(properties).map(_ref => {
8
+ return Object.entries(properties).map(_ref => {
9
9
  var [propName, propValue] = _ref;
10
10
  var {
11
11
  contextNames,
@@ -27,28 +27,41 @@ export function asyncComputeRealProperties(properties, runtimeContext, trackingC
27
27
  $$stateOfUseBrick: propName === "useBrick" ? StateOfUseBrick.USE_BRICK : StateOfUseBrick.INITIAL
28
28
  });
29
29
  return [propName, asyncValue];
30
- }));
30
+ });
31
31
  }
32
- return {};
32
+ return [];
33
33
  }
34
- export function constructAsyncProperties(_x) {
35
- return _constructAsyncProperties.apply(this, arguments);
34
+ export function computePropertyValue(_x, _x2) {
35
+ return _computePropertyValue.apply(this, arguments);
36
36
  }
37
- function _constructAsyncProperties() {
38
- _constructAsyncProperties = _asyncToGenerator(function* (asyncProperties) {
39
- return Object.fromEntries((yield Promise.all(Object.entries(asyncProperties).map( /*#__PURE__*/function () {
40
- var _ref4 = _asyncToGenerator(function* (_ref3) {
41
- var [propName, asyncValue] = _ref3;
37
+ function _computePropertyValue() {
38
+ _computePropertyValue = _asyncToGenerator(function* (asyncPropertyEntries, propName) {
39
+ for (var [name, asyncValue, ignoreUndefined] of asyncPropertyEntries) {
40
+ if (name === propName) {
42
41
  var value = yield asyncValue;
43
- // For `style` and `dataset`, only object is acceptable.
44
- if (propName !== "style" && propName !== "dataset" || isObject(value)) {
45
- return [propName, value];
42
+ if (value !== undefined || !ignoreUndefined) {
43
+ return value;
46
44
  }
47
- });
48
- return function (_x2) {
49
- return _ref4.apply(this, arguments);
50
- };
51
- }()))).filter(Boolean));
45
+ }
46
+ }
47
+ });
48
+ return _computePropertyValue.apply(this, arguments);
49
+ }
50
+ export function constructAsyncProperties(_x3) {
51
+ return _constructAsyncProperties.apply(this, arguments);
52
+ }
53
+ function _constructAsyncProperties() {
54
+ _constructAsyncProperties = _asyncToGenerator(function* (asyncPropertyEntries) {
55
+ var props = {};
56
+ for (var [propName, asyncValue, ignoreUndefined] of asyncPropertyEntries) {
57
+ var value = yield asyncValue;
58
+ if ((value !== undefined || !ignoreUndefined) && (
59
+ // For `style` and `dataset`, only object is acceptable.
60
+ propName !== "style" && propName !== "dataset" || isObject(value))) {
61
+ props[propName] = value;
62
+ }
63
+ }
64
+ return props;
52
65
  });
53
66
  return _constructAsyncProperties.apply(this, arguments);
54
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"computeRealProperties.js","names":["isObject","asyncComputeRealValue","computeRealValue","StateOfUseBrick","getTracks","asyncComputeRealProperties","properties","runtimeContext","trackingContextList","Object","fromEntries","entries","map","_ref","propName","propValue","contextNames","stateNames","formStateNames","push","asyncValue","$$lazyForUseBrick","$$stateOfUseBrick","USE_BRICK","INITIAL","constructAsyncProperties","_x","_constructAsyncProperties","apply","arguments","_asyncToGenerator","asyncProperties","Promise","all","_ref4","_ref3","value","_x2","filter","Boolean","computeRealProperties","_ref2","realValue"],"sources":["../../../../src/internal/compute/computeRealProperties.ts"],"sourcesContent":["import { isObject } from \"@next-core/utils/general\";\nimport { asyncComputeRealValue, computeRealValue } from \"./computeRealValue.js\";\nimport { TrackingContextItem } from \"./listenOnTrackingContext.js\";\nimport type { AsyncProperties, RuntimeContext } from \"../interfaces.js\";\nimport { StateOfUseBrick } from \"./getNextStateOfUseBrick.js\";\nimport { getTracks } from \"./getTracks.js\";\n\nexport function asyncComputeRealProperties(\n properties: Record<string, unknown> | undefined,\n runtimeContext: RuntimeContext,\n trackingContextList: TrackingContextItem[]\n): AsyncProperties {\n if (isObject(properties)) {\n return Object.fromEntries(\n Object.entries(properties).map<[string, Promise<unknown>]>(\n ([propName, propValue]) => {\n const { contextNames, stateNames, formStateNames } =\n getTracks(propValue);\n if (contextNames || stateNames || formStateNames) {\n trackingContextList.push({\n contextNames,\n stateNames,\n formStateNames,\n propName,\n propValue,\n });\n }\n // Related: https://github.com/facebook/react/issues/11347\n const asyncValue = asyncComputeRealValue(propValue, runtimeContext, {\n $$lazyForUseBrick: true,\n $$stateOfUseBrick:\n propName === \"useBrick\"\n ? StateOfUseBrick.USE_BRICK\n : StateOfUseBrick.INITIAL,\n });\n return [propName, asyncValue];\n }\n )\n );\n }\n\n return {};\n}\n\nexport async function constructAsyncProperties(\n asyncProperties: AsyncProperties\n): Promise<Record<string, unknown>> {\n return Object.fromEntries(\n (\n await Promise.all(\n Object.entries(asyncProperties).map(async ([propName, asyncValue]) => {\n const value = await asyncValue;\n // For `style` and `dataset`, only object is acceptable.\n if (\n (propName !== \"style\" && propName !== \"dataset\") ||\n isObject(value)\n ) {\n return [propName, value];\n }\n })\n )\n ).filter(Boolean) as [string, unknown][]\n );\n}\n\nexport function computeRealProperties(\n properties: Record<string, unknown> | undefined,\n runtimeContext: RuntimeContext\n): Record<string, unknown> {\n if (isObject(properties)) {\n return Object.fromEntries(\n Object.entries(properties)\n .map<[string, unknown] | undefined>(([propName, propValue]) => {\n // Related: https://github.com/facebook/react/issues/11347\n const realValue = computeRealValue(propValue, runtimeContext, {\n $$lazyForUseBrick: true,\n $$stateOfUseBrick:\n propName === \"useBrick\"\n ? StateOfUseBrick.USE_BRICK\n : StateOfUseBrick.INITIAL,\n });\n // For `style` and `dataset`, only object is acceptable.\n if (\n (propName !== \"style\" && propName !== \"dataset\") ||\n isObject(realValue)\n ) {\n return [propName, realValue];\n }\n })\n .filter(Boolean) as [string, unknown][]\n );\n }\n\n return {};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"computeRealProperties.js","names":["isObject","asyncComputeRealValue","computeRealValue","StateOfUseBrick","getTracks","asyncComputeRealPropertyEntries","properties","runtimeContext","trackingContextList","Object","entries","map","_ref","propName","propValue","contextNames","stateNames","formStateNames","push","asyncValue","$$lazyForUseBrick","$$stateOfUseBrick","USE_BRICK","INITIAL","computePropertyValue","_x","_x2","_computePropertyValue","apply","arguments","_asyncToGenerator","asyncPropertyEntries","name","ignoreUndefined","value","undefined","constructAsyncProperties","_x3","_constructAsyncProperties","props","computeRealProperties","fromEntries","_ref2","realValue","filter","Boolean"],"sources":["../../../../src/internal/compute/computeRealProperties.ts"],"sourcesContent":["import { isObject } from \"@next-core/utils/general\";\nimport { asyncComputeRealValue, computeRealValue } from \"./computeRealValue.js\";\nimport { TrackingContextItem } from \"./listenOnTrackingContext.js\";\nimport type { AsyncPropertyEntry, RuntimeContext } from \"../interfaces.js\";\nimport { StateOfUseBrick } from \"./getNextStateOfUseBrick.js\";\nimport { getTracks } from \"./getTracks.js\";\n\nexport function asyncComputeRealPropertyEntries(\n properties: Record<string, unknown> | undefined,\n runtimeContext: RuntimeContext,\n trackingContextList: TrackingContextItem[]\n): AsyncPropertyEntry[] {\n if (isObject(properties)) {\n return Object.entries(properties).map<[string, Promise<unknown>]>(\n ([propName, propValue]) => {\n const { contextNames, stateNames, formStateNames } =\n getTracks(propValue);\n if (contextNames || stateNames || formStateNames) {\n trackingContextList.push({\n contextNames,\n stateNames,\n formStateNames,\n propName,\n propValue,\n });\n }\n // Related: https://github.com/facebook/react/issues/11347\n const asyncValue = asyncComputeRealValue(propValue, runtimeContext, {\n $$lazyForUseBrick: true,\n $$stateOfUseBrick:\n propName === \"useBrick\"\n ? StateOfUseBrick.USE_BRICK\n : StateOfUseBrick.INITIAL,\n });\n return [propName, asyncValue];\n }\n );\n }\n\n return [];\n}\n\nexport async function computePropertyValue(\n asyncPropertyEntries: AsyncPropertyEntry[],\n propName: string\n): Promise<unknown> {\n for (const [name, asyncValue, ignoreUndefined] of asyncPropertyEntries) {\n if (name === propName) {\n const value = await asyncValue;\n if (value !== undefined || !ignoreUndefined) {\n return value;\n }\n }\n }\n}\n\nexport async function constructAsyncProperties(\n asyncPropertyEntries: AsyncPropertyEntry[]\n): Promise<Record<string, unknown>> {\n const props: Record<string, unknown> = {};\n for (const [propName, asyncValue, ignoreUndefined] of asyncPropertyEntries) {\n const value = await asyncValue;\n if (\n (value !== undefined || !ignoreUndefined) &&\n // For `style` and `dataset`, only object is acceptable.\n ((propName !== \"style\" && propName !== \"dataset\") || isObject(value))\n ) {\n props[propName] = value;\n }\n }\n return props;\n}\n\nexport function computeRealProperties(\n properties: Record<string, unknown> | undefined,\n runtimeContext: RuntimeContext\n): Record<string, unknown> {\n if (isObject(properties)) {\n return Object.fromEntries(\n Object.entries(properties)\n .map<[string, unknown] | undefined>(([propName, propValue]) => {\n // Related: https://github.com/facebook/react/issues/11347\n const realValue = computeRealValue(propValue, runtimeContext, {\n $$lazyForUseBrick: true,\n $$stateOfUseBrick:\n propName === \"useBrick\"\n ? StateOfUseBrick.USE_BRICK\n : StateOfUseBrick.INITIAL,\n });\n // For `style` and `dataset`, only object is acceptable.\n if (\n (propName !== \"style\" && propName !== \"dataset\") ||\n isObject(realValue)\n ) {\n return [propName, realValue];\n }\n })\n .filter(Boolean) as [string, unknown][]\n );\n }\n\n return {};\n}\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ import { asyncComputeRealValue, computeRealValue } from "../compute/computeRealV
9
9
  import { resolveData } from "./resolveData.js";
10
10
  import { resolveDataStore } from "./resolveDataStore.js";
11
11
  import { handleHttpError } from "../../handleHttpError.js";
12
+ import { computePropertyValue } from "../compute/computeRealProperties.js";
12
13
  var supportContextResolveTriggerBrickLifeCycle = ["onBeforePageLoad", "onPageLoad", "onBeforePageLeave", "onPageLeave", "onAnchorLoad", "onAnchorUnload"];
13
14
  export class DataStore {
14
15
  // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整
@@ -152,9 +153,9 @@ export class DataStore {
152
153
  detail: item.value
153
154
  }));
154
155
  }
155
- define(dataConfs, runtimeContext, asyncHostProperties) {
156
+ define(dataConfs, runtimeContext, asyncHostPropertyEntries) {
156
157
  if (Array.isArray(dataConfs) && dataConfs.length > 0) {
157
- var pending = resolveDataStore(dataConfs, dataConf => this.resolve(dataConf, runtimeContext, asyncHostProperties), this.type);
158
+ var pending = resolveDataStore(dataConfs, dataConf => this.resolve(dataConf, runtimeContext, asyncHostPropertyEntries), this.type);
158
159
  this.pendingStack.push(pending);
159
160
  }
160
161
  }
@@ -205,15 +206,15 @@ export class DataStore {
205
206
  }
206
207
  });
207
208
  }
208
- resolve(dataConf, runtimeContext, asyncHostProperties) {
209
+ resolve(dataConf, runtimeContext, asyncHostPropertyEntries) {
209
210
  var _this3 = this;
210
211
  return _asyncToGenerator(function* () {
211
212
  if (!(yield asyncCheckIf(dataConf, runtimeContext))) {
212
213
  return false;
213
214
  }
214
215
  var value;
215
- if (asyncHostProperties && (_this3.type === "STATE" ? dataConf.expose : _this3.type === "FORM_STATE") && hasOwnProperty(asyncHostProperties, dataConf.name)) {
216
- value = yield asyncHostProperties[dataConf.name];
216
+ if (asyncHostPropertyEntries && (_this3.type === "STATE" ? dataConf.expose : _this3.type === "FORM_STATE")) {
217
+ value = yield computePropertyValue(asyncHostPropertyEntries, dataConf.name);
217
218
  }
218
219
  var load;
219
220
  var loading;
@@ -1 +1 @@
1
- {"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","pendingResult","handleAsyncAfterMount","async","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_x","apply","arguments","lazy","newData","EventTarget","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","has","set","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /** After mount, dispatch the change event when an async data is loaded */\n handleAsyncAfterMount() {\n this.data.forEach((item) => {\n if (item.async) {\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\") &&\n hasOwnProperty(asyncHostProperties, dataConf.name)\n ) {\n value = await asyncHostProperties[dataConf.name];\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","pendingResult","handleAsyncAfterMount","async","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_x","apply","arguments","lazy","newData","EventTarget","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","has","set","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostPropertyEntries),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /** After mount, dispatch the change event when an async data is loaded */\n handleAsyncAfterMount() {\n this.data.forEach((item) => {\n if (item.async) {\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}