@effect-app/infra 2.9.5 → 2.11.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.
- package/CHANGELOG.md +18 -0
- package/_cjs/Emailer/Sendgrid.cjs +1 -1
- package/_cjs/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/Emailer/service.cjs.map +1 -1
- package/_cjs/Model/Repository/internal/internal.cjs +247 -0
- package/_cjs/Model/Repository/internal/internal.cjs.map +1 -0
- package/_cjs/Model/Repository/legacy.cjs +0 -139
- package/_cjs/Model/Repository/legacy.cjs.map +1 -1
- package/_cjs/Model/Repository/makeRepo.cjs +2 -241
- package/_cjs/Model/Repository/makeRepo.cjs.map +1 -1
- package/_cjs/Store/Cosmos.cjs +1 -1
- package/_cjs/Store/Cosmos.cjs.map +1 -1
- package/_cjs/Store/index.cjs +1 -1
- package/_cjs/Store/index.cjs.map +1 -1
- package/dist/Emailer/Sendgrid.js +3 -3
- package/dist/Emailer/service.d.ts +3 -2
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +1 -1
- package/dist/Model/Repository/internal/internal.d.ts +66 -0
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
- package/dist/Model/Repository/internal/internal.js +247 -0
- package/dist/Model/Repository/legacy.d.ts +2 -186
- package/dist/Model/Repository/legacy.d.ts.map +1 -1
- package/dist/Model/Repository/legacy.js +2 -123
- package/dist/Model/Repository/makeRepo.d.ts +3 -68
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +3 -247
- package/dist/Operations.d.ts +3 -3
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +3 -3
- package/dist/Store/index.js +3 -3
- package/dist/Store/service.d.ts +2 -2
- package/dist/Store/service.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/Emailer/Sendgrid.ts +2 -2
- package/src/Emailer/service.ts +3 -2
- package/src/Model/Repository/internal/internal.ts +481 -0
- package/src/Model/Repository/legacy.ts +2 -536
- package/src/Model/Repository/makeRepo.ts +4 -481
- package/src/Store/Cosmos.ts +2 -2
- package/src/Store/index.ts +2 -2
- package/src/Store/service.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 2.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 90244e1: chore: remove legacy RepositoryBase and move others internally.
|
|
8
|
+
|
|
9
|
+
## 2.10.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- d5623a6: update packages
|
|
14
|
+
- 1720c6c: replace Secret with Redacted
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [d5623a6]
|
|
19
|
+
- effect-app@2.4.0
|
|
20
|
+
|
|
3
21
|
## 2.9.5
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -20,7 +20,7 @@ const makeSendgrid = ({
|
|
|
20
20
|
realMail,
|
|
21
21
|
subjectPrefix
|
|
22
22
|
}) => _effectApp.Effect.sync(() => {
|
|
23
|
-
_mail.default.setApiKey(_effectApp.
|
|
23
|
+
_mail.default.setApiKey(_effectApp.Redacted.value(apiKey));
|
|
24
24
|
return _service.Emailer.of({
|
|
25
25
|
sendMail(msg_) {
|
|
26
26
|
return _effectApp.Effect.gen(function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sendgrid.cjs","names":["_mail","_interopRequireDefault","require","_effectApp","_utils","_util","_logger","_service","e","__esModule","default","makeSendgrid","apiKey","defaultFrom","defaultReplyTo","realMail","subjectPrefix","Effect","sync","sgMail","setApiKey","
|
|
1
|
+
{"version":3,"file":"Sendgrid.cjs","names":["_mail","_interopRequireDefault","require","_effectApp","_utils","_util","_logger","_service","e","__esModule","default","makeSendgrid","apiKey","defaultFrom","defaultReplyTo","realMail","subjectPrefix","Effect","sync","sgMail","setApiKey","Redacted","value","Emailer","of","sendMail","msg_","gen","msg","dropUndefinedT","from","replyTo","undefined","render","renderMessage","renderedMsg_","renderedMsg","subject","InfraLogger","logDebug","pipe","annotateLogs","inspect","ret","async","cb","send","err","result","fail","Sendgrid","config","toLayer","forceFake","i","makeId","to","renderFake","cc","bcc","renderFakeIfTest","isTestAddress","toLowerCase","endsWith","email","addr","name","renderMailData","eq","Equivalence","mapInput","string","Array","isArray","dedupeWith","map","x","md","join"],"sources":["../../src/Emailer/Sendgrid.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.cjs","names":["_effectApp","require","Emailer","Context","TagId","exports"],"sources":["../../src/Emailer/service.ts"],"sourcesContent":[null],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"service.cjs","names":["_effectApp","require","Emailer","Context","TagId","exports"],"sources":["../../src/Emailer/service.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAGA;;;;AAIM,MAAOC,OAAQ,SAAQC,kBAAO,CAACC,KAAK,CAAC,oBAAoB,CAAC,EAE5D;AAAGC,OAAA,CAAAH,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeRepoInternal = makeRepoInternal;
|
|
7
|
+
exports.makeStore = makeStore;
|
|
8
|
+
var _effectApp = require("effect-app");
|
|
9
|
+
var _Array = require("effect-app/Array");
|
|
10
|
+
var _client = require("effect-app/client");
|
|
11
|
+
var _Effect = require("effect-app/Effect");
|
|
12
|
+
var _Schema = require("effect-app/Schema");
|
|
13
|
+
var _setupRequest = require("../../../api/setupRequest.cjs");
|
|
14
|
+
var _Store = require("../../../Store.cjs");
|
|
15
|
+
var _ContextMapContainer = require("../../../Store/ContextMapContainer.cjs");
|
|
16
|
+
var Q = _interopRequireWildcard(require("../../query.cjs"));
|
|
17
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
+
const dedupe = _effectApp.Array.dedupeWith(_effectApp.Equivalence.string);
|
|
20
|
+
/**
|
|
21
|
+
* A base implementation to create a repository.
|
|
22
|
+
*/
|
|
23
|
+
function makeRepoInternal() {
|
|
24
|
+
return (name, schema, mapFrom, mapTo, idKey) => {
|
|
25
|
+
function mapToPersistenceModel(e, getEtag) {
|
|
26
|
+
return mapTo(e, getEtag(e.id));
|
|
27
|
+
}
|
|
28
|
+
function mapReverse({
|
|
29
|
+
_etag,
|
|
30
|
+
...e
|
|
31
|
+
}, setEtag) {
|
|
32
|
+
setEtag(e.id, _etag);
|
|
33
|
+
return mapFrom(e);
|
|
34
|
+
}
|
|
35
|
+
const mkStore = makeStore()(name, schema, mapTo);
|
|
36
|
+
function make(args) {
|
|
37
|
+
return _effectApp.Effect.gen(function* () {
|
|
38
|
+
const rctx = args.schemaContext ?? _effectApp.Context.empty();
|
|
39
|
+
const provideRctx = _effectApp.Effect.provide(rctx);
|
|
40
|
+
const encodeMany = (0, _effectApp.flow)(_effectApp.S.encode(_effectApp.S.Array(schema)), provideRctx, _effectApp.Effect.withSpan("encodeMany", {
|
|
41
|
+
captureStackTrace: false
|
|
42
|
+
}));
|
|
43
|
+
const decode = (0, _effectApp.flow)(_effectApp.S.decode(schema), provideRctx);
|
|
44
|
+
const decodeMany = (0, _effectApp.flow)(_effectApp.S.decode(_effectApp.S.Array(schema)), provideRctx, _effectApp.Effect.withSpan("decodeMany", {
|
|
45
|
+
captureStackTrace: false
|
|
46
|
+
}));
|
|
47
|
+
const store = yield* mkStore(args.makeInitial, args.config);
|
|
48
|
+
const cms = _effectApp.Effect.andThen(_ContextMapContainer.getContextMap.pipe(_effectApp.Effect.orDie), _ => ({
|
|
49
|
+
get: id => _.get(`${name}.${id}`),
|
|
50
|
+
set: (id, etag) => _.set(`${name}.${id}`, etag)
|
|
51
|
+
}));
|
|
52
|
+
const pub = "publishEvents" in args ? args.publishEvents : () => _effectApp.Effect.void;
|
|
53
|
+
const changeFeed = yield* _effectApp.PubSub.unbounded();
|
|
54
|
+
const allE = cms.pipe(_effectApp.Effect.flatMap(cm => _effectApp.Effect.map(store.all, _ => _.map(_ => mapReverse(_, cm.set)))));
|
|
55
|
+
const all = _effectApp.Effect.flatMap(allE, _ => decodeMany(_).pipe(_effectApp.Effect.orDie)).pipe(_effectApp.Effect.map(_ => _));
|
|
56
|
+
const fieldsSchema = schema;
|
|
57
|
+
// assumes the id field never needs a service...
|
|
58
|
+
const i = ("fields" in fieldsSchema ? _effectApp.S.Struct(fieldsSchema["fields"]) : schema).pipe(_ => {
|
|
59
|
+
let ast = _.ast;
|
|
60
|
+
if (ast._tag === "Declaration") ast = ast.typeParameters[0];
|
|
61
|
+
const s = _effectApp.S.make(ast);
|
|
62
|
+
return ast._tag === "Union"
|
|
63
|
+
// we need to get the TypeLiteral, incase of class it's behind a transform...
|
|
64
|
+
? _effectApp.S.Union(...ast.types.map(_ => _effectApp.S.make(_._tag === "Transformation" ? _.from : _).pipe(_effectApp.S.pick(idKey)))) : s.pipe(_effectApp.S.pick(idKey));
|
|
65
|
+
});
|
|
66
|
+
const encodeId = (0, _effectApp.flow)(_effectApp.S.encode(i), provideRctx);
|
|
67
|
+
function findEId(id) {
|
|
68
|
+
return _effectApp.Effect.flatMap(store.find(id), item => _effectApp.Effect.gen(function* () {
|
|
69
|
+
const {
|
|
70
|
+
set
|
|
71
|
+
} = yield* cms;
|
|
72
|
+
return item.pipe(_effectApp.Option.map(_ => mapReverse(_, set)));
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
function findE(id) {
|
|
76
|
+
return (0, _effectApp.pipe)(encodeId({
|
|
77
|
+
[idKey]: id
|
|
78
|
+
}), _effectApp.Effect.orDie,
|
|
79
|
+
// we will have idKey because the transform is undone again by the encode schema mumbo jumbo above
|
|
80
|
+
// TODO: make reliable. (Security: isin: PrimaryKey(ISIN), idKey: "isin", does end up with "id")
|
|
81
|
+
_effectApp.Effect.map(_ => _[idKey] ?? _.id), _effectApp.Effect.flatMap(findEId));
|
|
82
|
+
}
|
|
83
|
+
function find(id) {
|
|
84
|
+
return _effectApp.Effect.flatMapOption(findE(id), _ => _effectApp.Effect.orDie(decode(_)));
|
|
85
|
+
}
|
|
86
|
+
const saveAllE = a => _effectApp.Effect.flatMapOption(_effectApp.Effect.sync(() => (0, _Array.toNonEmptyArray)([...a])), a => _effectApp.Effect.gen(function* () {
|
|
87
|
+
const {
|
|
88
|
+
get,
|
|
89
|
+
set
|
|
90
|
+
} = yield* cms;
|
|
91
|
+
const items = a.map(_ => mapToPersistenceModel(_, get));
|
|
92
|
+
const ret = yield* store.batchSet(items);
|
|
93
|
+
ret.forEach(_ => set(_.id, _._etag));
|
|
94
|
+
})).pipe(_effectApp.Effect.asVoid);
|
|
95
|
+
const saveAll = a => encodeMany(_effectApp.Array.fromIterable(a)).pipe(_effectApp.Effect.orDie, _effectApp.Effect.andThen(saveAllE));
|
|
96
|
+
const saveAndPublish = (items, events = []) => {
|
|
97
|
+
return _effectApp.Effect.suspend(() => {
|
|
98
|
+
const it = _effectApp.Chunk.fromIterable(items);
|
|
99
|
+
return saveAll(it).pipe(_effectApp.Effect.andThen(_effectApp.Effect.sync(() => (0, _Array.toNonEmptyArray)([...events]))),
|
|
100
|
+
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
101
|
+
_ => _effectApp.Effect.flatMapOption(_, pub), _effectApp.Effect.andThen(changeFeed.publish([_effectApp.Chunk.toArray(it), "save"])), _effectApp.Effect.asVoid);
|
|
102
|
+
}).pipe(_effectApp.Effect.withSpan("saveAndPublish", {
|
|
103
|
+
captureStackTrace: false
|
|
104
|
+
}));
|
|
105
|
+
};
|
|
106
|
+
function removeAndPublish(a, events = []) {
|
|
107
|
+
return _effectApp.Effect.gen(function* () {
|
|
108
|
+
const {
|
|
109
|
+
get,
|
|
110
|
+
set
|
|
111
|
+
} = yield* cms;
|
|
112
|
+
const it = [...a];
|
|
113
|
+
const items = yield* encodeMany(it).pipe(_effectApp.Effect.orDie);
|
|
114
|
+
// TODO: we should have a batchRemove on store so the adapter can actually batch...
|
|
115
|
+
for (const e of items) {
|
|
116
|
+
yield* store.remove(mapToPersistenceModel(e, get));
|
|
117
|
+
set(e.id, undefined);
|
|
118
|
+
}
|
|
119
|
+
yield* _effectApp.Effect.sync(() => (0, _Array.toNonEmptyArray)([...events]))
|
|
120
|
+
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
121
|
+
.pipe(_ => _effectApp.Effect.flatMapOption(_, pub));
|
|
122
|
+
yield* changeFeed.publish([it, "remove"]);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const parseMany = items => _effectApp.Effect.flatMap(cms, cm => decodeMany(items.map(_ => mapReverse(_, cm.set))).pipe(_effectApp.Effect.orDie, _effectApp.Effect.withSpan("parseMany", {
|
|
126
|
+
captureStackTrace: false
|
|
127
|
+
})));
|
|
128
|
+
const parseMany2 = (items, schema) => _effectApp.Effect.flatMap(cms, cm => _effectApp.S.decode(_effectApp.S.Array(schema))(items.map(_ => mapReverse(_, cm.set))).pipe(_effectApp.Effect.orDie, _effectApp.Effect.withSpan("parseMany2", {
|
|
129
|
+
captureStackTrace: false
|
|
130
|
+
})));
|
|
131
|
+
const filter = args => store.filter(
|
|
132
|
+
// always enforce id and _etag because they are system fields, required for etag tracking etc
|
|
133
|
+
{
|
|
134
|
+
...args,
|
|
135
|
+
select: args.select ? dedupe([...args.select, "id", "_etag"]) : undefined
|
|
136
|
+
}).pipe(_effectApp.Effect.tap(items => _effectApp.Effect.map(cms, ({
|
|
137
|
+
set
|
|
138
|
+
}) => items.forEach(_ => set(_.id, _._etag)))));
|
|
139
|
+
// TODO: For raw we should use S.from, and drop the R...
|
|
140
|
+
const query = q => {
|
|
141
|
+
const a = Q.toFilter(q);
|
|
142
|
+
const eff = a.mode === "project" ? filter(a)
|
|
143
|
+
// TODO: mapFrom but need to support per field and dependencies
|
|
144
|
+
.pipe(_effectApp.Effect.andThen((0, _effectApp.flow)(_effectApp.S.decode(_effectApp.S.Array(a.schema ?? schema)), provideRctx))) : a.mode === "collect" ? filter(a)
|
|
145
|
+
// TODO: mapFrom but need to support per field and dependencies
|
|
146
|
+
.pipe(_effectApp.Effect.flatMap((0, _effectApp.flow)(_effectApp.S.decode(_effectApp.S.Array(a.schema)), _effectApp.Effect.map(_effectApp.Array.getSomes), provideRctx))) : _effectApp.Effect.flatMap(filter(a), _ => _effectApp.Unify.unify(a.schema
|
|
147
|
+
// TODO: partial may not match?
|
|
148
|
+
? parseMany2(_, a.schema) : parseMany(_)));
|
|
149
|
+
return (0, _effectApp.pipe)(a.ttype === "one" ? _effectApp.Effect.andThen(eff, (0, _effectApp.flow)(_effectApp.Array.head, _effectApp.Effect.mapError(() => new _client.NotFoundError({
|
|
150
|
+
id: "query",
|
|
151
|
+
/* TODO */type: name
|
|
152
|
+
})))) : a.ttype === "count" ? _effectApp.Effect.andThen(eff, _ => (0, _Schema.NonNegativeInt)(_.length)).pipe(_effectApp.Effect.catchTag("ParseError", e => _effectApp.Effect.die(e))) : eff, _effectApp.Effect.withSpan("Repository.query [effect-app/infra]", {
|
|
153
|
+
captureStackTrace: false,
|
|
154
|
+
attributes: {
|
|
155
|
+
"repository.model_name": name,
|
|
156
|
+
query: {
|
|
157
|
+
...a,
|
|
158
|
+
schema: a.schema ? "__SCHEMA__" : a.schema,
|
|
159
|
+
filter: a.filter
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}));
|
|
163
|
+
};
|
|
164
|
+
const r = {
|
|
165
|
+
changeFeed,
|
|
166
|
+
itemType: name,
|
|
167
|
+
idKey,
|
|
168
|
+
find,
|
|
169
|
+
all,
|
|
170
|
+
saveAndPublish,
|
|
171
|
+
removeAndPublish,
|
|
172
|
+
query(q) {
|
|
173
|
+
// eslint-disable-next-line prefer-rest-params
|
|
174
|
+
return query(typeof q === "function" ? _effectApp.Pipeable.pipeArguments(Q.make(), arguments) : q);
|
|
175
|
+
},
|
|
176
|
+
/**
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
mapped: schema => {
|
|
180
|
+
const dec = _effectApp.S.decode(schema);
|
|
181
|
+
const encMany = _effectApp.S.encode(_effectApp.S.Array(schema));
|
|
182
|
+
const decMany = _effectApp.S.decode(_effectApp.S.Array(schema));
|
|
183
|
+
return {
|
|
184
|
+
all: allE.pipe(_effectApp.Effect.flatMap(decMany), _effectApp.Effect.map(_ => _)),
|
|
185
|
+
find: id => (0, _Effect.flatMapOption)(findE(id), dec),
|
|
186
|
+
// query: (q: any) => {
|
|
187
|
+
// const a = Q.toFilter(q)
|
|
188
|
+
// return filter(a)
|
|
189
|
+
// .pipe(
|
|
190
|
+
// Effect.flatMap(decMany),
|
|
191
|
+
// Effect.map((_) => _ as any[]),
|
|
192
|
+
// Effect.withSpan("Repository.mapped.query [effect-app/infra]", {
|
|
193
|
+
// captureStackTrace: false,
|
|
194
|
+
// attributes: {
|
|
195
|
+
// "repository.model_name": name,
|
|
196
|
+
// query: { ...a, schema: a.schema ? "__SCHEMA__" : a.schema, filter: a.filter.build() }
|
|
197
|
+
// }
|
|
198
|
+
// })
|
|
199
|
+
// )
|
|
200
|
+
// },
|
|
201
|
+
save: (...xes) => _effectApp.Effect.flatMap(encMany(xes), _ => saveAllE(_)).pipe(_effectApp.Effect.withSpan("mapped.save", {
|
|
202
|
+
captureStackTrace: false
|
|
203
|
+
}))
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
return r;
|
|
208
|
+
}).pipe(_effectApp.Effect
|
|
209
|
+
// .withSpan("Repository.make [effect-app/infra]", { attributes: { "repository.model_name": name } })
|
|
210
|
+
.withLogSpan("Repository.make: " + name));
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
make,
|
|
214
|
+
Q: Q.make()
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
const pluralize = s => s.endsWith("s") ? s + "es" : s.endsWith("y") ? s.substring(0, s.length - 1) + "ies" : s + "s";
|
|
219
|
+
function makeStore() {
|
|
220
|
+
return (name, schema, mapTo) => {
|
|
221
|
+
function encodeToEncoded() {
|
|
222
|
+
const getEtag = () => undefined;
|
|
223
|
+
return t => _effectApp.S.encode(schema)(t).pipe(_effectApp.Effect.orDie, _effectApp.Effect.map(_ => mapToPersistenceModel(_, getEtag)));
|
|
224
|
+
}
|
|
225
|
+
function mapToPersistenceModel(e, getEtag) {
|
|
226
|
+
return mapTo(e, getEtag(e.id));
|
|
227
|
+
}
|
|
228
|
+
function makeStore(makeInitial, config) {
|
|
229
|
+
return _effectApp.Effect.gen(function* () {
|
|
230
|
+
const {
|
|
231
|
+
make
|
|
232
|
+
} = yield* _Store.StoreMaker;
|
|
233
|
+
const store = yield* make(pluralize(name), makeInitial ? makeInitial.pipe(_effectApp.Effect.flatMap(_effectApp.Effect.forEach(encodeToEncoded())), (0, _setupRequest.setupRequestContextFromCurrent)("Repository.makeInitial [effect-app/infra]", {
|
|
234
|
+
attributes: {
|
|
235
|
+
"repository.model_name": name
|
|
236
|
+
}
|
|
237
|
+
})) : undefined, {
|
|
238
|
+
...config,
|
|
239
|
+
partitionValue: config?.partitionValue ?? (_ => "primary") /*(isIntegrationEvent(r) ? r.companyId : r.id*/
|
|
240
|
+
});
|
|
241
|
+
return store;
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
return makeStore;
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=internal.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.cjs","names":["_effectApp","require","_Array","_client","_Effect","_Schema","_setupRequest","_Store","_ContextMapContainer","Q","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","dedupe","Array","dedupeWith","Equivalence","string","makeRepoInternal","name","schema","mapFrom","mapTo","idKey","mapToPersistenceModel","getEtag","id","mapReverse","_etag","setEtag","mkStore","makeStore","make","args","Effect","gen","rctx","schemaContext","Context","empty","provideRctx","provide","encodeMany","flow","S","encode","withSpan","captureStackTrace","decode","decodeMany","store","makeInitial","config","cms","andThen","getContextMap","pipe","orDie","_","etag","pub","publishEvents","void","changeFeed","PubSub","unbounded","allE","flatMap","cm","map","all","fieldsSchema","Struct","ast","_tag","typeParameters","s","Union","types","from","pick","encodeId","findEId","find","item","Option","findE","flatMapOption","saveAllE","sync","toNonEmptyArray","items","ret","batchSet","forEach","asVoid","saveAll","fromIterable","saveAndPublish","events","suspend","it","Chunk","publish","toArray","removeAndPublish","remove","undefined","parseMany","parseMany2","filter","select","tap","query","q","toFilter","eff","mode","getSomes","Unify","unify","ttype","head","mapError","NotFoundError","type","NonNegativeInt","length","catchTag","die","attributes","itemType","Pipeable","pipeArguments","arguments","mapped","dec","encMany","decMany","save","xes","withLogSpan","pluralize","endsWith","substring","encodeToEncoded","StoreMaker","setupRequestContextFromCurrent","partitionValue"],"sources":["../../../../src/Model/Repository/internal/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,143 +3,4 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.RepositoryDefaultImpl2 = exports.RepositoryBase = void 0;
|
|
7
|
-
var _effectApp = require("effect-app");
|
|
8
|
-
var Q = _interopRequireWildcard(require("../query.cjs"));
|
|
9
|
-
var _ext = require("./ext.cjs");
|
|
10
|
-
var _makeRepo = require("./makeRepo.cjs");
|
|
11
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
-
const names = new Map();
|
|
14
|
-
const registerName = name => {
|
|
15
|
-
const existing = names.get(name);
|
|
16
|
-
if (existing === undefined) {
|
|
17
|
-
names.set(name, 1);
|
|
18
|
-
return name;
|
|
19
|
-
} else {
|
|
20
|
-
const n = existing + 1;
|
|
21
|
-
names.set(name, n);
|
|
22
|
-
return name + "-" + existing;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* @deprecated
|
|
27
|
-
*/
|
|
28
|
-
const makeRepoFunctions = (tag, itemType) => {
|
|
29
|
-
const {
|
|
30
|
-
all
|
|
31
|
-
} = _effectApp.Effect.serviceConstants(tag);
|
|
32
|
-
const {
|
|
33
|
-
byIdAndSaveWithPure,
|
|
34
|
-
find,
|
|
35
|
-
get,
|
|
36
|
-
query,
|
|
37
|
-
queryAndSavePure,
|
|
38
|
-
removeAndPublish,
|
|
39
|
-
removeById,
|
|
40
|
-
save,
|
|
41
|
-
saveAndPublish,
|
|
42
|
-
saveManyWithPure
|
|
43
|
-
} = _effectApp.Effect.serviceFunctions(tag);
|
|
44
|
-
const mapped = s => _effectApp.Effect.map(tag, _ => _.mapped(s));
|
|
45
|
-
return {
|
|
46
|
-
itemType,
|
|
47
|
-
all,
|
|
48
|
-
byIdAndSaveWithPure,
|
|
49
|
-
find,
|
|
50
|
-
removeById,
|
|
51
|
-
saveAndPublish,
|
|
52
|
-
removeAndPublish,
|
|
53
|
-
save,
|
|
54
|
-
get,
|
|
55
|
-
query,
|
|
56
|
-
mapped,
|
|
57
|
-
queryAndSavePure,
|
|
58
|
-
saveManyWithPure,
|
|
59
|
-
use: body => _effectApp.Effect.andThen(tag, body)
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
/** @deprecated use makeRepo/extendRepo */
|
|
63
|
-
class RepositoryBase {
|
|
64
|
-
impl;
|
|
65
|
-
constructor(impl) {
|
|
66
|
-
this.impl = impl;
|
|
67
|
-
this.saveAndPublish = this.impl.saveAndPublish;
|
|
68
|
-
this.removeAndPublish = this.impl.removeAndPublish;
|
|
69
|
-
this.find = this.impl.find;
|
|
70
|
-
this.all = this.impl.all;
|
|
71
|
-
this.changeFeed = this.impl.changeFeed;
|
|
72
|
-
this.mapped = this.impl.mapped;
|
|
73
|
-
this.query = this.impl.query;
|
|
74
|
-
this.get = this.impl.get;
|
|
75
|
-
this.itemType = this.impl.itemType;
|
|
76
|
-
this.idKey = this.impl.idKey;
|
|
77
|
-
this.log = this.impl.log;
|
|
78
|
-
this.removeById = this.impl.removeById;
|
|
79
|
-
this.save = this.impl.save;
|
|
80
|
-
this.saveWithEvents = this.impl.saveWithEvents;
|
|
81
|
-
this.queryAndSavePure = this.impl.queryAndSavePure;
|
|
82
|
-
this.saveManyWithPure = this.impl.saveManyWithPure;
|
|
83
|
-
this.byIdAndSaveWithPure = this.impl.byIdAndSaveWithPure;
|
|
84
|
-
this.saveWithPure = this.impl.saveWithPure;
|
|
85
|
-
this.request = this.impl.request;
|
|
86
|
-
}
|
|
87
|
-
get;
|
|
88
|
-
idKey;
|
|
89
|
-
request;
|
|
90
|
-
itemType;
|
|
91
|
-
saveAndPublish;
|
|
92
|
-
removeAndPublish;
|
|
93
|
-
find;
|
|
94
|
-
all;
|
|
95
|
-
changeFeed;
|
|
96
|
-
mapped;
|
|
97
|
-
query;
|
|
98
|
-
log;
|
|
99
|
-
removeById;
|
|
100
|
-
save;
|
|
101
|
-
saveWithEvents;
|
|
102
|
-
queryAndSavePure;
|
|
103
|
-
saveManyWithPure;
|
|
104
|
-
byIdAndSaveWithPure;
|
|
105
|
-
saveWithPure;
|
|
106
|
-
}
|
|
107
|
-
exports.RepositoryBase = RepositoryBase;
|
|
108
|
-
const RepositoryDefaultImpl2 = () => {
|
|
109
|
-
const f = (itemType, schema, options) => {
|
|
110
|
-
let layerCache = undefined;
|
|
111
|
-
let layerCache2 = undefined;
|
|
112
|
-
class Cls extends RepositoryBase {
|
|
113
|
-
static Q = Q.make();
|
|
114
|
-
static get DefaultWithoutDependencies() {
|
|
115
|
-
const self = this;
|
|
116
|
-
return layerCache ??= _effectApp.Effect.gen(function* () {
|
|
117
|
-
const opts = yield* options.options ?? _effectApp.Effect.succeed({});
|
|
118
|
-
const mkRepo = (0, _makeRepo.makeRepoInternal)()(itemType, schema, options?.jitM ? pm => options.jitM(pm) : pm => pm, (e, _etag) => ({
|
|
119
|
-
...e,
|
|
120
|
-
_etag
|
|
121
|
-
}), options.idKey ?? "id");
|
|
122
|
-
const r = yield* mkRepo.make({
|
|
123
|
-
...options,
|
|
124
|
-
...opts
|
|
125
|
-
});
|
|
126
|
-
const repo = new self(Object.assign((0, _ext.extendRepo)(r), "ext" in opts ? opts.ext : {}));
|
|
127
|
-
return _effectApp.Layer.succeed(self, repo);
|
|
128
|
-
}).pipe(_effectApp.Layer.unwrapEffect);
|
|
129
|
-
}
|
|
130
|
-
static get Default() {
|
|
131
|
-
const self = this;
|
|
132
|
-
return layerCache2 ??= options.dependencies ? self.DefaultWithoutDependencies.pipe(_effectApp.Layer.provide(options.dependencies)) : self.DefaultWithoutDependencies;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
const limit = Error.stackTraceLimit;
|
|
136
|
-
Error.stackTraceLimit = 2;
|
|
137
|
-
const creationError = new Error();
|
|
138
|
-
Error.stackTraceLimit = limit;
|
|
139
|
-
// TODO: actual class name or expect a string identifier - careful with overlapping between modules
|
|
140
|
-
return _effectApp.Context.assignTag(registerName(itemType + "Repo"), creationError)(Object.assign(Cls, makeRepoFunctions(Cls, itemType))); // impl is missing, but its marked protected
|
|
141
|
-
};
|
|
142
|
-
return f;
|
|
143
|
-
};
|
|
144
|
-
exports.RepositoryDefaultImpl2 = RepositoryDefaultImpl2;
|
|
145
6
|
//# sourceMappingURL=legacy.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.cjs","names":[
|
|
1
|
+
{"version":3,"file":"legacy.cjs","names":[],"sources":["../../../src/Model/Repository/legacy.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
|