@ankhorage/runtime 4.0.7 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -1
  3. package/dist/RuntimeRendererConfig.d.ts +1 -1
  4. package/dist/RuntimeRendererConfig.d.ts.map +1 -1
  5. package/dist/RuntimeRendererConfig.js.map +1 -1
  6. package/dist/capabilities/index.d.ts +47 -2
  7. package/dist/capabilities/index.d.ts.map +1 -1
  8. package/dist/capabilities/index.js +33 -2
  9. package/dist/capabilities/index.js.map +1 -1
  10. package/dist/capabilities/resolveRuntimeContextCapability.d.ts +21 -0
  11. package/dist/capabilities/resolveRuntimeContextCapability.d.ts.map +1 -0
  12. package/dist/capabilities/resolveRuntimeContextCapability.js +53 -0
  13. package/dist/capabilities/resolveRuntimeContextCapability.js.map +1 -0
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/runtimeActionRegistry.d.ts +1 -1
  19. package/dist/runtimeActionRegistry.d.ts.map +1 -1
  20. package/dist/runtimeActionRegistry.js +1 -1
  21. package/dist/runtimeActionRegistry.js.map +1 -1
  22. package/dist/runtimeBindings.d.ts.map +1 -1
  23. package/dist/runtimeBindings.js +1 -3
  24. package/dist/runtimeBindings.js.map +1 -1
  25. package/dist/runtimeManifest.d.ts +1 -1
  26. package/dist/runtimeManifest.d.ts.map +1 -1
  27. package/dist/runtimeManifest.js.map +1 -1
  28. package/dist/runtimeNodeProps.d.ts.map +1 -1
  29. package/dist/runtimeNodeProps.js +1 -1
  30. package/dist/runtimeNodeProps.js.map +1 -1
  31. package/package.json +70 -6
  32. package/paradox/badges/npm.svg +3 -3
  33. package/paradox/diagrams/architecture-overview.mmd +6 -0
  34. package/paradox/diagrams/export-graph.mmd +11 -0
  35. package/paradox/diagrams/module-relationships.mmd +4 -0
  36. package/paradox/diagrams/sequences/resolve-runtime-context-capability.mmd +8 -0
  37. package/paradox/exports.json +144 -26
  38. package/paradox/exports.md +66 -26
  39. package/paradox/index.html +285 -105
  40. package/paradox/paradox.json +387 -106
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeBindings.js","sourceRoot":"","sources":["../src/runtimeBindings.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinition,\n ApiDefinitionRegistry,\n BindingFallback,\n BindingInputMap,\n BindingInputValue,\n BindingOperationRef,\n BindingValue,\n BindingValueSource,\n BindingValueTransform,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataEndpointConfig,\n DataSourceDiagnostic,\n PropBinding,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\n\nimport { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';\n\nexport type RuntimeBindingOperationKey = string;\n\nexport interface RuntimeBindingOperationExecutionArgs {\n readonly operation: BindingOperationRef;\n readonly api: ApiDefinition;\n readonly endpoint: DataEndpointConfig;\n readonly input?: BindingValue;\n readonly node?: UiNode;\n}\n\nexport type RuntimeBindingOperationExecutionResult =\n | {\n readonly ok: true;\n readonly data: BindingValue;\n readonly diagnostics?: readonly DataSourceDiagnostic[];\n }\n | {\n readonly ok: false;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n };\n\nexport type RuntimeBindingOperationExecutor = (\n args: RuntimeBindingOperationExecutionArgs,\n) => Promise<RuntimeBindingOperationExecutionResult>;\n\nexport type RuntimeBindingOperationResultCache = Readonly<\n Record<RuntimeBindingOperationKey, BindingValue | undefined>\n>;\n\nexport type RuntimeBindingOperationResultWriter = (\n key: RuntimeBindingOperationKey,\n value: BindingValue,\n) => void;\n\nexport interface RuntimeBindingResolutionContext {\n readonly context?: Record<string, unknown>;\n readonly event?: ComponentEventDto<string, object>;\n readonly stateAdapter?: StateAdapter;\n readonly apis?: ApiDefinitionRegistry;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n}\n\nexport interface RuntimeBindingResolutionArgs extends RuntimeBindingResolutionContext {\n readonly node: UiNode;\n readonly props: Record<string, unknown>;\n}\n\nexport interface RuntimeBindingResolutionResult {\n readonly props: Record<string, unknown>;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n}\n\nexport async function resolveRuntimeBindingsAsync(\n args: RuntimeBindingResolutionArgs,\n): Promise<RuntimeBindingResolutionResult> {\n const diagnostics: DataSourceDiagnostic[] = [];\n const resolvedProps: Record<string, unknown> = { ...args.props };\n const binding = args.dataBindings?.[args.node.id];\n\n for (const [prop, propBinding] of Object.entries(binding?.props ?? {})) {\n const value = await resolveRuntimeBindingValue(propBinding, args, diagnostics);\n resolvedProps[prop] = value;\n }\n\n return { props: resolvedProps, diagnostics };\n}\n\nexport function resolveRuntimeBindings(\n args: RuntimeBindingResolutionArgs,\n): RuntimeBindingResolutionResult {\n const diagnostics: DataSourceDiagnostic[] = [];\n const resolvedProps: Record<string, unknown> = { ...args.props };\n const binding = args.dataBindings?.[args.node.id];\n\n for (const [prop, propBinding] of Object.entries(binding?.props ?? {})) {\n resolvedProps[prop] = resolveRuntimeBindingValueSync(propBinding, args, diagnostics);\n }\n\n return { props: resolvedProps, diagnostics };\n}\n\nexport async function resolveRuntimeBindingValue(\n binding: PropBinding,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): Promise<unknown> {\n const value = await resolveRuntimeBindingValueSource(binding.source, context, diagnostics);\n const transformedValue = applyBindingValueTransforms(value, binding.transforms);\n\n if (transformedValue !== undefined) return transformedValue;\n\n return resolveBindingFallback(binding.fallback, context, diagnostics);\n}\n\nexport function resolveRuntimeBindingValueSync(\n binding: PropBinding,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): unknown {\n const value = resolveRuntimeBindingValueSourceSync(binding.source, context, diagnostics);\n const transformedValue = applyBindingValueTransforms(value, binding.transforms);\n\n if (transformedValue !== undefined) return transformedValue;\n\n return resolveBindingFallbackSync(binding.fallback, context, diagnostics);\n}\n\nexport async function resolveBindingInputMap(\n input: BindingInputMap | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): Promise<BindingValue | undefined> {\n if (input === undefined) return undefined;\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n const resolvedValue = await resolveBindingInputValue(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nexport function resolveBindingInputMapSync(\n input: BindingInputMap | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): BindingValue | undefined {\n if (input === undefined) return undefined;\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n const resolvedValue = resolveBindingInputValueSync(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nexport function createRuntimeBindingOperationKey(\n operation: BindingOperationRef,\n): RuntimeBindingOperationKey {\n return [operation.apiId, operation.endpointId ?? '', operation.operationId].join(':');\n}\n\nasync function resolveRuntimeBindingValueSource(\n source: BindingValueSource,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): Promise<BindingValue | undefined> {\n if (source.kind !== 'operation') {\n return resolveRuntimeBindingValueSourceSync(source, context, diagnostics);\n }\n\n const cached = resolveCachedOperationValue(source, context);\n if (cached !== undefined) return cached;\n\n if (context.executeOperation === undefined) {\n diagnostics.push(\n createRuntimeBindingDiagnostic(\n source.operation,\n 'missing-adapter',\n 'API operation binding requires an injected operation executor.',\n ),\n );\n return undefined;\n }\n\n const selection = resolveRuntimeBindingOperationSelection(\n source.operation,\n context.apis,\n diagnostics,\n );\n if (selection === undefined) return undefined;\n\n const result = await context.executeOperation({\n api: selection.api,\n endpoint: selection.endpoint,\n operation: source.operation,\n });\n\n diagnostics.push(...(result.diagnostics ?? []));\n if (!result.ok) return undefined;\n\n return applyRuntimeBindingDataPath(result.data, source.path);\n}\n\nexport function resolveRuntimeBindingValueSourceSync(\n source: BindingValueSource,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): BindingValue | undefined {\n switch (source.kind) {\n case 'context':\n return asBindingValue(readPath(context.context, source.path));\n case 'event':\n return asBindingValue(readPath(context.event, source.path));\n case 'literal':\n return source.value;\n case 'operation': {\n const cached = resolveCachedOperationValue(source, context);\n if (cached !== undefined) return cached;\n diagnostics.push(\n createRuntimeBindingDiagnostic(\n source.operation,\n 'missing-adapter',\n 'Synchronous API operation bindings require preloaded operation results.',\n ),\n );\n return undefined;\n }\n case 'state': {\n const result = context.stateAdapter?.get(source.path);\n return result?.ok ? asBindingValue(result.data) : undefined;\n }\n }\n}\n\nfunction resolveCachedOperationValue(\n source: Extract<BindingValueSource, { readonly kind: 'operation' }>,\n context: RuntimeBindingResolutionContext,\n): BindingValue | undefined {\n const operationKey = createRuntimeBindingOperationKey(source.operation);\n const cachedValue = context.operationResults?.[operationKey];\n\n return applyRuntimeBindingDataPath(cachedValue, source.path);\n}\n\nasync function resolveBindingFallback(\n fallback: BindingFallback | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): Promise<unknown> {\n if (fallback === undefined) return undefined;\n if (fallback.value !== undefined) return fallback.value;\n if (fallback.source === undefined) return undefined;\n\n return resolveRuntimeBindingValueSource(fallback.source, context, diagnostics);\n}\n\nfunction resolveBindingFallbackSync(\n fallback: BindingFallback | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): unknown {\n if (fallback === undefined) return undefined;\n if (fallback.value !== undefined) return fallback.value;\n if (fallback.source === undefined) return undefined;\n\n return resolveRuntimeBindingValueSourceSync(fallback.source, context, diagnostics);\n}\n\nasync function resolveBindingInputValue(\n input: BindingInputValue,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): Promise<BindingValue | undefined> {\n if (input.kind === 'literal') return input.value;\n if (input.kind === 'source') {\n const value = await resolveRuntimeBindingValueSource(input.source, context, diagnostics);\n return applyBindingValueTransforms(value, input.transforms);\n }\n\n if (input.kind === 'array') {\n const items: BindingValue[] = [];\n\n for (const item of input.items) {\n const value = await resolveBindingInputValue(item, context, diagnostics);\n if (value !== undefined) items.push(value);\n }\n\n return items;\n }\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input.fields)) {\n const resolvedValue = await resolveBindingInputValue(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nfunction resolveBindingInputValueSync(\n input: BindingInputValue,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): BindingValue | undefined {\n if (input.kind === 'literal') return input.value;\n if (input.kind === 'source') {\n const value = resolveRuntimeBindingValueSourceSync(input.source, context, diagnostics);\n return applyBindingValueTransforms(value, input.transforms);\n }\n\n if (input.kind === 'array') {\n const items: BindingValue[] = [];\n\n for (const item of input.items) {\n const value = resolveBindingInputValueSync(item, context, diagnostics);\n if (value !== undefined) items.push(value);\n }\n\n return items;\n }\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input.fields)) {\n const resolvedValue = resolveBindingInputValueSync(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nfunction createRuntimeBindingDiagnostic(\n operation: BindingOperationRef,\n code: DataSourceDiagnostic['code'],\n message: string,\n): DataSourceDiagnostic {\n return {\n apiId: operation.apiId,\n code,\n endpointId: operation.endpointId,\n message,\n operationId: operation.operationId,\n severity: 'error',\n };\n}\n\nfunction applyBindingValueTransforms(\n value: unknown,\n transforms: readonly BindingValueTransform[] | undefined,\n): BindingValue | undefined {\n const bindingValue = asBindingValue(value);\n if (typeof bindingValue !== 'string' || transforms === undefined) return bindingValue;\n\n let currentValue = bindingValue;\n\n for (const transform of transforms) {\n if (transform === 'lowercase') currentValue = currentValue.toLowerCase();\n if (transform === 'trim') currentValue = currentValue.trim();\n if (transform === 'uppercase') currentValue = currentValue.toUpperCase();\n }\n\n return currentValue;\n}\n\nexport function applyRuntimeBindingDataPath(\n value: BindingValue | undefined,\n path: string | undefined,\n): BindingValue | undefined {\n if (path === undefined) return value;\n return asBindingValue(readPath(value, path));\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n return path.split('.').reduce<unknown>((currentValue, part) => {\n if (Array.isArray(currentValue)) {\n if (!isArrayIndexPathPart(part)) return undefined;\n return currentValue[Number(part)];\n }\n\n if (!isRecord(currentValue)) return undefined;\n return currentValue[part];\n }, source);\n}\n\nfunction isArrayIndexPathPart(part: string): boolean {\n return /^(0|[1-9]\\d*)$/.test(part);\n}\n\nfunction asBindingValue(value: unknown): BindingValue | undefined {\n return isBindingValue(value) ? value : undefined;\n}\n\nfunction isBindingValue(value: unknown): value is BindingValue {\n if (value === null) return true;\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return true;\n }\n\n if (Array.isArray(value)) return value.every(isBindingValue);\n if (!isRecord(value)) return false;\n\n return Object.values(value).every(isBindingValue);\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":"runtimeBindings.js","sourceRoot":"","sources":["../src/runtimeBindings.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinition,\n ApiDefinitionRegistry,\n BindingFallback,\n BindingInputMap,\n BindingInputValue,\n BindingOperationRef,\n BindingValue,\n BindingValueSource,\n BindingValueTransform,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataEndpointConfig,\n DataSourceDiagnostic,\n PropBinding,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport { isRecord } from '@ankhorage/utility/object';\n\nimport { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';\n\nexport type RuntimeBindingOperationKey = string;\n\nexport interface RuntimeBindingOperationExecutionArgs {\n readonly operation: BindingOperationRef;\n readonly api: ApiDefinition;\n readonly endpoint: DataEndpointConfig;\n readonly input?: BindingValue;\n readonly node?: UiNode;\n}\n\nexport type RuntimeBindingOperationExecutionResult =\n | {\n readonly ok: true;\n readonly data: BindingValue;\n readonly diagnostics?: readonly DataSourceDiagnostic[];\n }\n | {\n readonly ok: false;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n };\n\nexport type RuntimeBindingOperationExecutor = (\n args: RuntimeBindingOperationExecutionArgs,\n) => Promise<RuntimeBindingOperationExecutionResult>;\n\nexport type RuntimeBindingOperationResultCache = Readonly<\n Record<RuntimeBindingOperationKey, BindingValue | undefined>\n>;\n\nexport type RuntimeBindingOperationResultWriter = (\n key: RuntimeBindingOperationKey,\n value: BindingValue,\n) => void;\n\nexport interface RuntimeBindingResolutionContext {\n readonly context?: Record<string, unknown>;\n readonly event?: ComponentEventDto<string, object>;\n readonly stateAdapter?: StateAdapter;\n readonly apis?: ApiDefinitionRegistry;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n}\n\nexport interface RuntimeBindingResolutionArgs extends RuntimeBindingResolutionContext {\n readonly node: UiNode;\n readonly props: Record<string, unknown>;\n}\n\nexport interface RuntimeBindingResolutionResult {\n readonly props: Record<string, unknown>;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n}\n\nexport async function resolveRuntimeBindingsAsync(\n args: RuntimeBindingResolutionArgs,\n): Promise<RuntimeBindingResolutionResult> {\n const diagnostics: DataSourceDiagnostic[] = [];\n const resolvedProps: Record<string, unknown> = { ...args.props };\n const binding = args.dataBindings?.[args.node.id];\n\n for (const [prop, propBinding] of Object.entries(binding?.props ?? {})) {\n const value = await resolveRuntimeBindingValue(propBinding, args, diagnostics);\n resolvedProps[prop] = value;\n }\n\n return { props: resolvedProps, diagnostics };\n}\n\nexport function resolveRuntimeBindings(\n args: RuntimeBindingResolutionArgs,\n): RuntimeBindingResolutionResult {\n const diagnostics: DataSourceDiagnostic[] = [];\n const resolvedProps: Record<string, unknown> = { ...args.props };\n const binding = args.dataBindings?.[args.node.id];\n\n for (const [prop, propBinding] of Object.entries(binding?.props ?? {})) {\n resolvedProps[prop] = resolveRuntimeBindingValueSync(propBinding, args, diagnostics);\n }\n\n return { props: resolvedProps, diagnostics };\n}\n\nexport async function resolveRuntimeBindingValue(\n binding: PropBinding,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): Promise<unknown> {\n const value = await resolveRuntimeBindingValueSource(binding.source, context, diagnostics);\n const transformedValue = applyBindingValueTransforms(value, binding.transforms);\n\n if (transformedValue !== undefined) return transformedValue;\n\n return resolveBindingFallback(binding.fallback, context, diagnostics);\n}\n\nexport function resolveRuntimeBindingValueSync(\n binding: PropBinding,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): unknown {\n const value = resolveRuntimeBindingValueSourceSync(binding.source, context, diagnostics);\n const transformedValue = applyBindingValueTransforms(value, binding.transforms);\n\n if (transformedValue !== undefined) return transformedValue;\n\n return resolveBindingFallbackSync(binding.fallback, context, diagnostics);\n}\n\nexport async function resolveBindingInputMap(\n input: BindingInputMap | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): Promise<BindingValue | undefined> {\n if (input === undefined) return undefined;\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n const resolvedValue = await resolveBindingInputValue(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nexport function resolveBindingInputMapSync(\n input: BindingInputMap | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[] = [],\n): BindingValue | undefined {\n if (input === undefined) return undefined;\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n const resolvedValue = resolveBindingInputValueSync(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nexport function createRuntimeBindingOperationKey(\n operation: BindingOperationRef,\n): RuntimeBindingOperationKey {\n return [operation.apiId, operation.endpointId ?? '', operation.operationId].join(':');\n}\n\nasync function resolveRuntimeBindingValueSource(\n source: BindingValueSource,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): Promise<BindingValue | undefined> {\n if (source.kind !== 'operation') {\n return resolveRuntimeBindingValueSourceSync(source, context, diagnostics);\n }\n\n const cached = resolveCachedOperationValue(source, context);\n if (cached !== undefined) return cached;\n\n if (context.executeOperation === undefined) {\n diagnostics.push(\n createRuntimeBindingDiagnostic(\n source.operation,\n 'missing-adapter',\n 'API operation binding requires an injected operation executor.',\n ),\n );\n return undefined;\n }\n\n const selection = resolveRuntimeBindingOperationSelection(\n source.operation,\n context.apis,\n diagnostics,\n );\n if (selection === undefined) return undefined;\n\n const result = await context.executeOperation({\n api: selection.api,\n endpoint: selection.endpoint,\n operation: source.operation,\n });\n\n diagnostics.push(...(result.diagnostics ?? []));\n if (!result.ok) return undefined;\n\n return applyRuntimeBindingDataPath(result.data, source.path);\n}\n\nexport function resolveRuntimeBindingValueSourceSync(\n source: BindingValueSource,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): BindingValue | undefined {\n switch (source.kind) {\n case 'context':\n return asBindingValue(readPath(context.context, source.path));\n case 'event':\n return asBindingValue(readPath(context.event, source.path));\n case 'literal':\n return source.value;\n case 'operation': {\n const cached = resolveCachedOperationValue(source, context);\n if (cached !== undefined) return cached;\n diagnostics.push(\n createRuntimeBindingDiagnostic(\n source.operation,\n 'missing-adapter',\n 'Synchronous API operation bindings require preloaded operation results.',\n ),\n );\n return undefined;\n }\n case 'state': {\n const result = context.stateAdapter?.get(source.path);\n return result?.ok ? asBindingValue(result.data) : undefined;\n }\n }\n}\n\nfunction resolveCachedOperationValue(\n source: Extract<BindingValueSource, { readonly kind: 'operation' }>,\n context: RuntimeBindingResolutionContext,\n): BindingValue | undefined {\n const operationKey = createRuntimeBindingOperationKey(source.operation);\n const cachedValue = context.operationResults?.[operationKey];\n\n return applyRuntimeBindingDataPath(cachedValue, source.path);\n}\n\nasync function resolveBindingFallback(\n fallback: BindingFallback | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): Promise<unknown> {\n if (fallback === undefined) return undefined;\n if (fallback.value !== undefined) return fallback.value;\n if (fallback.source === undefined) return undefined;\n\n return resolveRuntimeBindingValueSource(fallback.source, context, diagnostics);\n}\n\nfunction resolveBindingFallbackSync(\n fallback: BindingFallback | undefined,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): unknown {\n if (fallback === undefined) return undefined;\n if (fallback.value !== undefined) return fallback.value;\n if (fallback.source === undefined) return undefined;\n\n return resolveRuntimeBindingValueSourceSync(fallback.source, context, diagnostics);\n}\n\nasync function resolveBindingInputValue(\n input: BindingInputValue,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): Promise<BindingValue | undefined> {\n if (input.kind === 'literal') return input.value;\n if (input.kind === 'source') {\n const value = await resolveRuntimeBindingValueSource(input.source, context, diagnostics);\n return applyBindingValueTransforms(value, input.transforms);\n }\n\n if (input.kind === 'array') {\n const items: BindingValue[] = [];\n\n for (const item of input.items) {\n const value = await resolveBindingInputValue(item, context, diagnostics);\n if (value !== undefined) items.push(value);\n }\n\n return items;\n }\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input.fields)) {\n const resolvedValue = await resolveBindingInputValue(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nfunction resolveBindingInputValueSync(\n input: BindingInputValue,\n context: RuntimeBindingResolutionContext,\n diagnostics: DataSourceDiagnostic[],\n): BindingValue | undefined {\n if (input.kind === 'literal') return input.value;\n if (input.kind === 'source') {\n const value = resolveRuntimeBindingValueSourceSync(input.source, context, diagnostics);\n return applyBindingValueTransforms(value, input.transforms);\n }\n\n if (input.kind === 'array') {\n const items: BindingValue[] = [];\n\n for (const item of input.items) {\n const value = resolveBindingInputValueSync(item, context, diagnostics);\n if (value !== undefined) items.push(value);\n }\n\n return items;\n }\n\n const fields: Record<string, BindingValue> = {};\n\n for (const [key, value] of Object.entries(input.fields)) {\n const resolvedValue = resolveBindingInputValueSync(value, context, diagnostics);\n if (resolvedValue !== undefined) fields[key] = resolvedValue;\n }\n\n return fields;\n}\n\nfunction createRuntimeBindingDiagnostic(\n operation: BindingOperationRef,\n code: DataSourceDiagnostic['code'],\n message: string,\n): DataSourceDiagnostic {\n return {\n apiId: operation.apiId,\n code,\n endpointId: operation.endpointId,\n message,\n operationId: operation.operationId,\n severity: 'error',\n };\n}\n\nfunction applyBindingValueTransforms(\n value: unknown,\n transforms: readonly BindingValueTransform[] | undefined,\n): BindingValue | undefined {\n const bindingValue = asBindingValue(value);\n if (typeof bindingValue !== 'string' || transforms === undefined) return bindingValue;\n\n let currentValue = bindingValue;\n\n for (const transform of transforms) {\n if (transform === 'lowercase') currentValue = currentValue.toLowerCase();\n if (transform === 'trim') currentValue = currentValue.trim();\n if (transform === 'uppercase') currentValue = currentValue.toUpperCase();\n }\n\n return currentValue;\n}\n\nexport function applyRuntimeBindingDataPath(\n value: BindingValue | undefined,\n path: string | undefined,\n): BindingValue | undefined {\n if (path === undefined) return value;\n return asBindingValue(readPath(value, path));\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n return path.split('.').reduce<unknown>((currentValue, part) => {\n if (Array.isArray(currentValue)) {\n if (!isArrayIndexPathPart(part)) return undefined;\n return currentValue[Number(part)];\n }\n\n if (!isRecord(currentValue)) return undefined;\n return currentValue[part];\n }, source);\n}\n\nfunction isArrayIndexPathPart(part: string): boolean {\n return /^(0|[1-9]\\d*)$/.test(part);\n}\n\nfunction asBindingValue(value: unknown): BindingValue | undefined {\n return isBindingValue(value) ? value : undefined;\n}\n\nfunction isBindingValue(value: unknown): value is BindingValue {\n if (value === null) return true;\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return true;\n }\n\n if (Array.isArray(value)) return value.every(isBindingValue);\n if (!isRecord(value)) return false;\n\n return Object.values(value).every(isBindingValue);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { Capability } from '@ankhorage/contracts/capabilities';
1
+ import type { Capability } from '@ankhorage/contracts/capability';
2
2
  export declare const RUNTIME_MANIFEST_KIND = "ankhorage-runtime-manifest";
3
3
  export interface RuntimeDiagnostic {
4
4
  readonly code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeManifest.d.ts","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeManifest.d.ts","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeManifest.js","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAqDlE,MAAM,UAAU,mBAAmB,CACjC,MAAqC;IAErC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA0C;IAE1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAwC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAC/D,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { Capability } from '@ankhorage/contracts/capabilities';\n\nexport const RUNTIME_MANIFEST_KIND = 'ankhorage-runtime-manifest';\n\nexport interface RuntimeDiagnostic {\n readonly code: string;\n readonly message: string;\n readonly severity: 'error' | 'info' | 'warning';\n}\n\nexport interface RuntimeManifestConfig {\n readonly appId: string;\n readonly environment?: string;\n readonly values?: Readonly<Record<string, unknown>>;\n}\n\nexport interface RuntimeActionDescriptor<Data = unknown> {\n readonly capability?: Capability['id'];\n readonly description?: string;\n readonly id: string;\n readonly data?: Data;\n}\n\nexport interface RuntimeBindingDescriptor<Value = unknown> {\n readonly actionId?: string;\n readonly id: string;\n readonly source: string;\n readonly target: string;\n readonly value?: Value;\n}\n\nexport interface RuntimeAdapterDescriptor<Options = unknown> {\n readonly id: string;\n readonly kind: string;\n readonly options?: Options;\n}\n\nexport interface RuntimeManifest {\n readonly actions: readonly RuntimeActionDescriptor[];\n readonly adapters: readonly RuntimeAdapterDescriptor[];\n readonly bindings: readonly RuntimeBindingDescriptor[];\n readonly config: RuntimeManifestConfig;\n readonly diagnostics: readonly RuntimeDiagnostic[];\n readonly kind: typeof RUNTIME_MANIFEST_KIND;\n readonly version: 1;\n}\n\nexport interface RuntimeManifestInput {\n readonly actions?: readonly RuntimeActionDescriptor[];\n readonly adapters?: readonly RuntimeAdapterDescriptor[];\n readonly bindings?: readonly RuntimeBindingDescriptor[];\n readonly config: RuntimeManifestConfig;\n readonly diagnostics?: readonly RuntimeDiagnostic[];\n}\n\nexport function defineRuntimeAction<Data = unknown>(\n action: RuntimeActionDescriptor<Data>,\n): RuntimeActionDescriptor<Data> {\n return action;\n}\n\nexport function defineRuntimeAdapter<Options = unknown>(\n adapter: RuntimeAdapterDescriptor<Options>,\n): RuntimeAdapterDescriptor<Options> {\n return adapter;\n}\n\nexport function defineRuntimeBinding<Value = unknown>(\n binding: RuntimeBindingDescriptor<Value>,\n): RuntimeBindingDescriptor<Value> {\n return binding;\n}\n\nexport function createRuntimeManifest(input: RuntimeManifestInput): RuntimeManifest {\n return {\n actions: input.actions ?? [],\n adapters: input.adapters ?? [],\n bindings: input.bindings ?? [],\n config: input.config,\n diagnostics: input.diagnostics ?? [],\n kind: RUNTIME_MANIFEST_KIND,\n version: 1,\n };\n}\n"]}
1
+ {"version":3,"file":"runtimeManifest.js","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAqDlE,MAAM,UAAU,mBAAmB,CACjC,MAAqC;IAErC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA0C;IAE1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAwC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAC/D,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { Capability } from '@ankhorage/contracts/capability';\n\nexport const RUNTIME_MANIFEST_KIND = 'ankhorage-runtime-manifest';\n\nexport interface RuntimeDiagnostic {\n readonly code: string;\n readonly message: string;\n readonly severity: 'error' | 'info' | 'warning';\n}\n\nexport interface RuntimeManifestConfig {\n readonly appId: string;\n readonly environment?: string;\n readonly values?: Readonly<Record<string, unknown>>;\n}\n\nexport interface RuntimeActionDescriptor<Data = unknown> {\n readonly capability?: Capability['id'];\n readonly description?: string;\n readonly id: string;\n readonly data?: Data;\n}\n\nexport interface RuntimeBindingDescriptor<Value = unknown> {\n readonly actionId?: string;\n readonly id: string;\n readonly source: string;\n readonly target: string;\n readonly value?: Value;\n}\n\nexport interface RuntimeAdapterDescriptor<Options = unknown> {\n readonly id: string;\n readonly kind: string;\n readonly options?: Options;\n}\n\nexport interface RuntimeManifest {\n readonly actions: readonly RuntimeActionDescriptor[];\n readonly adapters: readonly RuntimeAdapterDescriptor[];\n readonly bindings: readonly RuntimeBindingDescriptor[];\n readonly config: RuntimeManifestConfig;\n readonly diagnostics: readonly RuntimeDiagnostic[];\n readonly kind: typeof RUNTIME_MANIFEST_KIND;\n readonly version: 1;\n}\n\nexport interface RuntimeManifestInput {\n readonly actions?: readonly RuntimeActionDescriptor[];\n readonly adapters?: readonly RuntimeAdapterDescriptor[];\n readonly bindings?: readonly RuntimeBindingDescriptor[];\n readonly config: RuntimeManifestConfig;\n readonly diagnostics?: readonly RuntimeDiagnostic[];\n}\n\nexport function defineRuntimeAction<Data = unknown>(\n action: RuntimeActionDescriptor<Data>,\n): RuntimeActionDescriptor<Data> {\n return action;\n}\n\nexport function defineRuntimeAdapter<Options = unknown>(\n adapter: RuntimeAdapterDescriptor<Options>,\n): RuntimeAdapterDescriptor<Options> {\n return adapter;\n}\n\nexport function defineRuntimeBinding<Value = unknown>(\n binding: RuntimeBindingDescriptor<Value>,\n): RuntimeBindingDescriptor<Value> {\n return binding;\n}\n\nexport function createRuntimeManifest(input: RuntimeManifestInput): RuntimeManifest {\n return {\n actions: input.actions ?? [],\n adapters: input.adapters ?? [],\n bindings: input.bindings ?? [],\n config: input.config,\n diagnostics: input.diagnostics ?? [],\n kind: RUNTIME_MANIFEST_KIND,\n version: 1,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeNodeProps.d.ts","sourceRoot":"","sources":["../src/runtimeNodeProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACP,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAA0B,KAAK,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEpF,UAAU,8BAA8B;IACtC,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAChD;AAqED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,kCAAkC,CAAC;CACvD,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+B1B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACpE,oBAAoB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;CACjG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsD1B"}
1
+ {"version":3,"file":"runtimeNodeProps.d.ts","sourceRoot":"","sources":["../src/runtimeNodeProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACP,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAA0B,KAAK,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEpF,UAAU,8BAA8B;IACtC,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAChD;AAqED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,kCAAkC,CAAC;CACvD,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+B1B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACpE,oBAAoB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;CACjG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsD1B"}
@@ -1,5 +1,5 @@
1
+ import { isCapabilityId } from '@ankhorage/capability';
1
2
  import { isMediaAssetReference } from '@ankhorage/contracts';
2
- import { isCapabilityId } from '@ankhorage/contracts/capabilities';
3
3
  import { resolveRuntimeBindings } from './runtimeBindings';
4
4
  function isRecord(value) {
5
5
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeNodeProps.js","sourceRoot":"","sources":["../src/runtimeNodeProps.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinitionRegistry,\n ComponentDataBindingRegistry,\n DbAdapter,\n DbRealtimeAdapter,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport { isMediaAssetReference } from '@ankhorage/contracts';\nimport { type Capability, isCapabilityId } from '@ankhorage/contracts/capabilities';\n\nimport { resolveRuntimeBindings, type RuntimeBindingOperationResultCache } from './runtimeBindings';\nimport type { RuntimeAction, RuntimeRendererConfig } from './RuntimeRendererConfig';\n\ninterface RuntimeActionHandlerCacheEntry {\n readonly handleAction: (action: RuntimeAction) => void;\n readonly handler: (...args: unknown[]) => void;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!isRecord(value)) {\n return false;\n }\n\n const prototype = Reflect.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction hasActionShape(value: unknown): value is RuntimeAction {\n return isRecord(value) && isCapabilityId(value.type);\n}\n\nfunction isCallbackProp(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n\nfunction isNonEmptyActionId(value: unknown): value is Capability['id'] {\n return isCapabilityId(value);\n}\n\nfunction createStringActionPayload(args: unknown[]): { payload?: object } {\n if (args.length === 0) {\n return {};\n }\n\n const [firstArg] = args;\n if (isPlainObject(firstArg)) {\n return { payload: firstArg };\n }\n\n return {\n payload: {\n args,\n },\n };\n}\n\nconst noopRuntimeActionHandler = () => undefined;\n\nfunction resolveImageAssetUrl(value: unknown): string | null {\n if (typeof value === 'string') {\n const url = value.trim();\n return url.length ? url : null;\n }\n\n if (!isRecord(value) || typeof value.kind !== 'string') {\n return null;\n }\n\n if (value.kind === 'url' && typeof value.url === 'string') {\n const url = value.url.trim();\n return url.length ? url : null;\n }\n\n if (value.kind === 'storage' && typeof value.publicUrl === 'string') {\n const publicUrl = value.publicUrl.trim();\n return publicUrl.length ? publicUrl : null;\n }\n\n return null;\n}\n\nexport function resolveRuntimeNodeProps(args: {\n node: UiNode;\n resolveNodeProps?: RuntimeRendererConfig['resolveNodeProps'];\n stateAdapter?: StateAdapter;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n bindingContext?: Record<string, unknown>;\n apis?: ApiDefinitionRegistry;\n dataBindings?: ComponentDataBindingRegistry;\n operationResults?: RuntimeBindingOperationResultCache;\n}): Record<string, unknown> {\n const { node, resolveNodeProps } = args;\n\n const baseProps: Record<string, unknown> = {\n testID: node.id,\n ...(node.props ?? {}),\n };\n\n if (node.type === 'Image' && !isMediaAssetReference(baseProps.source)) {\n const resolvedSource = resolveImageAssetUrl(baseProps.source);\n if (resolvedSource !== null) baseProps.source = resolvedSource;\n else delete baseProps.source;\n }\n\n if (node.style) {\n baseProps.style = baseProps.style ? [baseProps.style, node.style] : node.style;\n }\n\n const bindingResult = resolveRuntimeBindings({\n apis: args.apis,\n context: args.bindingContext,\n dataBindings: args.dataBindings,\n node,\n operationResults: args.operationResults,\n props: baseProps,\n stateAdapter: args.stateAdapter,\n });\n\n return resolveNodeProps\n ? resolveNodeProps({ node, props: bindingResult.props })\n : bindingResult.props;\n}\n\nexport function wrapRuntimeActionProps(args: {\n props: Record<string, unknown>;\n disableActions: boolean;\n handleAction: (action: RuntimeAction) => void;\n actionHandlerCache: WeakMap<object, RuntimeActionHandlerCacheEntry>;\n functionHandlerCache: WeakMap<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>;\n}): Record<string, unknown> {\n const { props, disableActions, handleAction, actionHandlerCache, functionHandlerCache } = args;\n const wrappedProps: Record<string, unknown> = { ...props };\n\n Object.keys(wrappedProps).forEach((key) => {\n if (!key.startsWith('on')) {\n return;\n }\n\n const value = wrappedProps[key];\n\n if (disableActions) {\n wrappedProps[key] =\n hasActionShape(value) || isNonEmptyActionId(value) ? noopRuntimeActionHandler : undefined;\n return;\n }\n\n if (hasActionShape(value)) {\n const actionObject = value;\n let cachedActionHandler = actionHandlerCache.get(actionObject);\n if (cachedActionHandler?.handleAction !== handleAction) {\n const actionHandler = () => {\n handleAction(actionObject);\n };\n cachedActionHandler = { handleAction, handler: actionHandler };\n actionHandlerCache.set(actionObject, cachedActionHandler);\n }\n wrappedProps[key] = cachedActionHandler.handler;\n return;\n }\n\n if (isNonEmptyActionId(value)) {\n const actionId = value;\n wrappedProps[key] = (...handlerArgs: unknown[]) => {\n handleAction({\n type: actionId,\n ...createStringActionPayload(handlerArgs),\n });\n };\n return;\n }\n\n if (isCallbackProp(value)) {\n const handler = value;\n let wrappedHandler = functionHandlerCache.get(handler);\n if (!wrappedHandler) {\n wrappedHandler = (...handlerArgs: unknown[]) => handler(...handlerArgs);\n functionHandlerCache.set(handler, wrappedHandler);\n }\n wrappedProps[key] = wrappedHandler;\n }\n });\n\n return wrappedProps;\n}\n"]}
1
+ {"version":3,"file":"runtimeNodeProps.js","sourceRoot":"","sources":["../src/runtimeNodeProps.ts"],"names":[],"mappings":"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","sourcesContent":["import { isCapabilityId } from '@ankhorage/capability';\nimport type {\n ApiDefinitionRegistry,\n ComponentDataBindingRegistry,\n DbAdapter,\n DbRealtimeAdapter,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport { isMediaAssetReference } from '@ankhorage/contracts';\nimport type { Capability } from '@ankhorage/contracts/capability';\n\nimport { resolveRuntimeBindings, type RuntimeBindingOperationResultCache } from './runtimeBindings';\nimport type { RuntimeAction, RuntimeRendererConfig } from './RuntimeRendererConfig';\n\ninterface RuntimeActionHandlerCacheEntry {\n readonly handleAction: (action: RuntimeAction) => void;\n readonly handler: (...args: unknown[]) => void;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (!isRecord(value)) {\n return false;\n }\n\n const prototype = Reflect.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction hasActionShape(value: unknown): value is RuntimeAction {\n return isRecord(value) && isCapabilityId(value.type);\n}\n\nfunction isCallbackProp(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n\nfunction isNonEmptyActionId(value: unknown): value is Capability['id'] {\n return isCapabilityId(value);\n}\n\nfunction createStringActionPayload(args: unknown[]): { payload?: object } {\n if (args.length === 0) {\n return {};\n }\n\n const [firstArg] = args;\n if (isPlainObject(firstArg)) {\n return { payload: firstArg };\n }\n\n return {\n payload: {\n args,\n },\n };\n}\n\nconst noopRuntimeActionHandler = () => undefined;\n\nfunction resolveImageAssetUrl(value: unknown): string | null {\n if (typeof value === 'string') {\n const url = value.trim();\n return url.length ? url : null;\n }\n\n if (!isRecord(value) || typeof value.kind !== 'string') {\n return null;\n }\n\n if (value.kind === 'url' && typeof value.url === 'string') {\n const url = value.url.trim();\n return url.length ? url : null;\n }\n\n if (value.kind === 'storage' && typeof value.publicUrl === 'string') {\n const publicUrl = value.publicUrl.trim();\n return publicUrl.length ? publicUrl : null;\n }\n\n return null;\n}\n\nexport function resolveRuntimeNodeProps(args: {\n node: UiNode;\n resolveNodeProps?: RuntimeRendererConfig['resolveNodeProps'];\n stateAdapter?: StateAdapter;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n bindingContext?: Record<string, unknown>;\n apis?: ApiDefinitionRegistry;\n dataBindings?: ComponentDataBindingRegistry;\n operationResults?: RuntimeBindingOperationResultCache;\n}): Record<string, unknown> {\n const { node, resolveNodeProps } = args;\n\n const baseProps: Record<string, unknown> = {\n testID: node.id,\n ...(node.props ?? {}),\n };\n\n if (node.type === 'Image' && !isMediaAssetReference(baseProps.source)) {\n const resolvedSource = resolveImageAssetUrl(baseProps.source);\n if (resolvedSource !== null) baseProps.source = resolvedSource;\n else delete baseProps.source;\n }\n\n if (node.style) {\n baseProps.style = baseProps.style ? [baseProps.style, node.style] : node.style;\n }\n\n const bindingResult = resolveRuntimeBindings({\n apis: args.apis,\n context: args.bindingContext,\n dataBindings: args.dataBindings,\n node,\n operationResults: args.operationResults,\n props: baseProps,\n stateAdapter: args.stateAdapter,\n });\n\n return resolveNodeProps\n ? resolveNodeProps({ node, props: bindingResult.props })\n : bindingResult.props;\n}\n\nexport function wrapRuntimeActionProps(args: {\n props: Record<string, unknown>;\n disableActions: boolean;\n handleAction: (action: RuntimeAction) => void;\n actionHandlerCache: WeakMap<object, RuntimeActionHandlerCacheEntry>;\n functionHandlerCache: WeakMap<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>;\n}): Record<string, unknown> {\n const { props, disableActions, handleAction, actionHandlerCache, functionHandlerCache } = args;\n const wrappedProps: Record<string, unknown> = { ...props };\n\n Object.keys(wrappedProps).forEach((key) => {\n if (!key.startsWith('on')) {\n return;\n }\n\n const value = wrappedProps[key];\n\n if (disableActions) {\n wrappedProps[key] =\n hasActionShape(value) || isNonEmptyActionId(value) ? noopRuntimeActionHandler : undefined;\n return;\n }\n\n if (hasActionShape(value)) {\n const actionObject = value;\n let cachedActionHandler = actionHandlerCache.get(actionObject);\n if (cachedActionHandler?.handleAction !== handleAction) {\n const actionHandler = () => {\n handleAction(actionObject);\n };\n cachedActionHandler = { handleAction, handler: actionHandler };\n actionHandlerCache.set(actionObject, cachedActionHandler);\n }\n wrappedProps[key] = cachedActionHandler.handler;\n return;\n }\n\n if (isNonEmptyActionId(value)) {\n const actionId = value;\n wrappedProps[key] = (...handlerArgs: unknown[]) => {\n handleAction({\n type: actionId,\n ...createStringActionPayload(handlerArgs),\n });\n };\n return;\n }\n\n if (isCallbackProp(value)) {\n const handler = value;\n let wrappedHandler = functionHandlerCache.get(handler);\n if (!wrappedHandler) {\n wrappedHandler = (...handlerArgs: unknown[]) => handler(...handlerArgs);\n functionHandlerCache.set(handler, wrappedHandler);\n }\n wrappedProps[key] = wrappedHandler;\n }\n });\n\n return wrappedProps;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/runtime",
3
- "version": "4.0.7",
3
+ "version": "4.1.1",
4
4
  "description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -102,7 +102,70 @@
102
102
  "label": "Runtime bindings"
103
103
  },
104
104
  {
105
- "id": "runtime.adapters",
105
+ "id": "runtime.eventOperation",
106
+ "owner": "@ankhorage/runtime",
107
+ "access": [
108
+ "read",
109
+ "subscribe"
110
+ ],
111
+ "binding": {
112
+ "kind": "context",
113
+ "bindableAs": [
114
+ "source"
115
+ ]
116
+ },
117
+ "label": "Runtime event operation",
118
+ "output": {
119
+ "schema": {
120
+ "type": "object",
121
+ "required": [
122
+ "status",
123
+ "loading",
124
+ "errorMessage"
125
+ ],
126
+ "properties": {
127
+ "status": {
128
+ "type": "string",
129
+ "enum": [
130
+ "idle",
131
+ "loading",
132
+ "success",
133
+ "error"
134
+ ]
135
+ },
136
+ "loading": {
137
+ "type": "boolean"
138
+ },
139
+ "errorMessage": {
140
+ "type": "string"
141
+ },
142
+ "nodeId": {
143
+ "type": "string"
144
+ },
145
+ "operation": {
146
+ "type": "object",
147
+ "required": [
148
+ "apiId",
149
+ "operationId"
150
+ ],
151
+ "properties": {
152
+ "apiId": {
153
+ "type": "string"
154
+ },
155
+ "endpointId": {
156
+ "type": "string"
157
+ },
158
+ "operationId": {
159
+ "type": "string"
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+ },
167
+ {
168
+ "id": "runtime.repeat.item",
106
169
  "owner": "@ankhorage/runtime",
107
170
  "access": [
108
171
  "read"
@@ -113,7 +176,7 @@
113
176
  "source"
114
177
  ]
115
178
  },
116
- "label": "Runtime adapters"
179
+ "label": "Runtime repeat item"
117
180
  }
118
181
  ]
119
182
  },
@@ -132,7 +195,8 @@
132
195
  "knip:check": "ankhorage-knip"
133
196
  },
134
197
  "dependencies": {
135
- "@ankhorage/contracts": "^24.2.1",
198
+ "@ankhorage/capability": "^0.2.1",
199
+ "@ankhorage/contracts": "^25.1.0",
136
200
  "@ankhorage/data-sources": "^2.1.0",
137
201
  "@ankhorage/utility": "^1.9.85"
138
202
  },
@@ -147,8 +211,8 @@
147
211
  }
148
212
  },
149
213
  "devDependencies": {
150
- "@ankhorage/devtools": "^2.3.6",
151
- "@ankhorage/paradox": "^0.3.1",
214
+ "@ankhorage/devtools": "^2.3.9",
215
+ "@ankhorage/paradox": "^0.3.3",
152
216
  "@types/bun": "^1.4.2",
153
217
  "@types/node": "^26.6.4",
154
218
  "@types/react": "^19.3.0",
@@ -1,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v4.0.7">
2
- <title>npm: v4.0.7</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v4.1.1">
2
+ <title>npm: v4.1.1</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">v4.0.7</text>
6
+ <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v4.1.1</text>
7
7
  </svg>
@@ -11,6 +11,12 @@ graph TD
11
11
  package__ankhorage_runtime -.-> module_src_bindings_ts
12
12
  module_src_capabilities_index_ts["src/capabilities/index.ts"]
13
13
  package__ankhorage_runtime -.-> module_src_capabilities_index_ts
14
+ module_src_capabilities_resolveRuntimeContextCapability_test_ts["src/capabilities/resolveRuntimeContextCapability.test.ts"]
15
+ package__ankhorage_runtime -.-> module_src_capabilities_resolveRuntimeContextCapability_test_ts
16
+ module_src_capabilities_resolveRuntimeContextCapability_test_ts --> module_src_capabilities_resolveRuntimeContextCapability_ts
17
+ module_src_capabilities_resolveRuntimeContextCapability_ts["src/capabilities/resolveRuntimeContextCapability.ts"]
18
+ package__ankhorage_runtime -.-> module_src_capabilities_resolveRuntimeContextCapability_ts
19
+ module_src_capabilities_resolveRuntimeContextCapability_ts --> module_src_capabilities_index_ts
14
20
  module_src_componentRegistry_ts["src/componentRegistry.ts"]
15
21
  package__ankhorage_runtime -.-> module_src_componentRegistry_ts
16
22
  module_src_index_ts["src/index.ts"]
@@ -3,6 +3,8 @@ graph LR
3
3
  module_src_bindings_test_ts["src/bindings.test.ts"]
4
4
  module_src_bindings_ts["src/bindings.ts"]
5
5
  module_src_capabilities_index_ts["src/capabilities/index.ts"]
6
+ module_src_capabilities_resolveRuntimeContextCapability_test_ts["src/capabilities/resolveRuntimeContextCapability.test.ts"]
7
+ module_src_capabilities_resolveRuntimeContextCapability_ts["src/capabilities/resolveRuntimeContextCapability.ts"]
6
8
  module_src_componentRegistry_ts["src/componentRegistry.ts"]
7
9
  module_src_index_ts["src/index.ts"]
8
10
  module_src_ManifestContext_tsx["src/ManifestContext.tsx"]
@@ -126,6 +128,8 @@ graph LR
126
128
  export_executeRuntimeScreenOperationLoaders -.-> export_RuntimeScreenOperationLoaderExecutionResult
127
129
  export_IDLE_RUNTIME_EVENT_OPERATION_STATE["IDLE_RUNTIME_EVENT_OPERATION_STATE"]
128
130
  module_src_runtimeEventOperationLifecycle_ts --> export_IDLE_RUNTIME_EVENT_OPERATION_STATE
131
+ export_isRuntimeContextCapabilityOutputPath["isRuntimeContextCapabilityOutputPath"]
132
+ module_src_capabilities_resolveRuntimeContextCapability_ts --> export_isRuntimeContextCapabilityOutputPath
129
133
  export_ManifestContext["ManifestContext"]
130
134
  module_src_ManifestContext_tsx --> export_ManifestContext
131
135
  export_ManifestProvider["ManifestProvider"]
@@ -159,6 +163,9 @@ graph LR
159
163
  export_resolveRuntimeBindingValueSync["resolveRuntimeBindingValueSync"]
160
164
  module_src_runtimeBindings_ts --> export_resolveRuntimeBindingValueSync
161
165
  export_resolveRuntimeBindingValueSync -.-> export_RuntimeBindingResolutionContext
166
+ export_resolveRuntimeContextCapability["resolveRuntimeContextCapability"]
167
+ module_src_capabilities_resolveRuntimeContextCapability_ts --> export_resolveRuntimeContextCapability
168
+ export_resolveRuntimeContextCapability -.-> export_RuntimeContextCapabilityResolution
162
169
  export_resolveRuntimeEventOperationErrorMessage["resolveRuntimeEventOperationErrorMessage"]
163
170
  module_src_runtimeEventOperationLifecycle_ts --> export_resolveRuntimeEventOperationErrorMessage
164
171
  export_resolveScreenOperationLoaders["resolveScreenOperationLoaders"]
@@ -218,6 +225,10 @@ graph LR
218
225
  export_RuntimeComponentEventDispatchArgs -.-> export_RuntimeBindingOperationExecutor
219
226
  export_RuntimeComponentEventDispatchArgs -.-> export_RuntimeBindingOperationResultWriter
220
227
  export_RuntimeComponentEventDispatchArgs -.-> export_RuntimeEventOperationLifecycle
228
+ export_RuntimeContextCapabilityId["RuntimeContextCapabilityId"]
229
+ module_src_capabilities_resolveRuntimeContextCapability_ts --> export_RuntimeContextCapabilityId
230
+ export_RuntimeContextCapabilityResolution["RuntimeContextCapabilityResolution"]
231
+ module_src_capabilities_resolveRuntimeContextCapability_ts --> export_RuntimeContextCapabilityResolution
221
232
  export_RuntimeDbPersistError["RuntimeDbPersistError"]
222
233
  module_src_runtimeDbPersist_ts --> export_RuntimeDbPersistError
223
234
  export_RuntimeDbPersistExecutionResult["RuntimeDbPersistExecutionResult"]
@@ -3,6 +3,8 @@ graph LR
3
3
  module_src_bindings_test_ts["src/bindings.test.ts"]
4
4
  module_src_bindings_ts["src/bindings.ts"]
5
5
  module_src_capabilities_index_ts["src/capabilities/index.ts"]
6
+ module_src_capabilities_resolveRuntimeContextCapability_test_ts["src/capabilities/resolveRuntimeContextCapability.test.ts"]
7
+ module_src_capabilities_resolveRuntimeContextCapability_ts["src/capabilities/resolveRuntimeContextCapability.ts"]
6
8
  module_src_componentRegistry_ts["src/componentRegistry.ts"]
7
9
  module_src_index_ts["src/index.ts"]
8
10
  module_src_ManifestContext_tsx["src/ManifestContext.tsx"]
@@ -56,6 +58,8 @@ graph LR
56
58
  module_tests_reactNativeWebCompatibility_test_ts["tests/reactNativeWebCompatibility.test.ts"]
57
59
  module_tests_runtime_test_ts["tests/runtime.test.ts"]
58
60
  module_src_bindings_test_ts --> module_src_bindings_ts
61
+ module_src_capabilities_resolveRuntimeContextCapability_test_ts --> module_src_capabilities_resolveRuntimeContextCapability_ts
62
+ module_src_capabilities_resolveRuntimeContextCapability_ts --> module_src_capabilities_index_ts
59
63
  module_src_react19Compatibility_test_tsx --> module_src_ManifestContext_tsx
60
64
  module_src_react19Compatibility_test_tsx --> module_src_RuntimeRendererConfig_tsx
61
65
  module_src_registry_test_ts --> module_src_registry_tsx
@@ -0,0 +1,8 @@
1
+ sequenceDiagram
2
+ participant participant_findRuntimeContextCapability as findRuntimeContextCapability
3
+ participant participant_resolveRepeatItemSchema as resolveRepeatItemSchema
4
+ participant participant_resolveRuntimeContextCapability as resolveRuntimeContextCapability
5
+ participant_resolveRuntimeContextCapability->>participant_resolveRepeatItemSchema: resolveRepeatItemSchema()
6
+ participant_resolveRepeatItemSchema-->>participant_resolveRuntimeContextCapability: return
7
+ participant_resolveRuntimeContextCapability->>participant_findRuntimeContextCapability: findRuntimeContextCapability()
8
+ participant_findRuntimeContextCapability-->>participant_resolveRuntimeContextCapability: return