@ankhorage/runtime 4.0.7 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +2 -1
- package/dist/RuntimeRendererConfig.d.ts +1 -1
- package/dist/RuntimeRendererConfig.d.ts.map +1 -1
- package/dist/RuntimeRendererConfig.js.map +1 -1
- package/dist/capabilities/index.d.ts +47 -2
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +33 -2
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/resolveRuntimeContextCapability.d.ts +21 -0
- package/dist/capabilities/resolveRuntimeContextCapability.d.ts.map +1 -0
- package/dist/capabilities/resolveRuntimeContextCapability.js +53 -0
- package/dist/capabilities/resolveRuntimeContextCapability.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtimeActionRegistry.d.ts +1 -1
- package/dist/runtimeActionRegistry.d.ts.map +1 -1
- package/dist/runtimeActionRegistry.js +1 -1
- package/dist/runtimeActionRegistry.js.map +1 -1
- package/dist/runtimeBindings.d.ts.map +1 -1
- package/dist/runtimeBindings.js +1 -3
- package/dist/runtimeBindings.js.map +1 -1
- package/dist/runtimeManifest.d.ts +1 -1
- package/dist/runtimeManifest.d.ts.map +1 -1
- package/dist/runtimeManifest.js.map +1 -1
- package/dist/runtimeNodeProps.d.ts.map +1 -1
- package/dist/runtimeNodeProps.js +1 -1
- package/dist/runtimeNodeProps.js.map +1 -1
- package/package.json +69 -5
- package/paradox/badges/npm.svg +3 -3
- package/paradox/diagrams/architecture-overview.mmd +6 -0
- package/paradox/diagrams/export-graph.mmd +11 -0
- package/paradox/diagrams/module-relationships.mmd +4 -0
- package/paradox/diagrams/sequences/resolve-runtime-context-capability.mmd +8 -0
- package/paradox/exports.json +144 -26
- package/paradox/exports.md +66 -26
- package/paradox/index.html +285 -105
- package/paradox/paradox.json +387 -106
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @ankhorage/runtime
|
|
2
2
|
|
|
3
|
+
## 4.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6a3492d: Publish schema-backed `runtime.eventOperation` and scoped `runtime.repeat.item` context capabilities, and migrate Runtime capability mechanics to the released standalone toolkit.
|
|
8
|
+
|
|
3
9
|
## 4.0.7
|
|
4
10
|
|
|
5
11
|
### 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
|
|
|
@@ -51,6 +51,7 @@ createRuntimeManifest({
|
|
|
51
51
|
- [resolveDbPersistInput sequence](./paradox/diagrams/sequences/resolve-db-persist-input.mmd)
|
|
52
52
|
- [resolveRuntimeActionPayload sequence](./paradox/diagrams/sequences/resolve-runtime-action-payload.mmd)
|
|
53
53
|
- [resolveRuntimeActionValue sequence](./paradox/diagrams/sequences/resolve-runtime-action-value.mmd)
|
|
54
|
+
- [resolveRuntimeContextCapability sequence](./paradox/diagrams/sequences/resolve-runtime-context-capability.mmd)
|
|
54
55
|
- [RuntimeRendererConfigProvider sequence](./paradox/diagrams/sequences/runtime-renderer-config-provider.mmd)
|
|
55
56
|
- [RuntimeScreen sequence](./paradox/diagrams/sequences/runtime-screen.mmd)
|
|
56
57
|
- [useManifest sequence](./paradox/diagrams/sequences/use-manifest.mmd)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiDefinitionRegistry, ComponentDataBindingRegistry, ComponentEventDto, DataSourceDiagnostic, DbAdapter, DbRealtimeAdapter, MediaAssetRegistry, StateAdapter, UiNode } from '@ankhorage/contracts';
|
|
2
|
-
import type { Capability } from '@ankhorage/contracts/
|
|
2
|
+
import type { Capability } from '@ankhorage/contracts/capability';
|
|
3
3
|
import type { RuntimeNodePropsResolver } from '@ankhorage/contracts/runtime';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import type { ComponentRegistry } from './registry';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeRendererConfig.d.ts","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
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":"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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/
|
|
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/capability';\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"]}
|
|
@@ -26,13 +26,58 @@ export declare const CAPABILITIES: readonly [{
|
|
|
26
26
|
};
|
|
27
27
|
readonly label: "Runtime bindings";
|
|
28
28
|
}, {
|
|
29
|
-
readonly id: "runtime.
|
|
29
|
+
readonly id: "runtime.eventOperation";
|
|
30
|
+
readonly owner: "@ankhorage/runtime";
|
|
31
|
+
readonly access: readonly ["read", "subscribe"];
|
|
32
|
+
readonly binding: {
|
|
33
|
+
readonly kind: "context";
|
|
34
|
+
readonly bindableAs: readonly ["source"];
|
|
35
|
+
};
|
|
36
|
+
readonly label: "Runtime event operation";
|
|
37
|
+
readonly output: {
|
|
38
|
+
readonly schema: {
|
|
39
|
+
readonly type: "object";
|
|
40
|
+
readonly required: readonly ["status", "loading", "errorMessage"];
|
|
41
|
+
readonly properties: {
|
|
42
|
+
readonly status: {
|
|
43
|
+
readonly type: "string";
|
|
44
|
+
readonly enum: readonly ["idle", "loading", "success", "error"];
|
|
45
|
+
};
|
|
46
|
+
readonly loading: {
|
|
47
|
+
readonly type: "boolean";
|
|
48
|
+
};
|
|
49
|
+
readonly errorMessage: {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
};
|
|
52
|
+
readonly nodeId: {
|
|
53
|
+
readonly type: "string";
|
|
54
|
+
};
|
|
55
|
+
readonly operation: {
|
|
56
|
+
readonly type: "object";
|
|
57
|
+
readonly required: readonly ["apiId", "operationId"];
|
|
58
|
+
readonly properties: {
|
|
59
|
+
readonly apiId: {
|
|
60
|
+
readonly type: "string";
|
|
61
|
+
};
|
|
62
|
+
readonly endpointId: {
|
|
63
|
+
readonly type: "string";
|
|
64
|
+
};
|
|
65
|
+
readonly operationId: {
|
|
66
|
+
readonly type: "string";
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
}, {
|
|
74
|
+
readonly id: "runtime.repeat.item";
|
|
30
75
|
readonly owner: "@ankhorage/runtime";
|
|
31
76
|
readonly access: readonly ["read"];
|
|
32
77
|
readonly binding: {
|
|
33
78
|
readonly kind: "context";
|
|
34
79
|
readonly bindableAs: readonly ["source"];
|
|
35
80
|
};
|
|
36
|
-
readonly label: "Runtime
|
|
81
|
+
readonly label: "Runtime repeat item";
|
|
37
82
|
}];
|
|
38
83
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEiB,CAAC"}
|
|
@@ -30,14 +30,45 @@ export const CAPABILITIES = [
|
|
|
30
30
|
label: 'Runtime bindings',
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
id: 'runtime.
|
|
33
|
+
id: 'runtime.eventOperation',
|
|
34
|
+
owner: '@ankhorage/runtime',
|
|
35
|
+
access: ['read', 'subscribe'],
|
|
36
|
+
binding: {
|
|
37
|
+
kind: 'context',
|
|
38
|
+
bindableAs: ['source'],
|
|
39
|
+
},
|
|
40
|
+
label: 'Runtime event operation',
|
|
41
|
+
output: {
|
|
42
|
+
schema: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
required: ['status', 'loading', 'errorMessage'],
|
|
45
|
+
properties: {
|
|
46
|
+
status: { type: 'string', enum: ['idle', 'loading', 'success', 'error'] },
|
|
47
|
+
loading: { type: 'boolean' },
|
|
48
|
+
errorMessage: { type: 'string' },
|
|
49
|
+
nodeId: { type: 'string' },
|
|
50
|
+
operation: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
required: ['apiId', 'operationId'],
|
|
53
|
+
properties: {
|
|
54
|
+
apiId: { type: 'string' },
|
|
55
|
+
endpointId: { type: 'string' },
|
|
56
|
+
operationId: { type: 'string' },
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'runtime.repeat.item',
|
|
34
65
|
owner: '@ankhorage/runtime',
|
|
35
66
|
access: ['read'],
|
|
36
67
|
binding: {
|
|
37
68
|
kind: 'context',
|
|
38
69
|
bindableAs: ['source'],
|
|
39
70
|
},
|
|
40
|
-
label: 'Runtime
|
|
71
|
+
label: 'Runtime repeat item',
|
|
41
72
|
},
|
|
42
73
|
];
|
|
43
74
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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,
|
|
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,wBAAwB;QAC5B,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7B,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;QACD,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC;gBAC/C,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;oBACzE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC5B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAChC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;wBAClC,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAChC;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,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,qBAAqB;KAC7B;CACuC,CAAC","sourcesContent":["import type { Capability } from '@ankhorage/contracts/capability';\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.eventOperation',\n owner: '@ankhorage/runtime',\n access: ['read', 'subscribe'],\n binding: {\n kind: 'context',\n bindableAs: ['source'],\n },\n label: 'Runtime event operation',\n output: {\n schema: {\n type: 'object',\n required: ['status', 'loading', 'errorMessage'],\n properties: {\n status: { type: 'string', enum: ['idle', 'loading', 'success', 'error'] },\n loading: { type: 'boolean' },\n errorMessage: { type: 'string' },\n nodeId: { type: 'string' },\n operation: {\n type: 'object',\n required: ['apiId', 'operationId'],\n properties: {\n apiId: { type: 'string' },\n endpointId: { type: 'string' },\n operationId: { type: 'string' },\n },\n },\n },\n },\n },\n },\n {\n id: 'runtime.repeat.item',\n owner: '@ankhorage/runtime',\n access: ['read'],\n binding: {\n kind: 'context',\n bindableAs: ['source'],\n },\n label: 'Runtime repeat item',\n },\n] as const satisfies readonly Capability[];\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DataSchema } from '@ankhorage/contracts';
|
|
2
|
+
import type { Capability } from '@ankhorage/contracts/capability';
|
|
3
|
+
export type RuntimeContextCapabilityId = 'runtime.eventOperation' | 'runtime.repeat.item';
|
|
4
|
+
export type RuntimeContextCapabilityResolution = {
|
|
5
|
+
readonly ok: true;
|
|
6
|
+
readonly capability: Capability;
|
|
7
|
+
} | {
|
|
8
|
+
readonly ok: false;
|
|
9
|
+
readonly reason: 'invalid-repeat-item-schema' | 'unavailable-capability';
|
|
10
|
+
};
|
|
11
|
+
/*** Materializes a Runtime-owned context capability for the active renderer scope. */
|
|
12
|
+
export declare function resolveRuntimeContextCapability(args: {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly repeatSourceSchema?: DataSchema;
|
|
15
|
+
}): RuntimeContextCapabilityResolution;
|
|
16
|
+
/*** Determines whether a dot-separated path is exposed by a capability output schema. */
|
|
17
|
+
export declare function isRuntimeContextCapabilityOutputPath(args: {
|
|
18
|
+
readonly capability: Capability;
|
|
19
|
+
readonly path: string;
|
|
20
|
+
}): boolean;
|
|
21
|
+
//# sourceMappingURL=resolveRuntimeContextCapability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRuntimeContextCapability.d.ts","sourceRoot":"","sources":["../../src/capabilities/resolveRuntimeContextCapability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlE,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAE1F,MAAM,MAAM,kCAAkC,GAC1C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACtD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,wBAAwB,CAAC;CAC1E,CAAC;AAEN,sFAAsF;AACtF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC;CAC1C,GAAG,kCAAkC,CAuBrC;AAED,yFAAyF;AACzF,wBAAgB,oCAAoC,CAAC,IAAI,EAAE;IACzD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAYV"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CAPABILITIES } from './index';
|
|
2
|
+
/*** Materializes a Runtime-owned context capability for the active renderer scope. */
|
|
3
|
+
export function resolveRuntimeContextCapability(args) {
|
|
4
|
+
if (args.id === 'runtime.repeat.item') {
|
|
5
|
+
const repeatItemSchema = resolveRepeatItemSchema(args.repeatSourceSchema);
|
|
6
|
+
if (repeatItemSchema === undefined) {
|
|
7
|
+
return { ok: false, reason: 'invalid-repeat-item-schema' };
|
|
8
|
+
}
|
|
9
|
+
const capability = findRuntimeContextCapability('runtime.repeat.item');
|
|
10
|
+
if (capability === undefined)
|
|
11
|
+
return { ok: false, reason: 'unavailable-capability' };
|
|
12
|
+
return {
|
|
13
|
+
ok: true,
|
|
14
|
+
capability: {
|
|
15
|
+
...capability,
|
|
16
|
+
output: { schema: repeatItemSchema },
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const capability = findRuntimeContextCapability(args.id);
|
|
21
|
+
return capability === undefined
|
|
22
|
+
? { ok: false, reason: 'unavailable-capability' }
|
|
23
|
+
: { ok: true, capability };
|
|
24
|
+
}
|
|
25
|
+
/*** Determines whether a dot-separated path is exposed by a capability output schema. */
|
|
26
|
+
export function isRuntimeContextCapabilityOutputPath(args) {
|
|
27
|
+
const outputSchema = args.capability.output?.schema;
|
|
28
|
+
if (outputSchema === undefined || args.path.length === 0)
|
|
29
|
+
return false;
|
|
30
|
+
return (args.path
|
|
31
|
+
.split('.')
|
|
32
|
+
.reduce((schema, part) => (schema === undefined ? undefined : resolveSchemaPathPart(schema, part)), outputSchema) !== undefined);
|
|
33
|
+
}
|
|
34
|
+
/*** Finds a Runtime-owned context descriptor without accepting host-provided context roots. */
|
|
35
|
+
function findRuntimeContextCapability(id) {
|
|
36
|
+
return CAPABILITIES.find((capability) => capability.id === id && capability.binding.kind === 'context');
|
|
37
|
+
}
|
|
38
|
+
/*** Resolves one schema path segment without treating arbitrary object fields as declared output. */
|
|
39
|
+
function resolveSchemaPathPart(schema, part) {
|
|
40
|
+
if (Array.isArray(schema.type) ? schema.type.includes('array') : schema.type === 'array') {
|
|
41
|
+
return /^(0|[1-9]\\d*)$/.test(part) ? schema.items : undefined;
|
|
42
|
+
}
|
|
43
|
+
const property = Object.entries(schema.properties ?? {}).find(([key]) => key === part)?.[1];
|
|
44
|
+
if (property !== undefined)
|
|
45
|
+
return property;
|
|
46
|
+
return typeof schema.additionalProperties === 'object' ? schema.additionalProperties : undefined;
|
|
47
|
+
}
|
|
48
|
+
/*** Derives the item schema only from an enclosing declared repeat-source array. */
|
|
49
|
+
function resolveRepeatItemSchema(schema) {
|
|
50
|
+
const types = schema === undefined ? [] : Array.isArray(schema.type) ? schema.type : [schema.type];
|
|
51
|
+
return types.includes('array') ? schema?.items : undefined;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=resolveRuntimeContextCapability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRuntimeContextCapability.js","sourceRoot":"","sources":["../../src/capabilities/resolveRuntimeContextCapability.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataSchema } from '@ankhorage/contracts';\nimport type { Capability } from '@ankhorage/contracts/capability';\n\nimport { CAPABILITIES } from './index';\n\nexport type RuntimeContextCapabilityId = 'runtime.eventOperation' | 'runtime.repeat.item';\n\nexport type RuntimeContextCapabilityResolution =\n | { readonly ok: true; readonly capability: Capability }\n | {\n readonly ok: false;\n readonly reason: 'invalid-repeat-item-schema' | 'unavailable-capability';\n };\n\n/*** Materializes a Runtime-owned context capability for the active renderer scope. */\nexport function resolveRuntimeContextCapability(args: {\n readonly id: string;\n readonly repeatSourceSchema?: DataSchema;\n}): RuntimeContextCapabilityResolution {\n if (args.id === 'runtime.repeat.item') {\n const repeatItemSchema = resolveRepeatItemSchema(args.repeatSourceSchema);\n if (repeatItemSchema === undefined) {\n return { ok: false, reason: 'invalid-repeat-item-schema' };\n }\n\n const capability = findRuntimeContextCapability('runtime.repeat.item');\n if (capability === undefined) return { ok: false, reason: 'unavailable-capability' };\n\n return {\n ok: true,\n capability: {\n ...capability,\n output: { schema: repeatItemSchema },\n },\n };\n }\n\n const capability = findRuntimeContextCapability(args.id);\n return capability === undefined\n ? { ok: false, reason: 'unavailable-capability' }\n : { ok: true, capability };\n}\n\n/*** Determines whether a dot-separated path is exposed by a capability output schema. */\nexport function isRuntimeContextCapabilityOutputPath(args: {\n readonly capability: Capability;\n readonly path: string;\n}): boolean {\n const outputSchema = args.capability.output?.schema;\n if (outputSchema === undefined || args.path.length === 0) return false;\n\n return (\n args.path\n .split('.')\n .reduce<DataSchema | undefined>(\n (schema, part) => (schema === undefined ? undefined : resolveSchemaPathPart(schema, part)),\n outputSchema,\n ) !== undefined\n );\n}\n\n/*** Finds a Runtime-owned context descriptor without accepting host-provided context roots. */\nfunction findRuntimeContextCapability(id: string): Capability | undefined {\n return CAPABILITIES.find(\n (capability) => capability.id === id && capability.binding.kind === 'context',\n );\n}\n\n/*** Resolves one schema path segment without treating arbitrary object fields as declared output. */\nfunction resolveSchemaPathPart(schema: DataSchema, part: string): DataSchema | undefined {\n if (Array.isArray(schema.type) ? schema.type.includes('array') : schema.type === 'array') {\n return /^(0|[1-9]\\\\d*)$/.test(part) ? schema.items : undefined;\n }\n\n const property = Object.entries(schema.properties ?? {}).find(([key]) => key === part)?.[1];\n if (property !== undefined) return property;\n return typeof schema.additionalProperties === 'object' ? schema.additionalProperties : undefined;\n}\n\n/*** Derives the item schema only from an enclosing declared repeat-source array. */\nfunction resolveRepeatItemSchema(schema: DataSchema | undefined): DataSchema | undefined {\n const types =\n schema === undefined ? [] : Array.isArray(schema.type) ? schema.type : [schema.type];\n return types.includes('array') ? schema?.items : undefined;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type { RuntimeContextCapabilityId, RuntimeContextCapabilityResolution, } from './capabilities/resolveRuntimeContextCapability';
|
|
2
|
+
export { isRuntimeContextCapabilityOutputPath, resolveRuntimeContextCapability, } from './capabilities/resolveRuntimeContextCapability';
|
|
1
3
|
export { ManifestContext, ManifestProvider, useManifest, useManifestContext, useOptionalManifestContext, } from './ManifestContext';
|
|
2
4
|
export type { ComponentRegistry } from './registry';
|
|
3
5
|
export { createComponentRegistry } from './registry';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { isRuntimeContextCapabilityOutputPath, resolveRuntimeContextCapability, } from './capabilities/resolveRuntimeContextCapability';
|
|
1
2
|
export { ManifestContext, ManifestProvider, useManifest, useManifestContext, useOptionalManifestContext, } from './ManifestContext';
|
|
2
3
|
export { createComponentRegistry } from './registry';
|
|
3
4
|
export { createComponentEventFromHandlerArgs, createRuntimeActionRegistry, dispatchRuntimeComponentEvent, resolveRuntimeActionPayload, resolveRuntimeActionValue, wrapRuntimeEventProps, } from './runtimeActionRegistry';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oCAAoC,EACpC,+BAA+B,GAChC,MAAM,gDAAgD,CAAC;AACxD,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 type {\n RuntimeContextCapabilityId,\n RuntimeContextCapabilityResolution,\n} from './capabilities/resolveRuntimeContextCapability';\nexport {\n isRuntimeContextCapabilityOutputPath,\n resolveRuntimeContextCapability,\n} from './capabilities/resolveRuntimeContextCapability';\nexport {\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,5 +1,5 @@
|
|
|
1
1
|
import type { ApiDefinitionRegistry, ComponentDataBindingRegistry, ComponentEventDto, DataSourceDiagnostic, UiNode } from '@ankhorage/contracts';
|
|
2
|
-
import {
|
|
2
|
+
import type { Capability } from '@ankhorage/contracts/capability';
|
|
3
3
|
import { type RuntimeBindingOperationExecutor, type RuntimeBindingOperationResultCache, type RuntimeBindingOperationResultWriter } from './runtimeBindings';
|
|
4
4
|
import { type RuntimeEventOperationLifecycle } from './runtimeEventOperationLifecycle';
|
|
5
5
|
import type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeActionRegistry.d.ts","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtimeActionRegistry.d.ts","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isCapabilityId } from '@ankhorage/
|
|
1
|
+
import { isCapabilityId } from '@ankhorage/capability';
|
|
2
2
|
import { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';
|
|
3
3
|
import { createRuntimeBindingOperationKey, resolveBindingInputMap, } from './runtimeBindings';
|
|
4
4
|
import { resolveRuntimeEventOperationErrorMessage, } from './runtimeEventOperationLifecycle';
|
|
@@ -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';\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
|
+
{"version":3,"file":"runtimeActionRegistry.js","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["import { isCapabilityId } from '@ankhorage/capability';\nimport 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 } from '@ankhorage/contracts/capability';\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeBindings.d.ts","sourceRoot":"","sources":["../src/runtimeBindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EAErB,eAAe,EAEf,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAElB,4BAA4B,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,MAAM,EACP,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtimeBindings.d.ts","sourceRoot":"","sources":["../src/runtimeBindings.ts"],"names":[],"mappings":"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"}
|
package/dist/runtimeBindings.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRecord } from '@ankhorage/utility/object';
|
|
1
2
|
import { resolveRuntimeBindingOperationSelection } from './runtimeApiSelection';
|
|
2
3
|
export async function resolveRuntimeBindingsAsync(args) {
|
|
3
4
|
const diagnostics = [];
|
|
@@ -233,7 +234,4 @@ function isBindingValue(value) {
|
|
|
233
234
|
return false;
|
|
234
235
|
return Object.values(value).every(isBindingValue);
|
|
235
236
|
}
|
|
236
|
-
function isRecord(value) {
|
|
237
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
238
|
-
}
|
|
239
237
|
//# sourceMappingURL=runtimeBindings.js.map
|