effect-zero 0.4.2 → 0.5.0-beta.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/dist/client-transaction.d.ts +77 -7
- package/dist/client-transaction.d.ts.map +1 -1
- package/dist/client-transaction.js +11 -7
- package/dist/client-transaction.js.map +1 -1
- package/dist/client.d.ts +119 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -6
- package/dist/client.js.map +1 -1
- package/dist/internal/server-synchronization-context.d.ts +19 -0
- package/dist/internal/server-synchronization-context.d.ts.map +1 -0
- package/dist/internal/server-synchronization-context.js +46 -0
- package/dist/internal/server-synchronization-context.js.map +1 -0
- package/dist/internal/server.d.ts +5 -16
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +1 -38
- package/dist/internal/server.js.map +1 -1
- package/dist/internal/server.test.js +7 -8
- package/dist/internal/server.test.js.map +1 -1
- package/dist/internal/utils.d.ts +7 -0
- package/dist/internal/utils.d.ts.map +1 -1
- package/dist/internal/utils.js +7 -0
- package/dist/internal/utils.js.map +1 -1
- package/dist/mutators.d.ts +1 -1
- package/dist/mutators.d.ts.map +1 -1
- package/dist/mutators.js +1 -1
- package/dist/query.d.ts +3 -5
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +6 -12
- package/dist/query.js.map +1 -1
- package/dist/result.d.ts +15 -15
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +11 -11
- package/dist/result.js.map +1 -1
- package/dist/server-transaction.d.ts +142 -15
- package/dist/server-transaction.d.ts.map +1 -1
- package/dist/server-transaction.js +24 -19
- package/dist/server-transaction.js.map +1 -1
- package/dist/server.d.ts +247 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -18
- package/dist/server.js.map +1 -1
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/error.d.ts +69 -48
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/error.js +38 -30
- package/dist/types/error.js.map +1 -1
- package/dist/types/push.d.ts +149 -149
- package/dist/types/push.d.ts.map +1 -1
- package/dist/types/push.js +45 -40
- package/dist/types/push.js.map +1 -1
- package/dist/types/queries.d.ts +42 -42
- package/dist/types/queries.d.ts.map +1 -1
- package/dist/types/queries.js +7 -7
- package/dist/types/queries.js.map +1 -1
- package/dist/types.test.js +13 -15
- package/dist/types.test.js.map +1 -1
- package/package.json +5 -7
- package/src/client-transaction.ts +13 -11
- package/src/client.ts +17 -19
- package/src/internal/server-synchronization-context.ts +64 -0
- package/src/internal/server.ts +3 -59
- package/src/internal/utils.ts +8 -0
- package/src/mutators.ts +2 -2
- package/src/query.ts +8 -20
- package/src/result.ts +40 -37
- package/src/server-transaction.ts +32 -37
- package/src/server.ts +34 -37
- package/src/types/error.ts +8 -8
- package/src/types/push.ts +22 -22
- package/src/types/queries.ts +7 -7
|
@@ -1,17 +1,87 @@
|
|
|
1
1
|
import type { Schema as ZeroSchema, Transaction as ZeroTransaction } from "@rocicorp/zero";
|
|
2
2
|
import * as Cause from "effect/Cause";
|
|
3
|
-
import * as
|
|
3
|
+
import * as Ctx from "effect/Context";
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
import type { NodeInspectSymbol } from "effect/Inspectable";
|
|
6
|
+
export type Context<TSchema extends ZeroSchema> = ReturnType<typeof make<any, TSchema>>;
|
|
7
|
+
export declare const make: <const Id extends string, TSchema extends ZeroSchema>(id: Id, schema: TSchema) => {
|
|
8
|
+
Context: {
|
|
9
|
+
new (_: never): {
|
|
10
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
11
|
+
readonly key: Id;
|
|
12
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
13
|
+
};
|
|
14
|
+
readonly key: Id;
|
|
15
|
+
of(this: void, self: ZeroTransaction<TSchema>): ZeroTransaction<TSchema>;
|
|
16
|
+
context(self: ZeroTransaction<TSchema>): Ctx.Context<{
|
|
17
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
18
|
+
readonly key: Id;
|
|
19
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
20
|
+
}>;
|
|
21
|
+
use<A, E, R>(f: (service: ZeroTransaction<TSchema>) => Effect.Effect<A, E, R>): Effect.Effect<A, E, {
|
|
22
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
23
|
+
readonly key: Id;
|
|
24
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
25
|
+
} | R>;
|
|
26
|
+
useSync<A>(f: (service: ZeroTransaction<TSchema>) => A): Effect.Effect<A, never, {
|
|
27
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
28
|
+
readonly key: Id;
|
|
29
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
30
|
+
}>;
|
|
31
|
+
readonly Identifier: {
|
|
32
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
33
|
+
readonly key: Id;
|
|
34
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
35
|
+
};
|
|
36
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
37
|
+
readonly stack?: string | undefined;
|
|
38
|
+
asEffect(): Effect.Effect<ZeroTransaction<TSchema>, never, {
|
|
39
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
40
|
+
readonly key: Id;
|
|
41
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
42
|
+
}>;
|
|
43
|
+
readonly "~effect/Context/Service": Ctx.ServiceTypeId;
|
|
44
|
+
pipe<A>(this: A): A;
|
|
45
|
+
pipe<A, B = never>(this: A, ab: (_: A) => B): B;
|
|
46
|
+
pipe<A, B_1 = never, C = never>(this: A, ab: (_: A) => B_1, bc: (_: B_1) => C): C;
|
|
47
|
+
pipe<A, B_2 = never, C_1 = never, D = never>(this: A, ab: (_: A) => B_2, bc: (_: B_2) => C_1, cd: (_: C_1) => D): D;
|
|
48
|
+
pipe<A, B_3 = never, C_2 = never, D_1 = never, E_1 = never>(this: A, ab: (_: A) => B_3, bc: (_: B_3) => C_2, cd: (_: C_2) => D_1, de: (_: D_1) => E_1): E_1;
|
|
49
|
+
pipe<A, B_4 = never, C_3 = never, D_2 = never, E_2 = never, F = never>(this: A, ab: (_: A) => B_4, bc: (_: B_4) => C_3, cd: (_: C_3) => D_2, de: (_: D_2) => E_2, ef: (_: E_2) => F): F;
|
|
50
|
+
pipe<A, B_5 = never, C_4 = never, D_3 = never, E_3 = never, F_1 = never, G = never>(this: A, ab: (_: A) => B_5, bc: (_: B_5) => C_4, cd: (_: C_4) => D_3, de: (_: D_3) => E_3, ef: (_: E_3) => F_1, fg: (_: F_1) => G): G;
|
|
51
|
+
pipe<A, B_6 = never, C_5 = never, D_4 = never, E_4 = never, F_2 = never, G_1 = never, H = never>(this: A, ab: (_: A) => B_6, bc: (_: B_6) => C_5, cd: (_: C_5) => D_4, de: (_: D_4) => E_4, ef: (_: E_4) => F_2, fg: (_: F_2) => G_1, gh: (_: G_1) => H): H;
|
|
52
|
+
pipe<A, B_7 = never, C_6 = never, D_5 = never, E_5 = never, F_3 = never, G_2 = never, H_1 = never, I = never>(this: A, ab: (_: A) => B_7, bc: (_: B_7) => C_6, cd: (_: C_6) => D_5, de: (_: D_5) => E_5, ef: (_: E_5) => F_3, fg: (_: F_3) => G_2, gh: (_: G_2) => H_1, hi: (_: H_1) => I): I;
|
|
53
|
+
pipe<A, B_8 = never, C_7 = never, D_6 = never, E_6 = never, F_4 = never, G_3 = never, H_2 = never, I_1 = never, J = never>(this: A, ab: (_: A) => B_8, bc: (_: B_8) => C_7, cd: (_: C_7) => D_6, de: (_: D_6) => E_6, ef: (_: E_6) => F_4, fg: (_: F_4) => G_3, gh: (_: G_3) => H_2, hi: (_: H_2) => I_1, ij: (_: I_1) => J): J;
|
|
54
|
+
pipe<A, B_9 = never, C_8 = never, D_7 = never, E_7 = never, F_5 = never, G_4 = never, H_3 = never, I_2 = never, J_1 = never, K = never>(this: A, ab: (_: A) => B_9, bc: (_: B_9) => C_8, cd: (_: C_8) => D_7, de: (_: D_7) => E_7, ef: (_: E_7) => F_5, fg: (_: F_5) => G_4, gh: (_: G_4) => H_3, hi: (_: H_3) => I_2, ij: (_: I_2) => J_1, jk: (_: J_1) => K): K;
|
|
55
|
+
pipe<A, B_10 = never, C_9 = never, D_8 = never, E_8 = never, F_6 = never, G_5 = never, H_4 = never, I_3 = never, J_2 = never, K_1 = never, L = never>(this: A, ab: (_: A) => B_10, bc: (_: B_10) => C_9, cd: (_: C_9) => D_8, de: (_: D_8) => E_8, ef: (_: E_8) => F_6, fg: (_: F_6) => G_5, gh: (_: G_5) => H_4, hi: (_: H_4) => I_3, ij: (_: I_3) => J_2, jk: (_: J_2) => K_1, kl: (_: K_1) => L): L;
|
|
56
|
+
pipe<A, B_11 = never, C_10 = never, D_9 = never, E_9 = never, F_7 = never, G_6 = never, H_5 = never, I_4 = never, J_3 = never, K_2 = never, L_1 = never, M = never>(this: A, ab: (_: A) => B_11, bc: (_: B_11) => C_10, cd: (_: C_10) => D_9, de: (_: D_9) => E_9, ef: (_: E_9) => F_7, fg: (_: F_7) => G_6, gh: (_: G_6) => H_5, hi: (_: H_5) => I_4, ij: (_: I_4) => J_3, jk: (_: J_3) => K_2, kl: (_: K_2) => L_1, lm: (_: L_1) => M): M;
|
|
57
|
+
pipe<A, B_12 = never, C_11 = never, D_10 = never, E_10 = never, F_8 = never, G_7 = never, H_6 = never, I_5 = never, J_4 = never, K_3 = never, L_2 = never, M_1 = never, N = never>(this: A, ab: (_: A) => B_12, bc: (_: B_12) => C_11, cd: (_: C_11) => D_10, de: (_: D_10) => E_10, ef: (_: E_10) => F_8, fg: (_: F_8) => G_7, gh: (_: G_7) => H_6, hi: (_: H_6) => I_5, ij: (_: I_5) => J_4, jk: (_: J_4) => K_3, kl: (_: K_3) => L_2, lm: (_: L_2) => M_1, mn: (_: M_1) => N): N;
|
|
58
|
+
pipe<A, B_13 = never, C_12 = never, D_11 = never, E_11 = never, F_9 = never, G_8 = never, H_7 = never, I_6 = never, J_5 = never, K_4 = never, L_3 = never, M_2 = never, N_1 = never, O = never>(this: A, ab: (_: A) => B_13, bc: (_: B_13) => C_12, cd: (_: C_12) => D_11, de: (_: D_11) => E_11, ef: (_: E_11) => F_9, fg: (_: F_9) => G_8, gh: (_: G_8) => H_7, hi: (_: H_7) => I_6, ij: (_: I_6) => J_5, jk: (_: J_5) => K_4, kl: (_: K_4) => L_3, lm: (_: L_3) => M_2, mn: (_: M_2) => N_1, no: (_: N_1) => O): O;
|
|
59
|
+
pipe<A, B_14 = never, C_13 = never, D_12 = never, E_12 = never, F_10 = never, G_9 = never, H_8 = never, I_7 = never, J_6 = never, K_5 = never, L_4 = never, M_3 = never, N_2 = never, O_1 = never, P = never>(this: A, ab: (_: A) => B_14, bc: (_: B_14) => C_13, cd: (_: C_13) => D_12, de: (_: D_12) => E_12, ef: (_: E_12) => F_10, fg: (_: F_10) => G_9, gh: (_: G_9) => H_8, hi: (_: H_8) => I_7, ij: (_: I_7) => J_6, jk: (_: J_6) => K_5, kl: (_: K_5) => L_4, lm: (_: L_4) => M_3, mn: (_: M_3) => N_2, no: (_: N_2) => O_1, op: (_: O_1) => P): P;
|
|
60
|
+
pipe<A, B_15 = never, C_14 = never, D_13 = never, E_13 = never, F_11 = never, G_10 = never, H_9 = never, I_8 = never, J_7 = never, K_6 = never, L_5 = never, M_4 = never, N_3 = never, O_2 = never, P_1 = never, Q = never>(this: A, ab: (_: A) => B_15, bc: (_: B_15) => C_14, cd: (_: C_14) => D_13, de: (_: D_13) => E_13, ef: (_: E_13) => F_11, fg: (_: F_11) => G_10, gh: (_: G_10) => H_9, hi: (_: H_9) => I_8, ij: (_: I_8) => J_7, jk: (_: J_7) => K_6, kl: (_: K_6) => L_5, lm: (_: L_5) => M_4, mn: (_: M_4) => N_3, no: (_: N_3) => O_2, op: (_: O_2) => P_1, pq: (_: P_1) => Q): Q;
|
|
61
|
+
pipe<A, B_16 = never, C_15 = never, D_14 = never, E_14 = never, F_12 = never, G_11 = never, H_10 = never, I_9 = never, J_8 = never, K_7 = never, L_6 = never, M_5 = never, N_4 = never, O_3 = never, P_2 = never, Q_1 = never, R_1 = never>(this: A, ab: (_: A) => B_16, bc: (_: B_16) => C_15, cd: (_: C_15) => D_14, de: (_: D_14) => E_14, ef: (_: E_14) => F_12, fg: (_: F_12) => G_11, gh: (_: G_11) => H_10, hi: (_: H_10) => I_9, ij: (_: I_9) => J_8, jk: (_: J_8) => K_7, kl: (_: K_7) => L_6, lm: (_: L_6) => M_5, mn: (_: M_5) => N_4, no: (_: N_4) => O_3, op: (_: O_3) => P_2, pq: (_: P_2) => Q_1, qr: (_: Q_1) => R_1): R_1;
|
|
62
|
+
pipe<A, B_17 = never, C_16 = never, D_15 = never, E_15 = never, F_13 = never, G_12 = never, H_11 = never, I_10 = never, J_9 = never, K_8 = never, L_7 = never, M_6 = never, N_5 = never, O_4 = never, P_3 = never, Q_2 = never, R_2 = never, S = never>(this: A, ab: (_: A) => B_17, bc: (_: B_17) => C_16, cd: (_: C_16) => D_15, de: (_: D_15) => E_15, ef: (_: E_15) => F_13, fg: (_: F_13) => G_12, gh: (_: G_12) => H_11, hi: (_: H_11) => I_10, ij: (_: I_10) => J_9, jk: (_: J_9) => K_8, kl: (_: K_8) => L_7, lm: (_: L_7) => M_6, mn: (_: M_6) => N_5, no: (_: N_5) => O_4, op: (_: O_4) => P_3, pq: (_: P_3) => Q_2, qr: (_: Q_2) => R_2, rs: (_: R_2) => S): S;
|
|
63
|
+
pipe<A, B_18 = never, C_17 = never, D_16 = never, E_16 = never, F_14 = never, G_13 = never, H_12 = never, I_11 = never, J_10 = never, K_9 = never, L_8 = never, M_7 = never, N_6 = never, O_5 = never, P_4 = never, Q_3 = never, R_3 = never, S_1 = never, T = never>(this: A, ab: (_: A) => B_18, bc: (_: B_18) => C_17, cd: (_: C_17) => D_16, de: (_: D_16) => E_16, ef: (_: E_16) => F_14, fg: (_: F_14) => G_13, gh: (_: G_13) => H_12, hi: (_: H_12) => I_11, ij: (_: I_11) => J_10, jk: (_: J_10) => K_9, kl: (_: K_9) => L_8, lm: (_: L_8) => M_7, mn: (_: M_7) => N_6, no: (_: N_6) => O_5, op: (_: O_5) => P_4, pq: (_: P_4) => Q_3, qr: (_: Q_3) => R_3, rs: (_: R_3) => S_1, st: (_: S_1) => T): T;
|
|
64
|
+
pipe<A, B_19 = never, C_18 = never, D_17 = never, E_17 = never, F_15 = never, G_14 = never, H_13 = never, I_12 = never, J_11 = never, K_10 = never, L_9 = never, M_8 = never, N_7 = never, O_6 = never, P_5 = never, Q_4 = never, R_4 = never, S_2 = never, T_1 = never, U = never>(this: A, ab: (_: A) => B_19, bc: (_: B_19) => C_18, cd: (_: C_18) => D_17, de: (_: D_17) => E_17, ef: (_: E_17) => F_15, fg: (_: F_15) => G_14, gh: (_: G_14) => H_13, hi: (_: H_13) => I_12, ij: (_: I_12) => J_11, jk: (_: J_11) => K_10, kl: (_: K_10) => L_9, lm: (_: L_9) => M_8, mn: (_: M_8) => N_7, no: (_: N_7) => O_6, op: (_: O_6) => P_5, pq: (_: P_5) => Q_4, qr: (_: Q_4) => R_4, rs: (_: R_4) => S_2, st: (_: S_2) => T_1, tu: (_: T_1) => U): U;
|
|
65
|
+
pipe<A, B_20 = never, C_19 = never, D_18 = never, E_18 = never, F_16 = never, G_15 = never, H_14 = never, I_13 = never, J_12 = never, K_11 = never, L_10 = never, M_9 = never, N_8 = never, O_7 = never, P_6 = never, Q_5 = never, R_5 = never, S_3 = never, T_2 = never, U_1 = never>(this: A, ab: (_: A) => B_20, bc: (_: B_20) => C_19, cd: (_: C_19) => D_18, de: (_: D_18) => E_18, ef: (_: E_18) => F_16, fg: (_: F_16) => G_15, gh: (_: G_15) => H_14, hi: (_: H_14) => I_13, ij: (_: I_13) => J_12, jk: (_: J_12) => K_11, kl: (_: K_11) => L_10, lm: (_: L_10) => M_9, mn: (_: M_9) => N_8, no: (_: N_8) => O_7, op: (_: O_7) => P_6, pq: (_: P_6) => Q_5, qr: (_: Q_5) => R_5, rs: (_: R_5) => S_3, st: (_: S_3) => T_2, tu: (_: T_2) => U_1): U_1;
|
|
66
|
+
toString(): string;
|
|
67
|
+
toJSON(): unknown;
|
|
68
|
+
[NodeInspectSymbol](): unknown;
|
|
69
|
+
[Symbol.iterator](): Effect.EffectIterator<Ctx.Service<{
|
|
70
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
71
|
+
readonly key: Id;
|
|
72
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
73
|
+
}, ZeroTransaction<TSchema>>>;
|
|
74
|
+
};
|
|
9
75
|
use: <A>(fn: (transaction: ZeroTransaction<TSchema>, options: {
|
|
10
76
|
readonly signal: AbortSignal;
|
|
11
|
-
}) => PromiseLike<A>) => Effect.Effect<A, ClientTransactionError,
|
|
77
|
+
}) => PromiseLike<A>) => Effect.Effect<A, ClientTransactionError, {
|
|
78
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
79
|
+
readonly key: Id;
|
|
80
|
+
readonly "~effect/Context/Service": typeof Ctx.ServiceTypeId;
|
|
81
|
+
}>;
|
|
12
82
|
schema: TSchema;
|
|
13
83
|
};
|
|
14
|
-
declare const ClientTransactionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").
|
|
84
|
+
declare const ClientTransactionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
15
85
|
readonly _tag: "ClientTransactionError";
|
|
16
86
|
} & Readonly<A>;
|
|
17
87
|
declare class ClientTransactionError extends ClientTransactionError_base<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-transaction.d.ts","sourceRoot":"","sources":["../src/client-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client-transaction.d.ts","sourceRoot":"","sources":["../src/client-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,MAAM,MAAM,OAAO,CAAC,OAAO,SAAS,UAAU,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,OAAO,SAAS,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAGlF,CAAC,MACR,CAAC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;KAAE,KAAK,WAAW,CAAC,CAAC,CAAC;;;;;;CAW3G,CAAC;;;;AAEF,cAAM,sBAAuB,SAAQ,4BAA2C;IAC9E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;IACA,IAAa,OAAO,WAGnB;CACF"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import * as Cause from "effect/Cause";
|
|
2
|
-
import * as
|
|
2
|
+
import * as Ctx from "effect/Context";
|
|
3
3
|
import * as Data from "effect/Data";
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
export const make = (id, schema) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
class Context extends Ctx.Service()(id) {
|
|
7
|
+
}
|
|
8
|
+
const use = (fn) => Effect.gen(function* () {
|
|
9
|
+
const transaction = yield* Context;
|
|
10
|
+
return yield* Effect.tryPromise({
|
|
11
|
+
try: (signal) => fn(transaction, { signal }),
|
|
12
|
+
catch: (error) => new ClientTransactionError({ cause: Cause.fail(error) }),
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
return { Context, use, schema };
|
|
12
16
|
};
|
|
13
17
|
class ClientTransactionError extends Data.TaggedError("ClientTransactionError") {
|
|
14
18
|
get message() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-transaction.js","sourceRoot":"","sources":["../src/client-transaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client-transaction.js","sourceRoot":"","sources":["../src/client-transaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAQxC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAsD,EAAM,EAAE,MAAe,EAAE,EAAE;IACnG,MAAM,OAAQ,SAAQ,GAAG,CAAC,OAAO,EAAqC,CAAC,EAAE,CAAC;KAAG;IAE7E,MAAM,GAAG,GAAG,CACV,EAAwG,EACxG,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;YAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,sBAAsB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SAC3E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,sBAAuB,SAAQ,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAE5E;IACA,IAAa,OAAO;QAClB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC;IAClF,CAAC;CACF"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,18 +1,130 @@
|
|
|
1
1
|
import { Zero, type ZeroOptions, type Schema as ZeroSchema, type Transaction as ZeroTransaction } from "@rocicorp/zero";
|
|
2
2
|
import * as Cause from "effect/Cause";
|
|
3
3
|
import * as Effect from "effect/Effect";
|
|
4
|
-
import type
|
|
4
|
+
import type { NodeInspectSymbol } from "effect/Inspectable";
|
|
5
|
+
import * as Rec from "effect/Record";
|
|
5
6
|
import * as Schema from "effect/Schema";
|
|
6
|
-
import type * as ClientTransaction from "./client-transaction.js";
|
|
7
7
|
import * as Mutators from "./mutators.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
export declare const make: <TSchema extends ZeroSchema, TMutators extends Mutators.AnyMutators>(transaction: {
|
|
9
|
+
Context: {
|
|
10
|
+
new (_: never): {
|
|
11
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
12
|
+
readonly key: any;
|
|
13
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
14
|
+
};
|
|
15
|
+
readonly key: any;
|
|
16
|
+
of(this: void, self: ZeroTransaction<TSchema>): ZeroTransaction<TSchema>;
|
|
17
|
+
context(self: ZeroTransaction<TSchema>): import("effect/Context").Context<{
|
|
18
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
19
|
+
readonly key: any;
|
|
20
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
21
|
+
}>;
|
|
22
|
+
use<A, E, R>(f: (service: ZeroTransaction<TSchema>) => Effect.Effect<A, E, R>): Effect.Effect<A, E, {
|
|
23
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
24
|
+
readonly key: any;
|
|
25
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
26
|
+
} | R>;
|
|
27
|
+
useSync<A>(f: (service: ZeroTransaction<TSchema>) => A): Effect.Effect<A, never, {
|
|
28
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
29
|
+
readonly key: any;
|
|
30
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
31
|
+
}>;
|
|
32
|
+
readonly Identifier: {
|
|
33
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
34
|
+
readonly key: any;
|
|
35
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
36
|
+
};
|
|
37
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
38
|
+
readonly stack?: string | undefined;
|
|
39
|
+
asEffect(): Effect.Effect<ZeroTransaction<TSchema>, never, {
|
|
40
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
41
|
+
readonly key: any;
|
|
42
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
43
|
+
}>;
|
|
44
|
+
readonly "~effect/Context/Service": import("effect/Context").ServiceTypeId;
|
|
45
|
+
pipe<A>(this: A): A;
|
|
46
|
+
pipe<A, B = never>(this: A, ab: (_: A) => B): B;
|
|
47
|
+
pipe<A, B_1 = never, C = never>(this: A, ab: (_: A) => B_1, bc: (_: B_1) => C): C;
|
|
48
|
+
pipe<A, B_2 = never, C_1 = never, D = never>(this: A, ab: (_: A) => B_2, bc: (_: B_2) => C_1, cd: (_: C_1) => D): D;
|
|
49
|
+
pipe<A, B_3 = never, C_2 = never, D_1 = never, E_1 = never>(this: A, ab: (_: A) => B_3, bc: (_: B_3) => C_2, cd: (_: C_2) => D_1, de: (_: D_1) => E_1): E_1;
|
|
50
|
+
pipe<A, B_4 = never, C_3 = never, D_2 = never, E_2 = never, F = never>(this: A, ab: (_: A) => B_4, bc: (_: B_4) => C_3, cd: (_: C_3) => D_2, de: (_: D_2) => E_2, ef: (_: E_2) => F): F;
|
|
51
|
+
pipe<A, B_5 = never, C_4 = never, D_3 = never, E_3 = never, F_1 = never, G = never>(this: A, ab: (_: A) => B_5, bc: (_: B_5) => C_4, cd: (_: C_4) => D_3, de: (_: D_3) => E_3, ef: (_: E_3) => F_1, fg: (_: F_1) => G): G;
|
|
52
|
+
pipe<A, B_6 = never, C_5 = never, D_4 = never, E_4 = never, F_2 = never, G_1 = never, H = never>(this: A, ab: (_: A) => B_6, bc: (_: B_6) => C_5, cd: (_: C_5) => D_4, de: (_: D_4) => E_4, ef: (_: E_4) => F_2, fg: (_: F_2) => G_1, gh: (_: G_1) => H): H;
|
|
53
|
+
pipe<A, B_7 = never, C_6 = never, D_5 = never, E_5 = never, F_3 = never, G_2 = never, H_1 = never, I = never>(this: A, ab: (_: A) => B_7, bc: (_: B_7) => C_6, cd: (_: C_6) => D_5, de: (_: D_5) => E_5, ef: (_: E_5) => F_3, fg: (_: F_3) => G_2, gh: (_: G_2) => H_1, hi: (_: H_1) => I): I;
|
|
54
|
+
pipe<A, B_8 = never, C_7 = never, D_6 = never, E_6 = never, F_4 = never, G_3 = never, H_2 = never, I_1 = never, J = never>(this: A, ab: (_: A) => B_8, bc: (_: B_8) => C_7, cd: (_: C_7) => D_6, de: (_: D_6) => E_6, ef: (_: E_6) => F_4, fg: (_: F_4) => G_3, gh: (_: G_3) => H_2, hi: (_: H_2) => I_1, ij: (_: I_1) => J): J;
|
|
55
|
+
pipe<A, B_9 = never, C_8 = never, D_7 = never, E_7 = never, F_5 = never, G_4 = never, H_3 = never, I_2 = never, J_1 = never, K = never>(this: A, ab: (_: A) => B_9, bc: (_: B_9) => C_8, cd: (_: C_8) => D_7, de: (_: D_7) => E_7, ef: (_: E_7) => F_5, fg: (_: F_5) => G_4, gh: (_: G_4) => H_3, hi: (_: H_3) => I_2, ij: (_: I_2) => J_1, jk: (_: J_1) => K): K;
|
|
56
|
+
pipe<A, B_10 = never, C_9 = never, D_8 = never, E_8 = never, F_6 = never, G_5 = never, H_4 = never, I_3 = never, J_2 = never, K_1 = never, L = never>(this: A, ab: (_: A) => B_10, bc: (_: B_10) => C_9, cd: (_: C_9) => D_8, de: (_: D_8) => E_8, ef: (_: E_8) => F_6, fg: (_: F_6) => G_5, gh: (_: G_5) => H_4, hi: (_: H_4) => I_3, ij: (_: I_3) => J_2, jk: (_: J_2) => K_1, kl: (_: K_1) => L): L;
|
|
57
|
+
pipe<A, B_11 = never, C_10 = never, D_9 = never, E_9 = never, F_7 = never, G_6 = never, H_5 = never, I_4 = never, J_3 = never, K_2 = never, L_1 = never, M = never>(this: A, ab: (_: A) => B_11, bc: (_: B_11) => C_10, cd: (_: C_10) => D_9, de: (_: D_9) => E_9, ef: (_: E_9) => F_7, fg: (_: F_7) => G_6, gh: (_: G_6) => H_5, hi: (_: H_5) => I_4, ij: (_: I_4) => J_3, jk: (_: J_3) => K_2, kl: (_: K_2) => L_1, lm: (_: L_1) => M): M;
|
|
58
|
+
pipe<A, B_12 = never, C_11 = never, D_10 = never, E_10 = never, F_8 = never, G_7 = never, H_6 = never, I_5 = never, J_4 = never, K_3 = never, L_2 = never, M_1 = never, N = never>(this: A, ab: (_: A) => B_12, bc: (_: B_12) => C_11, cd: (_: C_11) => D_10, de: (_: D_10) => E_10, ef: (_: E_10) => F_8, fg: (_: F_8) => G_7, gh: (_: G_7) => H_6, hi: (_: H_6) => I_5, ij: (_: I_5) => J_4, jk: (_: J_4) => K_3, kl: (_: K_3) => L_2, lm: (_: L_2) => M_1, mn: (_: M_1) => N): N;
|
|
59
|
+
pipe<A, B_13 = never, C_12 = never, D_11 = never, E_11 = never, F_9 = never, G_8 = never, H_7 = never, I_6 = never, J_5 = never, K_4 = never, L_3 = never, M_2 = never, N_1 = never, O = never>(this: A, ab: (_: A) => B_13, bc: (_: B_13) => C_12, cd: (_: C_12) => D_11, de: (_: D_11) => E_11, ef: (_: E_11) => F_9, fg: (_: F_9) => G_8, gh: (_: G_8) => H_7, hi: (_: H_7) => I_6, ij: (_: I_6) => J_5, jk: (_: J_5) => K_4, kl: (_: K_4) => L_3, lm: (_: L_3) => M_2, mn: (_: M_2) => N_1, no: (_: N_1) => O): O;
|
|
60
|
+
pipe<A, B_14 = never, C_13 = never, D_12 = never, E_12 = never, F_10 = never, G_9 = never, H_8 = never, I_7 = never, J_6 = never, K_5 = never, L_4 = never, M_3 = never, N_2 = never, O_1 = never, P = never>(this: A, ab: (_: A) => B_14, bc: (_: B_14) => C_13, cd: (_: C_13) => D_12, de: (_: D_12) => E_12, ef: (_: E_12) => F_10, fg: (_: F_10) => G_9, gh: (_: G_9) => H_8, hi: (_: H_8) => I_7, ij: (_: I_7) => J_6, jk: (_: J_6) => K_5, kl: (_: K_5) => L_4, lm: (_: L_4) => M_3, mn: (_: M_3) => N_2, no: (_: N_2) => O_1, op: (_: O_1) => P): P;
|
|
61
|
+
pipe<A, B_15 = never, C_14 = never, D_13 = never, E_13 = never, F_11 = never, G_10 = never, H_9 = never, I_8 = never, J_7 = never, K_6 = never, L_5 = never, M_4 = never, N_3 = never, O_2 = never, P_1 = never, Q = never>(this: A, ab: (_: A) => B_15, bc: (_: B_15) => C_14, cd: (_: C_14) => D_13, de: (_: D_13) => E_13, ef: (_: E_13) => F_11, fg: (_: F_11) => G_10, gh: (_: G_10) => H_9, hi: (_: H_9) => I_8, ij: (_: I_8) => J_7, jk: (_: J_7) => K_6, kl: (_: K_6) => L_5, lm: (_: L_5) => M_4, mn: (_: M_4) => N_3, no: (_: N_3) => O_2, op: (_: O_2) => P_1, pq: (_: P_1) => Q): Q;
|
|
62
|
+
pipe<A, B_16 = never, C_15 = never, D_14 = never, E_14 = never, F_12 = never, G_11 = never, H_10 = never, I_9 = never, J_8 = never, K_7 = never, L_6 = never, M_5 = never, N_4 = never, O_3 = never, P_2 = never, Q_1 = never, R_1 = never>(this: A, ab: (_: A) => B_16, bc: (_: B_16) => C_15, cd: (_: C_15) => D_14, de: (_: D_14) => E_14, ef: (_: E_14) => F_12, fg: (_: F_12) => G_11, gh: (_: G_11) => H_10, hi: (_: H_10) => I_9, ij: (_: I_9) => J_8, jk: (_: J_8) => K_7, kl: (_: K_7) => L_6, lm: (_: L_6) => M_5, mn: (_: M_5) => N_4, no: (_: N_4) => O_3, op: (_: O_3) => P_2, pq: (_: P_2) => Q_1, qr: (_: Q_1) => R_1): R_1;
|
|
63
|
+
pipe<A, B_17 = never, C_16 = never, D_15 = never, E_15 = never, F_13 = never, G_12 = never, H_11 = never, I_10 = never, J_9 = never, K_8 = never, L_7 = never, M_6 = never, N_5 = never, O_4 = never, P_3 = never, Q_2 = never, R_2 = never, S = never>(this: A, ab: (_: A) => B_17, bc: (_: B_17) => C_16, cd: (_: C_16) => D_15, de: (_: D_15) => E_15, ef: (_: E_15) => F_13, fg: (_: F_13) => G_12, gh: (_: G_12) => H_11, hi: (_: H_11) => I_10, ij: (_: I_10) => J_9, jk: (_: J_9) => K_8, kl: (_: K_8) => L_7, lm: (_: L_7) => M_6, mn: (_: M_6) => N_5, no: (_: N_5) => O_4, op: (_: O_4) => P_3, pq: (_: P_3) => Q_2, qr: (_: Q_2) => R_2, rs: (_: R_2) => S): S;
|
|
64
|
+
pipe<A, B_18 = never, C_17 = never, D_16 = never, E_16 = never, F_14 = never, G_13 = never, H_12 = never, I_11 = never, J_10 = never, K_9 = never, L_8 = never, M_7 = never, N_6 = never, O_5 = never, P_4 = never, Q_3 = never, R_3 = never, S_1 = never, T = never>(this: A, ab: (_: A) => B_18, bc: (_: B_18) => C_17, cd: (_: C_17) => D_16, de: (_: D_16) => E_16, ef: (_: E_16) => F_14, fg: (_: F_14) => G_13, gh: (_: G_13) => H_12, hi: (_: H_12) => I_11, ij: (_: I_11) => J_10, jk: (_: J_10) => K_9, kl: (_: K_9) => L_8, lm: (_: L_8) => M_7, mn: (_: M_7) => N_6, no: (_: N_6) => O_5, op: (_: O_5) => P_4, pq: (_: P_4) => Q_3, qr: (_: Q_3) => R_3, rs: (_: R_3) => S_1, st: (_: S_1) => T): T;
|
|
65
|
+
pipe<A, B_19 = never, C_18 = never, D_17 = never, E_17 = never, F_15 = never, G_14 = never, H_13 = never, I_12 = never, J_11 = never, K_10 = never, L_9 = never, M_8 = never, N_7 = never, O_6 = never, P_5 = never, Q_4 = never, R_4 = never, S_2 = never, T_1 = never, U = never>(this: A, ab: (_: A) => B_19, bc: (_: B_19) => C_18, cd: (_: C_18) => D_17, de: (_: D_17) => E_17, ef: (_: E_17) => F_15, fg: (_: F_15) => G_14, gh: (_: G_14) => H_13, hi: (_: H_13) => I_12, ij: (_: I_12) => J_11, jk: (_: J_11) => K_10, kl: (_: K_10) => L_9, lm: (_: L_9) => M_8, mn: (_: M_8) => N_7, no: (_: N_7) => O_6, op: (_: O_6) => P_5, pq: (_: P_5) => Q_4, qr: (_: Q_4) => R_4, rs: (_: R_4) => S_2, st: (_: S_2) => T_1, tu: (_: T_1) => U): U;
|
|
66
|
+
pipe<A, B_20 = never, C_19 = never, D_18 = never, E_18 = never, F_16 = never, G_15 = never, H_14 = never, I_13 = never, J_12 = never, K_11 = never, L_10 = never, M_9 = never, N_8 = never, O_7 = never, P_6 = never, Q_5 = never, R_5 = never, S_3 = never, T_2 = never, U_1 = never>(this: A, ab: (_: A) => B_20, bc: (_: B_20) => C_19, cd: (_: C_19) => D_18, de: (_: D_18) => E_18, ef: (_: E_18) => F_16, fg: (_: F_16) => G_15, gh: (_: G_15) => H_14, hi: (_: H_14) => I_13, ij: (_: I_13) => J_12, jk: (_: J_12) => K_11, kl: (_: K_11) => L_10, lm: (_: L_10) => M_9, mn: (_: M_9) => N_8, no: (_: N_8) => O_7, op: (_: O_7) => P_6, pq: (_: P_6) => Q_5, qr: (_: Q_5) => R_5, rs: (_: R_5) => S_3, st: (_: S_3) => T_2, tu: (_: T_2) => U_1): U_1;
|
|
67
|
+
toString(): string;
|
|
68
|
+
toJSON(): unknown;
|
|
69
|
+
[NodeInspectSymbol](): unknown;
|
|
70
|
+
[Symbol.iterator](): Effect.EffectIterator<import("effect/Context").Service<{
|
|
71
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
72
|
+
readonly key: any;
|
|
73
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
74
|
+
}, ZeroTransaction<TSchema>>>;
|
|
75
|
+
};
|
|
76
|
+
use: <A>(fn: (transaction: ZeroTransaction<TSchema>, options: {
|
|
77
|
+
readonly signal: AbortSignal;
|
|
78
|
+
}) => PromiseLike<A>) => Effect.Effect<A, {
|
|
79
|
+
get message(): string;
|
|
80
|
+
asEffect(): Effect.Effect<never, /*elided*/ any, never>;
|
|
81
|
+
[Symbol.iterator](): Effect.EffectIterator</*elided*/ any>;
|
|
82
|
+
name: string;
|
|
83
|
+
stack?: string;
|
|
84
|
+
cause: Cause.Cause<unknown>;
|
|
85
|
+
readonly "~effect/ErrorReporter/ignore"?: boolean;
|
|
86
|
+
readonly "~effect/ErrorReporter/severity"?: import("effect/LogLevel").Severity;
|
|
87
|
+
readonly "~effect/ErrorReporter/attributes"?: Rec.ReadonlyRecord<string, unknown>;
|
|
88
|
+
pipe<A_1>(this: A_1): A_1;
|
|
89
|
+
pipe<A_1, B = never>(this: A_1, ab: (_: A_1) => B): B;
|
|
90
|
+
pipe<A_1, B_1 = never, C = never>(this: A_1, ab: (_: A_1) => B_1, bc: (_: B_1) => C): C;
|
|
91
|
+
pipe<A_1, B_2 = never, C_1 = never, D = never>(this: A_1, ab: (_: A_1) => B_2, bc: (_: B_2) => C_1, cd: (_: C_1) => D): D;
|
|
92
|
+
pipe<A_1, B_3 = never, C_2 = never, D_1 = never, E_1 = never>(this: A_1, ab: (_: A_1) => B_3, bc: (_: B_3) => C_2, cd: (_: C_2) => D_1, de: (_: D_1) => E_1): E_1;
|
|
93
|
+
pipe<A_1, B_4 = never, C_3 = never, D_2 = never, E_2 = never, F = never>(this: A_1, ab: (_: A_1) => B_4, bc: (_: B_4) => C_3, cd: (_: C_3) => D_2, de: (_: D_2) => E_2, ef: (_: E_2) => F): F;
|
|
94
|
+
pipe<A_1, B_5 = never, C_4 = never, D_3 = never, E_3 = never, F_1 = never, G = never>(this: A_1, ab: (_: A_1) => B_5, bc: (_: B_5) => C_4, cd: (_: C_4) => D_3, de: (_: D_3) => E_3, ef: (_: E_3) => F_1, fg: (_: F_1) => G): G;
|
|
95
|
+
pipe<A_1, B_6 = never, C_5 = never, D_4 = never, E_4 = never, F_2 = never, G_1 = never, H = never>(this: A_1, ab: (_: A_1) => B_6, bc: (_: B_6) => C_5, cd: (_: C_5) => D_4, de: (_: D_4) => E_4, ef: (_: E_4) => F_2, fg: (_: F_2) => G_1, gh: (_: G_1) => H): H;
|
|
96
|
+
pipe<A_1, B_7 = never, C_6 = never, D_5 = never, E_5 = never, F_3 = never, G_2 = never, H_1 = never, I = never>(this: A_1, ab: (_: A_1) => B_7, bc: (_: B_7) => C_6, cd: (_: C_6) => D_5, de: (_: D_5) => E_5, ef: (_: E_5) => F_3, fg: (_: F_3) => G_2, gh: (_: G_2) => H_1, hi: (_: H_1) => I): I;
|
|
97
|
+
pipe<A_1, B_8 = never, C_7 = never, D_6 = never, E_6 = never, F_4 = never, G_3 = never, H_2 = never, I_1 = never, J = never>(this: A_1, ab: (_: A_1) => B_8, bc: (_: B_8) => C_7, cd: (_: C_7) => D_6, de: (_: D_6) => E_6, ef: (_: E_6) => F_4, fg: (_: F_4) => G_3, gh: (_: G_3) => H_2, hi: (_: H_2) => I_1, ij: (_: I_1) => J): J;
|
|
98
|
+
pipe<A_1, B_9 = never, C_8 = never, D_7 = never, E_7 = never, F_5 = never, G_4 = never, H_3 = never, I_2 = never, J_1 = never, K = never>(this: A_1, ab: (_: A_1) => B_9, bc: (_: B_9) => C_8, cd: (_: C_8) => D_7, de: (_: D_7) => E_7, ef: (_: E_7) => F_5, fg: (_: F_5) => G_4, gh: (_: G_4) => H_3, hi: (_: H_3) => I_2, ij: (_: I_2) => J_1, jk: (_: J_1) => K): K;
|
|
99
|
+
pipe<A_1, B_10 = never, C_9 = never, D_8 = never, E_8 = never, F_6 = never, G_5 = never, H_4 = never, I_3 = never, J_2 = never, K_1 = never, L = never>(this: A_1, ab: (_: A_1) => B_10, bc: (_: B_10) => C_9, cd: (_: C_9) => D_8, de: (_: D_8) => E_8, ef: (_: E_8) => F_6, fg: (_: F_6) => G_5, gh: (_: G_5) => H_4, hi: (_: H_4) => I_3, ij: (_: I_3) => J_2, jk: (_: J_2) => K_1, kl: (_: K_1) => L): L;
|
|
100
|
+
pipe<A_1, B_11 = never, C_10 = never, D_9 = never, E_9 = never, F_7 = never, G_6 = never, H_5 = never, I_4 = never, J_3 = never, K_2 = never, L_1 = never, M = never>(this: A_1, ab: (_: A_1) => B_11, bc: (_: B_11) => C_10, cd: (_: C_10) => D_9, de: (_: D_9) => E_9, ef: (_: E_9) => F_7, fg: (_: F_7) => G_6, gh: (_: G_6) => H_5, hi: (_: H_5) => I_4, ij: (_: I_4) => J_3, jk: (_: J_3) => K_2, kl: (_: K_2) => L_1, lm: (_: L_1) => M): M;
|
|
101
|
+
pipe<A_1, B_12 = never, C_11 = never, D_10 = never, E_10 = never, F_8 = never, G_7 = never, H_6 = never, I_5 = never, J_4 = never, K_3 = never, L_2 = never, M_1 = never, N = never>(this: A_1, ab: (_: A_1) => B_12, bc: (_: B_12) => C_11, cd: (_: C_11) => D_10, de: (_: D_10) => E_10, ef: (_: E_10) => F_8, fg: (_: F_8) => G_7, gh: (_: G_7) => H_6, hi: (_: H_6) => I_5, ij: (_: I_5) => J_4, jk: (_: J_4) => K_3, kl: (_: K_3) => L_2, lm: (_: L_2) => M_1, mn: (_: M_1) => N): N;
|
|
102
|
+
pipe<A_1, B_13 = never, C_12 = never, D_11 = never, E_11 = never, F_9 = never, G_8 = never, H_7 = never, I_6 = never, J_5 = never, K_4 = never, L_3 = never, M_2 = never, N_1 = never, O = never>(this: A_1, ab: (_: A_1) => B_13, bc: (_: B_13) => C_12, cd: (_: C_12) => D_11, de: (_: D_11) => E_11, ef: (_: E_11) => F_9, fg: (_: F_9) => G_8, gh: (_: G_8) => H_7, hi: (_: H_7) => I_6, ij: (_: I_6) => J_5, jk: (_: J_5) => K_4, kl: (_: K_4) => L_3, lm: (_: L_3) => M_2, mn: (_: M_2) => N_1, no: (_: N_1) => O): O;
|
|
103
|
+
pipe<A_1, B_14 = never, C_13 = never, D_12 = never, E_12 = never, F_10 = never, G_9 = never, H_8 = never, I_7 = never, J_6 = never, K_5 = never, L_4 = never, M_3 = never, N_2 = never, O_1 = never, P = never>(this: A_1, ab: (_: A_1) => B_14, bc: (_: B_14) => C_13, cd: (_: C_13) => D_12, de: (_: D_12) => E_12, ef: (_: E_12) => F_10, fg: (_: F_10) => G_9, gh: (_: G_9) => H_8, hi: (_: H_8) => I_7, ij: (_: I_7) => J_6, jk: (_: J_6) => K_5, kl: (_: K_5) => L_4, lm: (_: L_4) => M_3, mn: (_: M_3) => N_2, no: (_: N_2) => O_1, op: (_: O_1) => P): P;
|
|
104
|
+
pipe<A_1, B_15 = never, C_14 = never, D_13 = never, E_13 = never, F_11 = never, G_10 = never, H_9 = never, I_8 = never, J_7 = never, K_6 = never, L_5 = never, M_4 = never, N_3 = never, O_2 = never, P_1 = never, Q = never>(this: A_1, ab: (_: A_1) => B_15, bc: (_: B_15) => C_14, cd: (_: C_14) => D_13, de: (_: D_13) => E_13, ef: (_: E_13) => F_11, fg: (_: F_11) => G_10, gh: (_: G_10) => H_9, hi: (_: H_9) => I_8, ij: (_: I_8) => J_7, jk: (_: J_7) => K_6, kl: (_: K_6) => L_5, lm: (_: L_5) => M_4, mn: (_: M_4) => N_3, no: (_: N_3) => O_2, op: (_: O_2) => P_1, pq: (_: P_1) => Q): Q;
|
|
105
|
+
pipe<A_1, B_16 = never, C_15 = never, D_14 = never, E_14 = never, F_12 = never, G_11 = never, H_10 = never, I_9 = never, J_8 = never, K_7 = never, L_6 = never, M_5 = never, N_4 = never, O_3 = never, P_2 = never, Q_1 = never, R_1 = never>(this: A_1, ab: (_: A_1) => B_16, bc: (_: B_16) => C_15, cd: (_: C_15) => D_14, de: (_: D_14) => E_14, ef: (_: E_14) => F_12, fg: (_: F_12) => G_11, gh: (_: G_11) => H_10, hi: (_: H_10) => I_9, ij: (_: I_9) => J_8, jk: (_: J_8) => K_7, kl: (_: K_7) => L_6, lm: (_: L_6) => M_5, mn: (_: M_5) => N_4, no: (_: N_4) => O_3, op: (_: O_3) => P_2, pq: (_: P_2) => Q_1, qr: (_: Q_1) => R_1): R_1;
|
|
106
|
+
pipe<A_1, B_17 = never, C_16 = never, D_15 = never, E_15 = never, F_13 = never, G_12 = never, H_11 = never, I_10 = never, J_9 = never, K_8 = never, L_7 = never, M_6 = never, N_5 = never, O_4 = never, P_3 = never, Q_2 = never, R_2 = never, S = never>(this: A_1, ab: (_: A_1) => B_17, bc: (_: B_17) => C_16, cd: (_: C_16) => D_15, de: (_: D_15) => E_15, ef: (_: E_15) => F_13, fg: (_: F_13) => G_12, gh: (_: G_12) => H_11, hi: (_: H_11) => I_10, ij: (_: I_10) => J_9, jk: (_: J_9) => K_8, kl: (_: K_8) => L_7, lm: (_: L_7) => M_6, mn: (_: M_6) => N_5, no: (_: N_5) => O_4, op: (_: O_4) => P_3, pq: (_: P_3) => Q_2, qr: (_: Q_2) => R_2, rs: (_: R_2) => S): S;
|
|
107
|
+
pipe<A_1, B_18 = never, C_17 = never, D_16 = never, E_16 = never, F_14 = never, G_13 = never, H_12 = never, I_11 = never, J_10 = never, K_9 = never, L_8 = never, M_7 = never, N_6 = never, O_5 = never, P_4 = never, Q_3 = never, R_3 = never, S_1 = never, T = never>(this: A_1, ab: (_: A_1) => B_18, bc: (_: B_18) => C_17, cd: (_: C_17) => D_16, de: (_: D_16) => E_16, ef: (_: E_16) => F_14, fg: (_: F_14) => G_13, gh: (_: G_13) => H_12, hi: (_: H_12) => I_11, ij: (_: I_11) => J_10, jk: (_: J_10) => K_9, kl: (_: K_9) => L_8, lm: (_: L_8) => M_7, mn: (_: M_7) => N_6, no: (_: N_6) => O_5, op: (_: O_5) => P_4, pq: (_: P_4) => Q_3, qr: (_: Q_3) => R_3, rs: (_: R_3) => S_1, st: (_: S_1) => T): T;
|
|
108
|
+
pipe<A_1, B_19 = never, C_18 = never, D_17 = never, E_17 = never, F_15 = never, G_14 = never, H_13 = never, I_12 = never, J_11 = never, K_10 = never, L_9 = never, M_8 = never, N_7 = never, O_6 = never, P_5 = never, Q_4 = never, R_4 = never, S_2 = never, T_1 = never, U = never>(this: A_1, ab: (_: A_1) => B_19, bc: (_: B_19) => C_18, cd: (_: C_18) => D_17, de: (_: D_17) => E_17, ef: (_: E_17) => F_15, fg: (_: F_15) => G_14, gh: (_: G_14) => H_13, hi: (_: H_13) => I_12, ij: (_: I_12) => J_11, jk: (_: J_11) => K_10, kl: (_: K_10) => L_9, lm: (_: L_9) => M_8, mn: (_: M_8) => N_7, no: (_: N_7) => O_6, op: (_: O_6) => P_5, pq: (_: P_5) => Q_4, qr: (_: Q_4) => R_4, rs: (_: R_4) => S_2, st: (_: S_2) => T_1, tu: (_: T_1) => U): U;
|
|
109
|
+
pipe<A_1, B_20 = never, C_19 = never, D_18 = never, E_18 = never, F_16 = never, G_15 = never, H_14 = never, I_13 = never, J_12 = never, K_11 = never, L_10 = never, M_9 = never, N_8 = never, O_7 = never, P_6 = never, Q_5 = never, R_5 = never, S_3 = never, T_2 = never, U_1 = never>(this: A_1, ab: (_: A_1) => B_20, bc: (_: B_20) => C_19, cd: (_: C_19) => D_18, de: (_: D_18) => E_18, ef: (_: E_18) => F_16, fg: (_: F_16) => G_15, gh: (_: G_15) => H_14, hi: (_: H_14) => I_13, ij: (_: I_13) => J_12, jk: (_: J_12) => K_11, kl: (_: K_11) => L_10, lm: (_: L_10) => M_9, mn: (_: M_9) => N_8, no: (_: N_8) => O_7, op: (_: O_7) => P_6, pq: (_: P_6) => Q_5, qr: (_: Q_5) => R_5, rs: (_: R_5) => S_3, st: (_: S_3) => T_2, tu: (_: T_2) => U_1): U_1;
|
|
110
|
+
readonly _tag: "ClientTransactionError";
|
|
111
|
+
}, {
|
|
112
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
113
|
+
readonly key: any;
|
|
114
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
115
|
+
}>;
|
|
116
|
+
schema: TSchema;
|
|
117
|
+
}, mutators: TMutators, options: Omit<ZeroOptions<TSchema, { [A in keyof TMutators]: TMutators[A] extends Mutators.AnyMutator<any, any> ? UnwrapMutator<TSchema, TMutators[A]> : { [B_21 in keyof TMutators[A]]: TMutators[A][B_21] extends Mutators.AnyMutator<any, any> ? UnwrapMutator<TSchema, TMutators[A][B_21]> : never; }; }>, "schema" | "mutators">) => Effect.Effect<Zero<TSchema, { [A in keyof TMutators]: TMutators[A] extends Mutators.AnyMutator<any, any> ? UnwrapMutator<TSchema, TMutators[A]> : { [B_21 in keyof TMutators[A]]: TMutators[A][B_21] extends Mutators.AnyMutator<any, any> ? UnwrapMutator<TSchema, TMutators[A][B_21]> : never; }; }, unknown>, never, import("effect/Scope").Scope | Exclude<Mutators.ExtractMutatorsRequirements<TMutators>, {
|
|
118
|
+
readonly Service: ZeroTransaction<TSchema>;
|
|
119
|
+
readonly key: any;
|
|
120
|
+
readonly "~effect/Context/Service": typeof import("effect/Context").ServiceTypeId;
|
|
121
|
+
}>>;
|
|
122
|
+
type UnwrapMutator<TSchema extends ZeroSchema, TMutators extends Mutators.AnyMutator> = Parameters<TMutators> extends [] ? (transaction: ZeroTransaction<TSchema>) => Promise<void> : (transaction: ZeroTransaction<TSchema>, args: Schema.Codec.Encoded<TMutators[typeof Mutators.MutatorSchemaSymbol]>) => Promise<void>;
|
|
123
|
+
declare const ClientArgsParseError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
|
|
12
124
|
readonly _tag: "ClientArgsParseError";
|
|
13
125
|
} & Readonly<A>;
|
|
14
126
|
export declare class ClientArgsParseError extends ClientArgsParseError_base<{
|
|
15
|
-
readonly cause: Cause.Cause<
|
|
127
|
+
readonly cause: Cause.Cause<Schema.SchemaError>;
|
|
16
128
|
}> {
|
|
17
129
|
}
|
|
18
130
|
export {};
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,IAAI,UAAU,EAAE,KAAK,WAAW,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,IAAI,UAAU,EAAE,KAAK,WAAW,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAI1C,eAAO,MAAM,IAAI,GAAwB,OAAO,SAAS,UAAU,EAAE,SAAS,SAAS,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAkDxG,CAAC,kUAAD,CAAC;;;;GAVF,CAAC;AAEH,KAAK,aAAa,CAAC,OAAO,SAAS,UAAU,EAAE,SAAS,SAAS,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,GACpH,CAAC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACxD,CACE,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,EACrC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,QAAQ,CAAC,mBAAmB,CAAC,CAAC,KACvE,OAAO,CAAC,IAAI,CAAC,CAAC;;;;AAYvB,qBAAa,oBAAqB,SAAQ,0BAAyC;IACjF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;CACjD,CAAC;CAAG"}
|
package/dist/client.js
CHANGED
|
@@ -6,18 +6,19 @@ import * as Exit from "effect/Exit";
|
|
|
6
6
|
import * as Match from "effect/Match";
|
|
7
7
|
import * as Predicate from "effect/Predicate";
|
|
8
8
|
import * as Rec from "effect/Record";
|
|
9
|
-
import * as Runtime from "effect/Runtime";
|
|
10
9
|
import * as Schema from "effect/Schema";
|
|
10
|
+
import { normalizeArgs } from "./internal/utils.js";
|
|
11
11
|
import * as Mutators from "./mutators.js";
|
|
12
12
|
export const make = Effect.fn(function* (transaction, mutators, options) {
|
|
13
|
-
const
|
|
13
|
+
const ctx = yield* Effect.context();
|
|
14
14
|
function unwrapMutator(mutator) {
|
|
15
15
|
return async (tx, args, _ctx) => {
|
|
16
|
-
const exit = await Schema.
|
|
17
|
-
|
|
16
|
+
const exit = await Schema.decodeUnknownEffect(mutator[Mutators.MutatorSchemaSymbol])(normalizeArgs(args)).pipe(Effect.catchTag("SchemaError", (e) => Effect.fail(new ClientArgsParseError({ cause: Cause.fail(e) }))), Effect.flatMap(mutator), Effect.provideService(transaction.Context, tx), Effect.runPromiseExitWith(ctx));
|
|
17
|
+
if (Exit.isFailure(exit)) {
|
|
18
18
|
// Extract underlying error bypassing FiberFailure
|
|
19
|
-
throw Cause.squash(
|
|
20
|
-
}
|
|
19
|
+
throw Cause.squash(exit.cause);
|
|
20
|
+
}
|
|
21
|
+
return exit.value;
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
const unwrappedMutators = Rec.map(mutators, (v) => Match.value(v).pipe(Match.when(Predicate.isFunction, unwrapMutator), Match.orElse(Rec.map(unwrapMutator))));
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoF,MAAM,gBAAgB,CAAC;AACxH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoF,MAAM,gBAAgB,CAAC;AACxH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAI1C,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EACrC,WAA+C,EAC/C,QAAmB,EACnB,OAA8F;IAE9F,MAAM,GAAG,GACP,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAElB,CAAC;IAEN,SAAS,aAAa,CAAI,OAAgF;QACxG,OAAO,KAAK,EAAE,EAA4B,EAAE,IAAa,EAAE,IAAa,EAAE,EAAE;YAC1E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC5G,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAC9C,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAC/B,CAAC;YACF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,kDAAkD;gBAClD,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAChD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CACnC,CAAC;IAE1E,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CACjC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,OAAO,IAAI,IAAI,CAAC;YACd,GAAG,OAAO;YACV,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,EACF,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAC7C,CAAC;AACJ,CAAC,CAAC,CAAC;AAmBH,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAE/E;CAAG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as SynchronizedRef from "effect/SynchronizedRef";
|
|
5
|
+
import { MultipleTransactionsError, NoTransactionError } from "./server.js";
|
|
6
|
+
declare const ServerSynchronizationContext_base: Context.ServiceClass<ServerSynchronizationContext, "effect-zero/ServerSynchronizationContext", {
|
|
7
|
+
wasTransactionExecuted: SynchronizedRef.SynchronizedRef<boolean>;
|
|
8
|
+
}> & {
|
|
9
|
+
readonly make: Effect.Effect<{
|
|
10
|
+
wasTransactionExecuted: SynchronizedRef.SynchronizedRef<boolean>;
|
|
11
|
+
}, never, never>;
|
|
12
|
+
};
|
|
13
|
+
export declare class ServerSynchronizationContext extends ServerSynchronizationContext_base {
|
|
14
|
+
}
|
|
15
|
+
export declare const layer: Layer.Layer<ServerSynchronizationContext>;
|
|
16
|
+
export declare const guard: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, MultipleTransactionsError | E, ServerSynchronizationContext | R>;
|
|
17
|
+
export declare const finalize: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<void | A, NoTransactionError | E, ServerSynchronizationContext | R>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=server-synchronization-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-synchronization-context.d.ts","sourceRoot":"","sources":["../../src/internal/server-synchronization-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;;;;;;;;AAG5E,qBAAa,4BAA6B,SAAQ,iCASjD;CAAG;AAEJ,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAE3D,CAAC;AAGF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sFAazD,CAAC;AAEL,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sFAyB5D,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as SynchronizedRef from "effect/SynchronizedRef";
|
|
5
|
+
import { MultipleTransactionsError, NoTransactionError } from "./server.js";
|
|
6
|
+
import { prefixId } from "./utils.js";
|
|
7
|
+
export class ServerSynchronizationContext extends Context.Service()(prefixId("ServerSynchronizationContext"), {
|
|
8
|
+
make: Effect.gen(function* () {
|
|
9
|
+
return {
|
|
10
|
+
wasTransactionExecuted: yield* SynchronizedRef.make(false),
|
|
11
|
+
};
|
|
12
|
+
}),
|
|
13
|
+
}) {
|
|
14
|
+
}
|
|
15
|
+
export const layer = Layer.effect(ServerSynchronizationContext)(ServerSynchronizationContext.make);
|
|
16
|
+
// Ensures that only one transaction is executed at a time and checks that another transaction wasn't already executed.
|
|
17
|
+
export const guard = (effect) => Effect.gen(function* () {
|
|
18
|
+
const ctx = yield* ServerSynchronizationContext;
|
|
19
|
+
return yield* SynchronizedRef.modifyEffect(ctx.wasTransactionExecuted, Effect.fn(function* (wasTransactionExecuted) {
|
|
20
|
+
if (wasTransactionExecuted) {
|
|
21
|
+
return yield* new MultipleTransactionsError();
|
|
22
|
+
}
|
|
23
|
+
const result = yield* effect;
|
|
24
|
+
return [result, true];
|
|
25
|
+
}));
|
|
26
|
+
});
|
|
27
|
+
export const finalize = (effect) => Effect.gen(function* () {
|
|
28
|
+
const { wasTransactionExecuted } = yield* ServerSynchronizationContext;
|
|
29
|
+
return yield* effect.pipe(
|
|
30
|
+
// Case #2 "One transaction then fail"
|
|
31
|
+
// If the transaction was executed successfully, swallow the error and just log it, otherwise re-throw it
|
|
32
|
+
Effect.catchCause(Effect.fn(function* (e) {
|
|
33
|
+
if (yield* SynchronizedRef.get(wasTransactionExecuted)) {
|
|
34
|
+
return yield* Effect.logError("Error occurred after transaction execution completed", e);
|
|
35
|
+
}
|
|
36
|
+
return yield* Effect.failCause(e);
|
|
37
|
+
})),
|
|
38
|
+
// Case #4 "Zero transactions then succeed"
|
|
39
|
+
// Check that the transaction was executed during the mutation
|
|
40
|
+
Effect.tap(Effect.gen(function* () {
|
|
41
|
+
if (!(yield* SynchronizedRef.get(wasTransactionExecuted))) {
|
|
42
|
+
return yield* new NoTransactionError();
|
|
43
|
+
}
|
|
44
|
+
})));
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=server-synchronization-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-synchronization-context.js","sourceRoot":"","sources":["../../src/internal/server-synchronization-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAO,4BAA6B,SAAQ,OAAO,CAAC,OAAO,EAAgC,CAC/F,QAAQ,CAAC,8BAA8B,CAAC,EACxC;IACE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,OAAO;YACL,sBAAsB,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;SAC3D,CAAC;IACJ,CAAC,CAAC;CACH,CACF;CAAG;AAEJ,MAAM,CAAC,MAAM,KAAK,GAA8C,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CACxG,4BAA4B,CAAC,IAAI,CAClC,CAAC;AAEF,uHAAuH;AACvH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAU,MAA8B,EAAE,EAAE,CAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,4BAA4B,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,eAAe,CAAC,YAAY,CACxC,GAAG,CAAC,sBAAsB,EAC1B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,sBAAsB;QACzC,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,CAAC,IAAI,yBAAyB,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;QAC7B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAU,MAA8B,EAAE,EAAE,CAClE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC,CAAC,4BAA4B,CAAC;IAEvE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI;IACvB,sCAAsC;IACtC,yGAAyG;IACzG,MAAM,CAAC,UAAU,CACf,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,sDAAsD,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CACH;IACD,2CAA2C;IAC3C,8DAA8D;IAC9D,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
import type { TransactionProviderInput } from "@rocicorp/zero/server";
|
|
2
2
|
import * as Context from "effect/Context";
|
|
3
|
-
|
|
4
|
-
import * as SynchronizedRef from "effect/SynchronizedRef";
|
|
5
|
-
declare const ServerTransactionInput_base: Context.TagClass<ServerTransactionInput, "effect-zero/ServerTransactionInput", TransactionProviderInput>;
|
|
3
|
+
declare const ServerTransactionInput_base: Context.ServiceClass<ServerTransactionInput, "effect-zero/ServerTransactionInput", TransactionProviderInput>;
|
|
6
4
|
export declare class ServerTransactionInput extends ServerTransactionInput_base {
|
|
7
5
|
}
|
|
8
|
-
declare const
|
|
9
|
-
readonly effect: Effect.Effect<{
|
|
10
|
-
wasTransactionExecuted: SynchronizedRef.SynchronizedRef<boolean>;
|
|
11
|
-
}, never, never>;
|
|
12
|
-
}>;
|
|
13
|
-
export declare class ServerSynchronizationContext extends ServerSynchronizationContext_base {
|
|
14
|
-
static guard: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | MultipleTransactionsError, ServerSynchronizationContext | R>;
|
|
15
|
-
static finalize: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<void | A, E | NoTransactionError, ServerSynchronizationContext | R>;
|
|
16
|
-
}
|
|
17
|
-
declare const NoTransactionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
6
|
+
declare const NoTransactionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
18
7
|
readonly _tag: "NoTransactionError";
|
|
19
8
|
} & Readonly<A>;
|
|
20
9
|
export declare class NoTransactionError extends NoTransactionError_base {
|
|
21
10
|
message: string;
|
|
22
11
|
}
|
|
23
|
-
declare const MultipleTransactionsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").
|
|
12
|
+
declare const MultipleTransactionsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
24
13
|
readonly _tag: "MultipleTransactionsError";
|
|
25
14
|
} & Readonly<A>;
|
|
26
15
|
export declare class MultipleTransactionsError extends MultipleTransactionsError_base {
|
|
27
16
|
}
|
|
28
17
|
declare const OutOfOrderMutationErrorTypeId: unique symbol;
|
|
29
|
-
declare const OutOfOrderMutationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").
|
|
18
|
+
declare const OutOfOrderMutationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
30
19
|
readonly _tag: "OutOfOrderMutationError";
|
|
31
20
|
} & Readonly<A>;
|
|
32
21
|
export declare class OutOfOrderMutationError extends OutOfOrderMutationError_base<{
|
|
@@ -39,7 +28,7 @@ export declare class OutOfOrderMutationError extends OutOfOrderMutationError_bas
|
|
|
39
28
|
static is(e: unknown): e is OutOfOrderMutationError;
|
|
40
29
|
}
|
|
41
30
|
declare const MutationAlreadyProcessedErrorTypeId: unique symbol;
|
|
42
|
-
declare const MutationAlreadyProcessedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").
|
|
31
|
+
declare const MutationAlreadyProcessedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
43
32
|
readonly _tag: "MutationAlreadyProcessedError";
|
|
44
33
|
} & Readonly<A>;
|
|
45
34
|
export declare class MutationAlreadyProcessedError extends MutationAlreadyProcessedError_base<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;;AAK1C,qBAAa,sBAAuB,SAAQ,2BAE3C;CAAG;;;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAAsC;IAC5E,OAAO,SAAuE;CAC/E;;;;AACD,qBAAa,yBAA0B,SAAQ,8BAA6C;CAAG;AAE/F,QAAA,MAAM,6BAA6B,eAAkD,CAAC;;;;AACtF,qBAAa,uBAAwB,SAAQ,6BAA4C;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C,CAAC;IACA,QAAQ,CAAC,CAAC,6BAA6B,CAAC,SAAiC;IACzE,IAAa,OAAO,WAEnB;IACD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,uBAAuB;CAGpD;AAED,QAAA,MAAM,mCAAmC,eAAwD,CAAC;;;;AAClG,qBAAa,6BAA8B,SAAQ,mCAAkD;IACnG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC,CAAC;IACA,QAAQ,CAAC,CAAC,mCAAmC,CAAC,SAAuC;IACrF,IAAa,OAAO,WAEnB;IACD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,6BAA6B;CAG1D"}
|
package/dist/internal/server.js
CHANGED
|
@@ -1,45 +1,8 @@
|
|
|
1
1
|
import * as Context from "effect/Context";
|
|
2
2
|
import * as Data from "effect/Data";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
3
|
import * as Predicate from "effect/Predicate";
|
|
5
|
-
import * as SynchronizedRef from "effect/SynchronizedRef";
|
|
6
4
|
import { prefixId } from "./utils.js";
|
|
7
|
-
export class ServerTransactionInput extends Context.
|
|
8
|
-
}
|
|
9
|
-
export class ServerSynchronizationContext extends Effect.Service()(prefixId("ServerSynchronizationContext"), {
|
|
10
|
-
effect: Effect.gen(function* () {
|
|
11
|
-
return {
|
|
12
|
-
wasTransactionExecuted: yield* SynchronizedRef.make(false),
|
|
13
|
-
};
|
|
14
|
-
}),
|
|
15
|
-
}) {
|
|
16
|
-
// Ensures that only one transaction is executed at a time and checks that another transaction wasn't already executed.
|
|
17
|
-
static guard = (effect) => Effect.flatMap(this, (ctx) => SynchronizedRef.modifyEffect(ctx.wasTransactionExecuted, Effect.fn(function* (wasTransactionExecuted) {
|
|
18
|
-
if (wasTransactionExecuted) {
|
|
19
|
-
return yield* new MultipleTransactionsError();
|
|
20
|
-
}
|
|
21
|
-
const result = yield* effect;
|
|
22
|
-
return [result, true];
|
|
23
|
-
})));
|
|
24
|
-
static finalize = (effect) => Effect.gen(this, function* () {
|
|
25
|
-
const wasTransactionExecuted = yield* this.pipe(Effect.map((ctx) => ctx.wasTransactionExecuted));
|
|
26
|
-
return yield* effect.pipe(
|
|
27
|
-
// Case #2 "One transaction then fail"
|
|
28
|
-
// If the transaction was executed successfully, swallow the error and just log it, otherwise re-throw it
|
|
29
|
-
Effect.catchAllCause(Effect.fn(function* (e) {
|
|
30
|
-
if (yield* wasTransactionExecuted) {
|
|
31
|
-
return yield* Effect.logError("Error occurred after transaction execution completed", e);
|
|
32
|
-
}
|
|
33
|
-
return yield* Effect.failCause(e);
|
|
34
|
-
})),
|
|
35
|
-
// Case #4 "Zero transactions then succeed"
|
|
36
|
-
// Check that the transaction was executed during the mutation
|
|
37
|
-
Effect.tap(Effect.gen(function* () {
|
|
38
|
-
if (!(yield* wasTransactionExecuted)) {
|
|
39
|
-
return yield* new NoTransactionError();
|
|
40
|
-
}
|
|
41
|
-
})));
|
|
42
|
-
});
|
|
5
|
+
export class ServerTransactionInput extends Context.Service()(prefixId("ServerTransactionInput")) {
|
|
43
6
|
}
|
|
44
7
|
export class NoTransactionError extends Data.TaggedError("NoTransactionError") {
|
|
45
8
|
message = "No transaction detected in a mutation, a transaction is required.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAO,sBAAuB,SAAQ,OAAO,CAAC,OAAO,EAAoD,CAC7G,QAAQ,CAAC,wBAAwB,CAAC,CACnC;CAAG;AAEJ,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;IAC5E,OAAO,GAAG,mEAAmE,CAAC;CAC/E;AACD,MAAM,OAAO,yBAA0B,SAAQ,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC;CAAG;AAE/F,MAAM,6BAA6B,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;AACtF,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAIrF;IACS,CAAC,6BAA6B,CAAC,GAAG,6BAA6B,CAAC;IACzE,IAAa,OAAO;QAClB,OAAO,UAAU,IAAI,CAAC,QAAQ,qBAAqB,IAAI,CAAC,kBAAkB,iBAAiB,IAAI,CAAC,cAAc,EAAE,CAAC;IACnH,CAAC;IACD,MAAM,CAAC,EAAE,CAAC,CAAU;QAClB,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;IACjE,CAAC;CACF;AAED,MAAM,mCAAmC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAClG,MAAM,OAAO,6BAA8B,SAAQ,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAIjG;IACS,CAAC,mCAAmC,CAAC,GAAG,mCAAmC,CAAC;IACrF,IAAa,OAAO;QAClB,OAAO,0BAA0B,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,QAAQ,2CAA2C,IAAI,CAAC,MAAM,EAAE,CAAC;IAClI,CAAC;IACD,MAAM,CAAC,EAAE,CAAC,CAAU;QAClB,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { describe, it } from "@effect/vitest";
|
|
2
|
+
import { assertExitFailure } from "@effect/vitest/utils";
|
|
2
3
|
import * as Cause from "effect/Cause";
|
|
3
4
|
import * as Effect from "effect/Effect";
|
|
4
5
|
import * as Exit from "effect/Exit";
|
|
5
|
-
import { NoTransactionError
|
|
6
|
+
import { NoTransactionError } from "./server.js";
|
|
7
|
+
import * as ServerSynchronizationContext from "./server-synchronization-context.js";
|
|
6
8
|
describe("ServerSynchronizationContext", () => {
|
|
7
|
-
it.effect("finalize should return NoTransactionError when called without guard", Effect.
|
|
8
|
-
const result = yield* Effect.void.pipe(ServerSynchronizationContext.finalize, Effect.provide(ServerSynchronizationContext.
|
|
9
|
-
|
|
10
|
-
onSuccess: () => expect.fail("Expected failure"),
|
|
11
|
-
onFailure: (cause) => expect(cause).toStrictEqual(Cause.fail(new NoTransactionError())),
|
|
12
|
-
});
|
|
9
|
+
it.effect("finalize should return NoTransactionError when called without guard", () => Effect.gen(function* () {
|
|
10
|
+
const result = yield* Effect.void.pipe(ServerSynchronizationContext.finalize, Effect.provide(ServerSynchronizationContext.layer), Effect.exit);
|
|
11
|
+
assertExitFailure(result, Cause.fail(new NoTransactionError()));
|
|
13
12
|
}));
|
|
14
13
|
it.effect("finalize shouldn't return errors when called with guard", Effect.fn(function* ({ expect }) {
|
|
15
|
-
const result = yield* Effect.void.pipe(ServerSynchronizationContext.guard, ServerSynchronizationContext.finalize, Effect.provide(ServerSynchronizationContext.
|
|
14
|
+
const result = yield* Effect.void.pipe(ServerSynchronizationContext.guard, ServerSynchronizationContext.finalize, Effect.provide(ServerSynchronizationContext.layer), Effect.exit);
|
|
16
15
|
if (Exit.isFailure(result)) {
|
|
17
16
|
expect.fail("Expected success", result.cause);
|
|
18
17
|
}
|