@ankhorage/runtime 2.2.8 → 2.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @ankhorage/runtime
2
2
 
3
+ ## 2.2.10
4
+
5
+ ### Patch Changes
6
+
7
+ - 17683bf: Preserve normalized record payloads for component-owned events such as upload requests, sorting, and sheet index changes when resolving manifest action bindings.
8
+
9
+ ## 2.2.9
10
+
11
+ ### Patch Changes
12
+
13
+ - bc3b227: Update Ankhorage dependencies: `@ankhorage/data-sources`.
14
+ - 782dbf2: Update Ankhorage dependencies: `@ankhorage/contracts`.
15
+
3
16
  ## 2.2.8
4
17
 
5
18
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/runtime
5
5
 
6
- ![license: MIT](./paradox/badges/license.svg) ![npm: v2.2.0](./paradox/badges/npm.svg) ![runtime: bun](./paradox/badges/runtime.svg) ![typescript: strict](./paradox/badges/typescript.svg) ![eslint: checked](./paradox/badges/eslint.svg) ![prettier: checked](./paradox/badges/prettier.svg) ![build: checked](./paradox/badges/build.svg) ![tests: checked](./paradox/badges/tests.svg) ![docs: paradox](./paradox/badges/docs.svg)
6
+ ![license: MIT](./paradox/badges/license.svg) ![npm: v2.2.9](./paradox/badges/npm.svg) ![runtime: bun](./paradox/badges/runtime.svg) ![typescript: strict](./paradox/badges/typescript.svg) ![eslint: checked](./paradox/badges/eslint.svg) ![prettier: checked](./paradox/badges/prettier.svg) ![build: checked](./paradox/badges/build.svg) ![tests: checked](./paradox/badges/tests.svg) ![docs: paradox](./paradox/badges/docs.svg)
7
7
 
8
8
  Platform-neutral runtime contracts and helpers for Ankhorage generated apps.
9
9
 
@@ -244,10 +244,10 @@ function createPayloadForEvent(eventName, handlerArgs) {
244
244
  if (eventName === 'manualEntry') {
245
245
  return handlerArgs[0] === undefined ? {} : { value: handlerArgs[0] };
246
246
  }
247
- if (eventName === 'requestPermission') {
247
+ if (eventName === 'requestPermission' || eventName === 'press') {
248
248
  return {};
249
249
  }
250
- return {};
250
+ return asRecord(handlerArgs[0]) ?? {};
251
251
  }
252
252
  function localEventNameToEventType(eventName) {
253
253
  if (eventName === 'itemPress')
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeActionRegistry.js","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinitionList,\n BindingCondition,\n BindingInputMap,\n BindingValue,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataSourceDiagnostic,\n EventBinding,\n EventBindingTarget,\n UiNode,\n} from '@ankhorage/contracts';\n\nimport { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';\nimport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMap,\n type RuntimeBindingOperationExecutor,\n type RuntimeBindingOperationResultCache,\n type RuntimeBindingOperationResultWriter,\n} from './runtimeBindings';\nimport type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';\n\ntype RuntimeEventPayload = Record<string, unknown>;\n\ntype RuntimeEventHandler = (...args: unknown[]) => unknown;\n\ntype RuntimeOperationEventTarget = Extract<EventBindingTarget, { readonly kind: 'operation' }>;\n\nexport interface RuntimeActionRegistry {\n dispatchComponentEvent(args: RuntimeComponentEventDispatchArgs): Promise<void>;\n registerActionHandler(type: string, handler: RuntimeActionHandler): () => void;\n}\n\nexport interface RuntimeActionResolutionScope {\n readonly context?: Record<string, unknown>;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly state?: Record<string, unknown>;\n}\n\nexport interface RuntimeActionResolutionArgs extends RuntimeActionResolutionScope {\n readonly event: ComponentEventDto<string, object>;\n}\n\nexport interface RuntimeComponentEventDispatchArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly event: ComponentEventDto<string, object>;\n readonly eventName?: string;\n readonly executeAction?: RuntimeActionHandler;\n readonly apis?: ApiDefinitionList;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly writeOperationResult?: RuntimeBindingOperationResultWriter;\n}\n\nexport interface RuntimeEventPropWrapArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly props: Record<string, unknown>;\n readonly disableActions: boolean;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly dispatchComponentEvent: (\n args: RuntimeComponentEventDispatchArgs,\n ) => Promise<void> | void;\n}\n\nexport function createRuntimeActionRegistry(\n options: {\n actionHandlers?: RuntimeActionHandlers;\n apis?: ApiDefinitionList;\n dataBindings?: ComponentDataBindingRegistry;\n executeAction?: RuntimeActionHandler;\n executeOperation?: RuntimeBindingOperationExecutor;\n operationResults?: RuntimeBindingOperationResultCache;\n writeOperationResult?: RuntimeBindingOperationResultWriter;\n } = {},\n): RuntimeActionRegistry {\n const actionHandlers: RuntimeActionHandlers = { ...(options.actionHandlers ?? {}) };\n\n return {\n async dispatchComponentEvent(args) {\n await dispatchRuntimeComponentEvent({\n ...args,\n actionHandlers,\n apis: args.apis ?? options.apis,\n dataBindings: args.dataBindings ?? options.dataBindings,\n executeAction: args.executeAction ?? options.executeAction,\n executeOperation: args.executeOperation ?? options.executeOperation,\n operationResults: args.operationResults ?? options.operationResults,\n writeOperationResult: args.writeOperationResult ?? options.writeOperationResult,\n });\n },\n registerActionHandler(type, handler) {\n actionHandlers[type] = handler;\n\n return () => {\n delete actionHandlers[type];\n };\n },\n };\n}\n\nexport async function dispatchRuntimeComponentEvent(\n args: RuntimeComponentEventDispatchArgs & {\n readonly actionHandlers?: RuntimeActionHandlers;\n },\n): Promise<readonly DataSourceDiagnostic[]> {\n const { node, event, eventName = inferLocalEventName(event.type), actionHandlers } = args;\n const eventBindings: readonly EventBinding[] =\n args.dataBindings?.[node.id]?.events?.[eventName] ??\n args.dataBindings?.[node.id]?.events?.[event.type] ??\n [];\n const diagnostics: DataSourceDiagnostic[] = [];\n const dispatchOperationResults: Record<string, BindingValue | undefined> = {\n ...(args.operationResults ?? {}),\n };\n const resolutionArgs: RuntimeComponentEventDispatchArgs = {\n ...args,\n operationResults: dispatchOperationResults,\n };\n\n for (const binding of eventBindings) {\n if (!matchesBindingCondition(binding.when, resolutionArgs)) continue;\n\n if (binding.target.kind === 'action') {\n const resolvedPayload = await resolveObjectEventBindingInput(\n binding.input,\n resolutionArgs,\n diagnostics,\n );\n const action =\n resolvedPayload === undefined\n ? { type: binding.target.type }\n : { type: binding.target.type, payload: resolvedPayload };\n if (resolutionArgs.executeAction) {\n await resolutionArgs.executeAction({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n const handler = actionHandlers?.[binding.target.type];\n if (handler) {\n await handler({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n diagnostics.push({\n code: 'missing-action-handler',\n message: `Action '${binding.target.type}' could not be executed because no runtime executor or handler is registered.`,\n severity: 'error',\n });\n continue;\n }\n\n const operationSucceeded = await dispatchRuntimeOperationEventBinding({\n args: resolutionArgs,\n binding,\n diagnostics,\n operationResults: dispatchOperationResults,\n target: binding.target,\n });\n\n if (!operationSucceeded) {\n break;\n }\n }\n\n return diagnostics;\n}\n\nexport function wrapRuntimeEventProps(args: RuntimeEventPropWrapArgs): Record<string, unknown> {\n const { node, props, disableActions, dispatchComponentEvent } = args;\n const wrappedProps: Record<string, unknown> = { ...props };\n const nodeEventBindings = args.dataBindings?.[node.id]?.events;\n\n if (disableActions || !nodeEventBindings) {\n return wrappedProps;\n }\n\n for (const eventName of Object.keys(nodeEventBindings)) {\n const propName = eventNameToCallbackProp(eventName);\n const existingHandler = wrappedProps[propName];\n\n wrappedProps[propName] = (...handlerArgs: unknown[]) => {\n let existingResult: unknown;\n\n if (isRuntimeEventHandler(existingHandler)) {\n existingResult = existingHandler(...handlerArgs);\n }\n\n void dispatchComponentEvent({\n context: args.context,\n dataBindings: args.dataBindings,\n event: createComponentEventFromHandlerArgs({ eventName, handlerArgs, node }),\n eventName,\n node,\n operationResults: args.operationResults,\n state: args.state,\n });\n\n return existingResult;\n };\n }\n\n return wrappedProps;\n}\n\nexport function createComponentEventFromHandlerArgs(args: {\n readonly node: UiNode;\n readonly eventName: string;\n readonly handlerArgs: readonly unknown[];\n}): ComponentEventDto<string, RuntimeEventPayload> {\n const { node, eventName, handlerArgs } = args;\n\n return {\n payload: createPayloadForEvent(eventName, handlerArgs),\n sourceNodeId: node.id,\n type: localEventNameToEventType(eventName),\n };\n}\n\nexport function resolveRuntimeActionPayload(\n payload: object | undefined,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (payload === undefined) {\n return undefined;\n }\n\n return resolveRuntimeActionValue(payload, args);\n}\n\nexport function resolveRuntimeActionValue(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (!isRecord(value)) return undefined;\n\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, resolveRuntimeActionValueEntry(entry, args)]),\n );\n}\n\nasync function dispatchRuntimeOperationEventBinding(args: {\n readonly args: RuntimeComponentEventDispatchArgs;\n readonly binding: EventBinding;\n readonly diagnostics: DataSourceDiagnostic[];\n readonly operationResults: Record<string, BindingValue | undefined>;\n readonly target: RuntimeOperationEventTarget;\n}): Promise<boolean> {\n const { binding, diagnostics, target } = args;\n\n if (args.args.executeOperation === undefined) {\n diagnostics.push({\n apiId: target.operation.apiId,\n code: 'missing-adapter',\n endpointId: target.operation.endpointId,\n operationId: target.operation.operationId,\n message: 'Event API operation binding requires an injected operation executor.',\n severity: 'error',\n });\n return false;\n }\n\n const selection = resolveRuntimeBindingOperationSelection(\n target.operation,\n args.args.apis,\n diagnostics,\n );\n if (selection === undefined) return false;\n\n const result = await args.args.executeOperation({\n api: selection.api,\n endpoint: selection.endpoint,\n input: await resolveEventBindingInput(binding.input, args.args, diagnostics),\n node: args.args.node,\n operation: target.operation,\n });\n diagnostics.push(...(result.diagnostics ?? []));\n\n if (result.ok) {\n const operationKey = createRuntimeBindingOperationKey(target.operation);\n args.operationResults[operationKey] = result.data;\n args.args.writeOperationResult?.(operationKey, result.data);\n return true;\n }\n\n return false;\n}\n\nfunction resolveRuntimeActionValueEntry(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): unknown {\n if (Array.isArray(value)) return value.map((item) => resolveRuntimeActionValueEntry(item, args));\n if (!isRecord(value)) return value;\n if (!('valueFrom' in value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n resolveRuntimeActionValueEntry(entry, args),\n ]),\n );\n }\n\n return undefined;\n}\n\nasync function resolveObjectEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n): Promise<object | undefined> {\n const value = await resolveEventBindingInput(input, args, diagnostics);\n return isRecord(value) ? value : undefined;\n}\n\nasync function resolveEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n) {\n return resolveBindingInputMap(\n input,\n {\n apis: args.apis,\n context: args.context,\n dataBindings: args.dataBindings,\n event: args.event,\n executeOperation: args.executeOperation,\n operationResults: args.operationResults,\n },\n diagnostics,\n );\n}\n\nfunction matchesBindingCondition(\n condition: BindingCondition | undefined,\n args: RuntimeActionResolutionArgs,\n): boolean {\n if (condition === undefined) return true;\n\n const value = readBindingConditionSource(condition, args);\n\n switch (condition.operator) {\n case 'eq':\n return value === condition.value;\n case 'exists':\n return value !== undefined;\n case 'neq':\n return value !== condition.value;\n case 'notExists':\n return value === undefined;\n }\n}\n\nfunction readBindingConditionSource(\n condition: BindingCondition,\n args: RuntimeActionResolutionArgs,\n): unknown {\n switch (condition.source.kind) {\n case 'context':\n return readPath(args.context, condition.source.path);\n case 'event':\n return readPath(args.event, condition.source.path);\n case 'literal':\n return condition.source.value;\n case 'operation': {\n const operationResult =\n args.operationResults?.[createRuntimeBindingOperationKey(condition.source.operation)];\n return condition.source.path === undefined\n ? operationResult\n : readPath(operationResult, condition.source.path);\n }\n case 'state':\n return readPath(args.state, condition.source.path);\n }\n}\n\nfunction createPayloadForEvent(\n eventName: string,\n handlerArgs: readonly unknown[],\n): RuntimeEventPayload {\n if (eventName === 'barcodeScanned') {\n return createBarcodeScannedPayload(handlerArgs[0]);\n }\n\n if (eventName === 'submit') {\n return { values: asRecord(handlerArgs[0]) ?? {} };\n }\n\n if (eventName === 'itemPress') {\n const item = asRecord(handlerArgs[0]) ?? {};\n const itemId = readItemId(handlerArgs[0]);\n\n return itemId === undefined ? { item } : { itemId, item };\n }\n\n if (eventName === 'changeText' || eventName === 'valueChange') {\n return { value: handlerArgs[0] };\n }\n\n if (eventName === 'checkedChange') {\n return { checked: handlerArgs[0] };\n }\n\n if (eventName === 'manualEntry') {\n return handlerArgs[0] === undefined ? {} : { value: handlerArgs[0] };\n }\n\n if (eventName === 'requestPermission') {\n return {};\n }\n\n return {};\n}\n\nfunction localEventNameToEventType(eventName: string): string {\n if (eventName === 'itemPress') return 'collection.itemPress';\n if (eventName === 'press') return 'button.press';\n if (eventName === 'submit') return 'form.submit';\n\n return eventName;\n}\n\nfunction inferLocalEventName(eventType: string): string {\n const parts = eventType.split('.');\n\n return parts.at(-1) ?? eventType;\n}\n\nfunction eventNameToCallbackProp(eventName: string): string {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n\nfunction isRuntimeEventHandler(value: unknown): value is RuntimeEventHandler {\n return typeof value === 'function';\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n if (path.length === 0) return source;\n\n return path.split('.').reduce<unknown>((currentValue, part) => {\n if (!isRecord(currentValue)) return undefined;\n return currentValue[part];\n }, source);\n}\n\nfunction createBarcodeScannedPayload(value: unknown): RuntimeEventPayload {\n if (typeof value === 'string') {\n return { value };\n }\n\n if (!isRecord(value)) {\n return {};\n }\n\n const payload: RuntimeEventPayload = {};\n if (typeof value.value === 'string') payload.value = value.value;\n if (typeof value.type === 'string') payload.type = value.type;\n\n return payload;\n}\n\nfunction readItemId(value: unknown): string | number | undefined {\n if (typeof value === 'string' || typeof value === 'number') return value;\n if (!isRecord(value)) return undefined;\n\n const id = value.id ?? value.itemId;\n\n return typeof id === 'string' || typeof id === 'number' ? id : undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"]}
1
+ {"version":3,"file":"runtimeActionRegistry.js","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,uCAAuC,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACL,gCAAgC,EAChC,sBAAsB,GAIvB,MAAM,mBAAmB,CAAC;AA6C3B,MAAM,UAAU,2BAA2B,CACzC,UAQI,EAAE;IAEN,MAAM,cAAc,GAA0B,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,CAAC;IAEpF,OAAO;QACL,KAAK,CAAC,sBAAsB,CAAC,IAAI;YAC/B,MAAM,6BAA6B,CAAC;gBAClC,GAAG,IAAI;gBACP,cAAc;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI;gBAC/B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY;gBACvD,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa;gBAC1D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;gBACnE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;gBACnE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,IAAI,OAAO,CAAC,oBAAoB;aAChF,CAAC,CAAC;QACL,CAAC;QACD,qBAAqB,CAAC,IAAI,EAAE,OAAO;YACjC,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YAE/B,OAAO,GAAG,EAAE;gBACV,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAEC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAC1F,MAAM,aAAa,GACjB,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAClD,EAAE,CAAC;IACL,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,wBAAwB,GAA6C;QACzE,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;KACjC,CAAC;IACF,MAAM,cAAc,GAAsC;QACxD,GAAG,IAAI;QACP,gBAAgB,EAAE,wBAAwB;KAC3C,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;YAAE,SAAS;QAErE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,eAAe,GAAG,MAAM,8BAA8B,CAC1D,OAAO,CAAC,KAAK,EACb,cAAc,EACd,WAAW,CACZ,CAAC;YACF,MAAM,MAAM,GACV,eAAe,KAAK,SAAS;gBAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YAC9D,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;gBACjC,MAAM,cAAc,CAAC,aAAa,CAAC;oBACjC,MAAM;oBACN,KAAK;oBACL,IAAI;oBACJ,eAAe;iBAChB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC;oBACZ,MAAM;oBACN,KAAK;oBACL,IAAI;oBACJ,eAAe;iBAChB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,WAAW,OAAO,CAAC,MAAM,CAAC,IAAI,+EAA+E;gBACtH,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,oCAAoC,CAAC;YACpE,IAAI,EAAE,cAAc;YACpB,OAAO;YACP,WAAW;YACX,gBAAgB,EAAE,wBAAwB;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA8B;IAClE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IACrE,MAAM,YAAY,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAC;IAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAE/D,IAAI,cAAc,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE/C,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAsB,EAAE,EAAE;YACrD,IAAI,cAAuB,CAAC;YAE5B,IAAI,qBAAqB,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3C,cAAc,GAAG,eAAe,CAAC,GAAG,WAAW,CAAC,CAAC;YACnD,CAAC;YAED,KAAK,sBAAsB,CAAC;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,mCAAmC,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBAC5E,SAAS;gBACT,IAAI;gBACJ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAInD;IACC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE9C,OAAO;QACL,OAAO,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC;QACtD,YAAY,EAAE,IAAI,CAAC,EAAE;QACrB,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAA2B,EAC3B,IAAiC;IAEjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,IAAiC;IAEjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,8BAA8B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAChG,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oCAAoC,CAAC,IAMnD;IACC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE9C,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC7C,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;YAC7B,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;YACvC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW;YACzC,OAAO,EAAE,sEAAsE;YAC/E,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,uCAAuC,CACvD,MAAM,CAAC,SAAS,EAChB,IAAI,CAAC,IAAI,CAAC,IAAI,EACd,WAAW,CACZ,CAAC;IACF,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9C,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,KAAK,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC5E,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACpB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,gCAAgC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAc,EACd,IAAiC;IAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACjG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC1C,GAAG;YACH,8BAA8B,CAAC,KAAK,EAAE,IAAI,CAAC;SAC5C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,KAAkC,EAClC,IAAuC,EACvC,WAAmC;IAEnC,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAkC,EAClC,IAAuC,EACvC,WAAmC;IAEnC,OAAO,sBAAsB,CAC3B,KAAK,EACL;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,EACD,WAAW,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAAuC,EACvC,IAAiC;IAEjC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,KAAK,GAAG,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE1D,QAAQ,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3B,KAAK,IAAI;YACP,OAAO,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,SAAS,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,KAAK,KAAK,SAAS,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,SAA2B,EAC3B,IAAiC;IAEjC,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,eAAe,GACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC,gCAAgC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACxF,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;gBACxC,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAiB,EACjB,WAA+B;IAE/B,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,SAAS,KAAK,mBAAmB,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,yBAAyB,CAAC,SAAiB;IAClD,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,sBAAsB,CAAC;IAC7D,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,cAAc,CAAC;IACjD,IAAI,SAAS,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC;IAEjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB;IAChD,OAAO,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAS,QAAQ,CAAC,MAAe,EAAE,IAAY;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAErC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACjE,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAE9D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC;IAEpC,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC","sourcesContent":["import type {\n ApiDefinitionList,\n BindingCondition,\n BindingInputMap,\n BindingValue,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataSourceDiagnostic,\n EventBinding,\n EventBindingTarget,\n UiNode,\n} from '@ankhorage/contracts';\n\nimport { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';\nimport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMap,\n type RuntimeBindingOperationExecutor,\n type RuntimeBindingOperationResultCache,\n type RuntimeBindingOperationResultWriter,\n} from './runtimeBindings';\nimport type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';\n\ntype RuntimeEventPayload = Record<string, unknown>;\n\ntype RuntimeEventHandler = (...args: unknown[]) => unknown;\n\ntype RuntimeOperationEventTarget = Extract<EventBindingTarget, { readonly kind: 'operation' }>;\n\nexport interface RuntimeActionRegistry {\n dispatchComponentEvent(args: RuntimeComponentEventDispatchArgs): Promise<void>;\n registerActionHandler(type: string, handler: RuntimeActionHandler): () => void;\n}\n\nexport interface RuntimeActionResolutionScope {\n readonly context?: Record<string, unknown>;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly state?: Record<string, unknown>;\n}\n\nexport interface RuntimeActionResolutionArgs extends RuntimeActionResolutionScope {\n readonly event: ComponentEventDto<string, object>;\n}\n\nexport interface RuntimeComponentEventDispatchArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly event: ComponentEventDto<string, object>;\n readonly eventName?: string;\n readonly executeAction?: RuntimeActionHandler;\n readonly apis?: ApiDefinitionList;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly writeOperationResult?: RuntimeBindingOperationResultWriter;\n}\n\nexport interface RuntimeEventPropWrapArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly props: Record<string, unknown>;\n readonly disableActions: boolean;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly dispatchComponentEvent: (\n args: RuntimeComponentEventDispatchArgs,\n ) => Promise<void> | void;\n}\n\nexport function createRuntimeActionRegistry(\n options: {\n actionHandlers?: RuntimeActionHandlers;\n apis?: ApiDefinitionList;\n dataBindings?: ComponentDataBindingRegistry;\n executeAction?: RuntimeActionHandler;\n executeOperation?: RuntimeBindingOperationExecutor;\n operationResults?: RuntimeBindingOperationResultCache;\n writeOperationResult?: RuntimeBindingOperationResultWriter;\n } = {},\n): RuntimeActionRegistry {\n const actionHandlers: RuntimeActionHandlers = { ...(options.actionHandlers ?? {}) };\n\n return {\n async dispatchComponentEvent(args) {\n await dispatchRuntimeComponentEvent({\n ...args,\n actionHandlers,\n apis: args.apis ?? options.apis,\n dataBindings: args.dataBindings ?? options.dataBindings,\n executeAction: args.executeAction ?? options.executeAction,\n executeOperation: args.executeOperation ?? options.executeOperation,\n operationResults: args.operationResults ?? options.operationResults,\n writeOperationResult: args.writeOperationResult ?? options.writeOperationResult,\n });\n },\n registerActionHandler(type, handler) {\n actionHandlers[type] = handler;\n\n return () => {\n delete actionHandlers[type];\n };\n },\n };\n}\n\nexport async function dispatchRuntimeComponentEvent(\n args: RuntimeComponentEventDispatchArgs & {\n readonly actionHandlers?: RuntimeActionHandlers;\n },\n): Promise<readonly DataSourceDiagnostic[]> {\n const { node, event, eventName = inferLocalEventName(event.type), actionHandlers } = args;\n const eventBindings: readonly EventBinding[] =\n args.dataBindings?.[node.id]?.events?.[eventName] ??\n args.dataBindings?.[node.id]?.events?.[event.type] ??\n [];\n const diagnostics: DataSourceDiagnostic[] = [];\n const dispatchOperationResults: Record<string, BindingValue | undefined> = {\n ...(args.operationResults ?? {}),\n };\n const resolutionArgs: RuntimeComponentEventDispatchArgs = {\n ...args,\n operationResults: dispatchOperationResults,\n };\n\n for (const binding of eventBindings) {\n if (!matchesBindingCondition(binding.when, resolutionArgs)) continue;\n\n if (binding.target.kind === 'action') {\n const resolvedPayload = await resolveObjectEventBindingInput(\n binding.input,\n resolutionArgs,\n diagnostics,\n );\n const action =\n resolvedPayload === undefined\n ? { type: binding.target.type }\n : { type: binding.target.type, payload: resolvedPayload };\n if (resolutionArgs.executeAction) {\n await resolutionArgs.executeAction({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n const handler = actionHandlers?.[binding.target.type];\n if (handler) {\n await handler({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n diagnostics.push({\n code: 'missing-action-handler',\n message: `Action '${binding.target.type}' could not be executed because no runtime executor or handler is registered.`,\n severity: 'error',\n });\n continue;\n }\n\n const operationSucceeded = await dispatchRuntimeOperationEventBinding({\n args: resolutionArgs,\n binding,\n diagnostics,\n operationResults: dispatchOperationResults,\n target: binding.target,\n });\n\n if (!operationSucceeded) {\n break;\n }\n }\n\n return diagnostics;\n}\n\nexport function wrapRuntimeEventProps(args: RuntimeEventPropWrapArgs): Record<string, unknown> {\n const { node, props, disableActions, dispatchComponentEvent } = args;\n const wrappedProps: Record<string, unknown> = { ...props };\n const nodeEventBindings = args.dataBindings?.[node.id]?.events;\n\n if (disableActions || !nodeEventBindings) {\n return wrappedProps;\n }\n\n for (const eventName of Object.keys(nodeEventBindings)) {\n const propName = eventNameToCallbackProp(eventName);\n const existingHandler = wrappedProps[propName];\n\n wrappedProps[propName] = (...handlerArgs: unknown[]) => {\n let existingResult: unknown;\n\n if (isRuntimeEventHandler(existingHandler)) {\n existingResult = existingHandler(...handlerArgs);\n }\n\n void dispatchComponentEvent({\n context: args.context,\n dataBindings: args.dataBindings,\n event: createComponentEventFromHandlerArgs({ eventName, handlerArgs, node }),\n eventName,\n node,\n operationResults: args.operationResults,\n state: args.state,\n });\n\n return existingResult;\n };\n }\n\n return wrappedProps;\n}\n\nexport function createComponentEventFromHandlerArgs(args: {\n readonly node: UiNode;\n readonly eventName: string;\n readonly handlerArgs: readonly unknown[];\n}): ComponentEventDto<string, RuntimeEventPayload> {\n const { node, eventName, handlerArgs } = args;\n\n return {\n payload: createPayloadForEvent(eventName, handlerArgs),\n sourceNodeId: node.id,\n type: localEventNameToEventType(eventName),\n };\n}\n\nexport function resolveRuntimeActionPayload(\n payload: object | undefined,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (payload === undefined) {\n return undefined;\n }\n\n return resolveRuntimeActionValue(payload, args);\n}\n\nexport function resolveRuntimeActionValue(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (!isRecord(value)) return undefined;\n\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, resolveRuntimeActionValueEntry(entry, args)]),\n );\n}\n\nasync function dispatchRuntimeOperationEventBinding(args: {\n readonly args: RuntimeComponentEventDispatchArgs;\n readonly binding: EventBinding;\n readonly diagnostics: DataSourceDiagnostic[];\n readonly operationResults: Record<string, BindingValue | undefined>;\n readonly target: RuntimeOperationEventTarget;\n}): Promise<boolean> {\n const { binding, diagnostics, target } = args;\n\n if (args.args.executeOperation === undefined) {\n diagnostics.push({\n apiId: target.operation.apiId,\n code: 'missing-adapter',\n endpointId: target.operation.endpointId,\n operationId: target.operation.operationId,\n message: 'Event API operation binding requires an injected operation executor.',\n severity: 'error',\n });\n return false;\n }\n\n const selection = resolveRuntimeBindingOperationSelection(\n target.operation,\n args.args.apis,\n diagnostics,\n );\n if (selection === undefined) return false;\n\n const result = await args.args.executeOperation({\n api: selection.api,\n endpoint: selection.endpoint,\n input: await resolveEventBindingInput(binding.input, args.args, diagnostics),\n node: args.args.node,\n operation: target.operation,\n });\n diagnostics.push(...(result.diagnostics ?? []));\n\n if (result.ok) {\n const operationKey = createRuntimeBindingOperationKey(target.operation);\n args.operationResults[operationKey] = result.data;\n args.args.writeOperationResult?.(operationKey, result.data);\n return true;\n }\n\n return false;\n}\n\nfunction resolveRuntimeActionValueEntry(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): unknown {\n if (Array.isArray(value)) return value.map((item) => resolveRuntimeActionValueEntry(item, args));\n if (!isRecord(value)) return value;\n if (!('valueFrom' in value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n resolveRuntimeActionValueEntry(entry, args),\n ]),\n );\n }\n\n return undefined;\n}\n\nasync function resolveObjectEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n): Promise<object | undefined> {\n const value = await resolveEventBindingInput(input, args, diagnostics);\n return isRecord(value) ? value : undefined;\n}\n\nasync function resolveEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n) {\n return resolveBindingInputMap(\n input,\n {\n apis: args.apis,\n context: args.context,\n dataBindings: args.dataBindings,\n event: args.event,\n executeOperation: args.executeOperation,\n operationResults: args.operationResults,\n },\n diagnostics,\n );\n}\n\nfunction matchesBindingCondition(\n condition: BindingCondition | undefined,\n args: RuntimeActionResolutionArgs,\n): boolean {\n if (condition === undefined) return true;\n\n const value = readBindingConditionSource(condition, args);\n\n switch (condition.operator) {\n case 'eq':\n return value === condition.value;\n case 'exists':\n return value !== undefined;\n case 'neq':\n return value !== condition.value;\n case 'notExists':\n return value === undefined;\n }\n}\n\nfunction readBindingConditionSource(\n condition: BindingCondition,\n args: RuntimeActionResolutionArgs,\n): unknown {\n switch (condition.source.kind) {\n case 'context':\n return readPath(args.context, condition.source.path);\n case 'event':\n return readPath(args.event, condition.source.path);\n case 'literal':\n return condition.source.value;\n case 'operation': {\n const operationResult =\n args.operationResults?.[createRuntimeBindingOperationKey(condition.source.operation)];\n return condition.source.path === undefined\n ? operationResult\n : readPath(operationResult, condition.source.path);\n }\n case 'state':\n return readPath(args.state, condition.source.path);\n }\n}\n\nfunction createPayloadForEvent(\n eventName: string,\n handlerArgs: readonly unknown[],\n): RuntimeEventPayload {\n if (eventName === 'barcodeScanned') {\n return createBarcodeScannedPayload(handlerArgs[0]);\n }\n\n if (eventName === 'submit') {\n return { values: asRecord(handlerArgs[0]) ?? {} };\n }\n\n if (eventName === 'itemPress') {\n const item = asRecord(handlerArgs[0]) ?? {};\n const itemId = readItemId(handlerArgs[0]);\n\n return itemId === undefined ? { item } : { itemId, item };\n }\n\n if (eventName === 'changeText' || eventName === 'valueChange') {\n return { value: handlerArgs[0] };\n }\n\n if (eventName === 'checkedChange') {\n return { checked: handlerArgs[0] };\n }\n\n if (eventName === 'manualEntry') {\n return handlerArgs[0] === undefined ? {} : { value: handlerArgs[0] };\n }\n\n if (eventName === 'requestPermission' || eventName === 'press') {\n return {};\n }\n\n return asRecord(handlerArgs[0]) ?? {};\n}\n\nfunction localEventNameToEventType(eventName: string): string {\n if (eventName === 'itemPress') return 'collection.itemPress';\n if (eventName === 'press') return 'button.press';\n if (eventName === 'submit') return 'form.submit';\n\n return eventName;\n}\n\nfunction inferLocalEventName(eventType: string): string {\n const parts = eventType.split('.');\n\n return parts.at(-1) ?? eventType;\n}\n\nfunction eventNameToCallbackProp(eventName: string): string {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n\nfunction isRuntimeEventHandler(value: unknown): value is RuntimeEventHandler {\n return typeof value === 'function';\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n if (path.length === 0) return source;\n\n return path.split('.').reduce<unknown>((currentValue, part) => {\n if (!isRecord(currentValue)) return undefined;\n return currentValue[part];\n }, source);\n}\n\nfunction createBarcodeScannedPayload(value: unknown): RuntimeEventPayload {\n if (typeof value === 'string') {\n return { value };\n }\n\n if (!isRecord(value)) {\n return {};\n }\n\n const payload: RuntimeEventPayload = {};\n if (typeof value.value === 'string') payload.value = value.value;\n if (typeof value.type === 'string') payload.type = value.type;\n\n return payload;\n}\n\nfunction readItemId(value: unknown): string | number | undefined {\n if (typeof value === 'string' || typeof value === 'number') return value;\n if (!isRecord(value)) return undefined;\n\n const id = value.id ?? value.itemId;\n\n return typeof id === 'string' || typeof id === 'number' ? id : undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/runtime",
3
- "version": "2.2.8",
3
+ "version": "2.2.10",
4
4
  "description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -67,8 +67,8 @@
67
67
  "knip:check": "ankhorage-knip"
68
68
  },
69
69
  "dependencies": {
70
- "@ankhorage/contracts": "^11.0.0",
71
- "@ankhorage/data-sources": "^2.0.2"
70
+ "@ankhorage/contracts": "^11.1.0",
71
+ "@ankhorage/data-sources": "^2.0.3"
72
72
  },
73
73
  "peerDependencies": {
74
74
  "react": "19.2.3",
@@ -81,7 +81,7 @@
81
81
  }
82
82
  },
83
83
  "devDependencies": {
84
- "@ankhorage/devtools": "^1.11.0",
84
+ "@ankhorage/devtools": "^1.12.0",
85
85
  "@ankhorage/paradox": "^0.1.24",
86
86
  "@types/bun": "^1.4.1",
87
87
  "@types/node": "^24.13.3",
@@ -94,5 +94,5 @@
94
94
  "typescript": "~6.0.3"
95
95
  },
96
96
  "sideEffects": false,
97
- "packageManager": "bun@1.4.1"
97
+ "packageManager": "bun@1.4.2"
98
98
  }
@@ -1,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v2.2.0">
2
- <title>npm: v2.2.0</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v2.2.9">
2
+ <title>npm: v2.2.9</title>
3
3
  <rect width="38" height="20" fill="#374151"/>
4
4
  <rect x="38" width="52" height="20" fill="#cb3837"/>
5
5
  <text x="19" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">npm</text>
6
- <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v2.2.0</text>
6
+ <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v2.2.9</text>
7
7
  </svg>
@@ -78,6 +78,10 @@ graph TD
78
78
  package__ankhorage_runtime -.-> module_src_runtimeEventExecution_ts
79
79
  module_src_runtimeEventExecution_ts --> module_src_runtimeActionRegistry_ts
80
80
  module_src_runtimeEventExecution_ts --> module_src_RuntimeRendererConfig_tsx
81
+ module_src_runtimeImageMedia_test_ts["src/runtimeImageMedia.test.ts"]
82
+ package__ankhorage_runtime -.-> module_src_runtimeImageMedia_test_ts
83
+ module_src_runtimeImageMedia_test_ts --> module_src_runtimeMedia_ts
84
+ module_src_runtimeImageMedia_test_ts --> module_src_runtimeNodeProps_ts
81
85
  module_src_runtimeManifest_ts["src/runtimeManifest.ts"]
82
86
  package__ankhorage_runtime -.-> module_src_runtimeManifest_ts
83
87
  module_src_runtimeMedia_test_ts["src/runtimeMedia.test.ts"]
@@ -24,6 +24,7 @@ graph LR
24
24
  module_src_runtimeDbPersist_ts["src/runtimeDbPersist.ts"]
25
25
  module_src_runtimeEventExecution_test_ts["src/runtimeEventExecution.test.ts"]
26
26
  module_src_runtimeEventExecution_ts["src/runtimeEventExecution.ts"]
27
+ module_src_runtimeImageMedia_test_ts["src/runtimeImageMedia.test.ts"]
27
28
  module_src_runtimeManifest_ts["src/runtimeManifest.ts"]
28
29
  module_src_runtimeMedia_test_ts["src/runtimeMedia.test.ts"]
29
30
  module_src_runtimeMedia_ts["src/runtimeMedia.ts"]
@@ -24,6 +24,7 @@ graph LR
24
24
  module_src_runtimeDbPersist_ts["src/runtimeDbPersist.ts"]
25
25
  module_src_runtimeEventExecution_test_ts["src/runtimeEventExecution.test.ts"]
26
26
  module_src_runtimeEventExecution_ts["src/runtimeEventExecution.ts"]
27
+ module_src_runtimeImageMedia_test_ts["src/runtimeImageMedia.test.ts"]
27
28
  module_src_runtimeManifest_ts["src/runtimeManifest.ts"]
28
29
  module_src_runtimeMedia_test_ts["src/runtimeMedia.test.ts"]
29
30
  module_src_runtimeMedia_ts["src/runtimeMedia.ts"]
@@ -78,6 +79,8 @@ graph LR
78
79
  module_src_runtimeEventExecution_test_ts --> module_src_runtimeEventExecution_ts
79
80
  module_src_runtimeEventExecution_ts --> module_src_runtimeActionRegistry_ts
80
81
  module_src_runtimeEventExecution_ts --> module_src_RuntimeRendererConfig_tsx
82
+ module_src_runtimeImageMedia_test_ts --> module_src_runtimeMedia_ts
83
+ module_src_runtimeImageMedia_test_ts --> module_src_runtimeNodeProps_ts
81
84
  module_src_runtimeMedia_test_ts --> module_src_runtimeMedia_ts
82
85
  module_src_runtimeMediaCache_tsx --> module_src_runtimeMedia_ts
83
86
  module_src_runtimeMediaConfig_test_ts --> module_src_RuntimeRendererConfig_tsx
@@ -1604,7 +1604,7 @@
1604
1604
  {
1605
1605
  "name": "dataBindings",
1606
1606
  "kind": "property",
1607
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
1607
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
1608
1608
  "required": false,
1609
1609
  "description": null
1610
1610
  },
@@ -1686,7 +1686,7 @@
1686
1686
  {
1687
1687
  "name": "dataBindings",
1688
1688
  "kind": "property",
1689
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
1689
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
1690
1690
  "required": false,
1691
1691
  "description": null
1692
1692
  },
@@ -1809,7 +1809,7 @@
1809
1809
  {
1810
1810
  "name": "dataBindings",
1811
1811
  "kind": "property",
1812
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
1812
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
1813
1813
  "required": false,
1814
1814
  "description": null
1815
1815
  },
@@ -2055,7 +2055,7 @@
2055
2055
  {
2056
2056
  "name": "dataBindings",
2057
2057
  "kind": "property",
2058
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2058
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2059
2059
  "required": false,
2060
2060
  "description": null
2061
2061
  },
@@ -2446,7 +2446,7 @@
2446
2446
  {
2447
2447
  "name": "dataBindings",
2448
2448
  "kind": "property",
2449
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2449
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2450
2450
  "required": false,
2451
2451
  "description": null
2452
2452
  },
@@ -2488,7 +2488,7 @@
2488
2488
  {
2489
2489
  "name": "mediaAssets",
2490
2490
  "kind": "property",
2491
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/media\").MediaAsset>> | undefined",
2491
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").MediaAsset>> | undefined",
2492
2492
  "required": false,
2493
2493
  "description": null
2494
2494
  },
@@ -2502,7 +2502,7 @@
2502
2502
  {
2503
2503
  "name": "operationResults",
2504
2504
  "kind": "property",
2505
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").BindingValue | undefined>> | undefined",
2505
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").BindingValue | undefined>> | undefined",
2506
2506
  "required": false,
2507
2507
  "description": null
2508
2508
  },
@@ -2622,7 +2622,7 @@
2622
2622
  {
2623
2623
  "name": "dataBindings",
2624
2624
  "kind": "property",
2625
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2625
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2626
2626
  "required": false,
2627
2627
  "description": null
2628
2628
  },
@@ -2650,7 +2650,7 @@
2650
2650
  {
2651
2651
  "name": "executeAction",
2652
2652
  "kind": "property",
2653
- "type": "import(\"./src/RuntimeRendererConfig\").RuntimeActionHandler | undefined",
2653
+ "type": "import(\"./RuntimeRendererConfig\").RuntimeActionHandler | undefined",
2654
2654
  "required": false,
2655
2655
  "description": null
2656
2656
  },
@@ -2671,7 +2671,7 @@
2671
2671
  {
2672
2672
  "name": "mediaAssets",
2673
2673
  "kind": "property",
2674
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/media\").MediaAsset>> | undefined",
2674
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").MediaAsset>> | undefined",
2675
2675
  "required": false,
2676
2676
  "description": null
2677
2677
  },
@@ -553,17 +553,17 @@ Source: `src/runtimeBindings.ts:66:1`
553
553
 
554
554
  ### Members
555
555
 
556
- | Name | Kind | Type | Required | Description |
557
- | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------- | -------- | ----------- |
558
- | apis | property | `ApiDefinitionList \| undefined` | no | |
559
- | context | property | `Record<string, unknown> \| undefined` | no | |
560
- | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").ComponentDataBinding>> \| undefined` | no | |
561
- | event | property | `ComponentEventDto<string, object> \| undefined` | no | |
562
- | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
563
- | node | property | `UiNode` | yes | |
564
- | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
565
- | props | property | `Record<string, unknown>` | yes | |
566
- | stateAdapter | property | `StateAdapter \| undefined` | no | |
556
+ | Name | Kind | Type | Required | Description |
557
+ | ---------------- | -------- | -------------------------------------------------------------------------------------------- | -------- | ----------- |
558
+ | apis | property | `ApiDefinitionList \| undefined` | no | |
559
+ | context | property | `Record<string, unknown> \| undefined` | no | |
560
+ | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts").ComponentDataBinding>> \| undefined` | no | |
561
+ | event | property | `ComponentEventDto<string, object> \| undefined` | no | |
562
+ | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
563
+ | node | property | `UiNode` | yes | |
564
+ | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
565
+ | props | property | `Record<string, unknown>` | yes | |
566
+ | stateAdapter | property | `StateAdapter \| undefined` | no | |
567
567
 
568
568
  ## RuntimeBindingResolutionContext
569
569
 
@@ -573,15 +573,15 @@ Source: `src/runtimeBindings.ts:56:1`
573
573
 
574
574
  ### Members
575
575
 
576
- | Name | Kind | Type | Required | Description |
577
- | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------- | -------- | ----------- |
578
- | apis | property | `ApiDefinitionList \| undefined` | no | |
579
- | context | property | `Record<string, unknown> \| undefined` | no | |
580
- | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").ComponentDataBinding>> \| undefined` | no | |
581
- | event | property | `ComponentEventDto<string, object> \| undefined` | no | |
582
- | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
583
- | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
584
- | stateAdapter | property | `StateAdapter \| undefined` | no | |
576
+ | Name | Kind | Type | Required | Description |
577
+ | ---------------- | -------- | -------------------------------------------------------------------------------------------- | -------- | ----------- |
578
+ | apis | property | `ApiDefinitionList \| undefined` | no | |
579
+ | context | property | `Record<string, unknown> \| undefined` | no | |
580
+ | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts").ComponentDataBinding>> \| undefined` | no | |
581
+ | event | property | `ComponentEventDto<string, object> \| undefined` | no | |
582
+ | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
583
+ | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
584
+ | stateAdapter | property | `StateAdapter \| undefined` | no | |
585
585
 
586
586
  ## RuntimeBindingResolutionResult
587
587
 
@@ -610,19 +610,19 @@ Source: `src/runtimeActionRegistry.ts:45:1`
610
610
 
611
611
  ### Members
612
612
 
613
- | Name | Kind | Type | Required | Description |
614
- | -------------------- | -------- | ---------------------------------------------------------------------------------------------------------- | -------- | ----------- |
615
- | apis | property | `ApiDefinitionList \| undefined` | no | |
616
- | context | property | `Record<string, unknown> \| undefined` | no | |
617
- | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").ComponentDataBinding>> \| undefined` | no | |
618
- | event | property | `ComponentEventDto<string, object>` | yes | |
619
- | eventName | property | `string \| undefined` | no | |
620
- | executeAction | property | `RuntimeActionHandler \| undefined` | no | |
621
- | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
622
- | node | property | `UiNode` | yes | |
623
- | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
624
- | state | property | `Record<string, unknown> \| undefined` | no | |
625
- | writeOperationResult | property | `RuntimeBindingOperationResultWriter \| undefined` | no | |
613
+ | Name | Kind | Type | Required | Description |
614
+ | -------------------- | -------- | -------------------------------------------------------------------------------------------- | -------- | ----------- |
615
+ | apis | property | `ApiDefinitionList \| undefined` | no | |
616
+ | context | property | `Record<string, unknown> \| undefined` | no | |
617
+ | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts").ComponentDataBinding>> \| undefined` | no | |
618
+ | event | property | `ComponentEventDto<string, object>` | yes | |
619
+ | eventName | property | `string \| undefined` | no | |
620
+ | executeAction | property | `RuntimeActionHandler \| undefined` | no | |
621
+ | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
622
+ | node | property | `UiNode` | yes | |
623
+ | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
624
+ | state | property | `Record<string, unknown> \| undefined` | no | |
625
+ | writeOperationResult | property | `RuntimeBindingOperationResultWriter \| undefined` | no | |
626
626
 
627
627
  ## RuntimeDbPersistError
628
628
 
@@ -691,16 +691,16 @@ Source: `src/runtimeActionRegistry.ts:56:1`
691
691
 
692
692
  ### Members
693
693
 
694
- | Name | Kind | Type | Required | Description |
695
- | ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------- | -------- | ----------- |
696
- | context | property | `Record<string, unknown> \| undefined` | no | |
697
- | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").ComponentDataBinding>> \| undefined` | no | |
698
- | disableActions | property | `boolean` | yes | |
699
- | dispatchComponentEvent | property | `(args: RuntimeComponentEventDispatchArgs) => Promise<void> \| void` | yes | |
700
- | node | property | `UiNode` | yes | |
701
- | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
702
- | props | property | `Record<string, unknown>` | yes | |
703
- | state | property | `Record<string, unknown> \| undefined` | no | |
694
+ | Name | Kind | Type | Required | Description |
695
+ | ---------------------- | -------- | -------------------------------------------------------------------------------------------- | -------- | ----------- |
696
+ | context | property | `Record<string, unknown> \| undefined` | no | |
697
+ | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts").ComponentDataBinding>> \| undefined` | no | |
698
+ | disableActions | property | `boolean` | yes | |
699
+ | dispatchComponentEvent | property | `(args: RuntimeComponentEventDispatchArgs) => Promise<void> \| void` | yes | |
700
+ | node | property | `UiNode` | yes | |
701
+ | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
702
+ | props | property | `Record<string, unknown>` | yes | |
703
+ | state | property | `Record<string, unknown> \| undefined` | no | |
704
704
 
705
705
  ## RuntimeManifest
706
706
 
@@ -806,26 +806,26 @@ Source: `src/RuntimeRendererConfig.tsx:47:1`
806
806
 
807
807
  ### Members
808
808
 
809
- | Name | Kind | Type | Required | Description |
810
- | -------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | -------- | ----------- |
811
- | actionHandlers | property | `RuntimeActionHandlers \| undefined` | no | |
812
- | apis | property | `ApiDefinitionList \| undefined` | no | |
813
- | bindingContext | property | `Record<string, unknown> \| undefined` | no | |
814
- | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").ComponentDataBinding>> \| undefined` | no | |
815
- | dbAdapter | property | `DbAdapter \| undefined` | no | |
816
- | dbRealtimeAdapter | property | `DbRealtimeAdapter \| undefined` | no | |
817
- | disableActions | property | `boolean \| undefined` | no | |
818
- | executeAction | property | `RuntimeActionHandler \| undefined` | no | |
819
- | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
820
- | mediaAssets | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/media").MediaAsset>> \| undefined` | no | |
821
- | onDiagnostics | property | `((diagnostics: readonly DataSourceDiagnostic[]) => void) \| undefined` | no | |
822
- | operationResults | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").BindingValue \| undefined>> \| undefined` | no | |
823
- | registry | property | `Readonly<Record<string, React.ElementType<any, keyof React.JSX.IntrinsicElements>>> \| undefined` | no | |
824
- | resolveMediaAsset | property | `RuntimeMediaAssetResolver \| undefined` | no | |
825
- | resolveNodeProps | property | `RuntimeNodePropsResolver \| undefined` | no | |
826
- | stateAdapter | property | `StateAdapter \| undefined` | no | |
827
- | wrapNode | property | `((args: RuntimeRendererWrapArgs) => React.ReactNode) \| undefined` | no | |
828
- | writeOperationResult | property | `RuntimeBindingOperationResultWriter \| undefined` | no | |
809
+ | Name | Kind | Type | Required | Description |
810
+ | -------------------- | -------- | -------------------------------------------------------------------------------------------------- | -------- | ----------- |
811
+ | actionHandlers | property | `RuntimeActionHandlers \| undefined` | no | |
812
+ | apis | property | `ApiDefinitionList \| undefined` | no | |
813
+ | bindingContext | property | `Record<string, unknown> \| undefined` | no | |
814
+ | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts").ComponentDataBinding>> \| undefined` | no | |
815
+ | dbAdapter | property | `DbAdapter \| undefined` | no | |
816
+ | dbRealtimeAdapter | property | `DbRealtimeAdapter \| undefined` | no | |
817
+ | disableActions | property | `boolean \| undefined` | no | |
818
+ | executeAction | property | `RuntimeActionHandler \| undefined` | no | |
819
+ | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
820
+ | mediaAssets | property | `Readonly<Record<string, import("@ankhorage/contracts").MediaAsset>> \| undefined` | no | |
821
+ | onDiagnostics | property | `((diagnostics: readonly DataSourceDiagnostic[]) => void) \| undefined` | no | |
822
+ | operationResults | property | `Readonly<Record<string, import("@ankhorage/contracts").BindingValue \| undefined>> \| undefined` | no | |
823
+ | registry | property | `Readonly<Record<string, React.ElementType<any, keyof React.JSX.IntrinsicElements>>> \| undefined` | no | |
824
+ | resolveMediaAsset | property | `RuntimeMediaAssetResolver \| undefined` | no | |
825
+ | resolveNodeProps | property | `RuntimeNodePropsResolver \| undefined` | no | |
826
+ | stateAdapter | property | `StateAdapter \| undefined` | no | |
827
+ | wrapNode | property | `((args: RuntimeRendererWrapArgs) => React.ReactNode) \| undefined` | no | |
828
+ | writeOperationResult | property | `RuntimeBindingOperationResultWriter \| undefined` | no | |
829
829
 
830
830
  ## RuntimeRendererConfigProvider
831
831
 
@@ -847,25 +847,25 @@ Source: `src/RuntimeRenderer.tsx:56:1`
847
847
 
848
848
  ### Members
849
849
 
850
- | Name | Kind | Type | Required | Description |
851
- | ----------------- | -------- | ---------------------------------------------------------------------------------------------------------- | -------- | ----------- |
852
- | apis | property | `ApiDefinitionList \| undefined` | no | |
853
- | bindingContext | property | `Record<string, unknown> \| undefined` | no | |
854
- | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/bindings").ComponentDataBinding>> \| undefined` | no | |
855
- | dbAdapter | property | `DbAdapter \| undefined` | no | |
856
- | dbRealtimeAdapter | property | `DbRealtimeAdapter \| undefined` | no | |
857
- | disableActions | property | `boolean \| undefined` | no | |
858
- | executeAction | property | `import("./src/RuntimeRendererConfig").RuntimeActionHandler \| undefined` | no | |
859
- | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
860
- | isRoot | property | `boolean \| undefined` | no | |
861
- | mediaAssets | property | `Readonly<Record<string, import("@ankhorage/contracts/dist/media").MediaAsset>> \| undefined` | no | |
862
- | node | property | `UiNode` | yes | |
863
- | onDiagnostics | property | `((diagnostics: readonly DataSourceDiagnostic[]) => void) \| undefined` | no | |
864
- | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
865
- | registry | property | `Readonly<Record<string, React.ElementType<any, keyof React.JSX.IntrinsicElements>>> \| undefined` | no | |
866
- | resolveMediaAsset | property | `RuntimeMediaAssetResolver \| undefined` | no | |
867
- | stateAdapter | property | `StateAdapter \| undefined` | no | |
868
- | wrapNode | property | `((args: RuntimeRendererWrapArgs) => React.ReactNode) \| undefined` | no | |
850
+ | Name | Kind | Type | Required | Description |
851
+ | ----------------- | -------- | -------------------------------------------------------------------------------------------------- | -------- | ----------- |
852
+ | apis | property | `ApiDefinitionList \| undefined` | no | |
853
+ | bindingContext | property | `Record<string, unknown> \| undefined` | no | |
854
+ | dataBindings | property | `Readonly<Record<string, import("@ankhorage/contracts").ComponentDataBinding>> \| undefined` | no | |
855
+ | dbAdapter | property | `DbAdapter \| undefined` | no | |
856
+ | dbRealtimeAdapter | property | `DbRealtimeAdapter \| undefined` | no | |
857
+ | disableActions | property | `boolean \| undefined` | no | |
858
+ | executeAction | property | `import("./RuntimeRendererConfig").RuntimeActionHandler \| undefined` | no | |
859
+ | executeOperation | property | `RuntimeBindingOperationExecutor \| undefined` | no | |
860
+ | isRoot | property | `boolean \| undefined` | no | |
861
+ | mediaAssets | property | `Readonly<Record<string, import("@ankhorage/contracts").MediaAsset>> \| undefined` | no | |
862
+ | node | property | `UiNode` | yes | |
863
+ | onDiagnostics | property | `((diagnostics: readonly DataSourceDiagnostic[]) => void) \| undefined` | no | |
864
+ | operationResults | property | `Readonly<Record<string, BindingValue \| undefined>> \| undefined` | no | |
865
+ | registry | property | `Readonly<Record<string, React.ElementType<any, keyof React.JSX.IntrinsicElements>>> \| undefined` | no | |
866
+ | resolveMediaAsset | property | `RuntimeMediaAssetResolver \| undefined` | no | |
867
+ | stateAdapter | property | `StateAdapter \| undefined` | no | |
868
+ | wrapNode | property | `((args: RuntimeRendererWrapArgs) => React.ReactNode) \| undefined` | no | |
869
869
 
870
870
  ## RuntimeRendererWrapArgs
871
871
 
@@ -509,7 +509,7 @@
509
509
  <div class="summary">
510
510
  <div><strong>85</strong><span class="muted">public exports</span></div>
511
511
  <div><strong>5</strong><span class="muted">components</span></div>
512
- <div><strong>52</strong><span class="muted">modules</span></div>
512
+ <div><strong>53</strong><span class="muted">modules</span></div>
513
513
  <div><strong>1</strong><span class="muted">entrypoints</span></div>
514
514
  </div>
515
515
  <h3>Entrypoints</h3>
@@ -887,6 +887,18 @@
887
887
  <code>RuntimeEventDiagnosticsReporter</code>
888
888
  </p>
889
889
  </article>
890
+ <article
891
+ class="item"
892
+ data-search="src/runtimeImageMedia.test.ts src/runtimeMedia.ts src/runtimeNodeProps.ts"
893
+ >
894
+ <h3>src/runtimeImageMedia.test.ts</h3>
895
+ <p class="muted">Referenced module</p>
896
+ <p>
897
+ <strong>Dependencies:</strong> <code>src/runtimeMedia.ts</code>,
898
+ <code>src/runtimeNodeProps.ts</code>
899
+ </p>
900
+ <p><strong>Exports:</strong> <span class="empty">None</span></p>
901
+ </article>
890
902
  <article
891
903
  class="item"
892
904
  data-search="src/runtimeManifest.ts createRuntimeManifest defineRuntimeAction defineRuntimeAdapter defineRuntimeBinding listRuntimeCapabilities RUNTIME_CAPABILITIES RUNTIME_MANIFEST_KIND RuntimeActionDescriptor RuntimeAdapterDescriptor RuntimeBindingDescriptor RuntimeCapability RuntimeDiagnostic RuntimeManifest RuntimeManifestConfig RuntimeManifestInput"
@@ -1895,8 +1907,8 @@
1895
1907
  <td>
1896
1908
  <code
1897
1909
  >Readonly&lt;Record&lt;string,
1898
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).ComponentDataBinding&gt;&gt;
1899
- | undefined</code
1910
+ import(&quot;@ankhorage/contracts&quot;).ComponentDataBinding&gt;&gt; |
1911
+ undefined</code
1900
1912
  >
1901
1913
  </td>
1902
1914
  <td>no</td>
@@ -2006,8 +2018,8 @@
2006
2018
  <td>
2007
2019
  <code
2008
2020
  >Readonly&lt;Record&lt;string,
2009
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).ComponentDataBinding&gt;&gt;
2010
- | undefined</code
2021
+ import(&quot;@ankhorage/contracts&quot;).ComponentDataBinding&gt;&gt; |
2022
+ undefined</code
2011
2023
  >
2012
2024
  </td>
2013
2025
  <td>no</td>
@@ -2720,8 +2732,8 @@
2720
2732
  <td>
2721
2733
  <code
2722
2734
  >Readonly&lt;Record&lt;string,
2723
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).ComponentDataBinding&gt;&gt;
2724
- | undefined</code
2735
+ import(&quot;@ankhorage/contracts&quot;).ComponentDataBinding&gt;&gt; |
2736
+ undefined</code
2725
2737
  >
2726
2738
  </td>
2727
2739
  <td>no</td>
@@ -2824,8 +2836,8 @@
2824
2836
  <td>
2825
2837
  <code
2826
2838
  >Readonly&lt;Record&lt;string,
2827
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).ComponentDataBinding&gt;&gt;
2828
- | undefined</code
2839
+ import(&quot;@ankhorage/contracts&quot;).ComponentDataBinding&gt;&gt; |
2840
+ undefined</code
2829
2841
  >
2830
2842
  </td>
2831
2843
  <td>no</td>
@@ -3863,8 +3875,8 @@
3863
3875
  <td>
3864
3876
  <code
3865
3877
  >Readonly&lt;Record&lt;string,
3866
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).ComponentDataBinding&gt;&gt;
3867
- | undefined</code
3878
+ import(&quot;@ankhorage/contracts&quot;).ComponentDataBinding&gt;&gt; |
3879
+ undefined</code
3868
3880
  >
3869
3881
  </td>
3870
3882
  <td>no</td>
@@ -3896,7 +3908,7 @@
3896
3908
  <td>property</td>
3897
3909
  <td>
3898
3910
  <code
3899
- >import(&quot;./src/RuntimeRendererConfig&quot;).RuntimeActionHandler |
3911
+ >import(&quot;./RuntimeRendererConfig&quot;).RuntimeActionHandler |
3900
3912
  undefined</code
3901
3913
  >
3902
3914
  </td>
@@ -3923,7 +3935,7 @@
3923
3935
  <td>
3924
3936
  <code
3925
3937
  >Readonly&lt;Record&lt;string,
3926
- import(&quot;@ankhorage/contracts/dist/media&quot;).MediaAsset&gt;&gt; |
3938
+ import(&quot;@ankhorage/contracts&quot;).MediaAsset&gt;&gt; |
3927
3939
  undefined</code
3928
3940
  >
3929
3941
  </td>
@@ -4317,8 +4329,8 @@
4317
4329
  <td>
4318
4330
  <code
4319
4331
  >Readonly&lt;Record&lt;string,
4320
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).ComponentDataBinding&gt;&gt;
4321
- | undefined</code
4332
+ import(&quot;@ankhorage/contracts&quot;).ComponentDataBinding&gt;&gt; |
4333
+ undefined</code
4322
4334
  >
4323
4335
  </td>
4324
4336
  <td>no</td>
@@ -4365,7 +4377,7 @@
4365
4377
  <td>
4366
4378
  <code
4367
4379
  >Readonly&lt;Record&lt;string,
4368
- import(&quot;@ankhorage/contracts/dist/media&quot;).MediaAsset&gt;&gt; |
4380
+ import(&quot;@ankhorage/contracts&quot;).MediaAsset&gt;&gt; |
4369
4381
  undefined</code
4370
4382
  >
4371
4383
  </td>
@@ -4390,8 +4402,8 @@
4390
4402
  <td>
4391
4403
  <code
4392
4404
  >Readonly&lt;Record&lt;string,
4393
- import(&quot;@ankhorage/contracts/dist/bindings&quot;).BindingValue |
4394
- undefined&gt;&gt; | undefined</code
4405
+ import(&quot;@ankhorage/contracts&quot;).BindingValue | undefined&gt;&gt;
4406
+ | undefined</code
4395
4407
  >
4396
4408
  </td>
4397
4409
  <td>no</td>
@@ -5511,6 +5523,10 @@
5511
5523
  package__ankhorage_runtime -.-&gt; module_src_runtimeEventExecution_ts
5512
5524
  module_src_runtimeEventExecution_ts --&gt; module_src_runtimeActionRegistry_ts
5513
5525
  module_src_runtimeEventExecution_ts --&gt; module_src_RuntimeRendererConfig_tsx
5526
+ module_src_runtimeImageMedia_test_ts[&quot;src/runtimeImageMedia.test.ts&quot;]
5527
+ package__ankhorage_runtime -.-&gt; module_src_runtimeImageMedia_test_ts
5528
+ module_src_runtimeImageMedia_test_ts --&gt; module_src_runtimeMedia_ts
5529
+ module_src_runtimeImageMedia_test_ts --&gt; module_src_runtimeNodeProps_ts
5514
5530
  module_src_runtimeManifest_ts[&quot;src/runtimeManifest.ts&quot;]
5515
5531
  package__ankhorage_runtime -.-&gt; module_src_runtimeManifest_ts
5516
5532
  module_src_runtimeMedia_test_ts[&quot;src/runtimeMedia.test.ts&quot;]
@@ -5705,6 +5721,10 @@ graph TD
5705
5721
  package__ankhorage_runtime -.-&gt; module_src_runtimeEventExecution_ts
5706
5722
  module_src_runtimeEventExecution_ts --&gt; module_src_runtimeActionRegistry_ts
5707
5723
  module_src_runtimeEventExecution_ts --&gt; module_src_RuntimeRendererConfig_tsx
5724
+ module_src_runtimeImageMedia_test_ts[&quot;src/runtimeImageMedia.test.ts&quot;]
5725
+ package__ankhorage_runtime -.-&gt; module_src_runtimeImageMedia_test_ts
5726
+ module_src_runtimeImageMedia_test_ts --&gt; module_src_runtimeMedia_ts
5727
+ module_src_runtimeImageMedia_test_ts --&gt; module_src_runtimeNodeProps_ts
5708
5728
  module_src_runtimeManifest_ts[&quot;src/runtimeManifest.ts&quot;]
5709
5729
  package__ankhorage_runtime -.-&gt; module_src_runtimeManifest_ts
5710
5730
  module_src_runtimeMedia_test_ts[&quot;src/runtimeMedia.test.ts&quot;]
@@ -5843,6 +5863,7 @@ graph TD
5843
5863
  module_src_runtimeDbPersist_ts[&quot;src/runtimeDbPersist.ts&quot;]
5844
5864
  module_src_runtimeEventExecution_test_ts[&quot;src/runtimeEventExecution.test.ts&quot;]
5845
5865
  module_src_runtimeEventExecution_ts[&quot;src/runtimeEventExecution.ts&quot;]
5866
+ module_src_runtimeImageMedia_test_ts[&quot;src/runtimeImageMedia.test.ts&quot;]
5846
5867
  module_src_runtimeManifest_ts[&quot;src/runtimeManifest.ts&quot;]
5847
5868
  module_src_runtimeMedia_test_ts[&quot;src/runtimeMedia.test.ts&quot;]
5848
5869
  module_src_runtimeMedia_ts[&quot;src/runtimeMedia.ts&quot;]
@@ -5899,7 +5920,9 @@ graph TD
5899
5920
  module_src_RuntimeRendererConfig_tsx module_src_runtimeEventExecution_test_ts --&gt;
5900
5921
  module_src_runtimeEventExecution_ts module_src_runtimeEventExecution_ts --&gt;
5901
5922
  module_src_runtimeActionRegistry_ts module_src_runtimeEventExecution_ts --&gt;
5902
- module_src_RuntimeRendererConfig_tsx module_src_runtimeMedia_test_ts --&gt;
5923
+ module_src_RuntimeRendererConfig_tsx module_src_runtimeImageMedia_test_ts --&gt;
5924
+ module_src_runtimeMedia_ts module_src_runtimeImageMedia_test_ts --&gt;
5925
+ module_src_runtimeNodeProps_ts module_src_runtimeMedia_test_ts --&gt;
5903
5926
  module_src_runtimeMedia_ts module_src_runtimeMediaCache_tsx --&gt;
5904
5927
  module_src_runtimeMedia_ts module_src_runtimeMediaConfig_test_ts --&gt;
5905
5928
  module_src_RuntimeRendererConfig_tsx module_src_runtimeNodeProps_test_ts --&gt;
@@ -5982,6 +6005,7 @@ graph LR
5982
6005
  module_src_runtimeDbPersist_ts[&quot;src/runtimeDbPersist.ts&quot;]
5983
6006
  module_src_runtimeEventExecution_test_ts[&quot;src/runtimeEventExecution.test.ts&quot;]
5984
6007
  module_src_runtimeEventExecution_ts[&quot;src/runtimeEventExecution.ts&quot;]
6008
+ module_src_runtimeImageMedia_test_ts[&quot;src/runtimeImageMedia.test.ts&quot;]
5985
6009
  module_src_runtimeManifest_ts[&quot;src/runtimeManifest.ts&quot;]
5986
6010
  module_src_runtimeMedia_test_ts[&quot;src/runtimeMedia.test.ts&quot;]
5987
6011
  module_src_runtimeMedia_ts[&quot;src/runtimeMedia.ts&quot;]
@@ -6036,6 +6060,8 @@ graph LR
6036
6060
  module_src_runtimeEventExecution_test_ts --&gt; module_src_runtimeEventExecution_ts
6037
6061
  module_src_runtimeEventExecution_ts --&gt; module_src_runtimeActionRegistry_ts
6038
6062
  module_src_runtimeEventExecution_ts --&gt; module_src_RuntimeRendererConfig_tsx
6063
+ module_src_runtimeImageMedia_test_ts --&gt; module_src_runtimeMedia_ts
6064
+ module_src_runtimeImageMedia_test_ts --&gt; module_src_runtimeNodeProps_ts
6039
6065
  module_src_runtimeMedia_test_ts --&gt; module_src_runtimeMedia_ts
6040
6066
  module_src_runtimeMediaCache_tsx --&gt; module_src_runtimeMedia_ts
6041
6067
  module_src_runtimeMediaConfig_test_ts --&gt; module_src_RuntimeRendererConfig_tsx
@@ -6117,6 +6143,7 @@ graph LR
6117
6143
  module_src_runtimeDbPersist_ts[&quot;src/runtimeDbPersist.ts&quot;]
6118
6144
  module_src_runtimeEventExecution_test_ts[&quot;src/runtimeEventExecution.test.ts&quot;]
6119
6145
  module_src_runtimeEventExecution_ts[&quot;src/runtimeEventExecution.ts&quot;]
6146
+ module_src_runtimeImageMedia_test_ts[&quot;src/runtimeImageMedia.test.ts&quot;]
6120
6147
  module_src_runtimeManifest_ts[&quot;src/runtimeManifest.ts&quot;]
6121
6148
  module_src_runtimeMedia_test_ts[&quot;src/runtimeMedia.test.ts&quot;]
6122
6149
  module_src_runtimeMedia_ts[&quot;src/runtimeMedia.ts&quot;]
@@ -6439,6 +6466,7 @@ graph LR
6439
6466
  module_src_runtimeDbPersist_ts[&quot;src/runtimeDbPersist.ts&quot;]
6440
6467
  module_src_runtimeEventExecution_test_ts[&quot;src/runtimeEventExecution.test.ts&quot;]
6441
6468
  module_src_runtimeEventExecution_ts[&quot;src/runtimeEventExecution.ts&quot;]
6469
+ module_src_runtimeImageMedia_test_ts[&quot;src/runtimeImageMedia.test.ts&quot;]
6442
6470
  module_src_runtimeManifest_ts[&quot;src/runtimeManifest.ts&quot;]
6443
6471
  module_src_runtimeMedia_test_ts[&quot;src/runtimeMedia.test.ts&quot;]
6444
6472
  module_src_runtimeMedia_ts[&quot;src/runtimeMedia.ts&quot;]
@@ -8227,57 +8255,57 @@ sequenceDiagram
8227
8255
  <h2>src/runtimeNodeProps.ts</h2>
8228
8256
  <article class="item" data-search="isRecord src/runtimeNodeProps.ts ">
8229
8257
  <h3>isRecord</h3>
8230
- <p class="muted"><code>src/runtimeNodeProps.ts:18:1</code></p>
8258
+ <p class="muted"><code>src/runtimeNodeProps.ts:19:1</code></p>
8231
8259
  <p class="empty">No description available.</p>
8232
8260
  </article>
8233
8261
  <article class="item" data-search="isPlainObject src/runtimeNodeProps.ts ">
8234
8262
  <h3>isPlainObject</h3>
8235
- <p class="muted"><code>src/runtimeNodeProps.ts:22:1</code></p>
8263
+ <p class="muted"><code>src/runtimeNodeProps.ts:23:1</code></p>
8236
8264
  <p class="empty">No description available.</p>
8237
8265
  </article>
8238
8266
  <article class="item" data-search="hasActionShape src/runtimeNodeProps.ts ">
8239
8267
  <h3>hasActionShape</h3>
8240
- <p class="muted"><code>src/runtimeNodeProps.ts:31:1</code></p>
8268
+ <p class="muted"><code>src/runtimeNodeProps.ts:32:1</code></p>
8241
8269
  <p class="empty">No description available.</p>
8242
8270
  </article>
8243
8271
  <article class="item" data-search="isCallbackProp src/runtimeNodeProps.ts ">
8244
8272
  <h3>isCallbackProp</h3>
8245
- <p class="muted"><code>src/runtimeNodeProps.ts:37:1</code></p>
8273
+ <p class="muted"><code>src/runtimeNodeProps.ts:38:1</code></p>
8246
8274
  <p class="empty">No description available.</p>
8247
8275
  </article>
8248
8276
  <article class="item" data-search="isNonEmptyActionId src/runtimeNodeProps.ts ">
8249
8277
  <h3>isNonEmptyActionId</h3>
8250
- <p class="muted"><code>src/runtimeNodeProps.ts:41:1</code></p>
8278
+ <p class="muted"><code>src/runtimeNodeProps.ts:42:1</code></p>
8251
8279
  <p class="empty">No description available.</p>
8252
8280
  </article>
8253
8281
  <article class="item" data-search="createStringActionPayload src/runtimeNodeProps.ts ">
8254
8282
  <h3>createStringActionPayload</h3>
8255
- <p class="muted"><code>src/runtimeNodeProps.ts:45:1</code></p>
8283
+ <p class="muted"><code>src/runtimeNodeProps.ts:46:1</code></p>
8256
8284
  <p class="empty">No description available.</p>
8257
8285
  </article>
8258
8286
  <article class="item" data-search="noopRuntimeActionHandler src/runtimeNodeProps.ts ">
8259
8287
  <h3>noopRuntimeActionHandler</h3>
8260
- <p class="muted"><code>src/runtimeNodeProps.ts:62:7</code></p>
8288
+ <p class="muted"><code>src/runtimeNodeProps.ts:63:7</code></p>
8261
8289
  <p class="empty">No description available.</p>
8262
8290
  </article>
8263
8291
  <article class="item" data-search="resolveImageAssetUrl src/runtimeNodeProps.ts ">
8264
8292
  <h3>resolveImageAssetUrl</h3>
8265
- <p class="muted"><code>src/runtimeNodeProps.ts:64:1</code></p>
8293
+ <p class="muted"><code>src/runtimeNodeProps.ts:65:1</code></p>
8266
8294
  <p class="empty">No description available.</p>
8267
8295
  </article>
8268
8296
  <article class="item" data-search="resolveRuntimeNodeProps src/runtimeNodeProps.ts ">
8269
8297
  <h3>resolveRuntimeNodeProps</h3>
8270
- <p class="muted"><code>src/runtimeNodeProps.ts:87:1</code></p>
8298
+ <p class="muted"><code>src/runtimeNodeProps.ts:88:1</code></p>
8271
8299
  <p class="empty">No description available.</p>
8272
8300
  </article>
8273
8301
  <article class="item" data-search="wrapRuntimeActionProps src/runtimeNodeProps.ts ">
8274
8302
  <h3>wrapRuntimeActionProps</h3>
8275
- <p class="muted"><code>src/runtimeNodeProps.ts:130:1</code></p>
8303
+ <p class="muted"><code>src/runtimeNodeProps.ts:131:1</code></p>
8276
8304
  <p class="empty">No description available.</p>
8277
8305
  </article>
8278
8306
  <article class="item" data-search="actionHandler src/runtimeNodeProps.ts ">
8279
8307
  <h3>actionHandler</h3>
8280
- <p class="muted"><code>src/runtimeNodeProps.ts:157:15</code></p>
8308
+ <p class="muted"><code>src/runtimeNodeProps.ts:158:15</code></p>
8281
8309
  <p class="empty">No description available.</p>
8282
8310
  </article>
8283
8311
  </section>
@@ -2,6 +2,8 @@
2
2
  "packageName": "@ankhorage/runtime",
3
3
  "packageId": "@ankhorage/runtime",
4
4
  "description": "Platform-neutral runtime contracts and helpers for Ankhorage generated apps.",
5
+ "collaborators": null,
6
+ "donation": null,
5
7
  "badges": [
6
8
  {
7
9
  "id": "license",
@@ -12,7 +14,7 @@
12
14
  {
13
15
  "id": "npm",
14
16
  "label": "npm",
15
- "value": "v2.2.0",
17
+ "value": "v2.2.9",
16
18
  "color": "cb3837"
17
19
  },
18
20
  {
@@ -391,6 +393,12 @@
391
393
  "dependencies": ["src/runtimeActionRegistry.ts", "src/RuntimeRendererConfig.tsx"],
392
394
  "exports": ["dispatchRuntimeComponentEventWithReporting", "RuntimeEventDiagnosticsReporter"]
393
395
  },
396
+ {
397
+ "path": "src/runtimeImageMedia.test.ts",
398
+ "isEntrypoint": false,
399
+ "dependencies": ["src/runtimeMedia.ts", "src/runtimeNodeProps.ts"],
400
+ "exports": []
401
+ },
394
402
  {
395
403
  "path": "src/runtimeManifest.ts",
396
404
  "isEntrypoint": false,
@@ -2251,7 +2259,7 @@
2251
2259
  {
2252
2260
  "name": "dataBindings",
2253
2261
  "kind": "property",
2254
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2262
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2255
2263
  "required": false,
2256
2264
  "description": null
2257
2265
  },
@@ -2333,7 +2341,7 @@
2333
2341
  {
2334
2342
  "name": "dataBindings",
2335
2343
  "kind": "property",
2336
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2344
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2337
2345
  "required": false,
2338
2346
  "description": null
2339
2347
  },
@@ -2456,7 +2464,7 @@
2456
2464
  {
2457
2465
  "name": "dataBindings",
2458
2466
  "kind": "property",
2459
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2467
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2460
2468
  "required": false,
2461
2469
  "description": null
2462
2470
  },
@@ -2702,7 +2710,7 @@
2702
2710
  {
2703
2711
  "name": "dataBindings",
2704
2712
  "kind": "property",
2705
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
2713
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
2706
2714
  "required": false,
2707
2715
  "description": null
2708
2716
  },
@@ -3093,7 +3101,7 @@
3093
3101
  {
3094
3102
  "name": "dataBindings",
3095
3103
  "kind": "property",
3096
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
3104
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
3097
3105
  "required": false,
3098
3106
  "description": null
3099
3107
  },
@@ -3135,7 +3143,7 @@
3135
3143
  {
3136
3144
  "name": "mediaAssets",
3137
3145
  "kind": "property",
3138
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/media\").MediaAsset>> | undefined",
3146
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").MediaAsset>> | undefined",
3139
3147
  "required": false,
3140
3148
  "description": null
3141
3149
  },
@@ -3149,7 +3157,7 @@
3149
3157
  {
3150
3158
  "name": "operationResults",
3151
3159
  "kind": "property",
3152
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").BindingValue | undefined>> | undefined",
3160
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").BindingValue | undefined>> | undefined",
3153
3161
  "required": false,
3154
3162
  "description": null
3155
3163
  },
@@ -3269,7 +3277,7 @@
3269
3277
  {
3270
3278
  "name": "dataBindings",
3271
3279
  "kind": "property",
3272
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/bindings\").ComponentDataBinding>> | undefined",
3280
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ComponentDataBinding>> | undefined",
3273
3281
  "required": false,
3274
3282
  "description": null
3275
3283
  },
@@ -3297,7 +3305,7 @@
3297
3305
  {
3298
3306
  "name": "executeAction",
3299
3307
  "kind": "property",
3300
- "type": "import(\"./src/RuntimeRendererConfig\").RuntimeActionHandler | undefined",
3308
+ "type": "import(\"./RuntimeRendererConfig\").RuntimeActionHandler | undefined",
3301
3309
  "required": false,
3302
3310
  "description": null
3303
3311
  },
@@ -3318,7 +3326,7 @@
3318
3326
  {
3319
3327
  "name": "mediaAssets",
3320
3328
  "kind": "property",
3321
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts/dist/media\").MediaAsset>> | undefined",
3329
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").MediaAsset>> | undefined",
3322
3330
  "required": false,
3323
3331
  "description": null
3324
3332
  },
@@ -5172,7 +5180,7 @@
5172
5180
  "description": null,
5173
5181
  "sourceLocation": {
5174
5182
  "filePath": "src/runtimeNodeProps.ts",
5175
- "line": 18,
5183
+ "line": 19,
5176
5184
  "column": 1
5177
5185
  }
5178
5186
  },
@@ -5181,7 +5189,7 @@
5181
5189
  "description": null,
5182
5190
  "sourceLocation": {
5183
5191
  "filePath": "src/runtimeNodeProps.ts",
5184
- "line": 22,
5192
+ "line": 23,
5185
5193
  "column": 1
5186
5194
  }
5187
5195
  },
@@ -5190,7 +5198,7 @@
5190
5198
  "description": null,
5191
5199
  "sourceLocation": {
5192
5200
  "filePath": "src/runtimeNodeProps.ts",
5193
- "line": 31,
5201
+ "line": 32,
5194
5202
  "column": 1
5195
5203
  }
5196
5204
  },
@@ -5199,7 +5207,7 @@
5199
5207
  "description": null,
5200
5208
  "sourceLocation": {
5201
5209
  "filePath": "src/runtimeNodeProps.ts",
5202
- "line": 37,
5210
+ "line": 38,
5203
5211
  "column": 1
5204
5212
  }
5205
5213
  },
@@ -5208,7 +5216,7 @@
5208
5216
  "description": null,
5209
5217
  "sourceLocation": {
5210
5218
  "filePath": "src/runtimeNodeProps.ts",
5211
- "line": 41,
5219
+ "line": 42,
5212
5220
  "column": 1
5213
5221
  }
5214
5222
  },
@@ -5217,7 +5225,7 @@
5217
5225
  "description": null,
5218
5226
  "sourceLocation": {
5219
5227
  "filePath": "src/runtimeNodeProps.ts",
5220
- "line": 45,
5228
+ "line": 46,
5221
5229
  "column": 1
5222
5230
  }
5223
5231
  },
@@ -5226,7 +5234,7 @@
5226
5234
  "description": null,
5227
5235
  "sourceLocation": {
5228
5236
  "filePath": "src/runtimeNodeProps.ts",
5229
- "line": 62,
5237
+ "line": 63,
5230
5238
  "column": 7
5231
5239
  }
5232
5240
  },
@@ -5235,7 +5243,7 @@
5235
5243
  "description": null,
5236
5244
  "sourceLocation": {
5237
5245
  "filePath": "src/runtimeNodeProps.ts",
5238
- "line": 64,
5246
+ "line": 65,
5239
5247
  "column": 1
5240
5248
  }
5241
5249
  },
@@ -5244,7 +5252,7 @@
5244
5252
  "description": null,
5245
5253
  "sourceLocation": {
5246
5254
  "filePath": "src/runtimeNodeProps.ts",
5247
- "line": 87,
5255
+ "line": 88,
5248
5256
  "column": 1
5249
5257
  }
5250
5258
  },
@@ -5253,7 +5261,7 @@
5253
5261
  "description": null,
5254
5262
  "sourceLocation": {
5255
5263
  "filePath": "src/runtimeNodeProps.ts",
5256
- "line": 130,
5264
+ "line": 131,
5257
5265
  "column": 1
5258
5266
  }
5259
5267
  },
@@ -5262,7 +5270,7 @@
5262
5270
  "description": null,
5263
5271
  "sourceLocation": {
5264
5272
  "filePath": "src/runtimeNodeProps.ts",
5265
- "line": 157,
5273
+ "line": 158,
5266
5274
  "column": 15
5267
5275
  }
5268
5276
  },
@@ -6445,6 +6453,16 @@
6445
6453
  "toPath": "src/RuntimeRendererConfig.tsx",
6446
6454
  "sourcePath": "src/runtimeEventExecution.ts"
6447
6455
  },
6456
+ {
6457
+ "fromPath": "src/runtimeImageMedia.test.ts",
6458
+ "toPath": "src/runtimeMedia.ts",
6459
+ "sourcePath": "src/runtimeImageMedia.test.ts"
6460
+ },
6461
+ {
6462
+ "fromPath": "src/runtimeImageMedia.test.ts",
6463
+ "toPath": "src/runtimeNodeProps.ts",
6464
+ "sourcePath": "src/runtimeImageMedia.test.ts"
6465
+ },
6448
6466
  {
6449
6467
  "fromPath": "src/runtimeMedia.test.ts",
6450
6468
  "toPath": "src/runtimeMedia.ts",
@@ -6862,20 +6880,20 @@
6862
6880
  },
6863
6881
  {
6864
6882
  "fromSymbol": "src/runtimeActionRegistry.actions.test.ts",
6865
- "toSymbol": "dispatchRuntimeComponentEvent",
6866
- "callExpression": "dispatchRuntimeComponentEvent",
6883
+ "toSymbol": "createComponentEventFromHandlerArgs",
6884
+ "callExpression": "createComponentEventFromHandlerArgs",
6867
6885
  "sourcePath": "src/runtimeActionRegistry.actions.test.ts"
6868
6886
  },
6869
6887
  {
6870
6888
  "fromSymbol": "src/runtimeActionRegistry.actions.test.ts",
6871
- "toSymbol": "expect",
6872
- "callExpression": "expect",
6889
+ "toSymbol": "dispatchRuntimeComponentEvent",
6890
+ "callExpression": "dispatchRuntimeComponentEvent",
6873
6891
  "sourcePath": "src/runtimeActionRegistry.actions.test.ts"
6874
6892
  },
6875
6893
  {
6876
6894
  "fromSymbol": "src/runtimeActionRegistry.actions.test.ts",
6877
- "toSymbol": "createComponentEventFromHandlerArgs",
6878
- "callExpression": "createComponentEventFromHandlerArgs",
6895
+ "toSymbol": "expect",
6896
+ "callExpression": "expect",
6879
6897
  "sourcePath": "src/runtimeActionRegistry.actions.test.ts"
6880
6898
  },
6881
6899
  {
@@ -7832,6 +7850,36 @@
7832
7850
  "callExpression": "report",
7833
7851
  "sourcePath": "src/runtimeEventExecution.ts"
7834
7852
  },
7853
+ {
7854
+ "fromSymbol": "src/runtimeImageMedia.test.ts",
7855
+ "toSymbol": "test",
7856
+ "callExpression": "test",
7857
+ "sourcePath": "src/runtimeImageMedia.test.ts"
7858
+ },
7859
+ {
7860
+ "fromSymbol": "src/runtimeImageMedia.test.ts",
7861
+ "toSymbol": "resolveRuntimeNodeProps",
7862
+ "callExpression": "resolveRuntimeNodeProps",
7863
+ "sourcePath": "src/runtimeImageMedia.test.ts"
7864
+ },
7865
+ {
7866
+ "fromSymbol": "src/runtimeImageMedia.test.ts",
7867
+ "toSymbol": "expect",
7868
+ "callExpression": "expect",
7869
+ "sourcePath": "src/runtimeImageMedia.test.ts"
7870
+ },
7871
+ {
7872
+ "fromSymbol": "src/runtimeImageMedia.test.ts",
7873
+ "toSymbol": "collectRuntimeMediaReferenceIds",
7874
+ "callExpression": "collectRuntimeMediaReferenceIds",
7875
+ "sourcePath": "src/runtimeImageMedia.test.ts"
7876
+ },
7877
+ {
7878
+ "fromSymbol": "src/runtimeImageMedia.test.ts",
7879
+ "toSymbol": "replaceRuntimeMediaReferences",
7880
+ "callExpression": "replaceRuntimeMediaReferences",
7881
+ "sourcePath": "src/runtimeImageMedia.test.ts"
7882
+ },
7835
7883
  {
7836
7884
  "fromSymbol": "src/runtimeMedia.test.ts",
7837
7885
  "toSymbol": "describe",
@@ -8066,6 +8114,12 @@
8066
8114
  "callExpression": "isRecord",
8067
8115
  "sourcePath": "src/runtimeNodeProps.ts"
8068
8116
  },
8117
+ {
8118
+ "fromSymbol": "resolveRuntimeNodeProps",
8119
+ "toSymbol": "isMediaAssetReference",
8120
+ "callExpression": "isMediaAssetReference",
8121
+ "sourcePath": "src/runtimeNodeProps.ts"
8122
+ },
8069
8123
  {
8070
8124
  "fromSymbol": "resolveRuntimeNodeProps",
8071
8125
  "toSymbol": "resolveImageAssetUrl",