effect-app 4.0.0-beta.283 → 4.0.0-beta.285
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 +8 -0
- package/dist/DataDependencies.d.ts +252 -23
- package/dist/DataDependencies.d.ts.map +1 -1
- package/dist/DataDependencies.js +40 -20
- package/dist/RequestScopedDependencies.d.ts +21 -0
- package/dist/RequestScopedDependencies.d.ts.map +1 -0
- package/dist/RequestScopedDependencies.js +16 -0
- package/dist/Store.d.ts +4 -11
- package/dist/Store.d.ts.map +1 -1
- package/dist/Store.js +4 -12
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +49 -39
- package/dist/rpc/Invalidation.d.ts +2319 -591
- package/dist/rpc/Invalidation.d.ts.map +1 -1
- package/dist/rpc/Invalidation.js +5 -2
- package/dist/setupRequest.d.ts +1 -0
- package/dist/setupRequest.d.ts.map +1 -1
- package/dist/setupRequest.js +8 -5
- package/package.json +1 -1
- package/src/DataDependencies.ts +59 -23
- package/src/RequestScopedDependencies.ts +45 -0
- package/src/Store.ts +7 -11
- package/src/client/apiClientFactory.ts +21 -6
- package/src/rpc/Invalidation.ts +4 -1
- package/src/setupRequest.ts +8 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.285
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7bd8234: Use set-backed data dependencies and provide request-scoped dependency services through a shared root-checked helper.
|
|
8
|
+
|
|
9
|
+
## 4.0.0-beta.284
|
|
10
|
+
|
|
3
11
|
## 4.0.0-beta.283
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Ref from "effect/Ref";
|
|
2
|
-
import * as
|
|
2
|
+
import * as Stream from "effect/Stream";
|
|
3
3
|
import * as Effect from "./Effect.js";
|
|
4
|
+
import * as RequestScopedDependencies from "./RequestScopedDependencies.js";
|
|
4
5
|
import * as S from "./Schema.js";
|
|
5
6
|
export declare const DataDependency: S.Struct<{
|
|
6
7
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
@@ -16,7 +17,7 @@ export declare const DataDependency: S.Struct<{
|
|
|
16
17
|
readonly name: S.String;
|
|
17
18
|
}>;
|
|
18
19
|
export type DataDependency = S.Schema.Type<typeof DataDependency>;
|
|
19
|
-
export declare const DataDependencies: S
|
|
20
|
+
export declare const DataDependencies: S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
20
21
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
21
22
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
22
23
|
Default: A;
|
|
@@ -28,8 +29,44 @@ export declare const DataDependencies: S.$Array<S.Struct<{
|
|
|
28
29
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
29
30
|
};
|
|
30
31
|
readonly name: S.String;
|
|
31
|
-
}
|
|
32
|
-
|
|
32
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
33
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
34
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
35
|
+
Default: A;
|
|
36
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
37
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
38
|
+
};
|
|
39
|
+
Default: "repo";
|
|
40
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
41
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
42
|
+
};
|
|
43
|
+
readonly name: S.String;
|
|
44
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
45
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
46
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
47
|
+
Default: A;
|
|
48
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
49
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
50
|
+
};
|
|
51
|
+
Default: "repo";
|
|
52
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
53
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
54
|
+
};
|
|
55
|
+
readonly name: S.String;
|
|
56
|
+
}>>, never, never> & {
|
|
57
|
+
withConstructorDefault: S.withConstructorDefault<S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
58
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
59
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
60
|
+
Default: A;
|
|
61
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
62
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
63
|
+
};
|
|
64
|
+
Default: "repo";
|
|
65
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
66
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
67
|
+
};
|
|
68
|
+
readonly name: S.String;
|
|
69
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
33
70
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
34
71
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
35
72
|
Default: A;
|
|
@@ -41,8 +78,7 @@ export declare const DataDependencies: S.$Array<S.Struct<{
|
|
|
41
78
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
42
79
|
};
|
|
43
80
|
readonly name: S.String;
|
|
44
|
-
}
|
|
45
|
-
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.Struct<{
|
|
81
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
46
82
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
47
83
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
48
84
|
Default: A;
|
|
@@ -54,11 +90,49 @@ export declare const DataDependencies: S.$Array<S.Struct<{
|
|
|
54
90
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
55
91
|
};
|
|
56
92
|
readonly name: S.String;
|
|
57
|
-
}>>, never
|
|
93
|
+
}>>, never, never>>;
|
|
94
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
95
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
96
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
97
|
+
Default: A;
|
|
98
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
99
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
100
|
+
};
|
|
101
|
+
Default: "repo";
|
|
102
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
103
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
104
|
+
};
|
|
105
|
+
readonly name: S.String;
|
|
106
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
107
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
108
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
109
|
+
Default: A;
|
|
110
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
111
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
112
|
+
};
|
|
113
|
+
Default: "repo";
|
|
114
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
115
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
116
|
+
};
|
|
117
|
+
readonly name: S.String;
|
|
118
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
119
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
120
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
121
|
+
Default: A;
|
|
122
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
123
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
124
|
+
};
|
|
125
|
+
Default: "repo";
|
|
126
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
127
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
128
|
+
};
|
|
129
|
+
readonly name: S.String;
|
|
130
|
+
}>>, never, never>, never>;
|
|
58
131
|
};
|
|
59
132
|
export type DataDependencies = S.Schema.Type<typeof DataDependencies>;
|
|
133
|
+
export declare const empty: () => DataDependencies;
|
|
60
134
|
export declare const DataDependencySet: S.Struct<{
|
|
61
|
-
readonly reads: S
|
|
135
|
+
readonly reads: S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
62
136
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
63
137
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
64
138
|
Default: A;
|
|
@@ -70,8 +144,44 @@ export declare const DataDependencySet: S.Struct<{
|
|
|
70
144
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
71
145
|
};
|
|
72
146
|
readonly name: S.String;
|
|
73
|
-
}
|
|
74
|
-
|
|
147
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
148
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
149
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
150
|
+
Default: A;
|
|
151
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
152
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
153
|
+
};
|
|
154
|
+
Default: "repo";
|
|
155
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
156
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
157
|
+
};
|
|
158
|
+
readonly name: S.String;
|
|
159
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
160
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
161
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
162
|
+
Default: A;
|
|
163
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
164
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
165
|
+
};
|
|
166
|
+
Default: "repo";
|
|
167
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
168
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
169
|
+
};
|
|
170
|
+
readonly name: S.String;
|
|
171
|
+
}>>, never, never> & {
|
|
172
|
+
withConstructorDefault: S.withConstructorDefault<S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
173
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
174
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
175
|
+
Default: A;
|
|
176
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
177
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
178
|
+
};
|
|
179
|
+
Default: "repo";
|
|
180
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
181
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
182
|
+
};
|
|
183
|
+
readonly name: S.String;
|
|
184
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
75
185
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
76
186
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
77
187
|
Default: A;
|
|
@@ -83,8 +193,7 @@ export declare const DataDependencySet: S.Struct<{
|
|
|
83
193
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
84
194
|
};
|
|
85
195
|
readonly name: S.String;
|
|
86
|
-
}
|
|
87
|
-
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.Struct<{
|
|
196
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
88
197
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
89
198
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
90
199
|
Default: A;
|
|
@@ -96,9 +205,46 @@ export declare const DataDependencySet: S.Struct<{
|
|
|
96
205
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
97
206
|
};
|
|
98
207
|
readonly name: S.String;
|
|
99
|
-
}>>, never
|
|
208
|
+
}>>, never, never>>;
|
|
209
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
210
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
211
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
212
|
+
Default: A;
|
|
213
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
214
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
215
|
+
};
|
|
216
|
+
Default: "repo";
|
|
217
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
218
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
219
|
+
};
|
|
220
|
+
readonly name: S.String;
|
|
221
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
222
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
223
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
224
|
+
Default: A;
|
|
225
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
226
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
227
|
+
};
|
|
228
|
+
Default: "repo";
|
|
229
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
230
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
231
|
+
};
|
|
232
|
+
readonly name: S.String;
|
|
233
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
234
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
235
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
236
|
+
Default: A;
|
|
237
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
238
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
239
|
+
};
|
|
240
|
+
Default: "repo";
|
|
241
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
242
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
243
|
+
};
|
|
244
|
+
readonly name: S.String;
|
|
245
|
+
}>>, never, never>, never>;
|
|
100
246
|
};
|
|
101
|
-
readonly writes: S
|
|
247
|
+
readonly writes: S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
102
248
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
103
249
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
104
250
|
Default: A;
|
|
@@ -110,8 +256,81 @@ export declare const DataDependencySet: S.Struct<{
|
|
|
110
256
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
111
257
|
};
|
|
112
258
|
readonly name: S.String;
|
|
113
|
-
}
|
|
114
|
-
|
|
259
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
260
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
261
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
262
|
+
Default: A;
|
|
263
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
264
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
265
|
+
};
|
|
266
|
+
Default: "repo";
|
|
267
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
268
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
269
|
+
};
|
|
270
|
+
readonly name: S.String;
|
|
271
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
272
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
273
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
274
|
+
Default: A;
|
|
275
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
276
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
277
|
+
};
|
|
278
|
+
Default: "repo";
|
|
279
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
280
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
281
|
+
};
|
|
282
|
+
readonly name: S.String;
|
|
283
|
+
}>>, never, never> & {
|
|
284
|
+
withConstructorDefault: S.withConstructorDefault<S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
285
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
286
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
287
|
+
Default: A;
|
|
288
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
289
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
290
|
+
};
|
|
291
|
+
Default: "repo";
|
|
292
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
293
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
294
|
+
};
|
|
295
|
+
readonly name: S.String;
|
|
296
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
297
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
298
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
299
|
+
Default: A;
|
|
300
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
301
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
302
|
+
};
|
|
303
|
+
Default: "repo";
|
|
304
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
305
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
306
|
+
};
|
|
307
|
+
readonly name: S.String;
|
|
308
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
309
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
310
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
311
|
+
Default: A;
|
|
312
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
313
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
314
|
+
};
|
|
315
|
+
Default: "repo";
|
|
316
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
317
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
318
|
+
};
|
|
319
|
+
readonly name: S.String;
|
|
320
|
+
}>>, never, never>>;
|
|
321
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.decodeTo<S.instanceOf<ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
322
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
323
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
324
|
+
Default: A;
|
|
325
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
326
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
327
|
+
};
|
|
328
|
+
Default: "repo";
|
|
329
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
330
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
331
|
+
};
|
|
332
|
+
readonly name: S.String;
|
|
333
|
+
}, "Type">>, ReadonlySet<import("effect/Schema").Struct.ReadonlySide<{
|
|
115
334
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
116
335
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
117
336
|
Default: A;
|
|
@@ -123,8 +342,7 @@ export declare const DataDependencySet: S.Struct<{
|
|
|
123
342
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
124
343
|
};
|
|
125
344
|
readonly name: S.String;
|
|
126
|
-
}
|
|
127
|
-
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.Struct<{
|
|
345
|
+
}, "Type">>>, S.$Array<S.Struct<{
|
|
128
346
|
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
129
347
|
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
130
348
|
Default: A;
|
|
@@ -136,7 +354,7 @@ export declare const DataDependencySet: S.Struct<{
|
|
|
136
354
|
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
137
355
|
};
|
|
138
356
|
readonly name: S.String;
|
|
139
|
-
}>>, never>;
|
|
357
|
+
}>>, never, never>, never>;
|
|
140
358
|
};
|
|
141
359
|
}>;
|
|
142
360
|
export type DataDependencySet = S.Schema.Type<typeof DataDependencySet>;
|
|
@@ -147,13 +365,24 @@ export interface DataDependencyRecorderService {
|
|
|
147
365
|
readonly drain: Effect.Effect<DataDependencySet>;
|
|
148
366
|
readonly drainWrites: Effect.Effect<DataDependencies>;
|
|
149
367
|
}
|
|
150
|
-
export declare const DataDependencyRecorder:
|
|
368
|
+
export declare const DataDependencyRecorder: RequestScopedDependencies.RequestScopedDependency<DataDependencyRecorderService, never, never>;
|
|
151
369
|
export type DataDependencyRecorder = typeof DataDependencyRecorder;
|
|
370
|
+
export type DataDependencyRecorderNotStartedError = RequestScopedDependencies.RequestScopedDependencyNotStartedError;
|
|
371
|
+
export declare const getDataDependencyRecorder: Effect.Effect<DataDependencyRecorderService, RequestScopedDependencies.RequestScopedDependencyNotStartedError, never>;
|
|
372
|
+
/**
|
|
373
|
+
* Guarantee a recorder is in scope for `self`, providing a fresh one per request when none is
|
|
374
|
+
* (e.g. a top-level client call with no parent query/command tracking its dependencies). An
|
|
375
|
+
* existing recorder is inherited, so nested calls forward into their parent rather than shadow it.
|
|
376
|
+
*/
|
|
377
|
+
export declare const ensureDataDependencyRecorder: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
378
|
+
/** Stream variant of {@link ensureDataDependencyRecorder}. */
|
|
379
|
+
export declare const ensureDataDependencyRecorderStream: <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E, R>;
|
|
152
380
|
export declare const makeDataDependencyRecorder: (readsRef: Ref.Ref<DataDependencies>, writesRef: Ref.Ref<DataDependencies>) => DataDependencyRecorderService;
|
|
153
381
|
export declare const repo: (name: string) => DataDependency;
|
|
154
382
|
export declare const signal: (name: string) => DataDependency;
|
|
155
383
|
export declare const QueryReadDependenciesMetaKey = "effect-app.query.readDependencies";
|
|
156
|
-
export declare const read: (dependency: DataDependency) => Effect.Effect<void,
|
|
157
|
-
export declare const write: (dependency: DataDependency) => Effect.Effect<void,
|
|
158
|
-
export declare const intersects: (a:
|
|
384
|
+
export declare const read: (dependency: DataDependency) => Effect.Effect<void, RequestScopedDependencies.RequestScopedDependencyNotStartedError, never>;
|
|
385
|
+
export declare const write: (dependency: DataDependency) => Effect.Effect<void, RequestScopedDependencies.RequestScopedDependencyNotStartedError, never>;
|
|
386
|
+
export declare const intersects: (a: ReadonlySet<DataDependency>, b: ReadonlySet<DataDependency>) => boolean;
|
|
387
|
+
export declare const isNonEmpty: (dependencies: DataDependencies) => boolean;
|
|
159
388
|
//# sourceMappingURL=DataDependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataDependencies.d.ts","sourceRoot":"","sources":["../src/DataDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DataDependencies.d.ts","sourceRoot":"","sources":["../src/DataDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAEhC,eAAO,MAAM,cAAc;;;;;;;;;;;;EAGzB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAA;AAEjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgC,CAAA;AAC7D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAErE,eAAO,MAAM,KAAK,QAAO,gBAA6B,CAAA;AAEtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEvE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;CACtD;AAYD,eAAO,MAAM,sBAAsB,gGAOlC,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,MAAM,qCAAqC,GAAG,yBAAyB,CAAC,sCAAsC,CAAA;AAEpH,eAAO,MAAM,yBAAyB,uHAAiC,CAAA;AAEvE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAIvG,CAAA;AAEH,8DAA8D;AAC9D,eAAO,MAAM,kCAAkC,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAM7G,CAAA;AAEH,eAAO,MAAM,0BAA0B,aAC3B,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,aACxB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,KACnC,6BAYD,CAAA;AAEF,eAAO,MAAM,IAAI,SAAU,MAAM,KAAG,cAA0C,CAAA;AAC9E,eAAO,MAAM,MAAM,SAAU,MAAM,KAAG,cAA4C,CAAA;AAElF,eAAO,MAAM,4BAA4B,sCAAsC,CAAA;AAE/E,eAAO,MAAM,IAAI,eAAgB,cAAc,iGAC4B,CAAA;AAE3E,eAAO,MAAM,KAAK,eAAgB,cAAc,iGAC4B,CAAA;AAE5E,eAAO,MAAM,UAAU,MAClB,WAAW,CAAC,cAAc,CAAC,KAC3B,WAAW,CAAC,cAAc,CAAC,YAM/B,CAAA;AAED,eAAO,MAAM,UAAU,iBAAkB,gBAAgB,YAA0B,CAAA"}
|
package/dist/DataDependencies.js
CHANGED
|
@@ -1,27 +1,40 @@
|
|
|
1
1
|
import * as Ref from "effect/Ref";
|
|
2
|
-
import * as
|
|
2
|
+
import * as Stream from "effect/Stream";
|
|
3
3
|
import * as Effect from "./Effect.js";
|
|
4
|
+
import * as RequestScopedDependencies from "./RequestScopedDependencies.js";
|
|
4
5
|
import * as S from "./Schema.js";
|
|
5
6
|
export const DataDependency = S.Struct({
|
|
6
7
|
type: S.Literals(["repo", "signal"]),
|
|
7
8
|
name: S.String
|
|
8
9
|
});
|
|
9
|
-
export const DataDependencies = S.
|
|
10
|
+
export const DataDependencies = S.ReadonlySet(DataDependency);
|
|
11
|
+
export const empty = () => new Set();
|
|
10
12
|
export const DataDependencySet = S.Struct({
|
|
11
13
|
reads: DataDependencies,
|
|
12
14
|
writes: DataDependencies
|
|
13
15
|
});
|
|
14
|
-
const containsDependency = (dependencies, dependency) =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const containsDependency = (dependencies, dependency) => {
|
|
17
|
+
for (const _ of dependencies) {
|
|
18
|
+
if (_.type === dependency.type && _.name === dependency.name)
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
23
|
+
const appendDependency = (dependency) => (dependencies) => containsDependency(dependencies, dependency) ? dependencies : new Set([...dependencies, dependency]);
|
|
24
|
+
export const DataDependencyRecorder = RequestScopedDependencies.make("effect-app/DataDependencyRecorder", Effect.gen(function* () {
|
|
25
|
+
const readsRef = yield* Ref.make(empty());
|
|
26
|
+
const writesRef = yield* Ref.make(empty());
|
|
27
|
+
return makeDataDependencyRecorder(readsRef, writesRef);
|
|
28
|
+
}));
|
|
29
|
+
export const getDataDependencyRecorder = DataDependencyRecorder.current;
|
|
30
|
+
/**
|
|
31
|
+
* Guarantee a recorder is in scope for `self`, providing a fresh one per request when none is
|
|
32
|
+
* (e.g. a top-level client call with no parent query/command tracking its dependencies). An
|
|
33
|
+
* existing recorder is inherited, so nested calls forward into their parent rather than shadow it.
|
|
34
|
+
*/
|
|
35
|
+
export const ensureDataDependencyRecorder = (self) => Effect.flatMap(DataDependencyRecorder, (current) => current === "root" ? Effect.provide(self, DataDependencyRecorder.layer) : self);
|
|
36
|
+
/** Stream variant of {@link ensureDataDependencyRecorder}. */
|
|
37
|
+
export const ensureDataDependencyRecorderStream = (self) => Stream.unwrap(Effect.map(DataDependencyRecorder, (current) => current === "root" ? Stream.provide(self, DataDependencyRecorder.layer) : self));
|
|
25
38
|
export const makeDataDependencyRecorder = (readsRef, writesRef) => ({
|
|
26
39
|
read: (dependency) => Ref.update(readsRef, appendDependency(dependency)),
|
|
27
40
|
write: (dependency) => Ref.update(writesRef, appendDependency(dependency)),
|
|
@@ -30,15 +43,22 @@ export const makeDataDependencyRecorder = (readsRef, writesRef) => ({
|
|
|
30
43
|
writes: Ref.get(writesRef)
|
|
31
44
|
}),
|
|
32
45
|
drain: Effect.all({
|
|
33
|
-
reads: Ref.getAndSet(readsRef,
|
|
34
|
-
writes: Ref.getAndSet(writesRef,
|
|
46
|
+
reads: Ref.getAndSet(readsRef, empty()),
|
|
47
|
+
writes: Ref.getAndSet(writesRef, empty())
|
|
35
48
|
}),
|
|
36
|
-
drainWrites: Ref.getAndSet(writesRef,
|
|
49
|
+
drainWrites: Ref.getAndSet(writesRef, empty())
|
|
37
50
|
});
|
|
38
51
|
export const repo = (name) => ({ type: "repo", name });
|
|
39
52
|
export const signal = (name) => ({ type: "signal", name });
|
|
40
53
|
export const QueryReadDependenciesMetaKey = "effect-app.query.readDependencies";
|
|
41
|
-
export const read = (dependency) =>
|
|
42
|
-
export const write = (dependency) =>
|
|
43
|
-
export const intersects = (a, b) =>
|
|
44
|
-
|
|
54
|
+
export const read = (dependency) => getDataDependencyRecorder.pipe(Effect.flatMap((_) => _.read(dependency)));
|
|
55
|
+
export const write = (dependency) => getDataDependencyRecorder.pipe(Effect.flatMap((_) => _.write(dependency)));
|
|
56
|
+
export const intersects = (a, b) => {
|
|
57
|
+
for (const dependency of a) {
|
|
58
|
+
if (containsDependency(b, dependency))
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
};
|
|
63
|
+
export const isNonEmpty = (dependencies) => dependencies.size > 0;
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YURlcGVuZGVuY2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9EYXRhRGVwZW5kZW5jaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ3JDLE9BQU8sS0FBSyx5QkFBeUIsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMzRSxPQUFPLEtBQUssQ0FBQyxNQUFNLGFBQWEsQ0FBQTtBQUVoQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDZixDQUFDLENBQUE7QUFHRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBRzdELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxHQUFxQixFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUV0RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hDLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsTUFBTSxFQUFFLGdCQUFnQjtDQUN6QixDQUFDLENBQUE7QUFXRixNQUFNLGtCQUFrQixHQUFHLENBQUMsWUFBeUMsRUFBRSxVQUEwQixFQUFFLEVBQUU7SUFDbkcsS0FBSyxNQUFNLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJO1lB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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type * as Scope from "effect/Scope";
|
|
2
|
+
import * as Context from "./Context.js";
|
|
3
|
+
import * as Effect from "./Effect.js";
|
|
4
|
+
import * as Layer from "./Layer.js";
|
|
5
|
+
export type Root = "root";
|
|
6
|
+
declare const RequestScopedDependencyNotStartedError_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 & {
|
|
7
|
+
readonly _tag: "RequestScopedDependencyNotStartedError";
|
|
8
|
+
} & Readonly<A>;
|
|
9
|
+
export declare class RequestScopedDependencyNotStartedError extends RequestScopedDependencyNotStartedError_base<{
|
|
10
|
+
readonly key: string;
|
|
11
|
+
}> {
|
|
12
|
+
}
|
|
13
|
+
export interface RequestScopedDependency<Service, E = never, R = never> extends Context.Reference<Service | Root> {
|
|
14
|
+
readonly current: Effect.Effect<Service, RequestScopedDependencyNotStartedError>;
|
|
15
|
+
readonly layer: Layer.Layer<never, E, R>;
|
|
16
|
+
}
|
|
17
|
+
export declare const access: <Service>(dependency: Context.Reference<Service | Root>, key: string) => Effect.Effect<Service, RequestScopedDependencyNotStartedError>;
|
|
18
|
+
export declare const make: <Service, E = never, R = never>(key: string, service: Effect.Effect<Service, E, R>) => RequestScopedDependency<Service, E, Exclude<R, Scope.Scope>>;
|
|
19
|
+
export declare const layer: <Deps extends readonly [RequestScopedDependency<any, any, any>, ...Array<RequestScopedDependency<any, any, any>>]>(...dependencies: Deps) => Layer.Layer<never, { [K in keyof Deps]: Deps[K] extends RequestScopedDependency<any, infer E, any> ? E : never; }[number], { [K in keyof Deps]: Deps[K] extends RequestScopedDependency<any, any, infer R> ? R : never; }[number]>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=RequestScopedDependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestScopedDependencies.d.ts","sourceRoot":"","sources":["../src/RequestScopedDependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;;;;AAEzB,qBAAa,sCAAuC,SAAQ,4CAE1D;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;CAAG;AAE9B,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAE,SAAQ,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/G,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,sCAAsC,CAAC,CAAA;IAChF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CACzC;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,cAChB,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OACxC,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,sCAAsC,CAG7D,CAAA;AAEH,eAAO,MAAM,IAAI,GAAI,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,OAC3C,MAAM,WACF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KACpC,uBAAuB,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAM7D,CAAA;AAED,eAAO,MAAM,KAAK,GAChB,IAAI,SAAS,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,mBAE/F,IAAI,KACpB,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAE,CAAC,MAAM,CAAC,EACrG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAE,CAAC,MAAM,CAAC,CACnB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as Data from "effect/Data";
|
|
2
|
+
import * as Context from "./Context.js";
|
|
3
|
+
import * as Effect from "./Effect.js";
|
|
4
|
+
import * as Layer from "./Layer.js";
|
|
5
|
+
export class RequestScopedDependencyNotStartedError extends Data.TaggedError("RequestScopedDependencyNotStartedError") {
|
|
6
|
+
}
|
|
7
|
+
export const access = (dependency, key) => dependency.pipe(Effect.filterOrFail((_) => _ !== "root", () => new RequestScopedDependencyNotStartedError({ key })));
|
|
8
|
+
export const make = (key, service) => {
|
|
9
|
+
const dependency = Context.Reference(key, { defaultValue: () => "root" });
|
|
10
|
+
return Object.assign(dependency, {
|
|
11
|
+
current: access(dependency, key),
|
|
12
|
+
layer: Layer.effect(dependency, service)
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
export const layer = (...dependencies) => dependencies.map((_) => _.layer).reduce((acc, l) => Layer.merge(acc, l));
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdFNjb3BlZERlcGVuZGVuY2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXF1ZXN0U2NvcGVkRGVwZW5kZW5jaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sYUFBYSxDQUFBO0FBRW5DLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBSW5DLE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxJQUFJLENBQUMsV0FBVyxDQUMxRSx3Q0FBd0MsQ0FDZjtDQUFHO0FBTzlCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUNwQixVQUE2QyxFQUM3QyxHQUFXLEVBQ3FELEVBQUUsQ0FDbEUsVUFBVSxDQUFDLElBQUksQ0FDYixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFnQixFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLHNDQUFzQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUNsSCxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQ2xCLEdBQVcsRUFDWCxPQUFxQyxFQUN5QixFQUFFO0lBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQWlCLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3pGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDO1FBQ2hDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7S0FDekMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBR25CLEdBQUcsWUFBa0IsRUFLckIsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBUSxDQUFBIn0=
|
package/dist/Store.d.ts
CHANGED
|
@@ -3,12 +3,12 @@ import type { NonEmptyReadonlyArray } from "./Array.js";
|
|
|
3
3
|
import type { DatabaseError, OptimisticConcurrencyException } from "./client/errors.js";
|
|
4
4
|
import * as Context from "./Context.js";
|
|
5
5
|
import * as Effect from "./Effect.js";
|
|
6
|
-
import * as Layer from "./Layer.js";
|
|
7
6
|
import type { FilterResult } from "./Model/filter/filterApi.js";
|
|
8
7
|
import type { FieldValues } from "./Model/filter/types.js";
|
|
9
8
|
import type { FieldPath } from "./Model/filter/types/path/index.js";
|
|
10
9
|
import type { AggregateIrExpression, ComputedProjectionIrExpression, RawQuery } from "./Model/query.js";
|
|
11
10
|
import type * as Option from "./Option.js";
|
|
11
|
+
import * as RequestScopedDependencies from "./RequestScopedDependencies.js";
|
|
12
12
|
import { NonEmptyString255 } from "./Schema.js";
|
|
13
13
|
/**
|
|
14
14
|
* Adapter-neutral unique-key definition for stores that support unique indexes,
|
|
@@ -137,16 +137,9 @@ declare const ContextMap_base: Context.OpaqueClass<ContextMap, "effect-app/Conte
|
|
|
137
137
|
};
|
|
138
138
|
export declare class ContextMap extends ContextMap_base {
|
|
139
139
|
}
|
|
140
|
-
declare const
|
|
141
|
-
export
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
declare const ContextMapNotStartedError_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 & {
|
|
145
|
-
readonly _tag: "ContextMapNotStartedError";
|
|
146
|
-
} & Readonly<A>;
|
|
147
|
-
export declare class ContextMapNotStartedError extends ContextMapNotStartedError_base {
|
|
148
|
-
}
|
|
149
|
-
export declare const getContextMap: Effect.Effect<ContextMap, ContextMapNotStartedError, never>;
|
|
140
|
+
export declare const ContextMapContainer: RequestScopedDependencies.RequestScopedDependency<ContextMap, never, never>;
|
|
141
|
+
export type ContextMapNotStartedError = RequestScopedDependencies.RequestScopedDependencyNotStartedError;
|
|
142
|
+
export declare const getContextMap: Effect.Effect<ContextMap, RequestScopedDependencies.RequestScopedDependencyNotStartedError, never>;
|
|
150
143
|
/**
|
|
151
144
|
* Runs `make` at most once per ContextMap (i.e. per request) and caches the
|
|
152
145
|
* resulting value in the ContextMap under a fresh symbol. Subsequent calls of
|