@ankhorage/runtime 2.3.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 ApiDefinitionList,\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?: ApiDefinitionList;\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';\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,4 +1,4 @@
1
- import type { ApiDefinitionList, ComponentDataBindingRegistry, DbAdapter, DbRealtimeAdapter, StateAdapter, UiNode } from '@ankhorage/contracts';
1
+ import type { ApiDefinitionRegistry, ComponentDataBindingRegistry, DbAdapter, DbRealtimeAdapter, StateAdapter, UiNode } from '@ankhorage/contracts';
2
2
  import { type RuntimeBindingOperationResultCache } from './runtimeBindings';
3
3
  import type { RuntimeAction, RuntimeRendererConfig } from './RuntimeRendererConfig';
4
4
  interface RuntimeActionHandlerCacheEntry {
@@ -12,7 +12,7 @@ export declare function resolveRuntimeNodeProps(args: {
12
12
  dbAdapter?: DbAdapter;
13
13
  dbRealtimeAdapter?: DbRealtimeAdapter;
14
14
  bindingContext?: Record<string, unknown>;
15
- apis?: ApiDefinitionList;
15
+ apis?: ApiDefinitionRegistry;
16
16
  dataBindings?: ComponentDataBindingRegistry;
17
17
  operationResults?: RuntimeBindingOperationResultCache;
18
18
  }): Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeNodeProps.d.ts","sourceRoot":"","sources":["../src/runtimeNodeProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,4BAA4B,EAC5B,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACP,MAAM,sBAAsB,CAAC;AAG9B,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;AAuED,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,iBAAiB,CAAC;IACzB,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":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACP,MAAM,sBAAsB,CAAC;AAG9B,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;AAuED,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 +1 @@
1
- {"version":3,"file":"runtimeNodeProps.js","sourceRoot":"","sources":["../src/runtimeNodeProps.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinitionList,\n ComponentDataBindingRegistry,\n DbAdapter,\n DbRealtimeAdapter,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport { isMediaAssetReference } from '@ankhorage/contracts';\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 (\n typeof value === 'object' && value !== null && 'type' in value && typeof value.type === 'string'\n );\n}\n\nfunction isCallbackProp(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n\nfunction isNonEmptyActionId(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\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?: ApiDefinitionList;\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.trim();\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 type {\n ApiDefinitionRegistry,\n ComponentDataBindingRegistry,\n DbAdapter,\n DbRealtimeAdapter,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport { isMediaAssetReference } from '@ankhorage/contracts';\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 (\n typeof value === 'object' && value !== null && 'type' in value && typeof value.type === 'string'\n );\n}\n\nfunction isCallbackProp(value: unknown): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n\nfunction isNonEmptyActionId(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\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.trim();\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": "2.3.1",
3
+ "version": "3.0.0",
4
4
  "description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -67,7 +67,7 @@
67
67
  "knip:check": "ankhorage-knip"
68
68
  },
69
69
  "dependencies": {
70
- "@ankhorage/contracts": "^11.1.0",
70
+ "@ankhorage/contracts": "^22.0.0",
71
71
  "@ankhorage/data-sources": "^2.0.3",
72
72
  "@ankhorage/utility": "^0.3.0"
73
73
  },
@@ -1,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="97" height="20" role="img" aria-label="npm: v2.2.10">
2
- <title>npm: v2.2.10</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v2.3.1">
2
+ <title>npm: v2.3.1</title>
3
3
  <rect width="38" height="20" fill="#374151"/>
4
- <rect x="38" width="59" height="20" fill="#cb3837"/>
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="67.5" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v2.2.10</text>
6
+ <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v2.3.1</text>
7
7
  </svg>
@@ -32,7 +32,7 @@ Export paths: `src/index.ts`
32
32
 
33
33
  | Prop | Type | Required | Default | Description |
34
34
  | ----------------- | --------------------------------------------------------------------- | -------- | ------- | ----------- |
35
- | apis | `ApiDefinitionList \| undefined` | no | — | |
35
+ | apis | `ApiDefinitionRegistry \| undefined` | no | — | |
36
36
  | bindingContext | `Record<string, unknown> \| undefined` | no | — | |
37
37
  | dataBindings | `ComponentDataBindingRegistry \| undefined` | no | — | |
38
38
  | dbAdapter | `DbAdapter \| undefined` | no | — | |
@@ -1,11 +1,18 @@
1
1
  sequenceDiagram
2
2
  participant participant_createApiDiagnostic as createApiDiagnostic
3
3
  participant participant_findRuntimeApi as findRuntimeApi
4
+ participant participant_readOwnProperty as readOwnProperty
4
5
  participant participant_resolveRuntimeApiEndpoint as resolveRuntimeApiEndpoint
5
6
  participant participant_validateRuntimeBindingOperationRef as validateRuntimeBindingOperationRef
6
7
  participant_validateRuntimeBindingOperationRef->>participant_findRuntimeApi: findRuntimeApi()
8
+ participant_findRuntimeApi->>participant_readOwnProperty: readOwnProperty()
9
+ participant_readOwnProperty-->>participant_findRuntimeApi: return
7
10
  participant_findRuntimeApi-->>participant_validateRuntimeBindingOperationRef: return
8
11
  participant_validateRuntimeBindingOperationRef->>participant_createApiDiagnostic: createApiDiagnostic()
9
12
  participant_createApiDiagnostic-->>participant_validateRuntimeBindingOperationRef: return
10
13
  participant_validateRuntimeBindingOperationRef->>participant_resolveRuntimeApiEndpoint: resolveRuntimeApiEndpoint()
14
+ participant_resolveRuntimeApiEndpoint->>participant_readOwnProperty: readOwnProperty()
15
+ participant_readOwnProperty-->>participant_resolveRuntimeApiEndpoint: return
11
16
  participant_resolveRuntimeApiEndpoint-->>participant_validateRuntimeBindingOperationRef: return
17
+ participant_validateRuntimeBindingOperationRef->>participant_readOwnProperty: readOwnProperty()
18
+ participant_readOwnProperty-->>participant_validateRuntimeBindingOperationRef: return
@@ -277,11 +277,11 @@
277
277
  ],
278
278
  "signatures": [
279
279
  {
280
- "label": "(options?: { actionHandlers?: RuntimeActionHandlers; apis?: ApiDefinitionList; dataBindings?: ComponentDataBindingRegistry; executeAction?: RuntimeActionHandler; executeOperation?: RuntimeBindingOperationExecutor; eventOperationLifecycle?: RuntimeEventOperationLifecycle; operationResults?: RuntimeBindingOperationResultCache; writeOperationResult?: RuntimeBindingOperationResultWriter; }) => RuntimeActionRegistry",
280
+ "label": "(options?: { actionHandlers?: RuntimeActionHandlers; apis?: ApiDefinitionRegistry; dataBindings?: ComponentDataBindingRegistry; executeAction?: RuntimeActionHandler; executeOperation?: RuntimeBindingOperationExecutor; eventOperationLifecycle?: RuntimeEventOperationLifecycle; operationResults?: RuntimeBindingOperationResultCache; writeOperationResult?: RuntimeBindingOperationResultWriter; }) => RuntimeActionRegistry",
281
281
  "parameters": [
282
282
  {
283
283
  "name": "options",
284
- "type": "{ actionHandlers?: RuntimeActionHandlers; apis?: ApiDefinitionList; dataBindings?: ComponentDataBindingRegistry; executeAction?: RuntimeActionHandler; executeOperation?: RuntimeBindingOperationExecutor; eventOperationLifecycle?: RuntimeEventOperationLifecycle; operationResults?: RuntimeBindingOperationResultCache; writeOperationResult?: RuntimeBindingOperationResultWriter; }",
284
+ "type": "{ actionHandlers?: RuntimeActionHandlers; apis?: ApiDefinitionRegistry; dataBindings?: ComponentDataBindingRegistry; executeAction?: RuntimeActionHandler; executeOperation?: RuntimeBindingOperationExecutor; eventOperationLifecycle?: RuntimeEventOperationLifecycle; operationResults?: RuntimeBindingOperationResultCache; writeOperationResult?: RuntimeBindingOperationResultWriter; }",
285
285
  "required": false,
286
286
  "description": null
287
287
  }
@@ -750,7 +750,7 @@
750
750
  "relatedSymbols": ["RuntimeBindingResolutionContext"],
751
751
  "signatures": [
752
752
  {
753
- "label": "(input: Readonly<Record<string, BindingInputValue>> | undefined, context: RuntimeBindingResolutionContext, diagnostics?: DataSourceDiagnostic[]) => Promise<BindingValue | undefined>",
753
+ "label": "(input: Readonly<Record<string, BindingInputValue>> | undefined, context: RuntimeBindingResolutionContext, diagnostics?: DataSourceDiagnostic[]) => Promise<import(\"@ankhorage/contracts\").SerializableValue | undefined>",
754
754
  "parameters": [
755
755
  {
756
756
  "name": "context",
@@ -771,7 +771,7 @@
771
771
  "description": null
772
772
  }
773
773
  ],
774
- "returnType": "Promise<BindingValue | undefined>",
774
+ "returnType": "Promise<import(\"@ankhorage/contracts\").SerializableValue | undefined>",
775
775
  "returnDescription": null
776
776
  }
777
777
  ],
@@ -1334,7 +1334,7 @@
1334
1334
  {
1335
1335
  "name": "operationResults",
1336
1336
  "kind": "property",
1337
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
1337
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
1338
1338
  "required": false,
1339
1339
  "description": null
1340
1340
  },
@@ -1374,7 +1374,7 @@
1374
1374
  {
1375
1375
  "name": "operationResults",
1376
1376
  "kind": "property",
1377
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
1377
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
1378
1378
  "required": false,
1379
1379
  "description": null
1380
1380
  },
@@ -1470,7 +1470,7 @@
1470
1470
  "modulePath": "src/runtimeApiSelection.ts",
1471
1471
  "sourceLocation": {
1472
1472
  "filePath": "src/runtimeApiSelection.ts",
1473
- "line": 9,
1473
+ "line": 10,
1474
1474
  "column": 1
1475
1475
  },
1476
1476
  "exportPaths": ["src/index.ts"],
@@ -1581,7 +1581,7 @@
1581
1581
  {
1582
1582
  "name": "input",
1583
1583
  "kind": "property",
1584
- "type": "BindingValue | undefined",
1584
+ "type": "import(\"@ankhorage/contracts\").SerializableValue | undefined",
1585
1585
  "required": false,
1586
1586
  "description": null
1587
1587
  },
@@ -1711,7 +1711,7 @@
1711
1711
  {
1712
1712
  "name": "apis",
1713
1713
  "kind": "property",
1714
- "type": "ApiDefinitionList | undefined",
1714
+ "type": "Readonly<Record<string, ApiDefinition>> | undefined",
1715
1715
  "required": false,
1716
1716
  "description": null
1717
1717
  },
@@ -1753,7 +1753,7 @@
1753
1753
  {
1754
1754
  "name": "operationResults",
1755
1755
  "kind": "property",
1756
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
1756
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
1757
1757
  "required": false,
1758
1758
  "description": null
1759
1759
  },
@@ -1793,7 +1793,7 @@
1793
1793
  {
1794
1794
  "name": "apis",
1795
1795
  "kind": "property",
1796
- "type": "ApiDefinitionList | undefined",
1796
+ "type": "Readonly<Record<string, ApiDefinition>> | undefined",
1797
1797
  "required": false,
1798
1798
  "description": null
1799
1799
  },
@@ -1828,7 +1828,7 @@
1828
1828
  {
1829
1829
  "name": "operationResults",
1830
1830
  "kind": "property",
1831
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
1831
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
1832
1832
  "required": false,
1833
1833
  "description": null
1834
1834
  },
@@ -1917,7 +1917,7 @@
1917
1917
  {
1918
1918
  "name": "apis",
1919
1919
  "kind": "property",
1920
- "type": "ApiDefinitionList | undefined",
1920
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ApiDefinition>> | undefined",
1921
1921
  "required": false,
1922
1922
  "description": null
1923
1923
  },
@@ -1980,7 +1980,7 @@
1980
1980
  {
1981
1981
  "name": "operationResults",
1982
1982
  "kind": "property",
1983
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
1983
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
1984
1984
  "required": false,
1985
1985
  "description": null
1986
1986
  },
@@ -2350,7 +2350,7 @@
2350
2350
  {
2351
2351
  "name": "operationResults",
2352
2352
  "kind": "property",
2353
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
2353
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
2354
2354
  "required": false,
2355
2355
  "description": null
2356
2356
  },
@@ -2608,7 +2608,7 @@
2608
2608
  {
2609
2609
  "name": "initialState",
2610
2610
  "kind": "property",
2611
- "type": "Readonly<Record<string, StateValue>> | undefined",
2611
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue>> | undefined",
2612
2612
  "required": false,
2613
2613
  "description": null
2614
2614
  }
@@ -2701,7 +2701,7 @@
2701
2701
  {
2702
2702
  "name": "apis",
2703
2703
  "kind": "property",
2704
- "type": "ApiDefinitionList | undefined",
2704
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ApiDefinition>> | undefined",
2705
2705
  "required": false,
2706
2706
  "description": null
2707
2707
  },
@@ -2785,7 +2785,7 @@
2785
2785
  {
2786
2786
  "name": "operationResults",
2787
2787
  "kind": "property",
2788
- "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").BindingValue | undefined>> | undefined",
2788
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
2789
2789
  "required": false,
2790
2790
  "description": null
2791
2791
  },
@@ -2891,7 +2891,7 @@
2891
2891
  {
2892
2892
  "name": "apis",
2893
2893
  "kind": "property",
2894
- "type": "ApiDefinitionList | undefined",
2894
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").ApiDefinition>> | undefined",
2895
2895
  "required": false,
2896
2896
  "description": null
2897
2897
  },
@@ -2975,7 +2975,7 @@
2975
2975
  {
2976
2976
  "name": "operationResults",
2977
2977
  "kind": "property",
2978
- "type": "Readonly<Record<string, BindingValue | undefined>> | undefined",
2978
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>> | undefined",
2979
2979
  "required": false,
2980
2980
  "description": null
2981
2981
  },
@@ -3166,7 +3166,7 @@
3166
3166
  {
3167
3167
  "name": "operationResults",
3168
3168
  "kind": "property",
3169
- "type": "Readonly<Record<string, BindingValue | undefined>>",
3169
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>>",
3170
3170
  "required": true,
3171
3171
  "description": null
3172
3172
  }
@@ -3206,7 +3206,7 @@
3206
3206
  {
3207
3207
  "name": "operationResults",
3208
3208
  "kind": "property",
3209
- "type": "Readonly<Record<string, BindingValue | undefined>>",
3209
+ "type": "Readonly<Record<string, import(\"@ankhorage/contracts\").SerializableValue | undefined>>",
3210
3210
  "required": true,
3211
3211
  "description": null
3212
3212
  },
@@ -3445,18 +3445,18 @@
3445
3445
  "modulePath": "src/runtimeApiSelection.ts",
3446
3446
  "sourceLocation": {
3447
3447
  "filePath": "src/runtimeApiSelection.ts",
3448
- "line": 14,
3448
+ "line": 15,
3449
3449
  "column": 1
3450
3450
  },
3451
3451
  "exportPaths": ["src/index.ts"],
3452
3452
  "relatedSymbols": [],
3453
3453
  "signatures": [
3454
3454
  {
3455
- "label": "(operation: BindingOperationRef, apis: ApiDefinitionList | undefined) => readonly DataSourceDiagnostic[]",
3455
+ "label": "(operation: BindingOperationRef, apis: Readonly<Record<string, ApiDefinition>> | undefined) => readonly DataSourceDiagnostic[]",
3456
3456
  "parameters": [
3457
3457
  {
3458
3458
  "name": "apis",
3459
- "type": "ApiDefinitionList | undefined",
3459
+ "type": "Readonly<Record<string, ApiDefinition>> | undefined",
3460
3460
  "required": true,
3461
3461
  "description": null
3462
3462
  },