@effect-app/infra 0.43.1 → 0.44.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/_cjs/api/codec.cjs +3 -11
  3. package/_cjs/api/codec.cjs.map +1 -1
  4. package/_cjs/services/RepositoryBase.cjs +201 -0
  5. package/_cjs/services/RepositoryBase.cjs.map +1 -0
  6. package/_cjs/services/Store/Cosmos.cjs +1 -1
  7. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  8. package/_cjs/services/Store/Disk.cjs +1 -1
  9. package/_cjs/services/Store/Disk.cjs.map +1 -1
  10. package/_cjs/services/Store/Memory.cjs +2 -1
  11. package/_cjs/services/Store/Memory.cjs.map +1 -1
  12. package/_cjs/services/Store/Redis.cjs +2 -2
  13. package/_cjs/services/Store/Redis.cjs.map +1 -1
  14. package/_src/api/codec.ts +3 -15
  15. package/_src/services/RepositoryBase.ts +366 -0
  16. package/_src/services/Store/Cosmos.ts +3 -3
  17. package/_src/services/Store/Disk.ts +8 -8
  18. package/_src/services/Store/Memory.ts +7 -6
  19. package/_src/services/Store/Redis.ts +4 -4
  20. package/_src/services/Store/service.ts +4 -4
  21. package/dist/api/codec.d.ts +2 -3
  22. package/dist/api/codec.d.ts.map +1 -1
  23. package/dist/api/codec.js +4 -12
  24. package/dist/api/express/makeOpenApiSpecs.d.ts +1 -1
  25. package/dist/services/Repository.d.ts +14 -14
  26. package/dist/services/RepositoryBase.d.ts +240 -0
  27. package/dist/services/RepositoryBase.d.ts.map +1 -0
  28. package/dist/services/RepositoryBase.js +175 -0
  29. package/dist/services/Store/Cosmos.d.ts +1 -1
  30. package/dist/services/Store/Cosmos.d.ts.map +1 -1
  31. package/dist/services/Store/Cosmos.js +2 -2
  32. package/dist/services/Store/Disk.d.ts +1 -1
  33. package/dist/services/Store/Disk.d.ts.map +1 -1
  34. package/dist/services/Store/Disk.js +3 -3
  35. package/dist/services/Store/Memory.d.ts +2 -2
  36. package/dist/services/Store/Memory.d.ts.map +1 -1
  37. package/dist/services/Store/Memory.js +3 -2
  38. package/dist/services/Store/Redis.d.ts +1 -1
  39. package/dist/services/Store/Redis.d.ts.map +1 -1
  40. package/dist/services/Store/Redis.js +3 -3
  41. package/dist/services/Store/service.d.ts +1 -1
  42. package/dist/services/Store/service.d.ts.map +1 -1
  43. package/dist/services/simpledb/cosmosdb.d.ts +2 -2
  44. package/dist/services/simpledb/diskdb.d.ts +1 -1
  45. package/dist/services/simpledb/redisdb.d.ts +1 -1
  46. package/dist/services/simpledb/simpledb.d.ts +2 -2
  47. package/package.json +13 -3
@@ -183,7 +183,7 @@ export declare function queryAndSavePureEffect<T extends {
183
183
  skip?: number;
184
184
  }>): <R2, A, E2, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R2, Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>, E2, A>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | R | Exclude<R2, {
185
185
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>;
186
- }>, InvalidStateError | OptimisticConcurrencyException | E | E2, A>;
186
+ }>, OptimisticConcurrencyException | InvalidStateError | E | E2, A>;
187
187
  /**
188
188
  * @tsplus fluent Repository queryAndSavePure
189
189
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -199,7 +199,7 @@ export declare function queryAndSavePure<T extends {
199
199
  skip?: number;
200
200
  }): <R2, A, E2, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R2, Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>, E2, A>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R2, {
201
201
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>;
202
- }>, InvalidStateError | OptimisticConcurrencyException | E2, A>;
202
+ }>, OptimisticConcurrencyException | InvalidStateError | E2, A>;
203
203
  /**
204
204
  * @tsplus getter Repository saveManyWithPure
205
205
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -210,7 +210,7 @@ export declare function saveManyWithPure<T extends {
210
210
  id: string;
211
211
  }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>): <R, A, E, S1 extends T, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R, Evt, import("@effect/data/Chunk").Chunk<S1>, import("@effect/data/Chunk").Chunk<S2>>, E, A>) => (items: Iterable<S1>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
212
212
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S1>, import("@effect/data/Chunk").Chunk<S2>>;
213
- }>, InvalidStateError | OptimisticConcurrencyException | E, A>;
213
+ }>, OptimisticConcurrencyException | InvalidStateError | E, A>;
214
214
  /**
215
215
  * @tsplus fluent Repository byIdAndSaveWithPure
216
216
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -221,7 +221,7 @@ export declare function byIdAndSaveWithPure<T extends {
221
221
  id: string;
222
222
  }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>, id: T["id"]): <R, A, E, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R, Evt, T, S2>, E, A>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
223
223
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, T, S2>;
224
- }>, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, A>;
224
+ }>, OptimisticConcurrencyException | InvalidStateError | E | NotFoundError<ItemType>, A>;
225
225
  /**
226
226
  * NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
227
227
  * @tsplus getter Repository handleByIdAndSaveWithPure
@@ -235,7 +235,7 @@ export declare function handleByIdAndSaveWithPure<T extends {
235
235
  id: T["id"];
236
236
  }, Context_1, R, A, E, S2 extends T>(pure: (req: Req, ctx: Context_1) => import("@effect/io/Effect").Effect<FixEnv<R, Evt, T, S2>, E, A>) => (req: Req, ctx: Context_1) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
237
237
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, T, S2>;
238
- }>, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, A>;
238
+ }>, OptimisticConcurrencyException | InvalidStateError | E | NotFoundError<ItemType>, A>;
239
239
  /**
240
240
  * @tsplus fluent Repository saveManyWithPure_
241
241
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -246,7 +246,7 @@ export declare function saveManyWithPure_<Id extends string, R, T extends {
246
246
  id: string;
247
247
  }, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>, items: Iterable<S1>, pure: Effect<FixEnv<R, Evt, Chunk<S1>, Chunk<S2>>, E, A>): import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
248
248
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S1>, import("@effect/data/Chunk").Chunk<S2>>;
249
- }>, InvalidStateError | OptimisticConcurrencyException | E, A>;
249
+ }>, OptimisticConcurrencyException | InvalidStateError | E, A>;
250
250
  /**
251
251
  * @tsplus fluent Repository saveWithPure_
252
252
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -257,12 +257,12 @@ export declare function saveWithPure_<Id extends string, R, T extends {
257
257
  id: string;
258
258
  }, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>, item: S1, pure: Effect<FixEnv<R, Evt, S1, S2>, E, A>): import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
259
259
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1, S2>;
260
- }>, InvalidStateError | OptimisticConcurrencyException | E, A>;
260
+ }>, OptimisticConcurrencyException | InvalidStateError | E, A>;
261
261
  export declare function saveAllWithEffectInt<T extends {
262
262
  id: string;
263
263
  }, PM extends {
264
264
  id: string;
265
- }, P extends T, Evt, ItemType extends string, R, E, A>(self: Repository<T, PM, Evt, ItemType>, gen: Effect<R, E, readonly [Iterable<P>, Iterable<Evt>, A]>): import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | R, InvalidStateError | OptimisticConcurrencyException | E, A>;
265
+ }, P extends T, Evt, ItemType extends string, R, E, A>(self: Repository<T, PM, Evt, ItemType>, gen: Effect<R, E, readonly [Iterable<P>, Iterable<Evt>, A]>): import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | R, OptimisticConcurrencyException | InvalidStateError | E, A>;
266
266
  /**
267
267
  * @tsplus fluent Repository queryAndSavePureEffectBatched
268
268
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -278,7 +278,7 @@ export declare function queryAndSavePureEffectBatched<T extends {
278
278
  skip?: number;
279
279
  }>, batchSize?: number): <R2, A, E2, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R2, Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>, E2, A>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | R | Exclude<R2, {
280
280
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>;
281
- }>, InvalidStateError | OptimisticConcurrencyException | E | E2, import("@effect/data/Chunk").Chunk<A>>;
281
+ }>, OptimisticConcurrencyException | InvalidStateError | E | E2, import("@effect/data/Chunk").Chunk<A>>;
282
282
  /**
283
283
  * @tsplus fluent Repository queryAndSavePureBatched
284
284
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -294,7 +294,7 @@ export declare function queryAndSavePureBatched<T extends {
294
294
  skip?: number;
295
295
  }, batchSize?: number): <R2, A, E2, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R2, Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>, E2, A>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R2, {
296
296
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S>, import("@effect/data/Chunk").Chunk<S2>>;
297
- }>, InvalidStateError | OptimisticConcurrencyException | E2, import("@effect/data/Chunk").Chunk<A>>;
297
+ }>, OptimisticConcurrencyException | InvalidStateError | E2, import("@effect/data/Chunk").Chunk<A>>;
298
298
  /**
299
299
  * @tsplus fluent Repository saveManyWithPureBatched
300
300
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -305,7 +305,7 @@ export declare function saveManyWithPureBatched<T extends {
305
305
  id: string;
306
306
  }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>, batchSize?: number): <R, A, E, S1 extends T, S2 extends T>(pure: import("@effect/io/Effect").Effect<FixEnv<R, Evt, import("@effect/data/Chunk").Chunk<S1>, import("@effect/data/Chunk").Chunk<S2>>, E, A>) => (items: Iterable<S1>) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
307
307
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S1>, import("@effect/data/Chunk").Chunk<S2>>;
308
- }>, InvalidStateError | OptimisticConcurrencyException | E, import("@effect/data/Chunk").Chunk<A>>;
308
+ }>, OptimisticConcurrencyException | InvalidStateError | E, import("@effect/data/Chunk").Chunk<A>>;
309
309
  /**
310
310
  * @tsplus fluent Repository saveManyWithPureBatched_
311
311
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -316,7 +316,7 @@ export declare function saveManyWithPureBatched_<Id extends string, R, T extends
316
316
  id: string;
317
317
  }, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>, items: Iterable<S1>, pure: Effect<FixEnv<R, Evt, Chunk<S1>, Chunk<S2>>, E, A>, batchSize?: number): import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap | Exclude<R, {
318
318
  env: import("@effect-app/prelude/Pure").PureEnv<Evt, import("@effect/data/Chunk").Chunk<S1>, import("@effect/data/Chunk").Chunk<S2>>;
319
- }>, InvalidStateError | OptimisticConcurrencyException | E, import("@effect/data/Chunk").Chunk<A>>;
319
+ }>, OptimisticConcurrencyException | InvalidStateError | E, import("@effect/data/Chunk").Chunk<A>>;
320
320
  export type AllDSL<T, Evt> = (<R, A, E, S1 extends T, S2 extends T>(pure: (dsl: PureDSL<Chunk<S1>, Chunk<S2>, Evt>) => Effect<R, E, A>) => Effect<FixEnv<R, Evt, Chunk<S1>, Chunk<S2>>, E, A>) & AllDSLExt<T, Evt>;
321
321
  /**
322
322
  * @tsplus type DSLExt
@@ -365,7 +365,7 @@ export declare function save<T extends {
365
365
  id: string;
366
366
  }, PM extends {
367
367
  id: string;
368
- }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>): (items_0: T, ...items_1: T[]) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap, InvalidStateError | OptimisticConcurrencyException, void>;
368
+ }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>): (items_0: T, ...items_1: T[]) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap, OptimisticConcurrencyException | InvalidStateError, void>;
369
369
  /**
370
370
  * @tsplus getter Repository saveWithEvents
371
371
  * @tsplus location "@effect-app/infra/services/Repository"
@@ -374,5 +374,5 @@ export declare function saveWithEvents<T extends {
374
374
  id: string;
375
375
  }, PM extends {
376
376
  id: string;
377
- }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>): (events: Iterable<Evt>) => (items_0: T, ...items_1: T[]) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap, InvalidStateError | OptimisticConcurrencyException, void>;
377
+ }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>): (events: Iterable<Evt>) => (items_0: T, ...items_1: T[]) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap, OptimisticConcurrencyException | InvalidStateError, void>;
378
378
  //# sourceMappingURL=Repository.d.ts.map
@@ -0,0 +1,240 @@
1
+ import { Effect } from "@effect/io/Effect";
2
+ import { Tag } from "@effect/data/Context";
3
+ import { NonEmptyReadonlyArray } from "@effect/data/ReadonlyArray";
4
+ import { Layer } from "@effect/io/Layer";
5
+ import type { ParserEnv } from "@effect-app/schema/custom/Parser";
6
+ import type { Repository } from "./Repository.js";
7
+ import type { RequestContextContainer } from "./RequestContextContainer.js";
8
+ import { ContextMap, StoreMaker } from "./Store.js";
9
+ import type { Filter, StoreConfig, Where } from "./Store.js";
10
+ import type { Opt } from "@effect-app/core/Option";
11
+ import type { Chunk, Schema } from "@effect-app/prelude";
12
+ import type { InvalidStateError, OptimisticConcurrencyException } from "../errors.js";
13
+ /**
14
+ * A base for creating an abstract class usable as Tag, Companion and interface to create your own implementation.
15
+ */
16
+ export declare const RepositoryBase: <Service>() => <T extends {
17
+ id: string;
18
+ }, PM extends {
19
+ id: string;
20
+ _etag: string | undefined;
21
+ }, Evt, ItemType extends string>(itemType: ItemType) => ((abstract new () => {
22
+ itemType: ItemType;
23
+ find: (id: T["id"]) => import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap, never, Opt<T>>;
24
+ all: import("@effect/io/Effect").Effect<ContextMap, never, Chunk<T>>;
25
+ saveAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => Effect<ContextMap | RequestContextContainer, InvalidStateError | OptimisticConcurrencyException, void>;
26
+ utils: {
27
+ mapReverse: (pm: PM, setEtag: (id: string, eTag: string | undefined) => void) => unknown;
28
+ parse: (a: unknown, env?: ParserEnv | undefined) => T;
29
+ all: import("@effect/io/Effect").Effect<ContextMap, never, Chunk<PM>>;
30
+ filter: (filter: Filter<PM>, cursor?: {
31
+ limit?: number;
32
+ skip?: number;
33
+ }) => import("@effect/io/Effect").Effect<ContextMap, never, Chunk<PM>>;
34
+ };
35
+ remove: (item: T) => Effect<ContextMap, never, void>;
36
+ }) & {
37
+ where: (makeWhere: (f: {
38
+ <TFieldName extends import("../filter/types/path/eager.js").Path<PM>, A extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName>, Val>(path: TFieldName, value: (v: A) => Val): {
39
+ key: string;
40
+ t: Val extends {
41
+ t: "in" | "not-in";
42
+ v: readonly any[];
43
+ } | {
44
+ t: "eq" | "not-eq";
45
+ v: any;
46
+ } ? Val["t"] : never;
47
+ value: Val extends {
48
+ t: "in" | "not-in";
49
+ v: readonly any[];
50
+ } | {
51
+ t: "eq" | "not-eq";
52
+ v: any;
53
+ } ? Val["v"] : never;
54
+ readonly S: PM;
55
+ };
56
+ <TFieldName_1 extends import("../filter/types/path/eager.js").Path<PM>, A_1 extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName_1>>(path: TFieldName_1, value: A_1): {
57
+ key: string;
58
+ t: "eq";
59
+ value: A_1;
60
+ readonly S: PM;
61
+ };
62
+ }) => Where | readonly [Where, ...Where[]], mode?: "or" | "and") => Filter<PM>;
63
+ flatMap<R1, E1, B>(f: (a: Service) => import("@effect/io/Effect").Effect<R1, E1, B>): import("@effect/io/Effect").Effect<Service | R1, E1, B>;
64
+ map<B_1>(f: (a: Service) => B_1): import("@effect/io/Effect").Effect<Service, never, B_1>;
65
+ }) & import("@effect/data/Context").Tag<Service, Service>;
66
+ /**
67
+ * A base implementation to create a repository.
68
+ */
69
+ export declare function makeRepo<PM extends {
70
+ id: string;
71
+ _etag: string | undefined;
72
+ }, Evt = never>(): <ItemType extends string, T extends {
73
+ id: string;
74
+ }, ConstructorInput, Api, E extends {
75
+ id: string;
76
+ }>(name: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapFrom: (pm: Omit<PM, "_etag">) => E, mapTo: (e: E, etag: string | undefined) => PM) => {
77
+ make: (publishEvents: (evt: readonly [Evt, ...Evt[]]) => Effect<RequestContextContainer, never, void>, makeInitial?: import("@effect/io/Effect").Effect<never, never, readonly T[]> | undefined, config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
78
+ partitionValue?: ((a: PM) => string) | undefined;
79
+ }) | undefined) => import("@effect/io/Effect").Effect<StoreMaker, never, Repository<T, PM, Evt, ItemType>>;
80
+ where: (makeWhere: (f: {
81
+ <TFieldName extends import("../filter/types/path/eager.js").Path<PM>, A extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName>, Val>(path: TFieldName, value: (v: A) => Val): {
82
+ key: string;
83
+ t: Val extends {
84
+ t: "in" | "not-in";
85
+ v: readonly any[];
86
+ } | {
87
+ t: "eq" | "not-eq";
88
+ v: any;
89
+ } ? Val["t"] : never;
90
+ value: Val extends {
91
+ t: "in" | "not-in";
92
+ v: readonly any[];
93
+ } | {
94
+ t: "eq" | "not-eq";
95
+ v: any;
96
+ } ? Val["v"] : never;
97
+ readonly S: PM;
98
+ };
99
+ <TFieldName_1 extends import("../filter/types/path/eager.js").Path<PM>, A_1 extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName_1>>(path: TFieldName_1, value: A_1): {
100
+ key: string;
101
+ t: "eq";
102
+ value: A_1;
103
+ readonly S: PM;
104
+ };
105
+ }) => Where | readonly [Where, ...Where[]], mode?: "or" | "and" | undefined) => Filter<PM>;
106
+ };
107
+ /**
108
+ * @tsplus fluent Repository removeById
109
+ * @tsplus location "@effect-app/infra/services/RepositoryBase"
110
+ */
111
+ export declare function removeById<T extends {
112
+ id: string;
113
+ }, PM extends {
114
+ id: string;
115
+ }, Evt, ItemType extends string>(self: Repository<T, PM, Evt, ItemType>, id: T["id"]): import("@effect/io/Effect").Effect<RequestContextContainer | ContextMap, import("../errors.js").NotFoundError<ItemType>, void>;
116
+ export declare function makeWhere<PM extends {
117
+ id: string;
118
+ _etag: string | undefined;
119
+ }>(): (makeWhere: (f: {
120
+ <TFieldName extends import("../filter/types/path/eager.js").Path<PM>, A extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName>, Val>(path: TFieldName, value: (v: A) => Val): {
121
+ key: string;
122
+ t: Val extends {
123
+ t: "in" | "not-in";
124
+ v: readonly any[];
125
+ } | {
126
+ t: "eq" | "not-eq";
127
+ v: any;
128
+ } ? Val["t"] : never;
129
+ value: Val extends {
130
+ t: "in" | "not-in";
131
+ v: readonly any[];
132
+ } | {
133
+ t: "eq" | "not-eq";
134
+ v: any;
135
+ } ? Val["v"] : never;
136
+ readonly S: PM;
137
+ };
138
+ <TFieldName_1 extends import("../filter/types/path/eager.js").Path<PM>, A_1 extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName_1>>(path: TFieldName_1, value: A_1): {
139
+ key: string;
140
+ t: "eq";
141
+ value: A_1;
142
+ readonly S: PM;
143
+ };
144
+ }) => Where | readonly [Where, ...Where[]], mode?: "or" | "and") => Filter<PM>;
145
+ export declare function makeStore<PM extends {
146
+ id: string;
147
+ _etag: string | undefined;
148
+ }>(): <ItemType extends string, T extends {
149
+ id: string;
150
+ }, ConstructorInput, Api, E extends {
151
+ id: string;
152
+ }>(name: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapTo: (e: E, etag: string | undefined) => PM) => (makeInitial?: import("@effect/io/Effect").Effect<never, never, readonly T[]> | undefined, config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
153
+ partitionValue?: ((a: PM) => string) | undefined;
154
+ }) | undefined) => import("@effect/io/Effect").Effect<StoreMaker, never, import("./Store.js").Store<PM, string>>;
155
+ export declare const RepositoryBaseImpl: <Service>() => <PM extends {
156
+ id: string;
157
+ _etag: string | undefined;
158
+ }, Evt = never>() => <ItemType extends string, T extends {
159
+ id: string;
160
+ }, ConstructorInput, Api, E extends {
161
+ id: string;
162
+ }>(itemType: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapFrom: (pm: Omit<PM, "_etag">) => E, mapTo: (e: E, etag: string | undefined) => PM) => (abstract new () => Repository<T, PM, Evt, ItemType>) & import("@effect/data/Context").Tag<Service, Service> & {
163
+ make(publishEvents: (evt: readonly [Evt, ...Evt[]]) => Effect<RequestContextContainer, never, void>, makeInitial?: import("@effect/io/Effect").Effect<never, never, readonly T[]> | undefined, config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
164
+ partitionValue?: ((a: PM) => string) | undefined;
165
+ }) | undefined): import("@effect/io/Effect").Effect<StoreMaker, never, Repository<T, PM, Evt, ItemType>>;
166
+ where: (makeWhere: (f: {
167
+ <TFieldName extends import("../filter/types/path/eager.js").Path<PM>, A extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName>, Val>(path: TFieldName, value: (v: A) => Val): {
168
+ key: string;
169
+ t: Val extends {
170
+ t: "in" | "not-in";
171
+ v: readonly any[];
172
+ } | {
173
+ t: "eq" | "not-eq";
174
+ v: any;
175
+ } ? Val["t"] : never;
176
+ value: Val extends {
177
+ t: "in" | "not-in";
178
+ v: readonly any[];
179
+ } | {
180
+ t: "eq" | "not-eq";
181
+ v: any;
182
+ } ? Val["v"] : never;
183
+ readonly S: PM;
184
+ };
185
+ <TFieldName_1 extends import("../filter/types/path/eager.js").Path<PM>, A_1 extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName_1>>(path: TFieldName_1, value: A_1): {
186
+ key: string;
187
+ t: "eq";
188
+ value: A_1;
189
+ readonly S: PM;
190
+ };
191
+ }) => Where | readonly [Where, ...Where[]], mode?: "or" | "and") => Filter<PM>;
192
+ flatMap: <R1, E1, B>(f: (a: Service) => import("@effect/io/Effect").Effect<R1, E1, B>) => import("@effect/io/Effect").Effect<Service | R1, E1, B>;
193
+ map: <B_1>(f: (a: Service) => B_1) => import("@effect/io/Effect").Effect<Service, never, B_1>;
194
+ };
195
+ export declare const RepositoryDefaultImpl: <Service>() => <PM extends {
196
+ id: string;
197
+ _etag: string | undefined;
198
+ }, Evt = never>() => <ItemType extends string, T extends {
199
+ id: string;
200
+ }, ConstructorInput, Api, E extends {
201
+ id: string;
202
+ }>(itemType: ItemType, schema: Schema.Schema<unknown, T, ConstructorInput, E, Api>, mapFrom: (pm: Omit<PM, "_etag">) => E, mapTo: (e: E, etag: string | undefined) => PM) => import("@effect/data/Context").Tag<Service, Service> & {
203
+ new (impl: Repository<T, PM, Evt, ItemType>): Repository<T, PM, Evt, ItemType>;
204
+ make(publishEvents: (evt: readonly [Evt, ...Evt[]]) => Effect<RequestContextContainer, never, void>, makeInitial?: import("@effect/io/Effect").Effect<never, never, readonly T[]> | undefined, config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
205
+ partitionValue?: ((a: PM) => string) | undefined;
206
+ }) | undefined): import("@effect/io/Effect").Effect<StoreMaker, never, Repository<T, PM, Evt, ItemType>>;
207
+ toLayer(publishEvents: (evt: readonly [Evt, ...Evt[]]) => Effect<RequestContextContainer, never, void>, makeInitial?: import("@effect/io/Effect").Effect<never, never, readonly T[]> | undefined, config?: (Omit<StoreConfig<PM>, "partitionValue"> & {
208
+ partitionValue?: ((a: PM) => string) | undefined;
209
+ }) | undefined): import("@effect/io/Layer").Layer<StoreMaker, never, Service>;
210
+ where: (makeWhere: (f: {
211
+ <TFieldName extends import("../filter/types/path/eager.js").Path<PM>, A extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName>, Val>(path: TFieldName, value: (v: A) => Val): {
212
+ key: string;
213
+ t: Val extends {
214
+ t: "in" | "not-in";
215
+ v: readonly any[];
216
+ } | {
217
+ t: "eq" | "not-eq";
218
+ v: any;
219
+ } ? Val["t"] : never;
220
+ value: Val extends {
221
+ t: "in" | "not-in";
222
+ v: readonly any[];
223
+ } | {
224
+ t: "eq" | "not-eq";
225
+ v: any;
226
+ } ? Val["v"] : never;
227
+ readonly S: PM;
228
+ };
229
+ <TFieldName_1 extends import("../filter/types/path/eager.js").Path<PM>, A_1 extends import("../filter/types/path/eager.js").PathValue<PM, TFieldName_1>>(path: TFieldName_1, value: A_1): {
230
+ key: string;
231
+ t: "eq";
232
+ value: A_1;
233
+ readonly S: PM;
234
+ };
235
+ }) => Where | readonly [Where, ...Where[]], mode?: "or" | "and") => Filter<PM>;
236
+ flatMap: <R1, E1, B>(f: (a: Service) => import("@effect/io/Effect").Effect<R1, E1, B>) => import("@effect/io/Effect").Effect<Service | R1, E1, B>;
237
+ map: <B_1>(f: (a: Service) => B_1) => import("@effect/io/Effect").Effect<Service, never, B_1>;
238
+ repo: Repository<T, PM, Evt, ItemType>;
239
+ };
240
+ //# sourceMappingURL=RepositoryBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepositoryBase.d.ts","sourceRoot":"","sources":["../../_src/services/RepositoryBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ import * as tsplus_module_1 from "@effect/io/Effect";
2
+ import * as tsplus_module_2 from "@effect-app/prelude/service";
3
+ import * as tsplus_module_3 from "@effect-app/prelude/schema";
4
+ import * as tsplus_module_4 from "@effect-app/prelude/_ext/Schema.ext";
5
+ import * as tsplus_module_5 from "@effect/data/Chunk";
6
+ import * as tsplus_module_6 from "@effect-app/prelude/_ext/misc";
7
+ import * as tsplus_module_7 from "@effect-app/core/Array";
8
+ import * as tsplus_module_8 from "@effect-app/core/Effect";
9
+ import * as tsplus_module_9 from "@effect/data/Option";
10
+ import * as tsplus_module_10 from "@effect-app/core/_ext/Iterable";
11
+ import * as tsplus_module_11 from "@effect-app/infra/services/Repository";
12
+ import * as tsplus_module_12 from "@effect-app/core/Function";
13
+ import { ContextMap, StoreMaker } from "./Store.js";
14
+ import { makeCodec } from "@effect-app/infra/api/codec";
15
+ import { makeFilters } from "@effect-app/infra/filter";
16
+ import { EParserFor } from "@effect-app/prelude/schema";
17
+ /**
18
+ * A base for creating an abstract class usable as Tag, Companion and interface to create your own implementation.
19
+ */
20
+ export const RepositoryBase = () => {
21
+ return (itemType) => {
22
+ class RepositoryBaseC {
23
+ constructor() {
24
+ this.itemType = itemType;
25
+ }
26
+ static flatMap(f) {
27
+ return tsplus_module_1.flatMap(this, f);
28
+ }
29
+ static map(f) {
30
+ return tsplus_module_1.map(this, f);
31
+ }
32
+ }
33
+ RepositoryBaseC.where = makeWhere();
34
+ return tsplus_module_2.assignTag()(RepositoryBaseC);
35
+ };
36
+ };
37
+ /**
38
+ * A base implementation to create a repository.
39
+ */
40
+ export function makeRepo() {
41
+ return (name, schema, mapFrom, mapTo) => {
42
+ const where = makeWhere();
43
+ function mapToPersistenceModel(e, getEtag) {
44
+ return mapTo(e, getEtag(e.id));
45
+ }
46
+ function mapReverse({ _etag, ...e }, setEtag) {
47
+ setEtag(e.id, _etag);
48
+ return mapFrom(e);
49
+ }
50
+ const mkStore = makeStore()(name, schema, mapTo);
51
+ function make(publishEvents, makeInitial, config) {
52
+ return tsplus_module_1.map(mkStore(makeInitial, config), store => {
53
+ const allE = tsplus_module_1.flatMap(store.all, items => tsplus_module_1.map(ContextMap, ({ set }) => tsplus_module_5.map(items, _ => mapReverse(_, set))));
54
+ const all = tsplus_module_1.flatMap(allE, _ => tsplus_module_10.ext_forEach(_, tsplus_module_4.condemnDie(EParserFor(schema))));
55
+ function findE(id) {
56
+ return tsplus_module_1.flatMap(store.find(id), items => tsplus_module_1.map(ContextMap, ({ set }) => tsplus_module_9.map(items, _ => mapReverse(_, set))));
57
+ }
58
+ function find(id) {
59
+ return tsplus_module_8.flatMapOption(findE(id), tsplus_module_4.condemnDie(EParserFor(schema)));
60
+ }
61
+ const saveAllE = (a) => tsplus_module_8.flatMapOption(tsplus_module_1.sync(() => tsplus_module_7.CollectionToNonEmptyReadonlyArray(a)), a => tsplus_module_1.flatMap(ContextMap, ({ get, set }) => {
62
+ const items = tsplus_module_7.mapRA(_ => mapToPersistenceModel(_, get))(a);
63
+ return tsplus_module_1.map(store.batchSet(items), ret => {
64
+ ret.forEach(_ => set(_.id, _._etag));
65
+ });
66
+ }));
67
+ const saveAll = (a) => saveAllE(tsplus_module_5.map(tsplus_module_7.ext_itToChunk(a), tsplus_module_3.Encoder.for(schema)));
68
+ const saveAndPublish = (items, events = []) => tsplus_module_1.zipRight(tsplus_module_8.flatMapOption(tsplus_module_1.sync(() => tsplus_module_7.CollectionToNonEmptyReadonlyArray(events))
69
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
70
+ , publishEvents))(saveAll(items));
71
+ const encode = tsplus_module_3.Encoder.for(schema);
72
+ function remove(item) {
73
+ return tsplus_module_1.flatMap(ContextMap, ({ get, set }) => {
74
+ const e = encode(item);
75
+ return tsplus_module_1.map(store.remove(mapToPersistenceModel(e, get)), () => {
76
+ set(item.id, undefined);
77
+ });
78
+ });
79
+ }
80
+ const r = {
81
+ /**
82
+ * @internal
83
+ */
84
+ utils: {
85
+ mapReverse,
86
+ parse: tsplus_module_4.unsafe(tsplus_module_3.Parser.for(schema)),
87
+ filter: tsplus_module_6.flow(store.filter, _ => tsplus_module_1.tap(_, items => ContextMap.map(({ set }) => tsplus_module_5.forEach(items, _ => set(_.id, _._etag))))),
88
+ all: tsplus_module_1.tap(store.all, items => ContextMap.map(({ set }) => tsplus_module_5.forEach(items, _ => set(_.id, _._etag))))
89
+ },
90
+ itemType: name,
91
+ find,
92
+ all,
93
+ saveAndPublish,
94
+ remove
95
+ };
96
+ return r;
97
+ });
98
+ }
99
+ return {
100
+ make,
101
+ where
102
+ };
103
+ };
104
+ }
105
+ /**
106
+ * @tsplus fluent Repository removeById
107
+ */
108
+ export function removeById(self, id) {
109
+ return tsplus_module_1.flatMap(tsplus_module_11.get(self, id), _ => self.remove(_));
110
+ }
111
+ export function makeWhere() {
112
+ const f_ = makeFilters();
113
+ function makeFilter_(filter) {
114
+ return filter(f_);
115
+ }
116
+ function where(makeWhere, mode) {
117
+ return makeFilter_(f => {
118
+ const m = makeWhere ? makeWhere(f) : [];
119
+ return ({
120
+ mode,
121
+ where: (Array.isArray(m) ? m : [m])
122
+ });
123
+ });
124
+ }
125
+ return where;
126
+ }
127
+ const pluralize = (s) => s.endsWith("s")
128
+ ? s + "es"
129
+ : s.endsWith("y")
130
+ ? s.substring(0, s.length - 1) + "ies"
131
+ : s + "s";
132
+ export function makeStore() {
133
+ return (name, schema, mapTo) => {
134
+ const [_dec, encode] = makeCodec(schema);
135
+ function encodeToPM() {
136
+ const getEtag = () => undefined;
137
+ return tsplus_module_12.flow(encode, v => mapToPersistenceModel(v, getEtag));
138
+ }
139
+ function mapToPersistenceModel(e, getEtag) {
140
+ return mapTo(e, getEtag(e.id));
141
+ }
142
+ function makeStore(makeInitial, config) {
143
+ return tsplus_module_1.flatMap(StoreMaker, ({ make }) => tsplus_module_1.map(make(pluralize(name), makeInitial
144
+ ? tsplus_module_1.map(makeInitial, _ => _.map(encodeToPM()))
145
+ : undefined, {
146
+ ...config,
147
+ partitionValue: config?.partitionValue ?? (_ => "primary") /*(isIntegrationEvent(r) ? r.companyId : r.id*/
148
+ }), store => store));
149
+ }
150
+ return makeStore;
151
+ };
152
+ }
153
+ export const RepositoryBaseImpl = () => {
154
+ return () => (itemType, schema, mapFrom, mapTo) => {
155
+ const mkRepo = makeRepo()(itemType, schema, mapFrom, mapTo);
156
+ class Cls extends RepositoryBase()(itemType) {
157
+ }
158
+ Cls.make = mkRepo.make;
159
+ return Cls;
160
+ };
161
+ };
162
+ export const RepositoryDefaultImpl = () => {
163
+ return () => (itemType, schema, mapFrom, mapTo) => {
164
+ return class extends RepositoryBaseImpl()()(itemType, schema, mapFrom, mapTo) {
165
+ static toLayer(publishEvents, makeInitial, config) {
166
+ return tsplus_module_1.toLayer(tsplus_module_1.map(this.make(publishEvents, makeInitial, config), impl => new this(impl)), this);
167
+ }
168
+ constructor(impl) {
169
+ super();
170
+ Object.assign(this, impl);
171
+ }
172
+ };
173
+ };
174
+ };
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnlCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBR3ZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQVksRUFBRTtJQUMxQyxPQUFPLENBQ0wsUUFBa0IsRUFDbEIsRUFBRTtRQUNGLE1BQWUsZUFBZTtZQUE5QjtnQkFDRSxhQUFRLEdBQWEsUUFBUSxDQUFBO1lBd0IvQixDQUFDO1lBTkMsTUFBTSxDQUFDLE9BQU8sQ0FBWSxDQUFvQztnQkFDNUQsT0FBTyx3QkFBZSxJQUF3QyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3BFLENBQUM7WUFDRCxNQUFNLENBQUMsR0FBRyxDQUFJLENBQW9CO2dCQUNoQyxPQUFPLG9CQUFXLElBQXdDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDaEUsQ0FBQzs7UUFOTSxxQkFBSyxHQUFHLFNBQVMsRUFBTSxBQUFsQixDQUFrQjtRQVFoQyxPQUFPLGdCQUFBLFNBQVMsRUFBVyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQzlDLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVE7SUFJdEIsT0FBTyxDQU9MLElBQWMsRUFDZCxNQUEyRCxFQUMzRCxPQUFxQyxFQUNyQyxLQUE2QyxFQUM3QyxFQUFFO1FBQ0YsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFNLENBQUE7UUFFN0IsU0FBUyxx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
@@ -5,7 +5,7 @@ import * as CosmosClient from "@effect-app/infra-adapters/cosmos-client";
5
5
  import type { FilterJoinSelect, JoinFindFilter, LegacyFilter, PersistenceModelType, StorageConfig, Store, StoreConfig, StoreWhereFilter, SupportedValues } from "./service.js";
6
6
  import { StoreMaker } from "./service.js";
7
7
  export declare function makeCosmosStore({ prefix }: StorageConfig): import("@effect/io/Effect").Effect<CosmosClient.CosmosClient, never, {
8
- make: <Id extends string, PM extends PersistenceModelType<Id>, Id2 extends Id>(name: string, seed?: import("@effect/io/Effect").Effect<never, never, ReadonlyMap<Id2, PM>> | undefined, config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
8
+ make: <Id extends string, PM extends PersistenceModelType<Id>>(name: string, seed?: import("@effect/io/Effect").Effect<never, never, Iterable<PM>> | undefined, config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
9
9
  }>;
10
10
  /**
11
11
  * @deprecated: should build Select into Where query
@@ -1 +1 @@
1
- {"version":3,"file":"Cosmos.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Cosmos.ts"],"names":[],"mappings":";;;AAEA,OAAO,KAAK,YAAY,MAAM,0CAA0C,CAAA;AAMxE,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa;yFAK3C,MAAM;GA+UnB;AAuBD;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,gBAAgB,EACxB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAaf;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAYf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EACvC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,EACxB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAyBf;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAuDf;AAQD,wBAAgB,gBAAgB,CAAC,EAAE,EACjC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAC3C,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAOf;AAKD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,0HAE5D"}
1
+ {"version":3,"file":"Cosmos.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Cosmos.ts"],"names":[],"mappings":";;;AAEA,OAAO,KAAK,YAAY,MAAM,0CAA0C,CAAA;AAMxE,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa;yEAK3C,MAAM;GA+UnB;AAuBD;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,gBAAgB,EACxB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAaf;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAYf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EACvC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,EACxB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAyBf;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAuDf;AAQD,wBAAgB,gBAAgB,CAAC,EAAE,EACjC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAC3C,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAOf;AAKD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,0HAE5D"}