@effect-app/infra 0.156.0 → 0.157.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 0.157.1
4
+
5
+ ### Patch Changes
6
+
7
+ - e6c78d1: fix
8
+
9
+ ## 0.157.0
10
+
11
+ ### Minor Changes
12
+
13
+ - e087ee5: feat: allow schemas with R in Repositories, when context provided at creation.
14
+
3
15
  ## 0.156.0
4
16
 
5
17
  ### Minor Changes
@@ -8,20 +8,18 @@ exports.makeRepo = makeRepo;
8
8
  exports.makeStore = makeStore;
9
9
  exports.makeWhere = makeWhere;
10
10
  exports.removeById = removeById;
11
- var tsplus_module_1 = _interopRequireWildcard(require("effect/Effect"));
12
- var tsplus_module_2 = _interopRequireWildcard(require("@effect/schema/Parser"));
11
+ var tsplus_module_1 = _interopRequireWildcard(require("@effect-app/core/_ext/Iterable"));
12
+ var tsplus_module_2 = _interopRequireWildcard(require("effect/Effect"));
13
13
  var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Array"));
14
- var tsplus_module_4 = _interopRequireWildcard(require("effect/Chunk"));
15
- var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/core/Effect"));
16
- var tsplus_module_6 = _interopRequireWildcard(require("@effect-app/core/Chunk"));
17
- var tsplus_module_7 = _interopRequireWildcard(require("effect/Option"));
18
- var tsplus_module_8 = _interopRequireWildcard(require("@effect-app/core/_ext/Iterable"));
14
+ var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/core/Effect"));
15
+ var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/core/Chunk"));
16
+ var tsplus_module_6 = _interopRequireWildcard(require("effect/Option"));
17
+ var tsplus_module_7 = _interopRequireWildcard(require("@effect/schema/Parser"));
18
+ var tsplus_module_8 = _interopRequireWildcard(require("@effect-app/core/Function"));
19
19
  var tsplus_module_9 = _interopRequireWildcard(require("effect/PubSub"));
20
- var tsplus_module_10 = _interopRequireWildcard(require("@effect-app/core/Function"));
21
- var tsplus_module_11 = _interopRequireWildcard(require("@effect-app/infra/services/Repository"));
22
- var tsplus_module_12 = _interopRequireWildcard(require("@effect-app/prelude/service"));
20
+ var tsplus_module_10 = _interopRequireWildcard(require("@effect-app/infra/services/Repository"));
21
+ var tsplus_module_11 = _interopRequireWildcard(require("@effect-app/prelude/service"));
23
22
  var _Store = require("./Store.cjs");
24
- var _codec = require("@effect-app/infra/api/codec");
25
23
  var _filter = require("@effect-app/infra/filter");
26
24
  var _prelude = require("@effect-app/prelude");
27
25
  var _ContextMapContainer = require("./Store/ContextMapContainer.cjs");
@@ -72,96 +70,98 @@ function makeRepo() {
72
70
  }
73
71
  const mkStore = makeStore()(name, schema, mapTo);
74
72
  function make(args) {
75
- return tsplus_module_1.withLogSpan(tsplus_module_1.flatMap(mkStore(args.makeInitial, args.config), store => tsplus_module_1.flatMap(_ContextMapContainer.ContextMapContainer, ({
76
- get
77
- }) => {
78
- const cms = tsplus_module_1.andThen(get, _ => ({
79
- get: id => _.get(`${name}.${id}`),
80
- set: (id, etag) => _.set(`${name}.${id}`, etag)
81
- }));
82
- return tsplus_module_1.flatMap(tsplus_module_1.context(), pubCfg => {
83
- const pub = "publishEvents" in args ? tsplus_module_10.flow(args.publishEvents, _ => tsplus_module_1.provide(_, pubCfg)) : () => tsplus_module_1.unit;
84
- return tsplus_module_1.map(tsplus_module_9.unbounded(), changeFeed => {
85
- const allE = tsplus_module_1.flatMap(store.all, items => tsplus_module_1.map(cms, ({
86
- set
87
- }) => items.map(_ => mapReverse(_, set))));
88
- const parse = e => tsplus_module_1.orDie(tsplus_module_2.decodeUnknown(schema)(e));
89
- const all = tsplus_module_1.flatMap(allE, _ => tsplus_module_8.ext_forEach(_, _ => parse(_)));
90
- const structSchema = schema;
91
- const i = ("struct" in structSchema ? structSchema["struct"] : schema).pipe(_ => _.ast._tag === "Union"
92
- // we need to get the TypeLiteral, incase of class it's behind a transform...
93
- ? _prelude.S.union(..._.ast.types.map(_ => _prelude.S.make(_._tag === "Transform" ? _.from : _).pipe(_prelude.S.pick("id")))) : _.pipe(_prelude.S.pick("id")));
94
- function findE(_id) {
95
- return tsplus_module_1.flatMap(tsplus_module_1.andThen(tsplus_module_1.orDie(tsplus_module_1.map(_prelude.S.encode(i)({
96
- id: _id
97
- }), _ => _.id)), id => store.find(id)), items => tsplus_module_1.map(cms, ({
73
+ return tsplus_module_2.withLogSpan(tsplus_module_2.flatMap(tsplus_module_2.context(), rctx => {
74
+ const encode = tsplus_module_8.flow(tsplus_module_7.encode(schema), tsplus_module_2.provide(rctx));
75
+ const decode = tsplus_module_8.flow(tsplus_module_7.decode(schema), tsplus_module_2.provide(rctx));
76
+ return tsplus_module_2.flatMap(mkStore(args.makeInitial, args.config), store => tsplus_module_2.flatMap(_ContextMapContainer.ContextMapContainer, ({
77
+ get
78
+ }) => {
79
+ const cms = tsplus_module_2.andThen(get, _ => ({
80
+ get: id => _.get(`${name}.${id}`),
81
+ set: (id, etag) => _.set(`${name}.${id}`, etag)
82
+ }));
83
+ return tsplus_module_2.flatMap(tsplus_module_2.context(), pubCfg => {
84
+ const pub = "publishEvents" in args ? tsplus_module_8.flow(args.publishEvents, _ => tsplus_module_2.provide(_, pubCfg)) : () => tsplus_module_2.unit;
85
+ return tsplus_module_2.map(tsplus_module_9.unbounded(), changeFeed => {
86
+ const allE = tsplus_module_2.flatMap(store.all, items => tsplus_module_2.map(cms, ({
98
87
  set
99
- }) => tsplus_module_7.map(items, _ => mapReverse(_, set))));
100
- }
101
- function find(id) {
102
- return tsplus_module_5.flatMapOption(findE(id), parse);
103
- }
104
- const saveAllE = a => tsplus_module_1.asUnit(tsplus_module_5.flatMapOption(tsplus_module_1.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(a)), a => tsplus_module_1.flatMap(cms, ({
105
- get,
106
- set
107
- }) => {
108
- const items = a.map(_ => mapToPersistenceModel(_, get));
109
- return tsplus_module_1.map(store.batchSet(items), ret => {
110
- ret.forEach(_ => set(_.id, _._etag));
111
- });
112
- })));
113
- const encode = i => tsplus_module_2.encodeSync(schema)(i);
114
- const saveAll = a => saveAllE(tsplus_module_4.map(tsplus_module_3.ext_itToChunk(a), encode));
115
- const saveAndPublish = (items, events = []) => {
116
- const it = tsplus_module_3.ext_itToChunk(items);
117
- return tsplus_module_1.asUnit(tsplus_module_1.andThen(tsplus_module_5.flatMapOption(tsplus_module_1.andThen(saveAll(it), tsplus_module_1.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(events)))
118
- // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
119
- , pub), changeFeed.publish([tsplus_module_6.toArray(it), "save"])));
120
- };
121
- function removeAndPublish(a, events = []) {
122
- return tsplus_module_1.gen(function* ($) {
123
- const {
124
- get,
88
+ }) => items.map(_ => mapReverse(_, set))));
89
+ const all = tsplus_module_2.flatMap(allE, _ => tsplus_module_2.orDie(tsplus_module_1.ext_forEach(_, _ => decode(_))));
90
+ const structSchema = schema;
91
+ const i = ("struct" in structSchema ? structSchema["struct"] : schema).pipe(_ => _.ast._tag === "Union"
92
+ // we need to get the TypeLiteral, incase of class it's behind a transform...
93
+ ? _prelude.S.union(..._.ast.types.map(_ => _prelude.S.make(_._tag === "Transform" ? _.from : _).pipe(_prelude.S.pick("id")))) : _.pipe(_prelude.S.pick("id")));
94
+ const encodeId = tsplus_module_8.flow(tsplus_module_7.encode(i), tsplus_module_2.provide(rctx));
95
+ function findE(_id) {
96
+ return tsplus_module_2.flatMap(tsplus_module_2.andThen(tsplus_module_2.orDie(tsplus_module_2.map(encodeId({
97
+ id: _id
98
+ }), _ => _.id)), id => store.find(id)), items => tsplus_module_2.map(cms, ({
125
99
  set
126
- } = yield* $(cms);
127
- const it = tsplus_module_3.ext_itToChunk(a);
128
- const items = tsplus_module_4.map(it, encode);
129
- // TODO: we should have a batchRemove on store so the adapter can actually batch...
130
- for (const e of items) {
131
- yield* $(store.remove(mapToPersistenceModel(e, get)));
132
- set(e.id, undefined);
133
- }
134
- yield* $(tsplus_module_5.flatMapOption(tsplus_module_1.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(events))
100
+ }) => tsplus_module_6.map(items, _ => mapReverse(_, set))));
101
+ }
102
+ function find(id) {
103
+ return tsplus_module_4.flatMapOption(findE(id), _ => tsplus_module_2.orDie(decode(_)));
104
+ }
105
+ const saveAllE = a => tsplus_module_2.asUnit(tsplus_module_4.flatMapOption(tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(a)), a => tsplus_module_2.flatMap(cms, ({
106
+ get,
107
+ set
108
+ }) => {
109
+ const items = a.map(_ => mapToPersistenceModel(_, get));
110
+ return tsplus_module_2.map(store.batchSet(items), ret => {
111
+ ret.forEach(_ => set(_.id, _._etag));
112
+ });
113
+ })));
114
+ const saveAll = a => tsplus_module_2.andThen(tsplus_module_2.orDie(tsplus_module_1.ext_forEach(tsplus_module_3.ext_itToChunk(a), _ => encode(_))), saveAllE);
115
+ const saveAndPublish = (items, events = []) => {
116
+ const it = tsplus_module_3.ext_itToChunk(items);
117
+ return tsplus_module_2.asUnit(tsplus_module_2.andThen(tsplus_module_4.flatMapOption(tsplus_module_2.andThen(saveAll(it), tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(events)))
135
118
  // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
136
- , pub));
137
- yield* $(changeFeed.publish([tsplus_module_6.toArray(it), "remove"]));
138
- });
139
- }
140
- const p = tsplus_module_2.decodeSync(schema);
141
- const r = {
142
- /**
143
- * @internal
144
- */
145
- utils: {
146
- parseMany: items => tsplus_module_1.map(cms, cm => items.map(_ => p(mapReverse(_, cm.set)))),
147
- filter: args => tsplus_module_1.tap(store.filter(args), items => args.select ? tsplus_module_1.unit : tsplus_module_1.map(cms, ({
148
- set
149
- }) => items.forEach(_ => set(_.id, _._etag)))),
150
- all: tsplus_module_1.tap(store.all, items => tsplus_module_1.map(cms, ({
151
- set
152
- }) => items.forEach(_ => set(_.id, _._etag))))
153
- },
154
- changeFeed,
155
- itemType: name,
156
- find,
157
- all,
158
- saveAndPublish,
159
- removeAndPublish
160
- };
161
- return r;
119
+ , pub), changeFeed.publish([tsplus_module_5.toArray(it), "save"])));
120
+ };
121
+ function removeAndPublish(a, events = []) {
122
+ return tsplus_module_2.gen(function* ($) {
123
+ const {
124
+ get,
125
+ set
126
+ } = yield* $(cms);
127
+ const it = tsplus_module_3.ext_itToChunk(a);
128
+ const items = yield* $(tsplus_module_2.orDie(tsplus_module_1.ext_forEach(it, _ => encode(_))));
129
+ // TODO: we should have a batchRemove on store so the adapter can actually batch...
130
+ for (const e of items) {
131
+ yield* $(store.remove(mapToPersistenceModel(e, get)));
132
+ set(e.id, undefined);
133
+ }
134
+ yield* $(tsplus_module_4.flatMapOption(tsplus_module_2.sync(() => tsplus_module_3.CollectionToNonEmptyReadonlyArray(events))
135
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
136
+ , pub));
137
+ yield* $(changeFeed.publish([tsplus_module_5.toArray(it), "remove"]));
138
+ });
139
+ }
140
+ const r = {
141
+ /**
142
+ * @internal
143
+ */
144
+ utils: {
145
+ parseMany: items => tsplus_module_2.flatMap(cms, cm => tsplus_module_2.orDie(tsplus_module_1.ext_forEach(items, _ => decode(mapReverse(_, cm.set))))),
146
+ filter: args => tsplus_module_2.tap(store.filter(args), items => args.select ? tsplus_module_2.unit : tsplus_module_2.map(cms, ({
147
+ set
148
+ }) => items.forEach(_ => set(_.id, _._etag)))),
149
+ all: tsplus_module_2.tap(store.all, items => tsplus_module_2.map(cms, ({
150
+ set
151
+ }) => items.forEach(_ => set(_.id, _._etag))))
152
+ },
153
+ changeFeed,
154
+ itemType: name,
155
+ find,
156
+ all,
157
+ saveAndPublish,
158
+ removeAndPublish
159
+ };
160
+ return r;
161
+ });
162
162
  });
163
- });
164
- })), "Repository.make: " + name);
163
+ }));
164
+ }), "Repository.make: " + name);
165
165
  }
166
166
  return {
167
167
  make,
@@ -175,7 +175,7 @@ function makeRepo() {
175
175
  * @tsplus fluent Repository removeById
176
176
  */
177
177
  function removeById(self, id) {
178
- return tsplus_module_1.flatMap(tsplus_module_11.get(self, id), _ => self.removeAndPublish([_]));
178
+ return tsplus_module_2.flatMap(tsplus_module_10.get(self, id), _ => self.removeAndPublish([_]));
179
179
  }
180
180
  function makeWhere() {
181
181
  const f_ = (0, _filter.makeFilters)();
@@ -196,18 +196,17 @@ function makeWhere() {
196
196
  const pluralize = s => s.endsWith("s") ? s + "es" : s.endsWith("y") ? s.substring(0, s.length - 1) + "ies" : s + "s";
197
197
  function makeStore() {
198
198
  return (name, schema, mapTo) => {
199
- const [_dec, encode] = (0, _codec.makeCodec)(schema);
200
199
  function encodeToPM() {
201
200
  const getEtag = () => undefined;
202
- return t => mapToPersistenceModel(encode(t), getEtag);
201
+ return t => tsplus_module_2.map(tsplus_module_2.orDie(tsplus_module_7.encode(schema)(t)), _ => mapToPersistenceModel(_, getEtag));
203
202
  }
204
203
  function mapToPersistenceModel(e, getEtag) {
205
204
  return mapTo(e, getEtag(e.id));
206
205
  }
207
206
  function makeStore(makeInitial, config) {
208
- return tsplus_module_1.flatMap(_Store.StoreMaker, ({
207
+ return tsplus_module_2.flatMap(_Store.StoreMaker, ({
209
208
  make
210
- }) => tsplus_module_1.map(make(pluralize(name), makeInitial ? tsplus_module_1.withSpan(tsplus_module_1.map(makeInitial, _ => _.map(encodeToPM())), "Repository.makeInitial [effect-app/infra]", {
209
+ }) => tsplus_module_2.map(make(pluralize(name), makeInitial ? tsplus_module_2.withSpan(tsplus_module_2.flatMap(makeInitial, _ => tsplus_module_1.ext_forEach(_, encodeToPM())), "Repository.makeInitial [effect-app/infra]", {
211
210
  attributes: {
212
211
  "repository.model_name": name
213
212
  }
@@ -231,11 +230,11 @@ const RepositoryBaseImpl = () => {
231
230
  }
232
231
  }
233
232
  Cls.make = mkRepo.make;
234
- Cls.makeWith = (a, b) => tsplus_module_1.map(mkRepo.make(a), b);
233
+ Cls.makeWith = (a, b) => tsplus_module_2.map(mkRepo.make(a), b);
235
234
  Cls.where = makeWhere();
236
235
  Cls.query = _query.QueryBuilder.make();
237
236
  Cls.type = undefined;
238
- return tsplus_module_12.assignTag()(Cls);
237
+ return tsplus_module_11.assignTag()(Cls);
239
238
  };
240
239
  };
241
240
  exports.RepositoryBaseImpl = RepositoryBaseImpl;
@@ -251,11 +250,11 @@ const RepositoryDefaultImpl = () => {
251
250
  }
252
251
  }
253
252
  Cls.make = mkRepo.make;
254
- Cls.makeWith = (a, b) => tsplus_module_1.map(mkRepo.make(a), b);
253
+ Cls.makeWith = (a, b) => tsplus_module_2.map(mkRepo.make(a), b);
255
254
  Cls.where = makeWhere();
256
255
  Cls.query = _query.QueryBuilder.make();
257
256
  Cls.type = undefined;
258
- return tsplus_module_12.assignTag()(Cls); // impl is missing, but its marked protected
257
+ return tsplus_module_11.assignTag()(Cls); // impl is missing, but its marked protected
259
258
  };
260
259
  };
261
260
  exports.RepositoryDefaultImpl = RepositoryDefaultImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"RepositoryBase.cjs","names":["_Store","require","_codec","_filter","_prelude","_ContextMapContainer","_query","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","RepositoryBaseC","exports","RepositoryBaseC1","constructor","itemType","RepositoryBaseC2","impl","saveAndPublish","removeAndPublish","find","all","utils","changeFeed","makeRepo","name","schema","mapFrom","mapTo","where","makeWhere","mapToPersistenceModel","getEtag","id","mapReverse","_etag","setEtag","mkStore","makeStore","make","args","tsplus_module_1","withLogSpan","flatMap","makeInitial","config","store","ContextMapContainer","cms","andThen","_","etag","context","pubCfg","pub","tsplus_module_10","flow","publishEvents","provide","unit","tsplus_module_9","unbounded","allE","items","map","parse","orDie","tsplus_module_2","decodeUnknown","tsplus_module_8","ext_forEach","structSchema","pipe","ast","_tag","S","union","types","from","pick","findE","_id","encode","tsplus_module_7","tsplus_module_5","flatMapOption","saveAllE","asUnit","sync","tsplus_module_3","CollectionToNonEmptyReadonlyArray","batchSet","ret","forEach","encodeSync","saveAll","tsplus_module_4","ext_itToChunk","events","it","publish","tsplus_module_6","toArray","gen","$","remove","undefined","p","decodeSync","parseMany","cm","filter","tap","select","query","QueryBuilder","removeById","self","tsplus_module_11","f_","makeFilters","makeFilter_","mode","f","m","Array","isArray","pluralize","s","endsWith","substring","length","_dec","makeCodec","encodeToPM","StoreMaker","withSpan","attributes","partitionValue","RepositoryBaseImpl","jitM","mkRepo","pm","Cls","makeWith","b","type","tsplus_module_12","assignTag","RepositoryDefaultImpl"],"sources":["../../_src/services/RepositoryBase.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"RepositoryBase.cjs","names":["_Store","require","_filter","_prelude","_ContextMapContainer","_query","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","RepositoryBaseC","exports","RepositoryBaseC1","constructor","itemType","RepositoryBaseC2","impl","saveAndPublish","removeAndPublish","find","all","utils","changeFeed","makeRepo","name","schema","mapFrom","mapTo","where","makeWhere","mapToPersistenceModel","getEtag","id","mapReverse","_etag","setEtag","mkStore","makeStore","make","args","tsplus_module_2","withLogSpan","flatMap","context","rctx","encode","tsplus_module_8","flow","tsplus_module_7","provide","decode","makeInitial","config","store","ContextMapContainer","cms","andThen","_","etag","pubCfg","pub","publishEvents","unit","tsplus_module_9","unbounded","allE","items","map","orDie","tsplus_module_1","ext_forEach","structSchema","pipe","ast","_tag","S","union","types","from","pick","encodeId","findE","_id","tsplus_module_6","tsplus_module_4","flatMapOption","saveAllE","asUnit","sync","tsplus_module_3","CollectionToNonEmptyReadonlyArray","batchSet","ret","forEach","saveAll","ext_itToChunk","events","it","publish","tsplus_module_5","toArray","gen","$","remove","undefined","parseMany","cm","filter","tap","select","query","QueryBuilder","removeById","self","tsplus_module_10","f_","makeFilters","makeFilter_","mode","f","m","Array","isArray","pluralize","s","endsWith","substring","length","encodeToPM","StoreMaker","withSpan","attributes","partitionValue","RepositoryBaseImpl","jitM","mkRepo","pm","Cls","makeWith","b","type","tsplus_module_11","assignTag","RepositoryDefaultImpl"],"sources":["../../_src/services/RepositoryBase.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -7,7 +7,6 @@ import type { Filter, FilterArgs, FilterFunc, PersistenceModelType, StoreConfig,
7
7
  import type {} from "effect/Equal"
8
8
  import type {} from "effect/Hash"
9
9
  import type { Opt } from "@effect-app/core/Option"
10
- import { makeCodec } from "@effect-app/infra/api/codec"
11
10
  import { makeFilters } from "@effect-app/infra/filter"
12
11
  import { S } from "@effect-app/prelude"
13
12
  import type { InvalidStateError, OptimisticConcurrencyException } from "../errors.js"
@@ -87,11 +86,12 @@ export function makeRepo<
87
86
  >() {
88
87
  return <
89
88
  ItemType extends string,
89
+ R,
90
90
  From extends { id: string },
91
91
  T extends { id: unknown }
92
92
  >(
93
93
  name: ItemType,
94
- schema: S.Schema<never, From, T>,
94
+ schema: S.Schema<R, From, T>,
95
95
  mapFrom: (pm: Omit<PM, "_etag">) => From,
96
96
  mapTo: (e: From, etag: string | undefined) => PM
97
97
  ) => {
@@ -114,28 +114,33 @@ export function makeRepo<
114
114
 
115
115
  const mkStore = makeStore<PM>()(name, schema, mapTo)
116
116
 
117
- function make<R = never, E = never, R2 = never>(
117
+ function make<RInitial = never, E = never, R2 = never>(
118
118
  args: [Evt] extends [never] ? {
119
- makeInitial?: Effect<R, E, readonly T[]>
119
+ makeInitial?: Effect<RInitial, E, readonly T[]>
120
120
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
121
121
  partitionValue?: (a: PM) => string
122
122
  }
123
123
  }
124
124
  : {
125
125
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<R2, never, void>
126
- makeInitial?: Effect<R, E, readonly T[]>
126
+ makeInitial?: Effect<RInitial, E, readonly T[]>
127
127
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
128
128
  partitionValue?: (a: PM) => string
129
129
  }
130
130
  }
131
131
  ) {
132
132
  return Do(($) => {
133
+ const rctx = $(Effect.context<R>())
134
+ const encode = flow(schema.encode, Effect.provide(rctx))
135
+ const decode = flow(schema.decode, Effect.provide(rctx))
136
+
133
137
  const store = $(mkStore(args.makeInitial, args.config))
134
138
  const { get } = $(ContextMapContainer)
135
139
  const cms = get.andThen((_) => ({
136
140
  get: (id: string) => _.get(`${name}.${id}`),
137
141
  set: (id: string, etag: string | undefined) => _.set(`${name}.${id}`, etag)
138
142
  }))
143
+
139
144
  const pubCfg = $(Effect.context<R2>())
140
145
  const pub = "publishEvents" in args ? flow(args.publishEvents, (_) => _.provide(pubCfg)) : () => Effect.unit
141
146
  const changeFeed = $(PubSub.unbounded<[T[], "save" | "remove"]>())
@@ -147,9 +152,7 @@ export function makeRepo<
147
152
  })
148
153
  )
149
154
 
150
- const parse = (e: From) => schema.decodeUnknown(e).orDie
151
-
152
- const all = allE.flatMap((_) => _.forEachEffect((_) => parse(_)))
155
+ const all = allE.flatMap((_) => _.forEachEffect((_) => decode(_)).orDie)
153
156
 
154
157
  const structSchema = schema as unknown as { struct: typeof schema }
155
158
  const i = ("struct" in structSchema ? structSchema["struct"] : schema).pipe((_) =>
@@ -165,9 +168,9 @@ export function makeRepo<
165
168
  ))
166
169
  : _.pipe(S.pick("id"))
167
170
  )
171
+ const encodeId = flow(i.encode, Effect.provide(rctx))
168
172
  function findE(_id: T["id"]) {
169
- return S
170
- .encode(i)({ id: _id })
173
+ return encodeId({ id: _id })
171
174
  .map((_) => _.id)
172
175
  .orDie
173
176
  .andThen((id) =>
@@ -183,7 +186,7 @@ export function makeRepo<
183
186
  }
184
187
 
185
188
  function find(id: T["id"]) {
186
- return findE(id).flatMapOpt(parse)
189
+ return findE(id).flatMapOpt((_) => decode(_).orDie)
187
190
  }
188
191
 
189
192
  const saveAllE = (a: Iterable<From>) =>
@@ -198,9 +201,8 @@ export function makeRepo<
198
201
  })
199
202
  )
200
203
  .asUnit
201
- const encode = (i: T) => schema.encodeSync(i)
202
204
 
203
- const saveAll = (a: Iterable<T>) => saveAllE(a.toChunk.map(encode))
205
+ const saveAll = (a: Iterable<T>) => a.toChunk.forEachEffect((_) => encode(_)).orDie.andThen(saveAllE)
204
206
 
205
207
  const saveAndPublish = (items: Iterable<T>, events: Iterable<Evt> = []) => {
206
208
  const it = items.toChunk
@@ -217,7 +219,7 @@ export function makeRepo<
217
219
  return Effect.gen(function*($) {
218
220
  const { get, set } = yield* $(cms)
219
221
  const it = a.toChunk
220
- const items = it.map(encode)
222
+ const items = yield* $(it.forEachEffect((_) => encode(_)).orDie)
221
223
  // TODO: we should have a batchRemove on store so the adapter can actually batch...
222
224
  for (const e of items) {
223
225
  yield* $(store.remove(mapToPersistenceModel(e, get)))
@@ -234,14 +236,12 @@ export function makeRepo<
234
236
  })
235
237
  }
236
238
 
237
- const p = schema.decodeSync
238
-
239
239
  const r: Repository<T, PM, Evt, ItemType> = {
240
240
  /**
241
241
  * @internal
242
242
  */
243
243
  utils: {
244
- parseMany: (items) => cms.map((cm) => items.map((_) => p(mapReverse(_, cm.set)))),
244
+ parseMany: (items) => cms.flatMap((cm) => items.forEachEffect((_) => decode(mapReverse(_, cm.set))).orDie),
245
245
  filter: <U extends keyof PM = keyof PM>(args: FilterArgs<PM, U>) =>
246
246
  store
247
247
  .filter(args)
@@ -326,17 +326,21 @@ export function makeStore<
326
326
  >() {
327
327
  return <
328
328
  ItemType extends string,
329
+ R,
329
330
  E extends { id: string },
330
331
  T extends { id: unknown }
331
332
  >(
332
333
  name: ItemType,
333
- schema: S.Schema<never, E, T>,
334
+ schema: S.Schema<R, E, T>,
334
335
  mapTo: (e: E, etag: string | undefined) => PM
335
336
  ) => {
336
- const [_dec, encode] = makeCodec(schema)
337
337
  function encodeToPM() {
338
338
  const getEtag = () => undefined
339
- return (t: T) => mapToPersistenceModel(encode(t), getEtag)
339
+ return (t: T) =>
340
+ schema
341
+ .encode(t)
342
+ .orDie
343
+ .map((_) => mapToPersistenceModel(_, getEtag))
340
344
  }
341
345
 
342
346
  function mapToPersistenceModel(
@@ -346,8 +350,8 @@ export function makeStore<
346
350
  return mapTo(e, getEtag(e.id))
347
351
  }
348
352
 
349
- function makeStore<R = never, E = never>(
350
- makeInitial?: Effect<R, E, readonly T[]>,
353
+ function makeStore<RInitial = never, EInitial = never>(
354
+ makeInitial?: Effect<RInitial, EInitial, readonly T[]>,
351
355
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
352
356
  partitionValue?: (a: PM) => string
353
357
  }
@@ -356,11 +360,11 @@ export function makeStore<
356
360
  const { make } = $(StoreMaker)
357
361
 
358
362
  const store = $(
359
- make<PM, string, R, E>(
363
+ make<PM, string, R | RInitial, EInitial>(
360
364
  pluralize(name),
361
365
  makeInitial
362
366
  ? (makeInitial
363
- .map((_) => _.map(encodeToPM())))
367
+ .flatMap((_) => _.forEachEffect(encodeToPM())))
364
368
  .withSpan("Repository.makeInitial [effect-app/infra]", {
365
369
  attributes: { "repository.model_name": name }
366
370
  })
@@ -383,45 +387,46 @@ export function makeStore<
383
387
  export interface Repos<
384
388
  T extends { id: unknown },
385
389
  PM extends { id: string; _etag: string | undefined },
390
+ R,
386
391
  Evt,
387
392
  ItemType extends string
388
393
  > {
389
- make<R = never, E = never, R2 = never>(
394
+ make<RInitial = never, E = never, R2 = never>(
390
395
  args: [Evt] extends [never] ? {
391
- makeInitial?: Effect<R, E, readonly T[]>
396
+ makeInitial?: Effect<RInitial, E, readonly T[]>
392
397
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
393
398
  partitionValue?: (a: PM) => string
394
399
  }
395
400
  }
396
401
  : {
397
402
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<R2, never, void>
398
- makeInitial?: Effect<R, E, readonly T[]>
403
+ makeInitial?: Effect<RInitial, E, readonly T[]>
399
404
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
400
405
  partitionValue?: (a: PM) => string
401
406
  }
402
407
  }
403
408
  ): Effect<
404
- StoreMaker | ContextMapContainer | R | R2,
409
+ StoreMaker | ContextMapContainer | R | RInitial | R2,
405
410
  E,
406
411
  Repository<T, PM, Evt, ItemType>
407
412
  >
408
- makeWith<Out, R = never, E = never, R2 = never>(
413
+ makeWith<Out, RInitial = never, E = never, R2 = never>(
409
414
  args: [Evt] extends [never] ? {
410
- makeInitial?: Effect<R, E, readonly T[]>
415
+ makeInitial?: Effect<RInitial, E, readonly T[]>
411
416
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
412
417
  partitionValue?: (a: PM) => string
413
418
  }
414
419
  }
415
420
  : {
416
421
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect<R2, never, void>
417
- makeInitial?: Effect<R, E, readonly T[]>
422
+ makeInitial?: Effect<RInitial, E, readonly T[]>
418
423
  config?: Omit<StoreConfig<PM>, "partitionValue"> & {
419
424
  partitionValue?: (a: PM) => string
420
425
  }
421
426
  },
422
427
  f: (r: Repository<T, PM, Evt, ItemType>) => Out
423
428
  ): Effect<
424
- StoreMaker | ContextMapContainer | R | R2,
429
+ StoreMaker | ContextMapContainer | R | RInitial | R2,
425
430
  E,
426
431
  Out
427
432
  >
@@ -438,9 +443,9 @@ export const RepositoryBaseImpl = <Service>() => {
438
443
  PM extends { id: string; _etag: string | undefined },
439
444
  Evt = never
440
445
  >() =>
441
- <ItemType extends string, From extends { id: string }, T extends { id: unknown }>(
446
+ <ItemType extends string, R, From extends { id: string }, T extends { id: unknown }>(
442
447
  itemType: ItemType,
443
- schema: S.Schema<never, From, T>,
448
+ schema: S.Schema<R, From, T>,
444
449
  jitM?: (pm: From) => From
445
450
  ): Exact<PM, From & { _etag: string | undefined }> extends true ?
446
451
  & (abstract new() => RepositoryBaseC1<T, PM, Evt, ItemType>)
@@ -448,6 +453,7 @@ export const RepositoryBaseImpl = <Service>() => {
448
453
  & Repos<
449
454
  T,
450
455
  PM,
456
+ R,
451
457
  Evt,
452
458
  ItemType
453
459
  >
@@ -479,9 +485,9 @@ export const RepositoryDefaultImpl = <Service>() => {
479
485
  PM extends { id: string; _etag: string | undefined },
480
486
  Evt = never
481
487
  >() =>
482
- <ItemType extends string, From extends { id: string }, T extends { id: unknown }>(
488
+ <ItemType extends string, R, From extends { id: string }, T extends { id: unknown }>(
483
489
  itemType: ItemType,
484
- schema: S.Schema<never, From, T>,
490
+ schema: S.Schema<R, From, T>,
485
491
  jitM?: (pm: From) => From
486
492
  ): Exact<PM, From & { _etag: string | undefined }> extends true ?
487
493
  & (abstract new(
@@ -491,6 +497,7 @@ export const RepositoryDefaultImpl = <Service>() => {
491
497
  & Repos<
492
498
  T,
493
499
  PM,
500
+ R,
494
501
  Evt,
495
502
  ItemType
496
503
  >