@effect-app/vue 4.0.0-beta.271 → 4.0.0-beta.273

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.
@@ -1,27 +1,29 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { isCancelledError } from "@tanstack/vue-query";
3
2
  import { camelCase } from "change-case";
3
+ import * as Context from "effect-app/Context";
4
4
  import * as Effect from "effect-app/Effect";
5
+ import * as Layer from "effect-app/Layer";
5
6
  import * as S from "effect-app/Schema";
6
7
  import * as Exit from "effect/Exit";
7
8
  import * as Hash from "effect/Hash";
8
9
  import * as Struct from "effect/Struct";
9
- import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
10
- import { onBeforeUnmount, ref } from "vue";
10
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
11
+ import { computed, onBeforeUnmount, ref } from "vue";
12
+ import { invalidateAndAwait, makeAtomClientRuntime } from "./atomQuery.js";
11
13
  import { CommanderStatic } from "./commander.js";
14
+ import { makeTanstackQuery, makeTanstackQueryClient, makeTanstackQueryInvalidator } from "./internal/tanstackQuery.js";
12
15
  import { makeUseCommand } from "./makeUseCommand.js";
13
- import { makeMutation, makeStreamMutation2, useMakeMutation } from "./mutate.js";
14
- import { makeQuery, makeStreamQuery } from "./query.js";
16
+ import { atomQueryInvalidator, combineQueryInvalidators, makeMutation, makeStreamMutation2, useMakeMutation } from "./mutate.js";
17
+ import { makeQuery, makeQueryAtom, makeQueryFamily, makeQueryNew, makeStreamQuery, makeStreamQueryAtom, makeStreamQueryFamily, makeStreamQueryNew } from "./query.js";
15
18
  import { makeRunPromise } from "./runtime.js";
16
- import { awaitResolvedSuspenseResult } from "./suspense.js";
17
19
  // TODO: optimize - work from encoded shape directly
18
20
  const projectHandler = (handler, successSchema, projectionSchema) => {
19
- const encode = S.encodeEffect(successSchema);
20
- const decode = S.decodeEffectConcurrently(projectionSchema);
21
- return (i) => handler(i).pipe(Effect.flatMap(encode), Effect.flatMap(decode));
21
+ const encode = S.encodeSync(successSchema);
22
+ const decode = S.decodeSync(projectionSchema);
23
+ return (i) => handler(i).pipe(Effect.map((value) => decode(encode(value))));
22
24
  };
23
25
  const projectionSchemaHash = (schema) => String(Hash.hash(schema.ast));
24
- const _useMutation = makeMutation();
26
+ const _useMutation = makeMutation(atomQueryInvalidator);
25
27
  const wrapWithSpan = (self, mut) => {
26
28
  const span = (eff) => Effect.withSpan(`mutation ${self.id}`, {}, { captureStackTrace: false })(eff);
27
29
  return (input, options) => span(mut(input, options));
@@ -37,27 +39,39 @@ export const useMutation = ((self) => Object.assign(wrapWithSpan(self, _useMutat
37
39
  * Executes query cache invalidation based on default rules or provided option.
38
40
  * adds a span with the mutation id
39
41
  */
40
- export const useMutationInt = () => {
41
- const _useMutation = useMakeMutation();
42
+ export const useMutationInt = (queryInvalidator) => {
43
+ const _useMutation = useMakeMutation(queryInvalidator);
42
44
  return ((self) => Object.assign(wrapWithSpan(self, _useMutation(self)), { id: self.id }));
43
45
  };
44
46
  export class QueryImpl {
45
47
  getRuntime;
46
- constructor(getRuntime) {
48
+ constructor(getRuntime, getAtomRt, legacyUseQuery) {
47
49
  this.getRuntime = getRuntime;
48
- this.useQuery = makeQuery(this.getRuntime);
49
- this.useStreamQuery = makeStreamQuery(this.getRuntime);
50
+ this.useQuery = legacyUseQuery ?? makeQuery(this.getRuntime, getAtomRt);
51
+ this.useQueryNew = makeQueryNew(this.getRuntime, getAtomRt);
52
+ this.useQueryAtom = makeQueryAtom(this.getRuntime, getAtomRt);
53
+ this.useQueryFamily = makeQueryFamily(this.getRuntime, getAtomRt);
54
+ this.useStreamQuery = makeStreamQuery(this.getRuntime, getAtomRt);
55
+ this.useStreamQueryFamily = makeStreamQueryFamily(this.getRuntime, getAtomRt);
56
+ this.useStreamQueryAtom = makeStreamQueryAtom(this.getRuntime, getAtomRt);
57
+ this.useStreamQueryNew = makeStreamQueryNew(this.getRuntime, getAtomRt);
50
58
  }
51
59
  /**
52
60
  * Effect results are passed to the caller, including errors.
53
61
  * @deprecated use client helpers instead (.query())
54
62
  */
55
63
  useQuery;
64
+ useQueryNew;
65
+ useQueryAtom;
66
+ useQueryFamily;
56
67
  /**
57
68
  * Stream results are accumulated as an array of chunks and returned as reactive state.
58
69
  * @deprecated use client helpers instead (.query())
59
70
  */
60
71
  useStreamQuery;
72
+ useStreamQueryFamily;
73
+ useStreamQueryAtom;
74
+ useStreamQueryNew;
61
75
  /**
62
76
  * The difference with useQuery is that this function will return a Promise you can await in the Setup,
63
77
  * which ensures that either there always is a latest value, or an error occurs on load.
@@ -68,38 +82,74 @@ export class QueryImpl {
68
82
  const runPromise = makeRunPromise(this.getRuntime());
69
83
  const q = this.useQuery(self);
70
84
  return (argOrOptions, options) => {
71
- const [resultRef, latestRef, fetch, uqrt] = q(argOrOptions, { ...options, suspense: true } // experimental_prefetchInRender: true }
72
- );
85
+ const [resultRef, latestRef, fetch, uqrt] = q(argOrOptions, options);
86
+ const latestDefinedRef = computed(() => {
87
+ const latest = latestRef.value;
88
+ if (latest === undefined) {
89
+ throw new Error("Internal Error: suspense resolved without a latest value");
90
+ }
91
+ return latest;
92
+ });
73
93
  const isMounted = ref(true);
74
94
  onBeforeUnmount(() => {
75
95
  isMounted.value = false;
76
96
  });
77
97
  // @effect-diagnostics effect/missingEffectError:off
78
98
  const eff = Effect.gen(function* () {
79
- // we want to throw on error so that we can catch cancelled error and skip handling it
80
- // what's the difference with just calling `fetch` ?
81
- // we will receive a CancelledError which we will have to ignore in our ErrorBoundary, otherwise the user ends up on an error page even if the user e.g cancelled a navigation
82
- const r = yield* Effect.tryPromise(() => uqrt.suspense()).pipe(Effect.catchTag("UnknownError", (err) => isCancelledError(err.cause)
83
- ? Effect.interrupt
84
- : Effect.die(err.cause)));
99
+ const exit = yield* uqrt.awaitResult().pipe(Effect.exit);
85
100
  if (!isMounted.value) {
86
101
  return yield* Effect.interrupt;
87
102
  }
88
- const result = yield* awaitResolvedSuspenseResult(resultRef);
89
- if (AsyncResult.isInitial(result)) {
90
- console.error("Internal Error: Promise should be resolved already", {
91
- self,
92
- argOrOptions,
93
- options,
94
- r,
95
- resultRef
96
- });
97
- return yield* Effect.die("Internal Error: Promise should be resolved already");
103
+ if (Exit.isFailure(exit)) {
104
+ return yield* Exit.failCause(exit.cause);
105
+ }
106
+ return [resultRef, latestDefinedRef, fetch, uqrt];
107
+ });
108
+ return runPromise(eff);
109
+ };
110
+ };
111
+ useSuspenseQueryNew = (self) => {
112
+ const runPromise = makeRunPromise(this.getRuntime());
113
+ const q = this.useQueryNew(self);
114
+ return (argOrOptions, options) => {
115
+ const view = q(argOrOptions, options);
116
+ const data = computed(() => {
117
+ const latest = view.data.value;
118
+ if (latest === undefined) {
119
+ throw new Error("Internal Error: suspenseNew resolved without a latest value");
120
+ }
121
+ return latest;
122
+ });
123
+ const isMounted = ref(true);
124
+ onBeforeUnmount(() => {
125
+ isMounted.value = false;
126
+ });
127
+ // @effect-diagnostics effect/missingEffectError:off
128
+ const eff = Effect.gen(function* () {
129
+ const exit = yield* view.awaitResult().pipe(Effect.exit);
130
+ if (!isMounted.value) {
131
+ return yield* Effect.interrupt;
98
132
  }
99
- if (AsyncResult.isFailure(result)) {
100
- return yield* Exit.failCause(result.cause);
133
+ if (Exit.isFailure(exit)) {
134
+ return yield* Exit.failCause(exit.cause);
101
135
  }
102
- return [resultRef, latestRef, fetch, uqrt];
136
+ const fetch = (_options) => view.refetch();
137
+ const handle = {
138
+ awaitResult: view.awaitResult,
139
+ refetch: view.refetch,
140
+ refresh: view.refresh,
141
+ registry: view.registry,
142
+ atom: view.atom
143
+ };
144
+ return Object.assign([
145
+ view.result,
146
+ data,
147
+ fetch,
148
+ handle
149
+ ], {
150
+ ...view,
151
+ data
152
+ });
103
153
  });
104
154
  return runPromise(eff);
105
155
  };
@@ -107,21 +157,94 @@ export class QueryImpl {
107
157
  }
108
158
  // somehow mrt.runtimeEffect doesnt work sync, but this workaround works fine? not sure why though as the layers are generally only sync
109
159
  const managedRuntimeRt = (mrt) => mrt.runSync(Effect.context());
160
+ const makeResolvedAtomQueryInvalidator = (getContext) => {
161
+ let reactivity;
162
+ const getReactivity = () => {
163
+ if (reactivity !== undefined)
164
+ return reactivity;
165
+ const service = Context.getOrUndefined(getContext(), Reactivity.Reactivity);
166
+ if (service === undefined) {
167
+ throw new Error("Reactivity service is missing from the client runtime");
168
+ }
169
+ return reactivity = service;
170
+ };
171
+ return {
172
+ invalidateAndAwait: (keys) => invalidateAndAwait(keys).pipe(Effect.provideService(Reactivity.Reactivity, getReactivity()))
173
+ };
174
+ };
110
175
  export const makeClient = (
111
176
  // global, but only accessible after startup has completed
112
- getBaseMrt, clientFor_, rtHooks) => {
177
+ getBaseMrt, clientFor_, rtHooks, options) => {
113
178
  const getBaseRt = () => managedRuntimeRt(getBaseMrt());
114
179
  const makeCommand = makeUseCommand(rtHooks);
115
180
  let cmd;
116
181
  const useCommand = () => cmd ??= getBaseMrt().runSync(makeCommand);
182
+ // one AtomRuntime for the query engine, built lazily from the live app context;
183
+ // shares the ManagedRuntime memoMap so layers + Reactivity are the same instances.
184
+ let atomRt;
185
+ const getAtomRt = () => (atomRt ??= makeAtomClientRuntime(() => Layer.succeedContext(getBaseRt()), getBaseMrt().memoMap));
186
+ const legacyQueryEngine = options?.legacyQueryEngine ?? "tanstack";
187
+ let tanstackQueryClient;
188
+ const getTanstackQueryClient = () => tanstackQueryClient ??= makeTanstackQueryClient();
189
+ const atomInvalidator = makeResolvedAtomQueryInvalidator(getBaseRt);
190
+ const queryInvalidator = legacyQueryEngine === "tanstack"
191
+ ? combineQueryInvalidators(atomInvalidator, makeTanstackQueryInvalidator(getTanstackQueryClient()))
192
+ : atomInvalidator;
117
193
  let m;
118
- const useMutation = () => m ??= useMutationInt();
194
+ const useMutation = () => m ??= useMutationInt(queryInvalidator);
119
195
  let sm2;
120
- const useStreamMutation2 = () => sm2 ??= makeStreamMutation2();
121
- const query = new QueryImpl(getBaseRt);
196
+ const useStreamMutation2 = () => sm2 ??= makeStreamMutation2(queryInvalidator);
197
+ const legacyUseQuery = legacyQueryEngine === "tanstack"
198
+ ? makeTanstackQuery(getBaseRt, getTanstackQueryClient())
199
+ : undefined;
200
+ const query = new QueryImpl(getBaseRt, getAtomRt, legacyUseQuery);
122
201
  const useQuery = query.useQuery;
202
+ const useQueryNew = query.useQueryNew;
203
+ const useQueryAtom = query.useQueryAtom;
204
+ const useQueryFamily = query.useQueryFamily;
123
205
  const useSuspenseQuery = query.useSuspenseQuery;
206
+ const useSuspenseQueryNew = query.useSuspenseQueryNew;
124
207
  const useStreamQuery = query.useStreamQuery;
208
+ const useStreamQueryFamily = query.useStreamQueryFamily;
209
+ const useStreamQueryAtom = query.useStreamQueryAtom;
210
+ const useStreamQueryNew = query.useStreamQueryNew;
211
+ const isQueryHandler = (handler) => handler.Request.type === "query" && !handler.Request.stream;
212
+ const isStreamQueryHandler = (handler) => handler.Request.type === "query" && handler.Request.stream;
213
+ const queryHelpersFor = (handler) => ({
214
+ family: useQueryFamily(handler),
215
+ atom: useQueryAtom(handler),
216
+ query: useQuery(handler),
217
+ queryNew: useQueryNew(handler),
218
+ suspense: useSuspenseQuery(handler),
219
+ suspenseNew: useSuspenseQueryNew(handler)
220
+ });
221
+ const streamQueryHelpersFor = (handler) => ({
222
+ family: useStreamQueryFamily(handler),
223
+ atom: useStreamQueryAtom(handler),
224
+ query: useStreamQuery(handler),
225
+ queryNew: useStreamQueryNew(handler)
226
+ });
227
+ const projectQueryFor = (handler) => (projectionSchema) => {
228
+ const successSchema = handler.Request.success;
229
+ const projectionHash = projectionSchemaHash(projectionSchema);
230
+ const projected = projectHandler(handler.handler, successSchema, projectionSchema);
231
+ const projectedHandler = {
232
+ handler: projected,
233
+ id: handler.id,
234
+ Request: handler.Request,
235
+ queryKeyProjectionHash: projectionHash
236
+ };
237
+ if (handler.options) {
238
+ return {
239
+ request: projected,
240
+ ...queryHelpersFor({ ...projectedHandler, options: handler.options })
241
+ };
242
+ }
243
+ return {
244
+ request: projected,
245
+ ...queryHelpersFor(projectedHandler)
246
+ };
247
+ };
125
248
  const mergeInvalidation = (a, b) => {
126
249
  if (!a && !b) {
127
250
  return undefined;
@@ -150,22 +273,39 @@ getBaseMrt, clientFor_, rtHooks) => {
150
273
  };
151
274
  const mapQuery = (client) => {
152
275
  const queries = Struct.keys(client).reduce((acc, key) => {
153
- const requestType = client[key].Request.type;
154
- const isStream = client[key].Request.stream;
155
- if (requestType === "query" && !isStream) {
156
- ;
157
- acc[camelCase(key) + "Query"] = Object.assign(useQuery(client[key]), {
276
+ const handler = client[key];
277
+ if (isQueryHandler(handler)) {
278
+ Object.assign(acc, {
279
+ [camelCase(key) + "QueryFamily"]: Object.assign(useQueryFamily(handler), {
280
+ id: client[key].id
281
+ })
282
+ });
283
+ acc[camelCase(key) + "Query"] = Object.assign(useQuery(handler), {
158
284
  id: client[key].id
159
285
  });
160
- acc[camelCase(key) + "SuspenseQuery"] = Object.assign(useSuspenseQuery(client[key]), {
286
+ acc[camelCase(key) + "QueryNew"] = Object.assign(useQueryNew(handler), {
161
287
  id: client[key].id
162
288
  });
163
- }
164
- else if (requestType === "query" && isStream) {
165
- ;
166
- acc[camelCase(key) + "Query"] = Object.assign(useStreamQuery(client[key]), {
289
+ acc[camelCase(key) + "SuspenseQuery"] = Object.assign(useSuspenseQuery(handler), {
167
290
  id: client[key].id
168
291
  });
292
+ acc[camelCase(key) + "SuspenseQueryNew"] = Object.assign(useSuspenseQueryNew(handler), {
293
+ id: client[key].id
294
+ });
295
+ }
296
+ else if (isStreamQueryHandler(handler)) {
297
+ const streamHelpers = streamQueryHelpersFor(handler);
298
+ Object.assign(acc, {
299
+ [camelCase(key) + "QueryFamily"]: Object.assign(streamHelpers.family, {
300
+ id: client[key].id
301
+ }),
302
+ [camelCase(key) + "Query"]: Object.assign(streamHelpers.query, {
303
+ id: client[key].id
304
+ }),
305
+ [camelCase(key) + "QueryNew"]: Object.assign(streamHelpers.queryNew, {
306
+ id: client[key].id
307
+ })
308
+ });
169
309
  }
170
310
  return acc;
171
311
  }, {});
@@ -228,40 +368,24 @@ getBaseMrt, clientFor_, rtHooks) => {
228
368
  const invalidation = queryInvalidation?.(client);
229
369
  const queryResources = makeQueryResources(invalidationResources);
230
370
  const extended = Struct.keys(client).reduce((acc, key) => {
231
- const requestType = client[key].Request.type;
232
- const isStream = client[key].Request.stream;
371
+ const handler = client[key];
372
+ const requestType = handler.Request.type;
373
+ const isStream = handler.Request.stream;
233
374
  const fn = Command.fn(client[key].id);
234
- const h_ = client[key].handler;
375
+ const h_ = handler.handler;
235
376
  const request = h_;
236
- acc[key] = Object.assign(requestType === "query" && !isStream
377
+ acc[key] = Object.assign(isQueryHandler(handler)
237
378
  ? {
238
- ...client[key],
379
+ ...handler,
239
380
  request,
240
- query: useQuery(client[key]),
241
- suspense: useSuspenseQuery(client[key]),
242
- project: (projectionSchema) => {
243
- const successSchema = client[key].Request.success;
244
- const projectionHash = projectionSchemaHash(projectionSchema);
245
- const projected = projectHandler(h_, successSchema, projectionSchema);
246
- const fakeHandler = {
247
- handler: projected,
248
- id: client[key].id,
249
- Request: client[key].Request,
250
- options: client[key].options,
251
- queryKeyProjectionHash: projectionHash
252
- };
253
- return {
254
- request: projected,
255
- query: useQuery(fakeHandler),
256
- suspense: useSuspenseQuery(fakeHandler)
257
- };
258
- }
381
+ ...queryHelpersFor(handler),
382
+ project: projectQueryFor(handler)
259
383
  }
260
- : requestType === "query" && isStream
384
+ : isStreamQueryHandler(handler)
261
385
  ? {
262
386
  ...client[key],
263
387
  request,
264
- query: useStreamQuery(client[key])
388
+ ...streamQueryHelpersFor(handler)
265
389
  }
266
390
  : requestType === "command" && isStream
267
391
  ? (() => {
@@ -367,7 +491,8 @@ getBaseMrt, clientFor_, rtHooks) => {
367
491
  return {
368
492
  Command,
369
493
  useCommand,
370
- clientFor
494
+ clientFor,
495
+ tanstackQueryClient: getTanstackQueryClient()
371
496
  };
372
497
  };
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDOUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUt2QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFFbkMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFHbkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxHQUFHLEVBQW9CLE1BQU0sS0FBSyxDQUFBO0FBQzlFLE9BQU8sRUFBa0IsZUFBZSxFQUFpQixNQUFNLGdCQUFnQixDQUFBO0FBRS9FLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDNUUsT0FBTyxFQUEwQixZQUFZLEVBQUUsbUJBQW1CLEVBQTRCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsSSxPQUFPLEVBQTJDLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDaEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLM0Qsb0RBQW9EO0FBQ3BELE1BQU0sY0FBYyxHQUFHLENBQ3JCLE9BQWlELEVBQ2pELGFBQW9CLEVBQ3BCLGdCQUF1QixFQUN2QixFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFh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
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBS3ZDLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFFbkMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFHbkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFFdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFvQixlQUFlLEVBQUUsR0FBRyxFQUFvQixNQUFNLEtBQUssQ0FBQTtBQUN4RixPQUFPLEVBQTBCLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDbEcsT0FBTyxFQUFrQixlQUFlLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFFdEgsT0FBTyxFQUEwQixjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQTBCLFlBQVksRUFBRSxtQkFBbUIsRUFBbUQsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pNLE9BQU8sRUFBcUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxtQkFB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
package/dist/mutate.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { type InvalidateOptions, type InvalidateQueryFilters, type QueryClient } from "@tanstack/vue-query";
2
1
  import { type Req } from "effect-app/client";
3
2
  import type { ClientForOptions, RequestHandlerWithInput } from "effect-app/client/clientFor";
4
3
  import type { InvalidateQueryInstruction } from "effect-app/client/makeClient";
@@ -7,6 +6,7 @@ import type * as Cause from "effect/Cause";
7
6
  import * as Exit from "effect/Exit";
8
7
  import * as Stream from "effect/Stream";
9
8
  import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
9
+ import type * as Reactivity from "effect/unstable/reactivity/Reactivity";
10
10
  import { type ComputedRef } from "vue";
11
11
  export type GetQueryKey = (h: {
12
12
  id: string;
@@ -44,11 +44,21 @@ export interface Res<A, E> {
44
44
  }
45
45
  export declare function make<A, E, R>(self: Effect.Effect<A, E, R>): readonly [import("vue").ShallowRef<AsyncResult.AsyncResult<A, E>, AsyncResult.AsyncResult<A, E>>, ComputedRef<A | undefined>, Effect.Effect<AsyncResult.Failure<A, E> | AsyncResult.Success<A, E>, never, R>];
46
46
  /**
47
- * An entry for `queryInvalidation`. Narrowed alias of effect-app's
48
- * `InvalidateQueryInstruction` with tanstack-query's `InvalidateQueryFilters`
49
- * and `InvalidateOptions` substituted for the structural defaults.
47
+ * An entry for `queryInvalidation`: a raw query key, an `{ id }` handler ref, or a
48
+ * `{ filters }` shape. The atom engine acts on entries that carry a concrete query
49
+ * key: raw arrays, handler refs, or `{ filters: { queryKey } }`. Predicate-only
50
+ * filters have no exact-key reactivity equivalent and fail fast.
50
51
  */
51
- export type InvalidationEntry = InvalidateQueryInstruction<InvalidateQueryFilters, InvalidateOptions>;
52
+ export type QueryKeyInvalidationFilters = {
53
+ readonly queryKey: ReadonlyArray<unknown>;
54
+ };
55
+ export type InvalidationEntry = InvalidateQueryInstruction<QueryKeyInvalidationFilters>;
56
+ export type QueryInvalidationEffect<R = never> = (keys: ReadonlyArray<ReadonlyArray<unknown>>) => Effect.Effect<void, never, R>;
57
+ export interface QueryInvalidator<R = never> {
58
+ readonly invalidateAndAwait: QueryInvalidationEffect<R>;
59
+ }
60
+ export declare const atomQueryInvalidator: QueryInvalidator<Reactivity.Reactivity>;
61
+ export declare const combineQueryInvalidators: <R>(...invalidators: ReadonlyArray<QueryInvalidator<R>>) => QueryInvalidator<R>;
52
62
  export interface MutationOptionsBase<A = unknown, B = A, E2 = never, R2 = never> {
53
63
  /**
54
64
  * By default we invalidate one level of the query key, e.g $project/$configuration.get, we invalidate $project.
@@ -89,10 +99,10 @@ export declare const asResult: <Args extends readonly any[], A, E, R>(handler: (
89
99
  * stream terminates successfully. Errors are surfaced as `AsyncResult.failure`.
90
100
  */
91
101
  export declare const asStreamResult: <Args extends readonly any[], A, E, R>(handler: (...args: Args) => Stream.Stream<A, E, R>) => readonly [ComputedRef<AsyncResult.AsyncResult<A, E>>, (...args: Args) => Effect.Effect<void, never, R>];
92
- export declare const invalidateQueries: (queryClient: QueryClient, self: {
102
+ export declare const invalidateQueries: <RInvalidator>(self: {
93
103
  id: string;
94
104
  options?: ClientForOptions;
95
- }, options?: MutationOptionsBase) => <A, E, R>(eff: Effect.Effect<A, E, R>, input?: unknown) => Effect.Effect<unknown, E, Exclude<R, never>>;
105
+ }, options: MutationOptionsBase | undefined, queryInvalidator: QueryInvalidator<RInvalidator>) => <A, E, R>(eff: Effect.Effect<A, E, R>, input?: unknown) => Effect.Effect<unknown, E, Exclude<R, never> | Exclude<RInvalidator, import("effect/Tracer").ParentSpan>>;
96
106
  /**
97
107
  * A callable mutation result. When `I = void` the input argument may be omitted.
98
108
  */
@@ -100,8 +110,8 @@ export interface MutationFn<I, A, E, R, Id extends string> {
100
110
  <B = A, E2 = never, R2 = never>(input: I, options?: MutationOptionsBase<A, B, E2, R2>): Effect.Effect<B, E | E2, R | R2>;
101
111
  readonly id: Id;
102
112
  }
103
- export declare const makeMutation: () => <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>) => MutationFn<I, A, E, R, Id>;
104
- export declare const useMakeMutation: () => <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>) => MutationFn<I, A, E, R, Id>;
113
+ export declare const makeMutation: <RInvalidator>(queryInvalidator: QueryInvalidator<RInvalidator>) => <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>) => MutationFn<I, A, E, R, Id>;
114
+ export declare const useMakeMutation: <RInvalidator>(queryInvalidator: QueryInvalidator<RInvalidator>) => <I, E, A, R, Request extends Req, Id extends string>(self: RequestHandlerWithInput<I, A, E, R, Request, Id>) => MutationFn<I, A, E, R, Id>;
105
115
  /**
106
116
  * Returns a stream-based mutation factory for use with `streamFn`.
107
117
  * The outer Effect sets up per-invocation invalidation scaffolding
@@ -109,10 +119,8 @@ export declare const useMakeMutation: () => <I, E, A, R, Request extends Req, Id
109
119
  *
110
120
  * Use with `streamFn` / `Command.streamFn(id)(mutateHandler, ...combinators)` so that
111
121
  * the command manages its own reactive state internally.
112
- *
113
- * Must be called inside a Vue setup context (uses `useQueryClient` internally).
114
122
  */
115
- export declare const makeStreamMutation2: () => (self: {
123
+ export declare const makeStreamMutation2: <RInvalidator>(queryInvalidator: QueryInvalidator<RInvalidator>) => (self: {
116
124
  id: string;
117
125
  options?: ClientForOptions;
118
126
  handler: (i: any) => Stream.Stream<any, any, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}