@effect-app/infra 0.13.0 → 0.14.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 +14 -0
- package/_cjs/api/codec.cjs +2 -4
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +18 -21
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +4 -4
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +5 -7
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +49 -49
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +22 -22
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +6 -17
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +63 -63
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +2 -4
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +6 -8
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +11 -13
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +1 -1
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -3
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +6 -8
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +12 -18
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +4 -7
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +23 -26
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +3 -5
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +28 -28
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +56 -56
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +15 -16
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +14 -16
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +22 -23
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +1 -1
- package/_cjs/services/Store/index.cjs +7 -7
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +2 -4
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +16 -17
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +23 -25
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +20 -21
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +10 -10
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +18 -18
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +23 -23
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/shared.cjs +4 -6
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +15 -14
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/errors.ts +1 -1
- package/_src/services/simpledb/memdb.ts +1 -1
- package/dist/RequestContext.d.ts +12 -12
- package/dist/api/codec.js +3 -5
- package/dist/api/defaultErrorHandler.js +20 -21
- package/dist/api/express/makeJsonSchema.js +3 -5
- package/dist/api/express/makeOpenApiSpecs.js +5 -7
- package/dist/api/express/schema/requestHandler.d.ts +5 -5
- package/dist/api/express/schema/requestHandler.js +45 -45
- package/dist/api/express/schema/routing.js +21 -23
- package/dist/api/reportError.js +6 -18
- package/dist/api/routing.js +60 -60
- package/dist/api/setupRequest.js +3 -5
- package/dist/api/writeDocs.js +7 -9
- package/dist/errorReporter.js +10 -12
- package/dist/errors.js +2 -2
- package/dist/instrument.js +2 -4
- package/dist/rateLimit.js +7 -9
- package/dist/services/Emailer/Sendgrid.js +15 -22
- package/dist/services/Emailer/fake.js +5 -8
- package/dist/services/Emailer/service.d.ts +1 -1
- package/dist/services/Operations/live.js +24 -27
- package/dist/services/Operations/service.js +4 -6
- package/dist/services/Repository.d.ts +4 -4
- package/dist/services/Repository.js +22 -22
- package/dist/services/Store/Cosmos.d.ts +1 -1
- package/dist/services/Store/Cosmos.js +61 -61
- package/dist/services/Store/Disk.js +16 -19
- package/dist/services/Store/Memory.d.ts +1 -1
- package/dist/services/Store/Memory.js +16 -18
- package/dist/services/Store/Redis.d.ts +1 -1
- package/dist/services/Store/Redis.js +21 -24
- package/dist/services/Store/index.js +6 -8
- package/dist/services/Store/service.d.ts +1 -1
- package/dist/services/Store/service.js +3 -5
- package/dist/services/Store/utils.d.ts +2 -2
- package/dist/services/Store/utils.js +18 -19
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/cosmosdb.js +23 -25
- package/dist/services/simpledb/diskdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.js +18 -18
- package/dist/services/simpledb/memdb.d.ts +3 -3
- package/dist/services/simpledb/memdb.js +12 -11
- package/dist/services/simpledb/mongodb.d.ts +2 -2
- package/dist/services/simpledb/mongodb.js +18 -18
- package/dist/services/simpledb/redisdb.d.ts +8 -8
- package/dist/services/simpledb/redisdb.js +21 -21
- package/dist/services/simpledb/shared.d.ts +9 -9
- package/dist/services/simpledb/shared.js +5 -7
- package/dist/services/simpledb/simpledb.d.ts +1 -1
- package/dist/services/simpledb/simpledb.js +19 -17
- package/package.json +11 -11
package/dist/rateLimit.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/rateLimit.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
|
-
import * as tsplus_module_2 from "@effect-app/core/
|
|
5
|
-
import * as tsplus_module_3 from "@effect-app/core/
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/core/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/core/Array";
|
|
6
4
|
// /**
|
|
7
5
|
// * Executes the specified effect, acquiring the specified number of permits
|
|
8
6
|
// * immediately before the effect begins execution and releasing them
|
|
@@ -38,7 +36,7 @@ import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
|
38
36
|
*/
|
|
39
37
|
export function SEM_withPermitsDuration(permits, duration) {
|
|
40
38
|
return (self) => {
|
|
41
|
-
return effect =>
|
|
39
|
+
return effect => tsplus_module_1.uninterruptibleMask(restore => tsplus_module_2.EffectZipRight(tsplus_module_1.ensuring(restore(effect), tsplus_module_1.delay(self.release(permits), duration)))(restore(self.take(permits))));
|
|
42
40
|
};
|
|
43
41
|
}
|
|
44
42
|
/**
|
|
@@ -46,14 +44,14 @@ export function SEM_withPermitsDuration(permits, duration) {
|
|
|
46
44
|
* @tsplus static Collection.Aspects batchNPar
|
|
47
45
|
*/
|
|
48
46
|
export function batchNPar(n, forEachItem, forEachBatch) {
|
|
49
|
-
return (items) =>
|
|
47
|
+
return (items) => tsplus_module_3.ext_forEachParWithIndex(tsplus_module_3.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(tsplus_module_1.forEachParWithIndex(_, (_, j) => forEachItem(_, j, i)), _ => forEachBatch(_, i)));
|
|
50
48
|
}
|
|
51
49
|
/**
|
|
52
50
|
* @tsplus pipeable Iterable batch
|
|
53
51
|
* @tsplus static Collection.Aspects batch
|
|
54
52
|
*/
|
|
55
53
|
export function batch(n, forEachItem, forEachBatch) {
|
|
56
|
-
return (items) =>
|
|
54
|
+
return (items) => tsplus_module_3.ext_forEachWithIndex(tsplus_module_3.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(tsplus_module_1.forEachParWithIndex(_, (_, j) => forEachItem(_, j, i)), _ => forEachBatch(_, i)));
|
|
57
55
|
}
|
|
58
56
|
// /**
|
|
59
57
|
// * @tsplus pipeable Iterable rateLimit
|
|
@@ -79,6 +77,6 @@ export function batch(n, forEachItem, forEachBatch) {
|
|
|
79
77
|
* @tsplus static Collection.Aspects naiveRateLimit
|
|
80
78
|
*/
|
|
81
79
|
export function naiveRateLimit(n, d) {
|
|
82
|
-
return (items) => ((forEachItem, forEachBatch) =>
|
|
80
|
+
return (items) => ((forEachItem, forEachBatch) => tsplus_module_3.ext_forEachWithIndex(tsplus_module_3.chunk_(items, n), (batch, i) => tsplus_module_1.zipRight(((i === 0) ? tsplus_module_2.unit : tsplus_module_1.delay(tsplus_module_2.unit, d)), tsplus_module_1.flatMap(tsplus_module_1.withParallelism(tsplus_module_3.ext_forEachEffectPar(batch, forEachItem), n), forEachBatch))));
|
|
83
81
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9yYXRlTGltaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTTtBQUNOLDhFQUE4RTtBQUM5RSx1RUFBdUU7QUFDdkUsbUZBQW1GO0FBQ25GLCtCQUErQjtBQUMvQixLQUFLO0FBQ0wsa0VBQWtFO0FBQ2xFLGdFQUFnRTtBQUNoRSxNQUFNO0FBQ04sd0VBQXdFO0FBQ3hFLDBGQUEwRjtBQUMxRix1QkFBdUI7QUFDdkIsb0NBQW9DO0FBQ3BDLHFCQUFxQjtBQUNyQixtREFBbUQ7QUFDbkQsZ0NBQWdDO0FBQ2hDLDJCQUEyQjtBQUMzQix5Q0FBeUM7QUFDekMsNEJBQTRCO0FBQzVCLHFDQUFxQztBQUNyQyxrQkFBa0I7QUFDbEIsVUFBVTtBQUNWLE1BQU07QUFDTixJQUFJO0FBRUo7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFFBQWE7SUFDcEUsT0FBTyxDQUFDLElBQWUsRUFBeUQsRUFBRTtRQUNoRixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQ2Qsb0NBQ0UsT0FBTyxDQUFDLEVBQUUsZ0NBRUoseUJBQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUViLHNCQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ1osUUFBUSxDQUFDLENBQ25CLEVBTEwsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FLdEIsQ0FDUixDQUFBO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLENBQVMsRUFDVCxXQUEwRSxFQUMxRSxZQUE0RDtJQUU1RCxPQUFPLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQzVCLHdDQUFBLHVCQUFBLEtBQUssRUFBTyxDQUFDLENBQUMsRUFDZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNsQyx3QkFBQSxvQ0FBQSxDQUFDLEVBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3BDLENBQUE7QUFDUCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDbkIsQ0FBUyxFQUNULFdBQStFLEVBQy9FLFlBQTREO0lBRTVELE9BQU8sQ0FBQyxLQUFrQixFQUFFLEVBQUUsQ0FDNUIscUNBQUEsdUJBQUEsS0FBSyxFQUFPLENBQUMsQ0FBQyxFQUNZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQy9CLHdCQUFBLG9DQUFBLENBQUMsRUFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQTtBQUNQLENBQUM7QUFFRCxNQUFNO0FBQ04seUNBQXlDO0FBQ3pDLGlEQUFpRDtBQUNqRCxNQUFNO0FBQ04sNkJBQTZCO0FBQzdCLGVBQWU7QUFDZixXQUFXO0FBQ1gsTUFBTTtBQUNOLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxXQUFXO0FBQ1gscUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0Qix3Q0FBd0M7QUFDeEMsbUZBQW1GO0FBQ25GLHNCQUFzQjtBQUN0QixJQUFJO0FBRUo7OztHQUdHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsQ0FBUyxFQUNULENBQU07SUFFTixPQUFPLENBQUksS0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNqQyxXQUFzQyxFQUN0QyxZQUFpRCxFQUNqRCxFQUFFLENBQ0YscUNBQUEsdUJBQUEsS0FBSyxFQUFPLENBQUMsQ0FBQyxFQUNZLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ25DLHlCQUFBLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBYSxDQUFDLENBQUMsNENBQWtCLENBQUMsQ0FBQyxDQUFDLEVBRTVDLHdCQUFBLGdDQUFBLHFDQUFBLEtBQUssRUFBa0IsV0FBVyxDQUFDLEVBQ2hCLENBQUMsQ0FBQyxFQUNWLFlBQVksQ0FBQyxDQUN6QixDQUNKLENBQUMsQ0FBQTtBQUNSLENBQUMifQ==
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/services/Emailer/Sendgrid.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Config/Secret";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
|
-
import * as tsplus_module_3 from "@
|
|
6
|
-
import * as tsplus_module_4 from "@
|
|
7
|
-
import * as tsplus_module_5 from "@effect-app/core/
|
|
8
|
-
import * as tsplus_module_6 from "@effect-app/core/Array";
|
|
3
|
+
import * as tsplus_module_3 from "@fp-ts/core/typeclass/Equivalence";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/core/_ext/ord.ext";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/core/Array";
|
|
9
6
|
import sgMail from "@sendgrid/mail";
|
|
10
7
|
import { inspect } from "util";
|
|
11
8
|
import { Emailer } from "./service.js";
|
|
12
|
-
const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) =>
|
|
9
|
+
const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => tsplus_module_2.sync(() => {
|
|
13
10
|
sgMail.setApiKey(tsplus_module_1.value(apiKey));
|
|
14
11
|
return {
|
|
15
12
|
sendMail(msg_) {
|
|
16
|
-
return
|
|
13
|
+
return tsplus_module_2.gen(function* ($) {
|
|
17
14
|
const msg = { ...msg_, from: msg_.from ?? defaultFrom };
|
|
18
15
|
const render = renderMessage(!realMail);
|
|
19
16
|
const renderedMsg_ = render(msg);
|
|
20
17
|
const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` };
|
|
21
|
-
yield* $(
|
|
22
|
-
const ret = yield* $(
|
|
23
|
-
cb(
|
|
24
|
-
cb(
|
|
18
|
+
yield* $(tsplus_module_2.logAnnotate(tsplus_module_2.logDebug("Sending email"), "msg", inspect(renderedMsg, false, 5)));
|
|
19
|
+
const ret = yield* $(tsplus_module_2.async(cb => void sgMail.send(renderedMsg, false, (err, result) => err ?
|
|
20
|
+
cb(tsplus_module_2.fail(err)) :
|
|
21
|
+
cb(tsplus_module_2.sync(() => result)))));
|
|
25
22
|
// const event = {
|
|
26
23
|
// name: "EmailSent",
|
|
27
24
|
// properties: {
|
|
@@ -32,19 +29,15 @@ const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => t
|
|
|
32
29
|
// const { trackEvent } = yield* $(AiContextService.access)
|
|
33
30
|
// trackEvent(event)
|
|
34
31
|
return ret;
|
|
35
|
-
})
|
|
32
|
+
});
|
|
36
33
|
}
|
|
37
34
|
};
|
|
38
|
-
})
|
|
39
|
-
/**
|
|
40
|
-
* @tsplus static Emailer.Ops LiveSendgrid
|
|
41
|
-
*/
|
|
42
|
-
);
|
|
35
|
+
});
|
|
43
36
|
/**
|
|
44
37
|
* @tsplus static Emailer.Ops LiveSendgrid
|
|
45
38
|
*/
|
|
46
39
|
export function LiveSendgrid(config) {
|
|
47
|
-
return
|
|
40
|
+
return tsplus_module_2.toLayer(tsplus_module_2.flatMap(tsplus_module_2.config(config), makeLiveSendgrid), Emailer);
|
|
48
41
|
}
|
|
49
42
|
/**
|
|
50
43
|
* @hidden
|
|
@@ -81,12 +74,12 @@ function renderFake(addr, makeId) {
|
|
|
81
74
|
email: `test+${makeId()}@nomizz.com`
|
|
82
75
|
};
|
|
83
76
|
}
|
|
84
|
-
const eq =
|
|
77
|
+
const eq = tsplus_module_3.contramap((to) => typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase())(tsplus_module_3.string);
|
|
85
78
|
// TODO: should just not add any already added email address
|
|
86
79
|
// https://stackoverflow.com/a/53603076/11595834
|
|
87
80
|
function renderFakeIfTest(addr, makeId) {
|
|
88
81
|
return Array.isArray(addr)
|
|
89
|
-
?
|
|
82
|
+
? tsplus_module_5.iterableToArray(tsplus_module_4.uniqArray(eq)(addr
|
|
90
83
|
.map(x => (isTestAddress(x) ? renderFake(x, makeId) : x)))) : isTestAddress(addr)
|
|
91
84
|
? renderFake(addr, makeId)
|
|
92
85
|
: addr;
|
|
@@ -100,4 +93,4 @@ function renderMailData(md) {
|
|
|
100
93
|
}
|
|
101
94
|
return md.email;
|
|
102
95
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL0VtYWlsZXIvU2VuZGdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHdEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFrQixFQUFFLEVBQUUsQ0FDNUYscUJBQU8sR0FBRyxFQUFFO0lBQ1YsTUFBTSxDQUFDLFNBQVMsdUJBQUMsTUFBTSxFQUFPLENBQUE7SUFFOUIsT0FBTztRQUNMLFFBQVEsQ0FBQyxJQUEwQjtZQUNqQyxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFLENBQUE7Z0JBQ3ZELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUV2QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2hDLE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO2dCQUMzRixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQUEseUJBQWdCLGVBQWUsQ0FBQyxFQUFhLEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBRTdGLE1BQU0sR0FBRyxHQUFHLEtBQUss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
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/services/Emailer/fake.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
|
-
import * as tsplus_module_2 from "@effect-app/core/Effect";
|
|
5
2
|
import { pretty } from "@effect-app/prelude/utils";
|
|
6
3
|
import { Emailer } from "./service.js";
|
|
7
|
-
const makeFake =
|
|
4
|
+
const makeFake = tsplus_module_1.map(tsplus_module_1.logDebug("FAKE Emailer Service enabled"), () => ({
|
|
8
5
|
sendMail(msg) {
|
|
9
|
-
return
|
|
6
|
+
return tsplus_module_1.logAnnotate(tsplus_module_1.logDebug(`Fake send mail`), "msg", pretty(msg));
|
|
10
7
|
}
|
|
11
|
-
}))
|
|
8
|
+
}));
|
|
12
9
|
/**
|
|
13
10
|
* @tsplus static Emailer.Ops Fake
|
|
14
11
|
*/
|
|
15
|
-
export const FakeSendgrid =
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
export const FakeSendgrid = tsplus_module_1.toLayer(makeFake, Emailer);
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvRW1haWxlci9mYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV0QyxNQUFNLFFBQVEsR0FBRyxvQkFBQSx5QkFBZ0IsOEJBQThCLENBQUMsRUFDekQsR0FBWSxFQUFFLENBQUMsQ0FBQztJQUNuQixRQUFRLENBQUMsR0FBRztRQUNWLE9BQU8sNEJBQUEseUJBQWdCLGdCQUFnQixDQUFDLEVBQWEsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7Q0FDRixDQUFDLENBQUMsQ0FBQTtBQUVMOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLHdCQUFBLFFBQVEsRUFBUyxPQUFPLENBQUMsQ0FBQSJ9
|
|
@@ -2,7 +2,7 @@ import { Effect } from "@effect/io/Effect";
|
|
|
2
2
|
import { Tag } from "@fp-ts/data/Context";
|
|
3
3
|
import { Email, ReasonableString } from "@effect-app/prelude/schema";
|
|
4
4
|
import { ConfigSecret } from "@effect/io/Config/Secret";
|
|
5
|
-
import { NonEmptyReadonlyArray } from "@fp-ts/
|
|
5
|
+
import { NonEmptyReadonlyArray } from "@fp-ts/core/ReadonlyArray";
|
|
6
6
|
import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js";
|
|
7
7
|
import type { ResponseError } from "@sendgrid/mail";
|
|
8
8
|
import type sgMail from "@sendgrid/mail";
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/services/Operations/live.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/prelude/_ext/date";
|
|
5
|
-
import * as tsplus_module_3 from "@fp-ts/
|
|
3
|
+
import * as tsplus_module_3 from "@fp-ts/core/Option";
|
|
6
4
|
import * as tsplus_module_4 from "@effect-app/core/Array";
|
|
7
5
|
import * as tsplus_module_5 from "@effect/io/Exit";
|
|
8
6
|
import * as tsplus_module_6 from "@effect/io/Cause";
|
|
9
7
|
import * as tsplus_module_7 from "@effect-app/prelude/schema";
|
|
10
8
|
import * as tsplus_module_8 from "@effect-app/core/Option";
|
|
11
9
|
import * as tsplus_module_9 from "@effect-app/prelude/_ext/Prelude.ext";
|
|
12
|
-
import * as tsplus_module_10 from "@effect-app/
|
|
13
|
-
import * as tsplus_module_11 from "@
|
|
14
|
-
import * as tsplus_module_12 from "@
|
|
15
|
-
import * as tsplus_module_13 from "@effect/io/Layer";
|
|
10
|
+
import * as tsplus_module_10 from "@effect-app/core/Effect";
|
|
11
|
+
import * as tsplus_module_11 from "@effect-app/prelude/service";
|
|
12
|
+
import * as tsplus_module_12 from "@fp-ts/data/Duration";
|
|
16
13
|
import { RequestException } from "@effect-app/infra/api/reportError";
|
|
17
14
|
import { reportError } from "@effect-app/infra/errorReporter";
|
|
18
15
|
import { Failure, Operation, OperationId, Success } from "@effect-app/prelude/Operations";
|
|
19
16
|
import { Operations } from "./service.js";
|
|
20
17
|
const reportAppError = reportError(cause => new RequestException(cause));
|
|
21
|
-
const make =
|
|
18
|
+
const make = tsplus_module_1.sync(() => {
|
|
22
19
|
const ops = new Map();
|
|
23
|
-
const makeOp =
|
|
24
|
-
const cleanup =
|
|
20
|
+
const makeOp = tsplus_module_1.sync(() => OperationId.make());
|
|
21
|
+
const cleanup = tsplus_module_1.sync(() => {
|
|
25
22
|
const before = tsplus_module_2.DateSubHours(new Date(), 1);
|
|
26
23
|
tsplus_module_4.ext_itToChunk(ops.entries()).forEach(([id, op]) => {
|
|
27
24
|
const lastChanged = tsplus_module_3.getOrElse(() => op.createdAt)(tsplus_module_3.fromNullable(op.updatedAt));
|
|
@@ -29,17 +26,17 @@ const make = tracer_1.withCallTrace(fileName_1 + ":9:14")(tsplus_module_1.sync((
|
|
|
29
26
|
ops.delete(id);
|
|
30
27
|
}
|
|
31
28
|
});
|
|
32
|
-
})
|
|
29
|
+
});
|
|
33
30
|
function addOp(id) {
|
|
34
|
-
return
|
|
31
|
+
return tsplus_module_1.sync(() => {
|
|
35
32
|
ops.set(id, new Operation({ id }));
|
|
36
|
-
})
|
|
33
|
+
});
|
|
37
34
|
}
|
|
38
35
|
function findOp(id) {
|
|
39
|
-
return
|
|
36
|
+
return tsplus_module_1.sync(() => tsplus_module_3.fromNullable(ops.get(id)));
|
|
40
37
|
}
|
|
41
38
|
function finishOp(id, exit) {
|
|
42
|
-
return
|
|
39
|
+
return tsplus_module_1.flatMap(findOp(id), _ => tsplus_module_1.sync(() => {
|
|
43
40
|
if (tsplus_module_3.isNone(_)) {
|
|
44
41
|
throw new Error("Not found");
|
|
45
42
|
}
|
|
@@ -55,36 +52,36 @@ const make = tracer_1.withCallTrace(fileName_1 + ":9:14")(tsplus_module_1.sync((
|
|
|
55
52
|
? tsplus_module_7.LongString("Unknown error")
|
|
56
53
|
: tsplus_module_8.getOrUndefined(tsplus_module_3.flatMap(_ => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_7.LongString.Guard(_.message)
|
|
57
54
|
? tsplus_module_3.some(_.message)
|
|
58
|
-
:
|
|
55
|
+
: tsplus_module_8.none)(tsplus_module_6.failureOption(exit.cause))) ?? null
|
|
59
56
|
})
|
|
60
57
|
});
|
|
61
|
-
}))
|
|
58
|
+
}));
|
|
62
59
|
}
|
|
63
60
|
function update(id, progress) {
|
|
64
|
-
return
|
|
61
|
+
return tsplus_module_1.flatMap(findOp(id), _ => tsplus_module_1.sync(() => {
|
|
65
62
|
if (tsplus_module_3.isNone(_)) {
|
|
66
63
|
throw new Error("Not found");
|
|
67
64
|
}
|
|
68
65
|
ops.set(id, { ..._.value, updatedAt: new Date(), progress });
|
|
69
|
-
}))
|
|
66
|
+
}));
|
|
70
67
|
}
|
|
71
|
-
return
|
|
68
|
+
return tsplus_module_11.make(Operations, {
|
|
72
69
|
cleanup,
|
|
73
|
-
register:
|
|
70
|
+
register: tsplus_module_1.tap(makeOp, id => tsplus_module_10.EffectZipRight(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))(tsplus_module_9.logAnnotateScoped("operationId", id))),
|
|
74
71
|
find: findOp,
|
|
75
72
|
update
|
|
76
73
|
});
|
|
77
|
-
})
|
|
78
|
-
const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.forever(
|
|
74
|
+
});
|
|
75
|
+
const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.forever(tsplus_module_1.delay(tsplus_module_1.flatMap(tsplus_module_1.exit(tsplus_module_1.serviceWithEffect(Operations, _ => _.cleanup)), _ => {
|
|
79
76
|
if (tsplus_module_5.isSuccess(_)) {
|
|
80
|
-
return
|
|
77
|
+
return tsplus_module_10.unit;
|
|
81
78
|
}
|
|
82
79
|
else {
|
|
83
80
|
return reportAppError(_.cause);
|
|
84
81
|
}
|
|
85
|
-
})
|
|
82
|
+
}), tsplus_module_12.minutes(1))));
|
|
86
83
|
/**
|
|
87
84
|
* @tsplus static Operations.Ops Live
|
|
88
85
|
*/
|
|
89
|
-
export const Live =
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
export const Live = tsplus_module_10.LayerProvideMerge(tsplus_module_10.toScopedDiscardLayer(cleanupLoop))(tsplus_module_1.toLayer(make, Operations));
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV6QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFFeEUsTUFBTSxJQUFJLEdBQUcscUJBQU8sR0FBRyxFQUFFO0lBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFBO0lBQzdDLE1BQU0sTUFBTSxHQUFHLHFCQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRS9DLE1BQU0sT0FBTyxHQUFHLHFCQUFPLEdBQUcsRUFBRTtRQUMxQixNQUFNLE1BQU0sR0FBRyw2QkFBQSxJQUFJLElBQUksRUFBRSxFQUFVLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLDhCQUFBLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFFVixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sV0FBVyxHQUFHLDBCQUF5QyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUEzRCw2QkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUE4QixDQUFBO1lBQ2hGLElBQUksV0FBVyxHQUFHLE1BQU0sRUFBRTtnQkFD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
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/services/Operations/service.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@fp-ts/data/Context";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Scope";
|
|
5
3
|
import * as tsplus_module_3 from "@effect-app/infra/api/reportError";
|
|
@@ -11,7 +9,7 @@ export const Operations = tsplus_module_1.Tag();
|
|
|
11
9
|
* @tsplus getter effect/io/Effect forkOperation
|
|
12
10
|
*/
|
|
13
11
|
function forkOperation_1(self) {
|
|
14
|
-
return
|
|
12
|
+
return tsplus_module_4.serviceWithEffect(Operations, Operations => tsplus_module_4.flatMap(tsplus_module_2.make(), scope => tsplus_module_4.tap(tsplus_module_2.extend(Operations.register, scope), () => tsplus_module_3.forkDaemonReportRequestUnexpected(tsplus_module_2.use(self, scope)))));
|
|
15
13
|
}
|
|
16
14
|
/**
|
|
17
15
|
* @tsplus getter function forkOperation
|
|
@@ -23,12 +21,12 @@ export function forkOperationFunction(fnc) {
|
|
|
23
21
|
* @tsplus static effect/io/Effect.Ops forkOperation
|
|
24
22
|
*/
|
|
25
23
|
export function forkOperation2(self) {
|
|
26
|
-
return
|
|
24
|
+
return tsplus_module_4.serviceWithEffect(Operations, Operations => tsplus_module_4.flatMap(tsplus_module_2.make(), scope => tsplus_module_4.tap(tsplus_module_2.extend(Operations.register, scope), id => tsplus_module_3.forkDaemonReportRequestUnexpected(tsplus_module_2.use(self(id), scope)))));
|
|
27
25
|
}
|
|
28
26
|
/**
|
|
29
27
|
* @tsplus static effect/io/Effect.Ops forkOperationWithEffect
|
|
30
28
|
*/
|
|
31
29
|
export function forkOperationWithEffect(self, fnc) {
|
|
32
|
-
return
|
|
30
|
+
return tsplus_module_4.serviceWithEffect(Operations, Operations => tsplus_module_4.flatMap(tsplus_module_2.make(), scope => tsplus_module_4.tap(tsplus_module_4.tap(tsplus_module_2.extend(Operations.register, scope), opId => tsplus_module_3.forkDaemonReportRequestUnexpected(tsplus_module_2.use(self(opId), scope))), opId => tsplus_module_2.extend(tsplus_module_4.forkScoped(tsplus_module_4.interruptible(fnc(opId))), scope))));
|
|
33
31
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7YUFvQmdCLGFBQWE7QUFsQjdCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7QUFhbEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFrQixnQkFBQSxHQUFHLEVBQWMsQ0FBQTtBQUUxRDs7R0FFRztBQUNILHlCQUF1QyxJQUFxQjtJQUMxRCxPQUFPLGtDQUFBLFVBQVUsRUFDZixVQUFVLENBQUMsRUFBRSxDQUNYLHdCQUFBLHNCQUFZLEVBQ0QsS0FBSyxDQUFDLEVBQUUsQ0FDZixvQkFBQSx1QkFBQSxVQUFVLENBQUMsUUFBUSxFQUFRLEtBQUssQ0FBQyxFQUMxQixHQUFHLEVBQUUsbURBQUMsb0JBQUEsSUFBSSxFQUFLLEtBQUssQ0FBQyxDQUFrQyxDQUFDLENBQ2hFLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBZSxHQUFrQztJQUNwRixPQUFPLENBQUMsR0FBUSxFQUFFLEVBQUUsaUJBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFjLENBQUE7QUFDN0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBVSxJQUE0QztJQUNsRixPQUFPLGtDQUFBLFVBQVUsRUFDZixVQUFVLENBQUMsRUFBRSxDQUNYLHdCQUFBLHNCQUFZLEVBQ0QsS0FBSyxDQUFDLEVBQUUsQ0FDZixvQkFBQSx1QkFBQSxVQUFVLENBQUMsUUFBUSxFQUFRLEtBQUssQ0FBQyxFQUMxQixFQUFFLENBQUMsRUFBRSxtREFBQyxvQkFBQSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUssS0FBSyxDQUFDLENBQWtDLENBQUMsQ0FDcEUsQ0FDTixDQUFBO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUEwQyxFQUMxQyxHQUE0QztJQUU1QyxPQUFPLGtDQUFBLFVBQVUsRUFDZixVQUFVLENBQUMsRUFBRSxDQUNYLHdCQUFBLHNCQUFZLEVBQ0QsS0FBSyxDQUFDLEVBQUUsQ0FDZixvQkFBQSxvQkFBQSx1QkFBQSxVQUFVLENBQUMsUUFBUSxFQUFRLEtBQUssQ0FBQyxFQUMxQixJQUFJLENBQUMsRUFBRSxtREFBQyxvQkFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUssS0FBSyxDQUFDLENBQWtDLENBQUMsRUFDaEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnRkFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQWlDLEtBQUssQ0FBQyxDQUFDLENBQ2pFLENBQ04sQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Effect } from "@effect/io/Effect";
|
|
2
2
|
import { Opt } from "@effect-app/core/Option";
|
|
3
3
|
import { Chunk } from "@fp-ts/data/Chunk";
|
|
4
|
-
import { Predicate } from "@fp-ts/
|
|
4
|
+
import { Predicate } from "@fp-ts/core/Predicate";
|
|
5
5
|
import { PureEnvEnv } from "@effect-app/prelude/_ext/Pure";
|
|
6
|
-
import { NonEmptyReadonlyArray, NonEmptyArray } from "@fp-ts/
|
|
6
|
+
import { NonEmptyReadonlyArray, NonEmptyArray } from "@fp-ts/core/ReadonlyArray";
|
|
7
7
|
import type { FixEnv, PureLogT } from "@effect-app/prelude/_ext/Pure";
|
|
8
8
|
import { Pure } from "@effect-app/prelude/_ext/Pure";
|
|
9
9
|
import type { ParserEnv } from "@effect-app/schema/custom/Parser";
|
|
@@ -291,12 +291,12 @@ export declare function makeDSL<S1, S2, Evt>(): (<R, A, E>(pure: (dsl: PureDSL<S
|
|
|
291
291
|
};
|
|
292
292
|
export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {
|
|
293
293
|
}
|
|
294
|
-
export declare function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>): (items: Iterable<T>) => import("@effect/io/Effect").Effect<R, E, import("@fp-ts/
|
|
294
|
+
export declare function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>): (items: Iterable<T>) => import("@effect/io/Effect").Effect<R, E, import("@fp-ts/core/Option").Option<A>>;
|
|
295
295
|
/**
|
|
296
296
|
* @tsplus fluent Iterable ifAny
|
|
297
297
|
* @tsplus location "@effect-app/infra/services/Repository"
|
|
298
298
|
*/
|
|
299
|
-
export declare function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>): import("@effect/io/Effect").Effect<R, E, import("@fp-ts/
|
|
299
|
+
export declare function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>): import("@effect/io/Effect").Effect<R, E, import("@fp-ts/core/Option").Option<A>>;
|
|
300
300
|
/**
|
|
301
301
|
* @tsplus getter Repository save
|
|
302
302
|
* @tsplus location "@effect-app/infra/services/Repository"
|
|
@@ -26,25 +26,25 @@ export const AnyPureDSL = {
|
|
|
26
26
|
* @tsplus fluent Repository get
|
|
27
27
|
*/
|
|
28
28
|
function get_1(self, id) {
|
|
29
|
-
return
|
|
29
|
+
return tsplus_module_3.flatMap(self.find(id), _ => tsplus_module_2.encaseMaybeInEffect_(_, () => new NotFoundError(self.itemType, id)));
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* @tsplus fluent Repository filter
|
|
33
33
|
*/
|
|
34
34
|
export function filter(self, filter) {
|
|
35
|
-
return
|
|
35
|
+
return tsplus_module_3.map(self.all, _ => tsplus_module_4.filter(filter)(_));
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* @tsplus fluent Repository filterAll
|
|
39
39
|
*/
|
|
40
40
|
export function filterAll(self, map) {
|
|
41
|
-
return
|
|
41
|
+
return tsplus_module_3.map(self.all, map);
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* @tsplus fluent Repository collect
|
|
45
45
|
*/
|
|
46
46
|
export function collect(self, collect) {
|
|
47
|
-
return
|
|
47
|
+
return tsplus_module_3.map(self.all, _ => tsplus_module_4.filterMap(collect)(_));
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* @tsplus getter Repository log
|
|
@@ -58,14 +58,14 @@ export function log(_) {
|
|
|
58
58
|
*/
|
|
59
59
|
function projectEffect_1(self, map) {
|
|
60
60
|
// TODO: a projection that gets sent to the db instead.
|
|
61
|
-
return
|
|
61
|
+
return tsplus_module_3.flatMap(map, f => tsplus_module_3.map((f.filter ? self.utils.filter(f.filter, { limit: f.limit, skip: f.skip }) : self.utils.all), _ => tsplus_module_4.filterMap(f.collect)(_)));
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* TODO: project inside the db.
|
|
65
65
|
* @tsplus fluent Repository project
|
|
66
66
|
*/
|
|
67
67
|
export function project(self, map) {
|
|
68
|
-
return projectEffect_1(self,
|
|
68
|
+
return projectEffect_1(self, tsplus_module_3.sync(() => map));
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* @tsplus fluent Repository queryEffect
|
|
@@ -73,7 +73,7 @@ export function project(self, map) {
|
|
|
73
73
|
function queryEffect_1(self,
|
|
74
74
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
75
75
|
map) {
|
|
76
|
-
return
|
|
76
|
+
return tsplus_module_3.flatMap(map, f => tsplus_module_3.map(tsplus_module_3.map(tsplus_module_3.flatMap((f.filter ? self.utils.filter(f.filter, { limit: f.limit, skip: f.skip }) : self.utils.all), items => tsplus_module_3.map(tsplus_module_3.service(ContextMap), ({ set }) => items.map(_ => self.utils.mapReverse(_, set)))), _ => _.map(_ => self.utils.parse(_))), _ => tsplus_module_4.filterMap(f.collect)(_)));
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
79
|
* @tsplus fluent Repository queryOneEffect
|
|
@@ -81,7 +81,7 @@ map) {
|
|
|
81
81
|
function queryOneEffect_1(self,
|
|
82
82
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
83
83
|
map) {
|
|
84
|
-
return
|
|
84
|
+
return tsplus_module_3.flatMap(map, f => tsplus_module_3.flatMap(tsplus_module_3.map(tsplus_module_3.flatMap((f.filter ? self.utils.filter(f.filter, { limit: 1 }) : self.utils.all), items => tsplus_module_3.map(tsplus_module_3.service(ContextMap), ({ set }) => items.map(_ => self.utils.mapReverse(_, set)))), _ => _.map(_ => self.utils.parse(_))), _ => tsplus_module_3.map(tsplus_module_2.encaseMaybeInEffect_(tsplus_module_5.ChunkToNonEmptyReadonlyArray(tsplus_module_4.filterMap(f.collect)(_)), () => new NotFoundError(self.itemType, JSON.stringify(f.filter))), _ => _[0])));
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
87
|
* @tsplus fluent Repository query
|
|
@@ -89,7 +89,7 @@ map) {
|
|
|
89
89
|
export function query(self,
|
|
90
90
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
91
91
|
map) {
|
|
92
|
-
return queryEffect_1(self,
|
|
92
|
+
return queryEffect_1(self, tsplus_module_3.sync(() => map));
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* @tsplus fluent Repository queryOne
|
|
@@ -97,7 +97,7 @@ map) {
|
|
|
97
97
|
export function queryOne(self,
|
|
98
98
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
99
99
|
map) {
|
|
100
|
-
return queryOneEffect_1(self,
|
|
100
|
+
return queryOneEffect_1(self, tsplus_module_3.sync(() => map));
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
103
103
|
* @tsplus fluent Repository queryAndSavePureEffect
|
|
@@ -105,7 +105,7 @@ map) {
|
|
|
105
105
|
function queryAndSavePureEffect_1(self,
|
|
106
106
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
107
107
|
map) {
|
|
108
|
-
return (pure) =>
|
|
108
|
+
return (pure) => tsplus_module_3.flatMap(queryEffect_1(self, map), _ => saveManyWithPure_1(self, _, pure));
|
|
109
109
|
}
|
|
110
110
|
/**
|
|
111
111
|
* @tsplus fluent Repository queryAndSavePure
|
|
@@ -113,7 +113,7 @@ map) {
|
|
|
113
113
|
export function queryAndSavePure(self,
|
|
114
114
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
115
115
|
map) {
|
|
116
|
-
return queryAndSavePureEffect_1(self,
|
|
116
|
+
return queryAndSavePureEffect_1(self, tsplus_module_3.sync(() => map));
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
119
|
* @tsplus getter Repository saveManyWithPure
|
|
@@ -125,7 +125,7 @@ export function saveManyWithPure(self) {
|
|
|
125
125
|
* @tsplus fluent Repository byIdAndSaveWithPure
|
|
126
126
|
*/
|
|
127
127
|
function byIdAndSaveWithPure_1(self, id) {
|
|
128
|
-
return (pure) =>
|
|
128
|
+
return (pure) => tsplus_module_3.flatMap(get_1(self, id), item => saveWithPure_1(self, item, pure));
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
131
|
* NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
|
|
@@ -144,10 +144,10 @@ function saveManyWithPure_1(self, items, pure) {
|
|
|
144
144
|
* @tsplus fluent Repository saveWithPure_
|
|
145
145
|
*/
|
|
146
146
|
function saveWithPure_1(self, item, pure) {
|
|
147
|
-
return saveAllWithEffectInt(self,
|
|
147
|
+
return saveAllWithEffectInt(self, tsplus_module_3.map(tsplus_module_1.runTerm(pure, item), ([item, events, a]) => [[item], events, a]));
|
|
148
148
|
}
|
|
149
149
|
function saveAllWithEffectInt(self, gen) {
|
|
150
|
-
return
|
|
150
|
+
return tsplus_module_3.flatMap(gen, ([items, events, a]) => tsplus_module_3.map(self.saveAndPublish(items, events), () => a));
|
|
151
151
|
}
|
|
152
152
|
const anyDSL = makeDSL();
|
|
153
153
|
export function makeAllDSL() {
|
|
@@ -158,13 +158,13 @@ export function makeAllDSL() {
|
|
|
158
158
|
* @tsplus fluent DSLExt updateWith
|
|
159
159
|
*/
|
|
160
160
|
export function updateWithOne(self, upd) {
|
|
161
|
-
return self.update((_) =>
|
|
161
|
+
return self.update((_) => tsplus_module_3.sync(() => upd(_)));
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
164
164
|
* @tsplus fluent DSLExt updateWith
|
|
165
165
|
*/
|
|
166
166
|
export function updateWith(self, upd) {
|
|
167
|
-
return self.update((_) =>
|
|
167
|
+
return self.update((_) => tsplus_module_3.sync(() => upd(_)));
|
|
168
168
|
}
|
|
169
169
|
export function makeOneDSL() {
|
|
170
170
|
return anyDSL;
|
|
@@ -172,10 +172,10 @@ export function makeOneDSL() {
|
|
|
172
172
|
export function makeDSL() {
|
|
173
173
|
const dsl = AnyPureDSL;
|
|
174
174
|
function modify(pure) {
|
|
175
|
-
return
|
|
175
|
+
return tsplus_module_3.flatMap(dsl.get, items => pure(items, dsl));
|
|
176
176
|
}
|
|
177
177
|
function update(pure) {
|
|
178
|
-
return
|
|
178
|
+
return tsplus_module_3.flatMap(dsl.get, items => tsplus_module_3.tap(pure(items, dsl.log), dsl.set));
|
|
179
179
|
}
|
|
180
180
|
function withDSL(pure) {
|
|
181
181
|
return pure(AnyPureDSL);
|
|
@@ -186,13 +186,13 @@ export function makeDSL() {
|
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
188
|
export function ifAny(fn) {
|
|
189
|
-
return (items) => tracer_1.withCallTrace(fileName_1 + ":536:64")(tsplus_module_6.flatMapOpt(
|
|
189
|
+
return (items) => tracer_1.withCallTrace(fileName_1 + ":536:64")(tsplus_module_6.flatMapOpt(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(items)), fn));
|
|
190
190
|
}
|
|
191
191
|
/**
|
|
192
192
|
* @tsplus fluent Iterable ifAny
|
|
193
193
|
*/
|
|
194
194
|
export function ifAny_(items, fn) {
|
|
195
|
-
return tracer_1.withCallTrace(fileName_1 + ":543:40")(tsplus_module_6.flatMapOpt(
|
|
195
|
+
return tracer_1.withCallTrace(fileName_1 + ":543:40")(tsplus_module_6.flatMapOpt(tsplus_module_3.sync(() => tsplus_module_5.CollectionToNonEmptyReadonlyArray(items)), fn));
|
|
196
196
|
}
|
|
197
197
|
/**
|
|
198
198
|
* @tsplus getter Repository save
|
|
@@ -206,4 +206,4 @@ export function save(self) {
|
|
|
206
206
|
export function saveWithEvents(self) {
|
|
207
207
|
return (events) => (...items) => self.saveAndPublish(items, events);
|
|
208
208
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvc2VydmljZXMvUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzthQXNEZ0IsR0FBRzthQXVFSCxhQUFhO2FBeUNiLFdBQVc7YUE4QlgsY0FBYzthQXNFZCxzQkFBc0I7YUFzRHRCLG1CQUFtQjthQStCbkIsaUJBQWlCO2FBeUJqQixhQUFhO0FBclg3QixPQUFxQiwrQkFBK0IsQ0FBQTtBQUdwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQXFDakQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUEyQjtJQUNoRCxHQUFHLEVBQUUscUJBQVU7SUFDZixHQUFHLHFCQUFVO0lBQ2IsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFVLEVBQUUsRUFBRSxDQUFDLHdCQUFhLEdBQUcsQ0FBQztDQUMxQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxlQU9FLElBQTBDLEVBQzFDLEVBQU07SUFFTixPQUFPLHdCQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQ0FBQSxDQUFDLEVBQWdCLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pHLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxNQUFNLENBTXBCLElBQTBDLEVBQUUsTUFBb0I7SUFDaEUsT0FBTyxvQkFBQSxJQUFJLENBQUMsR0FBRyxFQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsdUJBQVMsTUFBTSxFQUFmLENBQUMsQ0FBZSxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FPdkIsSUFBMEMsRUFBRSxHQUFrQztJQUM5RSxPQUFPLG9CQUFBLElBQUksQ0FBQyxHQUFHLEVBQUssR0FBRyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FPckIsSUFBMEMsRUFBRSxPQUE0QjtJQUN4RSxPQUFPLG9CQUFBLElBQUksQ0FBQyxHQUFHLEVBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQywwQkFBWSxPQUFPLEVBQW5CLENBQUMsQ0FBbUIsQ0FBQyxDQUFBO0FBQ2hELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFHLENBTWpCLENBQXVDO0lBQ3ZDLE9BQU8sQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDMUMsQ0FBQztBQUVEOzs7R0FHRztBQUNILHlCQVVFLElBQTBDLEVBQzFDLEdBQXFHO0lBRXJHLHVEQUF1RDtJQUN2RCxPQUFPLHdCQUFBLEdBQUcsRUFBUyxDQUFDLENBQUMsRUFBRSxDQUNyQixvQkFBQSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQ3BGLENBQUMsQ0FBQyxFQUFFLENBQUMsMEJBQVksQ0FBQyxDQUFDLE9BQU8sRUFBckIsQ0FBQyxDQUFxQixDQUFDLENBQ3BDLENBQUE7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FRckIsSUFBMEMsRUFDMUMsR0FBdUY7SUFFdkYsT0FBTyxnQkFBQSxJQUFJLEVBQWUsMkJBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCx1QkFVRSxJQUEwQztBQUMxQyw2REFBNkQ7QUFDN0QsR0FBb0c7SUFFcEcsT0FBTyx3QkFBQSxHQUFHLEVBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FDckIsb0JBQUEsb0JBQUEsd0JBQUEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNoRixLQUFLLENBQUMsRUFBRSxxQkFFSyx3QkFBZSxVQUFVLENBQUMsR0FBdEMsRUFBRSxHQUFHLEVBQUUsS0FDTixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ3BELENBQ0gsRUFDSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUMsMEJBQVksQ0FBQyxDQUFDLE9BQU8sRUFBckIsQ0FBQyxDQUFxQixDQUFDLENBQ3BDLENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCwwQkFVRSxJQUEwQztBQUMxQyw2REFBNkQ7QUFDN0QsR0FBcUU7SUFFckUsT0FBTyx3QkFBQSxHQUFHLEVBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FDckIsd0JBQUEsb0JBQUEsd0JBQUEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxD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
|