@ankhorage/runtime 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +20 -5
- package/dist/ManifestContext.d.ts +16 -0
- package/dist/ManifestContext.d.ts.map +1 -0
- package/dist/ManifestContext.js +26 -0
- package/dist/ManifestContext.js.map +1 -0
- package/dist/RuntimeRenderer.d.ts +24 -0
- package/dist/RuntimeRenderer.d.ts.map +1 -0
- package/dist/RuntimeRenderer.js +302 -0
- package/dist/RuntimeRenderer.js.map +1 -0
- package/dist/RuntimeRendererConfig.d.ts +51 -0
- package/dist/RuntimeRendererConfig.d.ts.map +1 -0
- package/dist/RuntimeRendererConfig.js +70 -0
- package/dist/RuntimeRendererConfig.js.map +1 -0
- package/dist/RuntimeScreen.d.ts +11 -0
- package/dist/RuntimeScreen.d.ts.map +1 -0
- package/dist/RuntimeScreen.js +59 -0
- package/dist/RuntimeScreen.js.map +1 -0
- package/dist/appExtensionRegistry.d.ts +3 -0
- package/dist/appExtensionRegistry.d.ts.map +1 -0
- package/dist/appExtensionRegistry.js +2 -0
- package/dist/appExtensionRegistry.js.map +1 -0
- package/dist/componentRegistry.d.ts +4 -0
- package/dist/componentRegistry.d.ts.map +1 -0
- package/dist/componentRegistry.js +6 -0
- package/dist/componentRegistry.js.map +1 -0
- package/dist/index.d.ts +27 -52
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -30
- package/dist/index.js.map +1 -1
- package/dist/readme-usage.js +4 -4
- package/dist/readme-usage.js.map +1 -1
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +49 -0
- package/dist/registry.js.map +1 -0
- package/dist/rendering.d.ts +17 -0
- package/dist/rendering.d.ts.map +1 -0
- package/dist/rendering.js +24 -0
- package/dist/rendering.js.map +1 -0
- package/dist/runtimeActionRegistry.d.ts +55 -0
- package/dist/runtimeActionRegistry.d.ts.map +1 -0
- package/dist/runtimeActionRegistry.js +323 -0
- package/dist/runtimeActionRegistry.js.map +1 -0
- package/dist/runtimeApiLoaders.d.ts +35 -0
- package/dist/runtimeApiLoaders.d.ts.map +1 -0
- package/dist/runtimeApiLoaders.js +218 -0
- package/dist/runtimeApiLoaders.js.map +1 -0
- package/dist/runtimeBindings.d.ts +52 -0
- package/dist/runtimeBindings.d.ts.map +1 -0
- package/dist/runtimeBindings.js +299 -0
- package/dist/runtimeBindings.js.map +1 -0
- package/dist/runtimeDataSourceOperations.d.ts +8 -0
- package/dist/runtimeDataSourceOperations.d.ts.map +1 -0
- package/dist/runtimeDataSourceOperations.js +58 -0
- package/dist/runtimeDataSourceOperations.js.map +1 -0
- package/dist/runtimeDbPersist.d.ts +34 -0
- package/dist/runtimeDbPersist.d.ts.map +1 -0
- package/dist/runtimeDbPersist.js +73 -0
- package/dist/runtimeDbPersist.js.map +1 -0
- package/dist/runtimeEventExecution.d.ts +11 -0
- package/dist/runtimeEventExecution.d.ts.map +1 -0
- package/dist/runtimeEventExecution.js +17 -0
- package/dist/runtimeEventExecution.js.map +1 -0
- package/dist/runtimeManifest.d.ts +53 -0
- package/dist/runtimeManifest.d.ts.map +1 -0
- package/dist/runtimeManifest.js +31 -0
- package/dist/runtimeManifest.js.map +1 -0
- package/dist/runtimeNodeProps.d.ts +22 -0
- package/dist/runtimeNodeProps.d.ts.map +1 -0
- package/dist/runtimeNodeProps.js +130 -0
- package/dist/runtimeNodeProps.js.map +1 -0
- package/dist/runtimeRepeat.d.ts +27 -0
- package/dist/runtimeRepeat.d.ts.map +1 -0
- package/dist/runtimeRepeat.js +129 -0
- package/dist/runtimeRepeat.js.map +1 -0
- package/dist/runtimeRepeatDiagnostics.d.ts +3 -0
- package/dist/runtimeRepeatDiagnostics.d.ts.map +1 -0
- package/dist/runtimeRepeatDiagnostics.js +14 -0
- package/dist/runtimeRepeatDiagnostics.js.map +1 -0
- package/dist/runtimeRepeatEmptyState.d.ts +7 -0
- package/dist/runtimeRepeatEmptyState.d.ts.map +1 -0
- package/dist/runtimeRepeatEmptyState.js +10 -0
- package/dist/runtimeRepeatEmptyState.js.map +1 -0
- package/dist/runtimeScreenLoaders.d.ts +71 -0
- package/dist/runtimeScreenLoaders.d.ts.map +1 -0
- package/dist/runtimeScreenLoaders.js +309 -0
- package/dist/runtimeScreenLoaders.js.map +1 -0
- package/dist/runtimeStateAdapter.d.ts +6 -0
- package/dist/runtimeStateAdapter.d.ts.map +1 -0
- package/dist/runtimeStateAdapter.js +162 -0
- package/dist/runtimeStateAdapter.js.map +1 -0
- package/package.json +19 -2
- package/paradox/badges/npm.svg +3 -3
- package/paradox/components.md +72 -0
- package/paradox/diagrams/architecture-overview.mmd +135 -1
- package/paradox/diagrams/export-graph.mmd +303 -18
- package/paradox/diagrams/module-relationships.mmd +98 -1
- package/paradox/diagrams/sequences/create-component-event-from-handler-args.mmd +24 -0
- package/paradox/diagrams/sequences/execute-db-persist-action.mmd +16 -0
- package/paradox/diagrams/sequences/merge-runtime-renderer-config.mmd +11 -0
- package/paradox/diagrams/sequences/resolve-db-persist-input.mmd +13 -0
- package/paradox/diagrams/sequences/resolve-runtime-action-payload.mmd +8 -0
- package/paradox/diagrams/sequences/resolve-runtime-action-value.mmd +5 -0
- package/paradox/diagrams/sequences/runtime-renderer-config-provider.mmd +17 -0
- package/paradox/diagrams/sequences/runtime-screen.mmd +17 -0
- package/paradox/diagrams/sequences/use-manifest-context.mmd +5 -0
- package/paradox/diagrams/sequences/use-manifest.mmd +5 -0
- package/paradox/diagrams/sequences/use-optional-manifest-context.mmd +5 -0
- package/paradox/diagrams/sequences/use-runtime-renderer-config.mmd +5 -0
- package/paradox/diagrams/sequences/use-runtime-screen-operation-loaders.mmd +5 -0
- package/paradox/diagrams/sequences/validate-runtime-binding-operation-ref.mmd +8 -0
- package/paradox/diagrams/sequences/wrap-runtime-event-props.mmd +5 -0
- package/paradox/exports.json +3385 -330
- package/paradox/exports.md +1051 -38
- package/paradox/index.html +8291 -450
- package/paradox/paradox.json +10013 -511
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeRendererConfig.js","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n Action,\n ComponentDataBindingRegistry,\n ComponentEventDto,\n DataSourceDiagnostic,\n DataSourceRegistry,\n DbAdapter,\n DbRealtimeAdapter,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport type {\n RuntimeNodePropsResolver,\n RuntimeResolveNodePropsArgs,\n} from '@ankhorage/contracts/runtime';\nimport React, { createContext, useContext } from 'react';\n\nimport type { ComponentRegistry } from './registry';\nimport type {\n RuntimeBindingOperationExecutor,\n RuntimeBindingOperationResultCache,\n RuntimeBindingOperationResultWriter,\n} from './runtimeBindings';\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 type RuntimeAction = Action | { readonly type: string; readonly payload?: object };\nexport type RuntimeActionHandler = (args: RuntimeActionHandlerArgs) => Promise<void> | void;\nexport type RuntimeActionHandlers = Record<string, 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 actionHandlers?: RuntimeActionHandlers;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n stateAdapter?: StateAdapter;\n bindingContext?: Record<string, unknown>;\n dataSources?: DataSourceRegistry;\n dataBindings?: ComponentDataBindingRegistry;\n operationResults?: RuntimeBindingOperationResultCache;\n writeOperationResult?: RuntimeBindingOperationResultWriter;\n executeAction?: RuntimeActionExecutor;\n executeOperation?: RuntimeBindingOperationExecutor;\n onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\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 actionHandlers,\n dbAdapter: localConfig?.dbAdapter ?? inheritedConfig?.dbAdapter,\n dbRealtimeAdapter: localConfig?.dbRealtimeAdapter ?? inheritedConfig?.dbRealtimeAdapter,\n stateAdapter: localConfig?.stateAdapter ?? inheritedConfig?.stateAdapter,\n bindingContext,\n dataSources: localConfig?.dataSources ?? inheritedConfig?.dataSources,\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 };\n}\n\nexport function RuntimeRendererConfigProvider(props: {\n value: RuntimeRendererConfig;\n children: React.ReactNode;\n}) {\n const { value, children } = props;\n const inheritedConfig = useContext(RuntimeRendererConfigContext);\n const mergedConfig = mergeRuntimeRendererConfig(value, inheritedConfig);\n\n return (\n <RuntimeRendererConfigContext.Provider value={mergedConfig}>\n {children}\n </RuntimeRendererConfigContext.Provider>\n );\n}\n\nexport function useRuntimeRendererConfig(): RuntimeRendererConfig {\n return useContext(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,11 @@
|
|
|
1
|
+
import type { AppManifest, ScreenSpec, StateAdapter } from '@ankhorage/contracts';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { ComponentRegistry } from './registry';
|
|
4
|
+
export interface RuntimeScreenProps {
|
|
5
|
+
readonly manifest: AppManifest;
|
|
6
|
+
readonly screen: ScreenSpec;
|
|
7
|
+
readonly registry?: ComponentRegistry;
|
|
8
|
+
readonly stateAdapter?: StateAdapter;
|
|
9
|
+
}
|
|
10
|
+
export declare function RuntimeScreen(props: RuntimeScreenProps): React.JSX.Element;
|
|
11
|
+
//# sourceMappingURL=RuntimeScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeScreen.d.ts","sourceRoot":"","sources":["../src/RuntimeScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAGX,UAAU,EACV,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOpD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAoCtD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useRuntimeApiStateLoaders } from './runtimeApiLoaders';
|
|
3
|
+
import { RuntimeRenderer } from './RuntimeRenderer';
|
|
4
|
+
import { useRuntimeRendererConfig } from './RuntimeRendererConfig';
|
|
5
|
+
import { resolveScreenApiLoaders, useRuntimeScreenOperationLoaders } from './runtimeScreenLoaders';
|
|
6
|
+
export function RuntimeScreen(props) {
|
|
7
|
+
const { manifest, screen, registry, stateAdapter: injectedStateAdapter } = props;
|
|
8
|
+
const runtimeConfig = useRuntimeRendererConfig();
|
|
9
|
+
const loaders = React.useMemo(() => [
|
|
10
|
+
...resolveScreenApiLoaders(screen),
|
|
11
|
+
...resolveApiLoadersFromBindings(manifest.dataBindings),
|
|
12
|
+
], [manifest.dataBindings, screen]);
|
|
13
|
+
const { stateAdapter, stateVersion } = useRuntimeApiStateLoaders({
|
|
14
|
+
data: manifest.data,
|
|
15
|
+
loaders,
|
|
16
|
+
stateAdapter: injectedStateAdapter,
|
|
17
|
+
});
|
|
18
|
+
const screenOperationLoaders = useRuntimeScreenOperationLoaders({
|
|
19
|
+
bindingContext: runtimeConfig.bindingContext,
|
|
20
|
+
dataSources: manifest.dataSources,
|
|
21
|
+
executeOperation: runtimeConfig.executeOperation,
|
|
22
|
+
operationResults: runtimeConfig.operationResults,
|
|
23
|
+
onDiagnostics: runtimeConfig.onDiagnostics,
|
|
24
|
+
screen,
|
|
25
|
+
});
|
|
26
|
+
return (<RuntimeRenderer key={`${screen.id}:${stateVersion}:${screenOperationLoaders.renderVersion}`} node={screen.root} isRoot registry={registry} stateAdapter={stateAdapter} dataBindings={manifest.dataBindings} dataSources={manifest.dataSources} operationResults={screenOperationLoaders.operationResults}/>);
|
|
27
|
+
}
|
|
28
|
+
function resolveApiLoadersFromBindings(dataBindings) {
|
|
29
|
+
const loadersByApiId = new Map();
|
|
30
|
+
for (const componentBinding of Object.values(dataBindings ?? {})) {
|
|
31
|
+
for (const binding of Object.values(componentBinding.props ?? {})) {
|
|
32
|
+
const loader = resolveApiLoaderFromPropBinding(binding);
|
|
33
|
+
if (loader !== null && !loadersByApiId.has(loader.apiId)) {
|
|
34
|
+
loadersByApiId.set(loader.apiId, loader);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return [...loadersByApiId.values()].sort((left, right) => left.apiId.localeCompare(right.apiId));
|
|
39
|
+
}
|
|
40
|
+
function resolveApiLoaderFromPropBinding(binding) {
|
|
41
|
+
if (binding.source.kind !== 'state') {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const parts = binding.source.path
|
|
45
|
+
.split('.')
|
|
46
|
+
.map((part) => part.trim())
|
|
47
|
+
.filter(Boolean);
|
|
48
|
+
const [root, apiId, collectionSlot] = parts;
|
|
49
|
+
if (root !== 'apis' || apiId === undefined || collectionSlot !== 'current') {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
kind: 'api',
|
|
54
|
+
apiId,
|
|
55
|
+
mode: 'one',
|
|
56
|
+
targetPath: `apis.${apiId}.current`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=RuntimeScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeScreen.js","sourceRoot":"","sources":["../src/RuntimeScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n AppManifest,\n ComponentDataBindingRegistry,\n PropBinding,\n ScreenSpec,\n StateAdapter,\n} from '@ankhorage/contracts';\nimport React from 'react';\n\nimport type { ComponentRegistry } from './registry';\nimport type { RuntimeApiLoaderDefinition } from './runtimeApiLoaders';\nimport { useRuntimeApiStateLoaders } from './runtimeApiLoaders';\nimport { RuntimeRenderer } from './RuntimeRenderer';\nimport { useRuntimeRendererConfig } from './RuntimeRendererConfig';\nimport { resolveScreenApiLoaders, useRuntimeScreenOperationLoaders } from './runtimeScreenLoaders';\n\nexport interface RuntimeScreenProps {\n readonly manifest: AppManifest;\n readonly screen: ScreenSpec;\n readonly registry?: ComponentRegistry;\n readonly stateAdapter?: StateAdapter;\n}\n\nexport function RuntimeScreen(props: RuntimeScreenProps) {\n const { manifest, screen, registry, stateAdapter: injectedStateAdapter } = props;\n const runtimeConfig = useRuntimeRendererConfig();\n const loaders = React.useMemo(\n () => [\n ...resolveScreenApiLoaders(screen),\n ...resolveApiLoadersFromBindings(manifest.dataBindings),\n ],\n [manifest.dataBindings, screen],\n );\n const { stateAdapter, stateVersion } = useRuntimeApiStateLoaders({\n data: manifest.data,\n loaders,\n stateAdapter: injectedStateAdapter,\n });\n const screenOperationLoaders = useRuntimeScreenOperationLoaders({\n bindingContext: runtimeConfig.bindingContext,\n dataSources: manifest.dataSources,\n executeOperation: runtimeConfig.executeOperation,\n operationResults: runtimeConfig.operationResults,\n onDiagnostics: runtimeConfig.onDiagnostics,\n screen,\n });\n\n return (\n <RuntimeRenderer\n key={`${screen.id}:${stateVersion}:${screenOperationLoaders.renderVersion}`}\n node={screen.root}\n isRoot\n registry={registry}\n stateAdapter={stateAdapter}\n dataBindings={manifest.dataBindings}\n dataSources={manifest.dataSources}\n operationResults={screenOperationLoaders.operationResults}\n />\n );\n}\n\nfunction resolveApiLoadersFromBindings(\n dataBindings: ComponentDataBindingRegistry | undefined,\n): readonly RuntimeApiLoaderDefinition[] {\n const loadersByApiId = new Map<string, RuntimeApiLoaderDefinition>();\n\n for (const componentBinding of Object.values(dataBindings ?? {})) {\n for (const binding of Object.values(componentBinding.props ?? {})) {\n const loader = resolveApiLoaderFromPropBinding(binding);\n if (loader !== null && !loadersByApiId.has(loader.apiId)) {\n loadersByApiId.set(loader.apiId, loader);\n }\n }\n }\n\n return [...loadersByApiId.values()].sort((left, right) => left.apiId.localeCompare(right.apiId));\n}\n\nfunction resolveApiLoaderFromPropBinding(binding: PropBinding): RuntimeApiLoaderDefinition | null {\n if (binding.source.kind !== 'state') {\n return null;\n }\n\n const parts = binding.source.path\n .split('.')\n .map((part) => part.trim())\n .filter(Boolean);\n const [root, apiId, collectionSlot] = parts;\n if (root !== 'apis' || apiId === undefined || collectionSlot !== 'current') {\n return null;\n }\n\n return {\n kind: 'api',\n apiId,\n mode: 'one',\n targetPath: `apis.${apiId}.current`,\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appExtensionRegistry.d.ts","sourceRoot":"","sources":["../src/appExtensionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,gCAAgC,EAAE,iBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appExtensionRegistry.js","sourceRoot":"","sources":["../src/appExtensionRegistry.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAsB,EAAE,CAAC","sourcesContent":["import type { ComponentRegistry } from './componentRegistry';\n\nexport const APP_EXTENSION_COMPONENT_REGISTRY: ComponentRegistry = {};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentRegistry.d.ts","sourceRoot":"","sources":["../src/componentRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAElE,wBAAgB,uBAAuB,CACrC,GAAG,UAAU,EAAE,SAAS,iBAAiB,EAAE,GAC1C,iBAAiB,CAInB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentRegistry.js","sourceRoot":"","sources":["../src/componentRegistry.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,uBAAuB,CACrC,GAAG,UAAwC;IAE3C,OAAO,UAAU,CAAC,MAAM,CAAoB,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE;QACvE,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC","sourcesContent":["import type React from 'react';\n\nexport type ComponentRegistry = Record<string, React.ElementType>;\n\nexport function createComponentRegistry(\n ...registries: readonly ComponentRegistry[]\n): ComponentRegistry {\n return registries.reduce<ComponentRegistry>((mergedRegistry, registry) => {\n return { ...mergedRegistry, ...registry };\n }, {});\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,53 +1,28 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
export
|
|
28
|
-
readonly id: string;
|
|
29
|
-
readonly kind: string;
|
|
30
|
-
readonly options?: Options;
|
|
31
|
-
}
|
|
32
|
-
export interface RuntimeManifest {
|
|
33
|
-
readonly actions: readonly RuntimeActionDescriptor[];
|
|
34
|
-
readonly adapters: readonly RuntimeAdapterDescriptor[];
|
|
35
|
-
readonly bindings: readonly RuntimeBindingDescriptor[];
|
|
36
|
-
readonly config: RuntimeConfig;
|
|
37
|
-
readonly diagnostics: readonly RuntimeDiagnostic[];
|
|
38
|
-
readonly kind: typeof RUNTIME_MANIFEST_KIND;
|
|
39
|
-
readonly version: 1;
|
|
40
|
-
}
|
|
41
|
-
export interface RuntimeManifestInput {
|
|
42
|
-
readonly actions?: readonly RuntimeActionDescriptor[];
|
|
43
|
-
readonly adapters?: readonly RuntimeAdapterDescriptor[];
|
|
44
|
-
readonly bindings?: readonly RuntimeBindingDescriptor[];
|
|
45
|
-
readonly config: RuntimeConfig;
|
|
46
|
-
readonly diagnostics?: readonly RuntimeDiagnostic[];
|
|
47
|
-
}
|
|
48
|
-
export declare function defineRuntimeAction<Data = unknown>(action: RuntimeActionDescriptor<Data>): RuntimeActionDescriptor<Data>;
|
|
49
|
-
export declare function defineRuntimeAdapter<Options = unknown>(adapter: RuntimeAdapterDescriptor<Options>): RuntimeAdapterDescriptor<Options>;
|
|
50
|
-
export declare function defineRuntimeBinding<Value = unknown>(binding: RuntimeBindingDescriptor<Value>): RuntimeBindingDescriptor<Value>;
|
|
51
|
-
export declare function createRuntimeManifest(input: RuntimeManifestInput): RuntimeManifest;
|
|
52
|
-
export declare function listRuntimeCapabilities(): readonly RuntimeCapability[];
|
|
1
|
+
export { ManifestContext, ManifestProvider, useManifest, useManifestContext, useOptionalManifestContext, } from './ManifestContext';
|
|
2
|
+
export type { ComponentRegistry } from './registry';
|
|
3
|
+
export { APP_EXTENSION_COMPONENT_REGISTRY, createComponentRegistry, SURFACE_COMPONENT_REGISTRY, ZORA_COMPONENT_REGISTRY, } from './registry';
|
|
4
|
+
export { ZORA_COMPONENT_REGISTRY as DEFAULT_COMPONENT_REGISTRY } from './registry';
|
|
5
|
+
export type { RuntimeActionRegistry, RuntimeActionResolutionArgs, RuntimeActionResolutionScope, RuntimeComponentEventDispatchArgs, RuntimeEventPropWrapArgs, } from './runtimeActionRegistry';
|
|
6
|
+
export { createComponentEventFromHandlerArgs, createRuntimeActionRegistry, dispatchRuntimeComponentEvent, resolveRuntimeActionPayload, resolveRuntimeActionValue, wrapRuntimeEventProps, } from './runtimeActionRegistry';
|
|
7
|
+
export type { RuntimeApiLoaderDefinition, RuntimeApiLoaderDiagnostic, RuntimeApiLoaderExecutionResult, RuntimeApiLoaderMaterializationResult, RuntimeApiLoaderMode, } from './runtimeApiLoaders';
|
|
8
|
+
export { executeRuntimeApiLoaders, materializeRuntimeApiLoaderState, useRuntimeApiStateLoaders, } from './runtimeApiLoaders';
|
|
9
|
+
export type { RuntimeBindingOperationExecutionArgs, RuntimeBindingOperationExecutionResult, RuntimeBindingOperationExecutor, RuntimeBindingOperationKey, RuntimeBindingOperationResultCache, RuntimeBindingOperationResultWriter, RuntimeBindingResolutionArgs, RuntimeBindingResolutionContext, RuntimeBindingResolutionResult, } from './runtimeBindings';
|
|
10
|
+
export { createRuntimeBindingOperationKey, resolveBindingInputMap, resolveRuntimeBindings, resolveRuntimeBindingsAsync, resolveRuntimeBindingValue, resolveRuntimeBindingValueSync, validateRuntimeBindingOperationRef, } from './runtimeBindings';
|
|
11
|
+
export type { RuntimeDataSourceOperationExecutorOptions } from './runtimeDataSourceOperations';
|
|
12
|
+
export { createRuntimeDataSourceOperationExecutor } from './runtimeDataSourceOperations';
|
|
13
|
+
export type { RuntimeDbPersistError, RuntimeDbPersistExecutionResult, RuntimeDbPersistResult, } from './runtimeDbPersist';
|
|
14
|
+
export { createDbPersistActionHandler, createDbPersistAdapterError, executeDbPersistAction, resolveDbPersistInput, } from './runtimeDbPersist';
|
|
15
|
+
export { dispatchRuntimeComponentEventWithReporting, type RuntimeEventDiagnosticsReporter, } from './runtimeEventExecution';
|
|
16
|
+
export type { RuntimeActionDescriptor, RuntimeAdapterDescriptor, RuntimeBindingDescriptor, RuntimeCapability, RuntimeDiagnostic, RuntimeManifest, RuntimeManifestConfig, RuntimeManifestInput, } from './runtimeManifest';
|
|
17
|
+
export { createRuntimeManifest, defineRuntimeAction, defineRuntimeAdapter, defineRuntimeBinding, listRuntimeCapabilities, RUNTIME_CAPABILITIES, RUNTIME_MANIFEST_KIND, } from './runtimeManifest';
|
|
18
|
+
export type { RuntimeRendererProps } from './RuntimeRenderer';
|
|
19
|
+
export { RuntimeRenderer } from './RuntimeRenderer';
|
|
20
|
+
export { composeRuntimeNodePropsResolver, composeRuntimeRendererWrapNode, mergeRuntimeRendererConfig, type RuntimeAction, type RuntimeActionExecutor, type RuntimeActionHandler, type RuntimeActionHandlerArgs, type RuntimeActionHandlers, type RuntimeNodePropsResolver, type RuntimeRendererConfig, RuntimeRendererConfigProvider, type RuntimeRendererWrapArgs, type RuntimeResolveNodePropsArgs, useRuntimeRendererConfig, } from './RuntimeRendererConfig';
|
|
21
|
+
export { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';
|
|
22
|
+
export type { RuntimeScreenProps } from './RuntimeScreen';
|
|
23
|
+
export { RuntimeScreen } from './RuntimeScreen';
|
|
24
|
+
export type { RuntimeScreenOperationLoaderExecutionResult, RuntimeScreenOperationLoaderState, } from './runtimeScreenLoaders';
|
|
25
|
+
export { createPendingRuntimeScreenOperationLoaderState, createRuntimeScreenLoaderRequestKey, executeRuntimeScreenOperationLoaders, resolveScreenApiLoaders, resolveScreenOperationLoaders, useRuntimeScreenOperationLoaders, } from './runtimeScreenLoaders';
|
|
26
|
+
export type { RuntimeMemoryStateAdapterOptions } from './runtimeStateAdapter';
|
|
27
|
+
export { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';
|
|
53
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,17 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
export function createRuntimeManifest(input) {
|
|
18
|
-
return {
|
|
19
|
-
actions: input.actions ?? [],
|
|
20
|
-
adapters: input.adapters ?? [],
|
|
21
|
-
bindings: input.bindings ?? [],
|
|
22
|
-
config: input.config,
|
|
23
|
-
diagnostics: input.diagnostics ?? [],
|
|
24
|
-
kind: RUNTIME_MANIFEST_KIND,
|
|
25
|
-
version: 1,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export function listRuntimeCapabilities() {
|
|
29
|
-
return RUNTIME_CAPABILITIES;
|
|
30
|
-
}
|
|
1
|
+
export { ManifestContext, ManifestProvider, useManifest, useManifestContext, useOptionalManifestContext, } from './ManifestContext';
|
|
2
|
+
export { APP_EXTENSION_COMPONENT_REGISTRY, createComponentRegistry, SURFACE_COMPONENT_REGISTRY, ZORA_COMPONENT_REGISTRY, } from './registry';
|
|
3
|
+
export { ZORA_COMPONENT_REGISTRY as DEFAULT_COMPONENT_REGISTRY } from './registry';
|
|
4
|
+
export { createComponentEventFromHandlerArgs, createRuntimeActionRegistry, dispatchRuntimeComponentEvent, resolveRuntimeActionPayload, resolveRuntimeActionValue, wrapRuntimeEventProps, } from './runtimeActionRegistry';
|
|
5
|
+
export { executeRuntimeApiLoaders, materializeRuntimeApiLoaderState, useRuntimeApiStateLoaders, } from './runtimeApiLoaders';
|
|
6
|
+
export { createRuntimeBindingOperationKey, resolveBindingInputMap, resolveRuntimeBindings, resolveRuntimeBindingsAsync, resolveRuntimeBindingValue, resolveRuntimeBindingValueSync, validateRuntimeBindingOperationRef, } from './runtimeBindings';
|
|
7
|
+
export { createRuntimeDataSourceOperationExecutor } from './runtimeDataSourceOperations';
|
|
8
|
+
export { createDbPersistActionHandler, createDbPersistAdapterError, executeDbPersistAction, resolveDbPersistInput, } from './runtimeDbPersist';
|
|
9
|
+
export { dispatchRuntimeComponentEventWithReporting, } from './runtimeEventExecution';
|
|
10
|
+
export { createRuntimeManifest, defineRuntimeAction, defineRuntimeAdapter, defineRuntimeBinding, listRuntimeCapabilities, RUNTIME_CAPABILITIES, RUNTIME_MANIFEST_KIND, } from './runtimeManifest';
|
|
11
|
+
export { RuntimeRenderer } from './RuntimeRenderer';
|
|
12
|
+
export { composeRuntimeNodePropsResolver, composeRuntimeRendererWrapNode, mergeRuntimeRendererConfig, RuntimeRendererConfigProvider, useRuntimeRendererConfig, } from './RuntimeRendererConfig';
|
|
13
|
+
export { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';
|
|
14
|
+
export { RuntimeScreen } from './RuntimeScreen';
|
|
15
|
+
export { createPendingRuntimeScreenOperationLoaderState, createRuntimeScreenLoaderRequestKey, executeRuntimeScreenOperationLoaders, resolveScreenApiLoaders, resolveScreenOperationLoaders, useRuntimeScreenOperationLoaders, } from './runtimeScreenLoaders';
|
|
16
|
+
export { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';
|
|
31
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
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,EACL,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,IAAI,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAQnF,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AAMzF,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0CAA0C,GAE3C,MAAM,yBAAyB,CAAC;AAWjC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,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,uBAAuB,EACvB,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 {\n APP_EXTENSION_COMPONENT_REGISTRY,\n createComponentRegistry,\n SURFACE_COMPONENT_REGISTRY,\n ZORA_COMPONENT_REGISTRY,\n} from './registry';\nexport { ZORA_COMPONENT_REGISTRY as DEFAULT_COMPONENT_REGISTRY } 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 {\n RuntimeApiLoaderDefinition,\n RuntimeApiLoaderDiagnostic,\n RuntimeApiLoaderExecutionResult,\n RuntimeApiLoaderMaterializationResult,\n RuntimeApiLoaderMode,\n} from './runtimeApiLoaders';\nexport {\n executeRuntimeApiLoaders,\n materializeRuntimeApiLoaderState,\n useRuntimeApiStateLoaders,\n} from './runtimeApiLoaders';\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 validateRuntimeBindingOperationRef,\n} from './runtimeBindings';\nexport type { RuntimeDataSourceOperationExecutorOptions } from './runtimeDataSourceOperations';\nexport { createRuntimeDataSourceOperationExecutor } from './runtimeDataSourceOperations';\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 RuntimeActionDescriptor,\n RuntimeAdapterDescriptor,\n RuntimeBindingDescriptor,\n RuntimeCapability,\n RuntimeDiagnostic,\n RuntimeManifest,\n RuntimeManifestConfig,\n RuntimeManifestInput,\n} from './runtimeManifest';\nexport {\n createRuntimeManifest,\n defineRuntimeAction,\n defineRuntimeAdapter,\n defineRuntimeBinding,\n listRuntimeCapabilities,\n RUNTIME_CAPABILITIES,\n RUNTIME_MANIFEST_KIND,\n} from './runtimeManifest';\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 resolveScreenApiLoaders,\n resolveScreenOperationLoaders,\n useRuntimeScreenOperationLoaders,\n} from './runtimeScreenLoaders';\nexport type { RuntimeMemoryStateAdapterOptions } from './runtimeStateAdapter';\nexport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n"]}
|
package/dist/readme-usage.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createRuntimeManifest } from './index.js';
|
|
2
2
|
/***
|
|
3
|
-
*
|
|
3
|
+
* Framework-neutral runtime boundary
|
|
4
4
|
*
|
|
5
|
-
* `@ankhorage/runtime` owns platform-neutral runtime contracts for generated apps.
|
|
5
|
+
* `@ankhorage/runtime` owns platform-neutral runtime renderer contracts for generated apps.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Host apps keep router, theme, and other framework-specific behavior outside this package and
|
|
8
|
+
* inject it at the runtime boundary.
|
|
9
9
|
*
|
|
10
10
|
* @usage
|
|
11
11
|
*/
|
package/dist/readme-usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readme-usage.js","sourceRoot":"","sources":["../src/readme-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;GASG;AACH,qBAAqB,CAAC;IACpB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC","sourcesContent":["import { createRuntimeManifest } from './index.js';\n\n/***\n *
|
|
1
|
+
{"version":3,"file":"readme-usage.js","sourceRoot":"","sources":["../src/readme-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;GASG;AACH,qBAAqB,CAAC;IACpB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC","sourcesContent":["import { createRuntimeManifest } from './index.js';\n\n/***\n * Framework-neutral runtime boundary\n *\n * `@ankhorage/runtime` owns platform-neutral runtime renderer contracts for generated apps.\n *\n * Host apps keep router, theme, and other framework-specific behavior outside this package and\n * inject it at the runtime boundary.\n *\n * @usage\n */\ncreateRuntimeManifest({\n config: {\n appId: 'demo',\n },\n});\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ComponentRegistry } from './componentRegistry';
|
|
2
|
+
export { APP_EXTENSION_COMPONENT_REGISTRY } from './appExtensionRegistry';
|
|
3
|
+
export type { ComponentRegistry } from './componentRegistry';
|
|
4
|
+
export { createComponentRegistry } from './componentRegistry';
|
|
5
|
+
export declare const SURFACE_COMPONENT_REGISTRY: ComponentRegistry;
|
|
6
|
+
export declare const ZORA_COMPONENT_REGISTRY: ComponentRegistry;
|
|
7
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AA2C9D,eAAO,MAAM,0BAA0B,EAAE,iBAAsB,CAAC;AA4ChE,eAAO,MAAM,uBAAuB,EAAE,iBAIrC,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as Zora from '@ankhorage/zora';
|
|
2
|
+
import { APP_EXTENSION_COMPONENT_REGISTRY } from './appExtensionRegistry';
|
|
3
|
+
import { createComponentRegistry } from './componentRegistry';
|
|
4
|
+
export { APP_EXTENSION_COMPONENT_REGISTRY } from './appExtensionRegistry';
|
|
5
|
+
export { createComponentRegistry } from './componentRegistry';
|
|
6
|
+
export const SURFACE_COMPONENT_REGISTRY = {};
|
|
7
|
+
function createZoraRegistryEntries(zora) {
|
|
8
|
+
return {
|
|
9
|
+
BarcodeScannerView: zora.BarcodeScannerView,
|
|
10
|
+
Box: zora.Box,
|
|
11
|
+
Button: zora.Button,
|
|
12
|
+
ButtonGroup: zora.ButtonGroup,
|
|
13
|
+
CameraPermissionView: zora.CameraPermissionView,
|
|
14
|
+
Card: zora.Card,
|
|
15
|
+
ChatListItem: zora.ChatListItem,
|
|
16
|
+
Container: zora.Container,
|
|
17
|
+
Divider: zora.Divider,
|
|
18
|
+
DisclosureSection: zora.DisclosureSection,
|
|
19
|
+
EmptyState: zora.EmptyState,
|
|
20
|
+
FormField: zora.FormField,
|
|
21
|
+
Grid: zora.Grid,
|
|
22
|
+
Heading: zora.Heading,
|
|
23
|
+
Hero: zora.Hero,
|
|
24
|
+
Image: zora.Image,
|
|
25
|
+
Input: zora.Input,
|
|
26
|
+
MessageBubble: zora.MessageBubble,
|
|
27
|
+
NavigationItem: zora.NavigationItem,
|
|
28
|
+
NavigationList: zora.NavigationList,
|
|
29
|
+
Notice: zora.Notice,
|
|
30
|
+
OAuthProviderButton: zora.OAuthProviderButton,
|
|
31
|
+
OAuthProviderList: zora.OAuthProviderList,
|
|
32
|
+
Panel: zora.Panel,
|
|
33
|
+
PostCard: zora.PostCard,
|
|
34
|
+
ProductCard: zora.ProductCard,
|
|
35
|
+
Progress: zora.Progress,
|
|
36
|
+
ScanOverlay: zora.ScanOverlay,
|
|
37
|
+
Screen: zora.Screen,
|
|
38
|
+
ScreenSection: zora.ScreenSection,
|
|
39
|
+
SectionHeader: zora.SectionHeader,
|
|
40
|
+
SettingsRow: zora.SettingsRow,
|
|
41
|
+
Stack: zora.Stack,
|
|
42
|
+
Text: zora.Text,
|
|
43
|
+
Textarea: zora.Textarea,
|
|
44
|
+
ZoraDrawerContent: zora.ZoraDrawerContent,
|
|
45
|
+
ZoraTabBar: zora.ZoraTabBar,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export const ZORA_COMPONENT_REGISTRY = createComponentRegistry(SURFACE_COMPONENT_REGISTRY, createZoraRegistryEntries(Zora), APP_EXTENSION_COMPONENT_REGISTRY);
|
|
49
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAA0B,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AA2C9D,MAAM,CAAC,MAAM,0BAA0B,GAAsB,EAAE,CAAC;AAEhE,SAAS,yBAAyB,CAAC,IAAwB;IACzD,OAAO;QACL,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAsB,uBAAuB,CAC/E,0BAA0B,EAC1B,yBAAyB,CAAC,IAAI,CAAC,EAC/B,gCAAgC,CACjC,CAAC","sourcesContent":["import * as Zora from '@ankhorage/zora';\n\nimport { APP_EXTENSION_COMPONENT_REGISTRY } from './appExtensionRegistry';\nimport { type ComponentRegistry, createComponentRegistry } from './componentRegistry';\n\nexport { APP_EXTENSION_COMPONENT_REGISTRY } from './appExtensionRegistry';\nexport type { ComponentRegistry } from './componentRegistry';\nexport { createComponentRegistry } from './componentRegistry';\n\ntype ZoraRegistryModule = Pick<\n typeof Zora,\n | 'BarcodeScannerView'\n | 'Box'\n | 'Button'\n | 'ButtonGroup'\n | 'CameraPermissionView'\n | 'Card'\n | 'ChatListItem'\n | 'Container'\n | 'Divider'\n | 'DisclosureSection'\n | 'EmptyState'\n | 'FormField'\n | 'Grid'\n | 'Heading'\n | 'Hero'\n | 'Image'\n | 'Input'\n | 'MessageBubble'\n | 'NavigationItem'\n | 'NavigationList'\n | 'Notice'\n | 'OAuthProviderButton'\n | 'OAuthProviderList'\n | 'Panel'\n | 'PostCard'\n | 'ProductCard'\n | 'Progress'\n | 'ScanOverlay'\n | 'Screen'\n | 'ScreenSection'\n | 'SectionHeader'\n | 'SettingsRow'\n | 'Stack'\n | 'Text'\n | 'Textarea'\n | 'ZoraDrawerContent'\n | 'ZoraTabBar'\n>;\n\nexport const SURFACE_COMPONENT_REGISTRY: ComponentRegistry = {};\n\nfunction createZoraRegistryEntries(zora: ZoraRegistryModule): ComponentRegistry {\n return {\n BarcodeScannerView: zora.BarcodeScannerView,\n Box: zora.Box,\n Button: zora.Button,\n ButtonGroup: zora.ButtonGroup,\n CameraPermissionView: zora.CameraPermissionView,\n Card: zora.Card,\n ChatListItem: zora.ChatListItem,\n Container: zora.Container,\n Divider: zora.Divider,\n DisclosureSection: zora.DisclosureSection,\n EmptyState: zora.EmptyState,\n FormField: zora.FormField,\n Grid: zora.Grid,\n Heading: zora.Heading,\n Hero: zora.Hero,\n Image: zora.Image,\n Input: zora.Input,\n MessageBubble: zora.MessageBubble,\n NavigationItem: zora.NavigationItem,\n NavigationList: zora.NavigationList,\n Notice: zora.Notice,\n OAuthProviderButton: zora.OAuthProviderButton,\n OAuthProviderList: zora.OAuthProviderList,\n Panel: zora.Panel,\n PostCard: zora.PostCard,\n ProductCard: zora.ProductCard,\n Progress: zora.Progress,\n ScanOverlay: zora.ScanOverlay,\n Screen: zora.Screen,\n ScreenSection: zora.ScreenSection,\n SectionHeader: zora.SectionHeader,\n SettingsRow: zora.SettingsRow,\n Stack: zora.Stack,\n Text: zora.Text,\n Textarea: zora.Textarea,\n ZoraDrawerContent: zora.ZoraDrawerContent,\n ZoraTabBar: zora.ZoraTabBar,\n };\n}\n\nexport const ZORA_COMPONENT_REGISTRY: ComponentRegistry = createComponentRegistry(\n SURFACE_COMPONENT_REGISTRY,\n createZoraRegistryEntries(Zora),\n APP_EXTENSION_COMPONENT_REGISTRY,\n);\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { ComponentRegistry } from './registry';
|
|
3
|
+
export declare function resolveRuntimeRegistry(args: {
|
|
4
|
+
propRegistry?: ComponentRegistry;
|
|
5
|
+
configRegistry?: ComponentRegistry;
|
|
6
|
+
fallbackRegistry: ComponentRegistry;
|
|
7
|
+
}): ComponentRegistry;
|
|
8
|
+
export declare function resolveRenderedChildren(args: {
|
|
9
|
+
propChildren: React.ReactNode;
|
|
10
|
+
renderedChildren: React.ReactNode[] | undefined;
|
|
11
|
+
}): React.ReactNode;
|
|
12
|
+
export declare function getUnknownComponentDiagnostic(componentType: string, registry: ComponentRegistry): {
|
|
13
|
+
title: string;
|
|
14
|
+
detail: string;
|
|
15
|
+
suggestion: string;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=rendering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,gBAAgB,EAAE,iBAAiB,CAAC;CACrC,GAAG,iBAAiB,CAGpB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,gBAAgB,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC;CACjD,GAAG,KAAK,CAAC,SAAS,CAQlB;AAED,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,iBAAiB,GAC1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAcA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function resolveRuntimeRegistry(args) {
|
|
2
|
+
const { propRegistry, configRegistry, fallbackRegistry } = args;
|
|
3
|
+
return propRegistry ?? configRegistry ?? fallbackRegistry;
|
|
4
|
+
}
|
|
5
|
+
export function resolveRenderedChildren(args) {
|
|
6
|
+
const { propChildren, renderedChildren } = args;
|
|
7
|
+
if (renderedChildren && renderedChildren.length > 0) {
|
|
8
|
+
return renderedChildren;
|
|
9
|
+
}
|
|
10
|
+
return propChildren;
|
|
11
|
+
}
|
|
12
|
+
export function getUnknownComponentDiagnostic(componentType, registry) {
|
|
13
|
+
const registeredTypes = Object.keys(registry).sort();
|
|
14
|
+
const preview = registeredTypes.slice(0, 8).join(', ');
|
|
15
|
+
const remainingCount = Math.max(registeredTypes.length - 8, 0);
|
|
16
|
+
return {
|
|
17
|
+
title: `Unknown component type: ${componentType}`,
|
|
18
|
+
detail: registeredTypes.length === 0
|
|
19
|
+
? 'No component registry is active for this render tree.'
|
|
20
|
+
: `Registered types: ${preview}${remainingCount > 0 ? `, +${remainingCount} more` : ''}.`,
|
|
21
|
+
suggestion: 'Check the active runtime component registry. ZORA manifests require a ZORA-aware registry.',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,sBAAsB,CAAC,IAItC;IACC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAChE,OAAO,YAAY,IAAI,cAAc,IAAI,gBAAgB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAGvC;IACC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAEhD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,aAAqB,EACrB,QAA2B;IAM3B,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,KAAK,EAAE,2BAA2B,aAAa,EAAE;QACjD,MAAM,EACJ,eAAe,CAAC,MAAM,KAAK,CAAC;YAC1B,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,qBAAqB,OAAO,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,cAAc,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG;QAC7F,UAAU,EACR,4FAA4F;KAC/F,CAAC;AACJ,CAAC","sourcesContent":["import type React from 'react';\n\nimport type { ComponentRegistry } from './registry';\n\nexport function resolveRuntimeRegistry(args: {\n propRegistry?: ComponentRegistry;\n configRegistry?: ComponentRegistry;\n fallbackRegistry: ComponentRegistry;\n}): ComponentRegistry {\n const { propRegistry, configRegistry, fallbackRegistry } = args;\n return propRegistry ?? configRegistry ?? fallbackRegistry;\n}\n\nexport function resolveRenderedChildren(args: {\n propChildren: React.ReactNode;\n renderedChildren: React.ReactNode[] | undefined;\n}): React.ReactNode {\n const { propChildren, renderedChildren } = args;\n\n if (renderedChildren && renderedChildren.length > 0) {\n return renderedChildren;\n }\n\n return propChildren;\n}\n\nexport function getUnknownComponentDiagnostic(\n componentType: string,\n registry: ComponentRegistry,\n): {\n title: string;\n detail: string;\n suggestion: string;\n} {\n const registeredTypes = Object.keys(registry).sort();\n const preview = registeredTypes.slice(0, 8).join(', ');\n const remainingCount = Math.max(registeredTypes.length - 8, 0);\n\n return {\n title: `Unknown component type: ${componentType}`,\n detail:\n registeredTypes.length === 0\n ? 'No component registry is active for this render tree.'\n : `Registered types: ${preview}${remainingCount > 0 ? `, +${remainingCount} more` : ''}.`,\n suggestion:\n 'Check the active runtime component registry. ZORA manifests require a ZORA-aware registry.',\n };\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ComponentDataBindingRegistry, ComponentEventDto, DataSourceDiagnostic, DataSourceRegistry, UiNode } from '@ankhorage/contracts';
|
|
2
|
+
import { type RuntimeBindingOperationExecutor, type RuntimeBindingOperationResultCache, type RuntimeBindingOperationResultWriter } from './runtimeBindings';
|
|
3
|
+
import type { RuntimeActionHandler, RuntimeActionHandlers } from './RuntimeRendererConfig';
|
|
4
|
+
type RuntimeEventPayload = Record<string, unknown>;
|
|
5
|
+
export interface RuntimeActionRegistry {
|
|
6
|
+
dispatchComponentEvent(args: RuntimeComponentEventDispatchArgs): Promise<void>;
|
|
7
|
+
registerActionHandler(type: string, handler: RuntimeActionHandler): () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface RuntimeActionResolutionScope {
|
|
10
|
+
readonly context?: Record<string, unknown>;
|
|
11
|
+
readonly operationResults?: RuntimeBindingOperationResultCache;
|
|
12
|
+
readonly state?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface RuntimeActionResolutionArgs extends RuntimeActionResolutionScope {
|
|
15
|
+
readonly event: ComponentEventDto<string, object>;
|
|
16
|
+
}
|
|
17
|
+
export interface RuntimeComponentEventDispatchArgs extends RuntimeActionResolutionScope {
|
|
18
|
+
readonly node: UiNode;
|
|
19
|
+
readonly event: ComponentEventDto<string, object>;
|
|
20
|
+
readonly eventName?: string;
|
|
21
|
+
readonly executeAction?: RuntimeActionHandler;
|
|
22
|
+
readonly dataSources?: DataSourceRegistry;
|
|
23
|
+
readonly dataBindings?: ComponentDataBindingRegistry;
|
|
24
|
+
readonly executeOperation?: RuntimeBindingOperationExecutor;
|
|
25
|
+
readonly writeOperationResult?: RuntimeBindingOperationResultWriter;
|
|
26
|
+
}
|
|
27
|
+
export interface RuntimeEventPropWrapArgs extends RuntimeActionResolutionScope {
|
|
28
|
+
readonly node: UiNode;
|
|
29
|
+
readonly props: Record<string, unknown>;
|
|
30
|
+
readonly disableActions: boolean;
|
|
31
|
+
readonly dataBindings?: ComponentDataBindingRegistry;
|
|
32
|
+
readonly dispatchComponentEvent: (args: RuntimeComponentEventDispatchArgs) => Promise<void> | void;
|
|
33
|
+
}
|
|
34
|
+
export declare function createRuntimeActionRegistry(options?: {
|
|
35
|
+
actionHandlers?: RuntimeActionHandlers;
|
|
36
|
+
dataSources?: DataSourceRegistry;
|
|
37
|
+
dataBindings?: ComponentDataBindingRegistry;
|
|
38
|
+
executeAction?: RuntimeActionHandler;
|
|
39
|
+
executeOperation?: RuntimeBindingOperationExecutor;
|
|
40
|
+
operationResults?: RuntimeBindingOperationResultCache;
|
|
41
|
+
writeOperationResult?: RuntimeBindingOperationResultWriter;
|
|
42
|
+
}): RuntimeActionRegistry;
|
|
43
|
+
export declare function dispatchRuntimeComponentEvent(args: RuntimeComponentEventDispatchArgs & {
|
|
44
|
+
readonly actionHandlers?: RuntimeActionHandlers;
|
|
45
|
+
}): Promise<readonly DataSourceDiagnostic[]>;
|
|
46
|
+
export declare function wrapRuntimeEventProps(args: RuntimeEventPropWrapArgs): Record<string, unknown>;
|
|
47
|
+
export declare function createComponentEventFromHandlerArgs(args: {
|
|
48
|
+
readonly node: UiNode;
|
|
49
|
+
readonly eventName: string;
|
|
50
|
+
readonly handlerArgs: readonly unknown[];
|
|
51
|
+
}): ComponentEventDto<string, RuntimeEventPayload>;
|
|
52
|
+
export declare function resolveRuntimeActionPayload(payload: object | undefined, args: RuntimeActionResolutionArgs): object | undefined;
|
|
53
|
+
export declare function resolveRuntimeActionValue(value: unknown, args: RuntimeActionResolutionArgs): object | undefined;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=runtimeActionRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeActionRegistry.d.ts","sourceRoot":"","sources":["../src/runtimeActionRegistry.ts"],"names":[],"mappings":"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"}
|