@effect-app/vue 4.0.0-beta.163 → 4.0.0-beta.165
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/lib.d.ts +7 -9
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -7
- package/dist/makeClient.d.ts +21 -4
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +61 -9
- package/dist/mutate.d.ts +3 -3
- package/dist/mutate.d.ts.map +1 -1
- package/dist/mutate.js +7 -7
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -2
- package/package.json +2 -2
- package/src/lib.ts +7 -13
- package/src/makeClient.ts +122 -11
- package/src/mutate.ts +40 -32
- package/src/query.ts +2 -2
- package/test/dist/stubs.d.ts +1253 -355
- package/test/dist/stubs.d.ts.map +1 -1
- package/test/dist/stubs.js +21 -3
- package/test/makeClient.test.ts +96 -14
- package/test/stubs.ts +25 -2
package/dist/mutate.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { useQueryClient } from "@tanstack/vue-query";
|
|
3
3
|
import { Effect, Option } from "effect-app";
|
|
4
|
+
import { makeQueryKey } from "effect-app/client";
|
|
4
5
|
import { tuple } from "effect-app/Function";
|
|
5
6
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
|
|
6
7
|
import { computed, shallowRef } from "vue";
|
|
7
|
-
import { makeQueryKey } from "./lib.js";
|
|
8
8
|
export const getQueryKey = (h) => {
|
|
9
9
|
const key = makeQueryKey(h);
|
|
10
10
|
const ns = key.filter((_) => _.startsWith("$"));
|
|
@@ -73,10 +73,10 @@ export const asResult = (handler) => {
|
|
|
73
73
|
};
|
|
74
74
|
export const invalidateQueries = (queryClient, self, options) => {
|
|
75
75
|
const invalidateQueries = (filters, options) => Effect.currentSpan.pipe(Effect.orElseSucceed(() => null), Effect.flatMap((span) => Effect.promise(() => queryClient.invalidateQueries(filters, { ...options, updateMeta: { span } }))));
|
|
76
|
-
const invalidateCache = Effect.suspend(() => {
|
|
76
|
+
const invalidateCache = (input, output) => Effect.suspend(() => {
|
|
77
77
|
const queryKey = getQueryKey(self);
|
|
78
78
|
if (options) {
|
|
79
|
-
const opts = options(queryKey, self.id);
|
|
79
|
+
const opts = options(queryKey, self.id, input, output);
|
|
80
80
|
if (!opts.length) {
|
|
81
81
|
return Effect.void;
|
|
82
82
|
}
|
|
@@ -93,7 +93,7 @@ export const invalidateQueries = (queryClient, self, options) => {
|
|
|
93
93
|
// TODO: should we do this in general on any mutation, regardless of invalidation?
|
|
94
94
|
Effect.sleep(0)), Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false }));
|
|
95
95
|
});
|
|
96
|
-
const handle = (self) => Effect.
|
|
96
|
+
const handle = (self, input) => self.pipe(Effect.onExit((exit) => invalidateCache(input, exit)));
|
|
97
97
|
return handle;
|
|
98
98
|
};
|
|
99
99
|
export const makeMutation = () => {
|
|
@@ -101,7 +101,7 @@ export const makeMutation = () => {
|
|
|
101
101
|
const queryClient = useQueryClient();
|
|
102
102
|
const handle = invalidateQueries(queryClient, self, options?.queryInvalidation);
|
|
103
103
|
const handler = self.handler;
|
|
104
|
-
const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i));
|
|
104
|
+
const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i), i);
|
|
105
105
|
return Object.assign(r, { id: self.id });
|
|
106
106
|
};
|
|
107
107
|
return useMutation;
|
|
@@ -112,9 +112,9 @@ export const useMakeMutation = () => {
|
|
|
112
112
|
const useMutation = (self, options) => {
|
|
113
113
|
const handle = invalidateQueries(queryClient, self, options?.queryInvalidation);
|
|
114
114
|
const handler = self.handler;
|
|
115
|
-
const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i));
|
|
115
|
+
const r = Effect.isEffect(handler) ? handle(handler) : (i) => handle(handler(i), i);
|
|
116
116
|
return Object.assign(r, { id: self.id });
|
|
117
117
|
};
|
|
118
118
|
return useMutation;
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUF5RSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzSCxPQUFPLEVBQWMsTUFBTSxFQUFhLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sbUJBQW1CLENBQUE7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxXQUFXLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBb0IsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQTZDLEVBQUUsRUFBRTtJQUMzRSxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQy9DLDZGQUE2RjtJQUM3RixvRkFBb0Y7SUFDcEYsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ2pGLElBQUksQ0FBQyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdkQs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
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,KAAK,QAAQ,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAgD,KAAK,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACrV,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,EAAa,MAAM,YAAY,CAAA;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/query.js
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
5
5
|
import { useQuery as useTanstackQuery, useQueryClient } from "@tanstack/vue-query";
|
|
6
6
|
import { Array, Cause, Effect, Option, S } from "effect-app";
|
|
7
|
+
import { makeQueryKey } from "effect-app/client";
|
|
7
8
|
import { CauseException, ServiceUnavailableError } from "effect-app/client/errors";
|
|
8
9
|
import { isHttpClientError } from "effect/unstable/http/HttpClientError";
|
|
9
10
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
|
|
10
11
|
import { computed, ref, shallowRef, watch } from "vue";
|
|
11
|
-
import {
|
|
12
|
+
import { reportRuntimeError } from "./lib.js";
|
|
12
13
|
import { makeRunPromise } from "./runtime.js";
|
|
13
14
|
export const makeQuery = (getRuntime) => {
|
|
14
15
|
const useQuery_ = (q) => (arg,
|
|
@@ -155,4 +156,4 @@ export const useUpdateQuery = () => {
|
|
|
155
156
|
};
|
|
156
157
|
return f;
|
|
157
158
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHNEQUFzRDtBQUN0RCx3REFBd0Q7QUFDeEQsNERBQTREO0FBQzVELE9BQU8sRUFBNE0sUUFBUSxJQUFJLGdCQUFnQixFQUFFLGNBQWMsRUFBMkQsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyVixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLG1CQUFtQixDQUFBO0FBRTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUVsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN4RSxPQUFPLEtBQUssV0FBVyxNQUFNLHdDQUF3QyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQTJDLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFvQixNQUFNLEtBQUssQ0FBQTtBQUNqSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQStEN0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUksVUFBb0MsRUFBRSxFQUFFO0lBQ25FLE1BQU0sU0FBUyxHQW9DWCxDQUNGLENBRTBDLEVBQzFDLEVBQUUsQ0FDSixDQUNFLEdBQW1DO0lBQ25DLHFHQUFxRztJQUNyRyxPQUFhO0lBQ2IsT0FBTztNQUNQLEVBQUU7UUFDRixxRkFBcUY7UUFDckYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDL0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2YsTUFBTSxH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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.165",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@vueuse/core": "^14.2.1",
|
|
12
12
|
"change-case": "^5.4.4",
|
|
13
13
|
"query-string": "^9.3.1",
|
|
14
|
-
"effect-app": "4.0.0-beta.
|
|
14
|
+
"effect-app": "4.0.0-beta.165"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@effect/atom-vue": "^4.0.0-beta.59",
|
package/src/lib.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
1
|
+
import { useIntervalFn } from "@vueuse/core"
|
|
2
|
+
import type { Pausable, UseIntervalFnOptions } from "@vueuse/core"
|
|
3
|
+
import { Cause } from "effect-app"
|
|
4
|
+
import type { Effect } from "effect-app"
|
|
5
|
+
import type { Req } from "effect-app/client"
|
|
6
|
+
import type { RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor"
|
|
5
7
|
import { isHttpClientError } from "effect/unstable/http/HttpClientError"
|
|
6
8
|
import type { MaybeRefOrGetter } from "vue"
|
|
7
9
|
import { reportError } from "./errorReporter.js"
|
|
@@ -31,15 +33,7 @@ const determineLevel = (cause: Cause.Cause<unknown>) => {
|
|
|
31
33
|
export const reportRuntimeError = (cause: Cause.Cause<unknown>, extras?: Record<string, unknown>) =>
|
|
32
34
|
reportRuntimeError_(cause, extras, determineLevel(cause))
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
// -> "$Project", "$Configuration", "Index"
|
|
36
|
-
export const makeQueryKey = ({ id, options }: { id: string; options?: ClientForOptions }) =>
|
|
37
|
-
pipe(
|
|
38
|
-
id.split("/"),
|
|
39
|
-
(split) => split.filter((_) => !options || !options?.skipQueryKey?.includes(_)).map((_) => "$" + _)
|
|
40
|
-
)
|
|
41
|
-
.join(".")
|
|
42
|
-
.split(".")
|
|
36
|
+
export { makeQueryKey } from "effect-app/client"
|
|
43
37
|
|
|
44
38
|
export function pauseWhileProcessing(
|
|
45
39
|
iv: Pausable,
|
package/src/makeClient.ts
CHANGED
|
@@ -3,7 +3,9 @@ import { type InvalidateOptions, type InvalidateQueryFilters, isCancelledError,
|
|
|
3
3
|
import { camelCase } from "change-case"
|
|
4
4
|
import { type Context, Effect, Exit, Hash, type Layer, type ManagedRuntime, S, Struct } from "effect-app"
|
|
5
5
|
import { type ApiClientFactory, type Req } from "effect-app/client"
|
|
6
|
-
import type {
|
|
6
|
+
import type { ExtractModuleName, RequestHandler, RequestHandlers, RequestHandlerWithInput, RequestInputFromMake, RequestsAny } from "effect-app/client/clientFor"
|
|
7
|
+
import type { InvalidationCallback } from "effect-app/client/makeClient"
|
|
8
|
+
import type * as ExitResult from "effect/Exit"
|
|
7
9
|
import { type Fiber } from "effect/Fiber"
|
|
8
10
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult"
|
|
9
11
|
import { type ComputedRef, onBeforeUnmount, ref, type WatchSource } from "vue"
|
|
@@ -481,6 +483,35 @@ const managedRuntimeRt = <A, E>(mrt: ManagedRuntime.ManagedRuntime<A, E>) => mrt
|
|
|
481
483
|
|
|
482
484
|
type Base = I18n | Toast
|
|
483
485
|
type Mix = ApiClientFactory | Commander | Base
|
|
486
|
+
|
|
487
|
+
type InvalidationResources = Record<string, Record<string, { readonly type: "command" | "query" }>>
|
|
488
|
+
type UnionToIntersection<U> = (U extends unknown ? (arg: U) => void : never) extends ((arg: infer I) => void) ? I
|
|
489
|
+
: never
|
|
490
|
+
|
|
491
|
+
type CommandInvalidationResources<Req> = Req extends {
|
|
492
|
+
readonly type: "command"
|
|
493
|
+
readonly config?: infer Config
|
|
494
|
+
} ? Config extends {
|
|
495
|
+
readonly invalidationResources?: infer Resources
|
|
496
|
+
} ? Resources extends InvalidationResources ? Resources : never
|
|
497
|
+
: never
|
|
498
|
+
: never
|
|
499
|
+
|
|
500
|
+
type InvalidationResourcesForUnion<M extends RequestsAny> = {
|
|
501
|
+
[K in keyof M]: CommandInvalidationResources<M[K]>
|
|
502
|
+
}[keyof M]
|
|
503
|
+
|
|
504
|
+
type InvalidationResourcesFor<M extends RequestsAny> = [InvalidationResourcesForUnion<M>] extends [never] ? never
|
|
505
|
+
: UnionToIntersection<InvalidationResourcesForUnion<M>> extends infer R ? R extends InvalidationResources ? R
|
|
506
|
+
: never
|
|
507
|
+
: never
|
|
508
|
+
|
|
509
|
+
type QueryInvalidationFactory<M extends RequestsAny> = (client: ClientFrom<M>) => QueryInvalidation<M>
|
|
510
|
+
|
|
511
|
+
type ClientForArgs<M extends RequestsAny> = [InvalidationResourcesFor<M>] extends [never]
|
|
512
|
+
? [queryInvalidation?: QueryInvalidationFactory<M>, invalidationResources?: InvalidationResourcesFor<M>]
|
|
513
|
+
: [queryInvalidation: QueryInvalidationFactory<M> | undefined, invalidationResources: InvalidationResourcesFor<M>]
|
|
514
|
+
|
|
484
515
|
export const makeClient = <RT_, RTHooks>(
|
|
485
516
|
// global, but only accessible after startup has completed
|
|
486
517
|
getBaseMrt: () => ManagedRuntime.ManagedRuntime<RT_ | Mix, never>,
|
|
@@ -500,6 +531,37 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
500
531
|
const useQuery = query.useQuery
|
|
501
532
|
const useSuspenseQuery = query.useSuspenseQuery
|
|
502
533
|
|
|
534
|
+
const mergeInvalidation = (
|
|
535
|
+
a?: MutationOptionsBase["queryInvalidation"],
|
|
536
|
+
b?: MutationOptionsBase["queryInvalidation"]
|
|
537
|
+
): MutationOptionsBase["queryInvalidation"] | undefined => {
|
|
538
|
+
if (!a && !b) {
|
|
539
|
+
return undefined
|
|
540
|
+
}
|
|
541
|
+
return (defaultKey, name, input, output) => [
|
|
542
|
+
...(a?.(defaultKey, name, input, output) ?? []),
|
|
543
|
+
...(b?.(defaultKey, name, input, output) ?? [])
|
|
544
|
+
]
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
const makeQueryResources = <Resources extends InvalidationResources>(resources: Resources | undefined) => {
|
|
548
|
+
if (!resources) {
|
|
549
|
+
return {} as Record<string, Record<string, unknown>>
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
return Struct.keys(resources).reduce((acc, resourceName) => {
|
|
553
|
+
const resource = resources[resourceName]!
|
|
554
|
+
;(acc as any)[resourceName] = Struct.keys(resource).reduce((moduleAcc, requestName) => {
|
|
555
|
+
const request = resource[requestName]!
|
|
556
|
+
if (request.type === "query") {
|
|
557
|
+
;(moduleAcc as any)[requestName] = request
|
|
558
|
+
}
|
|
559
|
+
return moduleAcc
|
|
560
|
+
}, {} as Record<string, unknown>)
|
|
561
|
+
return acc
|
|
562
|
+
}, {} as Record<string, Record<string, unknown>>)
|
|
563
|
+
}
|
|
564
|
+
|
|
503
565
|
const mapQuery = <M extends RequestsAny>(
|
|
504
566
|
client: ClientFrom<M>
|
|
505
567
|
) => {
|
|
@@ -572,17 +634,35 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
572
634
|
}
|
|
573
635
|
|
|
574
636
|
const mapMutation = <M extends RequestsAny>(
|
|
575
|
-
client: ClientFrom<M
|
|
637
|
+
client: ClientFrom<M>,
|
|
638
|
+
queryInvalidation?: (client: ClientFrom<M>) => QueryInvalidation<M>,
|
|
639
|
+
invalidationResources?: InvalidationResourcesFor<M>
|
|
576
640
|
) => {
|
|
577
641
|
const Command = useCommand()
|
|
578
642
|
const mutation = useMutation()
|
|
643
|
+
const invalidation = queryInvalidation?.(client)
|
|
644
|
+
const queryResources = makeQueryResources(invalidationResources)
|
|
579
645
|
const mutations = Struct.keys(client).reduce(
|
|
580
646
|
(acc, key) => {
|
|
581
647
|
if (client[key].Request.type !== "command") {
|
|
582
648
|
return acc
|
|
583
649
|
}
|
|
650
|
+
const fromRequestConfig = client[key].Request.config?.invalidatesQueries as
|
|
651
|
+
| InvalidationCallback<InvalidationResourcesFor<M>>
|
|
652
|
+
| undefined
|
|
653
|
+
const fromRequest = fromRequestConfig
|
|
654
|
+
? ((defaultKey: string[], _name: string, input?: unknown, output?: unknown) =>
|
|
655
|
+
fromRequestConfig(defaultKey, queryResources as never, input as never, output as never).map((entry) => ({
|
|
656
|
+
filters: entry.filters as InvalidateQueryFilters | undefined,
|
|
657
|
+
options: entry.options as InvalidateOptions | undefined
|
|
658
|
+
})))
|
|
659
|
+
: undefined
|
|
660
|
+
const mergedInvalidation = mergeInvalidation(fromRequest, invalidation?.[key])
|
|
584
661
|
const makeProjectedMutation = (handler: any): any => {
|
|
585
|
-
const mut: any = mutation(
|
|
662
|
+
const mut: any = mutation(
|
|
663
|
+
handler,
|
|
664
|
+
mergedInvalidation ? { queryInvalidation: mergedInvalidation } : undefined
|
|
665
|
+
)
|
|
586
666
|
const wrap = Command.wrap({ mutate: Effect.isEffect(mut) ? () => mut : mut, id: client[key].id })
|
|
587
667
|
return Object.assign(mut, {
|
|
588
668
|
wrap,
|
|
@@ -614,7 +694,8 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
614
694
|
// make available .query, .suspense and .mutate for each operation
|
|
615
695
|
// and a .helpers with all mutations and queries
|
|
616
696
|
const mapClient = <M extends RequestsAny>(
|
|
617
|
-
queryInvalidation?: (client: ClientFrom<M>) => QueryInvalidation<M
|
|
697
|
+
queryInvalidation?: (client: ClientFrom<M>) => QueryInvalidation<M>,
|
|
698
|
+
invalidationResources?: InvalidationResourcesFor<M>
|
|
618
699
|
) =>
|
|
619
700
|
(
|
|
620
701
|
client: ClientFrom<M>
|
|
@@ -622,6 +703,7 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
622
703
|
const Command = useCommand()
|
|
623
704
|
const mutation = useMutation()
|
|
624
705
|
const invalidation = queryInvalidation?.(client)
|
|
706
|
+
const queryResources = makeQueryResources(invalidationResources)
|
|
625
707
|
const extended = Struct.keys(client).reduce(
|
|
626
708
|
(acc, key) => {
|
|
627
709
|
const requestType = client[key].Request.type
|
|
@@ -658,10 +740,23 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
658
740
|
}
|
|
659
741
|
: {
|
|
660
742
|
mutate: ((handler: any) => {
|
|
743
|
+
const fromRequestConfig = client[key].Request.config?.invalidatesQueries as
|
|
744
|
+
| InvalidationCallback<InvalidationResourcesFor<M>>
|
|
745
|
+
| undefined
|
|
746
|
+
const fromRequest = fromRequestConfig
|
|
747
|
+
? ((defaultKey: string[], _name: string, input?: unknown, output?: unknown) =>
|
|
748
|
+
fromRequestConfig(defaultKey, queryResources as never, input as never, output as never).map((
|
|
749
|
+
entry
|
|
750
|
+
) => ({
|
|
751
|
+
filters: entry.filters as InvalidateQueryFilters | undefined,
|
|
752
|
+
options: entry.options as InvalidateOptions | undefined
|
|
753
|
+
})))
|
|
754
|
+
: undefined
|
|
755
|
+
const mergedInvalidation = mergeInvalidation(fromRequest, invalidation?.[key])
|
|
661
756
|
const makeProjectedMutation = (h: any): any => {
|
|
662
757
|
const mutate = mutation(
|
|
663
758
|
h,
|
|
664
|
-
|
|
759
|
+
mergedInvalidation ? { queryInvalidation: mergedInvalidation } : undefined
|
|
665
760
|
) as any
|
|
666
761
|
return Object.assign(
|
|
667
762
|
mutate,
|
|
@@ -706,26 +801,37 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
706
801
|
& { Input: typeof client[Key] extends RequestHandlerWithInput<infer I, any, any, any, any, any> ? I : never }
|
|
707
802
|
}
|
|
708
803
|
)
|
|
709
|
-
return Object.assign(extended, {
|
|
804
|
+
return Object.assign(extended, {
|
|
805
|
+
helpers: {
|
|
806
|
+
...mapRequest(client),
|
|
807
|
+
...mapMutation(client, queryInvalidation, invalidationResources),
|
|
808
|
+
...mapQuery(client)
|
|
809
|
+
}
|
|
810
|
+
})
|
|
710
811
|
}
|
|
711
812
|
|
|
712
813
|
// TODO: Clean up this delay initialisation messs
|
|
713
814
|
// TODO; invalidateQueries should perhaps be configured in the Request impl themselves?
|
|
714
815
|
const clientFor__ = <M extends RequestsAny>(
|
|
715
816
|
m: M,
|
|
716
|
-
queryInvalidation?:
|
|
717
|
-
|
|
817
|
+
queryInvalidation?: QueryInvalidationFactory<M>,
|
|
818
|
+
invalidationResources?: InvalidationResourcesFor<M>
|
|
819
|
+
) => getBaseMrt().runSync(clientFor_(m).pipe(Effect.map(mapClient(queryInvalidation, invalidationResources))))
|
|
718
820
|
|
|
719
821
|
// delay client creation until first access
|
|
720
822
|
// the idea is that we don't need the useNuxtApp().$runtime (only available at later initialisation stage)
|
|
721
823
|
// until we are at a place where it is available..
|
|
722
824
|
const clientFor = <M extends RequestsAny>(
|
|
723
825
|
m: M,
|
|
724
|
-
|
|
826
|
+
...args: ClientForArgs<M>
|
|
725
827
|
) => {
|
|
828
|
+
const [queryInvalidation, invalidationResources] = args as [
|
|
829
|
+
QueryInvalidationFactory<M> | undefined,
|
|
830
|
+
InvalidationResourcesFor<M> | undefined
|
|
831
|
+
]
|
|
726
832
|
type Client = ReturnType<typeof clientFor__<M>>
|
|
727
833
|
let client: Client | undefined = undefined
|
|
728
|
-
const getOrMakeClient = () => (client ??= clientFor__(m, queryInvalidation))
|
|
834
|
+
const getOrMakeClient = () => (client ??= clientFor__(m, queryInvalidation, invalidationResources))
|
|
729
835
|
|
|
730
836
|
// initialize on first use..
|
|
731
837
|
const proxy = Struct.keys(m).concat(["helpers"]).reduce((acc, key) => {
|
|
@@ -762,7 +868,12 @@ export const makeClient = <RT_, RTHooks>(
|
|
|
762
868
|
}
|
|
763
869
|
|
|
764
870
|
export type QueryInvalidation<M> = {
|
|
765
|
-
[K in keyof M]?: (
|
|
871
|
+
[K in keyof M]?: (
|
|
872
|
+
defaultKey: string[],
|
|
873
|
+
name: string,
|
|
874
|
+
input?: unknown,
|
|
875
|
+
output?: ExitResult.Exit<unknown, unknown>
|
|
876
|
+
) => {
|
|
766
877
|
filters?: InvalidateQueryFilters | undefined
|
|
767
878
|
options?: InvalidateOptions | undefined
|
|
768
879
|
}[]
|
package/src/mutate.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { type InvalidateOptions, type InvalidateQueryFilters, type QueryClient, useQueryClient } from "@tanstack/vue-query"
|
|
3
3
|
import { type Cause, Effect, type Exit, Option } from "effect-app"
|
|
4
|
-
import { type Req } from "effect-app/client"
|
|
4
|
+
import { makeQueryKey, type Req } from "effect-app/client"
|
|
5
5
|
import type { ClientForOptions, RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor"
|
|
6
6
|
import { tuple } from "effect-app/Function"
|
|
7
7
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult"
|
|
8
8
|
import { computed, type ComputedRef, shallowRef } from "vue"
|
|
9
|
-
import { makeQueryKey } from "./lib.js"
|
|
10
9
|
|
|
11
10
|
export const getQueryKey = (h: { id: string; options?: ClientForOptions }) => {
|
|
12
11
|
const key = makeQueryKey(h)
|
|
@@ -72,7 +71,7 @@ export interface MutationOptionsBase {
|
|
|
72
71
|
* By default we invalidate one level of the query key, e.g $project/$configuration.get, we invalidate $project.
|
|
73
72
|
* This can be overridden by providing a function that returns an array of filters and options.
|
|
74
73
|
*/
|
|
75
|
-
queryInvalidation?: (defaultKey: string[], name: string) => {
|
|
74
|
+
queryInvalidation?: (defaultKey: string[], name: string, input?: unknown, output?: Exit.Exit<unknown, unknown>) => {
|
|
76
75
|
filters?: InvalidateQueryFilters | undefined
|
|
77
76
|
options?: InvalidateOptions | undefined
|
|
78
77
|
}[]
|
|
@@ -158,40 +157,49 @@ export const invalidateQueries = (
|
|
|
158
157
|
)
|
|
159
158
|
)
|
|
160
159
|
|
|
161
|
-
const invalidateCache =
|
|
162
|
-
|
|
160
|
+
const invalidateCache = (input: unknown, output: Exit.Exit<unknown, unknown>) =>
|
|
161
|
+
Effect.suspend(() => {
|
|
162
|
+
const queryKey = getQueryKey(self)
|
|
163
163
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
if (options) {
|
|
165
|
+
const opts = options(queryKey, self.id, input, output)
|
|
166
|
+
if (!opts.length) {
|
|
167
|
+
return Effect.void
|
|
168
|
+
}
|
|
169
|
+
return Effect
|
|
170
|
+
.andThen(
|
|
171
|
+
Effect.annotateCurrentSpan({ queryKey, opts }),
|
|
172
|
+
Effect.forEach(opts, (_) => invalidateQueries(_.filters, _.options), { concurrency: "inherit" })
|
|
173
|
+
)
|
|
174
|
+
.pipe(Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false }))
|
|
168
175
|
}
|
|
176
|
+
|
|
177
|
+
if (!queryKey) return Effect.void
|
|
178
|
+
|
|
169
179
|
return Effect
|
|
170
180
|
.andThen(
|
|
171
|
-
Effect.annotateCurrentSpan({ queryKey
|
|
172
|
-
|
|
181
|
+
Effect.annotateCurrentSpan({ queryKey }),
|
|
182
|
+
invalidateQueries({ queryKey })
|
|
173
183
|
)
|
|
174
|
-
.pipe(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
184
|
+
.pipe(
|
|
185
|
+
Effect.tap(
|
|
186
|
+
// hand over control back to the event loop so that state can be updated..
|
|
187
|
+
// TODO: should we do this in general on any mutation, regardless of invalidation?
|
|
188
|
+
Effect.sleep(0)
|
|
189
|
+
),
|
|
190
|
+
Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false })
|
|
191
|
+
)
|
|
192
|
+
})
|
|
178
193
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
// hand over control back to the event loop so that state can be updated..
|
|
187
|
-
// TODO: should we do this in general on any mutation, regardless of invalidation?
|
|
188
|
-
Effect.sleep(0)
|
|
189
|
-
),
|
|
190
|
-
Effect.withSpan("client.query.invalidation", {}, { captureStackTrace: false })
|
|
194
|
+
const handle = <A, E, R>(self: Effect.Effect<A, E, R>, input?: unknown) =>
|
|
195
|
+
self.pipe(
|
|
196
|
+
Effect.onExit((exit) =>
|
|
197
|
+
invalidateCache(
|
|
198
|
+
input,
|
|
199
|
+
exit
|
|
200
|
+
)
|
|
191
201
|
)
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const handle = <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.ensuring(self, invalidateCache)
|
|
202
|
+
)
|
|
195
203
|
|
|
196
204
|
return handle
|
|
197
205
|
}
|
|
@@ -221,7 +229,7 @@ export const makeMutation = () => {
|
|
|
221
229
|
const queryClient = useQueryClient()
|
|
222
230
|
const handle = invalidateQueries(queryClient, self, options?.queryInvalidation)
|
|
223
231
|
const handler = self.handler
|
|
224
|
-
const r = Effect.isEffect(handler) ? handle(handler) : (i: I) => handle(handler(i))
|
|
232
|
+
const r = Effect.isEffect(handler) ? handle(handler) : (i: I) => handle(handler(i), i)
|
|
225
233
|
|
|
226
234
|
return Object.assign(r, { id: self.id }) as any
|
|
227
235
|
}
|
|
@@ -255,7 +263,7 @@ export const useMakeMutation = () => {
|
|
|
255
263
|
) => {
|
|
256
264
|
const handle = invalidateQueries(queryClient, self, options?.queryInvalidation)
|
|
257
265
|
const handler = self.handler
|
|
258
|
-
const r = Effect.isEffect(handler) ? handle(handler) : (i: I) => handle(handler(i))
|
|
266
|
+
const r = Effect.isEffect(handler) ? handle(handler) : (i: I) => handle(handler(i), i)
|
|
259
267
|
|
|
260
268
|
return Object.assign(r, { id: self.id }) as any
|
|
261
269
|
}
|
package/src/query.ts
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
5
5
|
import { type DefaultError, type Enabled, type InitialDataFunction, type NonUndefinedGuard, type PlaceholderDataFunction, type QueryKey, type QueryObserverOptions, type QueryObserverResult, type RefetchOptions, useQuery as useTanstackQuery, useQueryClient, type UseQueryDefinedReturnType, type UseQueryReturnType } from "@tanstack/vue-query"
|
|
6
6
|
import { Array, Cause, type Context, Effect, Option, S } from "effect-app"
|
|
7
|
-
import { type Req } from "effect-app/client"
|
|
7
|
+
import { makeQueryKey, type Req } from "effect-app/client"
|
|
8
8
|
import type { RequestHandler, RequestHandlerWithInput } from "effect-app/client/clientFor"
|
|
9
9
|
import { CauseException, ServiceUnavailableError } from "effect-app/client/errors"
|
|
10
10
|
import { type Span } from "effect/Tracer"
|
|
11
11
|
import { isHttpClientError } from "effect/unstable/http/HttpClientError"
|
|
12
12
|
import * as AsyncResult from "effect/unstable/reactivity/AsyncResult"
|
|
13
13
|
import { computed, type ComputedRef, type MaybeRefOrGetter, ref, shallowRef, watch, type WatchSource } from "vue"
|
|
14
|
-
import {
|
|
14
|
+
import { reportRuntimeError } from "./lib.js"
|
|
15
15
|
import { makeRunPromise } from "./runtime.js"
|
|
16
16
|
|
|
17
17
|
// we must use interface extends, or we get the dreaded typescript error of isn't portable blabla @tanstack/vue-query/build/modern/types.js
|