@effect-app/infra 0.164.3 → 0.164.4
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 +9 -0
- package/_cjs/api/routing/base.cjs +5 -5
- package/_cjs/api/routing/base.cjs.map +1 -1
- package/_cjs/api/routing/defaultErrorHandler.cjs +1 -1
- package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/routing/makeRequestHandler.cjs +9 -10
- package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +5 -5
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +1 -2
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +10 -11
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +8 -9
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/logger/shared.cjs +1 -2
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +6 -6
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +3 -3
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +3 -3
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +11 -12
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +12 -13
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +45 -46
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +4 -4
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +15 -16
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +5 -5
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +43 -44
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +5 -6
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +13 -14
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +2 -3
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +3 -3
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +14 -14
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +11 -11
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +2 -2
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +2 -2
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +5 -5
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/dist/api/routing/base.js +16 -6
- package/dist/api/routing/defaultErrorHandler.js +2 -2
- package/dist/api/routing/makeRequestHandler.js +13 -11
- package/dist/api/setupRequest.js +10 -7
- package/dist/errorReporter.js +2 -3
- package/dist/logger/jsonLogger.js +11 -12
- package/dist/logger/logFmtLogger.js +10 -11
- package/dist/logger/shared.js +2 -3
- package/dist/rateLimit.js +11 -7
- package/dist/services/Operations/live.js +8 -5
- package/dist/services/Operations/service.js +11 -7
- package/dist/services/QueueMaker/memQueue.js +11 -11
- package/dist/services/Repository.js +14 -14
- package/dist/services/RepositoryBase.js +50 -47
- package/dist/services/RequestContextContainer.js +5 -4
- package/dist/services/Store/ContextMapContainer.js +3 -2
- package/dist/services/Store/Cosmos.js +27 -20
- package/dist/services/Store/Disk.js +7 -6
- package/dist/services/Store/Memory.js +52 -47
- package/dist/services/Store/Redis.js +10 -8
- package/dist/services/Store/utils.js +5 -5
- package/dist/services/simpledb/cosmosdb.js +4 -4
- package/dist/services/simpledb/diskdb.js +22 -20
- package/dist/services/simpledb/memdb.js +15 -13
- package/dist/services/simpledb/mongodb.js +6 -3
- package/dist/services/simpledb/redisdb.js +5 -3
- package/dist/services/simpledb/simpledb.js +9 -6
- package/package.json +5 -5
package/dist/rateLimit.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Effect";
|
|
2
|
-
import * as tsplus_module_2 from "@effect-app/core/
|
|
3
|
-
import * as tsplus_module_3 from "@effect-app/core/
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/core/Array";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
|
|
4
4
|
// /**
|
|
5
5
|
// * Executes the specified effect, acquiring the specified number of permits
|
|
6
6
|
// * immediately before the effect begins execution and releasing them
|
|
@@ -36,7 +36,8 @@ import * as tsplus_module_3 from "@effect-app/core/Array";
|
|
|
36
36
|
*/
|
|
37
37
|
export function SEM_withPermitsDuration(permits, duration) {
|
|
38
38
|
return (self) => {
|
|
39
|
-
return (effect) => tsplus_module_1.uninterruptibleMask((restore) =>
|
|
39
|
+
return (effect) => tsplus_module_1.uninterruptibleMask((restore) => restore(self.take(permits))
|
|
40
|
+
.andThen(tsplus_module_1.ensuring(restore(effect), tsplus_module_1.delay(self
|
|
40
41
|
.release(permits), duration))));
|
|
41
42
|
};
|
|
42
43
|
}
|
|
@@ -45,14 +46,16 @@ export function SEM_withPermitsDuration(permits, duration) {
|
|
|
45
46
|
* @tsplus static Collection.Ops batchPar
|
|
46
47
|
*/
|
|
47
48
|
export function batchPar(n, forEachItem, forEachBatch) {
|
|
48
|
-
return (items) =>
|
|
49
|
+
return (items) => tsplus_module_3.ext_forEach(tsplus_module_2.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(_
|
|
50
|
+
.forEachEffect((_, j) => forEachItem(_, j, i), { concurrency: "inherit" }), (_) => forEachBatch(_, i)), { concurrency: "inherit" });
|
|
49
51
|
}
|
|
50
52
|
/**
|
|
51
53
|
* @tsplus pipeable Iterable batch
|
|
52
54
|
* @tsplus static Collection.Ops batch
|
|
53
55
|
*/
|
|
54
56
|
export function batch(n, forEachItem, forEachBatch) {
|
|
55
|
-
return (items) =>
|
|
57
|
+
return (items) => tsplus_module_3.ext_forEach(tsplus_module_2.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(_
|
|
58
|
+
.forEachEffect((_, j) => forEachItem(_, j, i), { concurrency: "inherit" }), (_) => forEachBatch(_, i)));
|
|
56
59
|
}
|
|
57
60
|
// /**
|
|
58
61
|
// * @tsplus pipeable Iterable rateLimit
|
|
@@ -78,6 +81,7 @@ export function batch(n, forEachItem, forEachBatch) {
|
|
|
78
81
|
* @tsplus static Collection.Ops naiveRateLimit
|
|
79
82
|
*/
|
|
80
83
|
export function naiveRateLimit(n, d) {
|
|
81
|
-
return (items) => ((forEachItem, forEachBatch) =>
|
|
84
|
+
return (items) => ((forEachItem, forEachBatch) => tsplus_module_3.ext_forEach(tsplus_module_2.chunk_(items, n), (batch, i) => tsplus_module_1.zipRight(((i === 0) ? tsplus_module_1.unit : tsplus_module_1.sleep(d)), tsplus_module_1.flatMap(batch
|
|
85
|
+
.forEachEffect(forEachItem, { concurrency: n }), forEachBatch))));
|
|
82
86
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9yYXRlTGltaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTTtBQUNOLDhFQUE4RTtBQUM5RSx1RUFBdUU7QUFDdkUsbUZBQW1GO0FBQ25GLCtCQUErQjtBQUMvQixLQUFLO0FBQ0wsa0VBQWtFO0FBQ2xFLGdFQUFnRTtBQUNoRSxNQUFNO0FBQ04sNkVBQTZFO0FBQzdFLDBGQUEwRjtBQUMxRix1QkFBdUI7QUFDdkIsb0NBQW9DO0FBQ3BDLHFCQUFxQjtBQUNyQixtREFBbUQ7QUFDbkQsZ0NBQWdDO0FBQ2hDLDJCQUEyQjtBQUMzQix5Q0FBeUM7QUFDekMsNEJBQTRCO0FBQzVCLHFDQUFxQztBQUNyQyxrQkFBa0I7QUFDbEIsVUFBVTtBQUNWLE1BQU07QUFDTixJQUFJO0FBRUo7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFFBQWtCO0lBQ3pFLE9BQU8sQ0FBQyxJQUFlLEVBQXlELEVBQUU7UUFDaEYsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2hCLG9DQUNFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QixPQUFPLENBQ04seUJBQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUVYLHNCQUFBLElBQUk7YUFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ1YsUUFBUSxDQUFDLENBQ25CLENBQ0osQ0FDTixDQUFBO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLENBQVMsRUFDVCxXQUErRSxFQUMvRSxZQUFvRTtJQUVwRSxPQUFPLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQzVCLDRCQUFBLHVCQUFBLEtBQUssRUFDSSxDQUFDLENBQUMsRUFFUCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNQLHdCQUFBLENBQUM7U0FDRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUNqRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDM0QsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQzNCLENBQUE7QUFDUCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDbkIsQ0FBUyxFQUNULFdBQStFLEVBQy9FLFlBQW9FO0lBRXBFLE9BQU8sQ0FBQyxLQUFrQixFQUFFLEVBQUUsQ0FDNUIsNEJBQUEsdUJBQUEsS0FBSyxFQUNJLENBQUMsQ0FBQyxFQUNNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ3RCLHdCQUFBLENBQUM7U0FDRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUNqRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQTtBQUNQLENBQUM7QUFFRCxNQUFNO0FBQ04seUNBQXlDO0FBQ3pDLDZDQUE2QztBQUM3QyxNQUFNO0FBQ04sNkJBQTZCO0FBQzdCLGVBQWU7QUFDZixXQUFXO0FBQ1gsTUFBTTtBQUNOLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxXQUFXO0FBQ1gscUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0Qix3Q0FBd0M7QUFDeEMsbUZBQW1GO0FBQ25GLHNCQUFzQjtBQUN0QixJQUFJO0FBRUo7OztHQUdHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsQ0FBUyxFQUNULENBQU07SUFFTixPQUFPLENBQUksS0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNqQyxXQUFzQyxFQUN0QyxZQUE0QyxFQUM1QyxFQUFFLENBQ0YsNEJBQUEsdUJBQUEsS0FBSyxFQUNJLENBQUMsQ0FBQyxFQUNNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzFCLHlCQUFBLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBYSxDQUFDLENBQUMsc0JBQWEsQ0FBQyxDQUFDLENBQUMsRUFFdkMsd0JBQUEsS0FBSztTQUNGLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFDdEMsWUFBWSxDQUFDLENBQ3pCLENBQ0osQ0FBQyxDQUFBO0FBQ1IsQ0FBQyJ9
|
|
@@ -23,7 +23,7 @@ const make = tsplus_module_1.sync(() => {
|
|
|
23
23
|
const before = tsplus_module_2.DateSubHours(new Date(), 1);
|
|
24
24
|
tsplus_module_5.forEach(tsplus_module_4.ext_itToChunk(ops
|
|
25
25
|
.entries()), ([id, op]) => {
|
|
26
|
-
const lastChanged = tsplus_module_3.
|
|
26
|
+
const lastChanged = tsplus_module_3.fromNullable(op.updatedAt).getOrElse(() => op.createdAt);
|
|
27
27
|
if (lastChanged < before) {
|
|
28
28
|
ops.delete(id);
|
|
29
29
|
}
|
|
@@ -52,10 +52,11 @@ const make = tsplus_module_1.sync(() => {
|
|
|
52
52
|
? tsplus_module_8.NonEmptyString2k("Interrupted")
|
|
53
53
|
: tsplus_module_7.isDie(exit.cause)
|
|
54
54
|
? tsplus_module_8.NonEmptyString2k("Unknown error")
|
|
55
|
-
:
|
|
55
|
+
: tsplus_module_3.flatMap(tsplus_module_7.failureOption(exit
|
|
56
56
|
.cause), (_) => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_9.is(tsplus_module_8.NonEmptyString2k)(_.message)
|
|
57
57
|
? tsplus_module_3.some(_.message)
|
|
58
|
-
: tsplus_module_10.none)
|
|
58
|
+
: tsplus_module_10.none)
|
|
59
|
+
.value ?? null
|
|
59
60
|
})
|
|
60
61
|
});
|
|
61
62
|
}));
|
|
@@ -70,7 +71,9 @@ const make = tsplus_module_1.sync(() => {
|
|
|
70
71
|
}
|
|
71
72
|
return {
|
|
72
73
|
cleanup,
|
|
73
|
-
register:
|
|
74
|
+
register: makeOp
|
|
75
|
+
.tap((id) => tsplus_module_11.annotateLogscoped("operationId", id)
|
|
76
|
+
.andThen(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))),
|
|
74
77
|
find: findOp,
|
|
75
78
|
update
|
|
76
79
|
};
|
|
@@ -87,4 +90,4 @@ const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.schedule(tsplus_m
|
|
|
87
90
|
* @tsplus static Operations.Ops Live
|
|
88
91
|
*/
|
|
89
92
|
export const Live = tsplus_module_14.provideMerge(tsplus_module_14.scopedDiscard(cleanupLoop), tsplus_module_14.effect(Operations)(make));
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBRXhELE1BQU0sSUFBSSxHQUFHLHFCQUFZLEdBQWUsRUFBRTtJQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQTtJQUM3QyxNQUFNLE1BQU0sR0FBRyxxQkFBWSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVwRCxNQUFNLE9BQU8sR0FBRyx5QkFBQSxxQkFDUixHQUFHLEVBQUU7UUFDVCxNQUFNLE1BQU0sR0FBRyw2QkFBQSxJQUFJLElBQUksRUFBRSxFQUFVLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLHNEQUFBLEdBQUc7YUFDQSxPQUFPLEVBQUUsR0FFRCxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxXQUFXLEdBQUcsNkJBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ25GLElBQUksV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxFQUNRLG9CQUFvQixDQUFDLENBQUE7SUFFakMsU0FBUyxLQUFLLENBQUMsRUFBZTtRQUM1QixPQUFPLHFCQUFZLEdBQUcsRUFBRTtZQUN0QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxTQUFTLE1BQU0sQ0FBQyxFQUFlO1FBQzdCLE9BQU8scUJBQVksR0FBRyxFQUFFLENBQUMsNkJBQW9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFDRCxTQUFTLFFBQVEsQ0FBQyxFQUFlLEVBQUUsSUFBNEI7UUFDN0QsT0FBTyx3QkFBQSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5QixxQkFBWSxHQUFHLEVBQUU7WUFDZixJQUFJLHVCQUFBLENBQUMsQ0FBUyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUM5QixDQUFDO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLENBQUMsS0FBSztnQkFDVixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSwwQkFBQSxJQUFJLENBQVk7b0JBQ3RCLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRTtvQkFDZixDQUFDLENBQUMsSUFBSSxPQUFPLENBQUM7d0JBQ1osT0FBTyxFQUFFLDhCQUFBLElBQUksQ0FBQyxLQUFLLENBQWdCOzRCQUNqQyxDQUFDLENBQUMsZ0JBQUEsZ0JBQWdCLENBQUMsYUFBYSxDQUFDOzRCQUNqQyxDQUFDLENBQUMsc0JBQUEsSUFBSSxDQUFDLEtBQUssQ0FBUTtnQ0FDcEIsQ0FBQyxDQUFDLGdCQUFBLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztnQ0FDbkMsQ0FBQyxDQUFDLHNEQUFBLElBQUk7cUNBQ0gsS0FBSyxHQUVHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDYixPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLG1DQUFBLGdCQUFnQixFQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7b0NBQ3JGLENBQUMsQ0FBQyxxQkFBWSxDQUFDLENBQUMsT0FBTyxDQUFDO29DQUN4QixDQUFDLHNCQUFZLENBQ2hCO3FDQUNBLEtBQUssSUFBSSxJQUFJO3FCQUNuQixDQUFDO2FBQ0wsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFDRCxTQUFTLE1BQU0sQ0FBQyxFQUFlLEVBQUUsUUFBMkI7UUFDMUQsT0FBTyx3QkFBQSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5QixxQkFBWSxHQUFHLEVBQUU7WUFDZixJQUFJLHVCQUFBLENBQUMsQ0FBUyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUM5QixDQUFDO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUM5RCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU87UUFDTCxPQUFPO1FBQ1AsUUFBUSxFQUFFLE1BQU07YUFDYixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNWLG1DQUNxQixhQUFhLEVBQUUsRUFBRSxDQUFDO2FBQ3BDLE9BQU8sQ0FDTiwrQkFBQSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQ1AsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUNoQyxDQUNGLENBQ0o7UUFFSCxJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFRixNQUFNLFdBQVcsOEJBQUcseUJBQUEsNkNBQUEsd0JBQUEsVUFBVSxFQUNuQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUVqQixDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2IsSUFBSSwwQkFBQSxDQUFDLENBQVksRUFBRSxDQUFDO1FBQ2xCLDRCQUFrQjtJQUNwQixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLEVBQ1EsdUJBQWUseUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbkMsQ0FBQTtBQUViOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLDZEQUFBLFdBQVcsR0FFZix3QkFBYSxVQUFVLEVBQXZCLElBQUksQ0FBb0IsQ0FBQyxDQUFBIn0=
|
|
@@ -14,8 +14,9 @@ export class Operations extends tsplus_module_1.TagClass() {
|
|
|
14
14
|
*/
|
|
15
15
|
function forkOperation_1(self) {
|
|
16
16
|
return tsplus_module_3.flatMap(Operations, (Operations) => tsplus_module_3.flatMap(Scope
|
|
17
|
-
.make(), (scope) =>
|
|
18
|
-
.register, scope)
|
|
17
|
+
.make(), (scope) => Scope.extend(Operations
|
|
18
|
+
.register, scope)
|
|
19
|
+
.tap(() => tsplus_module_2.forkDaemonReportRequestUnexpected(Scope.use(self, scope)))));
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* @tsplus getter function forkOperation
|
|
@@ -28,15 +29,18 @@ export function forkOperationFunction(fnc) {
|
|
|
28
29
|
*/
|
|
29
30
|
export function forkOperation2(self) {
|
|
30
31
|
return tsplus_module_3.flatMap(Operations, (Operations) => tsplus_module_3.flatMap(Scope
|
|
31
|
-
.make(), (scope) =>
|
|
32
|
-
.register, scope)
|
|
32
|
+
.make(), (scope) => Scope.extend(Operations
|
|
33
|
+
.register, scope)
|
|
34
|
+
.tap((id) => tsplus_module_2.forkDaemonReportRequestUnexpected(Scope.use(self(id), scope)))));
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* @tsplus static effect/io/Effect.Ops forkOperationWithEffect
|
|
36
38
|
*/
|
|
37
39
|
export function forkOperationWithEffect(self, fnc) {
|
|
38
40
|
return tsplus_module_3.flatMap(Operations, (Operations) => tsplus_module_3.flatMap(Scope
|
|
39
|
-
.make(), (scope) =>
|
|
40
|
-
.register, scope)
|
|
41
|
+
.make(), (scope) => Scope.extend(Operations
|
|
42
|
+
.register, scope)
|
|
43
|
+
.tap((opId) => tsplus_module_2.forkDaemonReportRequestUnexpected(Scope.use(self(opId), scope)))
|
|
44
|
+
.tap((opId) => Scope.extend(tsplus_module_3.forkScoped(tsplus_module_3.interruptible(fnc(opId))), scope))));
|
|
41
45
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OzthQXNCZ0IsYUFBYTtBQXJCN0IsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFFckM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVcsU0FBUSxnQkFBQSxRQUFRLEVBS3hCO0NBQUc7QUFPbkI7O0dBRUc7QUFDSCx5QkFBdUMsSUFBcUI7SUFDMUQsT0FBTyx3QkFBQSxVQUFVLEVBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLHdCQUFBLEtBQUs7U0FDRixJQUFJLEVBQUUsRUFDRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEFBM0JFLEtBQUssUUEyQlAsVUFBVTtTQUNQLFFBQVEsRUFDRCxLQUFLLENBQUM7U0FDYixHQUFHLENBQUMsR0FBRyxFQUFFLG1EQUFDLEFBOUJYLEtBQUssS0E4Qk0sSUFBSSxFQUFLLEtBQUssQ0FBQyxDQUFrQyxDQUFDLENBQ2hFLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBZSxHQUFrQztJQUNwRixPQUFPLENBQUMsR0FBUSxFQUFFLEVBQUUsaUJBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFjLENBQUE7QUFDN0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBVSxJQUE0QztJQUNsRixPQUFPLHdCQUFBLFVBQVUsRUFDZixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2Isd0JBQUEsS0FBSztTQUNGLElBQUksRUFBRSxFQUNFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDakIsQUFuREUsS0FBSyxRQW1EUCxVQUFVO1NBQ1AsUUFBUSxFQUNELEtBQUssQ0FBQztTQUNiLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLG1EQUFDLEFBdERiLEtBQUssS0FzRFEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFLLEtBQUssQ0FBQyxDQUFrQyxDQUFDLENBQ3RFLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsSUFBMEMsRUFDMUMsR0FBNEM7SUFFNUMsT0FBTyx3QkFBQSxVQUFVLEVBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLHdCQUFBLEtBQUs7U0FDRixJQUFJLEVBQUUsRUFDRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEFBdkVFLEtBQUssUUF1RVAsVUFBVTtTQUNQLFFBQVEsRUFDRCxLQUFLLENBQUM7U0FDYixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxtREFBQyxBQTFFZixLQUFLLEtBMEVVLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBSyxLQUFLLENBQUMsQ0FBa0MsQ0FBQztTQUN0RSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEFBM0VmLEtBQUssaUVBMkVVLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBaUMsS0FBSyxDQUFDLENBQUMsQ0FDbkUsQ0FDTixDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -2,11 +2,10 @@ import * as tsplus_module_1 from "@effect-app/prelude/schema";
|
|
|
2
2
|
import * as tsplus_module_2 from "@effect/schema/Schema";
|
|
3
3
|
import * as tsplus_module_3 from "effect/Effect";
|
|
4
4
|
import * as tsplus_module_4 from "@effect-app/core/Function";
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/
|
|
6
|
-
import * as tsplus_module_6 from "@effect-app/
|
|
7
|
-
import * as tsplus_module_7 from "@effect-app/
|
|
8
|
-
import * as tsplus_module_8 from "
|
|
9
|
-
import * as tsplus_module_9 from "effect/Fiber";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/infra/services/QueueMaker/errors";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/prelude/utils";
|
|
7
|
+
import * as tsplus_module_7 from "@effect-app/infra/api/setupRequest";
|
|
8
|
+
import * as tsplus_module_8 from "effect/Fiber";
|
|
10
9
|
import { MemQueue } from "@effect-app/infra-adapters/memQueue";
|
|
11
10
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
12
11
|
import { RequestId } from "@effect-app/prelude/ids";
|
|
@@ -31,9 +30,10 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
31
30
|
const requestContext = yield* $(rcc.requestContext);
|
|
32
31
|
const currentSpan = yield* $(tsplus_module_3.orDie(tsplus_module_3.currentSpan));
|
|
33
32
|
const span = Tracer.externalSpan(currentSpan);
|
|
34
|
-
return yield* $(
|
|
33
|
+
return yield* $(tsplus_module_5.forkDaemonReportQueue(messages
|
|
34
|
+
.forEachEffect((m) => tsplus_module_3.asUnit(
|
|
35
35
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
36
|
-
tsplus_module_3.flatMap(tsplus_module_3.
|
|
36
|
+
tsplus_module_3.flatMap(tsplus_module_3.orDie(tsplus_module_2.encode(wireSchema)({ body: m, meta: { requestContext, span } })).andThen(JSON.stringify)
|
|
37
37
|
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
38
38
|
, (_) => q.offer(_))))));
|
|
39
39
|
}),
|
|
@@ -41,8 +41,8 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
41
41
|
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
42
42
|
const processMessage = (msg) =>
|
|
43
43
|
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
44
|
-
tsplus_module_3.flatMap(tsplus_module_3.orDie(tsplus_module_3.flatMap(tsplus_module_3.sync(() => JSON.parse(msg)), parseDrain)), ({ body, meta }) => tsplus_module_3.withSpan(
|
|
45
|
-
.pipe(tsplus_module_3.annotateLogs({ body:
|
|
44
|
+
tsplus_module_3.flatMap(tsplus_module_3.orDie(tsplus_module_3.flatMap(tsplus_module_3.sync(() => JSON.parse(msg)), parseDrain)), ({ body, meta }) => tsplus_module_3.withSpan(tsplus_module_7.setupRequestContext(tsplus_module_3.zipRight(tsplus_module_3.logDebug(`$$ [${queueDrainName}] Processing incoming message`)
|
|
45
|
+
.pipe(tsplus_module_3.annotateLogs({ body: tsplus_module_6.RecordPretty(tsplus_module_6.object$(body)), meta: tsplus_module_6.RecordPretty(tsplus_module_6.object$(meta)) })), handleEvent(body))
|
|
46
46
|
.pipe(silenceAndReportError), RequestContext.inherit(meta.requestContext, {
|
|
47
47
|
id: RequestId(body.id),
|
|
48
48
|
locale: "en",
|
|
@@ -54,7 +54,7 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
54
54
|
: undefined
|
|
55
55
|
}));
|
|
56
56
|
return yield* $(tsplus_module_3.forkScoped(tsplus_module_3.forever(tsplus_module_3.flatMap(qDrain
|
|
57
|
-
.take, (x) => tsplus_module_3.flatMap(tsplus_module_3.fork(tsplus_module_3.uninterruptible(processMessage(x))), (_) =>
|
|
57
|
+
.take, (x) => tsplus_module_3.flatMap(tsplus_module_3.fork(tsplus_module_3.uninterruptible(processMessage(x))), (_) => tsplus_module_8.join(_)))
|
|
58
58
|
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
59
59
|
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
60
60
|
.pipe(silenceAndReportError))));
|
|
@@ -62,4 +62,4 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
62
62
|
};
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN6RCxPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV4RDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBTTFCLFNBQWlCLEVBQ2pCLGNBQXNCLEVBQ3RCLE1BQWtDLEVBQ2xDLFdBQWlEO0lBRWpELE9BQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDOUIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUM3RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUU3QyxNQUFNLFVBQVUsR0FBRyxnQkFBQSxNQUFNLENBQUMsRUFBRSxJ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
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect-app/prelude/Pure";
|
|
2
2
|
import * as tsplus_module_2 from "@effect-app/prelude/_ext/misc";
|
|
3
3
|
import * as tsplus_module_3 from "effect/Effect";
|
|
4
|
-
import * as tsplus_module_4 from "effect/
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/
|
|
6
|
-
import * as tsplus_module_6 from "@effect-app/core/
|
|
7
|
-
import * as tsplus_module_7 from "@effect-app/core/
|
|
8
|
-
import * as tsplus_module_8 from "@effect-app/core/Effect";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/prelude/schema";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/core/Array";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/core/_ext/Iterable";
|
|
7
|
+
import * as tsplus_module_7 from "@effect-app/core/Effect";
|
|
9
8
|
export const get = get_1;
|
|
10
9
|
export const projectEffect = projectEffect_1;
|
|
11
10
|
export const queryEffect = queryEffect_1;
|
|
@@ -41,7 +40,7 @@ function projectEffect_1(self, map) {
|
|
|
41
40
|
// TODO: a projection that gets sent to the db instead.
|
|
42
41
|
return tsplus_module_3.flatMap(map, (f) => tsplus_module_3.map(self
|
|
43
42
|
.utils
|
|
44
|
-
.filter(f), (_) => f.collect ?
|
|
43
|
+
.filter(f), (_) => f.collect ? _.filterMap(f.collect) : _));
|
|
45
44
|
}
|
|
46
45
|
export function project(self, map) {
|
|
47
46
|
return projectEffect_1(self, tsplus_module_3.sync(() => map));
|
|
@@ -51,7 +50,7 @@ export function project(self, map) {
|
|
|
51
50
|
* @tsplus fluent Repository project
|
|
52
51
|
*/
|
|
53
52
|
export function count(self, filter) {
|
|
54
|
-
return tsplus_module_3.map(projectEffect_1(self, tsplus_module_3.sync(() => ({ filter }))), (_) =>
|
|
53
|
+
return tsplus_module_3.map(projectEffect_1(self, tsplus_module_3.sync(() => ({ filter }))), (_) => tsplus_module_4.NonNegativeInt(_.length));
|
|
55
54
|
}
|
|
56
55
|
/**
|
|
57
56
|
* @tsplus fluent Repository queryEffect
|
|
@@ -59,12 +58,13 @@ export function count(self, filter) {
|
|
|
59
58
|
function queryEffect_1(self,
|
|
60
59
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
61
60
|
map) {
|
|
62
|
-
return tsplus_module_3.flatMap(map, (f) => tsplus_module_3.map(tsplus_module_3.flatMap((f.filter ? self.utils.filter(f) : self.utils.all), (_) => self.utils.parseMany(_)), (_) => f.collect ?
|
|
61
|
+
return tsplus_module_3.flatMap(map, (f) => tsplus_module_3.map(tsplus_module_3.flatMap((f.filter ? self.utils.filter(f) : self.utils.all), (_) => self.utils.parseMany(_)), (_) => f.collect ? _.filterMap(f.collect) : _));
|
|
63
62
|
}
|
|
64
63
|
function queryOneEffect_1(self,
|
|
65
64
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
66
65
|
map) {
|
|
67
|
-
return tsplus_module_3.flatMap(map, (f) => tsplus_module_3.flatMap(tsplus_module_3.flatMap((f.filter ? self.utils.filter({ filter: f.filter, limit: 1 }) : self.utils.all), (_) => self.utils.parseMany(_)), (_) => tsplus_module_3.map(tsplus_module_2.encaseMaybeInEffect_(
|
|
66
|
+
return tsplus_module_3.flatMap(map, (f) => tsplus_module_3.flatMap(tsplus_module_3.flatMap((f.filter ? self.utils.filter({ filter: f.filter, limit: 1 }) : self.utils.all), (_) => self.utils.parseMany(_)), (_) => tsplus_module_3.map(tsplus_module_2.encaseMaybeInEffect_((f.collect ? _.filterMap(f.collect) : _)
|
|
67
|
+
.toNonEmpty, () => new NotFoundError({ type: self.itemType, id: f.filter })), (_) => _[0])));
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
70
|
* @tsplus fluent Repository query
|
|
@@ -155,7 +155,7 @@ export function saveManyWithPureBatched(self, batchSize = 100) {
|
|
|
155
155
|
* @tsplus fluent Repository saveManyWithPureBatched_
|
|
156
156
|
*/
|
|
157
157
|
function saveManyWithPureBatched_1(self, items, pure, batchSize = 100) {
|
|
158
|
-
return
|
|
158
|
+
return tsplus_module_6.ext_forEach(tsplus_module_5.chunk_(items, batchSize), (batch) => saveAllWithEffectInt(self, tsplus_module_1.runTerm(pure, batch)));
|
|
159
159
|
}
|
|
160
160
|
const anyDSL = makeDSL();
|
|
161
161
|
export function makeAllDSL() {
|
|
@@ -183,7 +183,7 @@ export function makeDSL() {
|
|
|
183
183
|
return tsplus_module_3.flatMap(dsl.get, (items) => pure(items, dsl));
|
|
184
184
|
}
|
|
185
185
|
function update(pure) {
|
|
186
|
-
return tsplus_module_3.flatMap(dsl.get, (items) =>
|
|
186
|
+
return tsplus_module_3.flatMap(dsl.get, (items) => pure(items, dsl.log).tap(dsl.set));
|
|
187
187
|
}
|
|
188
188
|
function withDSL(pure) {
|
|
189
189
|
return pure(AnyPureDSL);
|
|
@@ -194,13 +194,13 @@ export function makeDSL() {
|
|
|
194
194
|
});
|
|
195
195
|
}
|
|
196
196
|
export function ifAny(fn) {
|
|
197
|
-
return (items) =>
|
|
197
|
+
return (items) => tsplus_module_7.flatMapOption(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(items)), fn);
|
|
198
198
|
}
|
|
199
199
|
/**
|
|
200
200
|
* @tsplus fluent Iterable ifAny
|
|
201
201
|
*/
|
|
202
202
|
export function ifAny_(items, fn) {
|
|
203
|
-
return
|
|
203
|
+
return tsplus_module_7.flatMapOption(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(items)), fn);
|
|
204
204
|
}
|
|
205
205
|
/**
|
|
206
206
|
* @tsplus getter Repository save
|
|
@@ -214,4 +214,4 @@ export function save(self) {
|
|
|
214
214
|
export function saveWithEvents(self) {
|
|
215
215
|
return (events) => (...items) => self.saveAndPublish(items, events);
|
|
216
216
|
}
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvc2VydmljZXMvUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O2FBb0NnQixHQUFHO2FBeUVILGFBQWE7YUEyR2IsV0FBVzthQWdEWCxjQUFjO2FBcUhkLHlCQUF5QjthQXFEekIsc0JBQXNCO2FBaUR0QixtQkFBbUI7YUE2Qm5CLGlCQUFpQjthQXdCakIsYUFBYTthQTZDYiw2QkFBNkI7YUFxRDdCLHdCQUF3QjtBQXRuQnhDLE9BQXFCLDBCQUEwQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFxQjVDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBMkI7SUFDaEQsR0FBRyxFQUFFLHFCQUFVO0lBQ2YsR0FBRyxxQkFBVTtJQUNiLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBVSxFQUFFLEVBQUUsQ0FBQyx3QkFBYSxHQUFHLENBQUM7Q0FDMUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsZUFNRSxJQUEyQyxFQUMzQyxFQUFXO0lBRVgsT0FBTyx3QkFBQSxJQUFJO1NBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUNBLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQ0FBQSxDQUFDLEVBQWdCLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckcsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FLakIsQ0FBd0M7SUFDeEMsT0FBTyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMxQyxDQUFDO0FBaURELHlCQVVFLElBQTJDLEVBQzNDLEdBVUM7SUFFRCx1REFBdUQ7SUFDdkQsT0FBTyx3QkFBQSxH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
|