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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +154 -5
  2. package/dist/actions/fetch-operation-bridge-adapter.d.ts +10 -3
  3. package/dist/actions/fetch-operation-bridge-adapter.d.ts.map +1 -1
  4. package/dist/actions/fetch-operation-bridge-adapter.js +92 -29
  5. package/dist/actions/fetch-operation-bridge-adapter.js.map +1 -1
  6. package/dist/actions/operation-bridge.d.ts +2 -0
  7. package/dist/actions/operation-bridge.d.ts.map +1 -1
  8. package/dist/actions/operation-bridge.js.map +1 -1
  9. package/dist/graph/canonical-request-invalidation.d.ts +14 -0
  10. package/dist/graph/canonical-request-invalidation.d.ts.map +1 -0
  11. package/dist/graph/canonical-request-invalidation.js +42 -0
  12. package/dist/graph/canonical-request-invalidation.js.map +1 -0
  13. package/dist/graph/context.d.ts +10 -3
  14. package/dist/graph/context.d.ts.map +1 -1
  15. package/dist/graph/context.js +39 -4
  16. package/dist/graph/context.js.map +1 -1
  17. package/dist/graph/executor.d.ts +19 -1
  18. package/dist/graph/executor.d.ts.map +1 -1
  19. package/dist/graph/executor.js.map +1 -1
  20. package/dist/graph/fetch-graph-client.d.ts +20 -4
  21. package/dist/graph/fetch-graph-client.d.ts.map +1 -1
  22. package/dist/graph/fetch-graph-client.js +87 -17
  23. package/dist/graph/fetch-graph-client.js.map +1 -1
  24. package/dist/graph/fetch-graph-runtime.d.ts +9 -4
  25. package/dist/graph/fetch-graph-runtime.d.ts.map +1 -1
  26. package/dist/graph/fetch-graph-runtime.js +83 -6
  27. package/dist/graph/fetch-graph-runtime.js.map +1 -1
  28. package/dist/graph/fetch-runtime-transport.d.ts +4 -4
  29. package/dist/graph/fetch-runtime-transport.d.ts.map +1 -1
  30. package/dist/graph/fetch-runtime-transport.js +11 -14
  31. package/dist/graph/fetch-runtime-transport.js.map +1 -1
  32. package/dist/graph/graph-hooks.d.ts +3 -1
  33. package/dist/graph/graph-hooks.d.ts.map +1 -1
  34. package/dist/graph/graph-hooks.js +167 -40
  35. package/dist/graph/graph-hooks.js.map +1 -1
  36. package/dist/graph/index.d.ts +5 -0
  37. package/dist/graph/index.d.ts.map +1 -1
  38. package/dist/graph/index.js +5 -0
  39. package/dist/graph/index.js.map +1 -1
  40. package/dist/graph/model-command-hooks.d.ts +2 -0
  41. package/dist/graph/model-command-hooks.d.ts.map +1 -0
  42. package/dist/graph/model-command-hooks.js +9 -0
  43. package/dist/graph/model-command-hooks.js.map +1 -0
  44. package/dist/graph/operation-hooks.d.ts +4 -2
  45. package/dist/graph/operation-hooks.d.ts.map +1 -1
  46. package/dist/graph/operation-hooks.js +95 -11
  47. package/dist/graph/operation-hooks.js.map +1 -1
  48. package/dist/graph/operation-types.d.ts +5 -1
  49. package/dist/graph/operation-types.d.ts.map +1 -1
  50. package/dist/graph/operation-types.js.map +1 -1
  51. package/dist/graph/runtime-graph-client.d.ts +13 -0
  52. package/dist/graph/runtime-graph-client.d.ts.map +1 -0
  53. package/dist/graph/runtime-graph-client.js +35 -0
  54. package/dist/graph/runtime-graph-client.js.map +1 -0
  55. package/dist/graph/semantic-invalidation.d.ts +27 -0
  56. package/dist/graph/semantic-invalidation.d.ts.map +1 -0
  57. package/dist/graph/semantic-invalidation.js +55 -0
  58. package/dist/graph/semantic-invalidation.js.map +1 -0
  59. package/dist/graph/websocket-runtime-transport.d.ts +32 -0
  60. package/dist/graph/websocket-runtime-transport.d.ts.map +1 -0
  61. package/dist/graph/websocket-runtime-transport.js +605 -0
  62. package/dist/graph/websocket-runtime-transport.js.map +1 -0
  63. package/package.json +4 -4
@@ -1,12 +1,14 @@
1
1
  'use client';
2
2
  import { normalizeGraphSchemaClientInput } from '@ontahi/core/data-graph';
3
3
  import { operationInputInvalid } from '@ontahi/core/runtime/contracts';
4
+ import { createRuntimeProtocolExecutionExchange, isDurableOperationProtocolError, parseDurableOperationProtocolResponse, toDurableOperationProtocolRequest, wasRuntimeProtocolExecutionObserved, } from '@ontahi/core/runtime/protocol';
4
5
  import { hasOwn, isRecord } from '@ontahi/core/value/object';
5
6
  import { useInfiniteQuery, useQuery, useQueryClient, } from '@tanstack/react-query';
6
7
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
8
  import { operationBridgeErrored, resolveOperationBridgeInvalidationQueryKeys, resolveOperationBridgeQueryKey, toOperationInvocationResult, unwrapOperationInvocationValue, useAction, } from '../actions/index.js';
8
9
  import { useDefaultOperationBridgeAdapter, useGraphClientCache, useGraphClientCacheVersion, useReflectedOperationInvoker, useRuntimeTransportCapability, } from './context.js';
9
10
  import { getOperationClientCacheKey, invalidateOperationCacheRefs, invalidateReactQueryCachesContainingRefs, readInitialOperationCacheValueFromCache, reconcileOperationOutput, } from './operation-cache.js';
11
+ import { invalidateSemanticGraphReads } from './semantic-invalidation.js';
10
12
  const operationHookOptionKeys = new Set([
11
13
  'onExecute',
12
14
  'onSuccess',
@@ -37,7 +39,9 @@ const looksLikeOperationOptions = (operation, value) => {
37
39
  return keys.some(key => operationHookOptionKeys.has(key));
38
40
  };
39
41
  const issuePath = (path) => Array.isArray(path) ? path.map(String).join('.') : path;
40
- export const getOperationQueryKey = (operation, input) => resolveOperationBridgeQueryKey(operation, input);
42
+ export function getOperationQueryKey(operation, input) {
43
+ return resolveOperationBridgeQueryKey(operation, input);
44
+ }
41
45
  const getOperationCacheAwareQueryKey = (clientCache, operation, input) => getOperationClientCacheKey(clientCache, operation, input, getOperationQueryKey(operation, input));
42
46
  export function useOperation(operationOrInvocation, initialInputOrOptions, managedOptions) {
43
47
  const invocation = isOperationInvocation(operationOrInvocation)
@@ -55,6 +59,7 @@ export function useOperation(operationOrInvocation, initialInputOrOptions, manag
55
59
  const adapter = useDefaultOperationBridgeAdapter();
56
60
  const clientCache = useGraphClientCache();
57
61
  const queryClient = useQueryClient();
62
+ const runtimeTransport = useRuntimeTransportCapability();
58
63
  const action = adapter.useBridgeAction(operation);
59
64
  const transport = useAction(action);
60
65
  const executeTransportAsync = transport.executeAsync;
@@ -75,8 +80,10 @@ export function useOperation(operationOrInvocation, initialInputOrOptions, manag
75
80
  setLastInput(input);
76
81
  await currentOptions?.onExecute?.({ input });
77
82
  let invocation;
83
+ let actionResult;
78
84
  try {
79
- invocation = toOperationInvocationResult(await executeTransportAsync(transportInput));
85
+ actionResult = await executeTransportAsync(transportInput);
86
+ invocation = toOperationInvocationResult(actionResult);
80
87
  }
81
88
  catch (error) {
82
89
  invocation = operationBridgeErrored(error instanceof Error ? error.message : 'Graph operation bridge failed.');
@@ -97,10 +104,40 @@ export function useOperation(operationOrInvocation, initialInputOrOptions, manag
97
104
  result: invocation,
98
105
  });
99
106
  if (currentOptions?.invalidateOnSuccess ?? true) {
100
- await Promise.all([
101
- invalidateReactQueryCachesContainingRefs(queryClient, affectedCacheRefs),
102
- ...resolveOperationBridgeInvalidationQueryKeys(operation, transportInput).map(queryKey => queryClient.invalidateQueries({ queryKey })),
103
- ]);
107
+ const executionMetadata = actionResult?.executionMetadata;
108
+ const committed = executionMetadata?.committedMutations;
109
+ if (committed && executionMetadata) {
110
+ const mutationCommitId = executionMetadata.mutationCommitId;
111
+ await Promise.all([
112
+ ...(wasRuntimeProtocolExecutionObserved(executionMetadata)
113
+ ? []
114
+ : [
115
+ invalidateSemanticGraphReads(queryClient, committed, {
116
+ ...(mutationCommitId
117
+ ? {
118
+ causedBy: {
119
+ kind: 'committed-mutations',
120
+ commitIds: [mutationCommitId],
121
+ overflow: false,
122
+ },
123
+ }
124
+ : {}),
125
+ ...(runtimeTransport?.causality
126
+ ? {
127
+ associateRefreshes: runtimeTransport.causality.associateGraphReadRefreshes,
128
+ }
129
+ : {}),
130
+ }),
131
+ ]),
132
+ invalidateReactQueryCachesContainingRefs(queryClient, affectedCacheRefs),
133
+ ]);
134
+ }
135
+ else {
136
+ await Promise.all([
137
+ invalidateReactQueryCachesContainingRefs(queryClient, affectedCacheRefs),
138
+ ...resolveOperationBridgeInvalidationQueryKeys(operation, transportInput).map(queryKey => queryClient.invalidateQueries({ queryKey })),
139
+ ]);
140
+ }
104
141
  }
105
142
  }
106
143
  else {
@@ -116,7 +153,7 @@ export function useOperation(operationOrInvocation, initialInputOrOptions, manag
116
153
  result: invocation,
117
154
  });
118
155
  return invocation;
119
- }, [clientCache, executeTransportAsync, operation, queryClient]);
156
+ }, [clientCache, executeTransportAsync, operation, queryClient, runtimeTransport]);
120
157
  const executeAsync = useCallback((...args) => executeInputAsync(args[0]), [executeInputAsync]);
121
158
  const execute = useCallback((...args) => {
122
159
  void executeAsync(...args);
@@ -279,9 +316,55 @@ export function useDurableOperation(operation, options) {
279
316
  const invalidationInput = operation.input
280
317
  ? normalizeGraphSchemaClientInput(operation.input, mutation.input)
281
318
  : mutation.input;
282
- void Promise.all(resolveOperationBridgeInvalidationQueryKeys(operation, invalidationInput).map(queryKey => queryClient.invalidateQueries({ queryKey })));
319
+ const invalidate = async () => {
320
+ if (runtimeTransport) {
321
+ try {
322
+ const execution = await createRuntimeProtocolExecutionExchange({
323
+ transport: runtimeTransport,
324
+ })({
325
+ family: 'durable.operation',
326
+ body: toDurableOperationProtocolRequest(snapshot),
327
+ });
328
+ const parsed = parseDurableOperationProtocolResponse(execution.body);
329
+ if (parsed.success &&
330
+ !isDurableOperationProtocolError(parsed.response) &&
331
+ execution.metadata?.committedMutations) {
332
+ if (!wasRuntimeProtocolExecutionObserved(execution.metadata))
333
+ await invalidateSemanticGraphReads(queryClient, execution.metadata.committedMutations, {
334
+ ...(execution.metadata.mutationCommitId
335
+ ? {
336
+ causedBy: {
337
+ kind: 'committed-mutations',
338
+ commitIds: [execution.metadata.mutationCommitId],
339
+ overflow: false,
340
+ },
341
+ }
342
+ : {}),
343
+ ...(runtimeTransport.causality
344
+ ? {
345
+ associateRefreshes: runtimeTransport.causality.associateGraphReadRefreshes,
346
+ }
347
+ : {}),
348
+ });
349
+ return;
350
+ }
351
+ }
352
+ catch {
353
+ // Fall through to the compatibility invalidation declared by the Operation.
354
+ }
355
+ }
356
+ await Promise.all(resolveOperationBridgeInvalidationQueryKeys(operation, invalidationInput).map(queryKey => queryClient.invalidateQueries({ queryKey })));
357
+ };
358
+ void invalidate();
283
359
  }
284
- }, [mutation.input, operation, options?.invalidateOnSuccess, queryClient, snapshot]);
360
+ }, [
361
+ mutation.input,
362
+ operation,
363
+ options?.invalidateOnSuccess,
364
+ queryClient,
365
+ runtimeTransport,
366
+ snapshot,
367
+ ]);
285
368
  const reset = useCallback(() => {
286
369
  mutation.reset();
287
370
  setObservation({ runKey: undefined, snapshot: undefined, active: false });
@@ -298,6 +381,7 @@ export function useDurableOperation(operation, options) {
298
381
  runError: snapshot?.error,
299
382
  isQueued: runStatus === 'queued',
300
383
  isRunning: runStatus === 'running',
384
+ isWaiting: runStatus === 'waiting',
301
385
  isCompleted: runStatus === 'completed',
302
386
  isFailed: runStatus === 'failed',
303
387
  isCancelled: runStatus === 'cancelled',
@@ -305,7 +389,7 @@ export function useDurableOperation(operation, options) {
305
389
  isExecuting: mutation.isExecuting ||
306
390
  (Boolean(observer) &&
307
391
  currentObservation?.active !== false &&
308
- (runStatus === 'queued' || runStatus === 'running')),
392
+ (runStatus === 'queued' || runStatus === 'running' || runStatus === 'waiting')),
309
393
  };
310
394
  }
311
395
  export function useOperationQuery(operation, inputOrOptions, providedOptions) {
@@ -334,7 +418,7 @@ export function useOperationQuery(operation, inputOrOptions, providedOptions) {
334
418
  initialDataUpdatedAt: initialDataUpdatedAt ?? initialCacheValue?.initialDataUpdatedAt,
335
419
  placeholderData: placeholderData,
336
420
  queryKey,
337
- queryFn: async () => clientCache.writeOutput(cacheKey, operation.graphOutput, unwrapOperationInvocationValue(toOperationInvocationResult(await action(input)))).value,
421
+ queryFn: async () => clientCache.writeOutput(cacheKey, operation.graphOutput, unwrapOperationInvocationValue(toOperationInvocationResult(await action(input))), { kind: 'operation', name: `${operation.entityName}.${operation.name}()` }).value,
338
422
  select: value => {
339
423
  void cacheVersion;
340
424
  return clientCache.denormalizeOutput(operation.graphOutput, value);
@@ -1 +1 @@
1
- {"version":3,"file":"operation-hooks.js","sourceRoot":"","sources":["../../src/graph/operation-hooks.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AASb,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,cAAc,GAKf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO1E,OAAO,EACL,sBAAsB,EACtB,2CAA2C,EAC3C,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,wCAAwC,EACxC,uCAAuC,EACvC,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAqB9B,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,WAAW;IACX,WAAW;IACX,SAAS;IACT,WAAW;IACX,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAkD,EAAE,CAC/F,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,6BAA6B,CAAC;AAE3F,MAAM,wBAAwB,GAAG,CAAC,KAAc,EAAuC,EAAE;IACvF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACrD,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACzF,CAAC,CAAC,KAAK,CAAC,MAAM;QACd,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAChC,SAA8E,EAC9E,KAAc,EACd,EAAE;IACF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,KAAK,SAAS,CAAC;IAEjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,WAAW,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAA6C,EAAE,EAAE,CAClE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,SAA6C,EAC7C,KAAa,EACH,EAAE,CAAC,8BAA8B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAEhE,MAAM,8BAA8B,GAAG,CACrC,WAA6B,EAC7B,SAA6C,EAC7C,KAAa,EACH,EAAE,CACZ,0BAA0B,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAmBpG,MAAM,UAAU,YAAY,CAC1B,qBAG4C,EAC5C,qBAAoE,EACpE,cAAoD;IAKpD,MAAM,UAAU,GAAG,qBAAqB,CAAC,qBAAqB,CAAC;QAC7D,CAAC,CAAE,qBAAkE;QACrE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,SAAS,IAAI,qBAAqB,CAErB,CAAC;IAC7C,MAAM,YAAY,GAChB,CAAC,UAAU;QACX,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACjG,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAE,qBAAgC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAE,qBAAyE;QAC5E,CAAC,CAAC,YAAY;YACZ,CAAC,CAAC,cAAc;YAChB,CAAC,CAAE,qBAAyE,CAAC;IACjF,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CACpC,SAAyE,CAClC,CAAC;IAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,qBAAqB,GAAG,SAAS,CAAC,YAAY,CAAC;IACrD,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAoC,CAAC;IACzE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IACrD,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,YAAY,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;QAC1C,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK;YACpC,CAAC,CAAE,+BAA+B,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAY;YACrE,CAAC,CAAC,KAAK,CAAC;QACV,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,IAAI,UAA4C,CAAC;QAEjD,IAAI,CAAC;YACH,UAAU,GAAG,2BAA2B,CAAC,MAAM,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAG,sBAAsB,CACjC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CACtC,CAAC;QACxC,CAAC;QAED,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;YAClB,IAAI,iBAAiB,GAAmB,EAAE,CAAC;YAE3C,IAAI,cAAc,EAAE,mBAAmB,IAAI,IAAI,EAAE,CAAC;gBAChD,iBAAiB,GAAG,4BAA4B,CAC9C,WAAW,EACX,SAAS,EACT,cAAc,EACd,UAAU,CAAC,KAAK,CACjB,CAAC;YACJ,CAAC;YAED,UAAU,GAAG;gBACX,GAAG,UAAU;gBACb,KAAK,EAAE,wBAAwB,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC;aAC1E,CAAC;YAEF,SAAS,CAAC,UAAU,CAAC,CAAC;YAEtB,MAAM,cAAc,EAAE,SAAS,EAAE,CAAC;gBAChC,KAAK;gBACL,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,mBAAmB,IAAI,IAAI,EAAE,CAAC;gBAChD,MAAM,OAAO,CAAC,GAAG,CAAC;oBAChB,wCAAwC,CAAC,WAAW,EAAE,iBAAiB,CAAC;oBACxE,GAAG,2CAA2C,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GAAG,CAC3E,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CACxD;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,UAAU,CAAC,CAAC;YAEtB,MAAM,cAAc,EAAE,OAAO,EAAE,CAAC;gBAC9B,KAAK;gBACL,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,cAAc,EAAE,SAAS,EAAE,CAAC;YAChC,KAAK;YACL,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC,EACD,CAAC,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,CAAC,CAC7D,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,GAAG,IAAgC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,EAC7E,CAAC,iBAAiB,CAAC,CACpB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,GAAG,IAAgC,EAAE,EAAE;QACtC,KAAK,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IACF,MAAM,iBAAiB,GAAG,WAAW,CACnC,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAe,CAAC,EACpD,CAAC,iBAAiB,EAAE,UAAU,EAAE,KAAK,CAAC,CACvC,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,KAAK,iBAAiB,EAAE,CAAC;IAC3B,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,cAAc,EAAE,CAAC;QACjB,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,YAAY;YAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAEnC,MAAM,WAAW,GACf,SAAS,CAAC,KAAK,IAAI,OAAQ,SAAS,CAAC,KAAiC,CAAC,SAAS,KAAK,UAAU;QAC7F,CAAC,CAAE,SAAS,CAAC,KAAuD;QACpE,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAC9E,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CACnC,CAAC;IAEF,MAAM,eAAe,GAAiD,WAAW,CAAC,IAAI,CAAC,EAAE;QACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAE,IAAoC,CAAC,OAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAC7F,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAiD,WAAW,CAC/E,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACf,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YAED,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAY,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,iBAAiB,GAA8C,WAAW,CAAC,IAAI,CAAC,EAAE;QACtF,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,OAAO,CAA+C,GAAG,EAAE;QACjF,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAEnD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3D,OAAO;YACL,KAAK,EAAE,KAAe;YACtB,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,iBAAiB;YACxB,UAAU;YACV,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,EAAE;gBACZ,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3F,MAAM,mBAAmB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACjD,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,4CAA4C,EAClE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5E,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;YAE1C,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,SAAS,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7F,MAAM,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/E,OAAO,OAA2C,CAAC;QACrD,CAAC;QAED,OAAO,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3C,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,KAAK,mBAAmB,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC;IACzE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;IACnE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,MAAM,KAAK,SAAS,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC,WAAW;YACrB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,cAAc,CAAC;IAEvB,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;QAC5E,YAAY,EAAE,UAAU;YACtB,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,YAAY;gBACZ,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,YAAY;QAClB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QACjF,MAAM;QACN,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAC5C,KAAK;QACL,MAAM;QACN,MAAM;QACN,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,YAAY;QACZ,UAAU;KACX,CAAC;IAEF,OAAO,CACL,UAAU;QACR,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,YAAY;YACZ,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,eAAmD,EAAE,SAAS,EAAE;YAC1F,CAAC,CAAC,UAAU,CAIyB,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAgD,EAChD,OAA6C;IAE7C,MAAM,gBAAgB,GAAG,6BAA6B,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,gBAAgB,CAAC;IACpD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,YAAY,CAC3B,SAAoD,EACpD,EAAE,GAAG,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAC3C,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAI3C,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,QAAQ,GAAG,kBAAkB,EAAE,QAAQ,CAAC;IAC9C,MAAM,iBAAiB,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE5C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9D,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,CAC/C,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAC9C,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAC9B,EAAE,CAAC;oBACF,IAAI,CAAC,MAAM;wBAAE,OAAO;oBACpB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;oBACzC,cAAc,CAAC,OAAO,CAAC,EAAE,CACvB,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CACpE,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,cAAc,CAAC,OAAO,CAAC,EAAE,CACvB,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CACpE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,KAAK,CAAC;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,IACE,CAAC,QAAQ;YACT,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW;gBAC9B,QAAQ,CAAC,MAAM,KAAK,QAAQ;gBAC5B,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAClC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzE,IAAI,iBAAiB,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO;QACjD,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC;QAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,OAAO,EAAE,mBAAmB,IAAI,IAAI,CAAC,EAAE,CAAC;YAC9E,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK;gBACvC,CAAC,CAAE,+BAA+B,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAY;gBAC9E,CAAC,CAAE,QAAQ,CAAC,KAAgB,CAAC;YAC/B,KAAK,OAAO,CAAC,GAAG,CACd,2CAA2C,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CACvF,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAC5C,CACF,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAErF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;IACxC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACf,MAAM,SAAS,GAAG,QAAQ,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,CAAC;IAErD,OAAO;QACL,GAAG,QAAQ;QACX,KAAK;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,QAAQ;QACR,QAAQ,EAAE,QAAQ,EAAE,QAAQ;QAC5B,UAAU,EAAE,QAAQ,EAAE,MAAM;QAC5B,QAAQ,EAAE,QAAQ,EAAE,KAAK;QACzB,QAAQ,EAAE,SAAS,KAAK,QAAQ;QAChC,SAAS,EAAE,SAAS,KAAK,SAAS;QAClC,WAAW,EAAE,SAAS,KAAK,WAAW;QACtC,QAAQ,EAAE,SAAS,KAAK,QAAQ;QAChC,WAAW,EAAE,SAAS,KAAK,WAAW;QACtC,eAAe,EAAE,kBAAkB,EAAE,MAAM,IAAI,KAAK;QACpD,WAAW,EACT,QAAQ,CAAC,WAAW;YACpB,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChB,kBAAkB,EAAE,MAAM,KAAK,KAAK;gBACpC,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC;AAgBD,MAAM,UAAU,iBAAiB,CAC/B,SAAwF,EACxF,cAAsD,EACtD,eAA8C;IAE9C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC;IACzD,MAAM,KAAK,GAAG,CACZ,QAAQ;QACN,CAAC,CAAC,SAAS,CAAC,KAAK;YACf,CAAC,CAAC,+BAA+B,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC;YAClE,CAAC,CAAC,cAAc;QAClB,CAAC,CAAC,SAAS,CACJ,CAAC;IACZ,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAE/C,CAAC;IACd,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CACpC,SAAyE,CAClC,CAAC;IAC1C,MAAM,EACJ,WAAW,EAAE,mBAAmB,EAChC,oBAAoB,EACpB,eAAe,EACf,GAAG,YAAY,EAChB,GAAG,OAAO,IAAI,EAAE,CAAC;IAClB,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,IAAI,OAAO,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,8BAA8B,CAC7C,WAAW,EACX,SAA+C,EAC/C,KAAK,CACN,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC1B,MAAM,iBAAiB,GAAG,sBAAsB;QAC9C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,uCAAuC,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC;IAE5F,OAAO,QAAQ,CAAC;QACd,GAAG,YAAY;QACf,WAAW;QACX,oBAAoB,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,oBAAoB;QACrF,eAAe,EAAE,eAKG;QACpB,QAAQ;QACR,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,WAAW,CAAC,WAAW,CACrB,QAAQ,EACR,SAAS,CAAC,WAAW,EACrB,8BAA8B,CAAC,2BAA2B,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACjF,CAAC,KAAK;QACT,MAAM,EAAE,KAAK,CAAC,EAAE;YACd,KAAK,YAAY,CAAC;YAClB,OAAO,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAU,CAAC;QAC9E,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,SAA6C,EAC7C,KAAa,EACb,OAAiE;IAEjE,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CACpC,SAAyE,CAClC,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAC1F,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAU,EACxF,CAAC,WAAW,EAAE,SAAS,CAAC,CACzB,CAAC;IAEF,OAAO,gBAAgB,CAAwE;QAC7F,GAAG,YAAY;QACf,QAAQ,EAAE,8BAA8B,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;QACvE,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAC/B,WAAW,CAAC,eAAe,CACzB,SAAS,CAAC,WAAW,EACrB,8BAA8B,CAC5B,2BAA2B,CACzB,MAAM,MAAM,CACV,YAAY,CAAC;YACX,KAAK;YACL,SAAS,EAAE,SAAuB;SACnC,CAAC,CACH,CACF,CACF,CACF,CAAC,KAAK;QACT,gBAAgB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,CACrE,gBAAgB,CACd,eAAe,CAAC,QAAQ,CAAC,EACzB,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAC7B,aAAa,EACb,aAAa,CACd;QACH,oBAAoB,EAAE,oBAAoB;YACxC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,CACrD,oBAAoB,CAClB,eAAe,CAAC,SAAS,CAAC,EAC1B,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAC7B,cAAc,EACd,aAAa,CACd;YACL,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,IAAI,CAAC,EAAE;YACb,KAAK,YAAY,CAAC;YAElB,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;aACvC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,UAA8C,EAC9C,OAGC;IAED,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;IAEnD,OAAO,OAAO,CAAC,aAAa,CAC1B,UAAU,CAAC,SAA+C,EAC1D,UAAU,CAAC,KAAK,EAChB,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,SAA6C;IAE7C,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CACpC,SAAyE,CAClC,CAAC;IAE1C,OAAO,WAAW,CAChB,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,OAAO;gBACL,GAAG,MAAM;gBACT,KAAK,EAAE,wBAAwB,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;aACtE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,SAAgD;IAEhD,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAC;IAE/C,OAAO,WAAW,CAChB,CAAC,KAAa,EAAE,EAAE,CAChB,OAAO,CAAC,eAAe,CAAgB;QACrC,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,SAAS;QACT,KAAK;KACN,CAAC,EACJ,CAAC,OAAO,EAAE,SAAS,CAAC,CACrB,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport type {\n AnyEntityRef,\n DomainOperationInvocation as OperationInvocation,\n GraphSchemaLike,\n GraphSchemaParseResult,\n OperationInputSchema,\n} from '@ontahi/core/data-graph';\nimport { normalizeGraphSchemaClientInput } from '@ontahi/core/data-graph';\nimport { operationInputInvalid } from '@ontahi/core/runtime/contracts';\nimport type { TaskRunRef, TaskSnapshot } from '@ontahi/core/runtime/contracts';\nimport { hasOwn, isRecord } from '@ontahi/core/value/object';\nimport {\n useInfiniteQuery,\n useQuery,\n useQueryClient,\n type InfiniteData,\n type QueryKey,\n type UseQueryOptions,\n type UseQueryResult,\n} from '@tanstack/react-query';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n GraphPermission,\n OperationBridgeAction,\n OperationInvocationResult,\n} from '../actions/index.js';\nimport {\n operationBridgeErrored,\n resolveOperationBridgeInvalidationQueryKeys,\n resolveOperationBridgeQueryKey,\n toOperationInvocationResult,\n unwrapOperationInvocationValue,\n useAction,\n} from '../actions/index.js';\n\nimport {\n useDefaultOperationBridgeAdapter,\n useGraphClientCache,\n useGraphClientCacheVersion,\n useReflectedOperationInvoker,\n useRuntimeTransportCapability,\n} from './context.js';\nimport {\n getOperationClientCacheKey,\n invalidateOperationCacheRefs,\n invalidateReactQueryCachesContainingRefs,\n readInitialOperationCacheValueFromCache,\n reconcileOperationOutput,\n} from './operation-cache.js';\nimport type {\n ClientOperationLike,\n ClientOperationInvocation,\n ClientSchemaOperationLike,\n BoundOperationHookResult,\n DurableOperationHookOptions,\n DurableOperationHookResult,\n DurableOperationLike,\n GraphClientCache,\n OperationHookOptions,\n OperationHookResult,\n OperationInputController,\n OperationInputHookResult,\n OperationInfiniteQueryOptions,\n OperationInputArgs,\n OperationQueryOptions,\n OperationRunner,\n ReflectedOperationLike,\n} from './operation-types.js';\n\nconst operationHookOptionKeys = new Set([\n 'onExecute',\n 'onSuccess',\n 'onError',\n 'onSettled',\n 'invalidateOnSuccess',\n]);\n\nconst isOperationInvocation = (value: unknown): value is OperationInvocation<unknown, unknown> =>\n isRecord(value) && hasOwn(value, 'kind') && value.kind === 'domain-operation-invocation';\n\nconst readOperationInputFields = (input: unknown): Record<string, unknown> | undefined => {\n if (!isRecord(input)) return undefined;\n\n if (input.kind === 'schema.named' && 'item' in input) {\n return readOperationInputFields(input.item);\n }\n\n return (input.kind === 'schema.object' || input.kind === 'value') && isRecord(input.fields)\n ? input.fields\n : undefined;\n};\n\nconst looksLikeOperationOptions = (\n operation: ClientSchemaOperationLike<any, any> | ClientOperationLike<any, any>,\n value: unknown,\n) => {\n if (!isRecord(value)) return value === undefined;\n\n const keys = Object.keys(value);\n if (keys.length === 0) return false;\n\n const inputFields = readOperationInputFields(operation.input);\n if (inputFields && keys.some(key => hasOwn(inputFields, key))) return false;\n\n return keys.some(key => operationHookOptionKeys.has(key));\n};\n\nconst issuePath = (path: string | ReadonlyArray<string | number>) =>\n Array.isArray(path) ? path.map(String).join('.') : path;\n\nexport const getOperationQueryKey = <TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n): QueryKey => resolveOperationBridgeQueryKey(operation, input);\n\nconst getOperationCacheAwareQueryKey = <TInput, TData>(\n clientCache: GraphClientCache,\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n): QueryKey =>\n getOperationClientCacheKey(clientCache, operation, input, getOperationQueryKey(operation, input));\n\nexport function useOperation<TInput, TData>(\n invocation: ClientOperationInvocation<TInput, TData>,\n options?: OperationHookOptions<TInput, TData>,\n): BoundOperationHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n initialInput: TInput,\n options?: OperationHookOptions<TInput, TData>,\n): OperationInputHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n options?: OperationHookOptions<TInput, TData>,\n): OperationHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n options?: OperationHookOptions<TInput, TData>,\n): OperationHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operationOrInvocation:\n | ClientOperationInvocation<TInput, TData>\n | ClientOperationLike<TInput, TData>\n | ClientSchemaOperationLike<TInput, TData>,\n initialInputOrOptions?: TInput | OperationHookOptions<TInput, TData>,\n managedOptions?: OperationHookOptions<TInput, TData>,\n):\n | BoundOperationHookResult<TInput, TData>\n | OperationHookResult<TInput, TData>\n | OperationInputHookResult<TInput, TData> {\n const invocation = isOperationInvocation(operationOrInvocation)\n ? (operationOrInvocation as ClientOperationInvocation<TInput, TData>)\n : undefined;\n const operation = (invocation?.operation ?? operationOrInvocation) as\n | ClientOperationLike<TInput, TData>\n | ClientSchemaOperationLike<TInput, TData>;\n const managesInput =\n !invocation &&\n (managedOptions !== undefined || !looksLikeOperationOptions(operation, initialInputOrOptions));\n const initialInput = managesInput ? (initialInputOrOptions as TInput) : undefined;\n const options = invocation\n ? (initialInputOrOptions as OperationHookOptions<TInput, TData> | undefined)\n : managesInput\n ? managedOptions\n : (initialInputOrOptions as OperationHookOptions<TInput, TData> | undefined);\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const queryClient = useQueryClient();\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n const transport = useAction(action);\n const executeTransportAsync = transport.executeAsync;\n const resetTransport = transport.reset;\n const optionsRef = useRef(options);\n const [result, setResult] = useState<OperationInvocationResult<TData>>();\n const [lastInput, setLastInput] = useState<TInput>();\n const initialInputRef = useRef(initialInput);\n const [draft, setDraft] = useState<TInput | undefined>(initialInput);\n\n useEffect(() => {\n optionsRef.current = options;\n }, [options]);\n\n const executeInputAsync = useCallback(\n async (input: TInput) => {\n const currentOptions = optionsRef.current;\n const transportInput = operation.input\n ? (normalizeGraphSchemaClientInput(operation.input, input) as TInput)\n : input;\n setLastInput(input);\n\n await currentOptions?.onExecute?.({ input });\n\n let invocation: OperationInvocationResult<TData>;\n\n try {\n invocation = toOperationInvocationResult(await executeTransportAsync(transportInput));\n } catch (error) {\n invocation = operationBridgeErrored(\n error instanceof Error ? error.message : 'Graph operation bridge failed.',\n ) as OperationInvocationResult<TData>;\n }\n\n if (invocation.ok) {\n let affectedCacheRefs: AnyEntityRef[] = [];\n\n if (currentOptions?.invalidateOnSuccess ?? true) {\n affectedCacheRefs = invalidateOperationCacheRefs(\n clientCache,\n operation,\n transportInput,\n invocation.value,\n );\n }\n\n invocation = {\n ...invocation,\n value: reconcileOperationOutput(clientCache, operation, invocation.value),\n };\n\n setResult(invocation);\n\n await currentOptions?.onSuccess?.({\n input,\n value: invocation.value,\n result: invocation,\n });\n\n if (currentOptions?.invalidateOnSuccess ?? true) {\n await Promise.all([\n invalidateReactQueryCachesContainingRefs(queryClient, affectedCacheRefs),\n ...resolveOperationBridgeInvalidationQueryKeys(operation, transportInput).map(\n queryKey => queryClient.invalidateQueries({ queryKey }),\n ),\n ]);\n }\n } else {\n setResult(invocation);\n\n await currentOptions?.onError?.({\n input,\n error: invocation,\n result: invocation,\n });\n }\n\n await currentOptions?.onSettled?.({\n input,\n result: invocation,\n });\n\n return invocation;\n },\n [clientCache, executeTransportAsync, operation, queryClient],\n );\n\n const executeAsync = useCallback(\n (...args: OperationInputArgs<TInput>) => executeInputAsync(args[0] as TInput),\n [executeInputAsync],\n );\n\n const execute = useCallback(\n (...args: OperationInputArgs<TInput>) => {\n void executeAsync(...args);\n },\n [executeAsync],\n );\n const executeBoundAsync = useCallback(\n () => executeInputAsync(invocation?.input as TInput),\n [executeInputAsync, invocation?.input],\n );\n const executeBound = useCallback(() => {\n void executeBoundAsync();\n }, [executeBoundAsync]);\n\n const reset = useCallback(() => {\n resetTransport();\n setResult(undefined);\n setLastInput(undefined);\n if (managesInput) setDraft(initialInputRef.current);\n }, [managesInput, resetTransport]);\n\n const inputSchema =\n operation.input && typeof (operation.input as { safeParse?: unknown }).safeParse === 'function'\n ? (operation.input as OperationInputSchema<GraphSchemaLike, TInput>)\n : undefined;\n const validation = useMemo<GraphSchemaParseResult<TInput> | undefined>(\n () => (managesInput && inputSchema ? inputSchema.safeParse(draft) : undefined),\n [draft, inputSchema, managesInput],\n );\n\n const setManagedDraft: OperationInputController<TInput>['setDraft'] = useCallback(next => {\n setDraft(current =>\n typeof next === 'function' ? (next as (current: TInput) => TInput)(current as TInput) : next,\n );\n }, []);\n\n const setManagedField: OperationInputController<TInput>['setField'] = useCallback(\n (field, value) => {\n setDraft(current => {\n if (!isRecord(current)) {\n throw new Error('setField requires an object operation input.');\n }\n\n return { ...current, [field]: value } as TInput;\n });\n },\n [],\n );\n\n const resetManagedInput: OperationInputController<TInput>['reset'] = useCallback(next => {\n setDraft(next === undefined ? initialInputRef.current : next);\n }, []);\n\n const inputController = useMemo<OperationInputController<TInput> | undefined>(() => {\n if (!managesInput || !validation) return undefined;\n\n const issues = validation.success ? [] : validation.issues;\n return {\n draft: draft as TInput,\n setDraft: setManagedDraft,\n setField: setManagedField,\n reset: resetManagedInput,\n validation,\n issues,\n issue: path => {\n const expected = issuePath(path);\n return issues.find(issue => issuePath(issue.path) === expected);\n },\n isValid: validation.success,\n value: validation.success ? validation.data : undefined,\n };\n }, [draft, managesInput, resetManagedInput, setManagedDraft, setManagedField, validation]);\n\n const executeManagedAsync = useCallback(async () => {\n if (!validation?.success) {\n const issues = validation?.issues ?? [];\n const invalid = operationInputInvalid(\n issues[0]?.message ?? 'Input does not match the operation schema.',\n issues.map(issue => ({\n ...(issue.path.length > 0 ? { path: issue.path.map(String).join('.') } : {}),\n message: issue.message,\n code: issue.code,\n })),\n );\n const currentOptions = optionsRef.current;\n\n setLastInput(draft);\n setResult(invalid);\n await currentOptions?.onError?.({ input: draft as TInput, error: invalid, result: invalid });\n await currentOptions?.onSettled?.({ input: draft as TInput, result: invalid });\n\n return invalid as OperationInvocationResult<TData>;\n }\n\n return executeInputAsync(validation.data);\n }, [draft, executeInputAsync, validation]);\n\n const executeManaged = useCallback(() => {\n void executeManagedAsync();\n }, [executeManagedAsync]);\n\n const hasErrored = Boolean(result && !result.ok) || transport.hasErrored;\n const hasSucceeded = Boolean(result?.ok) && !transport.isExecuting;\n const isIdle = transport.isIdle && result === undefined;\n const status = isIdle\n ? 'idle'\n : transport.isExecuting\n ? 'executing'\n : hasErrored\n ? 'hasErrored'\n : 'hasSucceeded';\n\n const baseResult = {\n execute: invocation ? executeBound : managesInput ? executeManaged : execute,\n executeAsync: invocation\n ? executeBoundAsync\n : managesInput\n ? executeManagedAsync\n : executeAsync,\n input: invocation ? invocation.input : managesInput ? inputController : lastInput,\n result,\n value: result?.ok ? result.value : undefined,\n reset,\n status,\n isIdle,\n isExecuting: transport.isExecuting,\n isTransitioning: transport.isTransitioning,\n isPending: transport.isPending,\n hasSucceeded,\n hasErrored,\n };\n\n return (\n invocation\n ? baseResult\n : managesInput\n ? { ...baseResult, input: inputController as OperationInputController<TInput>, lastInput }\n : baseResult\n ) as\n | BoundOperationHookResult<TInput, TData>\n | OperationHookResult<TInput, TData>\n | OperationInputHookResult<TInput, TData>;\n}\n\nexport function useDurableOperation<TInput, TResult = unknown>(\n operation: DurableOperationLike<TInput, TResult>,\n options?: DurableOperationHookOptions<TInput>,\n): DurableOperationHookResult<TInput, TResult> {\n const runtimeTransport = useRuntimeTransportCapability();\n const observer = runtimeTransport?.durableOperation;\n const queryClient = useQueryClient();\n const mutation = useOperation<TInput, TaskRunRef>(\n operation as ClientOperationLike<TInput, TaskRunRef>,\n { ...options, invalidateOnSuccess: false },\n );\n const runRef = mutation.value;\n const runKey = runRef ? `${runRef.taskId}:${runRef.runId}` : undefined;\n const [observation, setObservation] = useState<{\n runKey: string | undefined;\n snapshot: TaskSnapshot<TResult> | undefined;\n active: boolean;\n }>({ runKey: undefined, snapshot: undefined, active: false });\n const currentObservation = observation.runKey === runKey ? observation : undefined;\n const snapshot = currentObservation?.snapshot;\n const invalidatedRunRef = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n if (!runRef || !runKey || !observer) return;\n\n const controller = new AbortController();\n let active = true;\n setObservation({ runKey, snapshot: undefined, active: true });\n\n void (async () => {\n try {\n for await (const nextSnapshot of observer.observe<TResult>(\n { taskId: runRef.taskId, runId: runRef.runId },\n { signal: controller.signal },\n )) {\n if (!active) return;\n setObservation({ runKey, snapshot: nextSnapshot, active: true });\n }\n } catch {\n if (!controller.signal.aborted && active) {\n setObservation(current =>\n current.runKey === runKey ? { ...current, active: false } : current,\n );\n }\n return;\n }\n\n if (active) {\n setObservation(current =>\n current.runKey === runKey ? { ...current, active: false } : current,\n );\n }\n })();\n\n return () => {\n active = false;\n controller.abort();\n };\n }, [observer, runKey, runRef]);\n\n useEffect(() => {\n if (\n !snapshot ||\n (snapshot.status !== 'completed' &&\n snapshot.status !== 'failed' &&\n snapshot.status !== 'cancelled')\n ) {\n return;\n }\n\n const runKey = `${snapshot.taskId}:${snapshot.runId}:${snapshot.status}`;\n if (invalidatedRunRef.current === runKey) return;\n invalidatedRunRef.current = runKey;\n\n if (snapshot.status === 'completed' && (options?.invalidateOnSuccess ?? true)) {\n const invalidationInput = operation.input\n ? (normalizeGraphSchemaClientInput(operation.input, mutation.input) as TInput)\n : (mutation.input as TInput);\n void Promise.all(\n resolveOperationBridgeInvalidationQueryKeys(operation, invalidationInput).map(queryKey =>\n queryClient.invalidateQueries({ queryKey }),\n ),\n );\n }\n }, [mutation.input, operation, options?.invalidateOnSuccess, queryClient, snapshot]);\n\n const reset = useCallback(() => {\n mutation.reset();\n setObservation({ runKey: undefined, snapshot: undefined, active: false });\n invalidatedRunRef.current = undefined;\n }, [mutation]);\n const runStatus = snapshot?.status ?? runRef?.status;\n\n return {\n ...mutation,\n reset,\n durable: operation.durable,\n snapshot,\n progress: snapshot?.progress,\n finalValue: snapshot?.result,\n runError: snapshot?.error,\n isQueued: runStatus === 'queued',\n isRunning: runStatus === 'running',\n isCompleted: runStatus === 'completed',\n isFailed: runStatus === 'failed',\n isCancelled: runStatus === 'cancelled',\n isRefreshingRun: currentObservation?.active ?? false,\n isExecuting:\n mutation.isExecuting ||\n (Boolean(observer) &&\n currentObservation?.active !== false &&\n (runStatus === 'queued' || runStatus === 'running')),\n };\n}\n\nexport function useOperationQuery<TData>(\n operation: ClientOperationLike<void, TData>,\n options?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error>;\nexport function useOperationQuery<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n input: TInput,\n options?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error>;\nexport function useOperationQuery<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n options?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error>;\nexport function useOperationQuery<TInput, TData>(\n operation: ClientOperationLike<TInput, TData> | ClientSchemaOperationLike<TInput, TData>,\n inputOrOptions?: TInput | OperationQueryOptions<TData>,\n providedOptions?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error> {\n const hasInput = operation.input?.kind !== 'schema.void';\n const input = (\n hasInput\n ? operation.input\n ? normalizeGraphSchemaClientInput(operation.input, inputOrOptions)\n : inputOrOptions\n : undefined\n ) as TInput;\n const options = (hasInput ? providedOptions : inputOrOptions) as\n | OperationQueryOptions<TData>\n | undefined;\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const cacheVersion = useGraphClientCacheVersion(clientCache);\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n const {\n initialData: providedInitialData,\n initialDataUpdatedAt,\n placeholderData,\n ...queryOptions\n } = options ?? {};\n const hasProvidedInitialData = Boolean(options && 'initialData' in options);\n const queryKey = getOperationCacheAwareQueryKey(\n clientCache,\n operation as ClientOperationLike<TInput, TData>,\n input,\n );\n const cacheKey = queryKey;\n const initialCacheValue = hasProvidedInitialData\n ? undefined\n : readInitialOperationCacheValueFromCache(clientCache, operation, input, cacheKey);\n const initialData = hasProvidedInitialData ? providedInitialData : initialCacheValue?.value;\n\n return useQuery({\n ...queryOptions,\n initialData,\n initialDataUpdatedAt: initialDataUpdatedAt ?? initialCacheValue?.initialDataUpdatedAt,\n placeholderData: placeholderData as UseQueryOptions<\n unknown,\n Error,\n TData,\n QueryKey\n >['placeholderData'],\n queryKey,\n queryFn: async () =>\n clientCache.writeOutput(\n cacheKey,\n operation.graphOutput,\n unwrapOperationInvocationValue(toOperationInvocationResult(await action(input))),\n ).value,\n select: value => {\n void cacheVersion;\n return clientCache.denormalizeOutput(operation.graphOutput, value) as TData;\n },\n });\n}\n\nexport function useOperationInfiniteQuery<TInput, TData, TPageParam>(\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n options: OperationInfiniteQueryOptions<TInput, TData, TPageParam>,\n) {\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const cacheVersion = useGraphClientCacheVersion(clientCache);\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n const { getPageInput, getNextPageParam, getPreviousPageParam, ...queryOptions } = options;\n const denormalizePage = useCallback(\n (value: unknown) => clientCache.denormalizeOutput(operation.graphOutput, value) as TData,\n [clientCache, operation],\n );\n\n return useInfiniteQuery<unknown, Error, InfiniteData<TData, TPageParam>, QueryKey, TPageParam>({\n ...queryOptions,\n queryKey: getOperationCacheAwareQueryKey(clientCache, operation, input),\n queryFn: async ({ pageParam }) =>\n clientCache.normalizeOutput(\n operation.graphOutput,\n unwrapOperationInvocationValue(\n toOperationInvocationResult(\n await action(\n getPageInput({\n input,\n pageParam: pageParam as TPageParam,\n }),\n ),\n ),\n ),\n ).value,\n getNextPageParam: (lastPage, allPages, lastPageParam, allPageParams) =>\n getNextPageParam(\n denormalizePage(lastPage),\n allPages.map(denormalizePage),\n lastPageParam,\n allPageParams,\n ),\n getPreviousPageParam: getPreviousPageParam\n ? (firstPage, allPages, firstPageParam, allPageParams) =>\n getPreviousPageParam(\n denormalizePage(firstPage),\n allPages.map(denormalizePage),\n firstPageParam,\n allPageParams,\n )\n : undefined,\n select: data => {\n void cacheVersion;\n\n return {\n pageParams: data.pageParams,\n pages: data.pages.map(denormalizePage),\n };\n },\n });\n}\n\nexport function useGraphPermission<TInput, TData>(\n invocation: OperationInvocation<TInput, TData>,\n options?: {\n enabled?: boolean;\n queryKey?: QueryKey;\n },\n): UseQueryResult<GraphPermission, Error> {\n const adapter = useDefaultOperationBridgeAdapter();\n\n return adapter.usePermission(\n invocation.operation as ClientOperationLike<TInput, TData>,\n invocation.input,\n options,\n );\n}\n\nexport function useOperationRunner<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n): OperationRunner<TInput, TData> {\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n\n return useCallback(\n async (input: TInput) => {\n const result = toOperationInvocationResult(await action(input));\n\n if (result.ok) {\n return {\n ...result,\n value: reconcileOperationOutput(clientCache, operation, result.value),\n };\n }\n\n return result;\n },\n [action, clientCache, operation],\n );\n}\n\nexport function useReflectedOperationRunner<TInput = unknown, TData = unknown>(\n operation: ReflectedOperationLike<TInput, TData>,\n): OperationRunner<TInput, TData> {\n const invoker = useReflectedOperationInvoker();\n\n return useCallback(\n (input: TInput) =>\n invoker.invokeOperation<TInput, TData>({\n operationId: operation.id,\n operation,\n input,\n }),\n [invoker, operation],\n );\n}\n"]}
1
+ {"version":3,"file":"operation-hooks.js","sourceRoot":"","sources":["../../src/graph/operation-hooks.ts"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport type {\n AnyEntityRef,\n DomainOperationInvocation as OperationInvocation,\n GraphSchemaLike,\n GraphSchemaParseResult,\n OperationInputSchema,\n} from '@ontahi/core/data-graph';\nimport { normalizeGraphSchemaClientInput } from '@ontahi/core/data-graph';\nimport { operationInputInvalid } from '@ontahi/core/runtime/contracts';\nimport type { TaskRunRef, TaskSnapshot } from '@ontahi/core/runtime/contracts';\nimport {\n createRuntimeProtocolExecutionExchange,\n isDurableOperationProtocolError,\n parseDurableOperationProtocolResponse,\n toDurableOperationProtocolRequest,\n wasRuntimeProtocolExecutionObserved,\n} from '@ontahi/core/runtime/protocol';\nimport { hasOwn, isRecord } from '@ontahi/core/value/object';\nimport {\n useInfiniteQuery,\n useQuery,\n useQueryClient,\n type InfiniteData,\n type QueryKey,\n type UseQueryOptions,\n type UseQueryResult,\n} from '@tanstack/react-query';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n BridgedOperationLike,\n GraphPermission,\n OperationBridgeAction,\n OperationBridgeActionResult,\n OperationInvocationResult,\n} from '../actions/index.js';\nimport {\n operationBridgeErrored,\n resolveOperationBridgeInvalidationQueryKeys,\n resolveOperationBridgeQueryKey,\n toOperationInvocationResult,\n unwrapOperationInvocationValue,\n useAction,\n} from '../actions/index.js';\n\nimport {\n useDefaultOperationBridgeAdapter,\n useGraphClientCache,\n useGraphClientCacheVersion,\n useReflectedOperationInvoker,\n useRuntimeTransportCapability,\n} from './context.js';\nimport {\n getOperationClientCacheKey,\n invalidateOperationCacheRefs,\n invalidateReactQueryCachesContainingRefs,\n readInitialOperationCacheValueFromCache,\n reconcileOperationOutput,\n} from './operation-cache.js';\nimport type {\n ClientOperationLike,\n ClientOperationInvocation,\n ClientSchemaOperationLike,\n BoundOperationHookResult,\n DurableOperationHookOptions,\n DurableOperationHookResult,\n DurableOperationLike,\n DurableSchemaOperationLike,\n GraphClientCache,\n OperationHookOptions,\n OperationHookResult,\n OperationInputController,\n OperationInputHookResult,\n OperationInfiniteQueryOptions,\n OperationInputArgs,\n OperationQueryOptions,\n OperationRunner,\n ReflectedOperationLike,\n} from './operation-types.js';\nimport { invalidateSemanticGraphReads } from './semantic-invalidation.js';\n\nconst operationHookOptionKeys = new Set([\n 'onExecute',\n 'onSuccess',\n 'onError',\n 'onSettled',\n 'invalidateOnSuccess',\n]);\n\nconst isOperationInvocation = (value: unknown): value is OperationInvocation<unknown, unknown> =>\n isRecord(value) && hasOwn(value, 'kind') && value.kind === 'domain-operation-invocation';\n\nconst readOperationInputFields = (input: unknown): Record<string, unknown> | undefined => {\n if (!isRecord(input)) return undefined;\n\n if (input.kind === 'schema.named' && 'item' in input) {\n return readOperationInputFields(input.item);\n }\n\n return (input.kind === 'schema.object' || input.kind === 'value') && isRecord(input.fields)\n ? input.fields\n : undefined;\n};\n\nconst looksLikeOperationOptions = (\n operation: ClientSchemaOperationLike<any, any> | ClientOperationLike<any, any>,\n value: unknown,\n) => {\n if (!isRecord(value)) return value === undefined;\n\n const keys = Object.keys(value);\n if (keys.length === 0) return false;\n\n const inputFields = readOperationInputFields(operation.input);\n if (inputFields && keys.some(key => hasOwn(inputFields, key))) return false;\n\n return keys.some(key => operationHookOptionKeys.has(key));\n};\n\nconst issuePath = (path: string | ReadonlyArray<string | number>) =>\n Array.isArray(path) ? path.map(String).join('.') : path;\n\nexport function getOperationQueryKey<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n input: TInput,\n): QueryKey;\nexport function getOperationQueryKey<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n): QueryKey;\nexport function getOperationQueryKey(\n operation: ClientSchemaOperationLike<any, any> | ClientOperationLike<any, any>,\n input: unknown,\n): QueryKey {\n return resolveOperationBridgeQueryKey(operation, input);\n}\n\nconst getOperationCacheAwareQueryKey = <TInput, TData>(\n clientCache: GraphClientCache,\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n): QueryKey =>\n getOperationClientCacheKey(clientCache, operation, input, getOperationQueryKey(operation, input));\n\nexport function useOperation<TInput, TData>(\n invocation: ClientOperationInvocation<TInput, TData>,\n options?: OperationHookOptions<TInput, TData>,\n): BoundOperationHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n initialInput: TInput,\n options?: OperationHookOptions<TInput, TData>,\n): OperationInputHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n options?: OperationHookOptions<TInput, TData>,\n): OperationHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n options?: OperationHookOptions<TInput, TData>,\n): OperationHookResult<TInput, TData>;\nexport function useOperation<TInput, TData>(\n operationOrInvocation:\n | ClientOperationInvocation<TInput, TData>\n | ClientOperationLike<TInput, TData>\n | ClientSchemaOperationLike<TInput, TData>,\n initialInputOrOptions?: TInput | OperationHookOptions<TInput, TData>,\n managedOptions?: OperationHookOptions<TInput, TData>,\n):\n | BoundOperationHookResult<TInput, TData>\n | OperationHookResult<TInput, TData>\n | OperationInputHookResult<TInput, TData> {\n const invocation = isOperationInvocation(operationOrInvocation)\n ? (operationOrInvocation as ClientOperationInvocation<TInput, TData>)\n : undefined;\n const operation = (invocation?.operation ?? operationOrInvocation) as\n | ClientOperationLike<TInput, TData>\n | ClientSchemaOperationLike<TInput, TData>;\n const managesInput =\n !invocation &&\n (managedOptions !== undefined || !looksLikeOperationOptions(operation, initialInputOrOptions));\n const initialInput = managesInput ? (initialInputOrOptions as TInput) : undefined;\n const options = invocation\n ? (initialInputOrOptions as OperationHookOptions<TInput, TData> | undefined)\n : managesInput\n ? managedOptions\n : (initialInputOrOptions as OperationHookOptions<TInput, TData> | undefined);\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const queryClient = useQueryClient();\n const runtimeTransport = useRuntimeTransportCapability();\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n const transport = useAction(action);\n const executeTransportAsync = transport.executeAsync;\n const resetTransport = transport.reset;\n const optionsRef = useRef(options);\n const [result, setResult] = useState<OperationInvocationResult<TData>>();\n const [lastInput, setLastInput] = useState<TInput>();\n const initialInputRef = useRef(initialInput);\n const [draft, setDraft] = useState<TInput | undefined>(initialInput);\n\n useEffect(() => {\n optionsRef.current = options;\n }, [options]);\n\n const executeInputAsync = useCallback(\n async (input: TInput) => {\n const currentOptions = optionsRef.current;\n const transportInput = operation.input\n ? (normalizeGraphSchemaClientInput(operation.input, input) as TInput)\n : input;\n setLastInput(input);\n\n await currentOptions?.onExecute?.({ input });\n\n let invocation: OperationInvocationResult<TData>;\n let actionResult: OperationBridgeActionResult<OperationInvocationResult<TData>> | undefined;\n\n try {\n actionResult = await executeTransportAsync(transportInput);\n invocation = toOperationInvocationResult(actionResult);\n } catch (error) {\n invocation = operationBridgeErrored(\n error instanceof Error ? error.message : 'Graph operation bridge failed.',\n ) as OperationInvocationResult<TData>;\n }\n\n if (invocation.ok) {\n let affectedCacheRefs: AnyEntityRef[] = [];\n\n if (currentOptions?.invalidateOnSuccess ?? true) {\n affectedCacheRefs = invalidateOperationCacheRefs(\n clientCache,\n operation,\n transportInput,\n invocation.value,\n );\n }\n\n invocation = {\n ...invocation,\n value: reconcileOperationOutput(clientCache, operation, invocation.value),\n };\n\n setResult(invocation);\n\n await currentOptions?.onSuccess?.({\n input,\n value: invocation.value,\n result: invocation,\n });\n\n if (currentOptions?.invalidateOnSuccess ?? true) {\n const executionMetadata = actionResult?.executionMetadata;\n const committed = executionMetadata?.committedMutations;\n if (committed && executionMetadata) {\n const mutationCommitId = executionMetadata.mutationCommitId;\n await Promise.all([\n ...(wasRuntimeProtocolExecutionObserved(executionMetadata)\n ? []\n : [\n invalidateSemanticGraphReads(queryClient, committed, {\n ...(mutationCommitId\n ? {\n causedBy: {\n kind: 'committed-mutations' as const,\n commitIds: [mutationCommitId],\n overflow: false,\n },\n }\n : {}),\n ...(runtimeTransport?.causality\n ? {\n associateRefreshes:\n runtimeTransport.causality.associateGraphReadRefreshes,\n }\n : {}),\n }),\n ]),\n invalidateReactQueryCachesContainingRefs(queryClient, affectedCacheRefs),\n ]);\n } else {\n await Promise.all([\n invalidateReactQueryCachesContainingRefs(queryClient, affectedCacheRefs),\n ...resolveOperationBridgeInvalidationQueryKeys(\n operation as BridgedOperationLike<TInput, TData>,\n transportInput,\n ).map(queryKey => queryClient.invalidateQueries({ queryKey })),\n ]);\n }\n }\n } else {\n setResult(invocation);\n\n await currentOptions?.onError?.({\n input,\n error: invocation,\n result: invocation,\n });\n }\n\n await currentOptions?.onSettled?.({\n input,\n result: invocation,\n });\n\n return invocation;\n },\n [clientCache, executeTransportAsync, operation, queryClient, runtimeTransport],\n );\n\n const executeAsync = useCallback(\n (...args: OperationInputArgs<TInput>) => executeInputAsync(args[0] as TInput),\n [executeInputAsync],\n );\n\n const execute = useCallback(\n (...args: OperationInputArgs<TInput>) => {\n void executeAsync(...args);\n },\n [executeAsync],\n );\n const executeBoundAsync = useCallback(\n () => executeInputAsync(invocation?.input as TInput),\n [executeInputAsync, invocation?.input],\n );\n const executeBound = useCallback(() => {\n void executeBoundAsync();\n }, [executeBoundAsync]);\n\n const reset = useCallback(() => {\n resetTransport();\n setResult(undefined);\n setLastInput(undefined);\n if (managesInput) setDraft(initialInputRef.current);\n }, [managesInput, resetTransport]);\n\n const inputSchema =\n operation.input && typeof (operation.input as { safeParse?: unknown }).safeParse === 'function'\n ? (operation.input as OperationInputSchema<GraphSchemaLike, TInput>)\n : undefined;\n const validation = useMemo<GraphSchemaParseResult<TInput> | undefined>(\n () => (managesInput && inputSchema ? inputSchema.safeParse(draft) : undefined),\n [draft, inputSchema, managesInput],\n );\n\n const setManagedDraft: OperationInputController<TInput>['setDraft'] = useCallback(next => {\n setDraft(current =>\n typeof next === 'function' ? (next as (current: TInput) => TInput)(current as TInput) : next,\n );\n }, []);\n\n const setManagedField: OperationInputController<TInput>['setField'] = useCallback(\n (field, value) => {\n setDraft(current => {\n if (!isRecord(current)) {\n throw new Error('setField requires an object operation input.');\n }\n\n return { ...current, [field]: value } as TInput;\n });\n },\n [],\n );\n\n const resetManagedInput: OperationInputController<TInput>['reset'] = useCallback(next => {\n setDraft(next === undefined ? initialInputRef.current : next);\n }, []);\n\n const inputController = useMemo<OperationInputController<TInput> | undefined>(() => {\n if (!managesInput || !validation) return undefined;\n\n const issues = validation.success ? [] : validation.issues;\n return {\n draft: draft as TInput,\n setDraft: setManagedDraft,\n setField: setManagedField,\n reset: resetManagedInput,\n validation,\n issues,\n issue: path => {\n const expected = issuePath(path);\n return issues.find(issue => issuePath(issue.path) === expected);\n },\n isValid: validation.success,\n value: validation.success ? validation.data : undefined,\n };\n }, [draft, managesInput, resetManagedInput, setManagedDraft, setManagedField, validation]);\n\n const executeManagedAsync = useCallback(async () => {\n if (!validation?.success) {\n const issues = validation?.issues ?? [];\n const invalid = operationInputInvalid(\n issues[0]?.message ?? 'Input does not match the operation schema.',\n issues.map(issue => ({\n ...(issue.path.length > 0 ? { path: issue.path.map(String).join('.') } : {}),\n message: issue.message,\n code: issue.code,\n })),\n );\n const currentOptions = optionsRef.current;\n\n setLastInput(draft);\n setResult(invalid);\n await currentOptions?.onError?.({ input: draft as TInput, error: invalid, result: invalid });\n await currentOptions?.onSettled?.({ input: draft as TInput, result: invalid });\n\n return invalid as OperationInvocationResult<TData>;\n }\n\n return executeInputAsync(validation.data);\n }, [draft, executeInputAsync, validation]);\n\n const executeManaged = useCallback(() => {\n void executeManagedAsync();\n }, [executeManagedAsync]);\n\n const hasErrored = Boolean(result && !result.ok) || transport.hasErrored;\n const hasSucceeded = Boolean(result?.ok) && !transport.isExecuting;\n const isIdle = transport.isIdle && result === undefined;\n const status = isIdle\n ? 'idle'\n : transport.isExecuting\n ? 'executing'\n : hasErrored\n ? 'hasErrored'\n : 'hasSucceeded';\n\n const baseResult = {\n execute: invocation ? executeBound : managesInput ? executeManaged : execute,\n executeAsync: invocation\n ? executeBoundAsync\n : managesInput\n ? executeManagedAsync\n : executeAsync,\n input: invocation ? invocation.input : managesInput ? inputController : lastInput,\n result,\n value: result?.ok ? result.value : undefined,\n reset,\n status,\n isIdle,\n isExecuting: transport.isExecuting,\n isTransitioning: transport.isTransitioning,\n isPending: transport.isPending,\n hasSucceeded,\n hasErrored,\n };\n\n return (\n invocation\n ? baseResult\n : managesInput\n ? { ...baseResult, input: inputController as OperationInputController<TInput>, lastInput }\n : baseResult\n ) as\n | BoundOperationHookResult<TInput, TData>\n | OperationHookResult<TInput, TData>\n | OperationInputHookResult<TInput, TData>;\n}\n\nexport function useDurableOperation<TInput, TResult = unknown>(\n operation: DurableSchemaOperationLike<TInput, TResult>,\n options?: DurableOperationHookOptions<TInput>,\n): DurableOperationHookResult<TInput, TResult>;\nexport function useDurableOperation<TInput, TResult = unknown>(\n operation: DurableOperationLike<TInput, TResult>,\n options?: DurableOperationHookOptions<TInput>,\n): DurableOperationHookResult<TInput, TResult>;\nexport function useDurableOperation<TInput, TResult = unknown>(\n operation: DurableOperationLike<TInput, TResult> | DurableSchemaOperationLike<TInput, TResult>,\n options?: DurableOperationHookOptions<TInput>,\n): DurableOperationHookResult<TInput, TResult> {\n const runtimeTransport = useRuntimeTransportCapability();\n const observer = runtimeTransport?.durableOperation;\n const queryClient = useQueryClient();\n const mutation = useOperation<TInput, TaskRunRef>(\n operation as ClientOperationLike<TInput, TaskRunRef>,\n { ...options, invalidateOnSuccess: false },\n );\n const runRef = mutation.value;\n const runKey = runRef ? `${runRef.taskId}:${runRef.runId}` : undefined;\n const [observation, setObservation] = useState<{\n runKey: string | undefined;\n snapshot: TaskSnapshot<TResult> | undefined;\n active: boolean;\n }>({ runKey: undefined, snapshot: undefined, active: false });\n const currentObservation = observation.runKey === runKey ? observation : undefined;\n const snapshot = currentObservation?.snapshot;\n const invalidatedRunRef = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n if (!runRef || !runKey || !observer) return;\n\n const controller = new AbortController();\n let active = true;\n setObservation({ runKey, snapshot: undefined, active: true });\n\n void (async () => {\n try {\n for await (const nextSnapshot of observer.observe<TResult>(\n { taskId: runRef.taskId, runId: runRef.runId },\n { signal: controller.signal },\n )) {\n if (!active) return;\n setObservation({ runKey, snapshot: nextSnapshot, active: true });\n }\n } catch {\n if (!controller.signal.aborted && active) {\n setObservation(current =>\n current.runKey === runKey ? { ...current, active: false } : current,\n );\n }\n return;\n }\n\n if (active) {\n setObservation(current =>\n current.runKey === runKey ? { ...current, active: false } : current,\n );\n }\n })();\n\n return () => {\n active = false;\n controller.abort();\n };\n }, [observer, runKey, runRef]);\n\n useEffect(() => {\n if (\n !snapshot ||\n (snapshot.status !== 'completed' &&\n snapshot.status !== 'failed' &&\n snapshot.status !== 'cancelled')\n ) {\n return;\n }\n\n const runKey = `${snapshot.taskId}:${snapshot.runId}:${snapshot.status}`;\n if (invalidatedRunRef.current === runKey) return;\n invalidatedRunRef.current = runKey;\n\n if (snapshot.status === 'completed' && (options?.invalidateOnSuccess ?? true)) {\n const invalidationInput = operation.input\n ? (normalizeGraphSchemaClientInput(operation.input, mutation.input) as TInput)\n : (mutation.input as TInput);\n const invalidate = async () => {\n if (runtimeTransport) {\n try {\n const execution = await createRuntimeProtocolExecutionExchange({\n transport: runtimeTransport,\n })({\n family: 'durable.operation',\n body: toDurableOperationProtocolRequest(snapshot),\n });\n const parsed = parseDurableOperationProtocolResponse(execution.body);\n if (\n parsed.success &&\n !isDurableOperationProtocolError(parsed.response) &&\n execution.metadata?.committedMutations\n ) {\n if (!wasRuntimeProtocolExecutionObserved(execution.metadata))\n await invalidateSemanticGraphReads(\n queryClient,\n execution.metadata.committedMutations,\n {\n ...(execution.metadata.mutationCommitId\n ? {\n causedBy: {\n kind: 'committed-mutations' as const,\n commitIds: [execution.metadata.mutationCommitId],\n overflow: false,\n },\n }\n : {}),\n ...(runtimeTransport.causality\n ? {\n associateRefreshes:\n runtimeTransport.causality.associateGraphReadRefreshes,\n }\n : {}),\n },\n );\n return;\n }\n } catch {\n // Fall through to the compatibility invalidation declared by the Operation.\n }\n }\n\n await Promise.all(\n resolveOperationBridgeInvalidationQueryKeys(\n operation as BridgedOperationLike<TInput, TResult>,\n invalidationInput,\n ).map(queryKey => queryClient.invalidateQueries({ queryKey })),\n );\n };\n void invalidate();\n }\n }, [\n mutation.input,\n operation,\n options?.invalidateOnSuccess,\n queryClient,\n runtimeTransport,\n snapshot,\n ]);\n\n const reset = useCallback(() => {\n mutation.reset();\n setObservation({ runKey: undefined, snapshot: undefined, active: false });\n invalidatedRunRef.current = undefined;\n }, [mutation]);\n const runStatus = snapshot?.status ?? runRef?.status;\n\n return {\n ...mutation,\n reset,\n durable: operation.durable,\n snapshot,\n progress: snapshot?.progress,\n finalValue: snapshot?.result,\n runError: snapshot?.error,\n isQueued: runStatus === 'queued',\n isRunning: runStatus === 'running',\n isWaiting: runStatus === 'waiting',\n isCompleted: runStatus === 'completed',\n isFailed: runStatus === 'failed',\n isCancelled: runStatus === 'cancelled',\n isRefreshingRun: currentObservation?.active ?? false,\n isExecuting:\n mutation.isExecuting ||\n (Boolean(observer) &&\n currentObservation?.active !== false &&\n (runStatus === 'queued' || runStatus === 'running' || runStatus === 'waiting')),\n };\n}\n\nexport function useOperationQuery<TData>(\n operation: ClientOperationLike<void, TData>,\n options?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error>;\nexport function useOperationQuery<TInput, TData>(\n operation: ClientSchemaOperationLike<TInput, TData>,\n input: TInput,\n options?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error>;\nexport function useOperationQuery<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n options?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error>;\nexport function useOperationQuery<TInput, TData>(\n operation: ClientOperationLike<TInput, TData> | ClientSchemaOperationLike<TInput, TData>,\n inputOrOptions?: TInput | OperationQueryOptions<TData>,\n providedOptions?: OperationQueryOptions<TData>,\n): UseQueryResult<TData, Error> {\n const hasInput = operation.input?.kind !== 'schema.void';\n const input = (\n hasInput\n ? operation.input\n ? normalizeGraphSchemaClientInput(operation.input, inputOrOptions)\n : inputOrOptions\n : undefined\n ) as TInput;\n const options = (hasInput ? providedOptions : inputOrOptions) as\n | OperationQueryOptions<TData>\n | undefined;\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const cacheVersion = useGraphClientCacheVersion(clientCache);\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n const {\n initialData: providedInitialData,\n initialDataUpdatedAt,\n placeholderData,\n ...queryOptions\n } = options ?? {};\n const hasProvidedInitialData = Boolean(options && 'initialData' in options);\n const queryKey = getOperationCacheAwareQueryKey(\n clientCache,\n operation as ClientOperationLike<TInput, TData>,\n input,\n );\n const cacheKey = queryKey;\n const initialCacheValue = hasProvidedInitialData\n ? undefined\n : readInitialOperationCacheValueFromCache(clientCache, operation, input, cacheKey);\n const initialData = hasProvidedInitialData ? providedInitialData : initialCacheValue?.value;\n\n return useQuery({\n ...queryOptions,\n initialData,\n initialDataUpdatedAt: initialDataUpdatedAt ?? initialCacheValue?.initialDataUpdatedAt,\n placeholderData: placeholderData as UseQueryOptions<\n unknown,\n Error,\n TData,\n QueryKey\n >['placeholderData'],\n queryKey,\n queryFn: async () =>\n clientCache.writeOutput(\n cacheKey,\n operation.graphOutput,\n unwrapOperationInvocationValue(toOperationInvocationResult(await action(input))),\n { kind: 'operation', name: `${operation.entityName}.${operation.name}()` },\n ).value,\n select: value => {\n void cacheVersion;\n return clientCache.denormalizeOutput(operation.graphOutput, value) as TData;\n },\n });\n}\n\nexport function useOperationInfiniteQuery<TInput, TData, TPageParam>(\n operation: ClientOperationLike<TInput, TData>,\n input: TInput,\n options: OperationInfiniteQueryOptions<TInput, TData, TPageParam>,\n) {\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const cacheVersion = useGraphClientCacheVersion(clientCache);\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n const { getPageInput, getNextPageParam, getPreviousPageParam, ...queryOptions } = options;\n const denormalizePage = useCallback(\n (value: unknown) => clientCache.denormalizeOutput(operation.graphOutput, value) as TData,\n [clientCache, operation],\n );\n\n return useInfiniteQuery<unknown, Error, InfiniteData<TData, TPageParam>, QueryKey, TPageParam>({\n ...queryOptions,\n queryKey: getOperationCacheAwareQueryKey(clientCache, operation, input),\n queryFn: async ({ pageParam }) =>\n clientCache.normalizeOutput(\n operation.graphOutput,\n unwrapOperationInvocationValue(\n toOperationInvocationResult(\n await action(\n getPageInput({\n input,\n pageParam: pageParam as TPageParam,\n }),\n ),\n ),\n ),\n ).value,\n getNextPageParam: (lastPage, allPages, lastPageParam, allPageParams) =>\n getNextPageParam(\n denormalizePage(lastPage),\n allPages.map(denormalizePage),\n lastPageParam,\n allPageParams,\n ),\n getPreviousPageParam: getPreviousPageParam\n ? (firstPage, allPages, firstPageParam, allPageParams) =>\n getPreviousPageParam(\n denormalizePage(firstPage),\n allPages.map(denormalizePage),\n firstPageParam,\n allPageParams,\n )\n : undefined,\n select: data => {\n void cacheVersion;\n\n return {\n pageParams: data.pageParams,\n pages: data.pages.map(denormalizePage),\n };\n },\n });\n}\n\nexport function useGraphPermission<TInput, TData>(\n invocation: OperationInvocation<TInput, TData>,\n options?: {\n enabled?: boolean;\n queryKey?: QueryKey;\n },\n): UseQueryResult<GraphPermission, Error> {\n const adapter = useDefaultOperationBridgeAdapter();\n\n return adapter.usePermission(\n invocation.operation as ClientOperationLike<TInput, TData>,\n invocation.input,\n options,\n );\n}\n\nexport function useOperationRunner<TInput, TData>(\n operation: ClientOperationLike<TInput, TData>,\n): OperationRunner<TInput, TData> {\n const adapter = useDefaultOperationBridgeAdapter();\n const clientCache = useGraphClientCache();\n const action = adapter.useBridgeAction<TInput, TData>(\n operation as Parameters<typeof adapter.useBridgeAction<TInput, TData>>[0],\n ) as OperationBridgeAction<TInput, TData>;\n\n return useCallback(\n async (input: TInput) => {\n const result = toOperationInvocationResult(await action(input));\n\n if (result.ok) {\n return {\n ...result,\n value: reconcileOperationOutput(clientCache, operation, result.value),\n };\n }\n\n return result;\n },\n [action, clientCache, operation],\n );\n}\n\nexport function useReflectedOperationRunner<TInput = unknown, TData = unknown>(\n operation: ReflectedOperationLike<TInput, TData>,\n): OperationRunner<TInput, TData> {\n const invoker = useReflectedOperationInvoker();\n\n return useCallback(\n (input: TInput) =>\n invoker.invokeOperation<TInput, TData>({\n operationId: operation.id,\n operation,\n input,\n }),\n [invoker, operation],\n );\n}\n"]}
@@ -8,7 +8,7 @@ export type ClientOperationLike<TInput = unknown, TData = unknown> = ClientOpera
8
8
  entityName: string;
9
9
  name: string;
10
10
  };
11
- export type ClientSchemaOperationLike<TInput = unknown, TData = unknown> = Omit<ClientOperationDeclaration<any, any>, '__clientTypes'> & {
11
+ export type ClientSchemaOperationLike<TInput = unknown, TData = unknown> = Omit<ClientOperationDeclaration<any, any>, '__clientTypes' | 'input'> & {
12
12
  id: string;
13
13
  entityName: string;
14
14
  name: string;
@@ -22,6 +22,9 @@ export type ReflectedOperationLike<TInput = unknown, TData = unknown> = Reflecte
22
22
  export type DurableOperationLike<TInput = unknown, TResult = unknown> = ClientOperationLike<TInput, TResult> & {
23
23
  durable: DurableOperationMetadata<TInput, TResult>;
24
24
  };
25
+ export type DurableSchemaOperationLike<TInput = unknown, TResult = unknown> = Omit<ClientSchemaOperationLike<TInput, TResult>, 'durable'> & {
26
+ durable: DurableOperationMetadata<any, TResult>;
27
+ };
25
28
  export type DurableOperationHookResult<TInput, TResult> = OperationHookResult<TInput, TaskRunRef> & {
26
29
  durable: DurableOperationMetadata<TInput, TResult>;
27
30
  snapshot: TaskSnapshot<TResult> | undefined;
@@ -30,6 +33,7 @@ export type DurableOperationHookResult<TInput, TResult> = OperationHookResult<TI
30
33
  runError: TaskSnapshot<TResult>['error'];
31
34
  isQueued: boolean;
32
35
  isRunning: boolean;
36
+ isWaiting: boolean;
33
37
  isCompleted: boolean;
34
38
  isFailed: boolean;
35
39
  isCancelled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"operation-types.d.ts","sourceRoot":"","sources":["../../src/graph/operation-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation-types.d.ts","sourceRoot":"","sources":["../../src/graph/operation-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation-types.js","sourceRoot":"","sources":["../../src/graph/operation-types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ClientDomainOperationDeclaration as ClientOperationDeclaration,\n DomainOperationInvocation,\n DurableOperationMetadata,\n GraphSchemaParseResult,\n GraphSchemaLike,\n GraphSchemaValidationIssue,\n GraphClientCache,\n OperationInputSchema,\n ReflectedOperationDescriptor,\n} from '@ontahi/core/data-graph';\nimport type { TaskRunRef, TaskSnapshot } from '@ontahi/core/runtime/contracts';\nimport type {\n InfiniteData,\n QueryKey,\n UseInfiniteQueryOptions,\n UseQueryOptions,\n} from '@tanstack/react-query';\n\nimport type { OperationInvocationFailure, OperationInvocationResult } from '../actions/index.js';\n\nexport type { GraphClientCache };\n\nexport type ClientOperationLike<TInput = unknown, TData = unknown> = ClientOperationDeclaration<\n TInput,\n TData\n> & {\n id: string;\n entityName: string;\n name: string;\n};\n\nexport type ClientSchemaOperationLike<TInput = unknown, TData = unknown> = Omit<\n ClientOperationDeclaration<any, any>,\n '__clientTypes'\n> & {\n id: string;\n entityName: string;\n name: string;\n input: OperationInputSchema<GraphSchemaLike, TInput>;\n __clientTypes?: {\n input: TInput;\n output: TData;\n };\n};\n\nexport type ReflectedOperationLike<\n TInput = unknown,\n TData = unknown,\n> = ReflectedOperationDescriptor<TInput, TData>;\n\nexport type DurableOperationLike<TInput = unknown, TResult = unknown> = ClientOperationLike<\n TInput,\n TResult\n> & {\n durable: DurableOperationMetadata<TInput, TResult>;\n};\n\nexport type DurableOperationHookResult<TInput, TResult> = OperationHookResult<\n TInput,\n TaskRunRef\n> & {\n durable: DurableOperationMetadata<TInput, TResult>;\n snapshot: TaskSnapshot<TResult> | undefined;\n progress: TaskSnapshot<TResult>['progress'];\n finalValue: TResult | undefined;\n runError: TaskSnapshot<TResult>['error'];\n isQueued: boolean;\n isRunning: boolean;\n isCompleted: boolean;\n isFailed: boolean;\n isCancelled: boolean;\n isRefreshingRun: boolean;\n};\n\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport type OperationHookOptions<TInput, TData> = {\n onExecute?: (args: { input: TInput }) => MaybePromise<unknown>;\n onSuccess?: (args: {\n input: TInput;\n value: TData;\n result: Extract<OperationInvocationResult<TData>, { ok: true }>;\n }) => MaybePromise<unknown>;\n onError?: (args: {\n input: TInput;\n error: OperationInvocationFailure;\n result: OperationInvocationFailure;\n }) => MaybePromise<unknown>;\n onSettled?: (args: {\n input: TInput;\n result: OperationInvocationResult<TData>;\n }) => MaybePromise<unknown>;\n invalidateOnSuccess?: boolean;\n};\n\nexport type DurableOperationHookOptions<TInput> = OperationHookOptions<TInput, TaskRunRef>;\n\nexport type OperationInputArgs<TInput> = [TInput] extends [void] ? [] : [input: TInput];\n\nexport type OperationHookResult<TInput, TData> = {\n execute: (...args: OperationInputArgs<TInput>) => void;\n executeAsync: (...args: OperationInputArgs<TInput>) => Promise<OperationInvocationResult<TData>>;\n input: TInput | undefined;\n result: OperationInvocationResult<TData> | undefined;\n value: TData | undefined;\n reset: () => void;\n status: 'idle' | 'executing' | 'hasSucceeded' | 'hasErrored';\n isIdle: boolean;\n isExecuting: boolean;\n isTransitioning: boolean;\n isPending: boolean;\n hasSucceeded: boolean;\n hasErrored: boolean;\n};\n\nexport type OperationInputController<TInput> = {\n /** The editable public input, before schema normalization. */\n draft: TInput;\n setDraft: (next: TInput | ((current: TInput) => TInput)) => void;\n setField: <TField extends keyof TInput>(field: TField, value: TInput[TField]) => void;\n reset: (next?: TInput) => void;\n /** The complete validation result for the current draft. */\n validation: GraphSchemaParseResult<TInput>;\n issues: GraphSchemaValidationIssue[];\n issue: (path: string | ReadonlyArray<string | number>) => GraphSchemaValidationIssue | undefined;\n isValid: boolean;\n /** The parsed and normalized input, available only while the draft is valid. */\n value: TInput | undefined;\n};\n\nexport type OperationInputHookResult<TInput, TData> = Omit<\n OperationHookResult<TInput, TData>,\n 'execute' | 'executeAsync' | 'input'\n> & {\n execute: () => void;\n executeAsync: () => Promise<OperationInvocationResult<TData>>;\n input: OperationInputController<TInput>;\n lastInput: TInput | undefined;\n};\n\nexport type BoundOperationHookResult<TInput, TData> = Omit<\n OperationHookResult<TInput, TData>,\n 'execute' | 'executeAsync' | 'input'\n> & {\n execute: () => void;\n executeAsync: () => Promise<OperationInvocationResult<TData>>;\n input: TInput;\n};\n\nexport type ClientOperationInvocation<TInput, TData> = DomainOperationInvocation<TInput, TData>;\n\nexport type OperationRunner<TInput, TData> = (\n input: TInput,\n) => Promise<OperationInvocationResult<TData>>;\n\nexport type OperationQueryOptions<TData> = Omit<\n UseQueryOptions<unknown, Error, TData, QueryKey>,\n 'placeholderData' | 'queryFn' | 'queryKey' | 'select'\n> & {\n placeholderData?: TData | ((previousData: TData | undefined) => TData | undefined);\n};\n\nexport type OperationInfinitePageParamResolver<TData, TPageParam> = (\n page: TData,\n pages: TData[],\n pageParam: TPageParam,\n allPageParams: TPageParam[],\n) => TPageParam | null | undefined;\n\nexport type OperationInfiniteQueryOptions<TInput, TData, TPageParam> = Omit<\n UseInfiniteQueryOptions<unknown, Error, InfiniteData<TData, TPageParam>, QueryKey, TPageParam>,\n 'getNextPageParam' | 'getPreviousPageParam' | 'queryFn' | 'queryKey' | 'select'\n> & {\n getPageInput: (args: { input: TInput; pageParam: TPageParam }) => TInput;\n getNextPageParam: OperationInfinitePageParamResolver<TData, TPageParam>;\n getPreviousPageParam?: OperationInfinitePageParamResolver<TData, TPageParam>;\n};\n"]}
1
+ {"version":3,"file":"operation-types.js","sourceRoot":"","sources":["../../src/graph/operation-types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ClientDomainOperationDeclaration as ClientOperationDeclaration,\n DomainOperationInvocation,\n DurableOperationMetadata,\n GraphSchemaParseResult,\n GraphSchemaLike,\n GraphSchemaValidationIssue,\n GraphClientCache,\n OperationInputSchema,\n ReflectedOperationDescriptor,\n} from '@ontahi/core/data-graph';\nimport type { TaskRunRef, TaskSnapshot } from '@ontahi/core/runtime/contracts';\nimport type {\n InfiniteData,\n QueryKey,\n UseInfiniteQueryOptions,\n UseQueryOptions,\n} from '@tanstack/react-query';\n\nimport type { OperationInvocationFailure, OperationInvocationResult } from '../actions/index.js';\n\nexport type { GraphClientCache };\n\nexport type ClientOperationLike<TInput = unknown, TData = unknown> = ClientOperationDeclaration<\n TInput,\n TData\n> & {\n id: string;\n entityName: string;\n name: string;\n};\n\nexport type ClientSchemaOperationLike<TInput = unknown, TData = unknown> = Omit<\n ClientOperationDeclaration<any, any>,\n '__clientTypes' | 'input'\n> & {\n id: string;\n entityName: string;\n name: string;\n input: OperationInputSchema<GraphSchemaLike, TInput>;\n __clientTypes?: {\n input: TInput;\n output: TData;\n };\n};\n\nexport type ReflectedOperationLike<\n TInput = unknown,\n TData = unknown,\n> = ReflectedOperationDescriptor<TInput, TData>;\n\nexport type DurableOperationLike<TInput = unknown, TResult = unknown> = ClientOperationLike<\n TInput,\n TResult\n> & {\n durable: DurableOperationMetadata<TInput, TResult>;\n};\n\nexport type DurableSchemaOperationLike<TInput = unknown, TResult = unknown> = Omit<\n ClientSchemaOperationLike<TInput, TResult>,\n 'durable'\n> & {\n durable: DurableOperationMetadata<any, TResult>;\n};\n\nexport type DurableOperationHookResult<TInput, TResult> = OperationHookResult<\n TInput,\n TaskRunRef\n> & {\n durable: DurableOperationMetadata<TInput, TResult>;\n snapshot: TaskSnapshot<TResult> | undefined;\n progress: TaskSnapshot<TResult>['progress'];\n finalValue: TResult | undefined;\n runError: TaskSnapshot<TResult>['error'];\n isQueued: boolean;\n isRunning: boolean;\n isWaiting: boolean;\n isCompleted: boolean;\n isFailed: boolean;\n isCancelled: boolean;\n isRefreshingRun: boolean;\n};\n\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport type OperationHookOptions<TInput, TData> = {\n onExecute?: (args: { input: TInput }) => MaybePromise<unknown>;\n onSuccess?: (args: {\n input: TInput;\n value: TData;\n result: Extract<OperationInvocationResult<TData>, { ok: true }>;\n }) => MaybePromise<unknown>;\n onError?: (args: {\n input: TInput;\n error: OperationInvocationFailure;\n result: OperationInvocationFailure;\n }) => MaybePromise<unknown>;\n onSettled?: (args: {\n input: TInput;\n result: OperationInvocationResult<TData>;\n }) => MaybePromise<unknown>;\n invalidateOnSuccess?: boolean;\n};\n\nexport type DurableOperationHookOptions<TInput> = OperationHookOptions<TInput, TaskRunRef>;\n\nexport type OperationInputArgs<TInput> = [TInput] extends [void] ? [] : [input: TInput];\n\nexport type OperationHookResult<TInput, TData> = {\n execute: (...args: OperationInputArgs<TInput>) => void;\n executeAsync: (...args: OperationInputArgs<TInput>) => Promise<OperationInvocationResult<TData>>;\n input: TInput | undefined;\n result: OperationInvocationResult<TData> | undefined;\n value: TData | undefined;\n reset: () => void;\n status: 'idle' | 'executing' | 'hasSucceeded' | 'hasErrored';\n isIdle: boolean;\n isExecuting: boolean;\n isTransitioning: boolean;\n isPending: boolean;\n hasSucceeded: boolean;\n hasErrored: boolean;\n};\n\nexport type OperationInputController<TInput> = {\n /** The editable public input, before schema normalization. */\n draft: TInput;\n setDraft: (next: TInput | ((current: TInput) => TInput)) => void;\n setField: <TField extends keyof TInput>(field: TField, value: TInput[TField]) => void;\n reset: (next?: TInput) => void;\n /** The complete validation result for the current draft. */\n validation: GraphSchemaParseResult<TInput>;\n issues: GraphSchemaValidationIssue[];\n issue: (path: string | ReadonlyArray<string | number>) => GraphSchemaValidationIssue | undefined;\n isValid: boolean;\n /** The parsed and normalized input, available only while the draft is valid. */\n value: TInput | undefined;\n};\n\nexport type OperationInputHookResult<TInput, TData> = Omit<\n OperationHookResult<TInput, TData>,\n 'execute' | 'executeAsync' | 'input'\n> & {\n execute: () => void;\n executeAsync: () => Promise<OperationInvocationResult<TData>>;\n input: OperationInputController<TInput>;\n lastInput: TInput | undefined;\n};\n\nexport type BoundOperationHookResult<TInput, TData> = Omit<\n OperationHookResult<TInput, TData>,\n 'execute' | 'executeAsync' | 'input'\n> & {\n execute: () => void;\n executeAsync: () => Promise<OperationInvocationResult<TData>>;\n input: TInput;\n};\n\nexport type ClientOperationInvocation<TInput, TData> = DomainOperationInvocation<TInput, TData>;\n\nexport type OperationRunner<TInput, TData> = (\n input: TInput,\n) => Promise<OperationInvocationResult<TData>>;\n\nexport type OperationQueryOptions<TData> = Omit<\n UseQueryOptions<unknown, Error, TData, QueryKey>,\n 'placeholderData' | 'queryFn' | 'queryKey' | 'select'\n> & {\n placeholderData?: TData | ((previousData: TData | undefined) => TData | undefined);\n};\n\nexport type OperationInfinitePageParamResolver<TData, TPageParam> = (\n page: TData,\n pages: TData[],\n pageParam: TPageParam,\n allPageParams: TPageParam[],\n) => TPageParam | null | undefined;\n\nexport type OperationInfiniteQueryOptions<TInput, TData, TPageParam> = Omit<\n UseInfiniteQueryOptions<unknown, Error, InfiniteData<TData, TPageParam>, QueryKey, TPageParam>,\n 'getNextPageParam' | 'getPreviousPageParam' | 'queryFn' | 'queryKey' | 'select'\n> & {\n getPageInput: (args: { input: TInput; pageParam: TPageParam }) => TInput;\n getNextPageParam: OperationInfinitePageParamResolver<TData, TPageParam>;\n getPreviousPageParam?: OperationInfinitePageParamResolver<TData, TPageParam>;\n};\n"]}
@@ -0,0 +1,13 @@
1
+ import { type ClientApplication, type GraphClientCache } from '@ontahi/core/data-graph';
2
+ import type { RuntimeTransport } from '@ontahi/core/runtime/protocol';
3
+ import { type FetchGraphClient, type FetchReflectedEntityDataReaderOptions, type FetchReflectedRelatedEntityDataReaderOptions } from './fetch-graph-client.js';
4
+ export type RuntimeGraphClientOptions<TTransportOptions = unknown> = {
5
+ readonly runtimeTransport: RuntimeTransport<TTransportOptions>;
6
+ readonly requestId?: () => string;
7
+ readonly clientCache?: GraphClientCache;
8
+ readonly application?: ClientApplication;
9
+ readonly reflectedEntityData?: false | FetchReflectedEntityDataReaderOptions;
10
+ readonly reflectedRelatedEntityData?: false | FetchReflectedRelatedEntityDataReaderOptions;
11
+ };
12
+ export declare const createRuntimeGraphClient: <TTransportOptions = unknown>({ runtimeTransport, requestId, clientCache: configuredClientCache, application, reflectedEntityData, reflectedRelatedEntityData, }: RuntimeGraphClientOptions<TTransportOptions>) => FetchGraphClient<TTransportOptions>;
13
+ //# sourceMappingURL=runtime-graph-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-graph-client.d.ts","sourceRoot":"","sources":["../../src/graph/runtime-graph-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAEtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOtE,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,qCAAqC,EAC1C,KAAK,4CAA4C,EAClD,MAAM,yBAAyB,CAAC;AAGjC,MAAM,MAAM,yBAAyB,CAAC,iBAAiB,GAAG,OAAO,IAAI;IACnE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,GAAG,qCAAqC,CAAC;IAC7E,QAAQ,CAAC,0BAA0B,CAAC,EAAE,KAAK,GAAG,4CAA4C,CAAC;CAC5F,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,GAAG,OAAO,EAAE,oIAOnE,yBAAyB,CAAC,iBAAiB,CAAC,KAAG,gBAAgB,CAAC,iBAAiB,CAuCnF,CAAC"}
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { Stream } from '@ontahi/core/computation/stream';
3
+ import { createGraphClientCache, createRuntimeBoundDataGraphApi, reconcileGraphReadSnapshot, } from '@ontahi/core/data-graph';
4
+ import { createFetchOperationBridgeAdapter, createFetchReflectedOperationInvoker, } from '../actions/index.js';
5
+ import { createFetchReflectedEntityDataReader, createFetchReflectedRelatedEntityDataReader, } from './fetch-graph-client.js';
6
+ import { createFetchGraphReadCapability } from './fetch-graph-runtime.js';
7
+ export const createRuntimeGraphClient = ({ runtimeTransport, requestId, clientCache: configuredClientCache, application, reflectedEntityData = {}, reflectedRelatedEntityData = {}, }) => {
8
+ const graph = createFetchGraphReadCapability({ runtimeTransport, requestId });
9
+ const clientCache = configuredClientCache ?? createGraphClientCache();
10
+ const runtime = {
11
+ ...graph.runtime,
12
+ observe: (read, params, options) => graph.runtime
13
+ .observe(read, params, options)
14
+ .pipe(Stream.map(snapshot => reconcileGraphReadSnapshot(clientCache, read, params, snapshot).value)),
15
+ };
16
+ const operation = { runtimeTransport, requestId };
17
+ return {
18
+ graph: createRuntimeBoundDataGraphApi(() => runtime),
19
+ graphExecutor: graph.graphExecutor,
20
+ clientCache,
21
+ ...(application ? { application } : {}),
22
+ runtimeTransport,
23
+ operationBridgeAdapters: [createFetchOperationBridgeAdapter(operation)],
24
+ reflectedOperationInvoker: createFetchReflectedOperationInvoker(operation),
25
+ ...(reflectedEntityData === false
26
+ ? {}
27
+ : { reflectedEntityDataReader: createFetchReflectedEntityDataReader(reflectedEntityData) }),
28
+ ...(reflectedRelatedEntityData === false
29
+ ? {}
30
+ : {
31
+ reflectedRelatedEntityDataReader: createFetchReflectedRelatedEntityDataReader(reflectedRelatedEntityData),
32
+ }),
33
+ };
34
+ };
35
+ //# sourceMappingURL=runtime-graph-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-graph-client.js","sourceRoot":"","sources":["../../src/graph/runtime-graph-client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,0BAA0B,GAI3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oCAAoC,EACpC,2CAA2C,GAI5C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAW1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAA8B,EACpE,gBAAgB,EAChB,SAAS,EACT,WAAW,EAAE,qBAAqB,EAClC,WAAW,EACX,mBAAmB,GAAG,EAAE,EACxB,0BAA0B,GAAG,EAAE,GACc,EAAuC,EAAE;IACtF,MAAM,KAAK,GAAG,8BAA8B,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,qBAAqB,IAAI,sBAAsB,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG;QACd,GAAG,KAAK,CAAC,OAAO;QAChB,OAAO,EAAE,CACP,IAAmC,EACnC,MAAe,EACf,OAA2B,EAC3B,EAAE,CACF,KAAK,CAAC,OAAO;aACV,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;aAC9B,IAAI,CACH,MAAM,CAAC,GAAG,CACR,QAAQ,CAAC,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,CAClF,CACF;KACN,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAElD,OAAO;QACL,KAAK,EAAE,8BAA8B,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACpD,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW;QACX,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,gBAAgB;QAChB,uBAAuB,EAAE,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC;QACvE,yBAAyB,EAAE,oCAAoC,CAAC,SAAS,CAAC;QAC1E,GAAG,CAAC,mBAAmB,KAAK,KAAK;YAC/B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,yBAAyB,EAAE,oCAAoC,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,0BAA0B,KAAK,KAAK;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,gCAAgC,EAAE,2CAA2C,CAC3E,0BAA0B,CAC3B;aACF,CAAC;KACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["'use client';\n\nimport { Stream } from '@ontahi/core/computation/stream';\nimport {\n createGraphClientCache,\n createRuntimeBoundDataGraphApi,\n reconcileGraphReadSnapshot,\n type ClientApplication,\n type GraphClientCache,\n type QueryOrView,\n} from '@ontahi/core/data-graph';\nimport type { RuntimeTransport } from '@ontahi/core/runtime/protocol';\n\nimport {\n createFetchOperationBridgeAdapter,\n createFetchReflectedOperationInvoker,\n} from '../actions/index.js';\n\nimport {\n createFetchReflectedEntityDataReader,\n createFetchReflectedRelatedEntityDataReader,\n type FetchGraphClient,\n type FetchReflectedEntityDataReaderOptions,\n type FetchReflectedRelatedEntityDataReaderOptions,\n} from './fetch-graph-client.js';\nimport { createFetchGraphReadCapability } from './fetch-graph-runtime.js';\n\nexport type RuntimeGraphClientOptions<TTransportOptions = unknown> = {\n readonly runtimeTransport: RuntimeTransport<TTransportOptions>;\n readonly requestId?: () => string;\n readonly clientCache?: GraphClientCache;\n readonly application?: ClientApplication;\n readonly reflectedEntityData?: false | FetchReflectedEntityDataReaderOptions;\n readonly reflectedRelatedEntityData?: false | FetchReflectedRelatedEntityDataReaderOptions;\n};\n\nexport const createRuntimeGraphClient = <TTransportOptions = unknown>({\n runtimeTransport,\n requestId,\n clientCache: configuredClientCache,\n application,\n reflectedEntityData = {},\n reflectedRelatedEntityData = {},\n}: RuntimeGraphClientOptions<TTransportOptions>): FetchGraphClient<TTransportOptions> => {\n const graph = createFetchGraphReadCapability({ runtimeTransport, requestId });\n const clientCache = configuredClientCache ?? createGraphClientCache();\n const runtime = {\n ...graph.runtime,\n observe: <TParams, TResult>(\n read: QueryOrView<TParams, TResult>,\n params: TParams,\n options?: TTransportOptions,\n ) =>\n graph.runtime\n .observe(read, params, options)\n .pipe(\n Stream.map(\n snapshot => reconcileGraphReadSnapshot(clientCache, read, params, snapshot).value,\n ),\n ),\n };\n const operation = { runtimeTransport, requestId };\n\n return {\n graph: createRuntimeBoundDataGraphApi(() => runtime),\n graphExecutor: graph.graphExecutor,\n clientCache,\n ...(application ? { application } : {}),\n runtimeTransport,\n operationBridgeAdapters: [createFetchOperationBridgeAdapter(operation)],\n reflectedOperationInvoker: createFetchReflectedOperationInvoker(operation),\n ...(reflectedEntityData === false\n ? {}\n : { reflectedEntityDataReader: createFetchReflectedEntityDataReader(reflectedEntityData) }),\n ...(reflectedRelatedEntityData === false\n ? {}\n : {\n reflectedRelatedEntityDataReader: createFetchReflectedRelatedEntityDataReader(\n reflectedRelatedEntityData,\n ),\n }),\n };\n};\n"]}
@@ -0,0 +1,27 @@
1
+ import { type CommittedMutationSet, type GraphReadRequest } from '@ontahi/core/data-graph';
2
+ import type { RuntimeProtocolGraphRefreshCause } from '@ontahi/core/runtime/protocol';
3
+ import type { QueryClient, QueryKey, QueryMeta } from '@tanstack/react-query';
4
+ export declare const ONTAHI_GRAPH_READ_META_KEY: "ontahi.graphRead";
5
+ type OntahiGraphReadMeta = QueryMeta & {
6
+ readonly [ONTAHI_GRAPH_READ_META_KEY]: {
7
+ readonly kind: 'canonical';
8
+ readonly request: GraphReadRequest;
9
+ readonly lifecycle: 'once' | 'live';
10
+ } | {
11
+ readonly kind: 'unknown';
12
+ readonly lifecycle: 'once' | 'live';
13
+ };
14
+ };
15
+ export type SemanticGraphReadInvalidation = {
16
+ readonly queryKeys: readonly QueryKey[];
17
+ };
18
+ export type SemanticGraphReadInvalidationOptions = {
19
+ readonly causedBy?: RuntimeProtocolGraphRefreshCause;
20
+ readonly associateRefreshes?: (requests: readonly GraphReadRequest[], causedBy: RuntimeProtocolGraphRefreshCause) => void;
21
+ };
22
+ export declare const withCanonicalGraphReadMeta: (meta: QueryMeta | undefined, request: GraphReadRequest, lifecycle?: "once" | "live") => OntahiGraphReadMeta;
23
+ export declare const withUnknownGraphReadMeta: (meta: QueryMeta | undefined, lifecycle?: "once" | "live") => OntahiGraphReadMeta;
24
+ export declare const getCanonicalGraphReadFromMeta: (meta: QueryMeta | undefined) => GraphReadRequest | undefined;
25
+ export declare const invalidateSemanticGraphReads: (queryClient: QueryClient, committed: CommittedMutationSet, options?: SemanticGraphReadInvalidationOptions) => Promise<SemanticGraphReadInvalidation>;
26
+ export {};
27
+ //# sourceMappingURL=semantic-invalidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-invalidation.d.ts","sourceRoot":"","sources":["../../src/graph/semantic-invalidation.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE9E,eAAO,MAAM,0BAA0B,EAAG,kBAA2B,CAAC;AAEtE,KAAK,mBAAmB,GAAG,SAAS,GAAG;IACrC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EACjC;QACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;KACrC,GACD;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IACrD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,QAAQ,EAAE,gCAAgC,KACvC,IAAI,CAAC;CACX,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,MAAM,SAAS,GAAG,SAAS,EAC3B,SAAS,gBAAgB,EACzB,YAAW,MAAM,GAAG,MAAe,KAClC,mBAGD,CAAC;AAEH,eAAO,MAAM,wBAAwB,GACnC,MAAM,SAAS,GAAG,SAAS,EAC3B,YAAW,MAAM,GAAG,MAAe,KAClC,mBAGD,CAAC;AAEH,eAAO,MAAM,6BAA6B,GACxC,MAAM,SAAS,GAAG,SAAS,KAC1B,gBAAgB,GAAG,SASrB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,aAAa,WAAW,EACxB,WAAW,oBAAoB,EAC/B,UAAU,oCAAoC,KAC7C,OAAO,CAAC,6BAA6B,CA4CvC,CAAC"}