@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.
- package/README.md +154 -5
- package/dist/actions/fetch-operation-bridge-adapter.d.ts +10 -3
- package/dist/actions/fetch-operation-bridge-adapter.d.ts.map +1 -1
- package/dist/actions/fetch-operation-bridge-adapter.js +92 -29
- package/dist/actions/fetch-operation-bridge-adapter.js.map +1 -1
- package/dist/actions/operation-bridge.d.ts +2 -0
- package/dist/actions/operation-bridge.d.ts.map +1 -1
- package/dist/actions/operation-bridge.js.map +1 -1
- package/dist/graph/canonical-request-invalidation.d.ts +14 -0
- package/dist/graph/canonical-request-invalidation.d.ts.map +1 -0
- package/dist/graph/canonical-request-invalidation.js +42 -0
- package/dist/graph/canonical-request-invalidation.js.map +1 -0
- package/dist/graph/context.d.ts +10 -3
- package/dist/graph/context.d.ts.map +1 -1
- package/dist/graph/context.js +39 -4
- package/dist/graph/context.js.map +1 -1
- package/dist/graph/executor.d.ts +19 -1
- package/dist/graph/executor.d.ts.map +1 -1
- package/dist/graph/executor.js.map +1 -1
- package/dist/graph/fetch-graph-client.d.ts +20 -4
- package/dist/graph/fetch-graph-client.d.ts.map +1 -1
- package/dist/graph/fetch-graph-client.js +87 -17
- package/dist/graph/fetch-graph-client.js.map +1 -1
- package/dist/graph/fetch-graph-runtime.d.ts +9 -4
- package/dist/graph/fetch-graph-runtime.d.ts.map +1 -1
- package/dist/graph/fetch-graph-runtime.js +83 -6
- package/dist/graph/fetch-graph-runtime.js.map +1 -1
- package/dist/graph/fetch-runtime-transport.d.ts +4 -4
- package/dist/graph/fetch-runtime-transport.d.ts.map +1 -1
- package/dist/graph/fetch-runtime-transport.js +11 -14
- package/dist/graph/fetch-runtime-transport.js.map +1 -1
- package/dist/graph/graph-hooks.d.ts +3 -1
- package/dist/graph/graph-hooks.d.ts.map +1 -1
- package/dist/graph/graph-hooks.js +167 -40
- package/dist/graph/graph-hooks.js.map +1 -1
- package/dist/graph/index.d.ts +5 -0
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +5 -0
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/model-command-hooks.d.ts +2 -0
- package/dist/graph/model-command-hooks.d.ts.map +1 -0
- package/dist/graph/model-command-hooks.js +9 -0
- package/dist/graph/model-command-hooks.js.map +1 -0
- package/dist/graph/operation-hooks.d.ts +4 -2
- package/dist/graph/operation-hooks.d.ts.map +1 -1
- package/dist/graph/operation-hooks.js +95 -11
- package/dist/graph/operation-hooks.js.map +1 -1
- package/dist/graph/operation-types.d.ts +5 -1
- package/dist/graph/operation-types.d.ts.map +1 -1
- package/dist/graph/operation-types.js.map +1 -1
- package/dist/graph/runtime-graph-client.d.ts +13 -0
- package/dist/graph/runtime-graph-client.d.ts.map +1 -0
- package/dist/graph/runtime-graph-client.js +35 -0
- package/dist/graph/runtime-graph-client.js.map +1 -0
- package/dist/graph/semantic-invalidation.d.ts +27 -0
- package/dist/graph/semantic-invalidation.d.ts.map +1 -0
- package/dist/graph/semantic-invalidation.js +55 -0
- package/dist/graph/semantic-invalidation.js.map +1 -0
- package/dist/graph/websocket-runtime-transport.d.ts +32 -0
- package/dist/graph/websocket-runtime-transport.d.ts.map +1 -0
- package/dist/graph/websocket-runtime-transport.js +605 -0
- package/dist/graph/websocket-runtime-transport.js.map +1 -0
- package/package.json +4 -4
|
@@ -1,15 +1,69 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { 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 {
|
|
5
|
-
import {
|
|
4
|
+
import { wasRuntimeProtocolExecutionObserved } from '@ontahi/core/runtime/protocol';
|
|
5
|
+
import { experimental_streamedQuery, useMutation, useQuery, useQueryClient, } from '@tanstack/react-query';
|
|
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,20 +86,66 @@ 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();
|
|
104
|
+
const clientCache = useGraphClientCache();
|
|
38
105
|
const expression = isGraphReadExpression(read) ? read : undefined;
|
|
39
106
|
const source = (expression?.read ?? read);
|
|
40
107
|
const mode = options?.mode ?? 'run';
|
|
41
108
|
const intent = expression?.intent ?? intentFromMode(mode);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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 ??
|
|
118
|
+
deriveGraphQueryKey(source, intent, options?.params, executionIdentityCacheKey(identity));
|
|
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 () => {
|
|
49
149
|
const value = intent === 'many'
|
|
50
150
|
? await graphExecutor.run(resolved, params, options?.runtimeOptions)
|
|
51
151
|
: intent === 'count'
|
|
@@ -53,44 +153,71 @@ export function useGraphQuery(read, options) {
|
|
|
53
153
|
: intent === 'exists'
|
|
54
154
|
? (await graphExecutor.get(resolved, params, options?.runtimeOptions)) != null
|
|
55
155
|
: await graphExecutor.get(resolved, params, options?.runtimeOptions);
|
|
156
|
+
writeOutput(value);
|
|
56
157
|
return value;
|
|
57
|
-
}
|
|
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,
|
|
58
167
|
});
|
|
59
168
|
}
|
|
60
169
|
export function useGraphCommand(buildCommand, options) {
|
|
61
170
|
const graphExecutor = useGraphExecutor();
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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);
|
|
74
195
|
}
|
|
75
196
|
export function useManyToManyRelationshipCommand(buildCommand, options) {
|
|
76
197
|
const graphExecutor = useGraphExecutor();
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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);
|
|
208
|
+
}
|
|
209
|
+
export function useOrderedRelationshipCommand(buildCommand, options) {
|
|
210
|
+
const graphExecutor = useGraphExecutor();
|
|
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);
|
|
94
221
|
}
|
|
95
222
|
export function useGraphOperation(operation, options) {
|
|
96
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 isGraphReadExpression,\n normalizeGraphSchemaClientInput,\n resolveQuerySpec,\n toGraphReadRequest,\n type GraphCommandSpec,\n type GraphReadIntent,\n type ManyToManyRelationshipCommand,\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, 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 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\n return useQuery({\n ...options,\n queryKey:\n options?.queryKey ??\n deriveGraphQueryKey(source, intent, options?.params, executionIdentityCacheKey(identity)),\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 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 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"]}
|
package/dist/graph/index.d.ts
CHANGED
|
@@ -1,12 +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';
|
|
14
|
+
export * from './runtime-graph-client.js';
|
|
15
|
+
export * from './semantic-invalidation.js';
|
|
16
|
+
export * from './websocket-runtime-transport.js';
|
|
12
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"}
|
|
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"}
|
package/dist/graph/index.js
CHANGED
|
@@ -1,13 +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';
|
|
15
|
+
export * from './runtime-graph-client.js';
|
|
16
|
+
export * from './semantic-invalidation.js';
|
|
17
|
+
export * from './websocket-runtime-transport.js';
|
|
13
18
|
//# sourceMappingURL=index.js.map
|
package/dist/graph/index.js.map
CHANGED
|
@@ -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","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';\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 @@
|
|
|
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,12 +1,14 @@
|
|
|
1
1
|
import type { DomainOperationInvocation as OperationInvocation } from '@ontahi/core/data-graph';
|
|
2
2
|
import { type InfiniteData, type QueryKey, type UseQueryResult } from '@tanstack/react-query';
|
|
3
3
|
import type { GraphPermission } from '../actions/index.js';
|
|
4
|
-
import type { ClientOperationLike, ClientOperationInvocation, ClientSchemaOperationLike, BoundOperationHookResult, DurableOperationHookOptions, DurableOperationHookResult, DurableOperationLike, OperationHookOptions, OperationHookResult, OperationInputHookResult, OperationInfiniteQueryOptions, OperationQueryOptions, OperationRunner, ReflectedOperationLike } from './operation-types.js';
|
|
5
|
-
export declare
|
|
4
|
+
import type { ClientOperationLike, ClientOperationInvocation, ClientSchemaOperationLike, BoundOperationHookResult, DurableOperationHookOptions, DurableOperationHookResult, DurableOperationLike, DurableSchemaOperationLike, OperationHookOptions, OperationHookResult, OperationInputHookResult, OperationInfiniteQueryOptions, OperationQueryOptions, OperationRunner, ReflectedOperationLike } from './operation-types.js';
|
|
5
|
+
export declare function getOperationQueryKey<TInput, TData>(operation: ClientSchemaOperationLike<TInput, TData>, input: TInput): QueryKey;
|
|
6
|
+
export declare function getOperationQueryKey<TInput, TData>(operation: ClientOperationLike<TInput, TData>, input: TInput): QueryKey;
|
|
6
7
|
export declare function useOperation<TInput, TData>(invocation: ClientOperationInvocation<TInput, TData>, options?: OperationHookOptions<TInput, TData>): BoundOperationHookResult<TInput, TData>;
|
|
7
8
|
export declare function useOperation<TInput, TData>(operation: ClientSchemaOperationLike<TInput, TData>, initialInput: TInput, options?: OperationHookOptions<TInput, TData>): OperationInputHookResult<TInput, TData>;
|
|
8
9
|
export declare function useOperation<TInput, TData>(operation: ClientSchemaOperationLike<TInput, TData>, options?: OperationHookOptions<TInput, TData>): OperationHookResult<TInput, TData>;
|
|
9
10
|
export declare function useOperation<TInput, TData>(operation: ClientOperationLike<TInput, TData>, options?: OperationHookOptions<TInput, TData>): OperationHookResult<TInput, TData>;
|
|
11
|
+
export declare function useDurableOperation<TInput, TResult = unknown>(operation: DurableSchemaOperationLike<TInput, TResult>, options?: DurableOperationHookOptions<TInput>): DurableOperationHookResult<TInput, TResult>;
|
|
10
12
|
export declare function useDurableOperation<TInput, TResult = unknown>(operation: DurableOperationLike<TInput, TResult>, options?: DurableOperationHookOptions<TInput>): DurableOperationHookResult<TInput, TResult>;
|
|
11
13
|
export declare function useOperationQuery<TData>(operation: ClientOperationLike<void, TData>, options?: OperationQueryOptions<TData>): UseQueryResult<TData, Error>;
|
|
12
14
|
export declare function useOperationQuery<TInput, TData>(operation: ClientSchemaOperationLike<TInput, TData>, input: TInput, options?: OperationQueryOptions<TData>): UseQueryResult<TData, Error>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-hooks.d.ts","sourceRoot":"","sources":["../../src/graph/operation-hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,yBAAyB,IAAI,mBAAmB,EAIjD,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"operation-hooks.d.ts","sourceRoot":"","sources":["../../src/graph/operation-hooks.ts"],"names":[],"mappings":"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"}
|