@effect-app/infra 0.8.2 → 0.10.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 +28 -0
- package/_cjs/api/express/makeOpenApiSpecs.cjs +2 -4
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +13 -4
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +4 -4
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +2 -2
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -1
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +31 -24
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +7 -6
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +2 -1
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +3 -3
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +2 -1
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +4 -4
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +22 -22
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +4 -5
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +8 -8
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +1 -1
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/express/makeOpenApiSpecs.ts +1 -2
- package/_src/api/routing.ts +1 -1
- package/_src/api/setupRequest.ts +1 -1
- package/_src/instrument.ts +1 -1
- package/_src/rateLimit.ts +24 -24
- package/_src/services/Emailer/Sendgrid.ts +1 -1
- package/_src/services/Store/Cosmos.ts +1 -1
- package/_src/services/simpledb/memdb.ts +4 -5
- package/dist/api/express/makeOpenApiSpecs.d.ts.map +1 -1
- package/dist/api/express/makeOpenApiSpecs.js +2 -4
- package/dist/api/reportError.js +13 -3
- package/dist/api/routing.js +5 -5
- package/dist/api/setupRequest.js +3 -3
- package/dist/instrument.js +2 -2
- package/dist/rateLimit.d.ts +1 -12
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +32 -24
- package/dist/services/Emailer/Sendgrid.js +8 -7
- package/dist/services/Emailer/fake.js +3 -2
- package/dist/services/Store/Cosmos.js +4 -4
- package/dist/services/Store/Disk.js +3 -2
- package/dist/services/Store/Memory.js +5 -5
- package/dist/services/Store/Redis.js +23 -23
- package/dist/services/Store/index.js +5 -6
- package/dist/services/simpledb/memdb.d.ts +2 -2
- package/dist/services/simpledb/memdb.d.ts.map +1 -1
- package/dist/services/simpledb/memdb.js +8 -8
- package/dist/services/simpledb/simpledb.js +2 -2
- package/package.json +8 -8
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as tracer_1 from "@effect/io/Debug";
|
|
2
2
|
const fileName_1 = "packages/infra/_src/services/Store/Redis.ts";
|
|
3
3
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
|
-
import * as tsplus_module_2 from "@
|
|
5
|
-
import * as tsplus_module_3 from "@
|
|
6
|
-
import * as tsplus_module_4 from "@effect-app/prelude";
|
|
7
|
-
import * as tsplus_module_5 from "@
|
|
8
|
-
import * as tsplus_module_6 from "@
|
|
9
|
-
import * as tsplus_module_7 from "@effect-app/core/
|
|
4
|
+
import * as tsplus_module_2 from "@fp-ts/data/Option";
|
|
5
|
+
import * as tsplus_module_3 from "@effect-app/prelude";
|
|
6
|
+
import * as tsplus_module_4 from "@effect-app/prelude/_ext/Prelude.ext";
|
|
7
|
+
import * as tsplus_module_5 from "@fp-ts/data/Chunk";
|
|
8
|
+
import * as tsplus_module_6 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
9
|
+
import * as tsplus_module_7 from "@effect-app/core/Effect";
|
|
10
10
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
11
|
import * as RedisClient from "@effect-app/infra-adapters/redis-client";
|
|
12
12
|
import { NotFoundError } from "../../errors.js";
|
|
@@ -21,32 +21,32 @@ export function makeRedisStore({ prefix }) {
|
|
|
21
21
|
const updateETag = makeUpdateETag(name);
|
|
22
22
|
// Very naive implementation of course.
|
|
23
23
|
const key = `${prefix}${name}`;
|
|
24
|
-
const current = yield* $(tracer_1.withCallTrace(fileName_1 + ":23:63")(
|
|
25
|
-
if (!
|
|
26
|
-
const m = yield* $(existing ?? tracer_1.withCallTrace(fileName_1 + ":25:44")(tsplus_module_1.sync(() =>
|
|
27
|
-
yield* $(tracer_1.withCallTrace(fileName_1 + ":29:18")(
|
|
24
|
+
const current = yield* $(tracer_1.withCallTrace(fileName_1 + ":23:63")(tsplus_module_1.provideService(RedisClient.RedisClient, redis))(tsplus_module_1.orDie(RedisClient.get(key))));
|
|
25
|
+
if (!tsplus_module_2.isSome(current)) {
|
|
26
|
+
const m = yield* $(existing ?? tracer_1.withCallTrace(fileName_1 + ":25:44")(tsplus_module_1.sync(() => tsplus_module_3.ROMap.empty)));
|
|
27
|
+
yield* $(tracer_1.withCallTrace(fileName_1 + ":29:18")(tsplus_module_1.provideService(RedisClient.RedisClient, redis))(tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({ data: [...m.values()].map(e => makeETag(e)) })))));
|
|
28
28
|
}
|
|
29
|
-
const get = tracer_1.withCallTrace(fileName_1 + ":37:14")(
|
|
29
|
+
const get = tracer_1.withCallTrace(fileName_1 + ":37:14")(tsplus_module_1.provideService(RedisClient.RedisClient, redis))(tracer_1.withCallTrace(fileName_1 + ":36:14")(tsplus_module_1.map(_ => _.data))(tracer_1.withCallTrace(fileName_1 + ":35:14")(tsplus_module_1.map(x => JSON.parse(x)))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":33:14")(tsplus_module_1.flatMap(x => tsplus_module_4.encaseMaybeInEffect_(x, () => new NotFoundError("data", ""))))(RedisClient.get(key))))));
|
|
30
30
|
const set = (i) => tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({ data: [...i.values()] })));
|
|
31
31
|
const sem = tsplus_module_1.unsafeMakeSemaphore(1);
|
|
32
32
|
const withPermit = sem.withPermits(1);
|
|
33
|
-
const asMap = tracer_1.withCallTrace(fileName_1 + ":44:29")(tsplus_module_1.map(x =>
|
|
34
|
-
const all = tracer_1.withCallTrace(fileName_1 + ":45:27")(tsplus_module_1.map(
|
|
35
|
-
const batchSet = (items) => tracer_1.withCallTrace(fileName_1 + ":60:16")(
|
|
36
|
-
const mut =
|
|
33
|
+
const asMap = tracer_1.withCallTrace(fileName_1 + ":44:29")(tsplus_module_1.map(x => tsplus_module_3.ROMap.make(x.map(x => [x.id, x]))))(get);
|
|
34
|
+
const all = tracer_1.withCallTrace(fileName_1 + ":45:27")(tsplus_module_1.map(tsplus_module_5.fromIterable))(get);
|
|
35
|
+
const batchSet = (items) => tracer_1.withCallTrace(fileName_1 + ":60:16")(tsplus_module_1.provideService(RedisClient.RedisClient, redis))(withPermit(tracer_1.withCallTrace(fileName_1 + ":58:16")(tsplus_module_1.map(_ => _.toReadonlyArray()))(tracer_1.withCallTrace(fileName_1 + ":49:16")(tsplus_module_1.tap(items => tracer_1.withCallTrace(fileName_1 + ":56:20")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":51:20")(tsplus_module_1.map(m => {
|
|
36
|
+
const mut = tsplus_module_3.ROMap.toMutable(m);
|
|
37
37
|
items.forEach(e => mut.set(e.id, e));
|
|
38
|
-
return
|
|
39
|
-
}))(asMap))))(
|
|
38
|
+
return tsplus_module_3.ROMap.fromMutable(mut);
|
|
39
|
+
}))(asMap))))(tsplus_module_6.ext_forEach(items, e => tracer_1.withCallTrace(fileName_1 + ":48:48")(tsplus_module_1.flatMap(current => updateETag(e, current)))(s.find(e.id)))))));
|
|
40
40
|
const s = {
|
|
41
41
|
all,
|
|
42
42
|
filter: (filter, cursor) => tracer_1.withCallTrace(fileName_1 + ":64:19")(tsplus_module_1.map(memFilter(filter, cursor)))(all),
|
|
43
43
|
filterJoinSelect: (filter) => tracer_1.withCallTrace(fileName_1 + ":66:19")(tsplus_module_1.map(c => c.flatMap(codeFilterJoinSelect(filter))))(all),
|
|
44
|
-
find: id => tracer_1.withCallTrace(fileName_1 + ":67:31")(tsplus_module_1.map(
|
|
45
|
-
set: e => tracer_1.withCallTrace(fileName_1 + ":74:18")(
|
|
46
|
-
.find(e.id))))
|
|
44
|
+
find: id => tracer_1.withCallTrace(fileName_1 + ":67:31")(tsplus_module_1.map(tsplus_module_3.ROMap.lookup(id)))(asMap),
|
|
45
|
+
set: e => tracer_1.withCallTrace(fileName_1 + ":74:18")(tsplus_module_1.provideService(RedisClient.RedisClient, redis))(withPermit(tracer_1.withCallTrace(fileName_1 + ":72:18")(tsplus_module_1.tap(e => tracer_1.withCallTrace(fileName_1 + ":72:60")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":72:33")(tsplus_module_1.map(tsplus_module_3.ROMap.insert(e.id, e)))(asMap))))(tracer_1.withCallTrace(fileName_1 + ":71:18")(tsplus_module_1.flatMap(current => updateETag(e, current)))(s
|
|
46
|
+
.find(e.id))))),
|
|
47
47
|
batchSet,
|
|
48
48
|
bulkSet: batchSet,
|
|
49
|
-
remove: (e) => tracer_1.withCallTrace(fileName_1 + ":80:18")(
|
|
49
|
+
remove: (e) => tracer_1.withCallTrace(fileName_1 + ":80:18")(tsplus_module_1.provideService(RedisClient.RedisClient, redis))(withPermit(tracer_1.withCallTrace(fileName_1 + ":78:45")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":78:21")(tsplus_module_1.map(tsplus_module_3.ROMap.remove(e.id)))(asMap))))
|
|
50
50
|
};
|
|
51
51
|
return s;
|
|
52
52
|
}))
|
|
@@ -54,6 +54,6 @@ export function makeRedisStore({ prefix }) {
|
|
|
54
54
|
}));
|
|
55
55
|
}
|
|
56
56
|
export function RedisStoreLive(config) {
|
|
57
|
-
return
|
|
57
|
+
return tsplus_module_7.toLayer(tracer_1.withCallTrace(fileName_1 + ":91:24")(tsplus_module_1.flatMap(makeRedisStore))(tsplus_module_1.config(config)), StoreMaker);
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL1JlZGlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlDQUF5QyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0UsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBaUI7SUFDdEQscURBQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQVEsQ0FBQTtRQUN0RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLFFBQStDLEVBQy9DLE9BQXlCLEVBQ3pCLEVBQUUsK0NBQ0Ysb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN2Qyx1Q0FBdUM7Z0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFBO2dCQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsNkVBQTBDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyx5QkFBeEUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBcUQsQ0FBQyxDQUFBO2dCQUNuRyxJQUFJLENBQUMsdUJBQUEsT0FBTyxDQUFT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
|
|
@@ -3,7 +3,6 @@ const fileName_1 = "packages/infra/_src/services/Store/index.ts";
|
|
|
3
3
|
import * as tsplus_module_1 from "@effect/io/Config/Secret";
|
|
4
4
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
5
|
import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
6
|
-
import * as tsplus_module_4 from "@effect/io/Layer";
|
|
7
6
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
7
|
import * as CosmosClient from "@effect-app/infra-adapters/cosmos-client";
|
|
9
8
|
import * as RedisClient from "@effect-app/infra-adapters/redis-client";
|
|
@@ -17,7 +16,7 @@ import { StoreMaker } from "./service.js";
|
|
|
17
16
|
* @tsplus static StoreMaker.Ops Live
|
|
18
17
|
*/
|
|
19
18
|
export function StoreMakerLive(config) {
|
|
20
|
-
return
|
|
19
|
+
return tsplus_module_3.toScopedLayer(tracer_1.withCallTrace(fileName_1 + ":17:24")(tsplus_module_2.flatMap(cfg => {
|
|
21
20
|
const storageUrl = tsplus_module_1.value(cfg.url);
|
|
22
21
|
if (storageUrl.startsWith("mem://")) {
|
|
23
22
|
console.log("Using in memory store");
|
|
@@ -29,11 +28,11 @@ export function StoreMakerLive(config) {
|
|
|
29
28
|
}
|
|
30
29
|
if (storageUrl.startsWith("redis://")) {
|
|
31
30
|
console.log("Using Redis store");
|
|
32
|
-
return tracer_1.withCallTrace(fileName_1 + ":29:65")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":30:29")(
|
|
31
|
+
return tracer_1.withCallTrace(fileName_1 + ":29:65")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":30:29")(tsplus_module_2.provideService(RedisClient.RedisClient, client))(makeRedisStore(cfg))))(RedisClient.makeRedisClient(makeRedis(storageUrl)));
|
|
33
32
|
}
|
|
34
33
|
console.log("Using Cosmos DB store");
|
|
35
|
-
return tracer_1.withCallTrace(fileName_1 + ":38:66")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":39:28")(
|
|
36
|
-
}))(tsplus_module_2.config(config)));
|
|
34
|
+
return tracer_1.withCallTrace(fileName_1 + ":38:66")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":39:28")(tsplus_module_2.provideService(CosmosClient.CosmosClient, client))(makeCosmosStore(cfg))))(CosmosClient.makeCosmosClient(storageUrl, cfg.dbName));
|
|
35
|
+
}))(tsplus_module_2.config(config)), StoreMaker);
|
|
37
36
|
}
|
|
38
37
|
function makeRedis(storageUrl) {
|
|
39
38
|
const url = new URL(storageUrl);
|
|
@@ -49,4 +48,4 @@ function makeRedis(storageUrl) {
|
|
|
49
48
|
: storageUrl);
|
|
50
49
|
}
|
|
51
50
|
export * from "./service.js";
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sS0FBSyxZQUFZLE1BQU0sMENBQTBDLENBQUE7QUFDeEUsT0FBTyxLQUFLLFdBQVcsTUFBTSx5Q0FBeUMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRXBDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV6Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBNkI7SUFDMUQsT0FBTyw4QkFBQSxzRUFBc0IsR0FBRyxDQUFDLEVBQUU7UUFDakMsTUFBTSxVQUFVLHlCQUFHLEdBQUcsQ0FBQyxHQUFHLENBQU0sQ0FBQTtRQUNoQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1lBQ3BDLHFEQUFPLDJCQUFPLGVBQWUsRUFBRSxDQUFDLEVBQUE7U0FDakM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBQzFDLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzFCO1FBQ0QsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtZQUNoQyxPQUFPLHNFQUEyRCxNQUFNLENBQUMsRUFBRSxDQUN6RSw2RUFDRSxXQUFXLENBQUMsV0FBVyxFQUN2QixNQUFNLEdBRlIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUdsQixHQUpJLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBS3hELENBQUE7U0FDRjtRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUNwQyxPQUFPLHNFQUE4RCxNQUFNLENBQUMsRUFBRSxDQUM1RSw2RUFBb0MsWUFBWSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQXJFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBa0QsR0FEakUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBRTNELENBQUE7SUFDSCxDQUFDLDBCQXhCTSxNQUFNLEVBd0JYLEVBQ2UsVUFBVSxDQUFDLENBQUE7QUFDOUIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLFVBQWtCO0lBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQy9CLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUE7SUFDN0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQTtJQUM3QixPQUFPLEdBQUcsRUFBRSxDQUNWLFlBQVksQ0FDVixVQUFVLEtBQUssVUFBVTtRQUN2QixDQUFDLENBQUU7WUFDRCxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFFBQVE7WUFDbkIsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtTQUN0QjtRQUNULENBQUMsQ0FBRSxVQUFrQixDQUN4QixDQUFBO0FBQ0wsQ0FBQztBQUVELGNBQWMsY0FBYyxDQUFBIn0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Effect } from "@effect/io/Effect";
|
|
2
|
+
import { Equivalence } from "@fp-ts/data/Equivalence";
|
|
2
3
|
import { Opt } from "@effect-app/core/Option";
|
|
3
4
|
import * as MO from "@effect-app/schema";
|
|
4
|
-
import type * as Eq from "@effect-ts/core/Equal";
|
|
5
5
|
import type { DBRecord } from "./shared.js";
|
|
6
6
|
import * as simpledb from "./simpledb.js";
|
|
7
7
|
export declare function createContext<TKey extends string, EA, A extends DBRecord<TKey>>(): <REncode, RDecode, EDecode>(type: string, encode: (record: A) => import("@effect/io/Effect").Effect<REncode, never, EA>, decode: (d: EA) => import("@effect/io/Effect").Effect<RDecode, EDecode, A>) => {
|
|
8
8
|
find: (id: string) => import("@effect/io/Effect").Effect<simpledb.RecordCache | RDecode, MO.CondemnException | simpledb.InvalidStateError, import("@fp-ts/data/Option").Option<A>>;
|
|
9
|
-
findBy: <V extends Partial<A>>(keys: V, eq:
|
|
9
|
+
findBy: <V extends Partial<A>>(keys: V, eq: import("@fp-ts/data/Equivalence").Equivalence<V>) => import("@effect/io/Effect").Effect<RDecode, MO.CondemnException, import("@fp-ts/data/Option").Option<A & {}>>;
|
|
10
10
|
save: (record: A) => import("@effect/io/Effect").Effect<simpledb.RecordCache | REncode, MO.CondemnException | import("./shared.js").OptimisticLockException | simpledb.InvalidStateError, A>;
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=memdb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"names":[],"mappings":";;;AACA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAExC,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AASzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE;;;;EAuDjB"}
|
|
@@ -20,7 +20,7 @@ export function createContext() {
|
|
|
20
20
|
save: simpledb.store(find, store, bogusLock, type)
|
|
21
21
|
};
|
|
22
22
|
function find(id) {
|
|
23
|
-
return tracer_1.withCallTrace(fileName_1 + ":
|
|
23
|
+
return tracer_1.withCallTrace(fileName_1 + ":32:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":31:10")(tsplus_module_3.flatMapOpt(tracer_1.withCallTrace(fileName_1 + ":30:10")(tsplus_module_2.map(_ => tsplus_module_1.map(s => JSON.parse(s))(_)))(storage
|
|
24
24
|
.find(getRecordName(type, id))), parseSDB)), ({ data, version }) => ({
|
|
25
25
|
data: JSON.parse(data),
|
|
26
26
|
version
|
|
@@ -28,13 +28,13 @@ export function createContext() {
|
|
|
28
28
|
}
|
|
29
29
|
function findBy(keys, eq) {
|
|
30
30
|
// Naive implementation, fine for in memory testing purposes.
|
|
31
|
-
return tracer_1.withCallTrace(fileName_1 + ":
|
|
31
|
+
return tracer_1.withCallTrace(fileName_1 + ":57:10")(tsplus_module_2.map(tsplus_module_1.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":40:21")(tsplus_module_2.gen(function* ($) {
|
|
32
32
|
for (const [, value] of storage) {
|
|
33
33
|
const sdb_ = JSON.parse(value);
|
|
34
34
|
const sdb = yield* $(parseSDB(sdb_));
|
|
35
35
|
const cr = { data: JSON.parse(sdb.data), version: sdb.version };
|
|
36
|
-
const r = yield* $(tsplus_module_2.exit(tracer_1.withCallTrace(fileName_1 + ":
|
|
37
|
-
? tracer_1.withCallTrace(fileName_1 + ":
|
|
36
|
+
const r = yield* $(tsplus_module_2.exit(tracer_1.withCallTrace(fileName_1 + ":46:29")(tsplus_module_2.flatMap(d => eq(d)(keys)
|
|
37
|
+
? tracer_1.withCallTrace(fileName_1 + ":48:19")(tsplus_module_2.sync(() => d)) : tracer_1.withCallTrace(fileName_1 + ":49:26")(tsplus_module_2.fail("not equals"))))(decode(cr.data))));
|
|
38
38
|
if (tsplus_module_4.isSuccess(r)) {
|
|
39
39
|
return r.value;
|
|
40
40
|
}
|
|
@@ -44,12 +44,12 @@ export function createContext() {
|
|
|
44
44
|
}
|
|
45
45
|
function store(record, currentVersion) {
|
|
46
46
|
const version = tsplus_module_1.getOrElse(() => "1")(tsplus_module_1.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
|
|
47
|
-
const getData = flow(encode, _ => tracer_1.withCallTrace(fileName_1 + ":
|
|
48
|
-
return tracer_1.withCallTrace(fileName_1 + ":
|
|
47
|
+
const getData = flow(encode, _ => tracer_1.withCallTrace(fileName_1 + ":67:36")(tsplus_module_2.map(data => JSON.stringify({ version, timestamp: new Date(), data })))(tracer_1.withCallTrace(fileName_1 + ":67:16")(tsplus_module_2.map(JSON.stringify))(_)));
|
|
48
|
+
return tracer_1.withCallTrace(fileName_1 + ":71:10")(tsplus_module_2.map(() => ({ version, data: record })))(tracer_1.withCallTrace(fileName_1 + ":70:10")(tsplus_module_2.flatMap(serialised => storage.set(getRecordName(type, record.id), serialised)))(getData(record)));
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
function bogusLock() {
|
|
53
|
-
return tracer_1.withCallTrace(fileName_1 + ":
|
|
53
|
+
return tracer_1.withCallTrace(fileName_1 + ":77:22")(tsplus_module_2.acquireRelease(tsplus_module_3.unit, () => tsplus_module_3.unit));
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL21lbWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBR3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hFLE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBR3pDLDREQUE0RDtBQUM1RCwyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFrQixDQUFBO0FBRXpDLE1BQU0sUUFBUSxHQUFnQyxFQUFFLENBQUMsV0FBVyxDQUEzQyxrQkFBa0IsQ0FBQyxNQUFNLENBQWtCLENBQUE7QUFFNUQsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxDQUNMLElBQVksRUFDWixNQUFpRCxFQUNqRCxNQUE4QyxFQUM5QyxFQUFFO1FBQ0YsT0FBTztZQUNMLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ3ZDLE1BQU07WUFDTixJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUM7U0FDbkQsQ0FBQTtRQUVELFNBQVMsSUFBSSxDQUFDLEVBQVU7WUFDdEIscURBQU8scUVBQUEsMkJBQUEsa0VBRUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQXhCLENBQUMsQ0FBd0IsR0FGOUIsT0FBTztpQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FB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
|
|
@@ -28,7 +28,7 @@ export function makeLiveRecordCache() {
|
|
|
28
28
|
}
|
|
29
29
|
// module tag
|
|
30
30
|
export const RecordCache = tsplus_module_2.Tag();
|
|
31
|
-
export const LiveRecordCache =
|
|
31
|
+
export const LiveRecordCache = tsplus_module_3.toLayer(tracer_1.withCallTrace(fileName_1 + ":31:32")(tsplus_module_1.sync(() => makeLiveRecordCache())), RecordCache);
|
|
32
32
|
const getM = (type) => (eff) => tracer_1.withCallTrace(fileName_1 + ":35:12")(tsplus_module_1.gen(function* ($) {
|
|
33
33
|
const { get } = yield* $(tsplus_module_1.service(RecordCache));
|
|
34
34
|
return yield* $(tracer_1.withCallTrace(fileName_1 + ":37:36")(tsplus_module_1.flatMap(eff))(get(type)));
|
|
@@ -53,4 +53,4 @@ export function store(tryRead, save, lock, type) {
|
|
|
53
53
|
? tracer_1.withCallTrace(fileName_1 + ":111:24")(tsplus_module_1.fail(new OptimisticLockException(type, record.id))) : tsplus_module_3.unit))(tracer_1.withCallTrace(fileName_1 + ":103:12")(tsplus_module_1.flatMap(_ => tsplus_module_4.match(() => tracer_1.withCallTrace(fileName_1 + ":105:28")(tsplus_module_1.fail(new InvalidStateError("record is gone"))), tsplus_module_1.succeed)(_)))(tryRead(record.id))))))(lock(record.id)));
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL3NpbXBsZWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHOUQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUFxQixPQUFlLEVBQVcsT0FBaUI7UUFBM0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFXLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFEdkQsU0FBSSxHQUFHLG1CQUFtQixDQUFBO0lBQ2dDLENBQUM7Q0FDckU7QUFFRCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFBO0lBQ3ZELE9BQU87UUFDTCxHQUFHLEVBQUUsQ0FBSSxJQUFZLEVBQUUsRUFBRSw4Q0FDdkIscUJBQU8sR0FBRyxFQUFFO1lBQ1YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN0QixJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUNQLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBbUIsQ0FBQTtnQkFDckMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0JBQ2YsT0FBTyxFQUF3QyxDQUFBO2FBQ2hEO1lBQ0QsT0FBTyxFQUF3QyxDQUFBO1FBQ2pELENBQUMsQ0FBQyxDQUFBO0tBQ0wsQ0FBQTtBQUNILENBQUM7QUFJRCxhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGdCQUFBLEdBQUcsRUFBZSxDQUFBO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxzRUFBQSwyQkFBTyxtQkFBbUIsRUFBRSxDQUFDLEdBQVMsV0FBVyxDQUFDLENBQUE7QUFFakYsTUFBTSxJQUFJLEdBQUcsQ0FBSSxJQUFZ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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -8,24 +8,24 @@
|
|
|
8
8
|
"@effect-ts/core": "^0.60.5",
|
|
9
9
|
"@effect-ts/system": "^0.57.5",
|
|
10
10
|
"@effect-ts/monocle": "*",
|
|
11
|
-
"@effect/io": "^0.0.
|
|
11
|
+
"@effect/io": "^0.0.66",
|
|
12
12
|
"@fp-ts/core": "^0.0.11",
|
|
13
|
-
"@fp-ts/data": "^0.0.
|
|
13
|
+
"@fp-ts/data": "^0.0.40",
|
|
14
14
|
"@sendgrid/helpers": "^7.7.0",
|
|
15
15
|
"@sendgrid/mail": "^7.7.0",
|
|
16
16
|
"change-case": "^4.1.2",
|
|
17
17
|
"cross-fetch": "^3.1.5",
|
|
18
18
|
"faker": "^5.5.3",
|
|
19
|
-
"fast-check": "^3.6.
|
|
19
|
+
"fast-check": "^3.6.2",
|
|
20
20
|
"object-hash": "^3.0.0",
|
|
21
21
|
"path-parser": "^6.1.0",
|
|
22
22
|
"proper-lockfile": "^4.1.2",
|
|
23
23
|
"pure-rand": "^6.0.0",
|
|
24
24
|
"redlock": "^4.2.0",
|
|
25
|
-
"@effect-app/prelude": "0.
|
|
26
|
-
"@effect-app/core": "0.
|
|
27
|
-
"@effect-app/infra-adapters": "0.
|
|
28
|
-
"@effect-app/schema": "0.
|
|
25
|
+
"@effect-app/prelude": "0.9.0",
|
|
26
|
+
"@effect-app/core": "0.9.0",
|
|
27
|
+
"@effect-app/infra-adapters": "0.9.1",
|
|
28
|
+
"@effect-app/schema": "0.9.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@babel/cli": "^7.20.7",
|