@ankhorage/runtime 3.0.59 → 4.0.3

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":"runtimeManifest.js","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAuDlE,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;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC;AAC9B,CAAC","sourcesContent":["export const RUNTIME_CAPABILITIES = [\n 'runtime.render',\n 'runtime.actions',\n 'runtime.bindings',\n 'runtime.adapters',\n] as const;\n\nexport const RUNTIME_MANIFEST_KIND = 'ankhorage-runtime-manifest';\n\nexport type RuntimeCapability = (typeof RUNTIME_CAPABILITIES)[number];\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?: RuntimeCapability;\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\nexport function listRuntimeCapabilities(): readonly RuntimeCapability[] {\n return RUNTIME_CAPABILITIES;\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/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 +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;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
+ {"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,4 +1,5 @@
1
1
  import { isMediaAssetReference } from '@ankhorage/contracts';
2
+ import { isCapabilityId } from '@ankhorage/contracts/capabilities';
2
3
  import { resolveRuntimeBindings } from './runtimeBindings';
3
4
  function isRecord(value) {
4
5
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -11,13 +12,13 @@ function isPlainObject(value) {
11
12
  return prototype === Object.prototype || prototype === null;
12
13
  }
13
14
  function hasActionShape(value) {
14
- return (typeof value === 'object' && value !== null && 'type' in value && typeof value.type === 'string');
15
+ return isRecord(value) && isCapabilityId(value.type);
15
16
  }
16
17
  function isCallbackProp(value) {
17
18
  return typeof value === 'function';
18
19
  }
19
20
  function isNonEmptyActionId(value) {
20
- return typeof value === 'string' && value.trim().length > 0;
21
+ return isCapabilityId(value);
21
22
  }
22
23
  function createStringActionPayload(args) {
23
24
  if (args.length === 0) {
@@ -108,7 +109,7 @@ export function wrapRuntimeActionProps(args) {
108
109
  return;
109
110
  }
110
111
  if (isNonEmptyActionId(value)) {
111
- const actionId = value.trim();
112
+ const actionId = value;
112
113
  wrappedProps[key] = (...handlerArgs) => {
113
114
  handleAction({
114
115
  type: actionId,
@@ -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';\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"]}
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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/runtime",
3
- "version": "3.0.59",
3
+ "version": "4.0.3",
4
4
  "description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -31,6 +31,8 @@
31
31
  "types": "./dist/index.d.ts",
32
32
  "exports": {
33
33
  ".": {
34
+ "react-native": "./dist/index.js",
35
+ "browser": "./dist/index.js",
34
36
  "types": "./dist/index.d.ts",
35
37
  "import": "./dist/index.js"
36
38
  },
@@ -38,7 +40,11 @@
38
40
  "types": "./dist/bindings.d.ts",
39
41
  "import": "./dist/bindings.js"
40
42
  },
41
- "./package.json": "./package.json"
43
+ "./package.json": "./package.json",
44
+ "./capabilities": {
45
+ "types": "./dist/capabilities/index.d.ts",
46
+ "import": "./dist/capabilities/index.js"
47
+ }
42
48
  },
43
49
  "files": [
44
50
  "dist",
@@ -50,7 +56,66 @@
50
56
  "ankh": {
51
57
  "category": "runtime",
52
58
  "provider": null,
53
- "capabilities": []
59
+ "capabilities": [
60
+ {
61
+ "id": "runtime.render",
62
+ "owner": "@ankhorage/runtime",
63
+ "access": [
64
+ "invoke"
65
+ ],
66
+ "binding": {
67
+ "kind": "action",
68
+ "bindableAs": [
69
+ "target"
70
+ ]
71
+ },
72
+ "label": "Render runtime"
73
+ },
74
+ {
75
+ "id": "runtime.actions",
76
+ "owner": "@ankhorage/runtime",
77
+ "access": [
78
+ "invoke"
79
+ ],
80
+ "binding": {
81
+ "kind": "action",
82
+ "bindableAs": [
83
+ "target"
84
+ ]
85
+ },
86
+ "label": "Execute runtime actions"
87
+ },
88
+ {
89
+ "id": "runtime.bindings",
90
+ "owner": "@ankhorage/runtime",
91
+ "access": [
92
+ "read",
93
+ "write"
94
+ ],
95
+ "binding": {
96
+ "kind": "state",
97
+ "bindableAs": [
98
+ "source",
99
+ "target"
100
+ ]
101
+ },
102
+ "label": "Runtime bindings"
103
+ },
104
+ {
105
+ "id": "runtime.adapters",
106
+ "owner": "@ankhorage/runtime",
107
+ "access": [
108
+ "read"
109
+ ],
110
+ "binding": {
111
+ "kind": "context",
112
+ "bindableAs": [
113
+ "source"
114
+ ]
115
+ },
116
+ "label": "Runtime adapters"
117
+ }
118
+ ]
54
119
  },
55
120
  "scripts": {
56
121
  "build": "rm -rf dist tsconfig.tsbuildinfo tsconfig.build.tsbuildinfo && bun x tsc -p tsconfig.build.json",
@@ -67,9 +132,9 @@
67
132
  "knip:check": "ankhorage-knip"
68
133
  },
69
134
  "dependencies": {
70
- "@ankhorage/contracts": "^22.8.99",
71
- "@ankhorage/data-sources": "^2.0.31",
72
- "@ankhorage/utility": "^1.9.82"
135
+ "@ankhorage/contracts": "^24.1.0",
136
+ "@ankhorage/data-sources": "^2.0.38",
137
+ "@ankhorage/utility": "^1.9.85"
73
138
  },
74
139
  "peerDependencies": {
75
140
  "react": ">=19.2.0 <20",
@@ -82,8 +147,8 @@
82
147
  }
83
148
  },
84
149
  "devDependencies": {
85
- "@ankhorage/devtools": "^2.1.2",
86
- "@ankhorage/paradox": "^0.2.27",
150
+ "@ankhorage/devtools": "^2.1.19",
151
+ "@ankhorage/paradox": "^0.2.28",
87
152
  "@types/bun": "^1.4.2",
88
153
  "@types/node": "^26.6.4",
89
154
  "@types/react": "^19.3.0",
@@ -1,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="97" height="20" role="img" aria-label="npm: v3.0.59">
2
- <title>npm: v3.0.59</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v4.0.3">
2
+ <title>npm: v4.0.3</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">v3.0.59</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.3</text>
7
7
  </svg>
@@ -52,7 +52,7 @@ Export paths: `src/index.ts`
52
52
 
53
53
  ## RuntimeRendererConfigProvider
54
54
 
55
- Source: `src/RuntimeRendererConfig.tsx:164:1`
55
+ Source: `src/RuntimeRendererConfig.tsx:167:1`
56
56
 
57
57
  Export paths: `src/index.ts`
58
58
 
@@ -9,6 +9,8 @@ graph TD
9
9
  module_src_bindings_test_ts --> module_src_bindings_ts
10
10
  module_src_bindings_ts["src/bindings.ts"]
11
11
  package__ankhorage_runtime -.-> module_src_bindings_ts
12
+ module_src_capabilities_index_ts["src/capabilities/index.ts"]
13
+ package__ankhorage_runtime -.-> module_src_capabilities_index_ts
12
14
  module_src_componentRegistry_ts["src/componentRegistry.ts"]
13
15
  package__ankhorage_runtime -.-> module_src_componentRegistry_ts
14
16
  module_src_index_ts["src/index.ts"]
@@ -105,6 +107,7 @@ graph TD
105
107
  module_src_runtimeNodeProps_test_ts["src/runtimeNodeProps.test.ts"]
106
108
  package__ankhorage_runtime -.-> module_src_runtimeNodeProps_test_ts
107
109
  module_src_runtimeNodeProps_test_ts --> module_src_runtimeNodeProps_ts
110
+ module_src_runtimeNodeProps_test_ts --> module_src_RuntimeRendererConfig_tsx
108
111
  module_src_runtimeNodeProps_ts["src/runtimeNodeProps.ts"]
109
112
  package__ankhorage_runtime -.-> module_src_runtimeNodeProps_ts
110
113
  module_src_runtimeNodeProps_ts --> module_src_runtimeBindings_ts
@@ -193,4 +196,5 @@ graph TD
193
196
  package__ankhorage_runtime -.-> module_tests_reactNativeWebCompatibility_test_ts
194
197
  module_tests_runtime_test_ts["tests/runtime.test.ts"]
195
198
  package__ankhorage_runtime -.-> module_tests_runtime_test_ts
199
+ module_tests_runtime_test_ts --> module_src_capabilities_index_ts
196
200
  module_tests_runtime_test_ts --> module_src_runtimeManifest_ts
@@ -2,6 +2,7 @@ graph LR
2
2
  module_paradox_config_ts["paradox.config.ts"]
3
3
  module_src_bindings_test_ts["src/bindings.test.ts"]
4
4
  module_src_bindings_ts["src/bindings.ts"]
5
+ module_src_capabilities_index_ts["src/capabilities/index.ts"]
5
6
  module_src_componentRegistry_ts["src/componentRegistry.ts"]
6
7
  module_src_index_ts["src/index.ts"]
7
8
  module_src_ManifestContext_tsx["src/ManifestContext.tsx"]
@@ -211,8 +212,6 @@ graph LR
211
212
  export_RuntimeBindingResolutionContext -.-> export_RuntimeBindingOperationExecutor
212
213
  export_RuntimeBindingResolutionResult["RuntimeBindingResolutionResult"]
213
214
  module_src_runtimeBindings_ts --> export_RuntimeBindingResolutionResult
214
- export_RuntimeCapability["RuntimeCapability"]
215
- module_src_runtimeManifest_ts --> export_RuntimeCapability
216
215
  export_RuntimeComponentEventDispatchArgs["RuntimeComponentEventDispatchArgs"]
217
216
  module_src_runtimeActionRegistry_ts --> export_RuntimeComponentEventDispatchArgs
218
217
  export_RuntimeComponentEventDispatchArgs -.-> export_RuntimeActionHandler
@@ -272,7 +271,6 @@ graph LR
272
271
  export_RuntimeRendererConfig["RuntimeRendererConfig"]
273
272
  module_src_RuntimeRendererConfig_tsx --> export_RuntimeRendererConfig
274
273
  export_RuntimeRendererConfig -.-> export_RuntimeActionHandler
275
- export_RuntimeRendererConfig -.-> export_RuntimeActionHandlers
276
274
  export_RuntimeRendererConfig -.-> export_RuntimeBindingOperationExecutor
277
275
  export_RuntimeRendererConfig -.-> export_RuntimeBindingOperationResultWriter
278
276
  export_RuntimeRendererConfig -.-> export_RuntimeEventOperationLifecycle
@@ -2,6 +2,7 @@ graph LR
2
2
  module_paradox_config_ts["paradox.config.ts"]
3
3
  module_src_bindings_test_ts["src/bindings.test.ts"]
4
4
  module_src_bindings_ts["src/bindings.ts"]
5
+ module_src_capabilities_index_ts["src/capabilities/index.ts"]
5
6
  module_src_componentRegistry_ts["src/componentRegistry.ts"]
6
7
  module_src_index_ts["src/index.ts"]
7
8
  module_src_ManifestContext_tsx["src/ManifestContext.tsx"]
@@ -90,6 +91,7 @@ graph LR
90
91
  module_src_runtimeMediaCache_tsx --> module_src_runtimeMedia_ts
91
92
  module_src_runtimeMediaConfig_test_ts --> module_src_RuntimeRendererConfig_tsx
92
93
  module_src_runtimeNodeProps_test_ts --> module_src_runtimeNodeProps_ts
94
+ module_src_runtimeNodeProps_test_ts --> module_src_RuntimeRendererConfig_tsx
93
95
  module_src_runtimeNodeProps_ts --> module_src_runtimeBindings_ts
94
96
  module_src_runtimeNodeProps_ts --> module_src_RuntimeRendererConfig_tsx
95
97
  module_src_RuntimeRenderer_test_ts --> module_src_runtimeRepeatEmptyState_ts
@@ -136,4 +138,5 @@ graph LR
136
138
  module_src_runtimeStateAdapterConfig_test_ts --> module_src_RuntimeRendererConfig_tsx
137
139
  module_src_useRuntimeMediaProps_ts --> module_src_runtimeMedia_ts
138
140
  module_tests_reactNativeWebCompatibility_fixture_tsx --> module_src_RuntimeRenderer_tsx
141
+ module_tests_runtime_test_ts --> module_src_capabilities_index_ts
139
142
  module_tests_runtime_test_ts --> module_src_runtimeManifest_ts
@@ -32,7 +32,7 @@
32
32
  "modulePath": "src/RuntimeRendererConfig.tsx",
33
33
  "sourceLocation": {
34
34
  "filePath": "src/RuntimeRendererConfig.tsx",
35
- "line": 95,
35
+ "line": 98,
36
36
  "column": 1
37
37
  },
38
38
  "exportPaths": [
@@ -76,7 +76,7 @@
76
76
  "modulePath": "src/RuntimeRendererConfig.tsx",
77
77
  "sourceLocation": {
78
78
  "filePath": "src/RuntimeRendererConfig.tsx",
79
- "line": 80,
79
+ "line": 83,
80
80
  "column": 1
81
81
  },
82
82
  "exportPaths": [
@@ -120,7 +120,7 @@
120
120
  "modulePath": "src/runtimeActionRegistry.ts",
121
121
  "sourceLocation": {
122
122
  "filePath": "src/runtimeActionRegistry.ts",
123
- "line": 223,
123
+ "line": 234,
124
124
  "column": 1
125
125
  },
126
126
  "exportPaths": [
@@ -307,7 +307,7 @@
307
307
  "modulePath": "src/runtimeActionRegistry.ts",
308
308
  "sourceLocation": {
309
309
  "filePath": "src/runtimeActionRegistry.ts",
310
- "line": 71,
310
+ "line": 72,
311
311
  "column": 1
312
312
  },
313
313
  "exportPaths": [
@@ -585,7 +585,7 @@
585
585
  "modulePath": "src/runtimeActionRegistry.ts",
586
586
  "sourceLocation": {
587
587
  "filePath": "src/runtimeActionRegistry.ts",
588
- "line": 109,
588
+ "line": 110,
589
589
  "column": 1
590
590
  },
591
591
  "exportPaths": [
@@ -824,7 +824,7 @@
824
824
  "modulePath": "src/RuntimeRendererConfig.tsx",
825
825
  "sourceLocation": {
826
826
  "filePath": "src/RuntimeRendererConfig.tsx",
827
- "line": 113,
827
+ "line": 116,
828
828
  "column": 1
829
829
  },
830
830
  "exportPaths": [
@@ -956,7 +956,7 @@
956
956
  "modulePath": "src/runtimeActionRegistry.ts",
957
957
  "sourceLocation": {
958
958
  "filePath": "src/runtimeActionRegistry.ts",
959
- "line": 237,
959
+ "line": 248,
960
960
  "column": 1
961
961
  },
962
962
  "exportPaths": [
@@ -1000,7 +1000,7 @@
1000
1000
  "modulePath": "src/runtimeActionRegistry.ts",
1001
1001
  "sourceLocation": {
1002
1002
  "filePath": "src/runtimeActionRegistry.ts",
1003
- "line": 248,
1003
+ "line": 259,
1004
1004
  "column": 1
1005
1005
  },
1006
1006
  "exportPaths": [
@@ -1290,7 +1290,7 @@
1290
1290
  "isReadme": false,
1291
1291
  "see": [],
1292
1292
  "security": [],
1293
- "kind": "unknown",
1293
+ "kind": "type",
1294
1294
  "modulePath": "src/RuntimeRendererConfig.tsx",
1295
1295
  "sourceLocation": {
1296
1296
  "filePath": "src/RuntimeRendererConfig.tsx",
@@ -1302,7 +1302,22 @@
1302
1302
  ],
1303
1303
  "relatedSymbols": [],
1304
1304
  "signatures": [],
1305
- "members": [],
1305
+ "members": [
1306
+ {
1307
+ "name": "payload",
1308
+ "kind": "property",
1309
+ "type": "object | undefined",
1310
+ "required": false,
1311
+ "description": null
1312
+ },
1313
+ {
1314
+ "name": "type",
1315
+ "kind": "property",
1316
+ "type": "`${string}.${string}`",
1317
+ "required": true,
1318
+ "description": null
1319
+ }
1320
+ ],
1306
1321
  "structuredRows": []
1307
1322
  },
1308
1323
  {
@@ -1316,7 +1331,7 @@
1316
1331
  "modulePath": "src/runtimeManifest.ts",
1317
1332
  "sourceLocation": {
1318
1333
  "filePath": "src/runtimeManifest.ts",
1319
- "line": 24,
1334
+ "line": 17,
1320
1335
  "column": 1
1321
1336
  },
1322
1337
  "exportPaths": [
@@ -1328,7 +1343,7 @@
1328
1343
  {
1329
1344
  "name": "capability",
1330
1345
  "kind": "property",
1331
- "type": "\"runtime.render\" | \"runtime.actions\" | \"runtime.bindings\" | \"runtime.adapters\" | undefined",
1346
+ "type": "`${string}.${string}` | undefined",
1332
1347
  "required": false,
1333
1348
  "description": null
1334
1349
  },
@@ -1367,7 +1382,7 @@
1367
1382
  "modulePath": "src/RuntimeRendererConfig.tsx",
1368
1383
  "sourceLocation": {
1369
1384
  "filePath": "src/RuntimeRendererConfig.tsx",
1370
- "line": 49,
1385
+ "line": 52,
1371
1386
  "column": 1
1372
1387
  },
1373
1388
  "exportPaths": [
@@ -1389,7 +1404,7 @@
1389
1404
  "modulePath": "src/RuntimeRendererConfig.tsx",
1390
1405
  "sourceLocation": {
1391
1406
  "filePath": "src/RuntimeRendererConfig.tsx",
1392
- "line": 47,
1407
+ "line": 50,
1393
1408
  "column": 1
1394
1409
  },
1395
1410
  "exportPaths": [
@@ -1464,7 +1479,7 @@
1464
1479
  "modulePath": "src/RuntimeRendererConfig.tsx",
1465
1480
  "sourceLocation": {
1466
1481
  "filePath": "src/RuntimeRendererConfig.tsx",
1467
- "line": 48,
1482
+ "line": 51,
1468
1483
  "column": 1
1469
1484
  },
1470
1485
  "exportPaths": [
@@ -1486,7 +1501,7 @@
1486
1501
  "modulePath": "src/runtimeActionRegistry.ts",
1487
1502
  "sourceLocation": {
1488
1503
  "filePath": "src/runtimeActionRegistry.ts",
1489
- "line": 34,
1504
+ "line": 35,
1490
1505
  "column": 1
1491
1506
  },
1492
1507
  "exportPaths": [
@@ -1508,7 +1523,7 @@
1508
1523
  {
1509
1524
  "name": "registerActionHandler",
1510
1525
  "kind": "method",
1511
- "type": "(type: string, handler: RuntimeActionHandler) => () => void",
1526
+ "type": "(type: Capability[\"id\"], handler: RuntimeActionHandler) => () => void",
1512
1527
  "required": true,
1513
1528
  "description": null
1514
1529
  }
@@ -1526,7 +1541,7 @@
1526
1541
  "modulePath": "src/runtimeActionRegistry.ts",
1527
1542
  "sourceLocation": {
1528
1543
  "filePath": "src/runtimeActionRegistry.ts",
1529
- "line": 45,
1544
+ "line": 46,
1530
1545
  "column": 1
1531
1546
  },
1532
1547
  "exportPaths": [
@@ -1577,7 +1592,7 @@
1577
1592
  "modulePath": "src/runtimeActionRegistry.ts",
1578
1593
  "sourceLocation": {
1579
1594
  "filePath": "src/runtimeActionRegistry.ts",
1580
- "line": 39,
1595
+ "line": 40,
1581
1596
  "column": 1
1582
1597
  },
1583
1598
  "exportPaths": [
@@ -1621,7 +1636,7 @@
1621
1636
  "modulePath": "src/runtimeManifest.ts",
1622
1637
  "sourceLocation": {
1623
1638
  "filePath": "src/runtimeManifest.ts",
1624
- "line": 39,
1639
+ "line": 32,
1625
1640
  "column": 1
1626
1641
  },
1627
1642
  "exportPaths": [
@@ -1739,7 +1754,7 @@
1739
1754
  "modulePath": "src/runtimeManifest.ts",
1740
1755
  "sourceLocation": {
1741
1756
  "filePath": "src/runtimeManifest.ts",
1742
- "line": 31,
1757
+ "line": 24,
1743
1758
  "column": 1
1744
1759
  },
1745
1760
  "exportPaths": [
@@ -2153,28 +2168,6 @@
2153
2168
  ],
2154
2169
  "structuredRows": []
2155
2170
  },
2156
- {
2157
- "name": "RuntimeCapability",
2158
- "title": null,
2159
- "description": null,
2160
- "isReadme": false,
2161
- "see": [],
2162
- "security": [],
2163
- "kind": "unknown",
2164
- "modulePath": "src/runtimeManifest.ts",
2165
- "sourceLocation": {
2166
- "filePath": "src/runtimeManifest.ts",
2167
- "line": 10,
2168
- "column": 1
2169
- },
2170
- "exportPaths": [
2171
- "src/index.ts"
2172
- ],
2173
- "relatedSymbols": [],
2174
- "signatures": [],
2175
- "members": [],
2176
- "structuredRows": []
2177
- },
2178
2171
  {
2179
2172
  "name": "RuntimeComponentEventDispatchArgs",
2180
2173
  "title": null,
@@ -2186,7 +2179,7 @@
2186
2179
  "modulePath": "src/runtimeActionRegistry.ts",
2187
2180
  "sourceLocation": {
2188
2181
  "filePath": "src/runtimeActionRegistry.ts",
2189
- "line": 49,
2182
+ "line": 50,
2190
2183
  "column": 1
2191
2184
  },
2192
2185
  "exportPaths": [
@@ -2394,7 +2387,7 @@
2394
2387
  "modulePath": "src/runtimeManifest.ts",
2395
2388
  "sourceLocation": {
2396
2389
  "filePath": "src/runtimeManifest.ts",
2397
- "line": 12,
2390
+ "line": 5,
2398
2391
  "column": 1
2399
2392
  },
2400
2393
  "exportPaths": [
@@ -2633,7 +2626,7 @@
2633
2626
  "modulePath": "src/runtimeActionRegistry.ts",
2634
2627
  "sourceLocation": {
2635
2628
  "filePath": "src/runtimeActionRegistry.ts",
2636
- "line": 61,
2629
+ "line": 62,
2637
2630
  "column": 1
2638
2631
  },
2639
2632
  "exportPaths": [
@@ -2714,7 +2707,7 @@
2714
2707
  "modulePath": "src/runtimeManifest.ts",
2715
2708
  "sourceLocation": {
2716
2709
  "filePath": "src/runtimeManifest.ts",
2717
- "line": 45,
2710
+ "line": 38,
2718
2711
  "column": 1
2719
2712
  },
2720
2713
  "exportPaths": [
@@ -2792,7 +2785,7 @@
2792
2785
  "modulePath": "src/runtimeManifest.ts",
2793
2786
  "sourceLocation": {
2794
2787
  "filePath": "src/runtimeManifest.ts",
2795
- "line": 18,
2788
+ "line": 11,
2796
2789
  "column": 1
2797
2790
  },
2798
2791
  "exportPaths": [
@@ -2836,7 +2829,7 @@
2836
2829
  "modulePath": "src/runtimeManifest.ts",
2837
2830
  "sourceLocation": {
2838
2831
  "filePath": "src/runtimeManifest.ts",
2839
- "line": 55,
2832
+ "line": 48,
2840
2833
  "column": 1
2841
2834
  },
2842
2835
  "exportPaths": [
@@ -3042,7 +3035,7 @@
3042
3035
  "modulePath": "src/RuntimeRendererConfig.tsx",
3043
3036
  "sourceLocation": {
3044
3037
  "filePath": "src/RuntimeRendererConfig.tsx",
3045
- "line": 51,
3038
+ "line": 54,
3046
3039
  "column": 1
3047
3040
  },
3048
3041
  "exportPaths": [
@@ -3050,7 +3043,6 @@
3050
3043
  ],
3051
3044
  "relatedSymbols": [
3052
3045
  "RuntimeActionHandler",
3053
- "RuntimeActionHandlers",
3054
3046
  "RuntimeBindingOperationExecutor",
3055
3047
  "RuntimeBindingOperationResultWriter",
3056
3048
  "RuntimeEventOperationLifecycle",
@@ -3064,7 +3056,7 @@
3064
3056
  {
3065
3057
  "name": "actionHandlers",
3066
3058
  "kind": "property",
3067
- "type": "RuntimeActionHandlers | undefined",
3059
+ "type": "Partial<Record<`${string}.${string}`, RuntimeActionHandler>> | undefined",
3068
3060
  "required": false,
3069
3061
  "description": null
3070
3062
  },
@@ -3215,7 +3207,7 @@
3215
3207
  "modulePath": "src/RuntimeRendererConfig.tsx",
3216
3208
  "sourceLocation": {
3217
3209
  "filePath": "src/RuntimeRendererConfig.tsx",
3218
- "line": 164,
3210
+ "line": 167,
3219
3211
  "column": 1
3220
3212
  },
3221
3213
  "exportPaths": [
@@ -3811,7 +3803,7 @@
3811
3803
  "modulePath": "src/RuntimeRendererConfig.tsx",
3812
3804
  "sourceLocation": {
3813
3805
  "filePath": "src/RuntimeRendererConfig.tsx",
3814
- "line": 177,
3806
+ "line": 180,
3815
3807
  "column": 1
3816
3808
  },
3817
3809
  "exportPaths": [
@@ -3925,7 +3917,7 @@
3925
3917
  "modulePath": "src/runtimeActionRegistry.ts",
3926
3918
  "sourceLocation": {
3927
3919
  "filePath": "src/runtimeActionRegistry.ts",
3928
- "line": 186,
3920
+ "line": 197,
3929
3921
  "column": 1
3930
3922
  },
3931
3923
  "exportPaths": [