@effect-app/infra 0.170.6 → 0.172.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 (67) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/_cjs/services/Operations/live.cjs +8 -9
  3. package/_cjs/services/Operations/live.cjs.map +1 -1
  4. package/_cjs/services/Repository/dsl.cjs +70 -0
  5. package/_cjs/services/Repository/dsl.cjs.map +1 -0
  6. package/_cjs/services/Repository/ext.cjs +217 -0
  7. package/_cjs/services/Repository/ext.cjs.map +1 -0
  8. package/_cjs/services/Repository/service.cjs +6 -0
  9. package/_cjs/services/Repository/service.cjs.map +1 -0
  10. package/_cjs/services/Repository.cjs +32 -252
  11. package/_cjs/services/Repository.cjs.map +1 -1
  12. package/_cjs/services/RepositoryBase.cjs +173 -48
  13. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  14. package/_cjs/services/RequestContextContainer.cjs +13 -14
  15. package/_cjs/services/RequestContextContainer.cjs.map +1 -1
  16. package/_cjs/services/Store/ContextMapContainer.cjs +9 -10
  17. package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
  18. package/_cjs/services/Store/codeFilter.cjs +2 -2
  19. package/_cjs/services/Store/utils.cjs +8 -9
  20. package/_cjs/services/Store/utils.cjs.map +1 -1
  21. package/_cjs/services/simpledb/diskdb.cjs +1 -2
  22. package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
  23. package/_cjs/services/simpledb/simpledb.cjs +5 -6
  24. package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
  25. package/_src/api/express/schema/routing.ts +6 -6
  26. package/_src/services/Operations/live.ts +1 -1
  27. package/_src/services/Repository/dsl.ts +137 -0
  28. package/_src/services/Repository/ext.ts +707 -0
  29. package/_src/services/Repository/service.ts +12 -0
  30. package/_src/services/Repository.ts +3 -815
  31. package/_src/services/RepositoryBase.ts +621 -4
  32. package/_src/services/RequestContextContainer.ts +1 -1
  33. package/_src/services/Store/ContextMapContainer.ts +1 -1
  34. package/_src/services/Store/codeFilter.ts +2 -2
  35. package/_src/services/Store/utils.ts +9 -9
  36. package/_src/services/simpledb/diskdb.ts +1 -1
  37. package/_src/services/simpledb/simpledb.ts +1 -1
  38. package/dist/services/Operations/live.js +9 -10
  39. package/dist/services/QueueMaker/service.d.ts +2 -2
  40. package/dist/services/Repository/dsl.d.ts +51 -0
  41. package/dist/services/Repository/dsl.d.ts.map +1 -0
  42. package/dist/services/Repository/dsl.js +55 -0
  43. package/dist/services/Repository/ext.d.ts +324 -0
  44. package/dist/services/Repository/ext.d.ts.map +1 -0
  45. package/dist/services/Repository/ext.js +180 -0
  46. package/dist/services/Repository/service.d.ts +10 -0
  47. package/dist/services/Repository/service.d.ts.map +1 -0
  48. package/dist/services/Repository/service.js +2 -0
  49. package/dist/services/Repository.d.ts +3 -363
  50. package/dist/services/Repository.d.ts.map +1 -1
  51. package/dist/services/Repository.js +4 -217
  52. package/dist/services/RepositoryBase.d.ts +241 -6
  53. package/dist/services/RepositoryBase.d.ts.map +1 -1
  54. package/dist/services/RepositoryBase.js +164 -48
  55. package/dist/services/RequestContextContainer.js +14 -15
  56. package/dist/services/Store/ContextMapContainer.js +10 -11
  57. package/dist/services/Store/codeFilter.js +3 -3
  58. package/dist/services/Store/utils.js +10 -11
  59. package/dist/services/simpledb/cosmosdb.d.ts +2 -2
  60. package/dist/services/simpledb/diskdb.d.ts +1 -1
  61. package/dist/services/simpledb/diskdb.js +2 -3
  62. package/dist/services/simpledb/memdb.d.ts +1 -1
  63. package/dist/services/simpledb/redisdb.d.ts +5 -5
  64. package/dist/services/simpledb/shared.d.ts +5 -5
  65. package/dist/services/simpledb/simpledb.d.ts +2 -2
  66. package/dist/services/simpledb/simpledb.js +5 -6
  67. package/package.json +37 -7
@@ -39,23 +39,23 @@ export const makeUpdateETag =
39
39
  export function codeFilter<E extends { id: string }, NE extends E>(filter: Filter<NE>) {
40
40
  return (x: E) =>
41
41
  filter.type === "new-kid"
42
- ? codeFilter3_(filter.build(), x) ? Option.some(x as unknown as NE) : Option.none
42
+ ? codeFilter3_(filter.build(), x) ? Option.some(x as unknown as NE) : Option.none()
43
43
  : filter.type === "startsWith"
44
44
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
45
  ? lowercaseIfString((x as any)[filter.by]).startsWith(filter.value.toLowerCase())
46
46
  ? Option.some(x as unknown as NE)
47
- : Option.none
47
+ : Option.none()
48
48
  : filter.type === "endsWith"
49
49
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
50
  ? lowercaseIfString((x as any)[filter.by]).endsWith(filter.value.toLowerCase())
51
51
  ? Option.some(x as unknown as NE)
52
- : Option.none
52
+ : Option.none()
53
53
  : filter.type === "contains"
54
54
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
55
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
56
56
  ? lowercaseIfString((x as any)[filter.by]).includes(filter.value.toLowerCase())
57
57
  ? Option.some(x as unknown as NE)
58
- : Option.none
58
+ : Option.none()
59
59
  : filter.type === "join_find"
60
60
  ? filter.keys.some((k) => {
61
61
  const value = get(x, k) as Record<string, unknown>[]
@@ -66,7 +66,7 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
66
66
  )
67
67
  })
68
68
  ? Option.some(x as unknown as NE)
69
- : Option.none
69
+ : Option.none()
70
70
  // TODO: support mixed or/and
71
71
  : filter.mode === "or"
72
72
  ? filter
@@ -110,7 +110,7 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
110
110
  }
111
111
  })
112
112
  ? Option.some(x as unknown as NE)
113
- : Option.none
113
+ : Option.none()
114
114
  : filter
115
115
  .where
116
116
  .every((p) => {
@@ -160,7 +160,7 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
160
160
  }
161
161
  })
162
162
  ? Option.some(x as unknown as NE)
163
- : Option.none
163
+ : Option.none()
164
164
  }
165
165
 
166
166
  export function codeFilterJoinSelect<E extends { id: string }, NE>(
@@ -178,10 +178,10 @@ export function codeFilterJoinSelect<E extends { id: string }, NE>(
178
178
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
179
  compare((v as any)[filter.valueKey], filter.value)
180
180
  ? Option.some({ ...v, _rootId: x.id })
181
- : Option.none
181
+ : Option.none()
182
182
  )
183
183
  )
184
- : Option.none
184
+ : Option.none()
185
185
  })
186
186
  .flatMap((_) => _)
187
187
  }
@@ -133,7 +133,7 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
133
133
  function tryRead(filePath: string) {
134
134
  return fu
135
135
  .fileExists(filePath)
136
- .flatMap((exists) => !exists ? Effect.sync(() => Option.none) : readFile(filePath).map(Option.some))
136
+ .flatMap((exists) => !exists ? Effect.sync(() => Option.none()) : readFile(filePath).map(Option.some))
137
137
  }
138
138
 
139
139
  function getFilename(type: string, id: string) {
@@ -90,7 +90,7 @@ export function store<R, E, R2, E2, TKey extends string, EA, A extends DBRecord<
90
90
  c
91
91
  .find(record.id)
92
92
  .mapOpt((x) => x.version)
93
- .flatMap((_) => _.match({ onNone: () => save(record, Option.none), onSome: confirmVersionAndSave(record) }))
93
+ .flatMap((_) => _.match({ onNone: () => save(record, Option.none()), onSome: confirmVersionAndSave(record) }))
94
94
  .tap((r) => c.set(record.id, r))
95
95
  .map((r) => r.data)
96
96
  )
@@ -7,11 +7,10 @@ import * as tsplus_module_6 from "effect/Exit";
7
7
  import * as tsplus_module_7 from "effect/Cause";
8
8
  import * as tsplus_module_8 from "@effect-app/prelude/schema";
9
9
  import * as tsplus_module_9 from "@effect/schema/Parser";
10
- import * as tsplus_module_10 from "@effect-app/core/Option";
11
- import * as tsplus_module_11 from "@effect-app/prelude/_ext/misc";
12
- import * as tsplus_module_12 from "effect/Duration";
13
- import * as tsplus_module_13 from "effect/Schedule";
14
- import * as tsplus_module_14 from "effect/Layer";
10
+ import * as tsplus_module_10 from "@effect-app/prelude/_ext/misc";
11
+ import * as tsplus_module_11 from "effect/Duration";
12
+ import * as tsplus_module_12 from "effect/Schedule";
13
+ import * as tsplus_module_13 from "effect/Layer";
15
14
  import { reportError } from "@effect-app/infra/errorReporter";
16
15
  import { Failure, Operation, OperationId, Success } from "@effect-app/prelude/Operations";
17
16
  import { Operations } from "./service.js";
@@ -55,7 +54,7 @@ const make = tsplus_module_1.sync(() => {
55
54
  : tsplus_module_3.flatMap(tsplus_module_7.failureOption(exit
56
55
  .cause), (_) => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_9.is(tsplus_module_8.NonEmptyString2k)(_.message)
57
56
  ? tsplus_module_3.some(_.message)
58
- : tsplus_module_10.none)
57
+ : tsplus_module_3.none())
59
58
  .value ?? null
60
59
  })
61
60
  });
@@ -72,7 +71,7 @@ const make = tsplus_module_1.sync(() => {
72
71
  return {
73
72
  cleanup,
74
73
  register: makeOp
75
- .tap((id) => tsplus_module_11.annotateLogscoped("operationId", id)
74
+ .tap((id) => tsplus_module_10.annotateLogscoped("operationId", id)
76
75
  .andThen(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))),
77
76
  find: findOp,
78
77
  update
@@ -85,9 +84,9 @@ const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.schedule(tsplus_m
85
84
  else {
86
85
  return reportAppError(_.cause);
87
86
  }
88
- }), tsplus_module_13.fixed(tsplus_module_12.minutes(1))));
87
+ }), tsplus_module_12.fixed(tsplus_module_11.minutes(1))));
89
88
  /**
90
89
  * @tsplus static Operations.Ops Live
91
90
  */
92
- export const Live = tsplus_module_14.provideMerge(tsplus_module_14.scopedDiscard(cleanupLoop), tsplus_module_14.effect(Operations)(make));
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBRXhELE1BQU0sSUFBSSxHQUFHLHFCQUFZLEdBQWUsRUFBRTtJQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQTtJQUM3QyxNQUFNLE1BQU0sR0FBRyxxQkFBWSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVwRCxNQUFNLE9BQU8sR0FBRyx5QkFBQSxxQkFDUixHQUFHLEVBQUU7UUFDVCxNQUFNLE1BQU0sR0FBRyw2QkFBQSxJQUFJLElBQUksRUFBRSxFQUFVLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLHNEQUFBLEdBQUc7YUFDQSxPQUFPLEVBQUUsR0FFRCxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxXQUFXLEdBQUcsNkJBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ25GLElBQUksV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FB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
91
+ export const Live = tsplus_module_13.provideMerge(tsplus_module_13.scopedDiscard(cleanupLoop), tsplus_module_13.effect(Operations)(make));
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUE7QUFFeEQsTUFBTSxJQUFJLEdBQUcscUJBQVksR0FBZSxFQUFFO0lBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFBO0lBQzdDLE1BQU0sTUFBTSxHQUFHLHFCQUFZLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXBELE1BQU0sT0FBTyxHQUFHLHlCQUFBLHFCQUNSLEdBQUcsRUFBRTtRQUNULE1BQU0sTUFBTSxHQUFHLDZCQUFBLElBQUksSUFBSSxFQUFFLEVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDckMsc0RBQUEsR0FBRzthQUNBLE9BQU8sRUFBRSxHQUVELENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyw2QkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDbkYsSUFBSSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDaEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFD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
@@ -17,8 +17,8 @@ export declare const QueueMaker: QueueMakerOps;
17
17
  export declare const QueueMeta: import("@effect-app/schema").Schema<{
18
18
  readonly requestContext: RequestContext;
19
19
  readonly span?: {
20
- readonly traceId: string;
21
20
  readonly spanId: string;
21
+ readonly traceId: string;
22
22
  readonly sampled?: boolean | undefined;
23
23
  } | undefined;
24
24
  }, {
@@ -45,8 +45,8 @@ export declare const QueueMeta: import("@effect-app/schema").Schema<{
45
45
  readonly namespace?: string | undefined;
46
46
  };
47
47
  readonly span?: {
48
- readonly traceId: string;
49
48
  readonly spanId: string;
49
+ readonly traceId: string;
50
50
  readonly sampled?: boolean | undefined;
51
51
  } | undefined;
52
52
  }, never>;
@@ -0,0 +1,51 @@
1
+ import { Pure, PureEnvEnv } from "@effect-app/prelude/Pure";
2
+ import { Effect } from "effect/Effect";
3
+ import { NonEmptyReadonlyArray } from "effect/ReadonlyArray";
4
+ import type { FixEnv, PureLogT } from "@effect-app/prelude/Pure";
5
+ export interface PureDSL<S, S2, W> {
6
+ get: ReturnType<typeof Pure.get<S>>;
7
+ set: typeof Pure.set<S2>;
8
+ log: (...w: W[]) => PureLogT<W>;
9
+ }
10
+ export declare const AnyPureDSL: PureDSL<any, any, any>;
11
+ export type AllDSL<T, Evt> = (<R, A, E, S1 extends T, S2 extends T>(pure: (dsl: PureDSL<S1[], S2[], Evt>) => Effect<A, E, R>) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) & AllDSLExt<T, Evt>;
12
+ /**
13
+ * @tsplus type DSLExt
14
+ */
15
+ export interface AllDSLExt<T, Evt> {
16
+ modify: <R, E, A, S1 extends T, S2 extends T>(pure: (items: S1[], dsl: PureDSL<S1[], S2[], Evt>) => Effect<A, E, R>) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>;
17
+ update: <R, E, S1 extends T, S2 extends T>(pure: (items: S1[], log: (...evt: Evt[]) => PureLogT<Evt>) => Effect<S2[], E, R>) => Effect<S2[], E, FixEnv<R, Evt, S1[], S2[]>>;
18
+ }
19
+ export declare function makeAllDSL<T, Evt>(): AllDSL<T, Evt>;
20
+ export type OneDSL<T, Evt> = (<R, A, E, S1 extends T, S2 extends T>(pure: (dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) & OneDSLExt<T, Evt>;
21
+ /**
22
+ * @tsplus type DSLExt
23
+ */
24
+ export interface OneDSLExt<T, Evt> {
25
+ modify: <R, E, A, S1 extends T, S2 extends T>(pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) => Effect<A, E, FixEnv<R, Evt, S1, S2> | PureEnvEnv<Evt, S1, S1>>;
26
+ update: <R, E, S1 extends T, S2 extends T>(pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect<S2, E, FixEnv<R, Evt, S1, S2>>) => Effect<S2, E, FixEnv<R, Evt, S1, S2>>;
27
+ }
28
+ /**
29
+ * @tsplus fluent DSLExt updateWith
30
+ * @tsplus location "@effect-app/infra/services/Repository/dsl"
31
+ */
32
+ export declare function updateWithOne<T, Evt, S1 extends T, S2 extends T>(self: OneDSL<T, Evt>, upd: (item: S1) => S2): import("effect/Effect").Effect<S2, never, import("@effect-app/prelude/Pure").PureEnvEnv<Evt, S1, S2>>;
33
+ /**
34
+ * @tsplus fluent DSLExt updateWith
35
+ * @tsplus location "@effect-app/infra/services/Repository/dsl"
36
+ */
37
+ export declare function updateWith<T, Evt, S1 extends T, S2 extends T>(self: AllDSL<T, Evt>, upd: (item: S1[]) => S2[]): import("effect/Effect").Effect<S2[], never, import("@effect-app/prelude/Pure").PureEnvEnv<Evt, S1[], S2[]>>;
38
+ export declare function makeOneDSL<T, Evt>(): OneDSL<T, Evt>;
39
+ export declare function makeDSL<S1, S2, Evt>(): (<R, A, E>(pure: (dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, R>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>) & {
40
+ modify: <R_1, E_1, A_1>(pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => import("effect/Effect").Effect<A_1, E_1, R_1>) => import("effect/Effect").Effect<A_1, E_1, FixEnv<R_1, Evt, S1, S2>>;
41
+ update: <R_2, E_2>(pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => import("effect/Effect").Effect<S2, E_2, R_2>) => import("effect/Effect").Effect<S2, E_2, FixEnv<R_2, Evt, S1, S2>>;
42
+ };
43
+ export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {
44
+ }
45
+ export declare function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>): (items: Iterable<T>) => import("effect/Effect").Effect<import("effect/Option").Option<A>, E, R>;
46
+ /**
47
+ * @tsplus fluent Iterable ifAny
48
+ * @tsplus location "@effect-app/infra/services/Repository/dsl"
49
+ */
50
+ export declare function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>): import("effect/Effect").Effect<import("effect/Option").Option<A>, E, R>;
51
+ //# sourceMappingURL=dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../_src/services/Repository/dsl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import * as tsplus_module_1 from "@effect-app/prelude/Pure";
2
+ import * as tsplus_module_2 from "effect/Effect";
3
+ import * as tsplus_module_3 from "@effect-app/core/Array";
4
+ import * as tsplus_module_4 from "@effect-app/core/Effect";
5
+ export const AnyPureDSL = {
6
+ get: tsplus_module_1.get(),
7
+ set: tsplus_module_1.set,
8
+ log: (...evt) => tsplus_module_1.logMany(evt)
9
+ };
10
+ const anyDSL = makeDSL();
11
+ export function makeAllDSL() {
12
+ const dsl = anyDSL;
13
+ return dsl;
14
+ }
15
+ /**
16
+ * @tsplus fluent DSLExt updateWith
17
+ */
18
+ export function updateWithOne(self, upd) {
19
+ return self.update((_) => tsplus_module_2.sync(() => upd(_)));
20
+ }
21
+ /**
22
+ * @tsplus fluent DSLExt updateWith
23
+ */
24
+ export function updateWith(self, upd) {
25
+ return self.update((_) => tsplus_module_2.sync(() => upd(_)));
26
+ }
27
+ export function makeOneDSL() {
28
+ return anyDSL;
29
+ }
30
+ export function makeDSL() {
31
+ const dsl = AnyPureDSL;
32
+ function modify(pure) {
33
+ return tsplus_module_2.flatMap(dsl.get, (items) => pure(items, dsl));
34
+ }
35
+ function update(pure) {
36
+ return tsplus_module_2.flatMap(dsl.get, (items) => pure(items, dsl.log).tap(dsl.set));
37
+ }
38
+ function withDSL(pure) {
39
+ return pure(AnyPureDSL);
40
+ }
41
+ return Object.assign(withDSL, {
42
+ modify,
43
+ update
44
+ });
45
+ }
46
+ export function ifAny(fn) {
47
+ return (items) => tsplus_module_4.flatMapOption(tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(items)), fn);
48
+ }
49
+ /**
50
+ * @tsplus fluent Iterable ifAny
51
+ */
52
+ export function ifAny_(items, fn) {
53
+ return tsplus_module_4.flatMapOption(tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(items)), fn);
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9SZXBvc2l0b3J5L2RzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBUUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUEyQjtJQUNoRCxHQUFHLEVBQUUscUJBQVU7SUFDZixHQUFHLHFCQUFVO0lBQ2IsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFVLEVBQUUsRUFBRSxDQUFDLHdCQUFhLEdBQUcsQ0FBQztDQUMxQyxDQUFBO0FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFpQixDQUFBO0FBb0J2QyxNQUFNLFVBQVUsVUFBVTtJQUN4QixNQUFNLEdBQUcsR0FBbUIsTUFBTSxDQUFBO0lBQ2xDLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQW9CRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQXFDLElBQW9CLEVBQUUsR0FBcUI7SUFDM0csT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBSyxFQUFFLEVBQUUsQ0FBQyxxQkFBWSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzFELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQW9CLEVBQ3BCLEdBQXlCO0lBRXpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMscUJBQVksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUM1RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQXlCLFVBQVUsQ0FBQTtJQUU1QyxTQUFTLE1BQU0sQ0FLYixJQUdvQjtRQUVwQixPQUFPLHdCQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQVEsQ0FBQTtJQUM1RCxDQUFDO0lBRUQsU0FBUyxNQUFNLENBSWIsSUFHcUI7UUFFckIsT0FBTyx3QkFBQSxHQUFHLENBQUMsR0FBRyxFQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFRLENBQUE7SUFDN0UsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUtkLElBQW9EO1FBRXBELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBUSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLE9BQU8sRUFDUDtRQUNFLE1BQU07UUFDTixNQUFNO0tBQ1AsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUlELE1BQU0sVUFBVSxLQUFLLENBQWEsRUFBd0Q7SUFDeEYsT0FBTyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLDhCQUFBLHFCQUFZLEdBQUcsRUFBRSxtREFBQyxLQUFLLENBQWdCLENBQUMsRUFBWSxFQUFFLENBQUMsQ0FBQTtBQUN4RixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFhLEtBQWtCLEVBQUUsRUFBd0Q7SUFDN0csT0FBTyw4QkFBQSxxQkFBWSxHQUFHLEVBQUUsbURBQUMsS0FBSyxDQUFnQixDQUFDLEVBQVksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQyJ9
@@ -0,0 +1,324 @@
1
+ import { Effect } from "effect/Effect";
2
+ import { Option } from "@effect-app/core/Option";
3
+ import { NonEmptyReadonlyArray, NonEmptyArray } from "effect/ReadonlyArray";
4
+ import { PureEnv } from "@effect-app/prelude/Pure";
5
+ import type { FixEnv } from "@effect-app/prelude/Pure";
6
+ import type { InvalidStateError, OptimisticConcurrencyException } from "../../errors.js";
7
+ import { NotFoundError } from "../../errors.js";
8
+ import type { Filter, PersistenceModelType } from "../../services/Store.js";
9
+ import type { RepositoryBaseC } from "../RepositoryBase.js";
10
+ import type { QueryBuilder } from "../Store/filterApi/query.js";
11
+ /**
12
+ * @tsplus fluent Repository get
13
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
14
+ */
15
+ export declare function get<T extends {
16
+ id: unknown;
17
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"]): import("effect/Effect").Effect<T, NotFoundError<ItemType>, never>;
18
+ /**
19
+ * @tsplus getter Repository log
20
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
21
+ */
22
+ export declare function log<T extends {
23
+ id: unknown;
24
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(_: RepositoryBaseC<T, PM, Evt, ItemType>): (evt: Evt) => import("@effect-app/prelude/Pure").PureLogT<any>;
25
+ /**
26
+ * TODO: project inside the db.
27
+ * @tsplus fluent Repository projectEffect
28
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
29
+ */
30
+ export declare function projectEffect<T extends {
31
+ id: unknown;
32
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S = PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
33
+ filter?: Filter<PM> | undefined;
34
+ collect?: ((t: PM) => Option<S>) | undefined;
35
+ limit?: number | undefined;
36
+ skip?: number | undefined;
37
+ }, E, R>): Effect<S[], E, R>;
38
+ export declare function projectEffect<T extends {
39
+ id: unknown;
40
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, U extends keyof PM, S = PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
41
+ filter?: QueryBuilder<PM> | undefined;
42
+ collect?: ((t: PM) => Option<S>) | undefined;
43
+ limit?: number | undefined;
44
+ skip?: number | undefined;
45
+ }, E, R>): Effect<Pick<PM, U>[], E, R>;
46
+ /**
47
+ * TODO: project inside the db.
48
+ * @tsplus fluent Repository project
49
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
50
+ */
51
+ export declare function project<T extends {
52
+ id: unknown;
53
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S = PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
54
+ filter?: Filter<PM>;
55
+ collect?: (t: PM) => Option<S>;
56
+ limit?: number;
57
+ skip?: number;
58
+ }): Effect<S[]>;
59
+ export declare function project<T extends {
60
+ id: unknown;
61
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, U extends keyof PM>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
62
+ filter?: QueryBuilder<PM>;
63
+ select: NonEmptyReadonlyArray<U>;
64
+ limit?: number;
65
+ skip?: number;
66
+ }): Effect<Pick<PM, U>[]>;
67
+ /**
68
+ * TODO: count inside the db.
69
+ * @tsplus fluent Repository project
70
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
71
+ */
72
+ export declare function count<T extends {
73
+ id: unknown;
74
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, filter?: Filter<PM>): import("effect/Effect").Effect<number & import("@effect-app/schema").NonNegativeIntBrand, never, never>;
75
+ /**
76
+ * @tsplus fluent Repository queryEffect
77
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
78
+ */
79
+ export declare function queryEffect<T extends {
80
+ id: unknown;
81
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
82
+ filter?: Filter<PM>;
83
+ collect?: (t: T) => Option<S>;
84
+ limit?: number;
85
+ skip?: number;
86
+ }, E, R>): import("effect/Effect").Effect<S[], E, R>;
87
+ /**
88
+ * @tsplus fluent Repository queryOneEffect
89
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
90
+ */
91
+ export declare function queryOneEffect<T extends {
92
+ id: unknown;
93
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
94
+ filter?: Filter<PM>;
95
+ }, E, R>): Effect<T, E | NotFoundError<ItemType>, R>;
96
+ export declare function queryOneEffect<T extends {
97
+ id: unknown;
98
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
99
+ filter?: Filter<PM>;
100
+ collect: (t: T) => Option<S>;
101
+ }, E, R>): Effect<S, E | NotFoundError<ItemType>, R>;
102
+ /**
103
+ * @tsplus fluent Repository query
104
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
105
+ */
106
+ export declare function query<T extends {
107
+ id: unknown;
108
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
109
+ filter?: Filter<PM>;
110
+ collect?: (t: T) => Option<S>;
111
+ limit?: number;
112
+ skip?: number;
113
+ }): import("effect/Effect").Effect<S[], never, never>;
114
+ /**
115
+ * @tsplus fluent Repository queryOne
116
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
117
+ */
118
+ export declare function queryOne<T extends {
119
+ id: unknown;
120
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
121
+ filter?: Filter<PM>;
122
+ collect: (t: T) => Option<S>;
123
+ }): Effect<S, NotFoundError<ItemType>>;
124
+ export declare function queryOne<T extends {
125
+ id: unknown;
126
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
127
+ filter?: Filter<PM>;
128
+ }): Effect<T, NotFoundError<ItemType>>;
129
+ /**
130
+ * @tsplus fluent Repository queryAndSaveOnePureEffect
131
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
132
+ */
133
+ export declare function queryAndSaveOnePureEffect<T extends {
134
+ id: unknown;
135
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
136
+ filter: Filter<PM>;
137
+ collect: (t: T) => Option<S>;
138
+ limit?: number;
139
+ skip?: number;
140
+ }, E, R>): <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S, S2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E | E2 | NotFoundError<ItemType>, R | Exclude<R2, {
141
+ env: PureEnv<Evt, S, S2>;
142
+ }>>;
143
+ export declare function queryAndSaveOnePureEffect<T extends {
144
+ id: unknown;
145
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
146
+ filter: Filter<PM>;
147
+ }, E, R>): <R2, A, E2, T2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E | E2 | NotFoundError<ItemType>, R | Exclude<R2, {
148
+ env: PureEnv<Evt, T, T2>;
149
+ }>>;
150
+ /**
151
+ * @tsplus fluent Repository queryAndSaveOnePure
152
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
153
+ */
154
+ export declare function queryAndSaveOnePure<T extends {
155
+ id: unknown;
156
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
157
+ filter: Filter<PM>;
158
+ collect: (t: T) => Option<S>;
159
+ limit?: number;
160
+ skip?: number;
161
+ }): <R2, A, E2, S2>(pure: Effect<A, E2, FixEnv<R2, Evt, S, S2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E2 | NotFoundError<ItemType>, Exclude<R2, {
162
+ env: PureEnv<Evt, S, S2>;
163
+ }>>;
164
+ export declare function queryAndSaveOnePure<T extends {
165
+ id: unknown;
166
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
167
+ filter: Filter<PM>;
168
+ }): <R2, A, E2, T2>(pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>) => Effect<A, InvalidStateError | OptimisticConcurrencyException | E2 | NotFoundError<ItemType>, Exclude<R2, {
169
+ env: PureEnv<Evt, T, T2>;
170
+ }>>;
171
+ /**
172
+ * @tsplus fluent Repository queryAndSavePureEffect
173
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
174
+ */
175
+ export declare function queryAndSavePureEffect<T extends {
176
+ id: unknown;
177
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
178
+ filter: Filter<PM>;
179
+ collect?: (t: T) => Option<S>;
180
+ limit?: number;
181
+ skip?: number;
182
+ }, E, R>): <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E | E2, R | Exclude<R2, {
183
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
184
+ }>>;
185
+ /**
186
+ * @tsplus fluent Repository queryAndSavePure
187
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
188
+ */
189
+ export declare function queryAndSavePure<T extends {
190
+ id: unknown;
191
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
192
+ filter: Filter<PM>;
193
+ collect?: (t: T) => Option<S>;
194
+ limit?: number;
195
+ skip?: number;
196
+ }): <R2, A, E2, S2 extends T>(pure: import("effect/Effect").Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E2, Exclude<R2, {
197
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
198
+ }>>;
199
+ /**
200
+ * @tsplus getter Repository saveManyWithPure
201
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
202
+ */
203
+ export declare function saveManyWithPure<T extends {
204
+ id: unknown;
205
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) => (items: Iterable<S1>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
206
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
207
+ }>>;
208
+ /**
209
+ * @tsplus fluent Repository byIdAndSaveWithPure
210
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
211
+ */
212
+ export declare function byIdAndSaveWithPure<T extends {
213
+ id: unknown;
214
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"]): <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, Exclude<R, {
215
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, T, S2>;
216
+ }>>;
217
+ /**
218
+ * NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
219
+ * @tsplus getter Repository handleByIdAndSaveWithPure
220
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
221
+ */
222
+ export declare function handleByIdAndSaveWithPure<T extends {
223
+ id: unknown;
224
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): <Req extends {
225
+ id: T["id"];
226
+ }, Context, R, A, E, S2 extends T>(pure: (req: Req, ctx: Context) => Effect<A, E, FixEnv<R, Evt, T, S2>>) => (req: Req, ctx: Context) => import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, Exclude<R, {
227
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, T, S2>;
228
+ }>>;
229
+ /**
230
+ * @tsplus fluent Repository saveManyWithPure_
231
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
232
+ */
233
+ export declare function saveManyWithPure_<R, T extends {
234
+ id: unknown;
235
+ }, PM extends PersistenceModelType<string>, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>): import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
236
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
237
+ }>>;
238
+ /**
239
+ * @tsplus fluent Repository saveWithPure_
240
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
241
+ */
242
+ export declare function saveWithPure_<R, T extends {
243
+ id: unknown;
244
+ }, PM extends PersistenceModelType<string>, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, item: S1, pure: Effect<A, E, FixEnv<R, Evt, S1, S2>>): import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
245
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1, S2>;
246
+ }>>;
247
+ export declare function saveAllWithEffectInt<T extends {
248
+ id: unknown;
249
+ }, PM extends PersistenceModelType<string>, P extends T, Evt, ItemType extends string, R, E, A>(self: RepositoryBaseC<T, PM, Evt, ItemType>, gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>): import("effect/Effect").Effect<A, InvalidStateError | OptimisticConcurrencyException | E, R>;
250
+ /**
251
+ * @tsplus fluent Repository queryAndSavePureEffectBatched
252
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
253
+ */
254
+ export declare function queryAndSavePureEffectBatched<T extends {
255
+ id: unknown;
256
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, R, E, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: Effect<{
257
+ filter: Filter<PM>;
258
+ collect?: (t: T) => Option<S>;
259
+ limit?: number;
260
+ skip?: number;
261
+ }, E, R>, batchSize?: number): <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E | E2, R | Exclude<R2, {
262
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
263
+ }>>;
264
+ /**
265
+ * @tsplus fluent Repository queryAndSavePureBatched
266
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
267
+ */
268
+ export declare function queryAndSavePureBatched<T extends {
269
+ id: unknown;
270
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string, S extends T = T>(self: RepositoryBaseC<T, PM, Evt, ItemType>, map: {
271
+ filter: Filter<PM>;
272
+ collect?: (t: T) => Option<S>;
273
+ limit?: number;
274
+ skip?: number;
275
+ }, batchSize?: number): <R2, A, E2, S2 extends T>(pure: import("effect/Effect").Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) => import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E2, Exclude<R2, {
276
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S[], S2[]>;
277
+ }>>;
278
+ /**
279
+ * @tsplus fluent Repository saveManyWithPureBatched
280
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
281
+ */
282
+ export declare function saveManyWithPureBatched<T extends {
283
+ id: unknown;
284
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, batchSize?: number): <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) => (items: Iterable<S1>) => import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
285
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
286
+ }>>;
287
+ /**
288
+ * @tsplus fluent Repository saveManyWithPureBatched_
289
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
290
+ */
291
+ export declare function saveManyWithPureBatched_<R, T extends {
292
+ id: unknown;
293
+ }, PM extends PersistenceModelType<string>, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>, batchSize?: number): import("effect/Effect").Effect<A[], InvalidStateError | OptimisticConcurrencyException | E, Exclude<R, {
294
+ env: import("@effect-app/prelude/Pure").PureEnv<Evt, S1[], S2[]>;
295
+ }>>;
296
+ /**
297
+ * @tsplus getter Repository save
298
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
299
+ */
300
+ export declare function save<T extends {
301
+ id: unknown;
302
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): (items_0: T, ...items_1: T[]) => import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException, never>;
303
+ /**
304
+ * @tsplus getter Repository saveWithEvents
305
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
306
+ */
307
+ export declare function saveWithEvents<T extends {
308
+ id: unknown;
309
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(self: RepositoryBaseC<T, PM, Evt, ItemType>): (events: Iterable<Evt>) => (items_0: T, ...items_1: T[]) => import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException, never>;
310
+ /**
311
+ * @tsplus fluent Repository updateWithEffect
312
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
313
+ */
314
+ export declare function itemUpdateWithEffect<R, E, T extends {
315
+ id: string;
316
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(repo: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"], mod: (item: T) => Effect<T, E, R>): import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException | E | NotFoundError<ItemType>, R>;
317
+ /**
318
+ * @tsplus fluent Repository update
319
+ * @tsplus location "@effect-app/infra/services/Repository/ext"
320
+ */
321
+ export declare function itemUpdate<T extends {
322
+ id: string;
323
+ }, PM extends PersistenceModelType<string>, Evt, ItemType extends string>(repo: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"], mod: (item: T) => T): import("effect/Effect").Effect<void, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType>, never>;
324
+ //# sourceMappingURL=ext.d.ts.map