@ontahi/react 1.0.0-alpha.12 → 1.0.0-alpha.14

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 (58) hide show
  1. package/README.md +90 -5
  2. package/dist/actions/fetch-operation-bridge-adapter.d.ts.map +1 -1
  3. package/dist/actions/fetch-operation-bridge-adapter.js +30 -13
  4. package/dist/actions/fetch-operation-bridge-adapter.js.map +1 -1
  5. package/dist/actions/operation-bridge.d.ts +2 -0
  6. package/dist/actions/operation-bridge.d.ts.map +1 -1
  7. package/dist/actions/operation-bridge.js.map +1 -1
  8. package/dist/graph/canonical-request-invalidation.d.ts +14 -0
  9. package/dist/graph/canonical-request-invalidation.d.ts.map +1 -0
  10. package/dist/graph/canonical-request-invalidation.js +42 -0
  11. package/dist/graph/canonical-request-invalidation.js.map +1 -0
  12. package/dist/graph/context.d.ts +9 -2
  13. package/dist/graph/context.d.ts.map +1 -1
  14. package/dist/graph/context.js +38 -3
  15. package/dist/graph/context.js.map +1 -1
  16. package/dist/graph/executor.d.ts +18 -1
  17. package/dist/graph/executor.d.ts.map +1 -1
  18. package/dist/graph/executor.js.map +1 -1
  19. package/dist/graph/fetch-graph-client.d.ts +2 -1
  20. package/dist/graph/fetch-graph-client.d.ts.map +1 -1
  21. package/dist/graph/fetch-graph-client.js.map +1 -1
  22. package/dist/graph/fetch-graph-runtime.d.ts.map +1 -1
  23. package/dist/graph/fetch-graph-runtime.js +53 -1
  24. package/dist/graph/fetch-graph-runtime.js.map +1 -1
  25. package/dist/graph/fetch-runtime-transport.d.ts.map +1 -1
  26. package/dist/graph/fetch-runtime-transport.js +1 -0
  27. package/dist/graph/fetch-runtime-transport.js.map +1 -1
  28. package/dist/graph/graph-hooks.d.ts +2 -1
  29. package/dist/graph/graph-hooks.d.ts.map +1 -1
  30. package/dist/graph/graph-hooks.js +161 -62
  31. package/dist/graph/graph-hooks.js.map +1 -1
  32. package/dist/graph/index.d.ts +3 -0
  33. package/dist/graph/index.d.ts.map +1 -1
  34. package/dist/graph/index.js +3 -0
  35. package/dist/graph/index.js.map +1 -1
  36. package/dist/graph/model-command-hooks.d.ts +2 -0
  37. package/dist/graph/model-command-hooks.d.ts.map +1 -0
  38. package/dist/graph/model-command-hooks.js +9 -0
  39. package/dist/graph/model-command-hooks.js.map +1 -0
  40. package/dist/graph/operation-hooks.d.ts.map +1 -1
  41. package/dist/graph/operation-hooks.js +91 -9
  42. package/dist/graph/operation-hooks.js.map +1 -1
  43. package/dist/graph/operation-types.d.ts +1 -0
  44. package/dist/graph/operation-types.d.ts.map +1 -1
  45. package/dist/graph/operation-types.js.map +1 -1
  46. package/dist/graph/runtime-graph-client.d.ts +3 -2
  47. package/dist/graph/runtime-graph-client.d.ts.map +1 -1
  48. package/dist/graph/runtime-graph-client.js +2 -1
  49. package/dist/graph/runtime-graph-client.js.map +1 -1
  50. package/dist/graph/semantic-invalidation.d.ts +27 -0
  51. package/dist/graph/semantic-invalidation.d.ts.map +1 -0
  52. package/dist/graph/semantic-invalidation.js +55 -0
  53. package/dist/graph/semantic-invalidation.js.map +1 -0
  54. package/dist/graph/websocket-runtime-transport.d.ts +5 -2
  55. package/dist/graph/websocket-runtime-transport.d.ts.map +1 -1
  56. package/dist/graph/websocket-runtime-transport.js +160 -46
  57. package/dist/graph/websocket-runtime-transport.js.map +1 -1
  58. package/package.json +4 -4
@@ -1,15 +1,69 @@
1
1
  'use client';
2
- import { getGraphReadOutputDescriptor, graphOutput, isGraphReadExpression, normalizeGraphSchemaClientInput, resolveQuerySpec, toGraphReadRequest, } from '@ontahi/core/data-graph';
2
+ import { getGraphReadOutputDescriptor, graphOutput, hasRelationImage, isGraphReadExpression, normalizeGraphSchemaClientInput, resolveQuerySpec, toGraphReadRequest, toGraphReadRequestV2, } from '@ontahi/core/data-graph';
3
3
  import { executionIdentityCacheKey } from '@ontahi/core/runtime/identity';
4
- import { useMutation, useQuery, useQueryClient, } from '@tanstack/react-query';
4
+ import { wasRuntimeProtocolExecutionObserved } from '@ontahi/core/runtime/protocol';
5
+ import { experimental_streamedQuery, useMutation, useQuery, useQueryClient, } from '@tanstack/react-query';
5
6
  import { useExecutionIdentity, useGraphClientCache, useGraphExecutor } from './context.js';
7
+ import { invalidateSemanticGraphReads, withCanonicalGraphReadMeta, withUnknownGraphReadMeta, } from './semantic-invalidation.js';
6
8
  const isQueryOrView = (read) => 'kind' in read;
7
9
  const isBuildableRead = (read) => typeof read.build === 'function';
8
10
  const isNamedView = (read) => 'kind' in read && read.kind === 'view';
9
11
  const resolveGraphRead = (read) => (isQueryOrView(read) ? read : isBuildableRead(read) ? read.build() : read);
10
12
  const resolveGraphCommand = (command) => ('build' in command ? command.build() : command);
13
+ const executeSemanticMutation = async (command, runtimeOptions, executor) => {
14
+ if (executor.runExecution)
15
+ return executor.runExecution(command, runtimeOptions);
16
+ if (executor.run)
17
+ return { value: await executor.run(command, runtimeOptions) };
18
+ throw new Error(executor.unsupportedMessage);
19
+ };
20
+ const useSemanticMutationCommand = (buildCommand, executor, options) => {
21
+ const queryClient = useQueryClient();
22
+ return useMutation({
23
+ ...options,
24
+ mutationKey: options?.mutationKey,
25
+ mutationFn: async (variables) => {
26
+ const execution = await executeSemanticMutation(buildCommand(variables), options?.runtimeOptions, executor);
27
+ if (execution.metadata?.committedMutations) {
28
+ if (!wasRuntimeProtocolExecutionObserved(execution.metadata)) {
29
+ const mutationCommitId = execution.metadata.mutationCommitId;
30
+ await invalidateSemanticGraphReads(queryClient, execution.metadata.committedMutations, {
31
+ ...(mutationCommitId
32
+ ? {
33
+ causedBy: {
34
+ kind: 'committed-mutations',
35
+ commitIds: [mutationCommitId],
36
+ overflow: false,
37
+ },
38
+ }
39
+ : {}),
40
+ ...(executor.associateGraphReadRefreshes
41
+ ? { associateRefreshes: executor.associateGraphReadRefreshes }
42
+ : {}),
43
+ });
44
+ }
45
+ }
46
+ else {
47
+ for (const queryKey of options?.invalidateQueryKeys ?? []) {
48
+ await queryClient.invalidateQueries({ queryKey });
49
+ }
50
+ }
51
+ return execution.value;
52
+ },
53
+ onSuccess: async (data, variables, onMutateResult, context) => {
54
+ await options?.onSuccess?.(data, variables, onMutateResult, context);
55
+ },
56
+ });
57
+ };
11
58
  const intentFromMode = (mode) => mode === 'get' ? 'first' : mode === 'run' ? 'many' : mode;
12
59
  const modeFromIntent = (intent) => intent === 'many' ? 'run' : intent === 'count' ? 'count' : 'get';
60
+ const canonicalGraphReadRequest = (read, intent, params) => {
61
+ const spec = resolveQuerySpec(resolveGraphRead(read), params);
62
+ const mode = modeFromIntent(intent);
63
+ return hasRelationImage(spec.selection)
64
+ ? toGraphReadRequestV2(spec, mode)
65
+ : toGraphReadRequest(spec, mode);
66
+ };
13
67
  const deriveGraphQueryKey = (read, intent, params, identityKey) => {
14
68
  const resolved = isQueryOrView(read) ? read : resolveGraphRead(read);
15
69
  if (isNamedView(resolved)) {
@@ -32,6 +86,18 @@ const deriveGraphQueryKey = (read, intent, params, identityKey) => {
32
86
  throw new Error(`${message}: ${error instanceof Error ? error.message : String(error)}`);
33
87
  }
34
88
  };
89
+ /** Give a live evaluation its own React Query lifecycle without changing the caller's key parts. */
90
+ const liveGraphQueryKey = (queryKey) => [
91
+ ...queryKey,
92
+ { scope: 'ontahi.graph-read', lifecycle: 'live' },
93
+ ];
94
+ /** Reconcile every complete observed value before exposing it as the current query snapshot. */
95
+ const observedSnapshots = async function* (snapshots, write) {
96
+ for await (const snapshot of snapshots) {
97
+ write(snapshot);
98
+ yield snapshot;
99
+ }
100
+ };
35
101
  export function useGraphQuery(read, options) {
36
102
  const graphExecutor = useGraphExecutor();
37
103
  const identity = useExecutionIdentity();
@@ -40,14 +106,46 @@ export function useGraphQuery(read, options) {
40
106
  const source = (expression?.read ?? read);
41
107
  const mode = options?.mode ?? 'run';
42
108
  const intent = expression?.intent ?? intentFromMode(mode);
43
- const queryKey = options?.queryKey ??
109
+ let canonicalRequest;
110
+ try {
111
+ canonicalRequest = canonicalGraphReadRequest(source, intent, options?.params);
112
+ }
113
+ catch {
114
+ // Local/custom executors may support Reads that cannot cross the Runtime Protocol yet.
115
+ }
116
+ const lifecycle = options?.observation === 'live' ? 'live' : 'once';
117
+ const baseQueryKey = options?.queryKey ??
44
118
  deriveGraphQueryKey(source, intent, options?.params, executionIdentityCacheKey(identity));
45
- return useQuery({
46
- ...options,
47
- queryKey,
48
- queryFn: async () => {
49
- const resolved = resolveGraphRead(source);
50
- const params = options?.params;
119
+ const queryKey = lifecycle === 'live' ? liveGraphQueryKey(baseQueryKey) : baseQueryKey;
120
+ const resolved = resolveGraphRead(source);
121
+ const params = options?.params;
122
+ const descriptor = intent === 'count' || intent === 'exists'
123
+ ? graphOutput.opaque()
124
+ : getGraphReadOutputDescriptor(resolved, params);
125
+ const writeOutput = (value) => {
126
+ clientCache.writeOutput(queryKey, descriptor.kind === 'graph-output.array' && intent !== 'many'
127
+ ? graphOutput.nullable(descriptor.item)
128
+ : descriptor, value, { kind: 'graph-read', name: resolveQuerySpec(resolved, params).root.name });
129
+ };
130
+ const queryFn = lifecycle === 'live'
131
+ ? experimental_streamedQuery({
132
+ streamFn: context => {
133
+ if (intent !== 'many') {
134
+ throw new Error('Live Graph observation only supports many-result Queries.');
135
+ }
136
+ if (!graphExecutor.observe) {
137
+ throw new Error('Graph executor does not support Query observation.');
138
+ }
139
+ const snapshots = graphExecutor.observe(resolved, params, options?.runtimeOptions, {
140
+ signal: context.signal,
141
+ });
142
+ return observedSnapshots(snapshots, writeOutput);
143
+ },
144
+ reducer: (_current, snapshot) => snapshot,
145
+ initialValue: [],
146
+ refetchMode: 'reset',
147
+ })
148
+ : async () => {
51
149
  const value = intent === 'many'
52
150
  ? await graphExecutor.run(resolved, params, options?.runtimeOptions)
53
151
  : intent === 'count'
@@ -55,70 +153,71 @@ export function useGraphQuery(read, options) {
55
153
  : intent === 'exists'
56
154
  ? (await graphExecutor.get(resolved, params, options?.runtimeOptions)) != null
57
155
  : await graphExecutor.get(resolved, params, options?.runtimeOptions);
58
- const descriptor = intent === 'count' || intent === 'exists'
59
- ? graphOutput.opaque()
60
- : getGraphReadOutputDescriptor(resolved, params);
61
- clientCache.writeOutput(queryKey, descriptor.kind === 'graph-output.array' && intent !== 'many'
62
- ? graphOutput.nullable(descriptor.item)
63
- : descriptor, value, { kind: 'graph-read', name: resolveQuerySpec(resolved, params).root.name });
156
+ writeOutput(value);
64
157
  return value;
65
- },
158
+ };
159
+ const { observation: _observation, ...queryOptions } = options ?? {};
160
+ return useQuery({
161
+ ...queryOptions,
162
+ meta: canonicalRequest
163
+ ? withCanonicalGraphReadMeta(options?.meta, canonicalRequest, lifecycle)
164
+ : withUnknownGraphReadMeta(options?.meta, lifecycle),
165
+ queryKey,
166
+ queryFn,
66
167
  });
67
168
  }
68
169
  export function useGraphCommand(buildCommand, options) {
69
170
  const graphExecutor = useGraphExecutor();
70
- const queryClient = useQueryClient();
71
- return useMutation({
72
- ...options,
73
- mutationKey: options?.mutationKey,
74
- mutationFn: variables => graphExecutor.runCommand(resolveGraphCommand(buildCommand(variables)), options?.runtimeOptions),
75
- onSuccess: async (data, variables, onMutateResult, context) => {
76
- for (const queryKey of options?.invalidateQueryKeys ?? []) {
77
- await queryClient.invalidateQueries({ queryKey });
78
- }
79
- await options?.onSuccess?.(data, variables, onMutateResult, context);
80
- },
81
- });
171
+ const runExecution = graphExecutor.runCommandExecution
172
+ ? (command, runtimeOptions) => graphExecutor.runCommandExecution(command, runtimeOptions)
173
+ : undefined;
174
+ return useSemanticMutationCommand(variables => resolveGraphCommand(buildCommand(variables)), {
175
+ run: (command, runtimeOptions) => graphExecutor.runCommand(command, runtimeOptions),
176
+ ...(runExecution ? { runExecution } : {}),
177
+ ...(graphExecutor.associateGraphReadRefreshes
178
+ ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }
179
+ : {}),
180
+ unsupportedMessage: 'Graph executor does not support Graph Commands.',
181
+ }, options);
182
+ }
183
+ export function useEntityMutationCommand(buildCommand, options) {
184
+ const graphExecutor = useGraphExecutor();
185
+ const run = graphExecutor.runEntityMutationCommand?.bind(graphExecutor);
186
+ const runExecution = graphExecutor.runEntityMutationCommandExecution?.bind(graphExecutor);
187
+ return useSemanticMutationCommand(buildCommand, {
188
+ ...(run ? { run } : {}),
189
+ ...(runExecution ? { runExecution } : {}),
190
+ ...(graphExecutor.associateGraphReadRefreshes
191
+ ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }
192
+ : {}),
193
+ unsupportedMessage: 'Graph executor does not support Entity Mutation Commands.',
194
+ }, options);
82
195
  }
83
196
  export function useManyToManyRelationshipCommand(buildCommand, options) {
84
197
  const graphExecutor = useGraphExecutor();
85
- const queryClient = useQueryClient();
86
- return useMutation({
87
- ...options,
88
- mutationKey: options?.mutationKey,
89
- mutationFn: variables => {
90
- if (!graphExecutor.runManyToManyRelationshipCommand) {
91
- throw new Error('Graph executor does not support many-to-many Relationship Commands.');
92
- }
93
- return graphExecutor.runManyToManyRelationshipCommand(buildCommand(variables), options?.runtimeOptions);
94
- },
95
- onSuccess: async (data, variables, onMutateResult, context) => {
96
- for (const queryKey of options?.invalidateQueryKeys ?? []) {
97
- await queryClient.invalidateQueries({ queryKey });
98
- }
99
- await options?.onSuccess?.(data, variables, onMutateResult, context);
100
- },
101
- });
198
+ const run = graphExecutor.runManyToManyRelationshipCommand?.bind(graphExecutor);
199
+ const runExecution = graphExecutor.runManyToManyRelationshipCommandExecution?.bind(graphExecutor);
200
+ return useSemanticMutationCommand(buildCommand, {
201
+ ...(run ? { run } : {}),
202
+ ...(runExecution ? { runExecution } : {}),
203
+ ...(graphExecutor.associateGraphReadRefreshes
204
+ ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }
205
+ : {}),
206
+ unsupportedMessage: 'Graph executor does not support many-to-many Relationship Commands.',
207
+ }, options);
102
208
  }
103
209
  export function useOrderedRelationshipCommand(buildCommand, options) {
104
210
  const graphExecutor = useGraphExecutor();
105
- const queryClient = useQueryClient();
106
- return useMutation({
107
- ...options,
108
- mutationKey: options?.mutationKey,
109
- mutationFn: variables => {
110
- if (!graphExecutor.runOrderedRelationshipCommand) {
111
- throw new Error('Graph executor does not support ordered Relationship Commands.');
112
- }
113
- return graphExecutor.runOrderedRelationshipCommand(buildCommand(variables), options?.runtimeOptions);
114
- },
115
- onSuccess: async (data, variables, onMutateResult, context) => {
116
- for (const queryKey of options?.invalidateQueryKeys ?? []) {
117
- await queryClient.invalidateQueries({ queryKey });
118
- }
119
- await options?.onSuccess?.(data, variables, onMutateResult, context);
120
- },
121
- });
211
+ const run = graphExecutor.runOrderedRelationshipCommand?.bind(graphExecutor);
212
+ const runExecution = graphExecutor.runOrderedRelationshipCommandExecution?.bind(graphExecutor);
213
+ return useSemanticMutationCommand(buildCommand, {
214
+ ...(run ? { run } : {}),
215
+ ...(runExecution ? { runExecution } : {}),
216
+ ...(graphExecutor.associateGraphReadRefreshes
217
+ ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }
218
+ : {}),
219
+ unsupportedMessage: 'Graph executor does not support ordered Relationship Commands.',
220
+ }, options);
122
221
  }
123
222
  export function useGraphOperation(operation, options) {
124
223
  const buildCommand = (variables) => operation.run((operation.input
@@ -1 +1 @@
1
- {"version":3,"file":"graph-hooks.js","sourceRoot":"","sources":["../../src/graph/graph-hooks.ts"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {\n getGraphReadOutputDescriptor,\n graphOutput,\n isGraphReadExpression,\n normalizeGraphSchemaClientInput,\n resolveQuerySpec,\n toGraphReadRequest,\n type GraphCommandSpec,\n type GraphReadIntent,\n type ManyToManyRelationshipCommand,\n type OrderedRelationshipCommand,\n type RelationshipCommandResult,\n type QueryOrView,\n type ViewDefinition,\n} from '@ontahi/core/data-graph';\nimport { executionIdentityCacheKey } from '@ontahi/core/runtime/identity';\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type QueryKey,\n type UseMutationResult,\n type UseQueryResult,\n} from '@tanstack/react-query';\n\nimport { useExecutionIdentity, useGraphClientCache, useGraphExecutor } from './context.js';\nimport type {\n BuildableRead,\n CommandLike,\n GraphCommandBuilder,\n GraphCommandHookOptions,\n GraphOperationLike,\n GraphOperationClientInput,\n GraphOperationResult,\n GraphQueryData,\n GraphQueryMode,\n GraphQueryOptions,\n GraphReadSource,\n ReadParams,\n ReadResult,\n} from './executor.js';\n\nconst isQueryOrView = <TResult>(\n read: Exclude<GraphReadSource<TResult>, { kind: 'graph-read-expression' }>,\n): read is QueryOrView<any, TResult> => 'kind' in read;\n\nconst isBuildableRead = <TResult>(\n read: Exclude<GraphReadSource<TResult>, { kind: 'graph-read-expression' }>,\n): read is BuildableRead<TResult> => typeof (read as BuildableRead<TResult>).build === 'function';\n\nconst isNamedView = <TResult>(\n read: QueryOrView<any, TResult>,\n): read is ViewDefinition<any, any, TResult> => 'kind' in read && read.kind === 'view';\n\ntype PlainGraphReadSource<TResult> = Exclude<\n GraphReadSource<TResult>,\n { kind: 'graph-read-expression' }\n>;\n\nconst resolveGraphRead = <TResult>(read: PlainGraphReadSource<TResult>) =>\n (isQueryOrView(read) ? read : isBuildableRead(read) ? read.build() : read) as QueryOrView<\n any,\n TResult\n >;\n\nconst resolveGraphCommand = <TResult>(command: CommandLike<TResult>) =>\n ('build' in command ? command.build() : command) as GraphCommandSpec<any, any, TResult>;\n\nconst intentFromMode = (mode: GraphQueryMode): GraphReadIntent | 'many' =>\n mode === 'get' ? 'first' : mode === 'run' ? 'many' : mode;\n\nconst modeFromIntent = (intent: GraphReadIntent | 'many'): Exclude<GraphQueryMode, 'exists'> =>\n intent === 'many' ? 'run' : intent === 'count' ? 'count' : 'get';\n\nconst deriveGraphQueryKey = <TRead>(\n read: PlainGraphReadSource<ReadResult<TRead>>,\n intent: GraphReadIntent | 'many',\n params: ReadParams<TRead> | undefined,\n identityKey: readonly unknown[],\n): QueryKey => {\n const resolved = isQueryOrView(read) ? read : resolveGraphRead(read);\n\n if (isNamedView(resolved)) {\n return [\n resolved.root.name,\n 'graph-read',\n identityKey,\n intent,\n 'view',\n resolved.name,\n params ?? null,\n ];\n }\n\n try {\n const request = toGraphReadRequest(resolveQuerySpec(resolved, params), modeFromIntent(intent));\n return [request.selection.entityName, 'graph-read', identityKey, intent, request];\n } catch (error) {\n const message =\n 'useGraphQuery could not infer a transport-safe queryKey; provide queryKey explicitly';\n throw new Error(`${message}: ${error instanceof Error ? error.message : String(error)}`);\n }\n};\n\nexport function useGraphQuery<\n TRead extends GraphReadSource<any>,\n TMode extends GraphQueryMode = 'run',\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n read: TRead,\n options?: GraphQueryOptions<TRead, TMode, TReadOptions>,\n): UseQueryResult<GraphQueryData<TRead, TMode>, Error> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const identity = useExecutionIdentity();\n const clientCache = useGraphClientCache();\n const expression = isGraphReadExpression(read) ? read : undefined;\n const source = (expression?.read ?? read) as PlainGraphReadSource<ReadResult<TRead>>;\n const mode = options?.mode ?? 'run';\n const intent = expression?.intent ?? intentFromMode(mode);\n const queryKey =\n options?.queryKey ??\n deriveGraphQueryKey(source, intent, options?.params, executionIdentityCacheKey(identity));\n\n return useQuery({\n ...options,\n queryKey,\n queryFn: async () => {\n const resolved = resolveGraphRead(source);\n const params = options?.params as any;\n\n const value =\n intent === 'many'\n ? await graphExecutor.run(resolved, params, options?.runtimeOptions)\n : intent === 'count'\n ? await graphExecutor.count(resolved, params, options?.runtimeOptions)\n : intent === 'exists'\n ? (await graphExecutor.get(resolved, params, options?.runtimeOptions)) != null\n : await graphExecutor.get(resolved, params, options?.runtimeOptions);\n\n const descriptor =\n intent === 'count' || intent === 'exists'\n ? graphOutput.opaque()\n : getGraphReadOutputDescriptor(resolved, params);\n clientCache.writeOutput(\n queryKey,\n descriptor.kind === 'graph-output.array' && intent !== 'many'\n ? graphOutput.nullable(descriptor.item)\n : descriptor,\n value,\n { kind: 'graph-read', name: resolveQuerySpec(resolved, params).root.name },\n );\n\n return value as GraphQueryData<TRead, TMode>;\n },\n });\n}\n\nexport function useGraphCommand<\n TVariables,\n TResult = void,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: GraphCommandBuilder<TVariables, TResult>,\n options?: GraphCommandHookOptions<TResult, TVariables, TContext, TCommandOptions>,\n): UseMutationResult<TResult, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const queryClient = useQueryClient();\n\n return useMutation({\n ...options,\n mutationKey: options?.mutationKey,\n mutationFn: variables =>\n graphExecutor.runCommand(\n resolveGraphCommand(buildCommand(variables)),\n options?.runtimeOptions,\n ),\n onSuccess: async (data, variables, onMutateResult, context) => {\n for (const queryKey of options?.invalidateQueryKeys ?? []) {\n await queryClient.invalidateQueries({ queryKey });\n }\n\n await options?.onSuccess?.(data, variables, onMutateResult, context);\n },\n });\n}\n\nexport function useManyToManyRelationshipCommand<\n TVariables,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: (variables: TVariables) => ManyToManyRelationshipCommand,\n options?: GraphCommandHookOptions<\n RelationshipCommandResult,\n TVariables,\n TContext,\n TCommandOptions\n >,\n): UseMutationResult<RelationshipCommandResult, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const queryClient = useQueryClient();\n\n return useMutation({\n ...options,\n mutationKey: options?.mutationKey,\n mutationFn: variables => {\n if (!graphExecutor.runManyToManyRelationshipCommand) {\n throw new Error('Graph executor does not support many-to-many Relationship Commands.');\n }\n return graphExecutor.runManyToManyRelationshipCommand(\n buildCommand(variables),\n options?.runtimeOptions,\n );\n },\n onSuccess: async (data, variables, onMutateResult, context) => {\n for (const queryKey of options?.invalidateQueryKeys ?? []) {\n await queryClient.invalidateQueries({ queryKey });\n }\n await options?.onSuccess?.(data, variables, onMutateResult, context);\n },\n });\n}\n\nexport function useOrderedRelationshipCommand<\n TVariables,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: (variables: TVariables) => OrderedRelationshipCommand,\n options?: GraphCommandHookOptions<\n RelationshipCommandResult,\n TVariables,\n TContext,\n TCommandOptions\n >,\n): UseMutationResult<RelationshipCommandResult, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const queryClient = useQueryClient();\n\n return useMutation({\n ...options,\n mutationKey: options?.mutationKey,\n mutationFn: variables => {\n if (!graphExecutor.runOrderedRelationshipCommand) {\n throw new Error('Graph executor does not support ordered Relationship Commands.');\n }\n return graphExecutor.runOrderedRelationshipCommand(\n buildCommand(variables),\n options?.runtimeOptions,\n );\n },\n onSuccess: async (data, variables, onMutateResult, context) => {\n for (const queryKey of options?.invalidateQueryKeys ?? []) {\n await queryClient.invalidateQueries({ queryKey });\n }\n await options?.onSuccess?.(data, variables, onMutateResult, context);\n },\n });\n}\n\nexport function useGraphOperation<\n TOperation extends GraphOperationLike<any, any>,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n operation: TOperation,\n options?: GraphCommandHookOptions<\n GraphOperationResult<TOperation>,\n GraphOperationClientInput<TOperation>,\n TContext,\n TCommandOptions\n >,\n): UseMutationResult<\n GraphOperationResult<TOperation>,\n Error,\n GraphOperationClientInput<TOperation>,\n TContext\n> {\n type TVariables = GraphOperationClientInput<TOperation>;\n type TResult = GraphOperationResult<TOperation>;\n const buildCommand = (variables: TVariables) =>\n operation.run(\n (operation.input\n ? normalizeGraphSchemaClientInput(operation.input, variables)\n : variables) as never,\n );\n\n return useGraphCommand<TVariables, TResult, TContext, TReadOptions, TCommandOptions>(\n buildCommand,\n {\n mutationKey: options?.mutationKey ?? ['graph-operation', operation.id],\n ...options,\n },\n );\n}\n"]}
1
+ {"version":3,"file":"graph-hooks.js","sourceRoot":"","sources":["../../src/graph/graph-hooks.ts"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {\n getGraphReadOutputDescriptor,\n graphOutput,\n hasRelationImage,\n isGraphReadExpression,\n normalizeGraphSchemaClientInput,\n resolveQuerySpec,\n toGraphReadRequest,\n toGraphReadRequestV2,\n type GraphCommandSpec,\n type GraphReadIntent,\n type GraphReadRequest,\n type EntityMutationCommand,\n type EntityMutationDelta,\n type ManyToManyRelationshipCommand,\n type OrderedRelationshipCommand,\n type RelationshipCommandResult,\n type QueryOrView,\n type ViewDefinition,\n} from '@ontahi/core/data-graph';\nimport { executionIdentityCacheKey } from '@ontahi/core/runtime/identity';\nimport { wasRuntimeProtocolExecutionObserved } from '@ontahi/core/runtime/protocol';\nimport {\n experimental_streamedQuery,\n useMutation,\n useQuery,\n useQueryClient,\n type QueryKey,\n type UseMutationResult,\n type UseQueryResult,\n} from '@tanstack/react-query';\n\nimport { useExecutionIdentity, useGraphClientCache, useGraphExecutor } from './context.js';\nimport type {\n BuildableRead,\n CommandLike,\n GraphCommandBuilder,\n GraphCommandHookOptions,\n GraphMutationExecution,\n GraphOperationLike,\n GraphOperationClientInput,\n GraphOperationResult,\n GraphQueryData,\n GraphQueryMode,\n GraphQueryOptions,\n GraphReadSource,\n ReadParams,\n ReadResult,\n ReactGraphExecutor,\n} from './executor.js';\nimport {\n invalidateSemanticGraphReads,\n withCanonicalGraphReadMeta,\n withUnknownGraphReadMeta,\n} from './semantic-invalidation.js';\n\nconst isQueryOrView = <TResult>(\n read: Exclude<GraphReadSource<TResult>, { kind: 'graph-read-expression' }>,\n): read is QueryOrView<any, TResult> => 'kind' in read;\n\nconst isBuildableRead = <TResult>(\n read: Exclude<GraphReadSource<TResult>, { kind: 'graph-read-expression' }>,\n): read is BuildableRead<TResult> => typeof (read as BuildableRead<TResult>).build === 'function';\n\nconst isNamedView = <TResult>(\n read: QueryOrView<any, TResult>,\n): read is ViewDefinition<any, any, TResult> => 'kind' in read && read.kind === 'view';\n\ntype PlainGraphReadSource<TResult> = Exclude<\n GraphReadSource<TResult>,\n { kind: 'graph-read-expression' }\n>;\n\nconst resolveGraphRead = <TResult>(read: PlainGraphReadSource<TResult>) =>\n (isQueryOrView(read) ? read : isBuildableRead(read) ? read.build() : read) as QueryOrView<\n any,\n TResult\n >;\n\nconst resolveGraphCommand = <TResult>(command: CommandLike<TResult>) =>\n ('build' in command ? command.build() : command) as GraphCommandSpec<any, any, TResult>;\n\ntype SemanticMutationExecutor<TCommand, TResult, TCommandOptions> = {\n readonly run?: (command: TCommand, options?: TCommandOptions) => Promise<TResult>;\n readonly runExecution?: (\n command: TCommand,\n options?: TCommandOptions,\n ) => Promise<GraphMutationExecution<TResult>>;\n readonly associateGraphReadRefreshes?: ReactGraphExecutor['associateGraphReadRefreshes'];\n readonly unsupportedMessage: string;\n};\n\nconst executeSemanticMutation = async <TCommand, TResult, TCommandOptions>(\n command: TCommand,\n runtimeOptions: TCommandOptions | undefined,\n executor: SemanticMutationExecutor<TCommand, TResult, TCommandOptions>,\n): Promise<GraphMutationExecution<TResult>> => {\n if (executor.runExecution) return executor.runExecution(command, runtimeOptions);\n if (executor.run) return { value: await executor.run(command, runtimeOptions) };\n throw new Error(executor.unsupportedMessage);\n};\n\nconst useSemanticMutationCommand = <TCommand, TResult, TVariables, TContext, TCommandOptions>(\n buildCommand: (variables: TVariables) => TCommand,\n executor: SemanticMutationExecutor<TCommand, TResult, TCommandOptions>,\n options?: GraphCommandHookOptions<TResult, TVariables, TContext, TCommandOptions>,\n): UseMutationResult<TResult, Error, TVariables, TContext> => {\n const queryClient = useQueryClient();\n\n return useMutation({\n ...options,\n mutationKey: options?.mutationKey,\n mutationFn: async variables => {\n const execution = await executeSemanticMutation(\n buildCommand(variables),\n options?.runtimeOptions,\n executor,\n );\n if (execution.metadata?.committedMutations) {\n if (!wasRuntimeProtocolExecutionObserved(execution.metadata)) {\n const mutationCommitId = execution.metadata.mutationCommitId;\n await invalidateSemanticGraphReads(queryClient, execution.metadata.committedMutations, {\n ...(mutationCommitId\n ? {\n causedBy: {\n kind: 'committed-mutations' as const,\n commitIds: [mutationCommitId],\n overflow: false,\n },\n }\n : {}),\n ...(executor.associateGraphReadRefreshes\n ? { associateRefreshes: executor.associateGraphReadRefreshes }\n : {}),\n });\n }\n } else {\n for (const queryKey of options?.invalidateQueryKeys ?? []) {\n await queryClient.invalidateQueries({ queryKey });\n }\n }\n return execution.value;\n },\n onSuccess: async (data, variables, onMutateResult, context) => {\n await options?.onSuccess?.(data, variables, onMutateResult, context);\n },\n });\n};\n\nconst intentFromMode = (mode: GraphQueryMode): GraphReadIntent | 'many' =>\n mode === 'get' ? 'first' : mode === 'run' ? 'many' : mode;\n\nconst modeFromIntent = (intent: GraphReadIntent | 'many'): Exclude<GraphQueryMode, 'exists'> =>\n intent === 'many' ? 'run' : intent === 'count' ? 'count' : 'get';\n\nconst canonicalGraphReadRequest = <TResult>(\n read: PlainGraphReadSource<TResult>,\n intent: GraphReadIntent | 'many',\n params: ReadParams<GraphReadSource<TResult>> | undefined,\n): GraphReadRequest => {\n const spec = resolveQuerySpec(resolveGraphRead(read), params);\n const mode = modeFromIntent(intent);\n return hasRelationImage(spec.selection)\n ? toGraphReadRequestV2(spec, mode)\n : toGraphReadRequest(spec, mode);\n};\n\nconst deriveGraphQueryKey = <TRead>(\n read: PlainGraphReadSource<ReadResult<TRead>>,\n intent: GraphReadIntent | 'many',\n params: ReadParams<TRead> | undefined,\n identityKey: readonly unknown[],\n): QueryKey => {\n const resolved = isQueryOrView(read) ? read : resolveGraphRead(read);\n\n if (isNamedView(resolved)) {\n return [\n resolved.root.name,\n 'graph-read',\n identityKey,\n intent,\n 'view',\n resolved.name,\n params ?? null,\n ];\n }\n\n try {\n const request = toGraphReadRequest(resolveQuerySpec(resolved, params), modeFromIntent(intent));\n return [request.selection.entityName, 'graph-read', identityKey, intent, request];\n } catch (error) {\n const message =\n 'useGraphQuery could not infer a transport-safe queryKey; provide queryKey explicitly';\n throw new Error(`${message}: ${error instanceof Error ? error.message : String(error)}`);\n }\n};\n\n/** Give a live evaluation its own React Query lifecycle without changing the caller's key parts. */\nconst liveGraphQueryKey = (queryKey: QueryKey): QueryKey => [\n ...queryKey,\n { scope: 'ontahi.graph-read', lifecycle: 'live' },\n];\n\n/** Reconcile every complete observed value before exposing it as the current query snapshot. */\nconst observedSnapshots = async function* <TValue>(\n snapshots: AsyncIterable<TValue>,\n write: (snapshot: TValue) => void,\n): AsyncIterable<TValue> {\n for await (const snapshot of snapshots) {\n write(snapshot);\n yield snapshot;\n }\n};\n\nexport function useGraphQuery<\n TRead extends GraphReadSource<any>,\n TMode extends GraphQueryMode = 'run',\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n read: TRead,\n options?: GraphQueryOptions<TRead, TMode, TReadOptions>,\n): UseQueryResult<GraphQueryData<TRead, TMode>, Error> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const identity = useExecutionIdentity();\n const clientCache = useGraphClientCache();\n const expression = isGraphReadExpression(read) ? read : undefined;\n const source = (expression?.read ?? read) as PlainGraphReadSource<ReadResult<TRead>>;\n const mode = options?.mode ?? 'run';\n const intent = expression?.intent ?? intentFromMode(mode);\n let canonicalRequest: GraphReadRequest | undefined;\n try {\n canonicalRequest = canonicalGraphReadRequest(source, intent, options?.params);\n } catch {\n // Local/custom executors may support Reads that cannot cross the Runtime Protocol yet.\n }\n const lifecycle = options?.observation === 'live' ? 'live' : 'once';\n const baseQueryKey =\n options?.queryKey ??\n deriveGraphQueryKey(source, intent, options?.params, executionIdentityCacheKey(identity));\n const queryKey = lifecycle === 'live' ? liveGraphQueryKey(baseQueryKey) : baseQueryKey;\n const resolved = resolveGraphRead(source);\n const params = options?.params as any;\n const descriptor =\n intent === 'count' || intent === 'exists'\n ? graphOutput.opaque()\n : getGraphReadOutputDescriptor(resolved, params);\n const writeOutput = (value: GraphQueryData<TRead, TMode>) => {\n clientCache.writeOutput(\n queryKey,\n descriptor.kind === 'graph-output.array' && intent !== 'many'\n ? graphOutput.nullable(descriptor.item)\n : descriptor,\n value,\n { kind: 'graph-read', name: resolveQuerySpec(resolved, params).root.name },\n );\n };\n const queryFn =\n lifecycle === 'live'\n ? experimental_streamedQuery<\n GraphQueryData<TRead, TMode>,\n GraphQueryData<TRead, TMode>,\n QueryKey\n >({\n streamFn: context => {\n if (intent !== 'many') {\n throw new Error('Live Graph observation only supports many-result Queries.');\n }\n if (!graphExecutor.observe) {\n throw new Error('Graph executor does not support Query observation.');\n }\n const snapshots = graphExecutor.observe(resolved, params, options?.runtimeOptions, {\n signal: context.signal,\n });\n return observedSnapshots(\n snapshots as AsyncIterable<GraphQueryData<TRead, TMode>>,\n writeOutput,\n );\n },\n reducer: (_current, snapshot) => snapshot,\n initialValue: [] as GraphQueryData<TRead, TMode>,\n refetchMode: 'reset',\n })\n : async () => {\n const value =\n intent === 'many'\n ? await graphExecutor.run(resolved, params, options?.runtimeOptions)\n : intent === 'count'\n ? await graphExecutor.count(resolved, params, options?.runtimeOptions)\n : intent === 'exists'\n ? (await graphExecutor.get(resolved, params, options?.runtimeOptions)) != null\n : await graphExecutor.get(resolved, params, options?.runtimeOptions);\n\n writeOutput(value as GraphQueryData<TRead, TMode>);\n return value as GraphQueryData<TRead, TMode>;\n };\n const { observation: _observation, ...queryOptions } = options ?? {};\n\n return useQuery({\n ...queryOptions,\n meta: canonicalRequest\n ? withCanonicalGraphReadMeta(options?.meta, canonicalRequest, lifecycle)\n : withUnknownGraphReadMeta(options?.meta, lifecycle),\n queryKey,\n queryFn,\n });\n}\n\nexport function useGraphCommand<\n TVariables,\n TResult = void,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: GraphCommandBuilder<TVariables, TResult>,\n options?: GraphCommandHookOptions<TResult, TVariables, TContext, TCommandOptions>,\n): UseMutationResult<TResult, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const runExecution = graphExecutor.runCommandExecution\n ? (command: GraphCommandSpec<any, any, TResult>, runtimeOptions?: TCommandOptions) =>\n graphExecutor.runCommandExecution!<TResult>(command, runtimeOptions)\n : undefined;\n\n return useSemanticMutationCommand(\n variables => resolveGraphCommand(buildCommand(variables)),\n {\n run: (command, runtimeOptions) => graphExecutor.runCommand<TResult>(command, runtimeOptions),\n ...(runExecution ? { runExecution } : {}),\n ...(graphExecutor.associateGraphReadRefreshes\n ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }\n : {}),\n unsupportedMessage: 'Graph executor does not support Graph Commands.',\n },\n options,\n );\n}\n\nexport function useEntityMutationCommand<\n TVariables,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: (variables: TVariables) => EntityMutationCommand,\n options?: GraphCommandHookOptions<EntityMutationDelta, TVariables, TContext, TCommandOptions>,\n): UseMutationResult<EntityMutationDelta, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const run = graphExecutor.runEntityMutationCommand?.bind(graphExecutor);\n const runExecution = graphExecutor.runEntityMutationCommandExecution?.bind(graphExecutor);\n\n return useSemanticMutationCommand(\n buildCommand,\n {\n ...(run ? { run } : {}),\n ...(runExecution ? { runExecution } : {}),\n ...(graphExecutor.associateGraphReadRefreshes\n ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }\n : {}),\n unsupportedMessage: 'Graph executor does not support Entity Mutation Commands.',\n },\n options,\n );\n}\n\nexport function useManyToManyRelationshipCommand<\n TVariables,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: (variables: TVariables) => ManyToManyRelationshipCommand,\n options?: GraphCommandHookOptions<\n RelationshipCommandResult,\n TVariables,\n TContext,\n TCommandOptions\n >,\n): UseMutationResult<RelationshipCommandResult, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const run = graphExecutor.runManyToManyRelationshipCommand?.bind(graphExecutor);\n const runExecution = graphExecutor.runManyToManyRelationshipCommandExecution?.bind(graphExecutor);\n\n return useSemanticMutationCommand(\n buildCommand,\n {\n ...(run ? { run } : {}),\n ...(runExecution ? { runExecution } : {}),\n ...(graphExecutor.associateGraphReadRefreshes\n ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }\n : {}),\n unsupportedMessage: 'Graph executor does not support many-to-many Relationship Commands.',\n },\n options,\n );\n}\n\nexport function useOrderedRelationshipCommand<\n TVariables,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n buildCommand: (variables: TVariables) => OrderedRelationshipCommand,\n options?: GraphCommandHookOptions<\n RelationshipCommandResult,\n TVariables,\n TContext,\n TCommandOptions\n >,\n): UseMutationResult<RelationshipCommandResult, Error, TVariables, TContext> {\n const graphExecutor = useGraphExecutor<TReadOptions, TCommandOptions>();\n const run = graphExecutor.runOrderedRelationshipCommand?.bind(graphExecutor);\n const runExecution = graphExecutor.runOrderedRelationshipCommandExecution?.bind(graphExecutor);\n\n return useSemanticMutationCommand(\n buildCommand,\n {\n ...(run ? { run } : {}),\n ...(runExecution ? { runExecution } : {}),\n ...(graphExecutor.associateGraphReadRefreshes\n ? { associateGraphReadRefreshes: graphExecutor.associateGraphReadRefreshes }\n : {}),\n unsupportedMessage: 'Graph executor does not support ordered Relationship Commands.',\n },\n options,\n );\n}\n\nexport function useGraphOperation<\n TOperation extends GraphOperationLike<any, any>,\n TContext = unknown,\n TReadOptions = unknown,\n TCommandOptions = TReadOptions,\n>(\n operation: TOperation,\n options?: GraphCommandHookOptions<\n GraphOperationResult<TOperation>,\n GraphOperationClientInput<TOperation>,\n TContext,\n TCommandOptions\n >,\n): UseMutationResult<\n GraphOperationResult<TOperation>,\n Error,\n GraphOperationClientInput<TOperation>,\n TContext\n> {\n type TVariables = GraphOperationClientInput<TOperation>;\n type TResult = GraphOperationResult<TOperation>;\n const buildCommand = (variables: TVariables) =>\n operation.run(\n (operation.input\n ? normalizeGraphSchemaClientInput(operation.input, variables)\n : variables) as never,\n );\n\n return useGraphCommand<TVariables, TResult, TContext, TReadOptions, TCommandOptions>(\n buildCommand,\n {\n mutationKey: options?.mutationKey ?? ['graph-operation', operation.id],\n ...options,\n },\n );\n}\n"]}
@@ -1,14 +1,17 @@
1
1
  export * from './context.js';
2
+ export * from './canonical-request-invalidation.js';
2
3
  export * from './executor.js';
3
4
  export * from './fetch-graph-read-executor.js';
4
5
  export * from './fetch-runtime-transport.js';
5
6
  export * from './fetch-graph-client.js';
6
7
  export * from './graph-hooks.js';
8
+ export * from './model-command-hooks.js';
7
9
  export * from './operation-cache.js';
8
10
  export * from './operation-hooks.js';
9
11
  export * from './operation-types.js';
10
12
  export * from './reflected-entity-data-hooks.js';
11
13
  export * from './reflected-operation-invoker.js';
12
14
  export * from './runtime-graph-client.js';
15
+ export * from './semantic-invalidation.js';
13
16
  export * from './websocket-runtime-transport.js';
14
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.tsx"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.tsx"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAC;AAC7B,cAAc,qCAAqC,CAAC;AACpD,cAAc,eAAe,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC"}
@@ -1,15 +1,18 @@
1
1
  'use client';
2
2
  export * from './context.js';
3
+ export * from './canonical-request-invalidation.js';
3
4
  export * from './executor.js';
4
5
  export * from './fetch-graph-read-executor.js';
5
6
  export * from './fetch-runtime-transport.js';
6
7
  export * from './fetch-graph-client.js';
7
8
  export * from './graph-hooks.js';
9
+ export * from './model-command-hooks.js';
8
10
  export * from './operation-cache.js';
9
11
  export * from './operation-hooks.js';
10
12
  export * from './operation-types.js';
11
13
  export * from './reflected-entity-data-hooks.js';
12
14
  export * from './reflected-operation-invoker.js';
13
15
  export * from './runtime-graph-client.js';
16
+ export * from './semantic-invalidation.js';
14
17
  export * from './websocket-runtime-transport.js';
15
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC","sourcesContent":["'use client';\n\nexport * from './context.js';\nexport * from './executor.js';\nexport * from './fetch-graph-read-executor.js';\nexport * from './fetch-runtime-transport.js';\nexport * from './fetch-graph-client.js';\nexport * from './graph-hooks.js';\nexport * from './operation-cache.js';\nexport * from './operation-hooks.js';\nexport * from './operation-types.js';\nexport * from './reflected-entity-data-hooks.js';\nexport * from './reflected-operation-invoker.js';\nexport * from './runtime-graph-client.js';\nexport * from './websocket-runtime-transport.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,cAAc,CAAC;AAC7B,cAAc,qCAAqC,CAAC;AACpD,cAAc,eAAe,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC","sourcesContent":["'use client';\n\nexport * from './context.js';\nexport * from './canonical-request-invalidation.js';\nexport * from './executor.js';\nexport * from './fetch-graph-read-executor.js';\nexport * from './fetch-runtime-transport.js';\nexport * from './fetch-graph-client.js';\nexport * from './graph-hooks.js';\nexport * from './model-command-hooks.js';\nexport * from './operation-cache.js';\nexport * from './operation-hooks.js';\nexport * from './operation-types.js';\nexport * from './reflected-entity-data-hooks.js';\nexport * from './reflected-operation-invoker.js';\nexport * from './runtime-graph-client.js';\nexport * from './semantic-invalidation.js';\nexport * from './websocket-runtime-transport.js';\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const useModelCommand: () => import("@ontahi/core/runtime/protocol").RuntimeModelCommandClient;
2
+ //# sourceMappingURL=model-command-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-command-hooks.d.ts","sourceRoot":"","sources":["../../src/graph/model-command-hooks.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,yEAG3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { createRuntimeModelCommandClient } from '@ontahi/core/runtime/protocol';
3
+ import { useMemo } from 'react';
4
+ import { useRuntimeTransport } from './context.js';
5
+ export const useModelCommand = () => {
6
+ const runtimeTransport = useRuntimeTransport();
7
+ return useMemo(() => createRuntimeModelCommandClient(runtimeTransport), [runtimeTransport]);
8
+ };
9
+ //# sourceMappingURL=model-command-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-command-hooks.js","sourceRoot":"","sources":["../../src/graph/model-command-hooks.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC9F,CAAC,CAAC","sourcesContent":["'use client';\n\nimport { createRuntimeModelCommandClient } from '@ontahi/core/runtime/protocol';\nimport { useMemo } from 'react';\n\nimport { useRuntimeTransport } from './context.js';\n\nexport const useModelCommand = () => {\n const runtimeTransport = useRuntimeTransport();\n return useMemo(() => createRuntimeModelCommandClient(runtimeTransport), [runtimeTransport]);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"operation-hooks.d.ts","sourceRoot":"","sources":["../../src/graph/operation-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation-hooks.d.ts","sourceRoot":"","sources":["../../src/graph/operation-hooks.ts"],"names":[],"mappings":"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"}