@ankhorage/runtime 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/RuntimeScreen.d.ts.map +1 -1
- package/dist/RuntimeScreen.js +5 -43
- package/dist/RuntimeScreen.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/runtimeDataSourceOperations.d.ts +3 -1
- package/dist/runtimeDataSourceOperations.d.ts.map +1 -1
- package/dist/runtimeDataSourceOperations.js +31 -26
- package/dist/runtimeDataSourceOperations.js.map +1 -1
- package/dist/runtimeDatabaseOperationExecutor.d.ts +9 -0
- package/dist/runtimeDatabaseOperationExecutor.d.ts.map +1 -0
- package/dist/runtimeDatabaseOperationExecutor.js +228 -0
- package/dist/runtimeDatabaseOperationExecutor.js.map +1 -0
- package/dist/runtimeScreenLoaders.d.ts +1 -2
- package/dist/runtimeScreenLoaders.d.ts.map +1 -1
- package/dist/runtimeScreenLoaders.js +1 -4
- package/dist/runtimeScreenLoaders.js.map +1 -1
- package/package.json +3 -3
- package/paradox/badges/npm.svg +3 -3
- package/paradox/components.md +1 -1
- package/paradox/diagrams/architecture-overview.mmd +5 -9
- package/paradox/diagrams/export-graph.mmd +1 -28
- package/paradox/diagrams/module-relationships.mmd +4 -7
- package/paradox/diagrams/sequences/runtime-screen.mmd +0 -3
- package/paradox/exports.json +30 -293
- package/paradox/exports.md +94 -193
- package/paradox/index.html +377 -700
- package/paradox/paradox.json +686 -890
- package/dist/runtimeApiLoaders.d.ts +0 -35
- package/dist/runtimeApiLoaders.d.ts.map +0 -1
- package/dist/runtimeApiLoaders.js +0 -218
- package/dist/runtimeApiLoaders.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DataSourceDiagnostic, OperationScreenDataLoaderDefinition, ScreenSpec } from '@ankhorage/contracts';
|
|
2
2
|
import { type RuntimeBindingOperationExecutor, type RuntimeBindingOperationResultCache, type RuntimeBindingResolutionContext } from './runtimeBindings';
|
|
3
3
|
export interface RuntimeScreenOperationLoaderState {
|
|
4
4
|
readonly dependencyKey: string;
|
|
@@ -15,7 +15,6 @@ export interface RuntimeScreenOperationLoaderLifecycle {
|
|
|
15
15
|
readonly activeRequestId: number;
|
|
16
16
|
readonly activeRequestKey: string | null;
|
|
17
17
|
}
|
|
18
|
-
export declare function resolveScreenApiLoaders(screen: ScreenSpec): readonly ApiScreenDataLoaderDefinition[];
|
|
19
18
|
export declare function resolveScreenOperationLoaders(screen: ScreenSpec): readonly OperationScreenDataLoaderDefinition[];
|
|
20
19
|
export declare function createRuntimeScreenLoaderRequestKey(args: {
|
|
21
20
|
readonly screenId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeScreenLoaders.d.ts","sourceRoot":"","sources":["../src/runtimeScreenLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runtimeScreenLoaders.d.ts","sourceRoot":"","sources":["../src/runtimeScreenLoaders.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import { createRuntimeBindingOperationKey, resolveBindingInputMapSync, resolveRuntimeBindingOperationSelection, } from './runtimeBindings';
|
|
3
3
|
const EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS = Object.freeze([]);
|
|
4
4
|
const EMPTY_RUNTIME_SCREEN_OPERATION_RESULTS = Object.freeze({});
|
|
5
|
-
export function resolveScreenApiLoaders(screen) {
|
|
6
|
-
return (screen.dataLoaders ?? []).filter((loader) => loader.kind === 'api');
|
|
7
|
-
}
|
|
8
5
|
export function resolveScreenOperationLoaders(screen) {
|
|
9
|
-
return
|
|
6
|
+
return screen.dataLoaders ?? [];
|
|
10
7
|
}
|
|
11
8
|
export function createRuntimeScreenLoaderRequestKey(args) {
|
|
12
9
|
return createRuntimeScreenOperationLoaderPlan({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeScreenLoaders.js","sourceRoot":"","sources":["../src/runtimeScreenLoaders.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ApiScreenDataLoaderDefinition,\n BindingValue,\n DataSourceDiagnostic,\n OperationScreenDataLoaderDefinition,\n ScreenSpec,\n} from '@ankhorage/contracts';\nimport React from 'react';\n\nimport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMapSync,\n resolveRuntimeBindingOperationSelection,\n type RuntimeBindingOperationExecutor,\n type RuntimeBindingOperationResultCache,\n type RuntimeBindingResolutionContext,\n} from './runtimeBindings';\n\nexport interface RuntimeScreenOperationLoaderState {\n readonly dependencyKey: string;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n readonly operationResults: RuntimeBindingOperationResultCache;\n readonly renderVersion: number;\n}\n\nexport interface RuntimeScreenOperationLoaderExecutionResult {\n readonly dependencyKey: string;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n readonly operationResults: RuntimeBindingOperationResultCache;\n}\n\nexport interface RuntimeScreenOperationLoaderLifecycle {\n readonly activeRequestId: number;\n readonly activeRequestKey: string | null;\n}\n\nconst EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS = Object.freeze(\n [],\n) as readonly DataSourceDiagnostic[];\nconst EMPTY_RUNTIME_SCREEN_OPERATION_RESULTS = Object.freeze(\n {},\n) as RuntimeBindingOperationResultCache;\n\nexport function resolveScreenApiLoaders(\n screen: ScreenSpec,\n): readonly ApiScreenDataLoaderDefinition[] {\n return (screen.dataLoaders ?? []).filter(\n (loader): loader is ApiScreenDataLoaderDefinition => loader.kind === 'api',\n );\n}\n\nexport function resolveScreenOperationLoaders(\n screen: ScreenSpec,\n): readonly OperationScreenDataLoaderDefinition[] {\n return (screen.dataLoaders ?? []).filter(\n (loader): loader is OperationScreenDataLoaderDefinition => loader.kind === 'operation',\n );\n}\n\nexport function createRuntimeScreenLoaderRequestKey(args: {\n readonly screenId: string;\n readonly loaders: readonly OperationScreenDataLoaderDefinition[];\n readonly bindingContext?: Record<string, unknown>;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n}): string {\n return createRuntimeScreenOperationLoaderPlan({\n bindingContext: args.bindingContext,\n loaders: args.loaders,\n operationResults: args.operationResults,\n screenId: args.screenId,\n }).requestKey;\n}\n\nexport function createRuntimeScreenOperationLoaderLifecycle(): RuntimeScreenOperationLoaderLifecycle {\n return {\n activeRequestId: 0,\n activeRequestKey: null,\n };\n}\n\nexport function createIdleRuntimeScreenOperationLoaderState(args: {\n readonly dependencyKey: string;\n readonly previousState?: RuntimeScreenOperationLoaderState;\n}): RuntimeScreenOperationLoaderState {\n return {\n dependencyKey: args.dependencyKey,\n diagnostics: EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS,\n operationResults: EMPTY_RUNTIME_SCREEN_OPERATION_RESULTS,\n renderVersion: args.previousState?.renderVersion ?? 0,\n };\n}\n\nexport function createPendingRuntimeScreenOperationLoaderState(args: {\n readonly dependencyKey: string;\n readonly previousState?: RuntimeScreenOperationLoaderState;\n}): RuntimeScreenOperationLoaderState {\n return {\n dependencyKey: args.dependencyKey,\n diagnostics: [],\n operationResults: {},\n renderVersion: (args.previousState?.renderVersion ?? -1) + 1,\n };\n}\n\nexport function beginRuntimeScreenOperationLoaderRequest(args: {\n readonly hasLoaders: boolean;\n readonly lifecycle: RuntimeScreenOperationLoaderLifecycle;\n readonly requestKey: string;\n readonly state: RuntimeScreenOperationLoaderState;\n}): {\n readonly lifecycle: RuntimeScreenOperationLoaderLifecycle;\n readonly requestId?: number;\n readonly shouldExecute: boolean;\n readonly state: RuntimeScreenOperationLoaderState;\n} {\n if (!args.hasLoaders) {\n if (args.lifecycle.activeRequestKey === null) {\n return {\n lifecycle: args.lifecycle,\n shouldExecute: false,\n state: args.state,\n };\n }\n\n return {\n lifecycle: {\n activeRequestId: args.lifecycle.activeRequestId + 1,\n activeRequestKey: null,\n },\n shouldExecute: false,\n state: args.state,\n };\n }\n\n if (args.lifecycle.activeRequestKey === args.requestKey) {\n return {\n lifecycle: args.lifecycle,\n shouldExecute: false,\n state: args.state,\n };\n }\n\n const requestId = args.lifecycle.activeRequestId + 1;\n\n return {\n lifecycle: {\n activeRequestId: requestId,\n activeRequestKey: args.requestKey,\n },\n requestId,\n shouldExecute: true,\n state:\n args.state.dependencyKey === args.requestKey\n ? args.state\n : createPendingRuntimeScreenOperationLoaderState({\n dependencyKey: args.requestKey,\n previousState: args.state,\n }),\n };\n}\n\nexport function completeRuntimeScreenOperationLoaderRequest(args: {\n readonly lifecycle: RuntimeScreenOperationLoaderLifecycle;\n readonly requestId: number;\n readonly result: RuntimeScreenOperationLoaderExecutionResult;\n readonly state: RuntimeScreenOperationLoaderState;\n}): {\n readonly accepted: boolean;\n readonly state: RuntimeScreenOperationLoaderState;\n} {\n if (args.lifecycle.activeRequestId !== args.requestId) {\n return {\n accepted: false,\n state: args.state,\n };\n }\n\n return {\n accepted: true,\n state: {\n dependencyKey: args.result.dependencyKey,\n diagnostics: args.result.diagnostics,\n operationResults: args.result.operationResults,\n renderVersion: args.state.renderVersion,\n },\n };\n}\n\nexport async function executeRuntimeScreenOperationLoaders(args: {\n readonly bindingContext?: Record<string, unknown>;\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly screen: ScreenSpec;\n readonly loaders: readonly OperationScreenDataLoaderDefinition[];\n}): Promise<RuntimeScreenOperationLoaderExecutionResult> {\n const plan = createRuntimeScreenOperationLoaderPlan({\n bindingContext: args.bindingContext,\n loaders: args.loaders,\n operationResults: args.operationResults,\n screenId: args.screen.id,\n });\n\n return executePreparedRuntimeScreenOperationLoaders({\n dataSources: args.dataSources,\n executeOperation: args.executeOperation,\n plan,\n screen: args.screen,\n });\n}\n\nfunction executePreparedRuntimeScreenOperationLoaders(args: {\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly plan: RuntimeScreenOperationLoaderPlan;\n readonly screen: ScreenSpec;\n}): Promise<RuntimeScreenOperationLoaderExecutionResult> {\n const diagnostics: DataSourceDiagnostic[] = [...args.plan.diagnostics];\n\n if (args.plan.loaders.length === 0) {\n return Promise.resolve({\n dependencyKey: args.plan.requestKey,\n diagnostics,\n operationResults: {},\n });\n }\n\n if (args.executeOperation === undefined) {\n diagnostics.push(\n ...args.plan.loaders.map((preparedLoader) =>\n createScreenOperationLoaderDiagnostic(\n preparedLoader.loader,\n 'missing-adapter',\n 'Screen operation loader requires an injected operation executor.',\n ),\n ),\n );\n\n return Promise.resolve({\n dependencyKey: args.plan.requestKey,\n diagnostics,\n operationResults: {},\n });\n }\n const { executeOperation } = args;\n\n return (async () => {\n const operationResults: Record<string, BindingValue | undefined> = {};\n\n for (const preparedLoader of args.plan.loaders) {\n const selection = resolveRuntimeBindingOperationSelection(\n preparedLoader.loader.operation,\n args.dataSources,\n diagnostics,\n );\n if (selection === undefined) {\n continue;\n }\n\n const result = await executeOperation({\n dataSource: selection.dataSource,\n endpoint: selection.endpoint,\n input: preparedLoader.input,\n node: args.screen.root,\n operation: preparedLoader.loader.operation,\n });\n diagnostics.push(...(result.diagnostics ?? []));\n\n if (!result.ok) {\n continue;\n }\n\n operationResults[preparedLoader.operationKey] = result.data;\n }\n\n return {\n dependencyKey: args.plan.requestKey,\n diagnostics,\n operationResults,\n };\n })();\n}\n\nexport function useRuntimeScreenOperationLoaders(args: {\n readonly bindingContext?: Record<string, unknown>;\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n readonly screen: ScreenSpec;\n}): RuntimeScreenOperationLoaderState {\n const loaders = React.useMemo(() => resolveScreenOperationLoaders(args.screen), [args.screen]);\n const hasLoaders = loaders.length > 0;\n const plan = React.useMemo(\n () =>\n createRuntimeScreenOperationLoaderPlan({\n bindingContext: args.bindingContext,\n loaders,\n operationResults: args.operationResults,\n screenId: args.screen.id,\n }),\n [args.bindingContext, args.operationResults, args.screen.id, loaders],\n );\n const { requestKey } = plan;\n const emptyState = React.useMemo(\n () =>\n createIdleRuntimeScreenOperationLoaderState({\n dependencyKey: requestKey,\n }),\n [requestKey],\n );\n const [state, setState] = React.useState<RuntimeScreenOperationLoaderState>(() =>\n hasLoaders\n ? createPendingRuntimeScreenOperationLoaderState({ dependencyKey: requestKey })\n : emptyState,\n );\n const effectiveState = hasLoaders ? state : emptyState;\n const lastDiagnosticsKeyRef = React.useRef<string | null>(null);\n const latestStateRef = React.useRef(state);\n const lifecycleRef = React.useRef<RuntimeScreenOperationLoaderLifecycle>(\n createRuntimeScreenOperationLoaderLifecycle(),\n );\n const executionArgsByRequestKeyRef = React.useRef<\n Record<string, RuntimeScreenPreparedExecutionArgs>\n >({});\n\n executionArgsByRequestKeyRef.current[requestKey] = {\n dataSources: args.dataSources,\n executeOperation: args.executeOperation,\n plan,\n screen: args.screen,\n };\n latestStateRef.current = state;\n\n React.useEffect(() => {\n const request = beginRuntimeScreenOperationLoaderRequest({\n hasLoaders,\n lifecycle: lifecycleRef.current,\n requestKey,\n state: latestStateRef.current,\n });\n\n lifecycleRef.current = request.lifecycle;\n\n if (request.state !== latestStateRef.current) {\n setState(request.state);\n }\n\n if (!request.shouldExecute || request.requestId === undefined) {\n return;\n }\n const { requestId } = request;\n\n void (async () => {\n const executionArgs = executionArgsByRequestKeyRef.current[requestKey];\n if (executionArgs === undefined) {\n return;\n }\n\n const result = await executePreparedRuntimeScreenOperationLoaders(executionArgs);\n\n setState((currentState) => {\n const completion = completeRuntimeScreenOperationLoaderRequest({\n lifecycle: lifecycleRef.current,\n requestId,\n result,\n state: currentState,\n });\n\n return completion.accepted ? completion.state : currentState;\n });\n })();\n }, [hasLoaders, requestKey]);\n\n React.useEffect(() => {\n if (effectiveState.diagnostics.length === 0) {\n return;\n }\n\n const diagnosticsKey = stableSerialize(effectiveState.diagnostics);\n if (lastDiagnosticsKeyRef.current === diagnosticsKey) {\n return;\n }\n\n lastDiagnosticsKeyRef.current = diagnosticsKey;\n args.onDiagnostics?.(effectiveState.diagnostics);\n }, [args.onDiagnostics, effectiveState.diagnostics]);\n\n return effectiveState;\n}\n\ninterface PreparedRuntimeScreenOperationLoader {\n readonly input?: BindingValue;\n readonly loader: OperationScreenDataLoaderDefinition;\n readonly operationKey: string;\n}\n\ninterface RuntimeScreenOperationLoaderPlan {\n readonly diagnostics: readonly DataSourceDiagnostic[];\n readonly loaders: readonly PreparedRuntimeScreenOperationLoader[];\n readonly requestKey: string;\n}\n\ninterface RuntimeScreenPreparedExecutionArgs {\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly plan: RuntimeScreenOperationLoaderPlan;\n readonly screen: ScreenSpec;\n}\n\nfunction createRuntimeScreenOperationLoaderPlan(args: {\n readonly bindingContext?: Record<string, unknown>;\n readonly loaders: readonly OperationScreenDataLoaderDefinition[];\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly screenId: string;\n}): RuntimeScreenOperationLoaderPlan {\n if (args.loaders.length === 0) {\n return {\n diagnostics: EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS,\n loaders: [],\n requestKey: createRuntimeScreenOperationLoaderIdleKey(args.screenId),\n };\n }\n\n const diagnostics: DataSourceDiagnostic[] = [];\n const preparedLoaders: PreparedRuntimeScreenOperationLoader[] = [];\n const operationKeys = new Set<string>();\n\n for (const loader of args.loaders) {\n const input = resolveBindingInputMapSync(\n loader.input,\n {\n context: args.bindingContext,\n operationResults: args.operationResults,\n },\n diagnostics,\n );\n const operationKey = createRuntimeBindingOperationKey(loader.operation);\n if (operationKeys.has(operationKey)) {\n diagnostics.push(\n createScreenOperationLoaderDiagnostic(\n loader,\n 'duplicate-operation-id',\n `Screen operation loaders must not reuse operation key '${operationKey}' on the same screen.`,\n ),\n );\n continue;\n }\n\n operationKeys.add(operationKey);\n preparedLoaders.push({\n input,\n loader,\n operationKey,\n });\n }\n\n return {\n diagnostics,\n loaders: preparedLoaders,\n requestKey: createRuntimeScreenOperationLoaderPlanRequestKey({\n loaders: preparedLoaders,\n screenId: args.screenId,\n }),\n };\n}\n\nfunction createRuntimeScreenOperationLoaderPlanRequestKey(args: {\n readonly loaders: readonly PreparedRuntimeScreenOperationLoader[];\n readonly screenId: string;\n}): string {\n return stableSerialize({\n loaders: args.loaders.map((loader) => ({\n id: loader.loader.id,\n input: loader.input,\n operation: loader.loader.operation,\n operationKey: loader.operationKey,\n })),\n screenId: args.screenId,\n });\n}\n\nfunction createScreenOperationLoaderDiagnostic(\n loader: OperationScreenDataLoaderDefinition,\n code: DataSourceDiagnostic['code'],\n message: string,\n): DataSourceDiagnostic {\n return {\n code,\n dataSourceId: loader.operation.dataSourceId,\n endpointId: loader.operation.endpointId,\n operationId: loader.operation.operationId,\n message,\n severity: 'error',\n };\n}\n\nfunction createRuntimeScreenOperationLoaderIdleKey(screenId: string): string {\n return `screen:${screenId}:no-operation-loaders`;\n}\n\nfunction stableSerialize(value: unknown): string {\n return JSON.stringify(sortSerializableValue(value));\n}\n\nfunction sortSerializableValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortSerializableValue);\n }\n\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n\n return Object.keys(value)\n .sort((left, right) => left.localeCompare(right))\n .reduce<Record<string, unknown>>((result, key) => {\n result[key] = sortSerializableValue((value as Record<string, unknown>)[key]);\n return result;\n }, {});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtimeScreenLoaders.js","sourceRoot":"","sources":["../src/runtimeScreenLoaders.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,uCAAuC,GAIxC,MAAM,mBAAmB,CAAC;AAoB3B,MAAM,iDAAiD,GAAG,MAAM,CAAC,MAAM,CACrE,EAAE,CACgC,CAAC;AACrC,MAAM,sCAAsC,GAAG,MAAM,CAAC,MAAM,CAC1D,EAAE,CACmC,CAAC;AAExC,MAAM,UAAU,6BAA6B,CAC3C,MAAkB;IAElB,OAAO,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAKnD;IACC,OAAO,sCAAsC,CAAC;QAC5C,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC,UAAU,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2CAA2C;IACzD,OAAO;QACL,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,IAAI;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2CAA2C,CAAC,IAG3D;IACC,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,iDAAiD;QAC9D,gBAAgB,EAAE,sCAAsC;QACxD,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,IAAI,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8CAA8C,CAAC,IAG9D;IACC,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,EAAE;QACf,gBAAgB,EAAE,EAAE;QACpB,aAAa,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,IAKxD;IAMC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE;gBACT,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC;gBACnD,gBAAgB,EAAE,IAAI;aACvB;YACD,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACxD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC;IAErD,OAAO;QACL,SAAS,EAAE;YACT,eAAe,EAAE,SAAS;YAC1B,gBAAgB,EAAE,IAAI,CAAC,UAAU;SAClC;QACD,SAAS;QACT,aAAa,EAAE,IAAI;QACnB,KAAK,EACH,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU;YAC1C,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,8CAA8C,CAAC;gBAC7C,aAAa,EAAE,IAAI,CAAC,UAAU;gBAC9B,aAAa,EAAE,IAAI,CAAC,KAAK;aAC1B,CAAC;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2CAA2C,CAAC,IAK3D;IAIC,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACtD,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE;YACL,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YACxC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;SACxC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,IAO1D;IACC,MAAM,IAAI,GAAG,sCAAsC,CAAC;QAClD,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;KACzB,CAAC,CAAC;IAEH,OAAO,4CAA4C,CAAC;QAClD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,IAAI;QACJ,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4CAA4C,CAAC,IAKrD;IACC,MAAM,WAAW,GAA2B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEvE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YACnC,WAAW;YACX,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAC1C,qCAAqC,CACnC,cAAc,CAAC,MAAM,EACrB,iBAAiB,EACjB,kEAAkE,CACnE,CACF,CACF,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YACnC,WAAW;YACX,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAElC,OAAO,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,gBAAgB,GAA6C,EAAE,CAAC;QAEtE,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,uCAAuC,CACvD,cAAc,CAAC,MAAM,CAAC,SAAS,EAC/B,IAAI,CAAC,WAAW,EAChB,WAAW,CACZ,CAAC;YACF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;gBACpC,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS;aAC3C,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,SAAS;YACX,CAAC;YAED,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YACnC,WAAW;YACX,gBAAgB;SACjB,CAAC;IACJ,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,IAOhD;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CACxB,GAAG,EAAE,CACH,sCAAsC,CAAC;QACrC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,OAAO;QACP,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;KACzB,CAAC,EACJ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CACtE,CAAC;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,GAAG,EAAE,CACH,2CAA2C,CAAC;QAC1C,aAAa,EAAE,UAAU;KAC1B,CAAC,EACJ,CAAC,UAAU,CAAC,CACb,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAoC,GAAG,EAAE,CAC/E,UAAU;QACR,CAAC,CAAC,8CAA8C,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QAC/E,CAAC,CAAC,UAAU,CACf,CAAC;IACF,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,2CAA2C,EAAE,CAC9C,CAAC;IACF,MAAM,4BAA4B,GAAG,KAAK,CAAC,MAAM,CAE/C,EAAE,CAAC,CAAC;IAEN,4BAA4B,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QACjD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,IAAI;QACJ,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;IACF,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;IAE/B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,wCAAwC,CAAC;YACvD,UAAU;YACV,SAAS,EAAE,YAAY,CAAC,OAAO;YAC/B,UAAU;YACV,KAAK,EAAE,cAAc,CAAC,OAAO;SAC9B,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;QAEzC,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;YAC7C,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAE9B,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACvE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,4CAA4C,CAAC,aAAa,CAAC,CAAC;YAEjF,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE;gBACxB,MAAM,UAAU,GAAG,2CAA2C,CAAC;oBAC7D,SAAS,EAAE,YAAY,CAAC,OAAO;oBAC/B,SAAS;oBACT,MAAM;oBACN,KAAK,EAAE,YAAY;iBACpB,CAAC,CAAC;gBAEH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,cAAc,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,qBAAqB,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QAED,qBAAqB,CAAC,OAAO,GAAG,cAAc,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;IAErD,OAAO,cAAc,CAAC;AACxB,CAAC;AAqBD,SAAS,sCAAsC,CAAC,IAK/C;IACC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,WAAW,EAAE,iDAAiD;YAC9D,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,yCAAyC,CAAC,IAAI,CAAC,QAAQ,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,eAAe,GAA2C,EAAE,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,0BAA0B,CACtC,MAAM,CAAC,KAAK,EACZ;YACE,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,EACD,WAAW,CACZ,CAAC;QACF,MAAM,YAAY,GAAG,gCAAgC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CACd,qCAAqC,CACnC,MAAM,EACN,wBAAwB,EACxB,0DAA0D,YAAY,uBAAuB,CAC9F,CACF,CAAC;YACF,SAAS;QACX,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,eAAe,CAAC,IAAI,CAAC;YACnB,KAAK;YACL,MAAM;YACN,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,WAAW;QACX,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,gDAAgD,CAAC;YAC3D,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,gDAAgD,CAAC,IAGzD;IACC,OAAO,eAAe,CAAC;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACrC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YACpB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;YAClC,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;QACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qCAAqC,CAC5C,MAA2C,EAC3C,IAAkC,EAClC,OAAe;IAEf,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY;QAC3C,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;QACvC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW;QACzC,OAAO;QACP,QAAQ,EAAE,OAAO;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,yCAAyC,CAAC,QAAgB;IACjE,OAAO,UAAU,QAAQ,uBAAuB,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACtB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAChD,MAAM,CAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import type {\n BindingValue,\n DataSourceDiagnostic,\n OperationScreenDataLoaderDefinition,\n ScreenSpec,\n} from '@ankhorage/contracts';\nimport React from 'react';\n\nimport {\n createRuntimeBindingOperationKey,\n resolveBindingInputMapSync,\n resolveRuntimeBindingOperationSelection,\n type RuntimeBindingOperationExecutor,\n type RuntimeBindingOperationResultCache,\n type RuntimeBindingResolutionContext,\n} from './runtimeBindings';\n\nexport interface RuntimeScreenOperationLoaderState {\n readonly dependencyKey: string;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n readonly operationResults: RuntimeBindingOperationResultCache;\n readonly renderVersion: number;\n}\n\nexport interface RuntimeScreenOperationLoaderExecutionResult {\n readonly dependencyKey: string;\n readonly diagnostics: readonly DataSourceDiagnostic[];\n readonly operationResults: RuntimeBindingOperationResultCache;\n}\n\nexport interface RuntimeScreenOperationLoaderLifecycle {\n readonly activeRequestId: number;\n readonly activeRequestKey: string | null;\n}\n\nconst EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS = Object.freeze(\n [],\n) as readonly DataSourceDiagnostic[];\nconst EMPTY_RUNTIME_SCREEN_OPERATION_RESULTS = Object.freeze(\n {},\n) as RuntimeBindingOperationResultCache;\n\nexport function resolveScreenOperationLoaders(\n screen: ScreenSpec,\n): readonly OperationScreenDataLoaderDefinition[] {\n return screen.dataLoaders ?? [];\n}\n\nexport function createRuntimeScreenLoaderRequestKey(args: {\n readonly screenId: string;\n readonly loaders: readonly OperationScreenDataLoaderDefinition[];\n readonly bindingContext?: Record<string, unknown>;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n}): string {\n return createRuntimeScreenOperationLoaderPlan({\n bindingContext: args.bindingContext,\n loaders: args.loaders,\n operationResults: args.operationResults,\n screenId: args.screenId,\n }).requestKey;\n}\n\nexport function createRuntimeScreenOperationLoaderLifecycle(): RuntimeScreenOperationLoaderLifecycle {\n return {\n activeRequestId: 0,\n activeRequestKey: null,\n };\n}\n\nexport function createIdleRuntimeScreenOperationLoaderState(args: {\n readonly dependencyKey: string;\n readonly previousState?: RuntimeScreenOperationLoaderState;\n}): RuntimeScreenOperationLoaderState {\n return {\n dependencyKey: args.dependencyKey,\n diagnostics: EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS,\n operationResults: EMPTY_RUNTIME_SCREEN_OPERATION_RESULTS,\n renderVersion: args.previousState?.renderVersion ?? 0,\n };\n}\n\nexport function createPendingRuntimeScreenOperationLoaderState(args: {\n readonly dependencyKey: string;\n readonly previousState?: RuntimeScreenOperationLoaderState;\n}): RuntimeScreenOperationLoaderState {\n return {\n dependencyKey: args.dependencyKey,\n diagnostics: [],\n operationResults: {},\n renderVersion: (args.previousState?.renderVersion ?? -1) + 1,\n };\n}\n\nexport function beginRuntimeScreenOperationLoaderRequest(args: {\n readonly hasLoaders: boolean;\n readonly lifecycle: RuntimeScreenOperationLoaderLifecycle;\n readonly requestKey: string;\n readonly state: RuntimeScreenOperationLoaderState;\n}): {\n readonly lifecycle: RuntimeScreenOperationLoaderLifecycle;\n readonly requestId?: number;\n readonly shouldExecute: boolean;\n readonly state: RuntimeScreenOperationLoaderState;\n} {\n if (!args.hasLoaders) {\n if (args.lifecycle.activeRequestKey === null) {\n return {\n lifecycle: args.lifecycle,\n shouldExecute: false,\n state: args.state,\n };\n }\n\n return {\n lifecycle: {\n activeRequestId: args.lifecycle.activeRequestId + 1,\n activeRequestKey: null,\n },\n shouldExecute: false,\n state: args.state,\n };\n }\n\n if (args.lifecycle.activeRequestKey === args.requestKey) {\n return {\n lifecycle: args.lifecycle,\n shouldExecute: false,\n state: args.state,\n };\n }\n\n const requestId = args.lifecycle.activeRequestId + 1;\n\n return {\n lifecycle: {\n activeRequestId: requestId,\n activeRequestKey: args.requestKey,\n },\n requestId,\n shouldExecute: true,\n state:\n args.state.dependencyKey === args.requestKey\n ? args.state\n : createPendingRuntimeScreenOperationLoaderState({\n dependencyKey: args.requestKey,\n previousState: args.state,\n }),\n };\n}\n\nexport function completeRuntimeScreenOperationLoaderRequest(args: {\n readonly lifecycle: RuntimeScreenOperationLoaderLifecycle;\n readonly requestId: number;\n readonly result: RuntimeScreenOperationLoaderExecutionResult;\n readonly state: RuntimeScreenOperationLoaderState;\n}): {\n readonly accepted: boolean;\n readonly state: RuntimeScreenOperationLoaderState;\n} {\n if (args.lifecycle.activeRequestId !== args.requestId) {\n return {\n accepted: false,\n state: args.state,\n };\n }\n\n return {\n accepted: true,\n state: {\n dependencyKey: args.result.dependencyKey,\n diagnostics: args.result.diagnostics,\n operationResults: args.result.operationResults,\n renderVersion: args.state.renderVersion,\n },\n };\n}\n\nexport async function executeRuntimeScreenOperationLoaders(args: {\n readonly bindingContext?: Record<string, unknown>;\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly screen: ScreenSpec;\n readonly loaders: readonly OperationScreenDataLoaderDefinition[];\n}): Promise<RuntimeScreenOperationLoaderExecutionResult> {\n const plan = createRuntimeScreenOperationLoaderPlan({\n bindingContext: args.bindingContext,\n loaders: args.loaders,\n operationResults: args.operationResults,\n screenId: args.screen.id,\n });\n\n return executePreparedRuntimeScreenOperationLoaders({\n dataSources: args.dataSources,\n executeOperation: args.executeOperation,\n plan,\n screen: args.screen,\n });\n}\n\nfunction executePreparedRuntimeScreenOperationLoaders(args: {\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly plan: RuntimeScreenOperationLoaderPlan;\n readonly screen: ScreenSpec;\n}): Promise<RuntimeScreenOperationLoaderExecutionResult> {\n const diagnostics: DataSourceDiagnostic[] = [...args.plan.diagnostics];\n\n if (args.plan.loaders.length === 0) {\n return Promise.resolve({\n dependencyKey: args.plan.requestKey,\n diagnostics,\n operationResults: {},\n });\n }\n\n if (args.executeOperation === undefined) {\n diagnostics.push(\n ...args.plan.loaders.map((preparedLoader) =>\n createScreenOperationLoaderDiagnostic(\n preparedLoader.loader,\n 'missing-adapter',\n 'Screen operation loader requires an injected operation executor.',\n ),\n ),\n );\n\n return Promise.resolve({\n dependencyKey: args.plan.requestKey,\n diagnostics,\n operationResults: {},\n });\n }\n const { executeOperation } = args;\n\n return (async () => {\n const operationResults: Record<string, BindingValue | undefined> = {};\n\n for (const preparedLoader of args.plan.loaders) {\n const selection = resolveRuntimeBindingOperationSelection(\n preparedLoader.loader.operation,\n args.dataSources,\n diagnostics,\n );\n if (selection === undefined) {\n continue;\n }\n\n const result = await executeOperation({\n dataSource: selection.dataSource,\n endpoint: selection.endpoint,\n input: preparedLoader.input,\n node: args.screen.root,\n operation: preparedLoader.loader.operation,\n });\n diagnostics.push(...(result.diagnostics ?? []));\n\n if (!result.ok) {\n continue;\n }\n\n operationResults[preparedLoader.operationKey] = result.data;\n }\n\n return {\n dependencyKey: args.plan.requestKey,\n diagnostics,\n operationResults,\n };\n })();\n}\n\nexport function useRuntimeScreenOperationLoaders(args: {\n readonly bindingContext?: Record<string, unknown>;\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n readonly screen: ScreenSpec;\n}): RuntimeScreenOperationLoaderState {\n const loaders = React.useMemo(() => resolveScreenOperationLoaders(args.screen), [args.screen]);\n const hasLoaders = loaders.length > 0;\n const plan = React.useMemo(\n () =>\n createRuntimeScreenOperationLoaderPlan({\n bindingContext: args.bindingContext,\n loaders,\n operationResults: args.operationResults,\n screenId: args.screen.id,\n }),\n [args.bindingContext, args.operationResults, args.screen.id, loaders],\n );\n const { requestKey } = plan;\n const emptyState = React.useMemo(\n () =>\n createIdleRuntimeScreenOperationLoaderState({\n dependencyKey: requestKey,\n }),\n [requestKey],\n );\n const [state, setState] = React.useState<RuntimeScreenOperationLoaderState>(() =>\n hasLoaders\n ? createPendingRuntimeScreenOperationLoaderState({ dependencyKey: requestKey })\n : emptyState,\n );\n const effectiveState = hasLoaders ? state : emptyState;\n const lastDiagnosticsKeyRef = React.useRef<string | null>(null);\n const latestStateRef = React.useRef(state);\n const lifecycleRef = React.useRef<RuntimeScreenOperationLoaderLifecycle>(\n createRuntimeScreenOperationLoaderLifecycle(),\n );\n const executionArgsByRequestKeyRef = React.useRef<\n Record<string, RuntimeScreenPreparedExecutionArgs>\n >({});\n\n executionArgsByRequestKeyRef.current[requestKey] = {\n dataSources: args.dataSources,\n executeOperation: args.executeOperation,\n plan,\n screen: args.screen,\n };\n latestStateRef.current = state;\n\n React.useEffect(() => {\n const request = beginRuntimeScreenOperationLoaderRequest({\n hasLoaders,\n lifecycle: lifecycleRef.current,\n requestKey,\n state: latestStateRef.current,\n });\n\n lifecycleRef.current = request.lifecycle;\n\n if (request.state !== latestStateRef.current) {\n setState(request.state);\n }\n\n if (!request.shouldExecute || request.requestId === undefined) {\n return;\n }\n const { requestId } = request;\n\n void (async () => {\n const executionArgs = executionArgsByRequestKeyRef.current[requestKey];\n if (executionArgs === undefined) {\n return;\n }\n\n const result = await executePreparedRuntimeScreenOperationLoaders(executionArgs);\n\n setState((currentState) => {\n const completion = completeRuntimeScreenOperationLoaderRequest({\n lifecycle: lifecycleRef.current,\n requestId,\n result,\n state: currentState,\n });\n\n return completion.accepted ? completion.state : currentState;\n });\n })();\n }, [hasLoaders, requestKey]);\n\n React.useEffect(() => {\n if (effectiveState.diagnostics.length === 0) {\n return;\n }\n\n const diagnosticsKey = stableSerialize(effectiveState.diagnostics);\n if (lastDiagnosticsKeyRef.current === diagnosticsKey) {\n return;\n }\n\n lastDiagnosticsKeyRef.current = diagnosticsKey;\n args.onDiagnostics?.(effectiveState.diagnostics);\n }, [args.onDiagnostics, effectiveState.diagnostics]);\n\n return effectiveState;\n}\n\ninterface PreparedRuntimeScreenOperationLoader {\n readonly input?: BindingValue;\n readonly loader: OperationScreenDataLoaderDefinition;\n readonly operationKey: string;\n}\n\ninterface RuntimeScreenOperationLoaderPlan {\n readonly diagnostics: readonly DataSourceDiagnostic[];\n readonly loaders: readonly PreparedRuntimeScreenOperationLoader[];\n readonly requestKey: string;\n}\n\ninterface RuntimeScreenPreparedExecutionArgs {\n readonly dataSources?: RuntimeBindingResolutionContext['dataSources'];\n readonly executeOperation?: RuntimeBindingOperationExecutor;\n readonly plan: RuntimeScreenOperationLoaderPlan;\n readonly screen: ScreenSpec;\n}\n\nfunction createRuntimeScreenOperationLoaderPlan(args: {\n readonly bindingContext?: Record<string, unknown>;\n readonly loaders: readonly OperationScreenDataLoaderDefinition[];\n readonly operationResults?: RuntimeBindingOperationResultCache;\n readonly screenId: string;\n}): RuntimeScreenOperationLoaderPlan {\n if (args.loaders.length === 0) {\n return {\n diagnostics: EMPTY_RUNTIME_SCREEN_OPERATION_LOADER_DIAGNOSTICS,\n loaders: [],\n requestKey: createRuntimeScreenOperationLoaderIdleKey(args.screenId),\n };\n }\n\n const diagnostics: DataSourceDiagnostic[] = [];\n const preparedLoaders: PreparedRuntimeScreenOperationLoader[] = [];\n const operationKeys = new Set<string>();\n\n for (const loader of args.loaders) {\n const input = resolveBindingInputMapSync(\n loader.input,\n {\n context: args.bindingContext,\n operationResults: args.operationResults,\n },\n diagnostics,\n );\n const operationKey = createRuntimeBindingOperationKey(loader.operation);\n if (operationKeys.has(operationKey)) {\n diagnostics.push(\n createScreenOperationLoaderDiagnostic(\n loader,\n 'duplicate-operation-id',\n `Screen operation loaders must not reuse operation key '${operationKey}' on the same screen.`,\n ),\n );\n continue;\n }\n\n operationKeys.add(operationKey);\n preparedLoaders.push({\n input,\n loader,\n operationKey,\n });\n }\n\n return {\n diagnostics,\n loaders: preparedLoaders,\n requestKey: createRuntimeScreenOperationLoaderPlanRequestKey({\n loaders: preparedLoaders,\n screenId: args.screenId,\n }),\n };\n}\n\nfunction createRuntimeScreenOperationLoaderPlanRequestKey(args: {\n readonly loaders: readonly PreparedRuntimeScreenOperationLoader[];\n readonly screenId: string;\n}): string {\n return stableSerialize({\n loaders: args.loaders.map((loader) => ({\n id: loader.loader.id,\n input: loader.input,\n operation: loader.loader.operation,\n operationKey: loader.operationKey,\n })),\n screenId: args.screenId,\n });\n}\n\nfunction createScreenOperationLoaderDiagnostic(\n loader: OperationScreenDataLoaderDefinition,\n code: DataSourceDiagnostic['code'],\n message: string,\n): DataSourceDiagnostic {\n return {\n code,\n dataSourceId: loader.operation.dataSourceId,\n endpointId: loader.operation.endpointId,\n operationId: loader.operation.operationId,\n message,\n severity: 'error',\n };\n}\n\nfunction createRuntimeScreenOperationLoaderIdleKey(screenId: string): string {\n return `screen:${screenId}:no-operation-loaders`;\n}\n\nfunction stableSerialize(value: unknown): string {\n return JSON.stringify(sortSerializableValue(value));\n}\n\nfunction sortSerializableValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortSerializableValue);\n }\n\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n\n return Object.keys(value)\n .sort((left, right) => left.localeCompare(right))\n .reduce<Record<string, unknown>>((result, key) => {\n result[key] = sortSerializableValue((value as Record<string, unknown>)[key]);\n return result;\n }, {});\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"version-packages": "changeset version"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@ankhorage/contracts": "^
|
|
63
|
-
"@ankhorage/data-sources": "^0.
|
|
62
|
+
"@ankhorage/contracts": "^4.0.2",
|
|
63
|
+
"@ankhorage/data-sources": "^1.0.0"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"react": "19.1.0",
|
package/paradox/badges/npm.svg
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v0.
|
|
2
|
-
<title>npm: v0.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v0.3.0">
|
|
2
|
+
<title>npm: v0.3.0</title>
|
|
3
3
|
<rect width="38" height="20" fill="#374151"/>
|
|
4
4
|
<rect x="38" width="52" height="20" fill="#cb3837"/>
|
|
5
5
|
<text x="19" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">npm</text>
|
|
6
|
-
<text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v0.
|
|
6
|
+
<text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v0.3.0</text>
|
|
7
7
|
</svg>
|
package/paradox/components.md
CHANGED
|
@@ -29,26 +29,22 @@ graph TD
|
|
|
29
29
|
package__ankhorage_runtime -.-> module_src_runtimeActionRegistry_ts
|
|
30
30
|
module_src_runtimeActionRegistry_ts --> module_src_runtimeBindings_ts
|
|
31
31
|
module_src_runtimeActionRegistry_ts --> module_src_RuntimeRendererConfig_tsx
|
|
32
|
-
module_src_runtimeApiLoaders_test_ts["src/runtimeApiLoaders.test.ts"]
|
|
33
|
-
package__ankhorage_runtime -.-> module_src_runtimeApiLoaders_test_ts
|
|
34
|
-
module_src_runtimeApiLoaders_test_ts --> module_src_runtimeApiLoaders_ts
|
|
35
|
-
module_src_runtimeApiLoaders_test_ts --> module_src_runtimeBindings_ts
|
|
36
|
-
module_src_runtimeApiLoaders_test_ts --> module_src_runtimeStateAdapter_ts
|
|
37
|
-
module_src_runtimeApiLoaders_ts["src/runtimeApiLoaders.ts"]
|
|
38
|
-
package__ankhorage_runtime -.-> module_src_runtimeApiLoaders_ts
|
|
39
|
-
module_src_runtimeApiLoaders_ts --> module_src_runtimeStateAdapter_ts
|
|
40
32
|
module_src_runtimeBindings_test_ts["src/runtimeBindings.test.ts"]
|
|
41
33
|
package__ankhorage_runtime -.-> module_src_runtimeBindings_test_ts
|
|
42
34
|
module_src_runtimeBindings_test_ts --> module_src_runtimeBindings_ts
|
|
43
35
|
module_src_runtimeBindings_test_ts --> module_src_runtimeNodeProps_ts
|
|
44
36
|
module_src_runtimeBindings_ts["src/runtimeBindings.ts"]
|
|
45
37
|
package__ankhorage_runtime -.-> module_src_runtimeBindings_ts
|
|
38
|
+
module_src_runtimeDatabaseOperationExecutor_ts["src/runtimeDatabaseOperationExecutor.ts"]
|
|
39
|
+
package__ankhorage_runtime -.-> module_src_runtimeDatabaseOperationExecutor_ts
|
|
40
|
+
module_src_runtimeDatabaseOperationExecutor_ts --> module_src_runtimeBindings_ts
|
|
46
41
|
module_src_runtimeDataSourceOperations_test_ts["src/runtimeDataSourceOperations.test.ts"]
|
|
47
42
|
package__ankhorage_runtime -.-> module_src_runtimeDataSourceOperations_test_ts
|
|
48
43
|
module_src_runtimeDataSourceOperations_test_ts --> module_src_runtimeDataSourceOperations_ts
|
|
49
44
|
module_src_runtimeDataSourceOperations_ts["src/runtimeDataSourceOperations.ts"]
|
|
50
45
|
package__ankhorage_runtime -.-> module_src_runtimeDataSourceOperations_ts
|
|
51
46
|
module_src_runtimeDataSourceOperations_ts --> module_src_runtimeBindings_ts
|
|
47
|
+
module_src_runtimeDataSourceOperations_ts --> module_src_runtimeDatabaseOperationExecutor_ts
|
|
52
48
|
module_src_runtimeDbPersist_test_ts["src/runtimeDbPersist.test.ts"]
|
|
53
49
|
package__ankhorage_runtime -.-> module_src_runtimeDbPersist_test_ts
|
|
54
50
|
module_src_runtimeDbPersist_test_ts --> module_src_runtimeActionRegistry_ts
|
|
@@ -112,10 +108,10 @@ graph TD
|
|
|
112
108
|
module_src_RuntimeScreen_tsx["src/RuntimeScreen.tsx"]
|
|
113
109
|
package__ankhorage_runtime -.-> module_src_RuntimeScreen_tsx
|
|
114
110
|
module_src_RuntimeScreen_tsx --> module_src_registry_tsx
|
|
115
|
-
module_src_RuntimeScreen_tsx --> module_src_runtimeApiLoaders_ts
|
|
116
111
|
module_src_RuntimeScreen_tsx --> module_src_RuntimeRenderer_tsx
|
|
117
112
|
module_src_RuntimeScreen_tsx --> module_src_RuntimeRendererConfig_tsx
|
|
118
113
|
module_src_RuntimeScreen_tsx --> module_src_runtimeScreenLoaders_ts
|
|
114
|
+
module_src_RuntimeScreen_tsx --> module_src_runtimeStateAdapter_ts
|
|
119
115
|
module_src_runtimeScreenLoaders_arrayPath_test_ts["src/runtimeScreenLoaders.arrayPath.test.ts"]
|
|
120
116
|
package__ankhorage_runtime -.-> module_src_runtimeScreenLoaders_arrayPath_test_ts
|
|
121
117
|
module_src_runtimeScreenLoaders_arrayPath_test_ts --> module_src_runtimeBindings_ts
|
|
@@ -9,10 +9,9 @@ graph LR
|
|
|
9
9
|
module_src_rendering_ts["src/rendering.ts"]
|
|
10
10
|
module_src_runtimeActionRegistry_test_ts["src/runtimeActionRegistry.test.ts"]
|
|
11
11
|
module_src_runtimeActionRegistry_ts["src/runtimeActionRegistry.ts"]
|
|
12
|
-
module_src_runtimeApiLoaders_test_ts["src/runtimeApiLoaders.test.ts"]
|
|
13
|
-
module_src_runtimeApiLoaders_ts["src/runtimeApiLoaders.ts"]
|
|
14
12
|
module_src_runtimeBindings_test_ts["src/runtimeBindings.test.ts"]
|
|
15
13
|
module_src_runtimeBindings_ts["src/runtimeBindings.ts"]
|
|
14
|
+
module_src_runtimeDatabaseOperationExecutor_ts["src/runtimeDatabaseOperationExecutor.ts"]
|
|
16
15
|
module_src_runtimeDataSourceOperations_test_ts["src/runtimeDataSourceOperations.test.ts"]
|
|
17
16
|
module_src_runtimeDataSourceOperations_ts["src/runtimeDataSourceOperations.ts"]
|
|
18
17
|
module_src_runtimeDbPersist_test_ts["src/runtimeDbPersist.test.ts"]
|
|
@@ -106,10 +105,6 @@ graph LR
|
|
|
106
105
|
module_src_runtimeDbPersist_ts --> export_executeDbPersistAction
|
|
107
106
|
export_executeDbPersistAction -.-> export_RuntimeActionHandlerArgs
|
|
108
107
|
export_executeDbPersistAction -.-> export_RuntimeDbPersistExecutionResult
|
|
109
|
-
export_executeRuntimeApiLoaders["executeRuntimeApiLoaders"]
|
|
110
|
-
module_src_runtimeApiLoaders_ts --> export_executeRuntimeApiLoaders
|
|
111
|
-
export_executeRuntimeApiLoaders -.-> export_RuntimeApiLoaderDefinition
|
|
112
|
-
export_executeRuntimeApiLoaders -.-> export_RuntimeApiLoaderExecutionResult
|
|
113
108
|
export_executeRuntimeScreenOperationLoaders["executeRuntimeScreenOperationLoaders"]
|
|
114
109
|
module_src_runtimeScreenLoaders_ts --> export_executeRuntimeScreenOperationLoaders
|
|
115
110
|
export_executeRuntimeScreenOperationLoaders -.-> export_RuntimeBindingOperationExecutor
|
|
@@ -122,10 +117,6 @@ graph LR
|
|
|
122
117
|
module_src_ManifestContext_tsx --> export_ManifestContext
|
|
123
118
|
export_ManifestProvider["ManifestProvider"]
|
|
124
119
|
module_src_ManifestContext_tsx --> export_ManifestProvider
|
|
125
|
-
export_materializeRuntimeApiLoaderState["materializeRuntimeApiLoaderState"]
|
|
126
|
-
module_src_runtimeApiLoaders_ts --> export_materializeRuntimeApiLoaderState
|
|
127
|
-
export_materializeRuntimeApiLoaderState -.-> export_RuntimeApiLoaderDefinition
|
|
128
|
-
export_materializeRuntimeApiLoaderState -.-> export_RuntimeApiLoaderMaterializationResult
|
|
129
120
|
export_mergeRuntimeRendererConfig["mergeRuntimeRendererConfig"]
|
|
130
121
|
module_src_RuntimeRendererConfig_tsx --> export_mergeRuntimeRendererConfig
|
|
131
122
|
export_mergeRuntimeRendererConfig -.-> export_RuntimeRendererConfig
|
|
@@ -155,8 +146,6 @@ graph LR
|
|
|
155
146
|
export_resolveRuntimeBindingValueSync["resolveRuntimeBindingValueSync"]
|
|
156
147
|
module_src_runtimeBindings_ts --> export_resolveRuntimeBindingValueSync
|
|
157
148
|
export_resolveRuntimeBindingValueSync -.-> export_RuntimeBindingResolutionContext
|
|
158
|
-
export_resolveScreenApiLoaders["resolveScreenApiLoaders"]
|
|
159
|
-
module_src_runtimeScreenLoaders_ts --> export_resolveScreenApiLoaders
|
|
160
149
|
export_resolveScreenOperationLoaders["resolveScreenOperationLoaders"]
|
|
161
150
|
module_src_runtimeScreenLoaders_ts --> export_resolveScreenOperationLoaders
|
|
162
151
|
export_RUNTIME_CAPABILITIES["RUNTIME_CAPABILITIES"]
|
|
@@ -186,18 +175,6 @@ graph LR
|
|
|
186
175
|
module_src_runtimeActionRegistry_ts --> export_RuntimeActionResolutionScope
|
|
187
176
|
export_RuntimeAdapterDescriptor["RuntimeAdapterDescriptor"]
|
|
188
177
|
module_src_runtimeManifest_ts --> export_RuntimeAdapterDescriptor
|
|
189
|
-
export_RuntimeApiLoaderDefinition["RuntimeApiLoaderDefinition"]
|
|
190
|
-
module_src_runtimeApiLoaders_ts --> export_RuntimeApiLoaderDefinition
|
|
191
|
-
export_RuntimeApiLoaderDiagnostic["RuntimeApiLoaderDiagnostic"]
|
|
192
|
-
module_src_runtimeApiLoaders_ts --> export_RuntimeApiLoaderDiagnostic
|
|
193
|
-
export_RuntimeApiLoaderExecutionResult["RuntimeApiLoaderExecutionResult"]
|
|
194
|
-
module_src_runtimeApiLoaders_ts --> export_RuntimeApiLoaderExecutionResult
|
|
195
|
-
export_RuntimeApiLoaderExecutionResult -.-> export_RuntimeApiLoaderDiagnostic
|
|
196
|
-
export_RuntimeApiLoaderMaterializationResult["RuntimeApiLoaderMaterializationResult"]
|
|
197
|
-
module_src_runtimeApiLoaders_ts --> export_RuntimeApiLoaderMaterializationResult
|
|
198
|
-
export_RuntimeApiLoaderMaterializationResult -.-> export_RuntimeApiLoaderDiagnostic
|
|
199
|
-
export_RuntimeApiLoaderMode["RuntimeApiLoaderMode"]
|
|
200
|
-
module_src_runtimeApiLoaders_ts --> export_RuntimeApiLoaderMode
|
|
201
178
|
export_RuntimeBindingDescriptor["RuntimeBindingDescriptor"]
|
|
202
179
|
module_src_runtimeManifest_ts --> export_RuntimeBindingDescriptor
|
|
203
180
|
export_RuntimeBindingOperationExecutionArgs["RuntimeBindingOperationExecutionArgs"]
|
|
@@ -303,10 +280,6 @@ graph LR
|
|
|
303
280
|
module_src_ManifestContext_tsx --> export_useManifestContext
|
|
304
281
|
export_useOptionalManifestContext["useOptionalManifestContext"]
|
|
305
282
|
module_src_ManifestContext_tsx --> export_useOptionalManifestContext
|
|
306
|
-
export_useRuntimeApiStateLoaders["useRuntimeApiStateLoaders"]
|
|
307
|
-
module_src_runtimeApiLoaders_ts --> export_useRuntimeApiStateLoaders
|
|
308
|
-
export_useRuntimeApiStateLoaders -.-> export_RuntimeApiLoaderDefinition
|
|
309
|
-
export_useRuntimeApiStateLoaders -.-> export_RuntimeApiLoaderDiagnostic
|
|
310
283
|
export_useRuntimeRendererConfig["useRuntimeRendererConfig"]
|
|
311
284
|
module_src_RuntimeRendererConfig_tsx --> export_useRuntimeRendererConfig
|
|
312
285
|
export_useRuntimeRendererConfig -.-> export_RuntimeRendererConfig
|
|
@@ -9,10 +9,9 @@ graph LR
|
|
|
9
9
|
module_src_rendering_ts["src/rendering.ts"]
|
|
10
10
|
module_src_runtimeActionRegistry_test_ts["src/runtimeActionRegistry.test.ts"]
|
|
11
11
|
module_src_runtimeActionRegistry_ts["src/runtimeActionRegistry.ts"]
|
|
12
|
-
module_src_runtimeApiLoaders_test_ts["src/runtimeApiLoaders.test.ts"]
|
|
13
|
-
module_src_runtimeApiLoaders_ts["src/runtimeApiLoaders.ts"]
|
|
14
12
|
module_src_runtimeBindings_test_ts["src/runtimeBindings.test.ts"]
|
|
15
13
|
module_src_runtimeBindings_ts["src/runtimeBindings.ts"]
|
|
14
|
+
module_src_runtimeDatabaseOperationExecutor_ts["src/runtimeDatabaseOperationExecutor.ts"]
|
|
16
15
|
module_src_runtimeDataSourceOperations_test_ts["src/runtimeDataSourceOperations.test.ts"]
|
|
17
16
|
module_src_runtimeDataSourceOperations_ts["src/runtimeDataSourceOperations.ts"]
|
|
18
17
|
module_src_runtimeDbPersist_test_ts["src/runtimeDbPersist.test.ts"]
|
|
@@ -46,14 +45,12 @@ graph LR
|
|
|
46
45
|
module_src_runtimeActionRegistry_test_ts --> module_src_runtimeBindings_ts
|
|
47
46
|
module_src_runtimeActionRegistry_ts --> module_src_runtimeBindings_ts
|
|
48
47
|
module_src_runtimeActionRegistry_ts --> module_src_RuntimeRendererConfig_tsx
|
|
49
|
-
module_src_runtimeApiLoaders_test_ts --> module_src_runtimeApiLoaders_ts
|
|
50
|
-
module_src_runtimeApiLoaders_test_ts --> module_src_runtimeBindings_ts
|
|
51
|
-
module_src_runtimeApiLoaders_test_ts --> module_src_runtimeStateAdapter_ts
|
|
52
|
-
module_src_runtimeApiLoaders_ts --> module_src_runtimeStateAdapter_ts
|
|
53
48
|
module_src_runtimeBindings_test_ts --> module_src_runtimeBindings_ts
|
|
54
49
|
module_src_runtimeBindings_test_ts --> module_src_runtimeNodeProps_ts
|
|
50
|
+
module_src_runtimeDatabaseOperationExecutor_ts --> module_src_runtimeBindings_ts
|
|
55
51
|
module_src_runtimeDataSourceOperations_test_ts --> module_src_runtimeDataSourceOperations_ts
|
|
56
52
|
module_src_runtimeDataSourceOperations_ts --> module_src_runtimeBindings_ts
|
|
53
|
+
module_src_runtimeDataSourceOperations_ts --> module_src_runtimeDatabaseOperationExecutor_ts
|
|
57
54
|
module_src_runtimeDbPersist_test_ts --> module_src_runtimeActionRegistry_ts
|
|
58
55
|
module_src_runtimeDbPersist_test_ts --> module_src_runtimeDbPersist_ts
|
|
59
56
|
module_src_runtimeDbPersist_ts --> module_src_RuntimeRendererConfig_tsx
|
|
@@ -83,10 +80,10 @@ graph LR
|
|
|
83
80
|
module_src_runtimeRepeat_test_ts --> module_src_runtimeRepeat_ts
|
|
84
81
|
module_src_runtimeRepeat_ts --> module_src_runtimeBindings_ts
|
|
85
82
|
module_src_RuntimeScreen_tsx --> module_src_registry_tsx
|
|
86
|
-
module_src_RuntimeScreen_tsx --> module_src_runtimeApiLoaders_ts
|
|
87
83
|
module_src_RuntimeScreen_tsx --> module_src_RuntimeRenderer_tsx
|
|
88
84
|
module_src_RuntimeScreen_tsx --> module_src_RuntimeRendererConfig_tsx
|
|
89
85
|
module_src_RuntimeScreen_tsx --> module_src_runtimeScreenLoaders_ts
|
|
86
|
+
module_src_RuntimeScreen_tsx --> module_src_runtimeStateAdapter_ts
|
|
90
87
|
module_src_runtimeScreenLoaders_arrayPath_test_ts --> module_src_runtimeBindings_ts
|
|
91
88
|
module_src_runtimeScreenLoaders_arrayPath_test_ts --> module_src_runtimeScreenLoaders_ts
|
|
92
89
|
module_src_runtimeScreenLoaders_test_ts --> module_src_runtimeBindings_ts
|
|
@@ -2,15 +2,12 @@ sequenceDiagram
|
|
|
2
2
|
participant participant_createRuntimeScreenOperationLoaderLifecycle as createRuntimeScreenOperationLoaderLifecycle
|
|
3
3
|
participant participant_RuntimeScreen as RuntimeScreen
|
|
4
4
|
participant participant_useContext as useContext
|
|
5
|
-
participant participant_useRuntimeApiStateLoaders as useRuntimeApiStateLoaders
|
|
6
5
|
participant participant_useRuntimeRendererConfig as useRuntimeRendererConfig
|
|
7
6
|
participant participant_useRuntimeScreenOperationLoaders as useRuntimeScreenOperationLoaders
|
|
8
7
|
participant_RuntimeScreen->>participant_useRuntimeRendererConfig: useRuntimeRendererConfig()
|
|
9
8
|
participant_useRuntimeRendererConfig->>participant_useContext: useContext()
|
|
10
9
|
participant_useContext-->>participant_useRuntimeRendererConfig: return
|
|
11
10
|
participant_useRuntimeRendererConfig-->>participant_RuntimeScreen: return
|
|
12
|
-
participant_RuntimeScreen->>participant_useRuntimeApiStateLoaders: useRuntimeApiStateLoaders()
|
|
13
|
-
participant_useRuntimeApiStateLoaders-->>participant_RuntimeScreen: return
|
|
14
11
|
participant_RuntimeScreen->>participant_useRuntimeScreenOperationLoaders: useRuntimeScreenOperationLoaders()
|
|
15
12
|
participant_useRuntimeScreenOperationLoaders->>participant_createRuntimeScreenOperationLoaderLifecycle: createRuntimeScreenOperationLoaderLifecycle()
|
|
16
13
|
participant_createRuntimeScreenOperationLoaderLifecycle-->>participant_useRuntimeScreenOperationLoaders: return
|