effect-app 4.0.0-beta.248 → 4.0.0-beta.249

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 (123) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/Emailer.d.ts +51 -0
  3. package/dist/Emailer.d.ts.map +1 -0
  4. package/dist/Emailer.js +7 -0
  5. package/dist/Model/Repository/Registry.d.ts +21 -0
  6. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  7. package/dist/Model/Repository/Registry.js +18 -0
  8. package/dist/Model/Repository/ext.d.ts +60 -0
  9. package/dist/Model/Repository/ext.d.ts.map +1 -0
  10. package/dist/Model/Repository/ext.js +122 -0
  11. package/dist/Model/Repository/internal/internal.d.ts +62 -0
  12. package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
  13. package/dist/Model/Repository/internal/internal.js +413 -0
  14. package/dist/Model/Repository/legacy.d.ts +21 -0
  15. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  16. package/dist/Model/Repository/legacy.js +2 -0
  17. package/dist/Model/Repository/makeRepo.d.ts +53 -0
  18. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  19. package/dist/Model/Repository/makeRepo.js +27 -0
  20. package/dist/Model/Repository/service.d.ts +97 -0
  21. package/dist/Model/Repository/service.d.ts.map +1 -0
  22. package/dist/Model/Repository/service.js +2 -0
  23. package/dist/Model/Repository/validation.d.ts +71 -0
  24. package/dist/Model/Repository/validation.d.ts.map +1 -0
  25. package/dist/Model/Repository/validation.js +32 -0
  26. package/dist/Model/Repository.d.ts +7 -0
  27. package/dist/Model/Repository.d.ts.map +1 -0
  28. package/dist/Model/Repository.js +7 -0
  29. package/dist/Model/dsl.d.ts +33 -0
  30. package/dist/Model/dsl.d.ts.map +1 -0
  31. package/dist/Model/dsl.js +43 -0
  32. package/dist/Model/filter/filterApi.d.ts +30 -0
  33. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  34. package/dist/Model/filter/filterApi.js +2 -0
  35. package/dist/Model/filter/types/errors.d.ts +29 -0
  36. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  37. package/dist/Model/filter/types/errors.js +2 -0
  38. package/dist/Model/filter/types/fields.d.ts +15 -0
  39. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  40. package/dist/Model/filter/types/fields.js +2 -0
  41. package/dist/Model/filter/types/path/common.d.ts +316 -0
  42. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  43. package/dist/Model/filter/types/path/common.js +2 -0
  44. package/dist/Model/filter/types/path/eager.d.ts +95 -0
  45. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  46. package/dist/Model/filter/types/path/eager.js +31 -0
  47. package/dist/Model/filter/types/path/index.d.ts +4 -0
  48. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  49. package/dist/Model/filter/types/path/index.js +3 -0
  50. package/dist/Model/filter/types/utils.d.ts +79 -0
  51. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  52. package/dist/Model/filter/types/utils.js +2 -0
  53. package/dist/Model/filter/types/validator.d.ts +30 -0
  54. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  55. package/dist/Model/filter/types/validator.js +2 -0
  56. package/dist/Model/filter/types.d.ts +5 -0
  57. package/dist/Model/filter/types.d.ts.map +1 -0
  58. package/dist/Model/filter/types.js +7 -0
  59. package/dist/Model/query/dsl.d.ts +446 -0
  60. package/dist/Model/query/dsl.d.ts.map +1 -0
  61. package/dist/Model/query/dsl.js +342 -0
  62. package/dist/Model/query/new-kid-interpreter.d.ts +136 -0
  63. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  64. package/dist/Model/query/new-kid-interpreter.js +336 -0
  65. package/dist/Model/query.d.ts +15 -0
  66. package/dist/Model/query.d.ts.map +1 -0
  67. package/dist/Model/query.js +3 -0
  68. package/dist/Model.d.ts +5 -0
  69. package/dist/Model.d.ts.map +1 -0
  70. package/dist/Model.js +5 -0
  71. package/dist/QueueMaker.d.ts +13 -0
  72. package/dist/QueueMaker.d.ts.map +1 -0
  73. package/dist/QueueMaker.js +4 -0
  74. package/dist/RequestContext.d.ts +103 -0
  75. package/dist/RequestContext.d.ts.map +1 -0
  76. package/dist/RequestContext.js +49 -0
  77. package/dist/Store.d.ts +147 -0
  78. package/dist/Store.d.ts.map +1 -0
  79. package/dist/Store.js +95 -0
  80. package/dist/index.d.ts +3 -1
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +3 -1
  83. package/dist/runtime.d.ts +19 -0
  84. package/dist/runtime.d.ts.map +1 -0
  85. package/dist/runtime.js +40 -0
  86. package/dist/toast.d.ts +51 -0
  87. package/dist/toast.d.ts.map +1 -0
  88. package/dist/toast.js +34 -0
  89. package/dist/withToast.d.ts +30 -0
  90. package/dist/withToast.d.ts.map +1 -0
  91. package/dist/withToast.js +64 -0
  92. package/package.json +113 -1
  93. package/src/Emailer.ts +51 -0
  94. package/src/Model/Repository/Registry.ts +34 -0
  95. package/src/Model/Repository/ext.ts +375 -0
  96. package/src/Model/Repository/internal/internal.ts +708 -0
  97. package/src/Model/Repository/legacy.ts +29 -0
  98. package/src/Model/Repository/makeRepo.ts +144 -0
  99. package/src/Model/Repository/service.ts +639 -0
  100. package/src/Model/Repository/validation.ts +31 -0
  101. package/src/Model/Repository.ts +6 -0
  102. package/src/Model/dsl.ts +129 -0
  103. package/src/Model/filter/filterApi.ts +60 -0
  104. package/src/Model/filter/types/errors.ts +47 -0
  105. package/src/Model/filter/types/fields.ts +50 -0
  106. package/src/Model/filter/types/path/common.ts +404 -0
  107. package/src/Model/filter/types/path/eager.ts +297 -0
  108. package/src/Model/filter/types/path/index.ts +4 -0
  109. package/src/Model/filter/types/utils.ts +128 -0
  110. package/src/Model/filter/types/validator.ts +46 -0
  111. package/src/Model/filter/types.ts +6 -0
  112. package/src/Model/query/dsl.ts +2546 -0
  113. package/src/Model/query/new-kid-interpreter.ts +484 -0
  114. package/src/Model/query.ts +13 -0
  115. package/src/Model.ts +4 -0
  116. package/src/QueueMaker.ts +19 -0
  117. package/src/RequestContext.ts +62 -0
  118. package/src/Store.ts +243 -0
  119. package/src/index.ts +2 -0
  120. package/src/runtime.ts +56 -0
  121. package/src/toast.ts +54 -0
  122. package/src/withToast.ts +133 -0
  123. package/test/dist/rpc-dynamic-middleware.test.d.ts.map +1 -0
@@ -0,0 +1,413 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import * as Equivalence from "effect/Equivalence";
3
+ import { flow, pipe } from "effect/Function";
4
+ import * as Pipeable from "effect/Pipeable";
5
+ import * as PubSub from "effect/PubSub";
6
+ import * as Result from "effect/Result";
7
+ import * as SchemaAST from "effect/SchemaAST";
8
+ import * as Unify from "effect/Unify";
9
+ import * as Array from "../../../Array.js";
10
+ import { toNonEmptyArray } from "../../../Array.js";
11
+ import * as Chunk from "../../../Chunk.js";
12
+ import { NotFoundError } from "../../../client/errors.js";
13
+ import * as Context from "../../../Context.js";
14
+ import * as Effect from "../../../Effect.js";
15
+ import { flatMapOption } from "../../../Effect.js";
16
+ import * as Option from "../../../Option.js";
17
+ import * as S from "../../../Schema.js";
18
+ import { NonNegativeInt } from "../../../Schema.js";
19
+ import { ContextMap, StoreMaker } from "../../../Store.js";
20
+ import * as Q from "../../query.js";
21
+ import { ValidationError, ValidationResult } from "../validation.js";
22
+ const dedupe = Array.dedupeWith(Equivalence.String);
23
+ /**
24
+ * A base implementation to create a repository.
25
+ */
26
+ export function makeRepoInternal() {
27
+ return (name, schema, mapFrom, mapTo, idKey) => {
28
+ function mapToPersistenceModel(e, getEtag) {
29
+ return mapTo(e, getEtag(e[idKey]));
30
+ }
31
+ function mapReverse({ _etag, ...e }, setEtag) {
32
+ setEtag(e[idKey], _etag);
33
+ return mapFrom(e);
34
+ }
35
+ const mkStore = makeStore()(name, schema, mapTo, idKey);
36
+ function make(args) {
37
+ return Effect
38
+ .gen(function* () {
39
+ const rctx = args.schemaContext ?? Context.empty();
40
+ const provideRctx = Effect.provide(rctx);
41
+ const encodeMany = flow(S.encodeEffect(S.Array(schema)), provideRctx, Effect.withSpan("encodeMany", { attributes: { "app.entity": name } }, { captureStackTrace: false }));
42
+ const decode = flow(S.decodeEffectConcurrently(schema), provideRctx);
43
+ const decodeMany = flow(S.decodeEffectConcurrently(S.Array(schema)), provideRctx);
44
+ const store = yield* mkStore(args.makeInitial, args.config);
45
+ const etags = new Map();
46
+ const cms = Effect.serviceOption(ContextMap).pipe(Effect.map(Option.match({
47
+ onNone: () => ({
48
+ get: (id) => etags.get(`${name}.${id}`),
49
+ set: (id, etag) => {
50
+ const key = `${name}.${id}`;
51
+ if (etag === undefined) {
52
+ etags.delete(key);
53
+ }
54
+ else {
55
+ etags.set(key, etag);
56
+ }
57
+ }
58
+ }),
59
+ onSome: (contextMap) => ({
60
+ get: (id) => contextMap.get(`${name}.${id}`),
61
+ set: (id, etag) => contextMap.set(`${name}.${id}`, etag)
62
+ })
63
+ })));
64
+ const pub = "publishEvents" in args
65
+ ? args.publishEvents
66
+ : () => Effect.void;
67
+ const changeFeed = yield* PubSub.unbounded();
68
+ const allE = cms
69
+ .pipe(Effect.flatMap((cm) => Effect.map(store.all, (_) => _.map((_) => mapReverse(_, cm.set)))));
70
+ const all = Effect
71
+ .flatMap(allE, (_) => decodeMany(_).pipe(Effect.orDie))
72
+ .pipe(Effect.map((_) => _), Effect.withSpan("Repository.all", {
73
+ kind: "client",
74
+ attributes: { "app.entity": name }
75
+ }, { captureStackTrace: false }));
76
+ const fieldsSchema = schema;
77
+ // assumes the id field never needs a service...
78
+ const i = ("fields" in fieldsSchema ? S.Struct(fieldsSchema["fields"]) : schema)
79
+ .pipe((_) => {
80
+ let ast = _.ast;
81
+ if (ast._tag === "Declaration")
82
+ ast = ast.typeParameters[0];
83
+ const pickIdFromAst = (a) => {
84
+ // Unwrap Declaration (e.g. TaggedClass) to get the underlying Objects AST
85
+ let inner = a;
86
+ if (inner._tag === "Declaration")
87
+ inner = inner.typeParameters[0];
88
+ // Pick from the original AST to preserve the full encoding chain (e.g. decodeTo transformations).
89
+ // Using toEncoded would lose transformation info needed to encode Type -> Encoded.
90
+ if (SchemaAST.isObjects(inner)) {
91
+ const field = inner.propertySignatures.find((_) => _.name === idKey);
92
+ if (field) {
93
+ return S.Struct({ [idKey]: S.make(field.type) });
94
+ }
95
+ }
96
+ return S.make(a);
97
+ };
98
+ return ast._tag === "Union"
99
+ // we need to get the Objects (TypeLiteral), in case of class it has encoding chain...
100
+ ? S.Union(ast.types.map((_) => pickIdFromAst(_)))
101
+ : pickIdFromAst(ast);
102
+ });
103
+ const encodeId = flow(S.encodeEffect(i), provideRctx);
104
+ const encodeIdOnly = (id) => encodeId({ [idKey]: id }).pipe(Effect.map((_) => _[idKey]));
105
+ const findEId = Effect.fnUntraced(function* (id) {
106
+ yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
107
+ return yield* Effect.flatMap(store.find(id), (item) => Effect.gen(function* () {
108
+ const { set } = yield* cms;
109
+ return item.pipe(Option.map((_) => mapReverse(_, set)));
110
+ }));
111
+ });
112
+ // TODO: select the particular field, instead of as struct
113
+ const findE = Effect.fnUntraced(function* (id) {
114
+ yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
115
+ return yield* pipe(encodeId({ [idKey]: id }), Effect.orDie, Effect.map((_) => _[idKey]), Effect.flatMap(findEId));
116
+ });
117
+ const find = Effect.fn("Repository.find", {
118
+ kind: "client",
119
+ attributes: { "app.entity": name }
120
+ })(function* (id) {
121
+ yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
122
+ return yield* flatMapOption(findE(id), (_) => Effect.orDie(decode(_)));
123
+ });
124
+ const saveAllE = (a) => flatMapOption(Effect
125
+ .sync(() => toNonEmptyArray([...a])), (a) => Effect.gen(function* () {
126
+ const { get, set } = yield* cms;
127
+ const items = a.map((_) => mapToPersistenceModel(_, get));
128
+ const ret = yield* store.batchSet(items);
129
+ ret.forEach((_) => set(_[idKey], _._etag));
130
+ }))
131
+ .pipe(Effect.asVoid);
132
+ const saveAll = (a) => encodeMany(Array.fromIterable(a))
133
+ .pipe(Effect.orDie, Effect.andThen(saveAllE));
134
+ const saveAndPublish = Effect.fn("Repository.saveAndPublish", { attributes: { "app.entity": name } })(function* (items, events = []) {
135
+ const it = Chunk.fromIterable(items);
136
+ const evts = [...events];
137
+ yield* Effect.annotateCurrentSpan({
138
+ "app.entity.ids": Chunk.map(it, (_) => _[idKey]),
139
+ "app.event.count": evts.length
140
+ });
141
+ return yield* saveAll(it)
142
+ .pipe(Effect.andThen(Effect.sync(() => toNonEmptyArray(evts))),
143
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
144
+ (_) => flatMapOption(_, pub), Effect.andThen(PubSub.publish(changeFeed, [Chunk.toArray(it), "save"])), Effect.asVoid);
145
+ });
146
+ const removeAndPublish = Effect.fn("Repository.removeAndPublish", { attributes: { "app.entity": name } })(function* (a, events = []) {
147
+ const { set } = yield* cms;
148
+ const it = [...a];
149
+ const evts = [...events];
150
+ yield* Effect.annotateCurrentSpan({
151
+ "app.entity.ids": it.map((_) => _[idKey]),
152
+ "app.event.count": evts.length
153
+ });
154
+ const items = yield* encodeMany(it).pipe(Effect.orDie);
155
+ if (Array.isReadonlyArrayNonEmpty(items)) {
156
+ yield* store.batchRemove(items.map((_) => (_[idKey])), args.config?.partitionValue?.(items[0]));
157
+ for (const e of items) {
158
+ set(e[idKey], undefined);
159
+ }
160
+ yield* Effect
161
+ .sync(() => toNonEmptyArray(evts))
162
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
163
+ .pipe((_) => flatMapOption(_, pub));
164
+ yield* PubSub.publish(changeFeed, [it, "remove"]);
165
+ }
166
+ });
167
+ const removeById = Effect.fn("Repository.removeById", { attributes: { "app.entity": name } })(function* (idOrIds) {
168
+ const ids = globalThis.Array.isArray(idOrIds)
169
+ ? idOrIds
170
+ : [idOrIds];
171
+ if (!Array.isReadonlyArrayNonEmpty(ids)) {
172
+ return;
173
+ }
174
+ const { set } = yield* cms;
175
+ const eids = yield* Effect.forEach(ids, (_) => encodeIdOnly(_)).pipe(Effect.orDie);
176
+ yield* Effect.annotateCurrentSpan({ "app.entity.ids": eids });
177
+ yield* store.batchRemove(eids);
178
+ for (const id of eids) {
179
+ set(id, undefined);
180
+ }
181
+ yield* PubSub.publish(changeFeed, [[], "remove"]);
182
+ });
183
+ const parseMany = Effect.fn("parseMany", {
184
+ attributes: { "app.entity": name, "app.query.mode": "transform" }
185
+ })(function* (items) {
186
+ const cm = yield* cms;
187
+ return yield* decodeMany(items.map((_) => mapReverse(_, cm.set))).pipe(Effect.orDie);
188
+ });
189
+ const decodeManyCache = new WeakMap();
190
+ const getDecodeMany = (s) => {
191
+ let dec = decodeManyCache.get(s);
192
+ if (!dec) {
193
+ dec = S.decodeEffectConcurrently(S.Array(s));
194
+ decodeManyCache.set(s, dec);
195
+ }
196
+ return dec;
197
+ };
198
+ const parseMany2 = Effect.fn("parseMany", {
199
+ attributes: { "app.entity": name, "app.query.mode": "transform" }
200
+ })(function* (items, schema) {
201
+ const cm = yield* cms;
202
+ return yield* getDecodeMany(schema)(items.map((_) => mapReverse(_, cm.set))).pipe(Effect.orDie);
203
+ });
204
+ const filter = (args) => store
205
+ .filter(
206
+ // always enforce id and _etag because they are system fields, required for etag tracking etc
207
+ {
208
+ ...args,
209
+ select: args.select
210
+ ? dedupe([...args.select, idKey, "_etag"])
211
+ : undefined
212
+ })
213
+ .pipe(Effect.tap((items) => Effect.map(cms, ({ set }) => items.forEach((_) => set(_[idKey], _._etag)))));
214
+ // TODO: For raw we should use S.from, and drop the R...
215
+ const query = ((q) => {
216
+ const a = Q.toFilter(q, schema);
217
+ // Mode dispatch — see `Q.project` JSDoc for the contract:
218
+ // aggregate: GROUP BY + aggregate functions at DB level; decode raw rows with schema; SchemaError surfaces.
219
+ // project : decode raw encoded rows with schema; no PM reverse-mapping; SchemaError surfaces.
220
+ // collect : same as project, but schema yields Option and None rows are dropped.
221
+ // transform: PM reverse-map (re-inject _etag/PM state from cms cache) then decode; orDie.
222
+ const eff = a.mode === "aggregate"
223
+ ? store
224
+ // `a.select` contains `{ key, aggregate }` items not expressible in FilterFunc<Encoded, U>'s
225
+ // `U extends keyof Encoded` generic. Cast is unavoidable until FilterFunc supports aggregate mode.
226
+ .filter(a)
227
+ // Decode raw aggregate rows directly — no PM reverse-mapping, no id/_etag needed.
228
+ .pipe(Effect.andThen(flow(S.decodeEffectConcurrently(S.Array(a.schema ?? schema)), provideRctx, Effect.withSpan("parseMany", {
229
+ attributes: { "app.entity": name, "app.query.mode": "aggregate" }
230
+ }))))
231
+ : a.mode === "project"
232
+ ? filter(a)
233
+ // TODO: mapFrom but need to support per field and dependencies
234
+ .pipe(Effect.andThen(flow(S.decodeEffectConcurrently(S.Array(a.schema ?? schema)), provideRctx, Effect.withSpan("parseMany", {
235
+ attributes: { "app.entity": name, "app.query.mode": "project" }
236
+ }))))
237
+ : a.mode === "collect"
238
+ ? filter(a)
239
+ // TODO: mapFrom but need to support per field and dependencies
240
+ .pipe(Effect.flatMap(flow(S.decodeEffectConcurrently(S.Array(a.schema)), Effect.map(Array.getSomes), provideRctx, Effect.withSpan("parseMany", {
241
+ attributes: { "app.entity": name, "app.query.mode": "collect" }
242
+ }))))
243
+ : Effect.flatMap(filter(a), (_) => Unify.unify(a.schema
244
+ // TODO: partial may not match?
245
+ ? parseMany2(_, a.schema)
246
+ : parseMany(_)));
247
+ return pipe(a.ttype === "one"
248
+ ? Effect.flatMap(eff, flow(Array.head, Option.match({
249
+ onNone: () => Effect.fail(new NotFoundError({ id: "query", /* TODO */ type: name })),
250
+ onSome: Effect.succeed
251
+ })))
252
+ : a.ttype === "count"
253
+ ? Effect
254
+ .map(eff, (_) => NonNegativeInt(_.length))
255
+ .pipe(Effect.orDie)
256
+ : eff, Effect.tap((r) => Effect.annotateCurrentSpan({
257
+ "app.query.ttype": a.ttype,
258
+ "app.query.mode": a.mode,
259
+ "db.response.returned_rows": Array.isArray(r) ? r.length : 1
260
+ })), Effect.withSpan("Repository.query", {
261
+ kind: "client",
262
+ attributes: { "app.entity": name }
263
+ }, { captureStackTrace: false }));
264
+ });
265
+ const validateSample = Effect.fn("Repository.validateSample", { attributes: { "app.entity": name } })(function* (options) {
266
+ const percentage = options?.percentage ?? 0.1; // default 10%
267
+ const maxItems = options?.maxItems;
268
+ // 1. get all IDs with projection (bypasses main schema decode)
269
+ const allIds = yield* store
270
+ .filter({
271
+ t: null,
272
+ select: [idKey]
273
+ })
274
+ .pipe(Effect.withSpan("Repository.filter", {
275
+ kind: "client",
276
+ attributes: { "app.entity": name }
277
+ }, { captureStackTrace: false }));
278
+ // 2. random subset
279
+ const shuffled = [...allIds].sort(() => Math.random() - 0.5);
280
+ const sampleSize = Math.min(maxItems ?? Infinity, Math.ceil(allIds.length * percentage));
281
+ const sample = shuffled.slice(0, sampleSize);
282
+ // 3. validate each item
283
+ const errors = [];
284
+ for (const item of sample) {
285
+ const id = item[idKey];
286
+ const rawResult = yield* store.find(id).pipe(Effect.withSpan("Repository.find", {
287
+ kind: "client",
288
+ attributes: { "app.entity": name, "app.entity.id": id }
289
+ }, { captureStackTrace: false }));
290
+ if (Option.isNone(rawResult))
291
+ continue;
292
+ const rawData = rawResult.value;
293
+ const jitMResult = mapFrom(rawData); // apply jitM
294
+ const decodeResult = yield* S.decodeEffectConcurrently(schema)(jitMResult).pipe(Effect.result, provideRctx);
295
+ if (Result.isFailure(decodeResult)) {
296
+ errors.push(ValidationError.make({
297
+ id,
298
+ rawData,
299
+ jitMResult,
300
+ error: decodeResult.failure
301
+ }));
302
+ }
303
+ }
304
+ return ValidationResult.make({
305
+ total: NonNegativeInt(allIds.length),
306
+ sampled: NonNegativeInt(sample.length),
307
+ valid: NonNegativeInt(sample.length - errors.length),
308
+ errors
309
+ });
310
+ });
311
+ const r = {
312
+ changeFeed,
313
+ itemType: name,
314
+ idKey,
315
+ find,
316
+ all,
317
+ saveAndPublish,
318
+ removeAndPublish,
319
+ removeById,
320
+ seedNamespace: (namespace) => store.seedNamespace(namespace),
321
+ validateSample,
322
+ queryRaw(schema, q) {
323
+ const dec = S.decodeEffectConcurrently(S.Array(schema));
324
+ return store.queryRaw(q).pipe(Effect.flatMap(dec), Effect.withSpan("Repository.queryRaw", {
325
+ kind: "client",
326
+ attributes: { "app.entity": name }
327
+ }, { captureStackTrace: false }));
328
+ },
329
+ query(q) {
330
+ // eslint-disable-next-line prefer-rest-params
331
+ return query(typeof q === "function" ? Pipeable.pipeArguments(Q.make(), arguments) : q);
332
+ },
333
+ /**
334
+ * @internal
335
+ */
336
+ mapped: (schema) => {
337
+ const dec = S.decodeEffectConcurrently(schema);
338
+ const encMany = S.encodeEffect(S.Array(schema));
339
+ const decMany = S.decodeEffectConcurrently(S.Array(schema));
340
+ const spanAttrs = { kind: "client", attributes: { "app.entity": name } };
341
+ return {
342
+ all: allE.pipe(Effect.flatMap(decMany), Effect.map((_) => _), Effect.withSpan("Repository.mapped.all", spanAttrs, { captureStackTrace: false })),
343
+ find: (id) => flatMapOption(findE(id), dec).pipe(Effect.withSpan("Repository.mapped.find", {
344
+ ...spanAttrs,
345
+ attributes: { ...spanAttrs.attributes, "app.entity.id": id }
346
+ }, { captureStackTrace: false })),
347
+ // query: (q: any) => {
348
+ // const a = Q.toFilter(q)
349
+ // return filter(a)
350
+ // .pipe(
351
+ // Effect.flatMap(decMany),
352
+ // Effect.map((_) => _ as any[]),
353
+ // Effect.withSpan("Repository.mapped.query [effect-app/infra]", {
354
+ // captureStackTrace: false,
355
+ // attributes: {
356
+ // "repository.model_name": name,
357
+ // query: { ...a, schema: a.schema ? "__SCHEMA__" : a.schema, filter: a.filter.build() }
358
+ // }
359
+ // })
360
+ // )
361
+ // },
362
+ save: (...xes) => Effect.flatMap(encMany(xes), (_) => saveAllE(_)).pipe(Effect.withSpan("Repository.mapped.save", spanAttrs, { captureStackTrace: false }))
363
+ };
364
+ }
365
+ };
366
+ return r;
367
+ })
368
+ .pipe(Effect
369
+ // .withSpan("Repository.make [effect-app/infra]", { attributes: { "repository.model_name": name } })
370
+ .withLogSpan("Repository.make: " + name));
371
+ }
372
+ return {
373
+ make,
374
+ Q: Q.make()
375
+ };
376
+ };
377
+ }
378
+ const pluralize = (s) => s.endsWith("s")
379
+ ? s + "es"
380
+ : s.endsWith("y")
381
+ ? s.substring(0, s.length - 1) + "ies"
382
+ : s + "s";
383
+ export function makeStore() {
384
+ return (name, schema, mapTo, idKey) => {
385
+ function makeStore(makeInitial, config) {
386
+ function encodeToEncoded() {
387
+ const getEtag = () => undefined;
388
+ return (t) => S.encodeEffect(schema)(t).pipe(Effect.orDie, Effect.map((_) => mapToPersistenceModel(_, getEtag)));
389
+ }
390
+ function mapToPersistenceModel(e, getEtag) {
391
+ return mapTo(e, getEtag(e[idKey]));
392
+ }
393
+ return Effect.gen(function* () {
394
+ const { make } = yield* StoreMaker;
395
+ const store = yield* make(pluralize(name), idKey, makeInitial
396
+ ? makeInitial
397
+ .pipe(Effect.flatMap(Effect.forEach(encodeToEncoded())), Effect.withSpan("Repository.makeInitial", {
398
+ attributes: { "app.entity": name }
399
+ }, {
400
+ captureStackTrace: false
401
+ }))
402
+ : undefined, {
403
+ ...config,
404
+ partitionValue: config?.partitionValue
405
+ ?? ((_) => "primary") /*(isIntegrationEvent(r) ? r.companyId : r.id*/
406
+ });
407
+ return store;
408
+ });
409
+ }
410
+ return makeStore;
411
+ };
412
+ }
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9pbnRlcm5hbC9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN6RCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFBO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0sb0JBQW9CLENBQUE7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0sb0JBQW9CLENBQUE7QUFDNUMsT0FBTyxLQUFLLENBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBZ0UsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEgsT0FBTyxLQUFLLENB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
@@ -0,0 +1,21 @@
1
+ import type { OptimisticConcurrencyException } from "../../client/errors.js";
2
+ import type * as Effect from "../../Effect.js";
3
+ import type * as Option from "../../Option.js";
4
+ import type * as S from "../../Schema.js";
5
+ export interface Mapped1<A, IdKey extends keyof A, R> {
6
+ all: Effect.Effect<A[], S.SchemaError, R>;
7
+ save: (...xes: readonly A[]) => Effect.Effect<void, OptimisticConcurrencyException | S.SchemaError, R>;
8
+ find: (id: A[IdKey]) => Effect.Effect<Option.Option<A>, S.SchemaError, R>;
9
+ }
10
+ export interface Mapped2<A, R> {
11
+ all: Effect.Effect<A[], S.SchemaError, R>;
12
+ }
13
+ export interface Mapped<Encoded> {
14
+ <A, R, IdKey extends keyof A>(schema: S.Codec<A, Encoded, R>): Mapped1<A, IdKey, R>;
15
+ <A, Encoded2, R>(schema: S.Codec<A, Encoded2, R>): Mapped2<A, R>;
16
+ }
17
+ export interface MM<Repo, Encoded> {
18
+ <A, R, IdKey extends keyof A>(schema: S.Codec<A, Encoded, R>): Effect.Effect<Mapped1<A, IdKey, R>, never, Repo>;
19
+ <A, Encoded2, R>(schema: S.Codec<A, Encoded2, R>): Effect.Effect<Mapped2<A, R>, never, Repo>;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9sZWdhY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM1RSxPQUFPLEtBQUssS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxLQUFLLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sS0FBSyxLQUFLLENBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUV6QyxNQUFNLFdBQVcsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNsRCxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN0RyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQzFFO0FBR0QsTUFBTSxXQUFXLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQixHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQzFDO0FBRUQsTUFBTSxXQUFXLE1BQU0sQ0FBQyxPQUFPO0lBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUVuRixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtDQUNqRTtBQUVELE1BQU0sV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU87SUFDL0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRS9HLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0NBQzdGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/legacy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,iBAAiB,CAAA;AAEzC,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,CAAC;IAClD,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,8BAA8B,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACtG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;CAC1E;AAGD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,MAAM,CAAC,OAAO;IAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAEnF,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO;IAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAE/G,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAC7F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL01vZGVsL1JlcG9zaXRvcnkvbGVnYWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,53 @@
1
+ import type { NonEmptyReadonlyArray } from "../../Array.js";
2
+ import type * as Context from "../../Context.js";
3
+ import * as Effect from "../../Effect.js";
4
+ import type * as S from "../../Schema.js";
5
+ import type { StoreConfig, StoreMaker } from "../../Store.js";
6
+ import type { FieldValues } from "../filter/types.js";
7
+ import { type ExtendedRepository } from "./ext.js";
8
+ import { RepositoryRegistry } from "./Registry.js";
9
+ import type { Repository } from "./service.js";
10
+ export interface RepositoryOptions<IdKey extends keyof T & keyof Encoded, Encoded extends FieldValues, T, ItemType extends string, Evt = never, RPublish = never, E = never, RInitial = never, RCtx = never, RSchema = never> {
11
+ /**
12
+ * Specify the idKey of the Type side, if it's different from the default "id".
13
+ * Does not change the Encoded side, which is always "id" to support database drivers.
14
+ * At this time as queries are operating on the Encoded side, the queries must still specify "id" regardless.
15
+ */
16
+ idKey: IdKey;
17
+ /**
18
+ * just in time Migration: for complex migrations that aren't just default simple values
19
+ * use the config.defaultValues instead for simple default values
20
+ */
21
+ jitM?: (pm: Encoded) => Encoded;
22
+ config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
23
+ partitionValue?: (e?: Encoded) => string;
24
+ };
25
+ /**
26
+ * Optional handler to be able to publish events after successfull save.
27
+ */
28
+ publishEvents?: (evt: NonEmptyReadonlyArray<Evt>) => Effect.Effect<void, never, RPublish>;
29
+ /**
30
+ * Optional creator for initial data in the table when it's created for the first itme.
31
+ */
32
+ makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined;
33
+ /**
34
+ * Optional context to be provided to Schema decode/encode.
35
+ * Useful for effectful transformations like XWithItems, where items is a transformation retrieving elements from another database table or other source.
36
+ */
37
+ schemaContext?: Context.Context<RCtx>;
38
+ overrides?: (repo: Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish, RCtx>) => Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish, RCtx>;
39
+ }
40
+ /**
41
+ * Create a repository instance.
42
+ * @param itemType an identifier used for the table name and e.g NotFoundError
43
+ * @param schema the Schema used for this Repository
44
+ * @param options @see RepositoryOptions
45
+ * @returns a Repository
46
+ */
47
+ export declare const makeRepo: {
48
+ <ItemType extends string, RSchema, Encoded extends FieldValues, T, IdKey extends keyof T & keyof Encoded, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Codec<T, Encoded, RSchema>, options: RepositoryOptions<IdKey, Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry>;
49
+ <ItemType extends string, RSchema, Encoded extends FieldValues, T extends {
50
+ id: unknown;
51
+ }, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Codec<T, Encoded, RSchema>, options: Omit<RepositoryOptions<"id", Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>, "idKey">): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, "id", Exclude<RSchema, RCtx>, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry>;
52
+ };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Nb2RlbC9SZXBvc2l0b3J5L21ha2VSZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDM0QsT0FBTyxLQUFLLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxLQUFLLEtBQUssQ0FBQyxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBYyxNQUFNLFVBQVUsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTlDLE1BQU0sV0FBVyxpQkFBaUIsQ0FDaEMsS0FBSyxTQUFTLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxFQUNyQyxPQUFPLFNBQVMsV0FBVyxFQUMzQixDQUFDLEVBQ0QsUUFBUSxTQUFTLE1BQU0sRUFDdkIsR0FBRyxHQUFHLEtBQUssRUFDWCxRQUFRLEdBQUcsS0FBSyxFQUNoQixDQUFDLEdBQUcsS0FBSyxFQUNULFFBQVEsR0FBRyxLQUFLLEVBQ2hCLElBQUksR0FBRyxLQUFLLEVBQ1osT0FBTyxHQUFHLEtBQUs7SUFFZjs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLEtBQUssQ0FBQTtJQUNaOzs7T0FHRztJQUNILElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxPQUFPLENBQUE7SUFDL0IsTUFB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeRepo.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/makeRepo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ import * as Effect from "../../Effect.js";
7
+ import { extendRepo } from "./ext.js";
8
+ import { makeRepoInternal } from "./internal/internal.js";
9
+ import { RepositoryRegistry } from "./Registry.js";
10
+ /**
11
+ * Create a repository instance.
12
+ * @param itemType an identifier used for the table name and e.g NotFoundError
13
+ * @param schema the Schema used for this Repository
14
+ * @param options @see RepositoryOptions
15
+ * @returns a Repository
16
+ */
17
+ export const makeRepo = (itemType, schema, options) => Effect.gen(function* () {
18
+ const mkRepo = makeRepoInternal()(itemType, schema, options?.jitM ? (pm) => options.jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), options.idKey ?? "id");
19
+ let r = yield* mkRepo.make(options);
20
+ if (options.overrides)
21
+ r = options.overrides(r);
22
+ const repo = extendRepo(r);
23
+ const registry = yield* RepositoryRegistry;
24
+ registry.register(itemType, repo);
25
+ return repo;
26
+ });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9tYWtlUmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELDBEQUEwRDtBQUMxRCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBTXZELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFJekMsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBZ0RsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBd0NqQixDQVlGLFFBQWtCLEVBQ2xCLE1BQW9DLEVBQ3BDLE9BRUMsRUFDRCxFQUFFLENBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLEVBQU8sQ0FDcEMsUUFBUSxFQUNSLE1BQU0sRUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDdEQsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDL0IsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFXLENBQzdCLENBQUE7SUFDRCxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUE4QixPQUFjLENBQUMsQ0FBQTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxTQUFTO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0MsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFBO0lBQzFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pDLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFDLENBQUEifQ==