@effect-app/infra 2.3.5 → 2.4.1

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 +109 -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 +4 -222
  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 +100 -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 +7 -237
  32. package/dist/services/RepositoryBase.d.ts.map +1 -1
  33. package/dist/services/RepositoryBase.js +5 -200
  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 +12 -931
  44. package/test/query.test.ts +10 -8
@@ -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, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException>;
32
+ saveWithEvents: (events: Iterable<Evt>) => (items_0: T, ...items: T[]) => Effect<void, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException>;
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, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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[], import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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[], import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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, import("effect-app/client").InvalidStateError | OptimisticConcurrencyException | 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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"}
@@ -0,0 +1,100 @@
1
+ import { Context, Effect, Layer } from "effect-app";
2
+ import * as Q from "../query.js";
3
+ import { makeRepoInternal } from "../RepositoryBase.js";
4
+ import { extendRepo } from "./ext.js";
5
+ const names = new Map();
6
+ const registerName = (name) => {
7
+ const existing = names.get(name);
8
+ if (existing === undefined) {
9
+ names.set(name, 1);
10
+ return name;
11
+ }
12
+ else {
13
+ const n = existing + 1;
14
+ names.set(name, n);
15
+ return name + "-" + existing;
16
+ }
17
+ };
18
+ /** @deprecated use makeRepo/extendRepo */
19
+ export class RepositoryBase {
20
+ impl;
21
+ constructor(impl) {
22
+ this.impl = impl;
23
+ this.saveAndPublish = this.impl.saveAndPublish;
24
+ this.removeAndPublish = this.impl.removeAndPublish;
25
+ this.find = this.impl.find;
26
+ this.all = this.impl.all;
27
+ this.changeFeed = this.impl.changeFeed;
28
+ this.mapped = this.impl.mapped;
29
+ this.query = this.impl.query;
30
+ this.get = this.impl.get;
31
+ this.itemType = this.impl.itemType;
32
+ this.idKey = this.impl.idKey;
33
+ this.log = this.impl.log;
34
+ this.removeById = this.impl.removeById;
35
+ this.save = this.impl.save;
36
+ this.saveWithEvents = this.impl.saveWithEvents;
37
+ this.queryAndSavePure = this.impl.queryAndSavePure;
38
+ this.saveManyWithPure = this.impl.saveManyWithPure;
39
+ this.byIdAndSaveWithPure = this.impl.byIdAndSaveWithPure;
40
+ this.saveWithPure = this.impl.saveWithPure;
41
+ this.request = this.impl.request;
42
+ }
43
+ get;
44
+ idKey;
45
+ request;
46
+ itemType;
47
+ saveAndPublish;
48
+ removeAndPublish;
49
+ find;
50
+ all;
51
+ changeFeed;
52
+ mapped;
53
+ query;
54
+ log;
55
+ removeById;
56
+ save;
57
+ saveWithEvents;
58
+ queryAndSavePure;
59
+ saveManyWithPure;
60
+ byIdAndSaveWithPure;
61
+ saveWithPure;
62
+ }
63
+ export const RepositoryDefaultImpl2 = () => {
64
+ const f = (itemType, schema, options) => {
65
+ let layerCache = undefined;
66
+ let layerCache2 = undefined;
67
+ class Cls extends RepositoryBase {
68
+ static Q = Q.make();
69
+ static get DefaultWithoutDependencies() {
70
+ const self = this;
71
+ return layerCache ??= Effect
72
+ .gen(function* () {
73
+ const opts = yield* options.options ?? Effect.succeed({});
74
+ const mkRepo = makeRepoInternal()(itemType, schema, options?.jitM ? (pm) => options.jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), options.idKey ?? "id");
75
+ const r = yield* mkRepo.make({ ...options, ...opts });
76
+ const repo = new self(Object.assign(extendRepo(r), "ext" in opts ? opts.ext : {}));
77
+ return Layer.succeed(self, repo);
78
+ })
79
+ .pipe(Layer.unwrapEffect);
80
+ }
81
+ static get Default() {
82
+ const self = this;
83
+ return layerCache2 ??= options.dependencies
84
+ ? self
85
+ .DefaultWithoutDependencies
86
+ .pipe(Layer.provide(options.dependencies))
87
+ : self.DefaultWithoutDependencies;
88
+ }
89
+ static type = undefined;
90
+ }
91
+ const limit = Error.stackTraceLimit;
92
+ Error.stackTraceLimit = 2;
93
+ const creationError = new Error();
94
+ Error.stackTraceLimit = limit;
95
+ // TODO: actual class name or expect a string identifier - careful with overlapping between modules
96
+ return Context.assignTag(registerName(itemType + "Repo"), creationError)(Cls); // impl is missing, but its marked protected
97
+ };
98
+ return f;
99
+ };
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnkvbGVnYWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuRCxPQUFPLEtBQUssQ0FBQyxNQUFNLGFBQWEsQ0FBQTtBQUVoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUV2RCxPQUFPLEVBQTJCLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc5RCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtBQUN2QyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUE7UUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEIsT0FBTyxJQUFJLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQTtJQUM5QixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sT0FBTyxjQUFjO0lBR007SUFBL0IsWUFBK0IsSUFBZ0U7UUFBaEUsU0FBSSxHQUFKLElBQUksQ0FBNEQ7UUFDN0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdB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
@@ -1,9 +1,28 @@
1
- import type { RepositoryBaseC } from "../RepositoryBase.js";
1
+ import type { ParseResult } from "effect";
2
+ import type { Effect, Option, PubSub } from "effect-app";
3
+ import type { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client";
4
+ import type { NonNegativeInt } from "effect-app/Schema/numbers";
5
+ import type { FieldValues } from "../../filter/types.js";
6
+ import type { QAll, Query, QueryProjection } from "../query.js";
7
+ import type { Mapped } from "./legacy.js";
2
8
  /**
3
9
  * @tsplus type Repository
4
10
  */
5
11
  export interface Repository<T, Encoded extends {
6
12
  id: string;
7
- }, Evt, ItemType extends string, IdKey extends keyof T> extends RepositoryBaseC<T, Encoded, Evt, ItemType, IdKey> {
13
+ }, Evt, ItemType extends string, IdKey extends keyof T> {
14
+ readonly itemType: ItemType;
15
+ readonly idKey: IdKey;
16
+ readonly find: (id: T[IdKey]) => Effect<Option<T>>;
17
+ readonly all: Effect<T[]>;
18
+ readonly saveAndPublish: (items: Iterable<T>, events?: Iterable<Evt>) => Effect<void, InvalidStateError | OptimisticConcurrencyException>;
19
+ readonly changeFeed: PubSub.PubSub<[T[], "save" | "remove"]>;
20
+ readonly removeAndPublish: (items: Iterable<T>, events?: Iterable<Evt>) => Effect<void>;
21
+ readonly query: {
22
+ <A, R, Encoded2 extends FieldValues, TType extends "one" | "many" | "count" = "many">(q: (initial: Query<Encoded>) => QueryProjection<Encoded extends Encoded2 ? Encoded2 : never, A, R, TType>): Effect.Effect<TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A, (TType extends "many" ? never : NotFoundError<ItemType>) | (TType extends "count" ? never : ParseResult.ParseError), R>;
23
+ <R = never, TType extends "one" | "many" = "many">(q: (initial: Query<Encoded>) => QAll<Encoded, T, R, TType>): Effect.Effect<TType extends "many" ? readonly T[] : T, TType extends "many" ? never : NotFoundError<ItemType>, R>;
24
+ };
25
+ /** @deprecated use query */
26
+ readonly mapped: Mapped<Encoded>;
8
27
  }
9
28
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,CAAC,EACD,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC9B,GAAG,EACH,QAAQ,SAAS,MAAM,EACvB,KAAK,SAAS,MAAM,CAAC,CACrB,SAAQ,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC;CAAG"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from "./Repository/dsl.js";
2
2
  export * from "./Repository/ext.js";
3
+ export * from "./Repository/legacy.js";
3
4
  export * from "./Repository/service.js";
4
5
  //# sourceMappingURL=Repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/services/Repository.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/services/Repository.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from "./Repository/dsl.js";
2
2
  export * from "./Repository/ext.js";
3
+ export * from "./Repository/legacy.js";
3
4
  export * from "./Repository/service.js";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9SZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHlCQUF5QixDQUFBIn0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9SZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMseUJBQXlCLENBQUEifQ==