@effect-app/vue 4.0.0-beta.98 → 4.0.0
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 +2707 -0
- package/dist/atomQuery.d.ts +120 -0
- package/dist/atomQuery.d.ts.map +1 -0
- package/dist/atomQuery.js +434 -0
- package/dist/commander.d.ts +318 -43
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +593 -81
- package/dist/confirm.d.ts +5 -3
- package/dist/confirm.d.ts.map +1 -1
- package/dist/confirm.js +12 -14
- package/dist/dependencyMetadata.d.ts +18 -0
- package/dist/dependencyMetadata.d.ts.map +1 -0
- package/dist/dependencyMetadata.js +67 -0
- package/dist/errorReporter.d.ts +6 -4
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +14 -19
- package/dist/form.d.ts +5 -5
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +16 -10
- package/dist/internal/tanstackQuery.d.ts +9 -0
- package/dist/internal/tanstackQuery.d.ts.map +1 -0
- package/dist/internal/tanstackQuery.js +204 -0
- package/dist/intl.d.ts +4 -4
- package/dist/intl.d.ts.map +1 -1
- package/dist/intl.js +2 -2
- package/dist/lib.d.ts +8 -10
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +37 -12
- package/dist/liveQueryInvalidation.d.ts +16 -0
- package/dist/liveQueryInvalidation.d.ts.map +1 -0
- package/dist/liveQueryInvalidation.js +115 -0
- package/dist/makeClient.d.ts +232 -109
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +416 -84
- package/dist/makeContext.d.ts.map +1 -1
- package/dist/makeIntl.d.ts.map +1 -1
- package/dist/makeUseCommand.d.ts +3 -2
- package/dist/makeUseCommand.d.ts.map +1 -1
- package/dist/makeUseCommand.js +2 -2
- package/dist/mutate.d.ts +110 -41
- package/dist/mutate.d.ts.map +1 -1
- package/dist/mutate.js +236 -59
- package/dist/query.d.ts +161 -44
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +382 -113
- package/dist/queryLifetime.d.ts +25 -0
- package/dist/queryLifetime.d.ts.map +1 -0
- package/dist/queryLifetime.js +54 -0
- package/dist/routeParams.d.ts +4 -4
- package/dist/routeParams.d.ts.map +1 -1
- package/dist/routeParams.js +4 -3
- package/dist/runtime.d.ts +1 -17
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +2 -38
- package/dist/suspense.d.ts +19 -0
- package/dist/suspense.d.ts.map +1 -0
- package/dist/suspense.js +38 -0
- package/dist/toast.d.ts +1 -45
- package/dist/toast.d.ts.map +1 -1
- package/dist/toast.js +2 -32
- package/dist/withToast.d.ts +1 -24
- package/dist/withToast.d.ts.map +1 -1
- package/dist/withToast.js +2 -45
- package/docs/atom-query-api-redesign.md +207 -0
- package/docs/mutation-command-atoms.md +40 -0
- package/docs/query-key-invalidation.md +107 -0
- package/examples/streamMutation.ts +72 -0
- package/package.json +35 -94
- package/src/atomQuery.ts +600 -0
- package/src/commander.ts +1064 -116
- package/src/confirm.ts +12 -14
- package/src/dependencyMetadata.ts +84 -0
- package/src/errorReporter.ts +65 -75
- package/src/form.ts +22 -15
- package/src/index.ts +7 -7
- package/src/internal/tanstackQuery.ts +308 -0
- package/src/intl.ts +2 -2
- package/src/lib.ts +51 -23
- package/src/liveQueryInvalidation.ts +138 -0
- package/src/makeClient.ts +972 -263
- package/src/makeIntl.ts +2 -2
- package/src/makeUseCommand.ts +8 -5
- package/src/mutate.ts +407 -154
- package/src/query.ts +758 -242
- package/src/queryLifetime.ts +74 -0
- package/src/routeParams.ts +7 -7
- package/src/runtime.ts +1 -54
- package/src/suspense.ts +43 -0
- package/src/toast.ts +1 -52
- package/src/withToast.ts +1 -99
- package/test/Mutation.test.ts +104 -17
- package/test/dependencyInvalidation.test.ts +444 -0
- package/test/dist/dependencyInvalidation.test.d.ts.map +1 -0
- package/test/dist/form.test.d.ts.map +1 -1
- package/test/dist/inactiveInvalidation.test.d.ts.map +1 -0
- package/test/dist/interrupt-refetch-repro.test.d.ts.map +1 -0
- package/test/dist/lib.test.d.ts.map +1 -0
- package/test/dist/liveQueryInvalidation.test.d.ts.map +1 -0
- package/test/dist/query-span.test.d.ts.map +1 -0
- package/test/dist/queryOptions.test.d.ts.map +1 -0
- package/test/dist/streamFinal.test.d.ts.map +1 -0
- package/test/dist/streamFn.test.d.ts.map +1 -0
- package/test/dist/stubs.d.ts +3681 -256
- package/test/dist/stubs.d.ts.map +1 -1
- package/test/dist/stubs.js +166 -25
- package/test/dist/suspense-regression.test.d.ts.map +1 -0
- package/test/dist/suspense.test.d.ts.map +1 -0
- package/test/form-validation-errors.test.ts +2 -1
- package/test/form.test.ts +2 -1
- package/test/inactiveInvalidation.test.ts +172 -0
- package/test/interrupt-refetch-repro.test.ts +625 -0
- package/test/lib.test.ts +240 -0
- package/test/liveQueryInvalidation.test.ts +108 -0
- package/test/makeClient.test.ts +414 -32
- package/test/query-span.test.ts +92 -0
- package/test/queryOptions.test.ts +88 -0
- package/test/streamFinal.test.ts +64 -0
- package/test/streamFn.test.ts +457 -0
- package/test/stubs.ts +194 -36
- package/test/suspense-regression.test.ts +168 -0
- package/test/suspense.test.ts +160 -0
- package/tsconfig.examples.json +20 -0
- package/tsconfig.json +9 -1
- package/tsconfig.src.json +34 -34
- package/tsconfig.test.json +2 -2
- package/vitest.config.ts +5 -5
- package/eslint.config.mjs +0 -24
- package/tsconfig.json.bak +0 -12
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
2
|
+
import * as Atom from "effect/reactivity/Atom";
|
|
3
|
+
/**
|
|
4
|
+
* Per-query observer count + invalidation flag. Lives on the family atom so
|
|
5
|
+
* invalidate can mark stale and refetch only when someone is looking
|
|
6
|
+
* (TanStack refetchType: "active").
|
|
7
|
+
*/
|
|
8
|
+
export interface QueryLifetime {
|
|
9
|
+
observers: number;
|
|
10
|
+
invalidated: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const queryLifetimeOf: (atom: Atom.Atom<any>) => QueryLifetime | undefined;
|
|
13
|
+
export declare const attachQueryLifetime: <A, E>(atom: Atom.Atom<AsyncResult.AsyncResult<A, E>>) => QueryLifetime;
|
|
14
|
+
/**
|
|
15
|
+
* Count this subscription as an observer of `family`. On remount, consume a
|
|
16
|
+
* pending invalidation and refresh the family atom.
|
|
17
|
+
*/
|
|
18
|
+
export declare const observeQueryAtom: <A, E>(family: Atom.Atom<AsyncResult.AsyncResult<A, E>>) => Atom.Atom<AsyncResult.AsyncResult<A, E>>;
|
|
19
|
+
/**
|
|
20
|
+
* Idle queries with a lifetime are marked stale. Queries that still have
|
|
21
|
+
* observers (or have no lifetime, e.g. ad-hoc registry mounts of a raw
|
|
22
|
+
* effect atom) are refetched now.
|
|
23
|
+
*/
|
|
24
|
+
export declare const atomsToRefetch: <A, E>(atoms: ReadonlyArray<Atom.Atom<AsyncResult.AsyncResult<A, E>>>) => ReadonlyArray<Atom.Atom<AsyncResult.AsyncResult<A, E>>>;
|
|
25
|
+
//# sourceMappingURL=queryLifetime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryLifetime.d.ts","sourceRoot":"","sources":["../src/queryLifetime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,WAAW,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAA;AAE9C;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;CACrB;AAYD,eAAO,MAAM,eAAe,SAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAG,aAAa,GAAG,SACnB,CAAA;AAEpD,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,CAAC,QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAC7C,aAOF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,UAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAazC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,SAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAC7D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAQxD,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as Atom from "effect/reactivity/Atom";
|
|
2
|
+
const lifetimes = new WeakMap();
|
|
3
|
+
const rootOf = (atom) => {
|
|
4
|
+
let target = atom;
|
|
5
|
+
while (target.initialValueTarget !== undefined) {
|
|
6
|
+
target = target.initialValueTarget;
|
|
7
|
+
}
|
|
8
|
+
return target;
|
|
9
|
+
};
|
|
10
|
+
export const queryLifetimeOf = (atom) => lifetimes.get(rootOf(atom)) ?? lifetimes.get(atom);
|
|
11
|
+
export const attachQueryLifetime = (atom) => {
|
|
12
|
+
const existing = queryLifetimeOf(atom);
|
|
13
|
+
if (existing !== undefined)
|
|
14
|
+
return existing;
|
|
15
|
+
const created = { observers: 0, invalidated: false };
|
|
16
|
+
lifetimes.set(rootOf(atom), created);
|
|
17
|
+
lifetimes.set(atom, created);
|
|
18
|
+
return created;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Count this subscription as an observer of `family`. On remount, consume a
|
|
22
|
+
* pending invalidation and refresh the family atom.
|
|
23
|
+
*/
|
|
24
|
+
export const observeQueryAtom = (family) => {
|
|
25
|
+
const life = attachQueryLifetime(family);
|
|
26
|
+
return Atom.transform(family, (get) => {
|
|
27
|
+
life.observers++;
|
|
28
|
+
get.addFinalizer(() => {
|
|
29
|
+
life.observers = Math.max(0, life.observers - 1);
|
|
30
|
+
});
|
|
31
|
+
if (life.invalidated) {
|
|
32
|
+
life.invalidated = false;
|
|
33
|
+
get.refresh(family);
|
|
34
|
+
}
|
|
35
|
+
return get(family);
|
|
36
|
+
}, { initialValueTarget: family });
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Idle queries with a lifetime are marked stale. Queries that still have
|
|
40
|
+
* observers (or have no lifetime, e.g. ad-hoc registry mounts of a raw
|
|
41
|
+
* effect atom) are refetched now.
|
|
42
|
+
*/
|
|
43
|
+
export const atomsToRefetch = (atoms) => {
|
|
44
|
+
const active = [];
|
|
45
|
+
for (const atom of atoms) {
|
|
46
|
+
const life = queryLifetimeOf(atom);
|
|
47
|
+
if (life === undefined || life.observers > 0)
|
|
48
|
+
active.push(atom);
|
|
49
|
+
else
|
|
50
|
+
life.invalidated = true;
|
|
51
|
+
}
|
|
52
|
+
return active;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlMaWZldGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeUxpZmV0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sd0JBQXdCLENBQUE7QUFZOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQWlDLENBQUE7QUFFOUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFvQixFQUFrQixFQUFFO0lBQ3RELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNqQixPQUFPLE1BQU0sQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFBO0lBQ3BDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQW9CLEVBQTZCLEVBQUUsQ0FDakYsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBRXBELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLElBQThDLEVBQy9CLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RDLElBQUksUUFBUSxLQUFLLFNBQVM7UUFBRSxPQUFPLFFBQVEsQ0FBQTtJQUMzQyxNQUFNLE9BQU8sR0FBa0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUNuRSxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNwQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM1QixPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixNQUFnRCxFQUNOLEVBQUU7SUFDNUMsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNoQixHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEQsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtZQUN4QixHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNwQixDQUFDLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3BDLENBQUMsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsS0FBOEQsRUFDTCxFQUFFO0lBQzNELE1BQU0sTUFBTSxHQUFvRCxFQUFFLENBQUE7SUFDbEUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7O1lBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO0lBQzlCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSJ9
|
package/dist/routeParams.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import * as Option from "effect-app/Option";
|
|
2
|
+
import * as S from "effect-app/Schema";
|
|
3
3
|
import type { ParsedQuery } from "query-string";
|
|
4
4
|
export declare function getQueryParam(search: ParsedQuery, param: string): string | null | undefined;
|
|
5
5
|
export declare const getQueryParamO: (search: ParsedQuery, param: string) => Option.Option<string>;
|
|
6
6
|
export declare function parseRouteParamsOption<NER extends Record<string, S.Codec<any, any>>>(query: Record<string, any>, t: NER): {
|
|
7
|
-
[K in keyof NER]: Option.Option<
|
|
7
|
+
[K in keyof NER]: Option.Option<NER[K]["Type"]>;
|
|
8
8
|
};
|
|
9
9
|
export declare function parseRouteParams<NER extends Record<string, S.Codec<any, any>>>(query: Record<string, any>, t: NER): {
|
|
10
|
-
[K in keyof NER]:
|
|
10
|
+
[K in keyof NER]: NER[K]["Type"];
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=routeParams.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../src/routeParams.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../src/routeParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAGtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,6BAM/D;AAED,eAAO,MAAM,cAAc,+DAA4C,CAAA;AAEvE,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,GACrH;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAChD,CAcA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC5E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CACjC,CAcA"}
|
package/dist/routeParams.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import * as Option from "effect-app/Option";
|
|
2
|
+
import * as S from "effect-app/Schema";
|
|
3
3
|
import { typedKeysOf } from "effect-app/utils";
|
|
4
|
+
import { flow } from "effect/Function";
|
|
4
5
|
export function getQueryParam(search, param) {
|
|
5
6
|
const v = search[param];
|
|
6
7
|
if (Array.isArray(v)) {
|
|
@@ -25,4 +26,4 @@ export function parseRouteParams(query, t // enforce non empty
|
|
|
25
26
|
return prev;
|
|
26
27
|
}, {});
|
|
27
28
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm91dGVQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFHdEMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFtQixFQUFFLEtBQWE7SUFDOUQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRXZFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBZ0QsS0FBMEIsRUFBRSxDQUFNLENBQUMsb0JBQW9COztJQUkzSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzFCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1osb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQWEsQ0FBQyxDQUFDLElBQUksQ0FDbkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FDL0MsQ0FBQTtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxFQUNELEVBRUMsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBMEIsRUFDMUIsQ0FBTSxDQUFDLG9CQUFvQjs7SUFJM0IsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUMxQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUNyQyxLQUFhLENBQUMsR0FBRyxDQUFDLENBQ3BCLENBQUE7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsRUFDRCxFQUVDLENBQ0YsQ0FBQTtBQUNILENBQUMifQ==
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { Effect, Layer } from "effect-app";
|
|
3
|
-
import { type Context } from "effect-app/Context";
|
|
4
|
-
export declare function makeAppRuntime<A, E>(layer: Layer.Layer<A, E>): Effect.Effect<ManagedRuntime.ManagedRuntime<A, never> & {
|
|
5
|
-
[Symbol.dispose](): void;
|
|
6
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
7
|
-
}, never, never>;
|
|
8
|
-
export declare function initializeSync<A, E>(layer: Layer.Layer<A, E, never>): ManagedRuntime.ManagedRuntime<A, never> & {
|
|
9
|
-
[Symbol.dispose](): void;
|
|
10
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
11
|
-
};
|
|
12
|
-
export declare function initializeAsync<A, E>(layer: Layer.Layer<A, E, never>): Promise<ManagedRuntime.ManagedRuntime<A, never> & {
|
|
13
|
-
[Symbol.dispose](): void;
|
|
14
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
15
|
-
}>;
|
|
16
|
-
export declare const makeRunPromise: <T>(services: Context<T>) => <A, E>(effect: Effect.Effect<A, E, T>, options?: Effect.RunOptions | undefined) => Promise<Awaited<import("effect/Types").NoInfer<A>>>;
|
|
17
|
-
export declare const makeRunSync: <T>(services: Context<T>) => <A, E>(effect: Effect.Effect<A, E, T>) => import("effect/Types").NoInfer<A>;
|
|
1
|
+
export * from "effect-app/runtime";
|
|
18
2
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,38 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { CauseException } from "effect-app/client/errors";
|
|
4
|
-
export function makeAppRuntime(layer) {
|
|
5
|
-
return Effect.gen(function* () {
|
|
6
|
-
const l = layer.pipe(Layer.provide(Logger.layer([Logger.consolePretty()])));
|
|
7
|
-
const mrt = ManagedRuntime.make(l);
|
|
8
|
-
yield* mrt.contextEffect;
|
|
9
|
-
return Object.assign(mrt, {
|
|
10
|
-
[Symbol.dispose]() {
|
|
11
|
-
return Effect.runSync(mrt.disposeEffect);
|
|
12
|
-
},
|
|
13
|
-
[Symbol.asyncDispose]() {
|
|
14
|
-
return mrt.dispose();
|
|
15
|
-
}
|
|
16
|
-
}); // as we initialise here, there is no more error left.
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
export function initializeSync(layer) {
|
|
20
|
-
const runtime = Effect.runSync(makeAppRuntime(layer));
|
|
21
|
-
return runtime;
|
|
22
|
-
}
|
|
23
|
-
export function initializeAsync(layer) {
|
|
24
|
-
return Effect
|
|
25
|
-
.runPromise(makeAppRuntime(layer));
|
|
26
|
-
}
|
|
27
|
-
// we wrap into CauseException because we want to keep the full cause of the failure.
|
|
28
|
-
export const makeRunPromise = (services) => flow(Effect.runPromiseExitWith(services), (_) => _.then(Exit.match({
|
|
29
|
-
onFailure: (cause) => Promise.reject(new CauseException(cause, "runPromise")),
|
|
30
|
-
onSuccess: (value) => Promise.resolve(value)
|
|
31
|
-
})));
|
|
32
|
-
export const makeRunSync = (services) => flow(Effect.runSyncExitWith(services), Exit.match({
|
|
33
|
-
onFailure: (cause) => {
|
|
34
|
-
throw new CauseException(cause, "runSync");
|
|
35
|
-
},
|
|
36
|
-
onSuccess: (value) => value
|
|
37
|
-
}));
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBR3pELE1BQU0sVUFBVSxjQUFjLENBQU8sS0FBd0I7SUFDM0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdCLENBQUE7UUFDMUIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFBO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDeEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNkLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDMUMsQ0FBQztZQUVELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztnQkFDbkIsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQSxDQUFDLHNEQUFzRDtJQUMzRCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFPLEtBQStCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDckQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQU8sS0FBK0I7SUFDbkUsT0FBTyxNQUFNO1NBQ1YsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxxRkFBcUY7QUFDckYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUksUUFBb0IsRUFBRSxFQUFFLENBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5QyxDQUFDLENBQUMsSUFBSSxDQUNKLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDVCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Q0FDN0MsQ0FBQyxDQUNILENBQUMsQ0FBQTtBQUVOLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFJLFFBQW9CLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQ0YsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNULFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ25CLE1BQU0sSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFDRCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Q0FDNUIsQ0FBQyxDQUNILENBQUEifQ==
|
|
1
|
+
export * from "effect-app/runtime";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUEifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Effect } from "effect-app";
|
|
2
|
+
import * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
3
|
+
import { type ComputedRef } from "vue";
|
|
4
|
+
/**
|
|
5
|
+
* The always-defined `data` ref behind a resolved suspense query.
|
|
6
|
+
*
|
|
7
|
+
* A reactive arg can re-point the view at a DIFFERENT cache atom after the suspense promise
|
|
8
|
+
* resolved; the fresh atom starts `Initial` (no `previousSuccess` carried over), so the raw data
|
|
9
|
+
* briefly reads `undefined` while it fetches. The suspense contract ("after the await there is
|
|
10
|
+
* always a value") is kept by serving the last defined value across that transition — TanStack's
|
|
11
|
+
* keepPreviousData, which Vue needs because it cannot re-suspend after mount. Waiting/failure of
|
|
12
|
+
* the new fetch stays observable on the view's `result` ref.
|
|
13
|
+
*
|
|
14
|
+
* Throws only if there has never been a value, which is unreachable once the suspense await
|
|
15
|
+
* resolved successfully.
|
|
16
|
+
*/
|
|
17
|
+
export declare const latestDefined: <TData>(source: () => TData | undefined, label: string) => ComputedRef<TData>;
|
|
18
|
+
export declare const awaitResolvedSuspenseResult: <A, E>(resultRef: ComputedRef<AsyncResult.AsyncResult<A, E>>) => Effect.Effect<AsyncResult.AsyncResult<A, E>, never, never>;
|
|
19
|
+
//# sourceMappingURL=suspense.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suspense.d.ts","sourceRoot":"","sources":["../src/suspense.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAY,KAAK,WAAW,EAAY,MAAM,KAAK,CAAA;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,UAAU,MAAM,KAAK,GAAG,SAAS,SAAS,MAAM,KAAG,WAAW,CAAC,KAAK,CAWtG,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,CAAC,EAAE,CAAC,aACnC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+DAWnD,CAAA"}
|
package/dist/suspense.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Effect } from "effect-app";
|
|
2
|
+
import * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
3
|
+
import { computed, nextTick } from "vue";
|
|
4
|
+
/**
|
|
5
|
+
* The always-defined `data` ref behind a resolved suspense query.
|
|
6
|
+
*
|
|
7
|
+
* A reactive arg can re-point the view at a DIFFERENT cache atom after the suspense promise
|
|
8
|
+
* resolved; the fresh atom starts `Initial` (no `previousSuccess` carried over), so the raw data
|
|
9
|
+
* briefly reads `undefined` while it fetches. The suspense contract ("after the await there is
|
|
10
|
+
* always a value") is kept by serving the last defined value across that transition — TanStack's
|
|
11
|
+
* keepPreviousData, which Vue needs because it cannot re-suspend after mount. Waiting/failure of
|
|
12
|
+
* the new fetch stays observable on the view's `result` ref.
|
|
13
|
+
*
|
|
14
|
+
* Throws only if there has never been a value, which is unreachable once the suspense await
|
|
15
|
+
* resolved successfully.
|
|
16
|
+
*/
|
|
17
|
+
export const latestDefined = (source, label) => {
|
|
18
|
+
let last;
|
|
19
|
+
return computed(() => {
|
|
20
|
+
const latest = source();
|
|
21
|
+
if (latest !== undefined) {
|
|
22
|
+
last = latest;
|
|
23
|
+
return latest;
|
|
24
|
+
}
|
|
25
|
+
if (last !== undefined)
|
|
26
|
+
return last;
|
|
27
|
+
throw new Error(`Internal Error: ${label} resolved without a latest value`);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export const awaitResolvedSuspenseResult = (resultRef) => Effect.gen(function* () {
|
|
31
|
+
let result = resultRef.value;
|
|
32
|
+
for (let remainingTicks = 3; remainingTicks > 0 && AsyncResult.isInitial(result); remainingTicks--) {
|
|
33
|
+
yield* Effect.promise(() => nextTick());
|
|
34
|
+
result = resultRef.value;
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VzcGVuc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3VzcGVuc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEtBQUssV0FBVyxNQUFNLCtCQUErQixDQUFBO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQW9CLFFBQVEsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUUxRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBUSxNQUErQixFQUFFLEtBQWEsRUFBc0IsRUFBRTtJQUN6RyxJQUFJLElBQXVCLENBQUE7SUFDM0IsT0FBTyxRQUFRLENBQVEsR0FBRyxFQUFFO1FBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFBO1FBQ3ZCLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLElBQUksR0FBRyxNQUFNLENBQUE7WUFDYixPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQzdFLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsU0FBcUQsRUFDckQsRUFBRSxDQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ2xCLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7SUFFNUIsS0FBSyxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsY0FBYyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUM7UUFDbkcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFBO0lBQzFCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQyxDQUFBIn0=
|
package/dist/toast.d.ts
CHANGED
|
@@ -1,46 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export type ToastId = string | number;
|
|
3
|
-
export type ToastOpts = {
|
|
4
|
-
id?: ToastId;
|
|
5
|
-
timeout?: number;
|
|
6
|
-
};
|
|
7
|
-
export type ToastOptsInternal = {
|
|
8
|
-
id?: ToastId | null;
|
|
9
|
-
timeout?: number;
|
|
10
|
-
};
|
|
11
|
-
export type UseToast = () => {
|
|
12
|
-
error: (this: void, message: string, options?: ToastOpts) => ToastId;
|
|
13
|
-
warning: (this: void, message: string, options?: ToastOpts) => ToastId;
|
|
14
|
-
success: (this: void, message: string, options?: ToastOpts) => ToastId;
|
|
15
|
-
info: (this: void, message: string, options?: ToastOpts) => ToastId;
|
|
16
|
-
dismiss: (this: void, id: ToastId) => void;
|
|
17
|
-
};
|
|
18
|
-
declare const CurrentToastId_base: Context.OpaqueClass<CurrentToastId, "CurrentToastId", {
|
|
19
|
-
toastId: ToastId;
|
|
20
|
-
}>;
|
|
21
|
-
export declare class CurrentToastId extends CurrentToastId_base {
|
|
22
|
-
}
|
|
23
|
-
/** fallback to CurrentToastId when available unless id is explicitly set to a value or null */
|
|
24
|
-
export declare const wrap: (toast: ReturnType<UseToast>) => {
|
|
25
|
-
error: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
26
|
-
info: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
27
|
-
success: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
28
|
-
warning: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
29
|
-
dismiss: (toastId: ToastId) => Effect.Effect<void, never, never>;
|
|
30
|
-
};
|
|
31
|
-
declare const Toast_base: Context.OpaqueClass<Toast, "Toast", {
|
|
32
|
-
error: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
33
|
-
info: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
34
|
-
success: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
35
|
-
warning: (message: string, options?: ToastOptsInternal) => Effect.Effect<ToastId, never, never>;
|
|
36
|
-
dismiss: (toastId: ToastId) => Effect.Effect<void, never, never>;
|
|
37
|
-
}>;
|
|
38
|
-
export declare class Toast extends Toast_base {
|
|
39
|
-
static readonly error: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
|
|
40
|
-
static readonly info: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
|
|
41
|
-
static readonly success: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
|
|
42
|
-
static readonly warning: (message: string, options?: ToastOptsInternal | undefined) => Effect.Effect<ToastId, never, Toast>;
|
|
43
|
-
static readonly dismiss: (toastId: ToastId) => Effect.Effect<void, never, Toast>;
|
|
44
|
-
}
|
|
45
|
-
export {};
|
|
1
|
+
export * from "effect-app/toast";
|
|
46
2
|
//# sourceMappingURL=toast.d.ts.map
|
package/dist/toast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../src/toast.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../src/toast.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
package/dist/toast.js
CHANGED
|
@@ -1,32 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export class CurrentToastId extends Context.Opaque()("CurrentToastId") {
|
|
4
|
-
}
|
|
5
|
-
/** fallback to CurrentToastId when available unless id is explicitly set to a value or null */
|
|
6
|
-
export const wrap = (toast) => {
|
|
7
|
-
const wrap = (toastHandler) => {
|
|
8
|
-
return (message, options) => Effect.serviceOption(CurrentToastId).pipe(Effect.flatMap((currentToast) => Effect.sync(() => {
|
|
9
|
-
const { id: _id, ...rest } = options ?? {};
|
|
10
|
-
const id = _id !== undefined
|
|
11
|
-
? _id ?? undefined
|
|
12
|
-
: Option.getOrUndefined(Option.map(currentToast, (_) => _.toastId));
|
|
13
|
-
// when id is undefined, we may end up with no toast at all..
|
|
14
|
-
return toastHandler(message, id !== undefined ? { ...rest, id } : rest);
|
|
15
|
-
})));
|
|
16
|
-
};
|
|
17
|
-
return {
|
|
18
|
-
error: wrap(toast.error),
|
|
19
|
-
info: wrap(toast.info),
|
|
20
|
-
success: wrap(toast.success),
|
|
21
|
-
warning: wrap(toast.warning),
|
|
22
|
-
dismiss: (toastId) => Effect.sync(() => toast.dismiss(toastId))
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export class Toast extends Context.Opaque()("Toast") {
|
|
26
|
-
static error = accessEffectFn(this, "error");
|
|
27
|
-
static info = accessEffectFn(this, "info");
|
|
28
|
-
static success = accessEffectFn(this, "success");
|
|
29
|
-
static warning = accessEffectFn(this, "warning");
|
|
30
|
-
static dismiss = accessEffectFn(this, "dismiss");
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQWNuRCxNQUFNLE9BQU8sY0FBZSxTQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQXdDLENBQUMsZ0JBQWdCLENBQUM7Q0FBRztBQUUvRywrRkFBK0Y7QUFDL0YsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBMkIsRUFBRSxFQUFFO0lBQ2xELE1BQU0sSUFBSSxHQUFHLENBQUMsWUFBK0QsRUFBRSxFQUFFO1FBQy9FLE9BQU8sQ0FBQyxPQUFlLEVBQUUsT0FBMkIsRUFBRSxFQUFFLENBQ3RELE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7WUFDMUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxLQUFLLFNBQVM7Z0JBQzFCLENBQUMsQ0FBQyxHQUFHLElBQUksU0FBUztnQkFDbEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ3JFLDZEQUE2RDtZQUM3RCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekUsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFBO0lBQ0wsQ0FBQyxDQUFBO0lBQ0QsT0FBTztRQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixPQUFPLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDekUsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUlELE1BQU0sT0FBTyxLQUFNLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDckUsTUFBTSxDQUFVLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELE1BQU0sQ0FBVSxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNuRCxNQUFNLENBQVUsT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekQsTUFBTSxDQUFVLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sQ0FBVSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQSJ9
|
|
1
|
+
export * from "effect-app/toast";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQSJ9
|
package/dist/withToast.d.ts
CHANGED
|
@@ -1,25 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { Toast } from "./toast.js";
|
|
3
|
-
export interface ToastOptions<A, E, Args extends ReadonlyArray<unknown>, WaiR, SucR, ErrR> {
|
|
4
|
-
stableToastId?: undefined | string | ((...args: Args) => string | undefined);
|
|
5
|
-
timeout?: number;
|
|
6
|
-
onWaiting: string | ((...args: Args) => string | null) | null | ((...args: Args) => Effect.Effect<string | null, never, WaiR>);
|
|
7
|
-
onSuccess: string | ((a: A, ...args: Args) => string | null) | null | ((a: A, ...args: Args) => Effect.Effect<string | null, never, SucR>);
|
|
8
|
-
onFailure: string | ((error: Option.Option<E>, ...args: Args) => string | {
|
|
9
|
-
level: "warn" | "error";
|
|
10
|
-
message: string;
|
|
11
|
-
}) | ((error: Option.Option<E>, ...args: Args) => Effect.Effect<string | {
|
|
12
|
-
level: "warn" | "error";
|
|
13
|
-
message: string;
|
|
14
|
-
}, never, ErrR>);
|
|
15
|
-
}
|
|
16
|
-
declare const WithToast_base: Context.ServiceClass<WithToast, "WithToast", <A, E, Args extends readonly unknown[], R, WaiR = never, SucR = never, ErrR = never>(options: ToastOptions<A, E, Args, WaiR, SucR, ErrR>) => (self: Effect.Effect<A, E, R>, ...args: Args) => Effect.Effect<A, E, R | WaiR | SucR | ErrR>> & {
|
|
17
|
-
readonly make: Effect.Effect<(<A, E, Args extends readonly unknown[], R, WaiR = never, SucR = never, ErrR = never>(options: ToastOptions<A, E, Args, WaiR, SucR, ErrR>) => (self: Effect.Effect<A, E, R>, ...args: Args) => Effect.Effect<A, E, R | WaiR | SucR | ErrR>), never, Toast>;
|
|
18
|
-
};
|
|
19
|
-
export declare class WithToast extends WithToast_base {
|
|
20
|
-
static readonly DefaultWithoutDependencies: Layer.Layer<WithToast, never, Toast>;
|
|
21
|
-
static readonly Default: Layer.Layer<WithToast, never, Toast>;
|
|
22
|
-
static readonly handle: <A, E, Args extends Array<unknown>, R, WaiR = never, SucR = never, ErrR = never>(options: ToastOptions<A, E, Args, WaiR, SucR, ErrR>) => (self: Effect.Effect<A, E, R>, ...args: Args) => Effect.Effect<A, E, R | WaiR | SucR | ErrR | WithToast>;
|
|
23
|
-
}
|
|
24
|
-
export {};
|
|
1
|
+
export * from "effect-app/withToast";
|
|
25
2
|
//# sourceMappingURL=withToast.d.ts.map
|
package/dist/withToast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withToast.d.ts","sourceRoot":"","sources":["../src/withToast.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"withToast.d.ts","sourceRoot":"","sources":["../src/withToast.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
|
package/dist/withToast.js
CHANGED
|
@@ -1,45 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { CurrentToastId, Toast } from "./toast.js";
|
|
4
|
-
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
5
|
-
export class WithToast extends Context.Service()("WithToast", {
|
|
6
|
-
make: Effect.gen(function* () {
|
|
7
|
-
const toast = yield* Toast;
|
|
8
|
-
return (options) => Effect.fnUntraced(function* (self, ...args) {
|
|
9
|
-
const baseTimeout = options.timeout ?? 3_000;
|
|
10
|
-
const stableToastId = typeof options.stableToastId === "function"
|
|
11
|
-
? options.stableToastId(...args)
|
|
12
|
-
: options.stableToastId;
|
|
13
|
-
const t = yield* wrapEffect(options.onWaiting)(...args);
|
|
14
|
-
const toastId = t === null ? stableToastId : yield* toast.info(t, { id: stableToastId ?? null } // TODO: timeout forever?
|
|
15
|
-
);
|
|
16
|
-
return yield* self.pipe(Effect.tap(Effect.fnUntraced(function* (a) {
|
|
17
|
-
const t = yield* wrapEffect(options.onSuccess)(a, ...args);
|
|
18
|
-
if (t === null) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
yield* toast.success(t, toastId !== undefined ? { id: toastId, timeout: baseTimeout } : { timeout: baseTimeout });
|
|
22
|
-
})), Effect.tapCause(Effect.fnUntraced(function* (cause) {
|
|
23
|
-
yield* Effect.logDebug("WithToast - caught error cause: " + Cause.squash(cause), Cause.hasInterruptsOnly(cause), cause);
|
|
24
|
-
if (Cause.hasInterruptsOnly(cause)) {
|
|
25
|
-
if (toastId)
|
|
26
|
-
yield* toast.dismiss(toastId);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const t = yield* wrapEffect(options.onFailure)(Cause.findErrorOption(cause), ...args);
|
|
30
|
-
const opts = { timeout: baseTimeout * 2 };
|
|
31
|
-
if (typeof t === "object") {
|
|
32
|
-
return t.level === "warn"
|
|
33
|
-
? yield* toast.warning(t.message, toastId !== undefined ? { ...opts, id: toastId } : opts)
|
|
34
|
-
: yield* toast.error(t.message, toastId !== undefined ? { ...opts, id: toastId } : opts);
|
|
35
|
-
}
|
|
36
|
-
yield* toast.error(t, toastId !== undefined ? { ...opts, id: toastId } : opts);
|
|
37
|
-
}, Effect.uninterruptible)), toastId !== undefined ? Effect.provideService(CurrentToastId, CurrentToastId.of({ toastId })) : (_) => _);
|
|
38
|
-
});
|
|
39
|
-
})
|
|
40
|
-
}) {
|
|
41
|
-
static DefaultWithoutDependencies = Layer.effect(this, this.make);
|
|
42
|
-
static Default = this.DefaultWithoutDependencies;
|
|
43
|
-
static handle = (options) => (self, ...args) => this.use((_) => _(options)(self, ...args));
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dpdGhUb2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLE1BQU0sWUFBWSxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQWdDbEQsbUVBQW1FO0FBQ25FLE1BQU0sT0FBTyxTQUFVLFNBQVEsT0FBTyxDQUFDLE9BQU8sRUFBYSxDQUFDLFdBQVcsRUFBRTtJQUN2RSxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFBO1FBQzFCLE9BQU8sQ0FDTCxPQUFtRCxFQUNuRCxFQUFFLENBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBQyxJQUE0QixFQUFFLEdBQUcsSUFBVTtZQUNyRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQTtZQUU1QyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssVUFBVTtnQkFDL0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFBO1lBRXpCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUN2RCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFD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
|
|
1
|
+
export * from "effect-app/withToast";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dpdGhUb2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFBIn0=
|