@effect-app/vue 4.0.0-beta.272 → 4.0.0-beta.274

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, makeTanstackQueryCacheUpdater, 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 { atomQueryCacheUpdater, combineQueryCacheUpdaters, makeQuery, makeQueryAtom, makeQueryFamily, makeQueryNew, makeStreamQuery, makeStreamQueryAtom, makeStreamQueryFamily, makeStreamQueryNew, optionalAtomQueryCacheUpdater, setQueryCacheUpdater } 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
+ const encode = S.encodeUnknownEffect(successSchema);
22
+ const decode = S.decodeUnknownEffect(projectionSchema);
21
23
  return (i) => handler(i).pipe(Effect.flatMap(encode), Effect.flatMap(decode));
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,97 @@ 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;
193
+ setQueryCacheUpdater(legacyQueryEngine === "tanstack"
194
+ ? combineQueryCacheUpdaters(makeTanstackQueryCacheUpdater(getTanstackQueryClient()), optionalAtomQueryCacheUpdater)
195
+ : atomQueryCacheUpdater);
117
196
  let m;
118
- const useMutation = () => m ??= useMutationInt();
197
+ const useMutation = () => m ??= useMutationInt(queryInvalidator);
119
198
  let sm2;
120
- const useStreamMutation2 = () => sm2 ??= makeStreamMutation2();
121
- const query = new QueryImpl(getBaseRt);
199
+ const useStreamMutation2 = () => sm2 ??= makeStreamMutation2(queryInvalidator);
200
+ const legacyUseQuery = legacyQueryEngine === "tanstack"
201
+ ? makeTanstackQuery(getBaseRt, getTanstackQueryClient())
202
+ : undefined;
203
+ const query = new QueryImpl(getBaseRt, getAtomRt, legacyUseQuery);
122
204
  const useQuery = query.useQuery;
205
+ const useQueryNew = query.useQueryNew;
206
+ const useQueryAtom = query.useQueryAtom;
207
+ const useQueryFamily = query.useQueryFamily;
123
208
  const useSuspenseQuery = query.useSuspenseQuery;
209
+ const useSuspenseQueryNew = query.useSuspenseQueryNew;
124
210
  const useStreamQuery = query.useStreamQuery;
211
+ const useStreamQueryFamily = query.useStreamQueryFamily;
212
+ const useStreamQueryAtom = query.useStreamQueryAtom;
213
+ const useStreamQueryNew = query.useStreamQueryNew;
214
+ const isQueryHandler = (handler) => handler.Request.type === "query" && !handler.Request.stream;
215
+ const isStreamQueryHandler = (handler) => handler.Request.type === "query" && handler.Request.stream;
216
+ const queryHelpersFor = (handler) => ({
217
+ family: useQueryFamily(handler),
218
+ atom: useQueryAtom(handler),
219
+ query: useQuery(handler),
220
+ queryNew: useQueryNew(handler),
221
+ suspense: useSuspenseQuery(handler),
222
+ suspenseNew: useSuspenseQueryNew(handler)
223
+ });
224
+ const streamQueryHelpersFor = (handler) => ({
225
+ family: useStreamQueryFamily(handler),
226
+ atom: useStreamQueryAtom(handler),
227
+ query: useStreamQuery(handler),
228
+ queryNew: useStreamQueryNew(handler)
229
+ });
230
+ const projectQueryFor = (handler) => (projectionSchema) => {
231
+ const successSchema = handler.Request.success;
232
+ const projectionHash = projectionSchemaHash(projectionSchema);
233
+ const projected = projectHandler(handler.handler, successSchema, projectionSchema);
234
+ const projectedHandler = {
235
+ handler: projected,
236
+ id: handler.id,
237
+ Request: handler.Request,
238
+ queryKeyProjectionHash: projectionHash
239
+ };
240
+ if (handler.options) {
241
+ return {
242
+ request: projected,
243
+ ...queryHelpersFor({ ...projectedHandler, options: handler.options })
244
+ };
245
+ }
246
+ return {
247
+ request: projected,
248
+ ...queryHelpersFor(projectedHandler)
249
+ };
250
+ };
125
251
  const mergeInvalidation = (a, b) => {
126
252
  if (!a && !b) {
127
253
  return undefined;
@@ -150,22 +276,39 @@ getBaseMrt, clientFor_, rtHooks) => {
150
276
  };
151
277
  const mapQuery = (client) => {
152
278
  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]), {
279
+ const handler = client[key];
280
+ if (isQueryHandler(handler)) {
281
+ Object.assign(acc, {
282
+ [camelCase(key) + "QueryFamily"]: Object.assign(useQueryFamily(handler), {
283
+ id: client[key].id
284
+ })
285
+ });
286
+ acc[camelCase(key) + "Query"] = Object.assign(useQuery(handler), {
158
287
  id: client[key].id
159
288
  });
160
- acc[camelCase(key) + "SuspenseQuery"] = Object.assign(useSuspenseQuery(client[key]), {
289
+ acc[camelCase(key) + "QueryNew"] = Object.assign(useQueryNew(handler), {
161
290
  id: client[key].id
162
291
  });
163
- }
164
- else if (requestType === "query" && isStream) {
165
- ;
166
- acc[camelCase(key) + "Query"] = Object.assign(useStreamQuery(client[key]), {
292
+ acc[camelCase(key) + "SuspenseQuery"] = Object.assign(useSuspenseQuery(handler), {
167
293
  id: client[key].id
168
294
  });
295
+ acc[camelCase(key) + "SuspenseQueryNew"] = Object.assign(useSuspenseQueryNew(handler), {
296
+ id: client[key].id
297
+ });
298
+ }
299
+ else if (isStreamQueryHandler(handler)) {
300
+ const streamHelpers = streamQueryHelpersFor(handler);
301
+ Object.assign(acc, {
302
+ [camelCase(key) + "QueryFamily"]: Object.assign(streamHelpers.family, {
303
+ id: client[key].id
304
+ }),
305
+ [camelCase(key) + "Query"]: Object.assign(streamHelpers.query, {
306
+ id: client[key].id
307
+ }),
308
+ [camelCase(key) + "QueryNew"]: Object.assign(streamHelpers.queryNew, {
309
+ id: client[key].id
310
+ })
311
+ });
169
312
  }
170
313
  return acc;
171
314
  }, {});
@@ -228,40 +371,24 @@ getBaseMrt, clientFor_, rtHooks) => {
228
371
  const invalidation = queryInvalidation?.(client);
229
372
  const queryResources = makeQueryResources(invalidationResources);
230
373
  const extended = Struct.keys(client).reduce((acc, key) => {
231
- const requestType = client[key].Request.type;
232
- const isStream = client[key].Request.stream;
374
+ const handler = client[key];
375
+ const requestType = handler.Request.type;
376
+ const isStream = handler.Request.stream;
233
377
  const fn = Command.fn(client[key].id);
234
- const h_ = client[key].handler;
378
+ const h_ = handler.handler;
235
379
  const request = h_;
236
- acc[key] = Object.assign(requestType === "query" && !isStream
380
+ acc[key] = Object.assign(isQueryHandler(handler)
237
381
  ? {
238
- ...client[key],
382
+ ...handler,
239
383
  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
- }
384
+ ...queryHelpersFor(handler),
385
+ project: projectQueryFor(handler)
259
386
  }
260
- : requestType === "query" && isStream
387
+ : isStreamQueryHandler(handler)
261
388
  ? {
262
389
  ...client[key],
263
390
  request,
264
- query: useStreamQuery(client[key])
391
+ ...streamQueryHelpersFor(handler)
265
392
  }
266
393
  : requestType === "command" && isStream
267
394
  ? (() => {
@@ -367,7 +494,8 @@ getBaseMrt, clientFor_, rtHooks) => {
367
494
  return {
368
495
  Command,
369
496
  useCommand,
370
- clientFor
497
+ clientFor,
498
+ tanstackQueryClient: getTanstackQueryClient()
371
499
  };
372
500
  };
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDOUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUt2QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFFbkMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFHbkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxHQUFHLEVBQW9CLE1BQU0sS0FBSyxDQUFBO0FBQzlFLE9BQU8sRUFBa0IsZUFBZSxFQUFpQixNQUFNLGdCQUFnQixDQUFBO0FBRS9FLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDNUUsT0FBTyxFQUEwQixZQUFZLEVBQUUsbUJBQW1CLEVBQTRCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsSSxPQUFPLEVBQTJDLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDaEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLM0Qsb0RBQW9EO0FBQ3BELE1BQU0sY0FBYyxHQUFHLENBQ3JCLE9BQWlELEVBQ2pELGFBQW9CLEVBQ3BCLGdCQUF1QixFQUN2QixFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFh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
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBS3ZDLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFFbkMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFHbkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFFdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFvQixlQUFlLEVBQUUsR0FBRyxFQUFvQixNQUFNLEtBQUssQ0FBQTtBQUN4RixPQUFPLEVBQTBCLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDbEcsT0FBTyxFQUFrQixlQUFlLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFFckosT0FBTyxFQUEwQixjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQTBCLFlBQVksRUFBRSxtQkFBbUIsRUFBbUQsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pNLE9BQU8sRUFBRSxxQkFBcUIsRUFBNEIseUJBQXlCLEVBQTJDLFNBQVMsRUFBRSxhQUFhLEVB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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":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,WAAW,EAAkB,MAAM,qBAAqB,CAAA;AAC3H,OAAO,EAA+F,KAAK,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACzI,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAC5F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAC9E,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAEnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAY,KAAK,WAAW,EAAc,MAAM,KAAK,CAAA;AAE5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,KAAK,MAAM,EAAE,CAAA;AAErF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAMhC,CAAA;AAID;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,OAAQ,WAAW,GAAG,SAAS,SAEhE,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,WAAyC,CAAA;AAEnE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5C,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAoBX;AAED,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;CAC3C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,iNAiBzD;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;AAErG,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAK;IAC7E;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,CAClB,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KACjC,iBAAiB,EAAE,CAAA;IACxB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;CACjD;AAED,eAAO,MAAM,QAAQ,GAAI,IAAI,SAAS,SAAS,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAClD,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACjD,SAAS,CACV,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAmB5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,SAAS,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WACxD,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACjD,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAsCxG,CAAA;AAsHD,eAAO,MAAM,iBAAiB,gBACf,WAAW,QAClB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,YACtC,mBAAmB,MAMb,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,OAAO,iDA0BtE,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,MAAM;IACvD,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAK,EAC5B,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAChB;AAED,eAAO,MAAM,YAAY,SAMF,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,SAAS,GAAG,EAAE,EAAE,SAAS,MAAM,QAC/D,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,KACrD,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAM7B,CAAA;AAGD,eAAO,MAAM,eAAe,SAQL,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,SAAS,GAAG,EAAE,EAAE,SAAS,MAAM,QAC/D,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,KACrD,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAK7B,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,eAItB;IACJ,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAClD,uBACoB,mBAAmB,CAAC,mBAAmB,CAAC,SAsBlD,GAAG,iCAEjB,CAAA"}
1
+ {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"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"}