@ontahi/react 1.0.0-alpha.11 → 1.0.0-alpha.13

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.
Files changed (63) hide show
  1. package/README.md +154 -5
  2. package/dist/actions/fetch-operation-bridge-adapter.d.ts +10 -3
  3. package/dist/actions/fetch-operation-bridge-adapter.d.ts.map +1 -1
  4. package/dist/actions/fetch-operation-bridge-adapter.js +92 -29
  5. package/dist/actions/fetch-operation-bridge-adapter.js.map +1 -1
  6. package/dist/actions/operation-bridge.d.ts +2 -0
  7. package/dist/actions/operation-bridge.d.ts.map +1 -1
  8. package/dist/actions/operation-bridge.js.map +1 -1
  9. package/dist/graph/canonical-request-invalidation.d.ts +14 -0
  10. package/dist/graph/canonical-request-invalidation.d.ts.map +1 -0
  11. package/dist/graph/canonical-request-invalidation.js +42 -0
  12. package/dist/graph/canonical-request-invalidation.js.map +1 -0
  13. package/dist/graph/context.d.ts +10 -3
  14. package/dist/graph/context.d.ts.map +1 -1
  15. package/dist/graph/context.js +39 -4
  16. package/dist/graph/context.js.map +1 -1
  17. package/dist/graph/executor.d.ts +19 -1
  18. package/dist/graph/executor.d.ts.map +1 -1
  19. package/dist/graph/executor.js.map +1 -1
  20. package/dist/graph/fetch-graph-client.d.ts +20 -4
  21. package/dist/graph/fetch-graph-client.d.ts.map +1 -1
  22. package/dist/graph/fetch-graph-client.js +87 -17
  23. package/dist/graph/fetch-graph-client.js.map +1 -1
  24. package/dist/graph/fetch-graph-runtime.d.ts +9 -4
  25. package/dist/graph/fetch-graph-runtime.d.ts.map +1 -1
  26. package/dist/graph/fetch-graph-runtime.js +83 -6
  27. package/dist/graph/fetch-graph-runtime.js.map +1 -1
  28. package/dist/graph/fetch-runtime-transport.d.ts +4 -4
  29. package/dist/graph/fetch-runtime-transport.d.ts.map +1 -1
  30. package/dist/graph/fetch-runtime-transport.js +11 -14
  31. package/dist/graph/fetch-runtime-transport.js.map +1 -1
  32. package/dist/graph/graph-hooks.d.ts +3 -1
  33. package/dist/graph/graph-hooks.d.ts.map +1 -1
  34. package/dist/graph/graph-hooks.js +167 -40
  35. package/dist/graph/graph-hooks.js.map +1 -1
  36. package/dist/graph/index.d.ts +5 -0
  37. package/dist/graph/index.d.ts.map +1 -1
  38. package/dist/graph/index.js +5 -0
  39. package/dist/graph/index.js.map +1 -1
  40. package/dist/graph/model-command-hooks.d.ts +2 -0
  41. package/dist/graph/model-command-hooks.d.ts.map +1 -0
  42. package/dist/graph/model-command-hooks.js +9 -0
  43. package/dist/graph/model-command-hooks.js.map +1 -0
  44. package/dist/graph/operation-hooks.d.ts +4 -2
  45. package/dist/graph/operation-hooks.d.ts.map +1 -1
  46. package/dist/graph/operation-hooks.js +95 -11
  47. package/dist/graph/operation-hooks.js.map +1 -1
  48. package/dist/graph/operation-types.d.ts +5 -1
  49. package/dist/graph/operation-types.d.ts.map +1 -1
  50. package/dist/graph/operation-types.js.map +1 -1
  51. package/dist/graph/runtime-graph-client.d.ts +13 -0
  52. package/dist/graph/runtime-graph-client.d.ts.map +1 -0
  53. package/dist/graph/runtime-graph-client.js +35 -0
  54. package/dist/graph/runtime-graph-client.js.map +1 -0
  55. package/dist/graph/semantic-invalidation.d.ts +27 -0
  56. package/dist/graph/semantic-invalidation.d.ts.map +1 -0
  57. package/dist/graph/semantic-invalidation.js +55 -0
  58. package/dist/graph/semantic-invalidation.js.map +1 -0
  59. package/dist/graph/websocket-runtime-transport.d.ts +32 -0
  60. package/dist/graph/websocket-runtime-transport.d.ts.map +1 -0
  61. package/dist/graph/websocket-runtime-transport.js +605 -0
  62. package/dist/graph/websocket-runtime-transport.js.map +1 -0
  63. package/package.json +4 -4
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import { normalizeGraphSchemaClientInput } from '@ontahi/core/data-graph';
3
+ import { useQueryClient } from '@tanstack/react-query';
4
+ import { useCallback, useMemo } from 'react';
5
+ import { resolveOperationBridgeInvalidationQueryKeys, } from '../actions/index.js';
6
+ const graphCommandEntityNames = (request) => {
7
+ const command = request.command;
8
+ if (command.kind === 'entity-mutation-command')
9
+ return [command.entityName];
10
+ return [...new Set([command.relation.sourceEntityName, command.relation.targetEntityName])];
11
+ };
12
+ const invalidateQueryKeys = async (queryClient, queryKeys) => {
13
+ await Promise.all(queryKeys.map(queryKey => queryClient.invalidateQueries({ queryKey })));
14
+ };
15
+ export const invalidateCanonicalRequest = async (queryClient, request, operations) => {
16
+ if (request.kind === 'graph-read')
17
+ return { kind: 'read', queryKeys: [] };
18
+ if (request.kind === 'graph-command') {
19
+ const queryKeys = graphCommandEntityNames(request).map(entityName => [entityName]);
20
+ await invalidateQueryKeys(queryClient, queryKeys);
21
+ return { kind: 'graph-command', queryKeys };
22
+ }
23
+ const operation = operations.get(request.operationId);
24
+ if (!operation)
25
+ throw new Error(`No client Operation is registered for "${request.operationId}".`);
26
+ const input = operation.input
27
+ ? normalizeGraphSchemaClientInput(operation.input, request.input)
28
+ : request.input;
29
+ const queryKeys = resolveOperationBridgeInvalidationQueryKeys(operation, input);
30
+ await invalidateQueryKeys(queryClient, queryKeys);
31
+ return { kind: 'operation', queryKeys };
32
+ };
33
+ /**
34
+ * @deprecated Compatibility fallback for receivers without committed mutation metadata. Prefer
35
+ * semantic mutation hooks or `invalidateSemanticGraphReads` with Runtime Protocol metadata.
36
+ */
37
+ export const useCanonicalRequestInvalidation = (operations) => {
38
+ const queryClient = useQueryClient();
39
+ const operationMap = useMemo(() => new Map(operations.map(operation => [operation.id, operation])), [operations]);
40
+ return useCallback((request) => invalidateCanonicalRequest(queryClient, request, operationMap), [operationMap, queryClient]);
41
+ };
42
+ //# sourceMappingURL=canonical-request-invalidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-request-invalidation.js","sourceRoot":"","sources":["../../src/graph/canonical-request-invalidation.ts"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { normalizeGraphSchemaClientInput, type GraphCommandRequest } from '@ontahi/core/data-graph';\nimport type { ModelCommandCanonicalRequest } from '@ontahi/core/runtime/protocol';\nimport { useQueryClient, type QueryClient, type QueryKey } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\n\nimport {\n resolveOperationBridgeInvalidationQueryKeys,\n type BridgedOperationLike,\n} from '../actions/index.js';\n\nexport type CanonicalRequestInvalidation = {\n readonly kind: 'read' | 'graph-command' | 'operation';\n readonly queryKeys: readonly QueryKey[];\n};\n\nconst graphCommandEntityNames = (request: GraphCommandRequest): readonly string[] => {\n const command = request.command;\n if (command.kind === 'entity-mutation-command') return [command.entityName];\n return [...new Set([command.relation.sourceEntityName, command.relation.targetEntityName])];\n};\n\nconst invalidateQueryKeys = async (queryClient: QueryClient, queryKeys: readonly QueryKey[]) => {\n await Promise.all(queryKeys.map(queryKey => queryClient.invalidateQueries({ queryKey })));\n};\n\nexport const invalidateCanonicalRequest = async (\n queryClient: QueryClient,\n request: ModelCommandCanonicalRequest,\n operations: ReadonlyMap<string, BridgedOperationLike<any, any>>,\n): Promise<CanonicalRequestInvalidation> => {\n if (request.kind === 'graph-read') return { kind: 'read', queryKeys: [] };\n\n if (request.kind === 'graph-command') {\n const queryKeys = graphCommandEntityNames(request).map(entityName => [entityName]);\n await invalidateQueryKeys(queryClient, queryKeys);\n return { kind: 'graph-command', queryKeys };\n }\n\n const operation = operations.get(request.operationId);\n if (!operation)\n throw new Error(`No client Operation is registered for \"${request.operationId}\".`);\n\n const input = operation.input\n ? normalizeGraphSchemaClientInput(operation.input, request.input)\n : request.input;\n const queryKeys = resolveOperationBridgeInvalidationQueryKeys(operation, input);\n await invalidateQueryKeys(queryClient, queryKeys);\n return { kind: 'operation', queryKeys };\n};\n\n/**\n * @deprecated Compatibility fallback for receivers without committed mutation metadata. Prefer\n * semantic mutation hooks or `invalidateSemanticGraphReads` with Runtime Protocol metadata.\n */\nexport const useCanonicalRequestInvalidation = (\n operations: readonly BridgedOperationLike<any, any>[],\n) => {\n const queryClient = useQueryClient();\n const operationMap = useMemo(\n () => new Map(operations.map(operation => [operation.id, operation])),\n [operations],\n );\n\n return useCallback(\n (request: ModelCommandCanonicalRequest) =>\n invalidateCanonicalRequest(queryClient, request, operationMap),\n [operationMap, queryClient],\n );\n};\n"]}
@@ -1,11 +1,17 @@
1
- import { type GraphClientCache, type OperationExecutionAffordance, type ReflectedEntityDataReader, type ReflectedRelatedEntityDataReader, type ReflectedOperationDescriptor, type ReflectedOperationInvoker } from '@ontahi/core/data-graph';
1
+ import { type ClientApplication, type GraphClientCache, type OperationExecutionAffordance, type ReflectedEntityDataReader, type ReflectedRelatedEntityDataReader, type ReflectedOperationDescriptor, type ReflectedOperationInvoker } from '@ontahi/core/data-graph';
2
2
  import { type ExecutionIdentity } from '@ontahi/core/runtime/identity';
3
- import type { RuntimeTransport } from '@ontahi/core/runtime/protocol';
3
+ import { type RuntimeTransport } from '@ontahi/core/runtime/protocol';
4
4
  import { type ReactNode } from 'react';
5
5
  import type { AnyOperationBridgeAdapter } from '../actions/index.js';
6
6
  import type { ReactGraphExecutor } from './executor.js';
7
7
  import { type OntahiGraphClient } from './fetch-graph-client.js';
8
8
  import { type ReflectedGraphOperationLike } from './reflected-operation-invoker.js';
9
+ export type OntahiClientContextValue = {
10
+ readonly application?: ClientApplication;
11
+ readonly clientCache: GraphClientCache;
12
+ readonly identity: ExecutionIdentity;
13
+ readonly runtimeTransport?: RuntimeTransport;
14
+ };
9
15
  export type OntahiGraphProviderProps<TGraphRuntime = unknown, TReadOptions = unknown, TCommandOptions = TReadOptions> = {
10
16
  children: ReactNode;
11
17
  runtime: TGraphRuntime;
@@ -21,6 +27,7 @@ export type OntahiGraphProviderProps<TGraphRuntime = unknown, TReadOptions = unk
21
27
  identity?: ExecutionIdentity;
22
28
  };
23
29
  export declare function OntahiGraphProvider<TGraphRuntime = unknown, TReadOptions = unknown, TCommandOptions = TReadOptions>({ children, runtime, graphExecutor, runtimeTransport, client, operationBridgeAdapters, reflectedEntityDataReader, reflectedRelatedEntityDataReader, reflectedOperationInvoker, reflectedGraphOperations, clientCache, identity, }: OntahiGraphProviderProps<TGraphRuntime, TReadOptions, TCommandOptions>): import("react/jsx-runtime").JSX.Element;
30
+ export declare const useOntahiClientContext: () => OntahiClientContextValue | undefined;
24
31
  export declare const useExecutionIdentity: () => ExecutionIdentity;
25
32
  export declare function useGraphRuntime<TGraphRuntime = unknown>(): TGraphRuntime;
26
33
  export declare function useGraphExecutor<TReadOptions = unknown, TCommandOptions = TReadOptions>(): ReactGraphExecutor<TReadOptions, TCommandOptions>;
@@ -40,7 +47,7 @@ export declare function useGraphClientCache(): {
40
47
  resolveEntityRef: <TRef extends import("@ontahi/core/data-graph").AnyEntityRef>(ref: TRef) => import("@ontahi/core/data-graph").AnyEntityRef | TRef;
41
48
  subscribe: (listener: import("@ontahi/core/data-graph").GraphClientCacheListener) => (() => void);
42
49
  writeEntity: <TEntity extends import("@ontahi/core/data-graph").AnyEntityDefinition, TSnapshot extends Record<string, unknown>>(entityDefinition: TEntity, snapshot: TSnapshot) => import("@ontahi/core/data-graph").GraphClientCacheWriteResult<TSnapshot> | undefined;
43
- writeOutput: (key: readonly unknown[], descriptor: import("@ontahi/core/data-graph").GraphOutputDescriptor | undefined, value: unknown) => import("@ontahi/core/data-graph").GraphClientCacheOutputNormalizationResult;
50
+ writeOutput: (key: readonly unknown[], descriptor: import("@ontahi/core/data-graph").GraphOutputDescriptor | undefined, value: unknown, source?: import("@ontahi/core/data-graph").GraphClientCacheOutputSource) => import("@ontahi/core/data-graph").GraphClientCacheOutputNormalizationResult;
44
51
  };
45
52
  export declare function useGraphClientCacheSnapshot(): import("@ontahi/core/data-graph").GraphClientCacheSnapshot;
46
53
  export declare const useGraphClientCacheVersion: (clientCache: GraphClientCache) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/graph/context.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/graph/context.tsx"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createGraphClientCache, } from '@ontahi/core/data-graph';
4
4
  import { anonymousExecutionIdentity } from '@ontahi/core/runtime/identity';
5
- import { createContext, useCallback, useContext, useMemo, useState, useSyncExternalStore, } from 'react';
5
+ import { subscribeRuntimeProtocolExecutions, } from '@ontahi/core/runtime/protocol';
6
+ import { QueryClientContext } from '@tanstack/react-query';
7
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState, useSyncExternalStore, } from 'react';
6
8
  import { createFetchGraphClient } from './fetch-graph-client.js';
7
9
  import { createReflectedOperationInvoker, } from './reflected-operation-invoker.js';
10
+ import { invalidateSemanticGraphReads } from './semantic-invalidation.js';
8
11
  const noReflectedGraphOperations = [];
9
12
  const GraphRuntimeContext = createContext(null);
10
13
  const ExecutionIdentityContext = createContext(anonymousExecutionIdentity);
@@ -15,6 +18,7 @@ const OperationBridgeAdaptersContext = createContext(null);
15
18
  const ReflectedEntityDataReaderContext = createContext(null);
16
19
  const ReflectedRelatedEntityDataReaderContext = createContext(null);
17
20
  const ReflectedOperationInvokerContext = createContext(null);
21
+ const OntahiClientContext = createContext(undefined);
18
22
  export function OntahiGraphProvider({ children, runtime, graphExecutor, runtimeTransport, client, operationBridgeAdapters, reflectedEntityDataReader, reflectedRelatedEntityDataReader, reflectedOperationInvoker, reflectedGraphOperations = noReflectedGraphOperations, clientCache, identity = anonymousExecutionIdentity, }) {
19
23
  const [defaultGraphClient] = useState(() => createFetchGraphClient());
20
24
  const [defaultClientCache] = useState(() => createGraphClientCache());
@@ -25,7 +29,14 @@ export function OntahiGraphProvider({ children, runtime, graphExecutor, runtimeT
25
29
  const resolvedReflectedEntityDataReader = reflectedEntityDataReader ?? graphClient?.reflectedEntityDataReader;
26
30
  const resolvedReflectedRelatedEntityDataReader = reflectedRelatedEntityDataReader ?? graphClient?.reflectedRelatedEntityDataReader;
27
31
  const configuredReflectedOperationInvoker = reflectedOperationInvoker ?? graphClient?.reflectedOperationInvoker;
28
- const graphClientCache = clientCache ?? defaultClientCache;
32
+ const graphClientCache = clientCache ?? graphClient?.clientCache ?? defaultClientCache;
33
+ const clientContext = useMemo(() => ({
34
+ ...(graphClient?.application ? { application: graphClient.application } : {}),
35
+ clientCache: graphClientCache,
36
+ identity,
37
+ ...(resolvedRuntimeTransport ? { runtimeTransport: resolvedRuntimeTransport } : {}),
38
+ }), [graphClient?.application, graphClientCache, identity, resolvedRuntimeTransport]);
39
+ const queryClient = useContext(QueryClientContext);
29
40
  const bridgeAdapterMap = useMemo(() => new Map(resolvedOperationBridgeAdapters.map(adapter => [adapter.name, adapter])), [resolvedOperationBridgeAdapters]);
30
41
  const resolvedReflectedOperationInvoker = useMemo(() => reflectedGraphOperations.length > 0
31
42
  ? createReflectedOperationInvoker({
@@ -34,8 +45,32 @@ export function OntahiGraphProvider({ children, runtime, graphExecutor, runtimeT
34
45
  graphOperations: reflectedGraphOperations,
35
46
  })
36
47
  : (configuredReflectedOperationInvoker ?? null), [configuredReflectedOperationInvoker, reflectedGraphOperations, resolvedGraphExecutor]);
37
- return (_jsx(ExecutionIdentityContext.Provider, { value: identity, children: _jsx(ReflectedOperationInvokerContext.Provider, { value: resolvedReflectedOperationInvoker, children: _jsx(ReflectedRelatedEntityDataReaderContext.Provider, { value: resolvedReflectedRelatedEntityDataReader ?? null, children: _jsx(ReflectedEntityDataReaderContext.Provider, { value: resolvedReflectedEntityDataReader ?? null, children: _jsx(OperationBridgeAdaptersContext.Provider, { value: bridgeAdapterMap, children: _jsx(RuntimeTransportContext.Provider, { value: resolvedRuntimeTransport ?? null, children: _jsx(GraphClientCacheContext.Provider, { value: graphClientCache, children: _jsx(GraphExecutorContext.Provider, { value: resolvedGraphExecutor ?? null, children: _jsx(GraphRuntimeContext.Provider, { value: runtime, children: children }) }) }) }) }) }) }) }) }));
38
- }
48
+ useEffect(() => {
49
+ if (!resolvedRuntimeTransport || !queryClient)
50
+ return;
51
+ return subscribeRuntimeProtocolExecutions(resolvedRuntimeTransport, async ({ metadata }) => {
52
+ await invalidateSemanticGraphReads(queryClient, metadata.committedMutations, {
53
+ ...(metadata.mutationCommitId
54
+ ? {
55
+ causedBy: {
56
+ kind: 'committed-mutations',
57
+ commitIds: [metadata.mutationCommitId],
58
+ overflow: false,
59
+ },
60
+ }
61
+ : {}),
62
+ ...(resolvedRuntimeTransport.causality
63
+ ? {
64
+ associateRefreshes: resolvedRuntimeTransport.causality.associateGraphReadRefreshes,
65
+ }
66
+ : {}),
67
+ });
68
+ return true;
69
+ });
70
+ }, [queryClient, resolvedRuntimeTransport]);
71
+ return (_jsx(OntahiClientContext.Provider, { value: clientContext, children: _jsx(ExecutionIdentityContext.Provider, { value: identity, children: _jsx(ReflectedOperationInvokerContext.Provider, { value: resolvedReflectedOperationInvoker, children: _jsx(ReflectedRelatedEntityDataReaderContext.Provider, { value: resolvedReflectedRelatedEntityDataReader ?? null, children: _jsx(ReflectedEntityDataReaderContext.Provider, { value: resolvedReflectedEntityDataReader ?? null, children: _jsx(OperationBridgeAdaptersContext.Provider, { value: bridgeAdapterMap, children: _jsx(RuntimeTransportContext.Provider, { value: resolvedRuntimeTransport ?? null, children: _jsx(GraphClientCacheContext.Provider, { value: graphClientCache, children: _jsx(GraphExecutorContext.Provider, { value: resolvedGraphExecutor ?? null, children: _jsx(GraphRuntimeContext.Provider, { value: runtime, children: children }) }) }) }) }) }) }) }) }) }));
72
+ }
73
+ export const useOntahiClientContext = () => useContext(OntahiClientContext);
39
74
  export const useExecutionIdentity = () => useContext(ExecutionIdentityContext);
40
75
  export function useGraphRuntime() {
41
76
  const runtime = useContext(GraphRuntimeContext);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/graph/context.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {\n createGraphClientCache,\n type GraphClientCache,\n type OperationExecutionAffordance,\n type ReflectedEntityDataReader,\n type ReflectedRelatedEntityDataReader,\n type ReflectedOperationDescriptor,\n type ReflectedOperationInvoker,\n} from '@ontahi/core/data-graph';\nimport { anonymousExecutionIdentity, type ExecutionIdentity } from '@ontahi/core/runtime/identity';\nimport type { RuntimeTransport } from '@ontahi/core/runtime/protocol';\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from 'react';\n\nimport type { AnyOperationBridgeAdapter } from '../actions/index.js';\n\nimport type { ReactGraphExecutor } from './executor.js';\nimport { createFetchGraphClient, type OntahiGraphClient } from './fetch-graph-client.js';\nimport {\n createReflectedOperationInvoker,\n type ReflectedGraphOperationLike,\n} from './reflected-operation-invoker.js';\n\nconst noReflectedGraphOperations: readonly ReflectedGraphOperationLike[] = [];\n\nconst GraphRuntimeContext = createContext<unknown | null>(null);\nconst ExecutionIdentityContext = createContext<ExecutionIdentity>(anonymousExecutionIdentity);\nconst GraphExecutorContext = createContext<ReactGraphExecutor<any, any> | null>(null);\nconst GraphClientCacheContext = createContext<GraphClientCache | null>(null);\nconst RuntimeTransportContext = createContext<RuntimeTransport | null>(null);\nconst OperationBridgeAdaptersContext = createContext<Map<string, AnyOperationBridgeAdapter> | null>(\n null,\n);\nconst ReflectedEntityDataReaderContext = createContext<ReflectedEntityDataReader | null>(null);\nconst ReflectedRelatedEntityDataReaderContext =\n createContext<ReflectedRelatedEntityDataReader | null>(null);\nconst ReflectedOperationInvokerContext = createContext<ReflectedOperationInvoker | null>(null);\n\nexport type OntahiGraphProviderProps<\n TGraphRuntime = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n> = {\n children: ReactNode;\n runtime: TGraphRuntime;\n graphExecutor?: ReactGraphExecutor<TReadOptions, TCommandOptions>;\n runtimeTransport?: RuntimeTransport;\n client?: OntahiGraphClient<TReadOptions, TCommandOptions> | false;\n operationBridgeAdapters?: AnyOperationBridgeAdapter[];\n reflectedEntityDataReader?: ReflectedEntityDataReader;\n reflectedRelatedEntityDataReader?: ReflectedRelatedEntityDataReader;\n reflectedOperationInvoker?: ReflectedOperationInvoker;\n reflectedGraphOperations?: readonly ReflectedGraphOperationLike[];\n clientCache?: GraphClientCache;\n identity?: ExecutionIdentity;\n};\n\nexport function OntahiGraphProvider<\n TGraphRuntime = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>({\n children,\n runtime,\n graphExecutor,\n runtimeTransport,\n client,\n operationBridgeAdapters,\n reflectedEntityDataReader,\n reflectedRelatedEntityDataReader,\n reflectedOperationInvoker,\n reflectedGraphOperations = noReflectedGraphOperations,\n clientCache,\n identity = anonymousExecutionIdentity,\n}: OntahiGraphProviderProps<TGraphRuntime, TReadOptions, TCommandOptions>) {\n const [defaultGraphClient] = useState(() => createFetchGraphClient());\n const [defaultClientCache] = useState(() => createGraphClientCache());\n const graphClient = client === false ? undefined : (client ?? defaultGraphClient);\n const resolvedGraphExecutor = graphExecutor ?? graphClient?.graphExecutor;\n const resolvedRuntimeTransport = runtimeTransport ?? graphClient?.runtimeTransport;\n const resolvedOperationBridgeAdapters =\n operationBridgeAdapters ?? graphClient?.operationBridgeAdapters ?? [];\n const resolvedReflectedEntityDataReader =\n reflectedEntityDataReader ?? graphClient?.reflectedEntityDataReader;\n const resolvedReflectedRelatedEntityDataReader =\n reflectedRelatedEntityDataReader ?? graphClient?.reflectedRelatedEntityDataReader;\n const configuredReflectedOperationInvoker =\n reflectedOperationInvoker ?? graphClient?.reflectedOperationInvoker;\n const graphClientCache = clientCache ?? defaultClientCache;\n const bridgeAdapterMap = useMemo(\n () => new Map(resolvedOperationBridgeAdapters.map(adapter => [adapter.name, adapter])),\n [resolvedOperationBridgeAdapters],\n );\n const resolvedReflectedOperationInvoker = useMemo(\n () =>\n reflectedGraphOperations.length > 0\n ? createReflectedOperationInvoker({\n fallback: configuredReflectedOperationInvoker,\n graphExecutor: resolvedGraphExecutor,\n graphOperations: reflectedGraphOperations,\n })\n : (configuredReflectedOperationInvoker ?? null),\n [configuredReflectedOperationInvoker, reflectedGraphOperations, resolvedGraphExecutor],\n );\n\n return (\n <ExecutionIdentityContext.Provider value={identity}>\n <ReflectedOperationInvokerContext.Provider value={resolvedReflectedOperationInvoker}>\n <ReflectedRelatedEntityDataReaderContext.Provider\n value={resolvedReflectedRelatedEntityDataReader ?? null}\n >\n <ReflectedEntityDataReaderContext.Provider\n value={resolvedReflectedEntityDataReader ?? null}\n >\n <OperationBridgeAdaptersContext.Provider value={bridgeAdapterMap}>\n <RuntimeTransportContext.Provider value={resolvedRuntimeTransport ?? null}>\n <GraphClientCacheContext.Provider value={graphClientCache}>\n <GraphExecutorContext.Provider value={resolvedGraphExecutor ?? null}>\n <GraphRuntimeContext.Provider value={runtime}>\n {children}\n </GraphRuntimeContext.Provider>\n </GraphExecutorContext.Provider>\n </GraphClientCacheContext.Provider>\n </RuntimeTransportContext.Provider>\n </OperationBridgeAdaptersContext.Provider>\n </ReflectedEntityDataReaderContext.Provider>\n </ReflectedRelatedEntityDataReaderContext.Provider>\n </ReflectedOperationInvokerContext.Provider>\n </ExecutionIdentityContext.Provider>\n );\n}\n\nexport const useExecutionIdentity = () => useContext(ExecutionIdentityContext);\n\nexport function useGraphRuntime<TGraphRuntime = unknown>() {\n const runtime = useContext(GraphRuntimeContext);\n\n if (runtime === null) {\n throw new Error('useGraphRuntime must be used within an OntahiGraphProvider');\n }\n\n return runtime as TGraphRuntime;\n}\n\nexport function useGraphExecutor<TReadOptions = unknown, TCommandOptions = TReadOptions>() {\n const graphExecutor = useContext(GraphExecutorContext);\n\n if (graphExecutor === null) {\n throw new Error(\n 'useGraphExecutor must be used within an OntahiGraphProvider with graphExecutor',\n );\n }\n\n return graphExecutor as ReactGraphExecutor<TReadOptions, TCommandOptions>;\n}\n\nexport function useGraphExecutorCapability<\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>() {\n return (useContext(GraphExecutorContext) ?? undefined) as\n | ReactGraphExecutor<TReadOptions, TCommandOptions>\n | undefined;\n}\n\nexport const useRuntimeTransportCapability = () => useContext(RuntimeTransportContext) ?? undefined;\n\nexport function useRuntimeTransport() {\n const transport = useRuntimeTransportCapability();\n if (!transport) {\n throw new Error('useRuntimeTransport requires an OntahiGraphProvider with runtimeTransport');\n }\n return transport;\n}\n\nexport function useGraphClientCache() {\n const clientCache = useContext(GraphClientCacheContext);\n\n if (clientCache === null) {\n throw new Error('useGraphClientCache must be used within an OntahiGraphProvider');\n }\n\n return clientCache;\n}\n\nexport function useGraphClientCacheSnapshot() {\n const clientCache = useGraphClientCache();\n\n useGraphClientCacheVersion(clientCache);\n\n return clientCache.inspect();\n}\n\nexport const useGraphClientCacheVersion = (clientCache: GraphClientCache) =>\n useSyncExternalStore(\n clientCache.subscribe,\n () => clientCache.inspect().version,\n () => clientCache.inspect().version,\n );\n\nexport function useOperationBridgeAdapter(adapterName: string) {\n const adapters = useContext(OperationBridgeAdaptersContext);\n\n if (adapters === null) {\n throw new Error('useOperationBridgeAdapter must be used within an OntahiGraphProvider');\n }\n\n const adapter = adapters.get(adapterName);\n\n if (!adapter) {\n throw new Error(`No operation bridge adapter registered for \"${adapterName}\"`);\n }\n\n return adapter;\n}\n\nexport function useDefaultOperationBridgeAdapter() {\n const adapters = useContext(OperationBridgeAdaptersContext);\n\n if (adapters === null) {\n throw new Error('useDefaultOperationBridgeAdapter must be used within an OntahiGraphProvider');\n }\n\n const [adapter] = adapters.values();\n\n if (!adapter) {\n throw new Error('No operation bridge adapter registered.');\n }\n\n return adapter;\n}\n\nexport function useHasOperationBridgeRuntime() {\n const adapters = useContext(OperationBridgeAdaptersContext);\n return adapters !== null && adapters.size > 0;\n}\n\nexport function useReflectedEntityDataReader() {\n const reader = useContext(ReflectedEntityDataReaderContext);\n\n if (reader === null) {\n throw new Error(\n 'useReflectedEntityDataReader must be used within an OntahiGraphProvider with reflectedEntityDataReader',\n );\n }\n\n return reader;\n}\n\nexport function useHasReflectedEntityDataReader() {\n return useContext(ReflectedEntityDataReaderContext) !== null;\n}\n\nexport function useReflectedRelatedEntityDataReader() {\n const reader = useContext(ReflectedRelatedEntityDataReaderContext);\n\n if (reader === null) {\n throw new Error(\n 'useReflectedRelatedEntityDataReader must be used within an OntahiGraphProvider with reflectedRelatedEntityDataReader',\n );\n }\n\n return reader;\n}\n\nexport const useHasReflectedRelatedEntityDataReader = () =>\n useContext(ReflectedRelatedEntityDataReaderContext) !== null;\n\nexport function useReflectedOperationInvoker() {\n const invoker = useContext(ReflectedOperationInvokerContext);\n\n if (invoker === null) {\n throw new Error(\n 'useReflectedOperationInvoker must be used within an OntahiGraphProvider with reflectedOperationInvoker',\n );\n }\n\n return invoker;\n}\n\nexport function useHasReflectedOperationInvoker() {\n return useContext(ReflectedOperationInvokerContext) !== null;\n}\n\nexport function useReflectedOperationSupport() {\n const invoker = useContext(ReflectedOperationInvokerContext);\n\n return useCallback(\n (operation: ReflectedOperationDescriptor) =>\n Boolean(invoker && (invoker.canInvokeOperation?.(operation) ?? true)),\n [invoker],\n );\n}\n\nexport function useReflectedOperationExecutionAffordance(\n operation: ReflectedOperationDescriptor,\n): OperationExecutionAffordance | undefined {\n const invoker = useContext(ReflectedOperationInvokerContext);\n\n return invoker?.getOperationExecutionAffordance?.(operation);\n}\n\nexport type { GraphClientCache };\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/graph/context.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {\n createGraphClientCache,\n type ClientApplication,\n type GraphClientCache,\n type OperationExecutionAffordance,\n type ReflectedEntityDataReader,\n type ReflectedRelatedEntityDataReader,\n type ReflectedOperationDescriptor,\n type ReflectedOperationInvoker,\n} from '@ontahi/core/data-graph';\nimport { anonymousExecutionIdentity, type ExecutionIdentity } from '@ontahi/core/runtime/identity';\nimport {\n subscribeRuntimeProtocolExecutions,\n type RuntimeTransport,\n} from '@ontahi/core/runtime/protocol';\nimport { QueryClientContext } from '@tanstack/react-query';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from 'react';\n\nimport type { AnyOperationBridgeAdapter } from '../actions/index.js';\n\nimport type { ReactGraphExecutor } from './executor.js';\nimport { createFetchGraphClient, type OntahiGraphClient } from './fetch-graph-client.js';\nimport {\n createReflectedOperationInvoker,\n type ReflectedGraphOperationLike,\n} from './reflected-operation-invoker.js';\nimport { invalidateSemanticGraphReads } from './semantic-invalidation.js';\n\nconst noReflectedGraphOperations: readonly ReflectedGraphOperationLike[] = [];\n\nconst GraphRuntimeContext = createContext<unknown | null>(null);\nconst ExecutionIdentityContext = createContext<ExecutionIdentity>(anonymousExecutionIdentity);\nconst GraphExecutorContext = createContext<ReactGraphExecutor<any, any> | null>(null);\nconst GraphClientCacheContext = createContext<GraphClientCache | null>(null);\nconst RuntimeTransportContext = createContext<RuntimeTransport | null>(null);\nconst OperationBridgeAdaptersContext = createContext<Map<string, AnyOperationBridgeAdapter> | null>(\n null,\n);\nconst ReflectedEntityDataReaderContext = createContext<ReflectedEntityDataReader | null>(null);\nconst ReflectedRelatedEntityDataReaderContext =\n createContext<ReflectedRelatedEntityDataReader | null>(null);\nconst ReflectedOperationInvokerContext = createContext<ReflectedOperationInvoker | null>(null);\n\nexport type OntahiClientContextValue = {\n readonly application?: ClientApplication;\n readonly clientCache: GraphClientCache;\n readonly identity: ExecutionIdentity;\n readonly runtimeTransport?: RuntimeTransport;\n};\n\nconst OntahiClientContext = createContext<OntahiClientContextValue | undefined>(undefined);\n\nexport type OntahiGraphProviderProps<\n TGraphRuntime = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n> = {\n children: ReactNode;\n runtime: TGraphRuntime;\n graphExecutor?: ReactGraphExecutor<TReadOptions, TCommandOptions>;\n runtimeTransport?: RuntimeTransport;\n client?: OntahiGraphClient<TReadOptions, TCommandOptions> | false;\n operationBridgeAdapters?: AnyOperationBridgeAdapter[];\n reflectedEntityDataReader?: ReflectedEntityDataReader;\n reflectedRelatedEntityDataReader?: ReflectedRelatedEntityDataReader;\n reflectedOperationInvoker?: ReflectedOperationInvoker;\n reflectedGraphOperations?: readonly ReflectedGraphOperationLike[];\n clientCache?: GraphClientCache;\n identity?: ExecutionIdentity;\n};\n\nexport function OntahiGraphProvider<\n TGraphRuntime = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>({\n children,\n runtime,\n graphExecutor,\n runtimeTransport,\n client,\n operationBridgeAdapters,\n reflectedEntityDataReader,\n reflectedRelatedEntityDataReader,\n reflectedOperationInvoker,\n reflectedGraphOperations = noReflectedGraphOperations,\n clientCache,\n identity = anonymousExecutionIdentity,\n}: OntahiGraphProviderProps<TGraphRuntime, TReadOptions, TCommandOptions>) {\n const [defaultGraphClient] = useState(() => createFetchGraphClient());\n const [defaultClientCache] = useState(() => createGraphClientCache());\n const graphClient = client === false ? undefined : (client ?? defaultGraphClient);\n const resolvedGraphExecutor = graphExecutor ?? graphClient?.graphExecutor;\n const resolvedRuntimeTransport = runtimeTransport ?? graphClient?.runtimeTransport;\n const resolvedOperationBridgeAdapters =\n operationBridgeAdapters ?? graphClient?.operationBridgeAdapters ?? [];\n const resolvedReflectedEntityDataReader =\n reflectedEntityDataReader ?? graphClient?.reflectedEntityDataReader;\n const resolvedReflectedRelatedEntityDataReader =\n reflectedRelatedEntityDataReader ?? graphClient?.reflectedRelatedEntityDataReader;\n const configuredReflectedOperationInvoker =\n reflectedOperationInvoker ?? graphClient?.reflectedOperationInvoker;\n const graphClientCache = clientCache ?? graphClient?.clientCache ?? defaultClientCache;\n const clientContext = useMemo<OntahiClientContextValue>(\n () => ({\n ...(graphClient?.application ? { application: graphClient.application } : {}),\n clientCache: graphClientCache,\n identity,\n ...(resolvedRuntimeTransport ? { runtimeTransport: resolvedRuntimeTransport } : {}),\n }),\n [graphClient?.application, graphClientCache, identity, resolvedRuntimeTransport],\n );\n const queryClient = useContext(QueryClientContext);\n const bridgeAdapterMap = useMemo(\n () => new Map(resolvedOperationBridgeAdapters.map(adapter => [adapter.name, adapter])),\n [resolvedOperationBridgeAdapters],\n );\n const resolvedReflectedOperationInvoker = useMemo(\n () =>\n reflectedGraphOperations.length > 0\n ? createReflectedOperationInvoker({\n fallback: configuredReflectedOperationInvoker,\n graphExecutor: resolvedGraphExecutor,\n graphOperations: reflectedGraphOperations,\n })\n : (configuredReflectedOperationInvoker ?? null),\n [configuredReflectedOperationInvoker, reflectedGraphOperations, resolvedGraphExecutor],\n );\n\n useEffect(() => {\n if (!resolvedRuntimeTransport || !queryClient) return;\n return subscribeRuntimeProtocolExecutions(resolvedRuntimeTransport, async ({ metadata }) => {\n await invalidateSemanticGraphReads(queryClient, metadata.committedMutations, {\n ...(metadata.mutationCommitId\n ? {\n causedBy: {\n kind: 'committed-mutations' as const,\n commitIds: [metadata.mutationCommitId],\n overflow: false,\n },\n }\n : {}),\n ...(resolvedRuntimeTransport.causality\n ? {\n associateRefreshes: resolvedRuntimeTransport.causality.associateGraphReadRefreshes,\n }\n : {}),\n });\n return true;\n });\n }, [queryClient, resolvedRuntimeTransport]);\n\n return (\n <OntahiClientContext.Provider value={clientContext}>\n <ExecutionIdentityContext.Provider value={identity}>\n <ReflectedOperationInvokerContext.Provider value={resolvedReflectedOperationInvoker}>\n <ReflectedRelatedEntityDataReaderContext.Provider\n value={resolvedReflectedRelatedEntityDataReader ?? null}\n >\n <ReflectedEntityDataReaderContext.Provider\n value={resolvedReflectedEntityDataReader ?? null}\n >\n <OperationBridgeAdaptersContext.Provider value={bridgeAdapterMap}>\n <RuntimeTransportContext.Provider value={resolvedRuntimeTransport ?? null}>\n <GraphClientCacheContext.Provider value={graphClientCache}>\n <GraphExecutorContext.Provider value={resolvedGraphExecutor ?? null}>\n <GraphRuntimeContext.Provider value={runtime}>\n {children}\n </GraphRuntimeContext.Provider>\n </GraphExecutorContext.Provider>\n </GraphClientCacheContext.Provider>\n </RuntimeTransportContext.Provider>\n </OperationBridgeAdaptersContext.Provider>\n </ReflectedEntityDataReaderContext.Provider>\n </ReflectedRelatedEntityDataReaderContext.Provider>\n </ReflectedOperationInvokerContext.Provider>\n </ExecutionIdentityContext.Provider>\n </OntahiClientContext.Provider>\n );\n}\n\nexport const useOntahiClientContext = () => useContext(OntahiClientContext);\n\nexport const useExecutionIdentity = () => useContext(ExecutionIdentityContext);\n\nexport function useGraphRuntime<TGraphRuntime = unknown>() {\n const runtime = useContext(GraphRuntimeContext);\n\n if (runtime === null) {\n throw new Error('useGraphRuntime must be used within an OntahiGraphProvider');\n }\n\n return runtime as TGraphRuntime;\n}\n\nexport function useGraphExecutor<TReadOptions = unknown, TCommandOptions = TReadOptions>() {\n const graphExecutor = useContext(GraphExecutorContext);\n\n if (graphExecutor === null) {\n throw new Error(\n 'useGraphExecutor must be used within an OntahiGraphProvider with graphExecutor',\n );\n }\n\n return graphExecutor as ReactGraphExecutor<TReadOptions, TCommandOptions>;\n}\n\nexport function useGraphExecutorCapability<\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>() {\n return (useContext(GraphExecutorContext) ?? undefined) as\n | ReactGraphExecutor<TReadOptions, TCommandOptions>\n | undefined;\n}\n\nexport const useRuntimeTransportCapability = () => useContext(RuntimeTransportContext) ?? undefined;\n\nexport function useRuntimeTransport() {\n const transport = useRuntimeTransportCapability();\n if (!transport) {\n throw new Error('useRuntimeTransport requires an OntahiGraphProvider with runtimeTransport');\n }\n return transport;\n}\n\nexport function useGraphClientCache() {\n const clientCache = useContext(GraphClientCacheContext);\n\n if (clientCache === null) {\n throw new Error('useGraphClientCache must be used within an OntahiGraphProvider');\n }\n\n return clientCache;\n}\n\nexport function useGraphClientCacheSnapshot() {\n const clientCache = useGraphClientCache();\n\n useGraphClientCacheVersion(clientCache);\n\n return clientCache.inspect();\n}\n\nexport const useGraphClientCacheVersion = (clientCache: GraphClientCache) =>\n useSyncExternalStore(\n clientCache.subscribe,\n () => clientCache.inspect().version,\n () => clientCache.inspect().version,\n );\n\nexport function useOperationBridgeAdapter(adapterName: string) {\n const adapters = useContext(OperationBridgeAdaptersContext);\n\n if (adapters === null) {\n throw new Error('useOperationBridgeAdapter must be used within an OntahiGraphProvider');\n }\n\n const adapter = adapters.get(adapterName);\n\n if (!adapter) {\n throw new Error(`No operation bridge adapter registered for \"${adapterName}\"`);\n }\n\n return adapter;\n}\n\nexport function useDefaultOperationBridgeAdapter() {\n const adapters = useContext(OperationBridgeAdaptersContext);\n\n if (adapters === null) {\n throw new Error('useDefaultOperationBridgeAdapter must be used within an OntahiGraphProvider');\n }\n\n const [adapter] = adapters.values();\n\n if (!adapter) {\n throw new Error('No operation bridge adapter registered.');\n }\n\n return adapter;\n}\n\nexport function useHasOperationBridgeRuntime() {\n const adapters = useContext(OperationBridgeAdaptersContext);\n return adapters !== null && adapters.size > 0;\n}\n\nexport function useReflectedEntityDataReader() {\n const reader = useContext(ReflectedEntityDataReaderContext);\n\n if (reader === null) {\n throw new Error(\n 'useReflectedEntityDataReader must be used within an OntahiGraphProvider with reflectedEntityDataReader',\n );\n }\n\n return reader;\n}\n\nexport function useHasReflectedEntityDataReader() {\n return useContext(ReflectedEntityDataReaderContext) !== null;\n}\n\nexport function useReflectedRelatedEntityDataReader() {\n const reader = useContext(ReflectedRelatedEntityDataReaderContext);\n\n if (reader === null) {\n throw new Error(\n 'useReflectedRelatedEntityDataReader must be used within an OntahiGraphProvider with reflectedRelatedEntityDataReader',\n );\n }\n\n return reader;\n}\n\nexport const useHasReflectedRelatedEntityDataReader = () =>\n useContext(ReflectedRelatedEntityDataReaderContext) !== null;\n\nexport function useReflectedOperationInvoker() {\n const invoker = useContext(ReflectedOperationInvokerContext);\n\n if (invoker === null) {\n throw new Error(\n 'useReflectedOperationInvoker must be used within an OntahiGraphProvider with reflectedOperationInvoker',\n );\n }\n\n return invoker;\n}\n\nexport function useHasReflectedOperationInvoker() {\n return useContext(ReflectedOperationInvokerContext) !== null;\n}\n\nexport function useReflectedOperationSupport() {\n const invoker = useContext(ReflectedOperationInvokerContext);\n\n return useCallback(\n (operation: ReflectedOperationDescriptor) =>\n Boolean(invoker && (invoker.canInvokeOperation?.(operation) ?? true)),\n [invoker],\n );\n}\n\nexport function useReflectedOperationExecutionAffordance(\n operation: ReflectedOperationDescriptor,\n): OperationExecutionAffordance | undefined {\n const invoker = useContext(ReflectedOperationInvokerContext);\n\n return invoker?.getOperationExecutionAffordance?.(operation);\n}\n\nexport type { GraphClientCache };\n"]}
@@ -1,13 +1,29 @@
1
- import type { GraphCommandSpec, GraphOperationDeclaration, GraphReadExpression, GraphReadIntent, GraphSchemaLike, InferGraphSchemaClientInput, QueryOrView, QuerySpec, ManyToManyRelationshipCommand, RelationshipCommand, RelationshipCommandResult, EntityMutationCommand, EntityMutationDelta } from '@ontahi/core/data-graph';
1
+ import type { GraphCommandSpec, GraphOperationDeclaration, GraphReadExpression, GraphReadRequest, GraphReadIntent, GraphSchemaLike, InferGraphSchemaClientInput, QueryOrView, QuerySpec, ManyToManyRelationshipCommand, OrderedRelationshipCommand, RelationshipCommand, RelationshipCommandResult, EntityMutationCommand, EntityMutationDelta } from '@ontahi/core/data-graph';
2
+ import type { RuntimeProtocolExecutionMetadata, RuntimeProtocolGraphRefreshCause } from '@ontahi/core/runtime/protocol';
2
3
  import type { QueryKey, UseMutationOptions, UseQueryOptions } from '@tanstack/react-query';
4
+ export type GraphMutationExecution<TResult> = {
5
+ readonly value: TResult;
6
+ readonly metadata?: RuntimeProtocolExecutionMetadata;
7
+ };
3
8
  export interface ReactGraphExecutor<TReadOptions = unknown, TCommandOptions = TReadOptions> {
9
+ associateGraphReadRefreshes?(requests: readonly GraphReadRequest[], causedBy: RuntimeProtocolGraphRefreshCause): void;
4
10
  get<TParams, TResult>(read: QueryOrView<TParams, TResult>, params: TParams, options?: TReadOptions): Promise<TResult | null>;
5
11
  run<TParams, TResult>(read: QueryOrView<TParams, TResult>, params: TParams, options?: TReadOptions): Promise<TResult[]>;
12
+ /** Observe complete-current result snapshots for the same authored Query used by `run`. */
13
+ observe?<TParams, TResult>(read: QueryOrView<TParams, TResult>, params: TParams, options?: TReadOptions, lifecycle?: {
14
+ readonly signal?: AbortSignal;
15
+ }): AsyncIterable<TResult[]>;
6
16
  count<TParams, TResult>(read: QueryOrView<TParams, TResult>, params: TParams, options?: TReadOptions): Promise<number>;
7
17
  runCommand<TResult = void>(command: GraphCommandSpec<any, any, TResult>, options?: TCommandOptions): Promise<TResult>;
18
+ runCommandExecution?<TResult = void>(command: GraphCommandSpec<any, any, TResult>, options?: TCommandOptions): Promise<GraphMutationExecution<TResult>>;
8
19
  runRelationshipCommand?(command: RelationshipCommand, options?: TCommandOptions): Promise<RelationshipCommandResult>;
20
+ runRelationshipCommandExecution?(command: RelationshipCommand, options?: TCommandOptions): Promise<GraphMutationExecution<RelationshipCommandResult>>;
9
21
  runManyToManyRelationshipCommand?(command: ManyToManyRelationshipCommand, options?: TCommandOptions): Promise<RelationshipCommandResult>;
22
+ runManyToManyRelationshipCommandExecution?(command: ManyToManyRelationshipCommand, options?: TCommandOptions): Promise<GraphMutationExecution<RelationshipCommandResult>>;
23
+ runOrderedRelationshipCommand?(command: OrderedRelationshipCommand, options?: TCommandOptions): Promise<RelationshipCommandResult>;
24
+ runOrderedRelationshipCommandExecution?(command: OrderedRelationshipCommand, options?: TCommandOptions): Promise<GraphMutationExecution<RelationshipCommandResult>>;
10
25
  runEntityMutationCommand?(command: EntityMutationCommand, options?: TCommandOptions): Promise<EntityMutationDelta>;
26
+ runEntityMutationCommandExecution?(command: EntityMutationCommand, options?: TCommandOptions): Promise<GraphMutationExecution<EntityMutationDelta>>;
11
27
  }
12
28
  export type BuildableRead<TResult> = {
13
29
  build: () => QuerySpec<any, TResult>;
@@ -21,6 +37,8 @@ type GraphReadIntentData<TRead, TIntent extends GraphReadIntent> = TIntent exten
21
37
  export type GraphQueryData<TRead, TMode extends GraphQueryMode = 'run'> = TRead extends GraphReadExpression<any, infer TIntent, any> ? GraphReadIntentData<TRead, TIntent> : TMode extends 'get' ? ReadResult<TRead> | null : TMode extends 'run' ? ReadResult<TRead>[] : TMode extends 'count' ? number : boolean;
22
38
  export type GraphQueryOptions<TRead, TMode extends GraphQueryMode = 'run', TReadOptions = unknown> = Omit<UseQueryOptions<GraphQueryData<TRead, TMode>, Error, GraphQueryData<TRead, TMode>, QueryKey>, 'queryKey' | 'queryFn'> & {
23
39
  mode?: TRead extends GraphReadExpression<any, any, any> ? never : TMode;
40
+ /** Keep a many-result Query current until the hook unmounts or its identity changes. */
41
+ observation?: TRead extends GraphReadExpression<any, any, any> ? never : TMode extends 'run' ? 'live' : never;
24
42
  params?: ReadParams<TRead>;
25
43
  queryKey?: QueryKey;
26
44
  runtimeOptions?: TReadOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/graph/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/graph/executor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/graph/executor.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n GraphCommandSpec,\n GraphOperationDeclaration,\n GraphReadExpression,\n GraphReadIntent,\n GraphSchemaLike,\n InferGraphSchemaClientInput,\n QueryOrView,\n QuerySpec,\n ManyToManyRelationshipCommand,\n RelationshipCommand,\n RelationshipCommandResult,\n EntityMutationCommand,\n EntityMutationDelta,\n} from '@ontahi/core/data-graph';\nimport type { QueryKey, UseMutationOptions, UseQueryOptions } from '@tanstack/react-query';\n\nexport interface ReactGraphExecutor<TReadOptions = unknown, TCommandOptions = TReadOptions> {\n get<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n ): Promise<TResult | null>;\n run<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n ): Promise<TResult[]>;\n count<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n ): Promise<number>;\n runCommand<TResult = void>(\n command: GraphCommandSpec<any, any, TResult>,\n options?: TCommandOptions,\n ): Promise<TResult>;\n runRelationshipCommand?(\n command: RelationshipCommand,\n options?: TCommandOptions,\n ): Promise<RelationshipCommandResult>;\n runManyToManyRelationshipCommand?(\n command: ManyToManyRelationshipCommand,\n options?: TCommandOptions,\n ): Promise<RelationshipCommandResult>;\n runEntityMutationCommand?(\n command: EntityMutationCommand,\n options?: TCommandOptions,\n ): Promise<EntityMutationDelta>;\n}\n\nexport type BuildableRead<TResult> = {\n build: () => QuerySpec<any, TResult>;\n};\n\ntype PlainGraphReadSource<TResult> = QueryOrView<any, TResult> | BuildableRead<TResult>;\n\nexport type GraphReadSource<TResult = unknown> =\n | PlainGraphReadSource<TResult>\n | GraphReadExpression<PlainGraphReadSource<TResult>, GraphReadIntent, TResult>;\n\nexport type ReadParams<TRead> =\n TRead extends GraphReadExpression<infer TSource, any, any>\n ? ReadParams<TSource>\n : TRead extends QueryOrView<infer TParams, any>\n ? TParams\n : undefined;\n\nexport type ReadResult<TRead> =\n TRead extends GraphReadExpression<any, any, infer TResult>\n ? TResult\n : TRead extends QueryOrView<any, infer TResult>\n ? TResult\n : TRead extends BuildableRead<infer TResult>\n ? TResult\n : never;\n\nexport type GraphQueryMode = 'get' | 'run' | 'count' | 'exists';\n\ntype GraphReadIntentData<TRead, TIntent extends GraphReadIntent> = TIntent extends 'count'\n ? number\n : TIntent extends 'exists'\n ? boolean\n : TIntent extends 'one'\n ? ReadResult<TRead>\n : ReadResult<TRead> | null;\n\nexport type GraphQueryData<TRead, TMode extends GraphQueryMode = 'run'> =\n TRead extends GraphReadExpression<any, infer TIntent, any>\n ? GraphReadIntentData<TRead, TIntent>\n : TMode extends 'get'\n ? ReadResult<TRead> | null\n : TMode extends 'run'\n ? ReadResult<TRead>[]\n : TMode extends 'count'\n ? number\n : boolean;\n\nexport type GraphQueryOptions<\n TRead,\n TMode extends GraphQueryMode = 'run',\n TReadOptions = unknown,\n> = Omit<\n UseQueryOptions<GraphQueryData<TRead, TMode>, Error, GraphQueryData<TRead, TMode>, QueryKey>,\n 'queryKey' | 'queryFn'\n> & {\n mode?: TRead extends GraphReadExpression<any, any, any> ? never : TMode;\n params?: ReadParams<TRead>;\n queryKey?: QueryKey;\n runtimeOptions?: TReadOptions;\n};\n\nexport type CommandLike<TResult> =\n | GraphCommandSpec<any, any, TResult>\n | {\n build: () => GraphCommandSpec<any, any, TResult>;\n };\n\nexport type GraphCommandBuilder<TVariables, TResult> = (\n variables: TVariables,\n) => CommandLike<TResult>;\n\nexport type GraphOperationLike<TVariables, TResult> = GraphOperationDeclaration<\n TVariables,\n CommandLike<TResult>\n> & {\n id: string;\n};\n\nexport type GraphOperationClientInput<TOperation> = TOperation extends {\n input: infer TSchema extends GraphSchemaLike;\n}\n ? InferGraphSchemaClientInput<TSchema>\n : TOperation extends GraphOperationDeclaration<infer TInput, any>\n ? TInput\n : never;\n\nexport type GraphOperationResult<TOperation> = TOperation extends {\n run: (...args: any[]) => CommandLike<infer TResult>;\n}\n ? TResult\n : never;\n\nexport type GraphCommandHookOptions<\n TResult,\n TVariables,\n TContext,\n TCommandOptions = unknown,\n> = Omit<UseMutationOptions<TResult, Error, TVariables, TContext>, 'mutationFn'> & {\n mutationKey?: QueryKey;\n runtimeOptions?: TCommandOptions;\n invalidateQueryKeys?: QueryKey[];\n};\n"]}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/graph/executor.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n GraphCommandSpec,\n GraphOperationDeclaration,\n GraphReadExpression,\n GraphReadRequest,\n GraphReadIntent,\n GraphSchemaLike,\n InferGraphSchemaClientInput,\n QueryOrView,\n QuerySpec,\n ManyToManyRelationshipCommand,\n OrderedRelationshipCommand,\n RelationshipCommand,\n RelationshipCommandResult,\n EntityMutationCommand,\n EntityMutationDelta,\n} from '@ontahi/core/data-graph';\nimport type {\n RuntimeProtocolExecutionMetadata,\n RuntimeProtocolGraphRefreshCause,\n} from '@ontahi/core/runtime/protocol';\nimport type { QueryKey, UseMutationOptions, UseQueryOptions } from '@tanstack/react-query';\n\nexport type GraphMutationExecution<TResult> = {\n readonly value: TResult;\n readonly metadata?: RuntimeProtocolExecutionMetadata;\n};\n\nexport interface ReactGraphExecutor<TReadOptions = unknown, TCommandOptions = TReadOptions> {\n associateGraphReadRefreshes?(\n requests: readonly GraphReadRequest[],\n causedBy: RuntimeProtocolGraphRefreshCause,\n ): void;\n get<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n ): Promise<TResult | null>;\n run<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n ): Promise<TResult[]>;\n /** Observe complete-current result snapshots for the same authored Query used by `run`. */\n observe?<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n lifecycle?: { readonly signal?: AbortSignal },\n ): AsyncIterable<TResult[]>;\n count<TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TReadOptions,\n ): Promise<number>;\n runCommand<TResult = void>(\n command: GraphCommandSpec<any, any, TResult>,\n options?: TCommandOptions,\n ): Promise<TResult>;\n runCommandExecution?<TResult = void>(\n command: GraphCommandSpec<any, any, TResult>,\n options?: TCommandOptions,\n ): Promise<GraphMutationExecution<TResult>>;\n runRelationshipCommand?(\n command: RelationshipCommand,\n options?: TCommandOptions,\n ): Promise<RelationshipCommandResult>;\n runRelationshipCommandExecution?(\n command: RelationshipCommand,\n options?: TCommandOptions,\n ): Promise<GraphMutationExecution<RelationshipCommandResult>>;\n runManyToManyRelationshipCommand?(\n command: ManyToManyRelationshipCommand,\n options?: TCommandOptions,\n ): Promise<RelationshipCommandResult>;\n runManyToManyRelationshipCommandExecution?(\n command: ManyToManyRelationshipCommand,\n options?: TCommandOptions,\n ): Promise<GraphMutationExecution<RelationshipCommandResult>>;\n runOrderedRelationshipCommand?(\n command: OrderedRelationshipCommand,\n options?: TCommandOptions,\n ): Promise<RelationshipCommandResult>;\n runOrderedRelationshipCommandExecution?(\n command: OrderedRelationshipCommand,\n options?: TCommandOptions,\n ): Promise<GraphMutationExecution<RelationshipCommandResult>>;\n runEntityMutationCommand?(\n command: EntityMutationCommand,\n options?: TCommandOptions,\n ): Promise<EntityMutationDelta>;\n runEntityMutationCommandExecution?(\n command: EntityMutationCommand,\n options?: TCommandOptions,\n ): Promise<GraphMutationExecution<EntityMutationDelta>>;\n}\n\nexport type BuildableRead<TResult> = {\n build: () => QuerySpec<any, TResult>;\n};\n\ntype PlainGraphReadSource<TResult> = QueryOrView<any, TResult> | BuildableRead<TResult>;\n\nexport type GraphReadSource<TResult = unknown> =\n | PlainGraphReadSource<TResult>\n | GraphReadExpression<PlainGraphReadSource<TResult>, GraphReadIntent, TResult>;\n\nexport type ReadParams<TRead> =\n TRead extends GraphReadExpression<infer TSource, any, any>\n ? ReadParams<TSource>\n : TRead extends QueryOrView<infer TParams, any>\n ? TParams\n : undefined;\n\nexport type ReadResult<TRead> =\n TRead extends GraphReadExpression<any, any, infer TResult>\n ? TResult\n : TRead extends QueryOrView<any, infer TResult>\n ? TResult\n : TRead extends BuildableRead<infer TResult>\n ? TResult\n : never;\n\nexport type GraphQueryMode = 'get' | 'run' | 'count' | 'exists';\n\ntype GraphReadIntentData<TRead, TIntent extends GraphReadIntent> = TIntent extends 'count'\n ? number\n : TIntent extends 'exists'\n ? boolean\n : TIntent extends 'one'\n ? ReadResult<TRead>\n : ReadResult<TRead> | null;\n\nexport type GraphQueryData<TRead, TMode extends GraphQueryMode = 'run'> =\n TRead extends GraphReadExpression<any, infer TIntent, any>\n ? GraphReadIntentData<TRead, TIntent>\n : TMode extends 'get'\n ? ReadResult<TRead> | null\n : TMode extends 'run'\n ? ReadResult<TRead>[]\n : TMode extends 'count'\n ? number\n : boolean;\n\nexport type GraphQueryOptions<\n TRead,\n TMode extends GraphQueryMode = 'run',\n TReadOptions = unknown,\n> = Omit<\n UseQueryOptions<GraphQueryData<TRead, TMode>, Error, GraphQueryData<TRead, TMode>, QueryKey>,\n 'queryKey' | 'queryFn'\n> & {\n mode?: TRead extends GraphReadExpression<any, any, any> ? never : TMode;\n /** Keep a many-result Query current until the hook unmounts or its identity changes. */\n observation?: TRead extends GraphReadExpression<any, any, any>\n ? never\n : TMode extends 'run'\n ? 'live'\n : never;\n params?: ReadParams<TRead>;\n queryKey?: QueryKey;\n runtimeOptions?: TReadOptions;\n};\n\nexport type CommandLike<TResult> =\n | GraphCommandSpec<any, any, TResult>\n | {\n build: () => GraphCommandSpec<any, any, TResult>;\n };\n\nexport type GraphCommandBuilder<TVariables, TResult> = (\n variables: TVariables,\n) => CommandLike<TResult>;\n\nexport type GraphOperationLike<TVariables, TResult> = GraphOperationDeclaration<\n TVariables,\n CommandLike<TResult>\n> & {\n id: string;\n};\n\nexport type GraphOperationClientInput<TOperation> = TOperation extends {\n input: infer TSchema extends GraphSchemaLike;\n}\n ? InferGraphSchemaClientInput<TSchema>\n : TOperation extends GraphOperationDeclaration<infer TInput, any>\n ? TInput\n : never;\n\nexport type GraphOperationResult<TOperation> = TOperation extends {\n run: (...args: any[]) => CommandLike<infer TResult>;\n}\n ? TResult\n : never;\n\nexport type GraphCommandHookOptions<\n TResult,\n TVariables,\n TContext,\n TCommandOptions = unknown,\n> = Omit<UseMutationOptions<TResult, Error, TVariables, TContext>, 'mutationFn'> & {\n mutationKey?: QueryKey;\n runtimeOptions?: TCommandOptions;\n invalidateQueryKeys?: QueryKey[];\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { ReflectedEntityDataReader, ReflectedRelatedEntityDataReader, ReflectedOperationInvoker, RemoteDataGraphError, RuntimeBoundDataGraphApi } from '@ontahi/core/data-graph';
1
+ import type { ClientApplication, GraphClientCache, ReflectedEntityDataReader, ReflectedRelatedEntityDataReader, ReflectedOperationInvoker, RemoteDataGraphError, RuntimeBoundDataGraphApi } from '@ontahi/core/data-graph';
2
2
  import type { RuntimeTransport } from '@ontahi/core/runtime/protocol';
3
3
  import { type AnyOperationBridgeAdapter, type FetchOperationBridgeOptions } from '../actions/index.js';
4
4
  import type { ReactGraphExecutor } from './executor.js';
@@ -12,7 +12,9 @@ export type FetchReflectedRelatedEntityDataReaderOptions = FetchReflectedEntityD
12
12
  export type OntahiGraphClient<TReadOptions = unknown, TCommandOptions = TReadOptions> = {
13
13
  graph?: RuntimeBoundDataGraphApi<RemoteDataGraphError, TReadOptions, TCommandOptions, RemoteDataGraphError>;
14
14
  graphExecutor?: ReactGraphExecutor<TReadOptions, TCommandOptions>;
15
- runtimeTransport?: RuntimeTransport;
15
+ clientCache?: GraphClientCache;
16
+ application?: ClientApplication;
17
+ runtimeTransport?: RuntimeTransport<TReadOptions | TCommandOptions>;
16
18
  operationBridgeAdapters?: AnyOperationBridgeAdapter[];
17
19
  reflectedEntityDataReader?: ReflectedEntityDataReader;
18
20
  reflectedRelatedEntityDataReader?: ReflectedRelatedEntityDataReader;
@@ -21,11 +23,25 @@ export type OntahiGraphClient<TReadOptions = unknown, TCommandOptions = TReadOpt
21
23
  export type FetchGraphClient<TOptions = undefined> = OntahiGraphClient<TOptions, TOptions> & {
22
24
  graph: RuntimeBoundDataGraphApi<RemoteDataGraphError, TOptions, TOptions, RemoteDataGraphError>;
23
25
  graphExecutor: ReactGraphExecutor<TOptions, TOptions>;
26
+ clientCache: GraphClientCache;
27
+ };
28
+ export type FetchGraphClientCompatibilityOptions = {
29
+ operation?: {
30
+ endpoint?: string;
31
+ mountPath?: string;
32
+ };
33
+ graphRead?: {
34
+ endpoint?: string;
35
+ };
36
+ graphCommand?: {
37
+ endpoint?: string;
38
+ };
24
39
  };
25
40
  export type FetchGraphClientOptions<TOptions = undefined> = {
41
+ compatibility?: FetchGraphClientCompatibilityOptions;
26
42
  graphRead?: false | FetchGraphReadExecutorOptions<TOptions>;
27
- operations?: false | FetchOperationBridgeOptions;
28
- runtimeTransport?: false | FetchRuntimeTransportOptions;
43
+ operations?: false | FetchOperationBridgeOptions<TOptions>;
44
+ runtimeTransport?: false | FetchRuntimeTransportOptions<TOptions>;
29
45
  reflectedEntityData?: false | FetchReflectedEntityDataReaderOptions;
30
46
  reflectedRelatedEntityData?: false | FetchReflectedRelatedEntityDataReaderOptions;
31
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-graph-client.d.ts","sourceRoot":"","sources":["../../src/graph/fetch-graph-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EAEzB,gCAAgC,EAEhC,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EACjC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAEpF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,qCAAqC,GAAG;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,qCAAqC,CAAC;AAEjG,MAAM,MAAM,iBAAiB,CAAC,YAAY,GAAG,OAAO,EAAE,eAAe,GAAG,YAAY,IAAI;IACtF,KAAK,CAAC,EAAE,wBAAwB,CAC9B,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,oBAAoB,CACrB,CAAC;IACF,aAAa,CAAC,EAAE,kBAAkB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAClE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,uBAAuB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACtD,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,gCAAgC,CAAC,EAAE,gCAAgC,CAAC;IACpE,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,GAAG,SAAS,IAAI,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IAC3F,KAAK,EAAE,wBAAwB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IAChG,aAAa,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,QAAQ,GAAG,SAAS,IAAI;IAC1D,SAAS,CAAC,EAAE,KAAK,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,KAAK,GAAG,2BAA2B,CAAC;IACjD,gBAAgB,CAAC,EAAE,KAAK,GAAG,4BAA4B,CAAC;IACxD,mBAAmB,CAAC,EAAE,KAAK,GAAG,qCAAqC,CAAC;IACpE,0BAA0B,CAAC,EAAE,KAAK,GAAG,4CAA4C,CAAC;CACnF,CAAC;AAqCF,eAAO,MAAM,oCAAoC,GAAI,qCAGlD,qCAA0C,KAAG,yBAE9C,CAAC;AAEH,eAAO,MAAM,2CAA2C,GAAI,qCAGzD,4CAAiD,KAAG,gCAErD,CAAC;AAEH,wBAAgB,sBAAsB,CAAC,QAAQ,GAAG,SAAS,KAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC3F,wBAAgB,sBAAsB,CAAC,QAAQ,GAAG,SAAS,EACzD,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,GAAG;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAChE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,wBAAgB,sBAAsB,CAAC,QAAQ,GAAG,SAAS,EACzD,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,GAAG;IAC3C,SAAS,CAAC,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC;CACrD,GACA,gBAAgB,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"fetch-graph-client.d.ts","sourceRoot":"","sources":["../../src/graph/fetch-graph-client.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  'use client';
2
- import { createRuntimeBoundDataGraphApi } from '@ontahi/core/data-graph';
2
+ import { createGraphClientCache, createRuntimeBoundDataGraphApi } from '@ontahi/core/data-graph';
3
3
  import { createFetchOperationBridgeAdapter, createFetchReflectedOperationInvoker, } from '../actions/index.js';
4
4
  import { createFetchGraphReadCapability } from './fetch-graph-runtime.js';
5
5
  import { createFetchRuntimeTransport, } from './fetch-runtime-transport.js';
6
- const DEFAULT_OPERATIONS_ENDPOINT = '/operations';
6
+ const DEFAULT_LEGACY_OPERATION_ENDPOINT = '/operations';
7
+ const DEFAULT_LEGACY_GRAPH_READ_ENDPOINT = '/graph/reads';
8
+ const DEFAULT_LEGACY_GRAPH_COMMAND_ENDPOINT = '/graph/commands';
7
9
  const DEFAULT_REFLECTED_ENTITY_DATA_ENDPOINT = '/explorer/entities';
8
10
  const DEFAULT_REFLECTED_RELATED_ENTITY_DATA_ENDPOINT = '/explorer/related-entities';
9
11
  const postReflectedEntityDataQuery = async (endpoint, query, fetchRequest) => {
@@ -18,35 +20,103 @@ const postReflectedEntityDataQuery = async (endpoint, query, fetchRequest) => {
18
20
  }
19
21
  return response.json();
20
22
  };
21
- const conventionalOperationOptions = (options) => options.mountPath === undefined
22
- ? {
23
- endpoint: DEFAULT_OPERATIONS_ENDPOINT,
24
- ...options,
25
- }
26
- : options;
27
23
  export const createFetchReflectedEntityDataReader = ({ endpoint = DEFAULT_REFLECTED_ENTITY_DATA_ENDPOINT, fetch: fetchRequest = globalThis.fetch, } = {}) => ({
28
24
  readEntityData: query => postReflectedEntityDataQuery(endpoint, query, fetchRequest),
29
25
  });
30
26
  export const createFetchReflectedRelatedEntityDataReader = ({ endpoint = DEFAULT_REFLECTED_RELATED_ENTITY_DATA_ENDPOINT, fetch: fetchRequest = globalThis.fetch, } = {}) => ({
31
27
  readRelatedEntityData: query => postReflectedEntityDataQuery(endpoint, query, fetchRequest),
32
28
  });
33
- export function createFetchGraphClient({ graphRead = {}, operations = {}, runtimeTransport = {}, reflectedEntityData = {}, reflectedRelatedEntityData = {}, } = {}) {
34
- const operationOptions = operations === false ? undefined : conventionalOperationOptions(operations);
35
- const graphReadCapability = graphRead === false ? undefined : createFetchGraphReadCapability(graphRead);
29
+ export function createFetchGraphClient({ compatibility = {}, graphRead = {}, operations = {}, runtimeTransport = {}, reflectedEntityData = {}, reflectedRelatedEntityData = {}, } = {}) {
30
+ const graphReadOptions = graphRead === false
31
+ ? undefined
32
+ : {
33
+ ...graphRead,
34
+ ...(compatibility.graphRead === undefined
35
+ ? {}
36
+ : {
37
+ endpoint: compatibility.graphRead.endpoint ?? DEFAULT_LEGACY_GRAPH_READ_ENDPOINT,
38
+ }),
39
+ ...(compatibility.graphCommand === undefined
40
+ ? {}
41
+ : {
42
+ commandEndpoint: compatibility.graphCommand.endpoint ?? DEFAULT_LEGACY_GRAPH_COMMAND_ENDPOINT,
43
+ }),
44
+ };
45
+ const clientCache = graphReadOptions ? createGraphClientCache() : undefined;
46
+ const operationOptions = (() => {
47
+ if (operations === false)
48
+ return undefined;
49
+ if (compatibility.operation === undefined)
50
+ return operations;
51
+ const { endpoint: _endpoint, mountPath: _mountPath, ...sharedOptions } = operations;
52
+ if (compatibility.operation.endpoint !== undefined) {
53
+ return { ...sharedOptions, endpoint: compatibility.operation.endpoint };
54
+ }
55
+ if (compatibility.operation.mountPath !== undefined) {
56
+ return { ...sharedOptions, mountPath: compatibility.operation.mountPath };
57
+ }
58
+ return { ...sharedOptions, endpoint: DEFAULT_LEGACY_OPERATION_ENDPOINT };
59
+ })();
60
+ const commonTransportRequired = (graphReadOptions !== undefined &&
61
+ (graphReadOptions.endpoint === undefined ||
62
+ graphReadOptions.commandEndpoint === undefined)) ||
63
+ (operationOptions !== undefined &&
64
+ operationOptions.endpoint === undefined &&
65
+ operationOptions.mountPath === undefined);
66
+ if (runtimeTransport === false && commonTransportRequired) {
67
+ throw new TypeError('runtimeTransport cannot be disabled while a common Runtime Protocol family is enabled.');
68
+ }
69
+ const requestId = runtimeTransport === false
70
+ ? undefined
71
+ : (runtimeTransport.requestId ?? graphReadOptions?.requestId ?? operationOptions?.requestId);
72
+ const runtimeTransportOptions = runtimeTransport === false
73
+ ? undefined
74
+ : {
75
+ ...(graphReadOptions?.fetch ? { fetch: graphReadOptions.fetch } : {}),
76
+ ...(graphReadOptions?.requestInit ? { requestInit: graphReadOptions.requestInit } : {}),
77
+ ...runtimeTransport,
78
+ requestId,
79
+ };
80
+ const resolvedRuntimeTransport = runtimeTransportOptions === undefined
81
+ ? undefined
82
+ : createFetchRuntimeTransport(runtimeTransportOptions);
83
+ const graphReadCapability = graphReadOptions === undefined
84
+ ? undefined
85
+ : createFetchGraphReadCapability({
86
+ ...graphReadOptions,
87
+ ...(runtimeTransportOptions?.fetch ? { fetch: runtimeTransportOptions.fetch } : {}),
88
+ ...(runtimeTransportOptions?.requestInit
89
+ ? { requestInit: runtimeTransportOptions.requestInit }
90
+ : {}),
91
+ ...(resolvedRuntimeTransport
92
+ ? { runtimeTransport: resolvedRuntimeTransport, requestId }
93
+ : {}),
94
+ });
95
+ const resolvedOperationOptions = operationOptions === undefined
96
+ ? undefined
97
+ : {
98
+ ...operationOptions,
99
+ ...(runtimeTransportOptions?.fetch ? { fetch: runtimeTransportOptions.fetch } : {}),
100
+ ...(runtimeTransportOptions?.requestInit
101
+ ? { requestInit: runtimeTransportOptions.requestInit }
102
+ : {}),
103
+ ...(resolvedRuntimeTransport
104
+ ? { runtimeTransport: resolvedRuntimeTransport, requestId }
105
+ : {}),
106
+ };
36
107
  return {
37
108
  ...(graphReadCapability
38
109
  ? {
39
110
  graph: createRuntimeBoundDataGraphApi(() => graphReadCapability.runtime),
40
111
  graphExecutor: graphReadCapability.graphExecutor,
112
+ clientCache: clientCache,
41
113
  }
42
114
  : {}),
43
- ...(runtimeTransport === false
44
- ? {}
45
- : { runtimeTransport: createFetchRuntimeTransport(runtimeTransport) }),
46
- ...(operationOptions
115
+ ...(resolvedRuntimeTransport ? { runtimeTransport: resolvedRuntimeTransport } : {}),
116
+ ...(resolvedOperationOptions
47
117
  ? {
48
- operationBridgeAdapters: [createFetchOperationBridgeAdapter(operationOptions)],
49
- reflectedOperationInvoker: createFetchReflectedOperationInvoker(operationOptions),
118
+ operationBridgeAdapters: [createFetchOperationBridgeAdapter(resolvedOperationOptions)],
119
+ reflectedOperationInvoker: createFetchReflectedOperationInvoker(resolvedOperationOptions),
50
120
  }
51
121
  : {}),
52
122
  ...(reflectedEntityData === false