@effect-app/infra 2.3.4 → 2.4.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 (44) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/services/OperationsRepo.cjs +10 -1
  3. package/_cjs/services/OperationsRepo.cjs.map +1 -1
  4. package/_cjs/services/Repository/dsl.cjs.map +1 -1
  5. package/_cjs/services/Repository/ext.cjs +58 -104
  6. package/_cjs/services/Repository/ext.cjs.map +1 -1
  7. package/_cjs/services/Repository/legacy.cjs +108 -0
  8. package/_cjs/services/Repository/legacy.cjs.map +1 -0
  9. package/_cjs/services/Repository.cjs +11 -0
  10. package/_cjs/services/Repository.cjs.map +1 -1
  11. package/_cjs/services/RepositoryBase.cjs +12 -233
  12. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  13. package/dist/services/OperationsRepo.d.ts +4 -1
  14. package/dist/services/OperationsRepo.d.ts.map +1 -1
  15. package/dist/services/OperationsRepo.js +12 -3
  16. package/dist/services/QueueMaker/errors.d.ts +1 -1
  17. package/dist/services/QueueMaker/errors.d.ts.map +1 -1
  18. package/dist/services/Repository/dsl.d.ts.map +1 -1
  19. package/dist/services/Repository/dsl.js +1 -1
  20. package/dist/services/Repository/ext.d.ts +43 -104
  21. package/dist/services/Repository/ext.d.ts.map +1 -1
  22. package/dist/services/Repository/ext.js +59 -93
  23. package/dist/services/Repository/legacy.d.ts +139 -0
  24. package/dist/services/Repository/legacy.d.ts.map +1 -0
  25. package/dist/services/Repository/legacy.js +99 -0
  26. package/dist/services/Repository/service.d.ts +21 -2
  27. package/dist/services/Repository/service.d.ts.map +1 -1
  28. package/dist/services/Repository.d.ts +1 -0
  29. package/dist/services/Repository.d.ts.map +1 -1
  30. package/dist/services/Repository.js +2 -1
  31. package/dist/services/RepositoryBase.d.ts +13 -256
  32. package/dist/services/RepositoryBase.d.ts.map +1 -1
  33. package/dist/services/RepositoryBase.js +10 -208
  34. package/dist/services/query/new-kid-interpreter.d.ts +1 -1
  35. package/examples/query.ts +3 -2
  36. package/package.json +11 -1
  37. package/src/services/OperationsRepo.ts +13 -4
  38. package/src/services/Repository/dsl.ts +1 -0
  39. package/src/services/Repository/ext.ts +269 -250
  40. package/src/services/Repository/legacy.ts +351 -0
  41. package/src/services/Repository/service.ts +44 -2
  42. package/src/services/Repository.ts +1 -0
  43. package/src/services/RepositoryBase.ts +64 -1007
  44. package/test/query.test.ts +10 -8
@@ -1,107 +1,46 @@
1
1
  import { Effect } from "effect-app";
2
- import { type FixEnv } from "effect-app/Pure";
3
- import { NotFoundError } from "../../errors.js";
4
- import type { RepositoryBaseC } from "../RepositoryBase.js";
2
+ import type { InvalidStateError, OptimisticConcurrencyException } from "effect-app/client";
3
+ import { NotFoundError } from "effect-app/client";
4
+ import type { FixEnv, PureEnv } from "effect-app/Pure";
5
+ import type { Query, QueryEnd, QueryWhere } from "../query.js";
5
6
  import type { Repository } from "./service.js";
6
- /**
7
- * @tsplus fluent Repository get
8
- */
9
- export declare function get<T, Encoded extends {
10
- id: string;
11
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey]): Effect.Effect<T, NotFoundError<ItemType>, never>;
12
- /**
13
- * @tsplus getter Repository log
14
- */
15
- export declare function log<T, Encoded extends {
16
- id: string;
17
- }, Evt, ItemType extends string, IdKey extends keyof T>(_: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>): (evt: Evt) => import("effect-app/Pure").PureLogT<any>;
18
- /**
19
- * @tsplus fluent Repository byIdAndSaveWithPure
20
- */
21
- export declare function byIdAndSaveWithPure<T, Encoded extends {
22
- id: string;
23
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey]): <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) => Effect.Effect<A, E | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | NotFoundError<ItemType>, Exclude<R, {
24
- env: import("effect-app/Pure").PureEnv<Evt, T, S2>;
25
- }>>;
26
- /**
27
- * NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
28
- * @tsplus getter Repository handleByIdAndSaveWithPure
29
- */
30
- export declare function handleByIdAndSaveWithPure<T, Encoded extends {
31
- id: string;
32
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>): <Req extends {
33
- id: T[IdKey];
34
- }, Context, R, A, E, S2 extends T>(pure: (req: Req, ctx: Context) => Effect<A, E, FixEnv<R, Evt, T, S2>>) => (req: Req, ctx: Context) => Effect.Effect<A, E | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | NotFoundError<ItemType>, Exclude<R, {
35
- env: import("effect-app/Pure").PureEnv<Evt, T, S2>;
36
- }>>;
37
- /**
38
- * @tsplus fluent Repository saveManyWithPure_
39
- */
40
- export declare function saveManyWithPure_<R, T, Encoded extends {
41
- id: string;
42
- }, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, E | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException, Exclude<R, {
43
- env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
44
- }>>;
45
- /**
46
- * @tsplus fluent Repository saveWithPure_
47
- */
48
- export declare function saveWithPure_<R, T, Encoded extends {
49
- id: string;
50
- }, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, item: S1, pure: Effect<A, E, FixEnv<R, Evt, S1, S2>>): Effect.Effect<A, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E, Exclude<R, {
51
- env: import("effect-app/Pure").PureEnv<Evt, S1, S2>;
52
- }>>;
53
- export declare function saveAllWithEffectInt<T, Encoded extends {
54
- id: string;
55
- }, P extends T, Evt, ItemType extends string, IdKey extends keyof T, R, E, A>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>): Effect.Effect<A, E | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException, R>;
56
- /**
57
- * @tsplus fluent Repository saveManyWithPureBatched
58
- */
59
- export declare function saveManyWithPureBatched<T, Encoded extends {
60
- id: string;
61
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, batchSize?: number): <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>) => (items: Iterable<S1>) => Effect.Effect<A[], import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E, Exclude<R, {
62
- env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
63
- }>>;
64
- /**
65
- * @tsplus fluent Repository saveManyWithPureBatched_
66
- */
67
- export declare function saveManyWithPureBatched_<R, T, Encoded extends {
68
- id: string;
69
- }, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>, batchSize?: number): Effect.Effect<A[], import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E, Exclude<R, {
70
- env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
71
- }>>;
72
- /**
73
- * @tsplus getter Repository save
74
- */
75
- export declare function save<T, Encoded extends {
76
- id: string;
77
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>): (items_0: T, ...items: T[]) => Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException>;
78
- /**
79
- * @tsplus getter Repository saveWithEvents
80
- */
81
- export declare function saveWithEvents<T, Encoded extends {
82
- id: string;
83
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>): (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException>;
84
- /**
85
- * @tsplus fluent Repository updateWithEffect
86
- */
87
- export declare function itemUpdateWithEffect<R, E, T extends {
88
- id: string;
89
- }, Encoded extends {
90
- id: string;
91
- }, Evt, ItemType extends string, IdKey extends keyof T>(repo: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey], mod: (item: T) => Effect<T, E, R>): Effect.Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | E | NotFoundError<ItemType>, R>;
92
- /**
93
- * @tsplus fluent Repository update
94
- */
95
- export declare function itemUpdate<T extends {
96
- id: string;
97
- }, Encoded extends {
98
- id: string;
99
- }, Evt, ItemType extends string, IdKey extends keyof T>(repo: RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey], mod: (item: T) => T): Effect.Effect<void, import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").OptimisticConcurrencyException | NotFoundError<ItemType>, never>;
100
- /**
101
- * only use this as a shortcut if you don't have the item already
102
- * @tsplus fluent Repository removeById
103
- */
104
- export declare function removeById<T, Encoded extends {
105
- id: string;
106
- }, Evt, ItemType extends string, IdKey extends keyof T>(self: Repository<T, Encoded, Evt, ItemType, IdKey>, id: T[IdKey]): Effect.Effect<void, NotFoundError<ItemType>, never>;
7
+ export declare const extendRepo: <T, Encoded extends {
8
+ id: string;
9
+ }, Evt, ItemType extends string, IdKey extends keyof T>(repo: Repository<T, Encoded, Evt, ItemType, IdKey>) => Repository<T, Encoded, Evt, ItemType, IdKey> & {
10
+ request: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
11
+ get: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
12
+ log: (evt: Evt) => import("effect-app/Pure").PureLogT<any>;
13
+ removeById: (id: T[IdKey]) => Effect.Effect<void, NotFoundError<ItemType>, never>;
14
+ save: (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | InvalidStateError>;
15
+ saveWithEvents: (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | InvalidStateError>;
16
+ queryAndSavePure: {
17
+ <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => QueryEnd<Encoded, "one">, pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E2, Exclude<R2, {
18
+ env: PureEnv<Evt, T, T2>;
19
+ }>>;
20
+ <A, E2_1, R2_1, T2_1 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded, "many">, pure: Effect<A, E2_1, FixEnv<R2_1, Evt, readonly T[], readonly T2_1[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E2_1, Exclude<R2_1, {
21
+ env: PureEnv<Evt, readonly T[], readonly T2_1[]>;
22
+ }>>;
23
+ <A, E2_2, R2_2, T2_2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded, "many">, pure: Effect<A, E2_2, FixEnv<R2_2, Evt, readonly T[], readonly T2_2[]>>, batch: "batched" | number): Effect.Effect<A[], InvalidStateError | OptimisticConcurrencyException | E2_2, Exclude<R2_2, {
24
+ env: PureEnv<Evt, readonly T[], readonly T2_2[]>;
25
+ }>>;
26
+ };
27
+ saveManyWithPure: {
28
+ <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
29
+ env: PureEnv<Evt, readonly S1[], readonly S2[]>;
30
+ }>>;
31
+ <R, A_1, E_1, S1_1 extends T, S2_1 extends T>(items: Iterable<S1_1>, pure: Effect<A_1, E_1, FixEnv<R, Evt, readonly S1_1[], readonly S2_1[]>>, batch: "batched" | number): Effect.Effect<A_1[], InvalidStateError | OptimisticConcurrencyException | E_1, Exclude<R, {
32
+ env: PureEnv<Evt, readonly S1_1[], readonly S2_1[]>;
33
+ }>>;
34
+ };
35
+ byIdAndSaveWithPure: <R, A_2, E_2, S2_2 extends T>(id: T[IdKey], pure: Effect<A_2, E_2, FixEnv<R, Evt, T, S2_2>>) => Effect<A_2, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E_2, Exclude<R, {
36
+ env: PureEnv<Evt, T, S2_2>;
37
+ }>>;
38
+ saveWithPure: <R, A_3, E_3, S1_2 extends T, S2_3 extends T>(item: S1_2, pure: Effect<A_3, E_3, FixEnv<R, Evt, S1_2, S2_3>>) => Effect.Effect<A_3, OptimisticConcurrencyException | E_3 | InvalidStateError, Exclude<R, {
39
+ env: PureEnv<Evt, S1_2, S2_3>;
40
+ }>>;
41
+ };
42
+ export interface ExtendedRepository<T, Encoded extends {
43
+ id: string;
44
+ }, Evt, ItemType extends string, IdKey extends keyof T> extends ReturnType<typeof extendRepo<T, Encoded, Evt, ItemType, IdKey>> {
45
+ }
107
46
  //# sourceMappingURL=ext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/ext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/ext.ts"],"names":[],"mappings":"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"}
@@ -1,95 +1,61 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- // Update = Must return updated items
3
- // Modify = Must `set` updated items, and can return anything.
4
- import { Array, Effect } from "effect-app";
1
+ import { Array, Effect, Exit, Option, Request, RequestResolver } from "effect-app";
2
+ import { NotFoundError } from "effect-app/client";
5
3
  import { runTerm } from "effect-app/Pure";
6
- import { NotFoundError } from "../../errors.js";
4
+ import * as Q from "../query.js";
7
5
  import { AnyPureDSL } from "./dsl.js";
8
- /**
9
- * @tsplus fluent Repository get
10
- */
11
- export function get(self, id) {
12
- return self
13
- .find(id)
14
- .pipe(Effect.flatMap((_) => Effect.mapError(_, () => new NotFoundError({ type: self.itemType, id }))));
15
- }
16
- /**
17
- * @tsplus getter Repository log
18
- */
19
- export function log(_) {
20
- return (evt) => AnyPureDSL.log(evt);
21
- }
22
- /**
23
- * @tsplus fluent Repository byIdAndSaveWithPure
24
- */
25
- export function byIdAndSaveWithPure(self, id) {
26
- return (pure) => get(self, id).pipe(Effect.flatMap((item) => saveWithPure_(self, item, pure)));
27
- }
28
- /**
29
- * NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
30
- * @tsplus getter Repository handleByIdAndSaveWithPure
31
- */
32
- export function handleByIdAndSaveWithPure(self) {
33
- return (pure) => (req, ctx) => byIdAndSaveWithPure(self, req.id)(pure(req, ctx));
34
- }
35
- /**
36
- * @tsplus fluent Repository saveManyWithPure_
37
- */
38
- export function saveManyWithPure_(self, items, pure) {
39
- return saveAllWithEffectInt(self, runTerm(pure, [...items]));
40
- }
41
- /**
42
- * @tsplus fluent Repository saveWithPure_
43
- */
44
- export function saveWithPure_(self, item, pure) {
45
- return saveAllWithEffectInt(self, runTerm(pure, item)
46
- .pipe(Effect
47
- .map(([item, events, a]) => [[item], events, a])));
48
- }
49
- export function saveAllWithEffectInt(self, gen) {
50
- return Effect.flatMap(gen, ([items, events, a]) => self.saveAndPublish(items, events).pipe(Effect.map(() => a)));
51
- }
52
- /**
53
- * @tsplus fluent Repository saveManyWithPureBatched
54
- */
55
- export function saveManyWithPureBatched(self, batchSize = 100) {
56
- return (pure) => (items) => saveManyWithPureBatched_(self, items, pure, batchSize);
57
- }
58
- /**
59
- * @tsplus fluent Repository saveManyWithPureBatched_
60
- */
61
- export function saveManyWithPureBatched_(self, items, pure, batchSize = 100) {
62
- return Effect.forEach(Array.chunk_(items, batchSize), (batch) => saveAllWithEffectInt(self, runTerm(pure, batch)));
63
- }
64
- /**
65
- * @tsplus getter Repository save
66
- */
67
- export function save(self) {
68
- return (...items) => self.saveAndPublish(items);
69
- }
70
- /**
71
- * @tsplus getter Repository saveWithEvents
72
- */
73
- export function saveWithEvents(self) {
74
- return (events) => (...items) => self.saveAndPublish(items, events);
75
- }
76
- /**
77
- * @tsplus fluent Repository updateWithEffect
78
- */
79
- export function itemUpdateWithEffect(repo, id, mod) {
80
- return get(repo, id).pipe(Effect.andThen(mod), Effect.andThen(save(repo)));
81
- }
82
- /**
83
- * @tsplus fluent Repository update
84
- */
85
- export function itemUpdate(repo, id, mod) {
86
- return itemUpdateWithEffect(repo, id, (item) => Effect.sync(() => mod(item)));
87
- }
88
- /**
89
- * only use this as a shortcut if you don't have the item already
90
- * @tsplus fluent Repository removeById
91
- */
92
- export function removeById(self, id) {
93
- return get(self, id).pipe(Effect.flatMap((_) => self.removeAndPublish([_])));
94
- }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxxQ0FBcUM7QUFDckMsOERBQThEO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTFDLE9BQU8sRUFBZSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUdyQzs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFHLENBT2pCLElBQXVELEVBQ3ZELEVBQVk7SUFFWixPQUFPLElBQUk7U0FDUixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNwSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQU1qQixDQUFvRDtJQUNwRCxPQUFPLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FNakMsSUFBdUQsRUFBRSxFQUFZO0lBQ3JFLE9BQU8sQ0FBd0IsSUFBeUMsRUFBRSxFQUFFLENBQzFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1B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
6
+ export const extendRepo = (repo) => {
7
+ const get = (id) => Effect.flatMap(repo.find(id), (_) => Effect.mapError(_, () => new NotFoundError({ type: repo.itemType, id })));
8
+ function saveManyWithPure_(self, items, pure) {
9
+ return saveAllWithEffectInt(self, runTerm(pure, [...items]));
10
+ }
11
+ function saveWithPure_(self, item, pure) {
12
+ return saveAllWithEffectInt(self, runTerm(pure, item)
13
+ .pipe(Effect
14
+ .map(([item, events, a]) => [[item], events, a])));
15
+ }
16
+ function saveAllWithEffectInt(self, gen) {
17
+ return Effect.flatMap(gen, ([items, events, a]) => self.saveAndPublish(items, events).pipe(Effect.map(() => a)));
18
+ }
19
+ function saveManyWithPureBatched_(self, items, pure, batchSize = 100) {
20
+ return Effect.forEach(Array.chunk_(items, batchSize), (batch) => saveAllWithEffectInt(self, runTerm(pure, batch)));
21
+ }
22
+ const queryAndSavePure = (q, pure, batch) => repo.query(q).pipe(Effect.andThen((_) => Array.isArray(_)
23
+ ? batch === undefined
24
+ ? saveManyWithPure_(repo, _, pure)
25
+ : saveManyWithPureBatched_(repo, _, pure, batch === "batched" ? 100 : batch)
26
+ : saveWithPure_(repo, _, pure)));
27
+ const saveManyWithPure = (items, pure, batch) => batch
28
+ ? Effect.forEach(Array.chunk_(items, batch === "batched" ? 100 : batch), (batch) => saveAllWithEffectInt(repo, runTerm(pure, batch)))
29
+ : saveAllWithEffectInt(repo, runTerm(pure, [...items]));
30
+ const byIdAndSaveWithPure = (id, pure) => get(id).pipe(Effect.flatMap((item) => saveWithPure_(repo, item, pure)));
31
+ const _request = Request.tagged(`Get${repo.itemType}`);
32
+ const requestResolver = RequestResolver
33
+ .makeBatched((requests) => repo.query(Q.where("id", "in", requests.map((_) => _.id)))
34
+ // TODO
35
+ .pipe(Effect.andThen((items) => Effect.forEach(requests, (r) => Request.complete(r, Array
36
+ .findFirst(items, (_) => _[repo.idKey] === r.id)
37
+ .pipe(Option.match({
38
+ onNone: () => Exit.fail(new NotFoundError({ type: repo.itemType, id: r.id })),
39
+ onSome: Exit.succeed
40
+ }))), { discard: true })), Effect
41
+ .catchAllCause((cause) => Effect.forEach(requests, Request.complete(Exit.failCause(cause)), { discard: true }))))
42
+ .pipe(RequestResolver.batchN(20));
43
+ const exts = {
44
+ request: (id) => Effect.request(_request({ id }), requestResolver),
45
+ get,
46
+ log: (evt) => AnyPureDSL.log(evt),
47
+ removeById: (id) => Effect.andThen(get(id), (_) => repo.removeAndPublish([_])),
48
+ save: (...items) => repo.saveAndPublish(items),
49
+ saveWithEvents: (events) => (...items) => repo.saveAndPublish(items, events),
50
+ queryAndSavePure,
51
+ saveManyWithPure,
52
+ byIdAndSaveWithPure,
53
+ saveWithPure: (item, pure) => saveAllWithEffectInt(repo, runTerm(pure, item)
54
+ .pipe(Effect.map(([item, events, a]) => [[item], events, a])))
55
+ };
56
+ return {
57
+ ...repo,
58
+ ...exts
59
+ };
60
+ };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXpDLE9BQU8sS0FBSyxDQUFDLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHckMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQWtELEVBQ2xELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQVksRUFBRSxFQUFFLENBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDYixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQzFGLENBQUE7SUFDSCxTQUFTLGlCQUFpQixDQVl4QixJQUFrRCxFQUNsRCxLQUFtQixFQUNuQixJQUFnRTtRQUVoRSxPQUFPLG9CQUFvQixDQUN6QixJQUFJLEVBQ0osT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FDMUIsQ0FBQTtJQUNILENBQUM7SUFFRCxTQUFTLGFBQWEsQ0FZcEIsSUFBa0QsRUFDbEQsSUFBUSxFQUNSLElBQTBDO1FBRTFDLE9BQU8sb0JBQW9C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
@@ -0,0 +1,139 @@
1
+ import type { NonEmptyReadonlyArray, Option, ParseResult, S } from "effect-app";
2
+ import { Context, Effect, Layer } from "effect-app";
3
+ import type { NotFoundError, OptimisticConcurrencyException } from "effect-app/client";
4
+ import * as Q from "../query.js";
5
+ import type { Repos } from "../RepositoryBase.js";
6
+ import type { StoreConfig, StoreMaker } from "../Store.js";
7
+ import type { ExtendedRepository } from "./ext.js";
8
+ import type { Repository } from "./service.js";
9
+ /** @deprecated use makeRepo/extendRepo */
10
+ export declare class RepositoryBase<T, Encoded extends {
11
+ id: string;
12
+ }, Evt, ItemType extends string, Ext, IdKey extends keyof T> implements ExtendedRepository<T, Encoded, Evt, ItemType, IdKey> {
13
+ protected readonly impl: ExtendedRepository<T, Encoded, Evt, ItemType, IdKey> & Ext;
14
+ constructor(impl: ExtendedRepository<T, Encoded, Evt, ItemType, IdKey> & Ext);
15
+ get: (id: T[IdKey]) => Effect<T, NotFoundError<ItemType>>;
16
+ idKey: IdKey;
17
+ request: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
18
+ itemType: ItemType;
19
+ saveAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => Effect<void, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException>;
20
+ removeAndPublish: (items: Iterable<T>, events?: Iterable<Evt> | undefined) => Effect<void>;
21
+ find: (id: T[IdKey]) => Effect<Option<T>>;
22
+ all: Effect<T[]>;
23
+ changeFeed: import("effect/PubSub").PubSub<[T[], "save" | "remove"]>;
24
+ mapped: Mapped<Encoded>;
25
+ query: {
26
+ <A, R, Encoded2 extends import("../../filter/types.js").FieldValues, TType extends "one" | "many" | "count" = "many">(q: (initial: Q.Query<Encoded>) => Q.QueryProjection<Encoded extends Encoded2 ? Encoded2 : never, A, R, TType>): Effect.Effect<TType extends "many" ? readonly A[] : TType extends "count" ? S.NonNegativeInt : A, (TType extends "many" ? never : NotFoundError<ItemType>) | (TType extends "count" ? never : ParseResult.ParseError), R>;
27
+ <R = never, TType extends "one" | "many" = "many">(q: (initial: Q.Query<Encoded>) => Q.QAll<Encoded, T, R, TType>): Effect.Effect<TType extends "many" ? readonly T[] : T, TType extends "many" ? never : NotFoundError<ItemType>, R>;
28
+ };
29
+ log: (evt: Evt) => import("effect-app/Pure").PureLogT<any>;
30
+ removeById: (id: T[IdKey]) => Effect.Effect<void, NotFoundError<ItemType>, never>;
31
+ save: (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError>;
32
+ saveWithEvents: (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError>;
33
+ queryAndSavePure: {
34
+ <A, E2, R2, T2 extends T>(q: (q: Q.Query<Encoded>) => Q.QueryEnd<Encoded, "one">, pure: Effect<A, E2, import("effect-app/Pure").FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | NotFoundError<ItemType> | E2, Exclude<R2, {
35
+ env: import("effect-app/Pure").PureEnv<Evt, T, T2>;
36
+ }>>;
37
+ <A, E2, R2, T2 extends T>(q: (q: Q.Query<Encoded>) => Q.Query<Encoded> | Q.QueryWhere<Encoded> | Q.QueryEnd<Encoded, "many">, pure: Effect<A, E2, import("effect-app/Pure").FixEnv<R2, Evt, readonly T[], readonly T2[]>>): Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E2, Exclude<R2, {
38
+ env: import("effect-app/Pure").PureEnv<Evt, readonly T[], readonly T2[]>;
39
+ }>>;
40
+ <A, E2, R2, T2 extends T>(q: (q: Q.Query<Encoded>) => Q.Query<Encoded> | Q.QueryWhere<Encoded> | Q.QueryEnd<Encoded, "many">, pure: Effect<A, E2, import("effect-app/Pure").FixEnv<R2, Evt, readonly T[], readonly T2[]>>, batch: "batched" | number): Effect.Effect<A[], OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E2, Exclude<R2, {
41
+ env: import("effect-app/Pure").PureEnv<Evt, readonly T[], readonly T2[]>;
42
+ }>>;
43
+ };
44
+ saveManyWithPure: {
45
+ <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E, Exclude<R, {
46
+ env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
47
+ }>>;
48
+ <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, readonly S1[], readonly S2[]>>, batch: "batched" | number): Effect.Effect<A[], OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E, Exclude<R, {
49
+ env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
50
+ }>>;
51
+ };
52
+ byIdAndSaveWithPure: <R, A, E, S2 extends T>(id: T[IdKey], pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, T, S2>>) => Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | NotFoundError<ItemType> | E, Exclude<R, {
53
+ env: import("effect-app/Pure").PureEnv<Evt, T, S2>;
54
+ }>>;
55
+ saveWithPure: <R, A, E, S1 extends T, S2 extends T>(item: S1, pure: Effect<A, E, import("effect-app/Pure").FixEnv<R, Evt, S1, S2>>) => Effect.Effect<A, OptimisticConcurrencyException | import("effect-app/client").InvalidStateError | E, Exclude<R, {
56
+ env: import("effect-app/Pure").PureEnv<Evt, S1, S2>;
57
+ }>>;
58
+ }
59
+ export declare const RepositoryDefaultImpl2: <Service, Evt = never>() => {
60
+ <ItemType extends string, R, Encoded extends {
61
+ id: string;
62
+ }, T, IdKey extends keyof T, E = never, RInitial = never, R2 = never, Layers extends [Layer.Layer.Any, ...Layer.Layer.Any[]] = [Layer.Layer<never, never, never>], E1 = never, R1 = never, Ext = {}>(itemType: ItemType, schema: S.Schema<T, Encoded, R>, options: [Evt] extends [never] ? {
63
+ dependencies?: Layers;
64
+ idKey: IdKey;
65
+ config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
66
+ partitionValue?: (a: Encoded) => string;
67
+ };
68
+ jitM?: (pm: Encoded) => Encoded;
69
+ options?: Effect<{
70
+ makeInitial?: Effect<readonly T[], E, RInitial>;
71
+ ext?: Ext;
72
+ }, E1, R1>;
73
+ } : {
74
+ dependencies?: Layers;
75
+ idKey: IdKey;
76
+ jitM?: (pm: Encoded) => Encoded;
77
+ config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
78
+ partitionValue?: (a: Encoded) => string;
79
+ };
80
+ options?: Effect<{
81
+ publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<void, never, R2>;
82
+ makeInitial?: Effect<readonly T[], E, RInitial>;
83
+ ext?: Ext;
84
+ }, E1, R1>;
85
+ }): (abstract new (impl: Repository<T, Encoded, Evt, ItemType, IdKey> & Ext) => RepositoryBase<T, Encoded, Evt, ItemType, Ext, IdKey>) & Context.Tag<Service, Service> & {
86
+ Default: Layer.Layer<Service, E1 | Layer.Layer.Error<Layers[number]>, Exclude<R1 | R | StoreMaker, { [k in keyof Layers]: Layer.Layer.Success<Layers[k]>; }[number]>>;
87
+ DefaultWithoutDependencies: Layer.Layer<Service, E1, R1 | R | StoreMaker>;
88
+ } & Repos<T, Encoded, R, Evt, ItemType, IdKey>;
89
+ <ItemType extends string, R_1, Encoded_1 extends {
90
+ id: string;
91
+ }, T_1 extends {
92
+ id: unknown;
93
+ }, E_1 = never, RInitial_1 = never, R2_1 = never, Layers_1 extends [Layer.Layer.Any, ...Layer.Layer.Any[]] = [Layer.Layer<never, never, never>], E1_1 = never, R1_1 = never, Ext_1 = {}>(itemType: ItemType, schema: S.Schema<T_1, Encoded_1, R_1>, options: [Evt] extends [never] ? {
94
+ dependencies?: Layers_1;
95
+ config?: Omit<StoreConfig<Encoded_1>, "partitionValue"> & {
96
+ partitionValue?: (a: Encoded_1) => string;
97
+ };
98
+ jitM?: (pm: Encoded_1) => Encoded_1;
99
+ options?: Effect<{
100
+ makeInitial?: Effect<readonly T_1[], E_1, RInitial_1>;
101
+ ext?: Ext_1;
102
+ }, E1_1, R1_1>;
103
+ } : {
104
+ dependencies?: Layers_1;
105
+ jitM?: (pm: Encoded_1) => Encoded_1;
106
+ config?: Omit<StoreConfig<Encoded_1>, "partitionValue"> & {
107
+ partitionValue?: (a: Encoded_1) => string;
108
+ };
109
+ options?: Effect<{
110
+ publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<void, never, R2_1>;
111
+ makeInitial?: Effect<readonly T_1[], E_1, RInitial_1>;
112
+ ext?: Ext_1;
113
+ }, E1_1, R1_1>;
114
+ }): (abstract new (impl: Repository<T_1, Encoded_1, Evt, ItemType, "id"> & Ext_1) => RepositoryBase<T_1, Encoded_1, Evt, ItemType, Ext_1, "id">) & Context.Tag<Service, Service> & {
115
+ Default: Layer.Layer<Service, E1_1 | Layer.Layer.Error<Layers_1[number]>, Exclude<R1_1 | R_1 | StoreMaker, { [k in keyof Layers_1]: Layer.Layer.Success<Layers_1[k]>; }[number]>>;
116
+ DefaultWithoutDependencies: Layer.Layer<Service, E1_1, R1_1 | R_1 | StoreMaker>;
117
+ } & Repos<T_1, Encoded_1, R_1, Evt, ItemType, "id">;
118
+ };
119
+ export interface Mapped1<A, IdKey extends keyof A, R> {
120
+ all: Effect<A[], ParseResult.ParseError, R>;
121
+ save: (...xes: readonly A[]) => Effect<void, OptimisticConcurrencyException | ParseResult.ParseError, R>;
122
+ find: (id: A[IdKey]) => Effect<Option<A>, ParseResult.ParseError, R>;
123
+ }
124
+ export interface Mapped2<A, R> {
125
+ all: Effect<A[], ParseResult.ParseError, R>;
126
+ }
127
+ export interface Mapped<Encoded extends {
128
+ id: string;
129
+ }> {
130
+ <A, R, IdKey extends keyof A>(schema: S.Schema<A, Encoded, R>): Mapped1<A, IdKey, R>;
131
+ <A, Encoded2, R>(schema: S.Schema<A, Encoded2, R>): Mapped2<A, R>;
132
+ }
133
+ export interface MM<Repo, Encoded extends {
134
+ id: string;
135
+ }> {
136
+ <A, R, IdKey extends keyof A>(schema: S.Schema<A, Encoded, R>): Effect<Mapped1<A, IdKey, R>, never, Repo>;
137
+ <A, Encoded2, R>(schema: S.Schema<A, Encoded2, R>): Effect<Mapped2<A, R>, never, Repo>;
138
+ }
139
+ //# sourceMappingURL=legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/legacy.ts"],"names":[],"mappings":"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"}