@ankhorage/runtime 3.0.59 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/README.md +1 -1
- package/dist/RuntimeRendererConfig.d.ts +6 -5
- package/dist/RuntimeRendererConfig.d.ts.map +1 -1
- package/dist/RuntimeRendererConfig.js.map +1 -1
- package/dist/capabilities/index.d.ts +38 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +43 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtimeActionRegistry.d.ts +2 -1
- package/dist/runtimeActionRegistry.d.ts.map +1 -1
- package/dist/runtimeActionRegistry.js +18 -4
- package/dist/runtimeActionRegistry.js.map +1 -1
- package/dist/runtimeManifest.d.ts +2 -4
- package/dist/runtimeManifest.d.ts.map +1 -1
- package/dist/runtimeManifest.js +0 -9
- package/dist/runtimeManifest.js.map +1 -1
- package/dist/runtimeNodeProps.d.ts.map +1 -1
- package/dist/runtimeNodeProps.js +4 -3
- package/dist/runtimeNodeProps.js.map +1 -1
- package/package.json +73 -8
- package/paradox/badges/npm.svg +4 -4
- package/paradox/components.md +1 -1
- package/paradox/diagrams/architecture-overview.mmd +4 -0
- package/paradox/diagrams/export-graph.mmd +1 -3
- package/paradox/diagrams/module-relationships.mmd +3 -0
- package/paradox/exports.json +47 -55
- package/paradox/exports.md +38 -37
- package/paradox/index.html +152 -125
- package/paradox/paradox.json +207 -141
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,92 @@
|
|
|
1
1
|
# @ankhorage/runtime
|
|
2
2
|
|
|
3
|
+
## 4.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f4befaa: Update dependencies: `@ankhorage/contracts`.
|
|
8
|
+
|
|
9
|
+
## 4.0.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 98fc815: Mark the renderer root export as React Native/browser-specific so standalone release verification continues to smoke-test only the headless Runtime entrypoints under Node/Bun.
|
|
14
|
+
|
|
15
|
+
## 4.0.2
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 277c55a: Adopt Contracts 24 capability binding semantics and publish canonical Runtime capability descriptors in package metadata.
|
|
20
|
+
- 277c55a: Update dependencies: `@ankhorage/contracts`, `@ankhorage/data-sources`.
|
|
21
|
+
|
|
22
|
+
## 4.0.1
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- 0b947f3: Update dependencies: `@ankhorage/data-sources`.
|
|
27
|
+
|
|
28
|
+
## 4.0.0
|
|
29
|
+
|
|
30
|
+
### Major Changes
|
|
31
|
+
|
|
32
|
+
- 254b3d3: Adopt the canonical Contracts capability descriptor, publish the Runtime CAPABILITIES catalog,
|
|
33
|
+
remove the Runtime-specific capability type and constants, and require namespaced capability ids
|
|
34
|
+
for runtime action dispatch.
|
|
35
|
+
|
|
36
|
+
## 3.0.68
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- 8f4ddee: Update dependencies: `@ankhorage/data-sources`.
|
|
41
|
+
|
|
42
|
+
## 3.0.67
|
|
43
|
+
|
|
44
|
+
### Patch Changes
|
|
45
|
+
|
|
46
|
+
- de6d287: Update dependencies: `@ankhorage/contracts`.
|
|
47
|
+
|
|
48
|
+
## 3.0.66
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- a995e97: Update dependencies: `@ankhorage/data-sources`.
|
|
53
|
+
|
|
54
|
+
## 3.0.65
|
|
55
|
+
|
|
56
|
+
### Patch Changes
|
|
57
|
+
|
|
58
|
+
- 690abf7: Update dependencies: `@ankhorage/contracts`.
|
|
59
|
+
|
|
60
|
+
## 3.0.64
|
|
61
|
+
|
|
62
|
+
### Patch Changes
|
|
63
|
+
|
|
64
|
+
- c0f8822: Update dependencies: `@ankhorage/utility`.
|
|
65
|
+
|
|
66
|
+
## 3.0.63
|
|
67
|
+
|
|
68
|
+
### Patch Changes
|
|
69
|
+
|
|
70
|
+
- d0f314f: Update dependencies: `@ankhorage/data-sources`.
|
|
71
|
+
|
|
72
|
+
## 3.0.62
|
|
73
|
+
|
|
74
|
+
### Patch Changes
|
|
75
|
+
|
|
76
|
+
- 164d69f: Update dependencies: `@ankhorage/contracts`, `@ankhorage/data-sources`, `@ankhorage/paradox`, `@ankhorage/utility`.
|
|
77
|
+
|
|
78
|
+
## 3.0.61
|
|
79
|
+
|
|
80
|
+
### Patch Changes
|
|
81
|
+
|
|
82
|
+
- fe9b06d: Update dependencies: `@ankhorage/contracts`.
|
|
83
|
+
|
|
84
|
+
## 3.0.60
|
|
85
|
+
|
|
86
|
+
### Patch Changes
|
|
87
|
+
|
|
88
|
+
- e564e96: Update dependencies: `@ankhorage/utility`.
|
|
89
|
+
|
|
3
90
|
## 3.0.59
|
|
4
91
|
|
|
5
92
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/runtime
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.
|
|
9
9
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ApiDefinitionRegistry, ComponentDataBindingRegistry, ComponentEventDto, DataSourceDiagnostic, DbAdapter, DbRealtimeAdapter, MediaAssetRegistry, StateAdapter, UiNode } from '@ankhorage/contracts';
|
|
2
|
+
import type { Capability } from '@ankhorage/contracts/capabilities';
|
|
2
3
|
import type { RuntimeNodePropsResolver } from '@ankhorage/contracts/runtime';
|
|
3
4
|
import React from 'react';
|
|
4
5
|
import type { ComponentRegistry } from './registry';
|
|
@@ -17,12 +18,12 @@ export interface RuntimeActionHandlerArgs {
|
|
|
17
18
|
node?: UiNode;
|
|
18
19
|
resolvedPayload?: object;
|
|
19
20
|
}
|
|
20
|
-
export
|
|
21
|
-
readonly type:
|
|
21
|
+
export interface RuntimeAction {
|
|
22
|
+
readonly type: Capability['id'];
|
|
22
23
|
readonly payload?: object;
|
|
23
|
-
}
|
|
24
|
+
}
|
|
24
25
|
export type RuntimeActionHandler = (args: RuntimeActionHandlerArgs) => Promise<void> | void;
|
|
25
|
-
export type RuntimeActionHandlers = Record<
|
|
26
|
+
export type RuntimeActionHandlers = Partial<Record<Capability['id'], RuntimeActionHandler>>;
|
|
26
27
|
export type RuntimeActionExecutor = RuntimeActionHandler;
|
|
27
28
|
export interface RuntimeRendererConfig {
|
|
28
29
|
disableActions?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeRendererConfig.d.ts","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"RuntimeRendererConfig.d.ts","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeRendererConfig.js","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeRendererConfig.js","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinitionRegistry,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataSourceDiagnostic,\n DbAdapter,\n DbRealtimeAdapter,\n MediaAssetRegistry,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport type { Capability } from '@ankhorage/contracts/capabilities';\nimport type { RuntimeNodePropsResolver } from '@ankhorage/contracts/runtime';\nimport React, { createContext, use } from 'react';\n\nimport type { ComponentRegistry } from './registry';\nimport type {\n RuntimeBindingOperationExecutor,\n RuntimeBindingOperationResultCache,\n RuntimeBindingOperationResultWriter,\n} from './runtimeBindings';\nimport type {\n RuntimeEventOperationLifecycle,\n RuntimeEventOperationState,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeMediaAssetResolver } from './runtimeMedia';\n\nexport type {\n RuntimeNodePropsResolver,\n RuntimeResolveNodePropsArgs,\n} from '@ankhorage/contracts/runtime';\n\nexport interface RuntimeRendererWrapArgs {\n node: UiNode;\n rendered: React.ReactNode;\n isRoot: boolean;\n}\n\nexport interface RuntimeActionHandlerArgs {\n action: RuntimeAction;\n event?: ComponentEventDto<string, object>;\n node?: UiNode;\n resolvedPayload?: object;\n}\n\nexport interface RuntimeAction {\n readonly type: Capability['id'];\n readonly payload?: object;\n}\nexport type RuntimeActionHandler = (args: RuntimeActionHandlerArgs) => Promise<void> | void;\nexport type RuntimeActionHandlers = Partial<Record<Capability['id'], RuntimeActionHandler>>;\nexport type RuntimeActionExecutor = RuntimeActionHandler;\n\nexport interface RuntimeRendererConfig {\n disableActions?: boolean;\n registry?: ComponentRegistry;\n wrapNode?: (args: RuntimeRendererWrapArgs) => React.ReactNode;\n resolveNodeProps?: RuntimeNodePropsResolver;\n resolveMediaAsset?: RuntimeMediaAssetResolver;\n mediaAssets?: MediaAssetRegistry;\n actionHandlers?: RuntimeActionHandlers;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n stateAdapter?: StateAdapter;\n bindingContext?: Record<string, unknown>;\n apis?: ApiDefinitionRegistry;\n dataBindings?: ComponentDataBindingRegistry;\n operationResults?: RuntimeBindingOperationResultCache;\n writeOperationResult?: RuntimeBindingOperationResultWriter;\n executeAction?: RuntimeActionExecutor;\n executeOperation?: RuntimeBindingOperationExecutor;\n onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n eventOperationState?: RuntimeEventOperationState;\n}\n\nconst EMPTY_RUNTIME_RENDERER_CONFIG: RuntimeRendererConfig = {};\n\nconst RuntimeRendererConfigContext = createContext<RuntimeRendererConfig>(\n EMPTY_RUNTIME_RENDERER_CONFIG,\n);\n\nexport function composeRuntimeRendererWrapNode(\n innerWrapNode?: RuntimeRendererConfig['wrapNode'],\n outerWrapNode?: RuntimeRendererConfig['wrapNode'],\n): RuntimeRendererConfig['wrapNode'] {\n if (!innerWrapNode) {\n return outerWrapNode;\n }\n\n if (!outerWrapNode) {\n return innerWrapNode;\n }\n\n return (args) => outerWrapNode({ ...args, rendered: innerWrapNode(args) });\n}\n\nexport function composeRuntimeNodePropsResolver(\n localResolver?: RuntimeRendererConfig['resolveNodeProps'],\n inheritedResolver?: RuntimeRendererConfig['resolveNodeProps'],\n): RuntimeRendererConfig['resolveNodeProps'] {\n if (!localResolver) {\n return inheritedResolver;\n }\n\n if (!inheritedResolver) {\n return localResolver;\n }\n\n return (args) => {\n const inheritedProps = inheritedResolver(args);\n return localResolver({ ...args, props: inheritedProps });\n };\n}\n\nexport function mergeRuntimeRendererConfig(\n localConfig: RuntimeRendererConfig | undefined,\n inheritedConfig: RuntimeRendererConfig | undefined,\n): RuntimeRendererConfig {\n if (!localConfig && !inheritedConfig) {\n return EMPTY_RUNTIME_RENDERER_CONFIG;\n }\n\n const actionHandlers = mergeRecordConfig(\n inheritedConfig?.actionHandlers,\n localConfig?.actionHandlers,\n );\n const bindingContext = mergeRecordConfig(\n inheritedConfig?.bindingContext,\n localConfig?.bindingContext,\n );\n const operationResults = mergeRecordConfig(\n inheritedConfig?.operationResults,\n localConfig?.operationResults,\n );\n\n return {\n disableActions:\n localConfig?.disableActions === true || inheritedConfig?.disableActions === true,\n registry: localConfig?.registry ?? inheritedConfig?.registry,\n wrapNode: composeRuntimeRendererWrapNode(localConfig?.wrapNode, inheritedConfig?.wrapNode),\n resolveNodeProps: composeRuntimeNodePropsResolver(\n localConfig?.resolveNodeProps,\n inheritedConfig?.resolveNodeProps,\n ),\n resolveMediaAsset: localConfig?.resolveMediaAsset ?? inheritedConfig?.resolveMediaAsset,\n mediaAssets: localConfig?.mediaAssets ?? inheritedConfig?.mediaAssets,\n actionHandlers,\n dbAdapter: localConfig?.dbAdapter ?? inheritedConfig?.dbAdapter,\n dbRealtimeAdapter: localConfig?.dbRealtimeAdapter ?? inheritedConfig?.dbRealtimeAdapter,\n stateAdapter: localConfig?.stateAdapter ?? inheritedConfig?.stateAdapter,\n bindingContext,\n apis: localConfig?.apis ?? inheritedConfig?.apis,\n dataBindings: localConfig?.dataBindings ?? inheritedConfig?.dataBindings,\n operationResults,\n writeOperationResult:\n localConfig?.writeOperationResult ?? inheritedConfig?.writeOperationResult,\n executeAction: localConfig?.executeAction ?? inheritedConfig?.executeAction,\n executeOperation: localConfig?.executeOperation ?? inheritedConfig?.executeOperation,\n onDiagnostics: localConfig?.onDiagnostics ?? inheritedConfig?.onDiagnostics,\n eventOperationLifecycle:\n localConfig?.eventOperationLifecycle ?? inheritedConfig?.eventOperationLifecycle,\n eventOperationState: localConfig?.eventOperationState ?? inheritedConfig?.eventOperationState,\n };\n}\n\nexport function RuntimeRendererConfigProvider(props: {\n value: RuntimeRendererConfig;\n children: React.ReactNode;\n}) {\n const { value, children } = props;\n const inheritedConfig = use(RuntimeRendererConfigContext);\n const mergedConfig = mergeRuntimeRendererConfig(value, inheritedConfig);\n\n return (\n <RuntimeRendererConfigContext value={mergedConfig}>{children}</RuntimeRendererConfigContext>\n );\n}\n\nexport function useRuntimeRendererConfig(): RuntimeRendererConfig {\n return use(RuntimeRendererConfigContext);\n}\n\nfunction mergeRecordConfig<TValue>(\n inherited: Readonly<Record<string, TValue>> | undefined,\n local: Readonly<Record<string, TValue>> | undefined,\n): Record<string, TValue> | undefined {\n if (!inherited && !local) return undefined;\n\n return {\n ...(inherited ?? {}),\n ...(local ?? {}),\n };\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const CAPABILITIES: readonly [{
|
|
2
|
+
readonly id: "runtime.render";
|
|
3
|
+
readonly owner: "@ankhorage/runtime";
|
|
4
|
+
readonly access: readonly ["invoke"];
|
|
5
|
+
readonly binding: {
|
|
6
|
+
readonly kind: "action";
|
|
7
|
+
readonly bindableAs: readonly ["target"];
|
|
8
|
+
};
|
|
9
|
+
readonly label: "Render runtime";
|
|
10
|
+
}, {
|
|
11
|
+
readonly id: "runtime.actions";
|
|
12
|
+
readonly owner: "@ankhorage/runtime";
|
|
13
|
+
readonly access: readonly ["invoke"];
|
|
14
|
+
readonly binding: {
|
|
15
|
+
readonly kind: "action";
|
|
16
|
+
readonly bindableAs: readonly ["target"];
|
|
17
|
+
};
|
|
18
|
+
readonly label: "Execute runtime actions";
|
|
19
|
+
}, {
|
|
20
|
+
readonly id: "runtime.bindings";
|
|
21
|
+
readonly owner: "@ankhorage/runtime";
|
|
22
|
+
readonly access: readonly ["read", "write"];
|
|
23
|
+
readonly binding: {
|
|
24
|
+
readonly kind: "state";
|
|
25
|
+
readonly bindableAs: readonly ["source", "target"];
|
|
26
|
+
};
|
|
27
|
+
readonly label: "Runtime bindings";
|
|
28
|
+
}, {
|
|
29
|
+
readonly id: "runtime.adapters";
|
|
30
|
+
readonly owner: "@ankhorage/runtime";
|
|
31
|
+
readonly access: readonly ["read"];
|
|
32
|
+
readonly binding: {
|
|
33
|
+
readonly kind: "context";
|
|
34
|
+
readonly bindableAs: readonly ["source"];
|
|
35
|
+
};
|
|
36
|
+
readonly label: "Runtime adapters";
|
|
37
|
+
}];
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCiB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const CAPABILITIES = [
|
|
2
|
+
{
|
|
3
|
+
id: 'runtime.render',
|
|
4
|
+
owner: '@ankhorage/runtime',
|
|
5
|
+
access: ['invoke'],
|
|
6
|
+
binding: {
|
|
7
|
+
kind: 'action',
|
|
8
|
+
bindableAs: ['target'],
|
|
9
|
+
},
|
|
10
|
+
label: 'Render runtime',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: 'runtime.actions',
|
|
14
|
+
owner: '@ankhorage/runtime',
|
|
15
|
+
access: ['invoke'],
|
|
16
|
+
binding: {
|
|
17
|
+
kind: 'action',
|
|
18
|
+
bindableAs: ['target'],
|
|
19
|
+
},
|
|
20
|
+
label: 'Execute runtime actions',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'runtime.bindings',
|
|
24
|
+
owner: '@ankhorage/runtime',
|
|
25
|
+
access: ['read', 'write'],
|
|
26
|
+
binding: {
|
|
27
|
+
kind: 'state',
|
|
28
|
+
bindableAs: ['source', 'target'],
|
|
29
|
+
},
|
|
30
|
+
label: 'Runtime bindings',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'runtime.adapters',
|
|
34
|
+
owner: '@ankhorage/runtime',
|
|
35
|
+
access: ['read'],
|
|
36
|
+
binding: {
|
|
37
|
+
kind: 'context',
|
|
38
|
+
bindableAs: ['source'],
|
|
39
|
+
},
|
|
40
|
+
label: 'Runtime adapters',
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;QACD,KAAK,EAAE,gBAAgB;KACxB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;QACD,KAAK,EAAE,yBAAyB;KACjC;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SACjC;QACD,KAAK,EAAE,kBAAkB;KAC1B;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;QACD,KAAK,EAAE,kBAAkB;KAC1B;CACuC,CAAC","sourcesContent":["import type { Capability } from '@ankhorage/contracts/capabilities';\n\nexport const CAPABILITIES = [\n {\n id: 'runtime.render',\n owner: '@ankhorage/runtime',\n access: ['invoke'],\n binding: {\n kind: 'action',\n bindableAs: ['target'],\n },\n label: 'Render runtime',\n },\n {\n id: 'runtime.actions',\n owner: '@ankhorage/runtime',\n access: ['invoke'],\n binding: {\n kind: 'action',\n bindableAs: ['target'],\n },\n label: 'Execute runtime actions',\n },\n {\n id: 'runtime.bindings',\n owner: '@ankhorage/runtime',\n access: ['read', 'write'],\n binding: {\n kind: 'state',\n bindableAs: ['source', 'target'],\n },\n label: 'Runtime bindings',\n },\n {\n id: 'runtime.adapters',\n owner: '@ankhorage/runtime',\n access: ['read'],\n binding: {\n kind: 'context',\n bindableAs: ['source'],\n },\n label: 'Runtime adapters',\n },\n] as const satisfies readonly Capability[];\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export { createDbPersistActionHandler, createDbPersistAdapterError, executeDbPer
|
|
|
14
14
|
export { dispatchRuntimeComponentEventWithReporting, type RuntimeEventDiagnosticsReporter, } from './runtimeEventExecution';
|
|
15
15
|
export type { RuntimeEventOperationInvocation, RuntimeEventOperationLifecycle, RuntimeEventOperationState, RuntimeEventOperationStatus, } from './runtimeEventOperationLifecycle';
|
|
16
16
|
export { createRuntimeEventOperationBindingContext, createRuntimeEventOperationLifecycle, IDLE_RUNTIME_EVENT_OPERATION_STATE, resolveRuntimeEventOperationErrorMessage, } from './runtimeEventOperationLifecycle';
|
|
17
|
-
export type { RuntimeActionDescriptor, RuntimeAdapterDescriptor, RuntimeBindingDescriptor,
|
|
17
|
+
export type { RuntimeActionDescriptor, RuntimeAdapterDescriptor, RuntimeBindingDescriptor, RuntimeDiagnostic, RuntimeManifest, RuntimeManifestConfig, RuntimeManifestInput, } from './runtimeManifest';
|
|
18
18
|
export type { RuntimeMediaAssetResolver, RuntimeMediaAssetResolverArgs, RuntimeResolvedMediaValue, } from './runtimeMedia';
|
|
19
19
|
export type { RuntimeRendererProps } from './RuntimeRenderer';
|
|
20
20
|
export { RuntimeRenderer } from './RuntimeRenderer';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EACV,oCAAoC,EACpC,sCAAsC,EACtC,+BAA+B,EAC/B,0BAA0B,EAC1B,kCAAkC,EAClC,mCAAmC,EACnC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0CAA0C,EAC1C,KAAK,+BAA+B,GACrC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQrD,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAY3E,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0CAA0C,GAE3C,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQrD,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAY3E,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0CAA0C,GAE3C,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,kCAAkC,CAAC;AAgB1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAQ1B,6BAA6B,EAG7B,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EACL,8CAA8C,EAC9C,mCAAmC,EACnC,oCAAoC,EACpC,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export {\n ManifestContext,\n ManifestProvider,\n useManifest,\n useManifestContext,\n useOptionalManifestContext,\n} from './ManifestContext';\nexport type { ComponentRegistry } from './registry';\nexport { createComponentRegistry } from './registry';\nexport type {\n RuntimeActionRegistry,\n RuntimeActionResolutionArgs,\n RuntimeActionResolutionScope,\n RuntimeComponentEventDispatchArgs,\n RuntimeEventPropWrapArgs,\n} from './runtimeActionRegistry';\nexport {\n createComponentEventFromHandlerArgs,\n createRuntimeActionRegistry,\n dispatchRuntimeComponentEvent,\n resolveRuntimeActionPayload,\n resolveRuntimeActionValue,\n wrapRuntimeEventProps,\n} from './runtimeActionRegistry';\nexport type { RuntimeApiOperationExecutorOptions } from './runtimeApiOperations';\nexport { createRuntimeApiOperationExecutor } from './runtimeApiOperations';\nexport type { RuntimeApiOperationSelection } from './runtimeApiSelection';\nexport { validateRuntimeBindingOperationRef } from './runtimeApiSelection';\nexport type {\n RuntimeBindingOperationExecutionArgs,\n RuntimeBindingOperationExecutionResult,\n RuntimeBindingOperationExecutor,\n RuntimeBindingOperationKey,\n RuntimeBindingOperationResultCache,\n RuntimeBindingOperationResultWriter,\n RuntimeBindingResolutionArgs,\n RuntimeBindingResolutionContext,\n RuntimeBindingResolutionResult,\n} from './runtimeBindings';\nexport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMap,\n resolveRuntimeBindings,\n resolveRuntimeBindingsAsync,\n resolveRuntimeBindingValue,\n resolveRuntimeBindingValueSync,\n} from './runtimeBindings';\nexport type {\n RuntimeDbPersistError,\n RuntimeDbPersistExecutionResult,\n RuntimeDbPersistResult,\n} from './runtimeDbPersist';\nexport {\n createDbPersistActionHandler,\n createDbPersistAdapterError,\n executeDbPersistAction,\n resolveDbPersistInput,\n} from './runtimeDbPersist';\nexport {\n dispatchRuntimeComponentEventWithReporting,\n type RuntimeEventDiagnosticsReporter,\n} from './runtimeEventExecution';\nexport type {\n RuntimeEventOperationInvocation,\n RuntimeEventOperationLifecycle,\n RuntimeEventOperationState,\n RuntimeEventOperationStatus,\n} from './runtimeEventOperationLifecycle';\nexport {\n createRuntimeEventOperationBindingContext,\n createRuntimeEventOperationLifecycle,\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n resolveRuntimeEventOperationErrorMessage,\n} from './runtimeEventOperationLifecycle';\nexport type {\n RuntimeActionDescriptor,\n RuntimeAdapterDescriptor,\n RuntimeBindingDescriptor,\n RuntimeDiagnostic,\n RuntimeManifest,\n RuntimeManifestConfig,\n RuntimeManifestInput,\n} from './runtimeManifest';\nexport type {\n RuntimeMediaAssetResolver,\n RuntimeMediaAssetResolverArgs,\n RuntimeResolvedMediaValue,\n} from './runtimeMedia';\nexport type { RuntimeRendererProps } from './RuntimeRenderer';\nexport { RuntimeRenderer } from './RuntimeRenderer';\nexport {\n composeRuntimeNodePropsResolver,\n composeRuntimeRendererWrapNode,\n mergeRuntimeRendererConfig,\n type RuntimeAction,\n type RuntimeActionExecutor,\n type RuntimeActionHandler,\n type RuntimeActionHandlerArgs,\n type RuntimeActionHandlers,\n type RuntimeNodePropsResolver,\n type RuntimeRendererConfig,\n RuntimeRendererConfigProvider,\n type RuntimeRendererWrapArgs,\n type RuntimeResolveNodePropsArgs,\n useRuntimeRendererConfig,\n} from './RuntimeRendererConfig';\nexport { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';\nexport type { RuntimeScreenProps } from './RuntimeScreen';\nexport { RuntimeScreen } from './RuntimeScreen';\nexport type {\n RuntimeScreenOperationLoaderExecutionResult,\n RuntimeScreenOperationLoaderState,\n} from './runtimeScreenLoaders';\nexport {\n createPendingRuntimeScreenOperationLoaderState,\n createRuntimeScreenLoaderRequestKey,\n executeRuntimeScreenOperationLoaders,\n resolveScreenOperationLoaders,\n useRuntimeScreenOperationLoaders,\n} from './runtimeScreenLoaders';\nexport type { RuntimeMemoryStateAdapterOptions } from './runtimeStateAdapter';\nexport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { ApiDefinitionRegistry, ComponentDataBindingRegistry, ComponentEventDto, DataSourceDiagnostic, UiNode } from '@ankhorage/contracts';
|
|
2
|
+
import { type Capability } from '@ankhorage/contracts/capabilities';
|
|
2
3
|
import { type RuntimeBindingOperationExecutor, type RuntimeBindingOperationResultCache, type RuntimeBindingOperationResultWriter } from './runtimeBindings';
|
|
3
4
|
import { type RuntimeEventOperationLifecycle } from './runtimeEventOperationLifecycle';
|
|
4
5
|
import type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';
|
|
5
6
|
type RuntimeEventPayload = Record<string, unknown>;
|
|
6
7
|
export interface RuntimeActionRegistry {
|
|
7
8
|
dispatchComponentEvent(args: RuntimeComponentEventDispatchArgs): Promise<void>;
|
|
8
|
-
registerActionHandler(type:
|
|
9
|
+
registerActionHandler(type: Capability['id'], handler: RuntimeActionHandler): () => void;
|
|
9
10
|
}
|
|
10
11
|
export interface RuntimeActionResolutionScope {
|
|
11
12
|
readonly context?: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeActionRegistry.d.ts","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAIrB,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EAGpB,MAAM,EACP,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtimeActionRegistry.d.ts","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isCapabilityId } from '@ankhorage/contracts/capabilities';
|
|
1
2
|
import { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';
|
|
2
3
|
import { createRuntimeBindingOperationKey, resolveBindingInputMap, } from './runtimeBindings';
|
|
3
4
|
import { resolveRuntimeEventOperationErrorMessage, } from './runtimeEventOperationLifecycle';
|
|
@@ -42,10 +43,19 @@ export async function dispatchRuntimeComponentEvent(args) {
|
|
|
42
43
|
if (!matchesBindingCondition(binding.when, resolutionArgs))
|
|
43
44
|
continue;
|
|
44
45
|
if (binding.target.kind === 'action') {
|
|
46
|
+
const capabilityId = resolveCapabilityId(binding.target.type);
|
|
47
|
+
if (capabilityId === null) {
|
|
48
|
+
diagnostics.push({
|
|
49
|
+
code: 'invalid-action-capability',
|
|
50
|
+
message: `Action '${binding.target.type}' is not a canonical namespaced capability id.`,
|
|
51
|
+
severity: 'error',
|
|
52
|
+
});
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
45
55
|
const resolvedPayload = await resolveObjectEventBindingInput(binding.input, resolutionArgs, diagnostics);
|
|
46
56
|
const action = resolvedPayload === undefined
|
|
47
|
-
? { type:
|
|
48
|
-
: { type:
|
|
57
|
+
? { type: capabilityId }
|
|
58
|
+
: { type: capabilityId, payload: resolvedPayload };
|
|
49
59
|
if (resolutionArgs.executeAction) {
|
|
50
60
|
await resolutionArgs.executeAction({
|
|
51
61
|
action,
|
|
@@ -55,7 +65,7 @@ export async function dispatchRuntimeComponentEvent(args) {
|
|
|
55
65
|
});
|
|
56
66
|
continue;
|
|
57
67
|
}
|
|
58
|
-
const handler = actionHandlers?.[
|
|
68
|
+
const handler = actionHandlers?.[capabilityId];
|
|
59
69
|
if (handler) {
|
|
60
70
|
await handler({
|
|
61
71
|
action,
|
|
@@ -67,7 +77,7 @@ export async function dispatchRuntimeComponentEvent(args) {
|
|
|
67
77
|
}
|
|
68
78
|
diagnostics.push({
|
|
69
79
|
code: 'missing-action-handler',
|
|
70
|
-
message: `Action '${
|
|
80
|
+
message: `Action '${capabilityId}' could not be executed because no runtime executor or handler is registered.`,
|
|
71
81
|
severity: 'error',
|
|
72
82
|
});
|
|
73
83
|
continue;
|
|
@@ -301,6 +311,10 @@ function inferLocalEventName(eventType) {
|
|
|
301
311
|
function eventNameToCallbackProp(eventName) {
|
|
302
312
|
return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;
|
|
303
313
|
}
|
|
314
|
+
/*** Resolve a canonical namespaced capability id from authored action metadata. */
|
|
315
|
+
function resolveCapabilityId(value) {
|
|
316
|
+
return isCapabilityId(value) ? value : null;
|
|
317
|
+
}
|
|
304
318
|
function isRuntimeEventHandler(value) {
|
|
305
319
|
return typeof value === 'function';
|
|
306
320
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeActionRegistry.js","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinitionRegistry,\n BindingCondition,\n BindingInputMap,\n BindingValue,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataSourceDiagnostic,\n EventBinding,\n EventBindingTarget,\n UiNode,\n} from '@ankhorage/contracts';\n\nimport { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';\nimport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMap,\n type RuntimeBindingOperationExecutor,\n type RuntimeBindingOperationResultCache,\n type RuntimeBindingOperationResultWriter,\n} from './runtimeBindings';\nimport {\n resolveRuntimeEventOperationErrorMessage,\n type RuntimeEventOperationLifecycle,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';\n\ntype RuntimeEventPayload = Record<string, unknown>;\n\ntype RuntimeEventHandler = (...args: unknown[]) => unknown;\n\ntype RuntimeOperationEventTarget = Extract<EventBindingTarget, { readonly kind: 'operation' }>;\n\nexport interface RuntimeActionRegistry {\n dispatchComponentEvent(args: RuntimeComponentEventDispatchArgs): Promise<void>;\n registerActionHandler(type: string, handler: RuntimeActionHandler): () => void;\n}\n\nexport interface RuntimeActionResolutionScope {\n readonly context?: Record<string, unknown>;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly state?: Record<string, unknown>;\n}\n\nexport interface RuntimeActionResolutionArgs extends RuntimeActionResolutionScope {\n readonly event: ComponentEventDto<string, object>;\n}\n\nexport interface RuntimeComponentEventDispatchArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly event: ComponentEventDto<string, object>;\n readonly eventName?: string;\n readonly executeAction?: RuntimeActionHandler;\n readonly apis?: ApiDefinitionRegistry;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly writeOperationResult?: RuntimeBindingOperationResultWriter;\n readonly eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n}\n\nexport interface RuntimeEventPropWrapArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly props: Record<string, unknown>;\n readonly disableActions: boolean;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly dispatchComponentEvent: (\n args: RuntimeComponentEventDispatchArgs,\n ) => Promise<void> | void;\n}\n\nexport function createRuntimeActionRegistry(\n options: {\n actionHandlers?: RuntimeActionHandlers;\n apis?: ApiDefinitionRegistry;\n dataBindings?: ComponentDataBindingRegistry;\n executeAction?: RuntimeActionHandler;\n executeOperation?: RuntimeBindingOperationExecutor;\n eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n operationResults?: RuntimeBindingOperationResultCache;\n writeOperationResult?: RuntimeBindingOperationResultWriter;\n } = {},\n): RuntimeActionRegistry {\n const actionHandlers: RuntimeActionHandlers = { ...(options.actionHandlers ?? {}) };\n\n return {\n async dispatchComponentEvent(args) {\n await dispatchRuntimeComponentEvent({\n ...args,\n actionHandlers,\n apis: args.apis ?? options.apis,\n dataBindings: args.dataBindings ?? options.dataBindings,\n executeAction: args.executeAction ?? options.executeAction,\n executeOperation: args.executeOperation ?? options.executeOperation,\n eventOperationLifecycle: args.eventOperationLifecycle ?? options.eventOperationLifecycle,\n operationResults: args.operationResults ?? options.operationResults,\n writeOperationResult: args.writeOperationResult ?? options.writeOperationResult,\n });\n },\n registerActionHandler(type, handler) {\n actionHandlers[type] = handler;\n\n return () => {\n delete actionHandlers[type];\n };\n },\n };\n}\n\nexport async function dispatchRuntimeComponentEvent(\n args: RuntimeComponentEventDispatchArgs & {\n readonly actionHandlers?: RuntimeActionHandlers;\n },\n): Promise<readonly DataSourceDiagnostic[]> {\n const { node, event, eventName = inferLocalEventName(event.type), actionHandlers } = args;\n const eventBindings: readonly EventBinding[] =\n args.dataBindings?.[node.id]?.events?.[eventName] ??\n args.dataBindings?.[node.id]?.events?.[event.type] ??\n [];\n const diagnostics: DataSourceDiagnostic[] = [];\n const dispatchOperationResults: Record<string, BindingValue | undefined> = {\n ...(args.operationResults ?? {}),\n };\n const resolutionArgs: RuntimeComponentEventDispatchArgs = {\n ...args,\n operationResults: dispatchOperationResults,\n };\n\n for (const binding of eventBindings) {\n if (!matchesBindingCondition(binding.when, resolutionArgs)) continue;\n\n if (binding.target.kind === 'action') {\n const resolvedPayload = await resolveObjectEventBindingInput(\n binding.input,\n resolutionArgs,\n diagnostics,\n );\n const action =\n resolvedPayload === undefined\n ? { type: binding.target.type }\n : { type: binding.target.type, payload: resolvedPayload };\n if (resolutionArgs.executeAction) {\n await resolutionArgs.executeAction({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n const handler = actionHandlers?.[binding.target.type];\n if (handler) {\n await handler({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n diagnostics.push({\n code: 'missing-action-handler',\n message: `Action '${binding.target.type}' could not be executed because no runtime executor or handler is registered.`,\n severity: 'error',\n });\n continue;\n }\n\n const operationSucceeded = await dispatchRuntimeOperationEventBinding({\n args: resolutionArgs,\n binding,\n diagnostics,\n operationResults: dispatchOperationResults,\n target: binding.target,\n });\n\n if (!operationSucceeded) {\n break;\n }\n }\n\n return diagnostics;\n}\n\nexport function wrapRuntimeEventProps(args: RuntimeEventPropWrapArgs): Record<string, unknown> {\n const { node, props, disableActions, dispatchComponentEvent } = args;\n const wrappedProps: Record<string, unknown> = { ...props };\n const nodeEventBindings = args.dataBindings?.[node.id]?.events;\n\n if (disableActions || !nodeEventBindings) {\n return wrappedProps;\n }\n\n for (const eventName of Object.keys(nodeEventBindings)) {\n const propName = eventNameToCallbackProp(eventName);\n const existingHandler = wrappedProps[propName];\n\n wrappedProps[propName] = (...handlerArgs: unknown[]) => {\n let existingResult: unknown;\n\n if (isRuntimeEventHandler(existingHandler)) {\n existingResult = existingHandler(...handlerArgs);\n }\n\n void dispatchComponentEvent({\n context: args.context,\n dataBindings: args.dataBindings,\n event: createComponentEventFromHandlerArgs({ eventName, handlerArgs, node }),\n eventName,\n node,\n operationResults: args.operationResults,\n state: args.state,\n });\n\n return existingResult;\n };\n }\n\n return wrappedProps;\n}\n\nexport function createComponentEventFromHandlerArgs(args: {\n readonly node: UiNode;\n readonly eventName: string;\n readonly handlerArgs: readonly unknown[];\n}): ComponentEventDto<string, RuntimeEventPayload> {\n const { node, eventName, handlerArgs } = args;\n\n return {\n payload: createPayloadForEvent(eventName, handlerArgs),\n sourceNodeId: node.id,\n type: localEventNameToEventType(eventName),\n };\n}\n\nexport function resolveRuntimeActionPayload(\n payload: object | undefined,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (payload === undefined) {\n return undefined;\n }\n\n return resolveRuntimeActionValue(payload, args);\n}\n\nexport function resolveRuntimeActionValue(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (!isRecord(value)) return undefined;\n\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, resolveRuntimeActionValueEntry(entry, args)]),\n );\n}\n\nasync function dispatchRuntimeOperationEventBinding(args: {\n readonly args: RuntimeComponentEventDispatchArgs;\n readonly binding: EventBinding;\n readonly diagnostics: DataSourceDiagnostic[];\n readonly operationResults: Record<string, BindingValue | undefined>;\n readonly target: RuntimeOperationEventTarget;\n}): Promise<boolean> {\n const { binding, diagnostics, target } = args;\n const invocation = args.args.eventOperationLifecycle?.start({\n nodeId: args.args.node.id,\n operation: target.operation,\n });\n\n if (args.args.eventOperationLifecycle !== undefined && invocation === undefined) {\n return false;\n }\n\n const failLifecycle = () => {\n if (invocation === undefined) return;\n args.args.eventOperationLifecycle?.fail(\n invocation,\n resolveRuntimeEventOperationErrorMessage(diagnostics),\n );\n };\n\n if (args.args.executeOperation === undefined) {\n diagnostics.push({\n apiId: target.operation.apiId,\n code: 'missing-adapter',\n endpointId: target.operation.endpointId,\n operationId: target.operation.operationId,\n message: 'Event API operation binding requires an injected operation executor.',\n severity: 'error',\n });\n failLifecycle();\n return false;\n }\n\n const selection = resolveRuntimeBindingOperationSelection(\n target.operation,\n args.args.apis,\n diagnostics,\n );\n if (selection === undefined) {\n failLifecycle();\n return false;\n }\n\n let result;\n try {\n result = await args.args.executeOperation({\n api: selection.api,\n endpoint: selection.endpoint,\n input: await resolveEventBindingInput(binding.input, args.args, diagnostics),\n node: args.args.node,\n operation: target.operation,\n });\n } catch {\n diagnostics.push({\n apiId: target.operation.apiId,\n code: 'adapter-error',\n endpointId: target.operation.endpointId,\n message: 'The operation could not be completed. Please try again.',\n operationId: target.operation.operationId,\n severity: 'error',\n });\n failLifecycle();\n return false;\n }\n diagnostics.push(...(result.diagnostics ?? []));\n\n if (result.ok) {\n const operationKey = createRuntimeBindingOperationKey(target.operation);\n args.operationResults[operationKey] = result.data;\n args.args.writeOperationResult?.(operationKey, result.data);\n if (invocation !== undefined) {\n args.args.eventOperationLifecycle?.succeed(invocation);\n }\n return true;\n }\n\n failLifecycle();\n return false;\n}\n\nfunction resolveRuntimeActionValueEntry(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): unknown {\n if (Array.isArray(value)) return value.map((item) => resolveRuntimeActionValueEntry(item, args));\n if (!isRecord(value)) return value;\n if (!('valueFrom' in value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n resolveRuntimeActionValueEntry(entry, args),\n ]),\n );\n }\n\n return undefined;\n}\n\nasync function resolveObjectEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n): Promise<object | undefined> {\n const value = await resolveEventBindingInput(input, args, diagnostics);\n return isRecord(value) ? value : undefined;\n}\n\nasync function resolveEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n) {\n return resolveBindingInputMap(\n input,\n {\n apis: args.apis,\n context: args.context,\n dataBindings: args.dataBindings,\n event: args.event,\n executeOperation: args.executeOperation,\n operationResults: args.operationResults,\n },\n diagnostics,\n );\n}\n\nfunction matchesBindingCondition(\n condition: BindingCondition | undefined,\n args: RuntimeActionResolutionArgs,\n): boolean {\n if (condition === undefined) return true;\n\n const value = readBindingConditionSource(condition, args);\n\n switch (condition.operator) {\n case 'eq':\n return value === condition.value;\n case 'exists':\n return value !== undefined;\n case 'neq':\n return value !== condition.value;\n case 'notExists':\n return value === undefined;\n }\n}\n\nfunction readBindingConditionSource(\n condition: BindingCondition,\n args: RuntimeActionResolutionArgs,\n): unknown {\n switch (condition.source.kind) {\n case 'context':\n return readPath(args.context, condition.source.path);\n case 'event':\n return readPath(args.event, condition.source.path);\n case 'literal':\n return condition.source.value;\n case 'operation': {\n const operationResult =\n args.operationResults?.[createRuntimeBindingOperationKey(condition.source.operation)];\n return condition.source.path === undefined\n ? operationResult\n : readPath(operationResult, condition.source.path);\n }\n case 'state':\n return readPath(args.state, condition.source.path);\n }\n}\n\nfunction createPayloadForEvent(\n eventName: string,\n handlerArgs: readonly unknown[],\n): RuntimeEventPayload {\n if (eventName === 'barcodeScanned') {\n return createBarcodeScannedPayload(handlerArgs[0]);\n }\n\n if (eventName === 'submit') {\n return { values: asRecord(handlerArgs[0]) ?? {} };\n }\n\n if (eventName === 'itemPress') {\n const item = asRecord(handlerArgs[0]) ?? {};\n const itemId = readItemId(handlerArgs[0]);\n\n return itemId === undefined ? { item } : { itemId, item };\n }\n\n if (eventName === 'changeText' || eventName === 'valueChange') {\n return { value: handlerArgs[0] };\n }\n\n if (eventName === 'checkedChange') {\n return { checked: handlerArgs[0] };\n }\n\n if (eventName === 'manualEntry') {\n return handlerArgs[0] === undefined ? {} : { value: handlerArgs[0] };\n }\n\n if (eventName === 'requestPermission' || eventName === 'press') {\n return {};\n }\n\n return asRecord(handlerArgs[0]) ?? {};\n}\n\nfunction localEventNameToEventType(eventName: string): string {\n if (eventName === 'itemPress') return 'collection.itemPress';\n if (eventName === 'press') return 'button.press';\n if (eventName === 'submit') return 'form.submit';\n\n return eventName;\n}\n\nfunction inferLocalEventName(eventType: string): string {\n const parts = eventType.split('.');\n\n return parts.at(-1) ?? eventType;\n}\n\nfunction eventNameToCallbackProp(eventName: string): string {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n\nfunction isRuntimeEventHandler(value: unknown): value is RuntimeEventHandler {\n return typeof value === 'function';\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n if (path.length === 0) return source;\n\n return path.split('.').reduce<unknown>((currentValue, part) => {\n if (!isRecord(currentValue)) return undefined;\n return currentValue[part];\n }, source);\n}\n\nfunction createBarcodeScannedPayload(value: unknown): RuntimeEventPayload {\n if (typeof value === 'string') {\n return { value };\n }\n\n if (!isRecord(value)) {\n return {};\n }\n\n const payload: RuntimeEventPayload = {};\n if (typeof value.value === 'string') payload.value = value.value;\n if (typeof value.type === 'string') payload.type = value.type;\n\n return payload;\n}\n\nfunction readItemId(value: unknown): string | number | undefined {\n if (typeof value === 'string' || typeof value === 'number') return value;\n if (!isRecord(value)) return undefined;\n\n const id = value.id ?? value.itemId;\n\n return typeof id === 'string' || typeof id === 'number' ? id : undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtimeActionRegistry.js","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiDefinitionRegistry,\n BindingCondition,\n BindingInputMap,\n BindingValue,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataSourceDiagnostic,\n EventBinding,\n EventBindingTarget,\n UiNode,\n} from '@ankhorage/contracts';\nimport { type Capability, isCapabilityId } from '@ankhorage/contracts/capabilities';\n\nimport { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';\nimport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMap,\n type RuntimeBindingOperationExecutor,\n type RuntimeBindingOperationResultCache,\n type RuntimeBindingOperationResultWriter,\n} from './runtimeBindings';\nimport {\n resolveRuntimeEventOperationErrorMessage,\n type RuntimeEventOperationLifecycle,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';\n\ntype RuntimeEventPayload = Record<string, unknown>;\n\ntype RuntimeEventHandler = (...args: unknown[]) => unknown;\n\ntype RuntimeOperationEventTarget = Extract<EventBindingTarget, { readonly kind: 'operation' }>;\n\nexport interface RuntimeActionRegistry {\n dispatchComponentEvent(args: RuntimeComponentEventDispatchArgs): Promise<void>;\n registerActionHandler(type: Capability['id'], handler: RuntimeActionHandler): () => void;\n}\n\nexport interface RuntimeActionResolutionScope {\n readonly context?: Record<string, unknown>;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly state?: Record<string, unknown>;\n}\n\nexport interface RuntimeActionResolutionArgs extends RuntimeActionResolutionScope {\n readonly event: ComponentEventDto<string, object>;\n}\n\nexport interface RuntimeComponentEventDispatchArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly event: ComponentEventDto<string, object>;\n readonly eventName?: string;\n readonly executeAction?: RuntimeActionHandler;\n readonly apis?: ApiDefinitionRegistry;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly writeOperationResult?: RuntimeBindingOperationResultWriter;\n readonly eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n}\n\nexport interface RuntimeEventPropWrapArgs extends RuntimeActionResolutionScope {\n readonly node: UiNode;\n readonly props: Record<string, unknown>;\n readonly disableActions: boolean;\n readonly dataBindings?: ComponentDataBindingRegistry;\n readonly dispatchComponentEvent: (\n args: RuntimeComponentEventDispatchArgs,\n ) => Promise<void> | void;\n}\n\nexport function createRuntimeActionRegistry(\n options: {\n actionHandlers?: RuntimeActionHandlers;\n apis?: ApiDefinitionRegistry;\n dataBindings?: ComponentDataBindingRegistry;\n executeAction?: RuntimeActionHandler;\n executeOperation?: RuntimeBindingOperationExecutor;\n eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n operationResults?: RuntimeBindingOperationResultCache;\n writeOperationResult?: RuntimeBindingOperationResultWriter;\n } = {},\n): RuntimeActionRegistry {\n const actionHandlers: RuntimeActionHandlers = { ...(options.actionHandlers ?? {}) };\n\n return {\n async dispatchComponentEvent(args) {\n await dispatchRuntimeComponentEvent({\n ...args,\n actionHandlers,\n apis: args.apis ?? options.apis,\n dataBindings: args.dataBindings ?? options.dataBindings,\n executeAction: args.executeAction ?? options.executeAction,\n executeOperation: args.executeOperation ?? options.executeOperation,\n eventOperationLifecycle: args.eventOperationLifecycle ?? options.eventOperationLifecycle,\n operationResults: args.operationResults ?? options.operationResults,\n writeOperationResult: args.writeOperationResult ?? options.writeOperationResult,\n });\n },\n registerActionHandler(type, handler) {\n actionHandlers[type] = handler;\n\n return () => {\n delete actionHandlers[type];\n };\n },\n };\n}\n\nexport async function dispatchRuntimeComponentEvent(\n args: RuntimeComponentEventDispatchArgs & {\n readonly actionHandlers?: RuntimeActionHandlers;\n },\n): Promise<readonly DataSourceDiagnostic[]> {\n const { node, event, eventName = inferLocalEventName(event.type), actionHandlers } = args;\n const eventBindings: readonly EventBinding[] =\n args.dataBindings?.[node.id]?.events?.[eventName] ??\n args.dataBindings?.[node.id]?.events?.[event.type] ??\n [];\n const diagnostics: DataSourceDiagnostic[] = [];\n const dispatchOperationResults: Record<string, BindingValue | undefined> = {\n ...(args.operationResults ?? {}),\n };\n const resolutionArgs: RuntimeComponentEventDispatchArgs = {\n ...args,\n operationResults: dispatchOperationResults,\n };\n\n for (const binding of eventBindings) {\n if (!matchesBindingCondition(binding.when, resolutionArgs)) continue;\n\n if (binding.target.kind === 'action') {\n const capabilityId = resolveCapabilityId(binding.target.type);\n if (capabilityId === null) {\n diagnostics.push({\n code: 'invalid-action-capability',\n message: `Action '${binding.target.type}' is not a canonical namespaced capability id.`,\n severity: 'error',\n });\n continue;\n }\n\n const resolvedPayload = await resolveObjectEventBindingInput(\n binding.input,\n resolutionArgs,\n diagnostics,\n );\n const action =\n resolvedPayload === undefined\n ? { type: capabilityId }\n : { type: capabilityId, payload: resolvedPayload };\n if (resolutionArgs.executeAction) {\n await resolutionArgs.executeAction({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n const handler = actionHandlers?.[capabilityId];\n if (handler) {\n await handler({\n action,\n event,\n node,\n resolvedPayload,\n });\n continue;\n }\n\n diagnostics.push({\n code: 'missing-action-handler',\n message: `Action '${capabilityId}' could not be executed because no runtime executor or handler is registered.`,\n severity: 'error',\n });\n continue;\n }\n\n const operationSucceeded = await dispatchRuntimeOperationEventBinding({\n args: resolutionArgs,\n binding,\n diagnostics,\n operationResults: dispatchOperationResults,\n target: binding.target,\n });\n\n if (!operationSucceeded) {\n break;\n }\n }\n\n return diagnostics;\n}\n\nexport function wrapRuntimeEventProps(args: RuntimeEventPropWrapArgs): Record<string, unknown> {\n const { node, props, disableActions, dispatchComponentEvent } = args;\n const wrappedProps: Record<string, unknown> = { ...props };\n const nodeEventBindings = args.dataBindings?.[node.id]?.events;\n\n if (disableActions || !nodeEventBindings) {\n return wrappedProps;\n }\n\n for (const eventName of Object.keys(nodeEventBindings)) {\n const propName = eventNameToCallbackProp(eventName);\n const existingHandler = wrappedProps[propName];\n\n wrappedProps[propName] = (...handlerArgs: unknown[]) => {\n let existingResult: unknown;\n\n if (isRuntimeEventHandler(existingHandler)) {\n existingResult = existingHandler(...handlerArgs);\n }\n\n void dispatchComponentEvent({\n context: args.context,\n dataBindings: args.dataBindings,\n event: createComponentEventFromHandlerArgs({ eventName, handlerArgs, node }),\n eventName,\n node,\n operationResults: args.operationResults,\n state: args.state,\n });\n\n return existingResult;\n };\n }\n\n return wrappedProps;\n}\n\nexport function createComponentEventFromHandlerArgs(args: {\n readonly node: UiNode;\n readonly eventName: string;\n readonly handlerArgs: readonly unknown[];\n}): ComponentEventDto<string, RuntimeEventPayload> {\n const { node, eventName, handlerArgs } = args;\n\n return {\n payload: createPayloadForEvent(eventName, handlerArgs),\n sourceNodeId: node.id,\n type: localEventNameToEventType(eventName),\n };\n}\n\nexport function resolveRuntimeActionPayload(\n payload: object | undefined,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (payload === undefined) {\n return undefined;\n }\n\n return resolveRuntimeActionValue(payload, args);\n}\n\nexport function resolveRuntimeActionValue(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): object | undefined {\n if (!isRecord(value)) return undefined;\n\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, resolveRuntimeActionValueEntry(entry, args)]),\n );\n}\n\nasync function dispatchRuntimeOperationEventBinding(args: {\n readonly args: RuntimeComponentEventDispatchArgs;\n readonly binding: EventBinding;\n readonly diagnostics: DataSourceDiagnostic[];\n readonly operationResults: Record<string, BindingValue | undefined>;\n readonly target: RuntimeOperationEventTarget;\n}): Promise<boolean> {\n const { binding, diagnostics, target } = args;\n const invocation = args.args.eventOperationLifecycle?.start({\n nodeId: args.args.node.id,\n operation: target.operation,\n });\n\n if (args.args.eventOperationLifecycle !== undefined && invocation === undefined) {\n return false;\n }\n\n const failLifecycle = () => {\n if (invocation === undefined) return;\n args.args.eventOperationLifecycle?.fail(\n invocation,\n resolveRuntimeEventOperationErrorMessage(diagnostics),\n );\n };\n\n if (args.args.executeOperation === undefined) {\n diagnostics.push({\n apiId: target.operation.apiId,\n code: 'missing-adapter',\n endpointId: target.operation.endpointId,\n operationId: target.operation.operationId,\n message: 'Event API operation binding requires an injected operation executor.',\n severity: 'error',\n });\n failLifecycle();\n return false;\n }\n\n const selection = resolveRuntimeBindingOperationSelection(\n target.operation,\n args.args.apis,\n diagnostics,\n );\n if (selection === undefined) {\n failLifecycle();\n return false;\n }\n\n let result;\n try {\n result = await args.args.executeOperation({\n api: selection.api,\n endpoint: selection.endpoint,\n input: await resolveEventBindingInput(binding.input, args.args, diagnostics),\n node: args.args.node,\n operation: target.operation,\n });\n } catch {\n diagnostics.push({\n apiId: target.operation.apiId,\n code: 'adapter-error',\n endpointId: target.operation.endpointId,\n message: 'The operation could not be completed. Please try again.',\n operationId: target.operation.operationId,\n severity: 'error',\n });\n failLifecycle();\n return false;\n }\n diagnostics.push(...(result.diagnostics ?? []));\n\n if (result.ok) {\n const operationKey = createRuntimeBindingOperationKey(target.operation);\n args.operationResults[operationKey] = result.data;\n args.args.writeOperationResult?.(operationKey, result.data);\n if (invocation !== undefined) {\n args.args.eventOperationLifecycle?.succeed(invocation);\n }\n return true;\n }\n\n failLifecycle();\n return false;\n}\n\nfunction resolveRuntimeActionValueEntry(\n value: unknown,\n args: RuntimeActionResolutionArgs,\n): unknown {\n if (Array.isArray(value)) return value.map((item) => resolveRuntimeActionValueEntry(item, args));\n if (!isRecord(value)) return value;\n if (!('valueFrom' in value)) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n resolveRuntimeActionValueEntry(entry, args),\n ]),\n );\n }\n\n return undefined;\n}\n\nasync function resolveObjectEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n): Promise<object | undefined> {\n const value = await resolveEventBindingInput(input, args, diagnostics);\n return isRecord(value) ? value : undefined;\n}\n\nasync function resolveEventBindingInput(\n input: BindingInputMap | undefined,\n args: RuntimeComponentEventDispatchArgs,\n diagnostics: DataSourceDiagnostic[],\n) {\n return resolveBindingInputMap(\n input,\n {\n apis: args.apis,\n context: args.context,\n dataBindings: args.dataBindings,\n event: args.event,\n executeOperation: args.executeOperation,\n operationResults: args.operationResults,\n },\n diagnostics,\n );\n}\n\nfunction matchesBindingCondition(\n condition: BindingCondition | undefined,\n args: RuntimeActionResolutionArgs,\n): boolean {\n if (condition === undefined) return true;\n\n const value = readBindingConditionSource(condition, args);\n\n switch (condition.operator) {\n case 'eq':\n return value === condition.value;\n case 'exists':\n return value !== undefined;\n case 'neq':\n return value !== condition.value;\n case 'notExists':\n return value === undefined;\n }\n}\n\nfunction readBindingConditionSource(\n condition: BindingCondition,\n args: RuntimeActionResolutionArgs,\n): unknown {\n switch (condition.source.kind) {\n case 'context':\n return readPath(args.context, condition.source.path);\n case 'event':\n return readPath(args.event, condition.source.path);\n case 'literal':\n return condition.source.value;\n case 'operation': {\n const operationResult =\n args.operationResults?.[createRuntimeBindingOperationKey(condition.source.operation)];\n return condition.source.path === undefined\n ? operationResult\n : readPath(operationResult, condition.source.path);\n }\n case 'state':\n return readPath(args.state, condition.source.path);\n }\n}\n\nfunction createPayloadForEvent(\n eventName: string,\n handlerArgs: readonly unknown[],\n): RuntimeEventPayload {\n if (eventName === 'barcodeScanned') {\n return createBarcodeScannedPayload(handlerArgs[0]);\n }\n\n if (eventName === 'submit') {\n return { values: asRecord(handlerArgs[0]) ?? {} };\n }\n\n if (eventName === 'itemPress') {\n const item = asRecord(handlerArgs[0]) ?? {};\n const itemId = readItemId(handlerArgs[0]);\n\n return itemId === undefined ? { item } : { itemId, item };\n }\n\n if (eventName === 'changeText' || eventName === 'valueChange') {\n return { value: handlerArgs[0] };\n }\n\n if (eventName === 'checkedChange') {\n return { checked: handlerArgs[0] };\n }\n\n if (eventName === 'manualEntry') {\n return handlerArgs[0] === undefined ? {} : { value: handlerArgs[0] };\n }\n\n if (eventName === 'requestPermission' || eventName === 'press') {\n return {};\n }\n\n return asRecord(handlerArgs[0]) ?? {};\n}\n\nfunction localEventNameToEventType(eventName: string): string {\n if (eventName === 'itemPress') return 'collection.itemPress';\n if (eventName === 'press') return 'button.press';\n if (eventName === 'submit') return 'form.submit';\n\n return eventName;\n}\n\nfunction inferLocalEventName(eventType: string): string {\n const parts = eventType.split('.');\n\n return parts.at(-1) ?? eventType;\n}\n\nfunction eventNameToCallbackProp(eventName: string): string {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n\n/*** Resolve a canonical namespaced capability id from authored action metadata. */\nfunction resolveCapabilityId(value: string): Capability['id'] | null {\n return isCapabilityId(value) ? value : null;\n}\n\nfunction isRuntimeEventHandler(value: unknown): value is RuntimeEventHandler {\n return typeof value === 'function';\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n if (path.length === 0) return source;\n\n return path.split('.').reduce<unknown>((currentValue, part) => {\n if (!isRecord(currentValue)) return undefined;\n return currentValue[part];\n }, source);\n}\n\nfunction createBarcodeScannedPayload(value: unknown): RuntimeEventPayload {\n if (typeof value === 'string') {\n return { value };\n }\n\n if (!isRecord(value)) {\n return {};\n }\n\n const payload: RuntimeEventPayload = {};\n if (typeof value.value === 'string') payload.value = value.value;\n if (typeof value.type === 'string') payload.type = value.type;\n\n return payload;\n}\n\nfunction readItemId(value: unknown): string | number | undefined {\n if (typeof value === 'string' || typeof value === 'number') return value;\n if (!isRecord(value)) return undefined;\n\n const id = value.id ?? value.itemId;\n\n return typeof id === 'string' || typeof id === 'number' ? id : undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Capability } from '@ankhorage/contracts/capabilities';
|
|
2
2
|
export declare const RUNTIME_MANIFEST_KIND = "ankhorage-runtime-manifest";
|
|
3
|
-
export type RuntimeCapability = (typeof RUNTIME_CAPABILITIES)[number];
|
|
4
3
|
export interface RuntimeDiagnostic {
|
|
5
4
|
readonly code: string;
|
|
6
5
|
readonly message: string;
|
|
@@ -12,7 +11,7 @@ export interface RuntimeManifestConfig {
|
|
|
12
11
|
readonly values?: Readonly<Record<string, unknown>>;
|
|
13
12
|
}
|
|
14
13
|
export interface RuntimeActionDescriptor<Data = unknown> {
|
|
15
|
-
readonly capability?:
|
|
14
|
+
readonly capability?: Capability['id'];
|
|
16
15
|
readonly description?: string;
|
|
17
16
|
readonly id: string;
|
|
18
17
|
readonly data?: Data;
|
|
@@ -49,5 +48,4 @@ export declare function defineRuntimeAction<Data = unknown>(action: RuntimeActio
|
|
|
49
48
|
export declare function defineRuntimeAdapter<Options = unknown>(adapter: RuntimeAdapterDescriptor<Options>): RuntimeAdapterDescriptor<Options>;
|
|
50
49
|
export declare function defineRuntimeBinding<Value = unknown>(binding: RuntimeBindingDescriptor<Value>): RuntimeBindingDescriptor<Value>;
|
|
51
50
|
export declare function createRuntimeManifest(input: RuntimeManifestInput): RuntimeManifest;
|
|
52
|
-
export declare function listRuntimeCapabilities(): readonly RuntimeCapability[];
|
|
53
51
|
//# sourceMappingURL=runtimeManifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeManifest.d.ts","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"runtimeManifest.d.ts","sourceRoot":"","sources":["../src/runtimeManifest.ts"],"names":[],"mappings":"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"}
|