@effect-app/infra 0.83.12 → 0.84.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/_cjs/_ext/Array.cjs +3 -2
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +11 -10
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +3 -2
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.test.cjs +2 -2
- package/_cjs/api/express/makeJsonSchema.test.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +6 -4
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +25 -23
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +22 -20
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +2 -2
- package/_cjs/api/routing.cjs +56 -53
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +3 -2
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +6 -4
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +12 -11
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +8 -8
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/instrument.cjs +2 -1
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +11 -10
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +5 -5
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/logger/shared.cjs +4 -4
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +8 -7
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +14 -12
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +5 -4
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +31 -29
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +6 -5
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +7 -6
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +18 -17
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +16 -15
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +17 -16
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +35 -33
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +12 -10
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +49 -46
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +19 -18
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +43 -39
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +16 -14
- 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 -6
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +1 -1
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +13 -13
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +19 -17
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +9 -8
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +11 -9
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +20 -18
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +11 -10
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/shared.cjs +5 -5
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +18 -17
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/authorization.jwt.ts +1 -1
- package/_src/api/defaultErrorHandler.ts +2 -2
- package/_src/api/express/routing.ts.bak +8 -8
- package/_src/api/express/schema/requestHandler.ts +12 -12
- package/_src/api/express/schema/routing.ts +11 -11
- package/_src/api/routing.ts +14 -13
- package/_src/errorReporter.ts +1 -1
- package/_src/services/Emailer/Sendgrid.ts +1 -1
- package/_src/services/Operations/live.ts +5 -5
- package/_src/services/QueueMaker/errors.ts +1 -1
- package/_src/services/QueueMaker/memQueue.ts +2 -2
- package/_src/services/QueueMaker/sbqueue.ts +1 -1
- package/_src/services/Repository.ts +9 -9
- package/_src/services/RepositoryBase.ts +8 -6
- package/_src/services/RequestContextContainer.ts +1 -1
- package/_src/services/Store/Cosmos.ts +17 -12
- package/_src/services/Store/Disk.ts +4 -4
- package/_src/services/Store/Memory.ts +4 -4
- package/_src/services/Store/Redis.ts +1 -1
- package/_src/services/Store/index.test.ts.bak +5 -5
- package/_src/services/Store/index.ts +1 -1
- package/_src/services/Store/utils.ts +16 -16
- package/_src/services/simpledb/diskdb.ts +1 -1
- package/_src/services/simpledb/memdb.ts +1 -1
- package/_src/services/simpledb/redisdb.ts +1 -1
- package/_src/services/simpledb/shared.ts +1 -1
- package/_src/services/simpledb/simpledb.ts +3 -3
- package/dist/RequestContext.d.ts +20 -20
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +4 -3
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/codec.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.d.ts +2 -2
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +13 -11
- package/dist/api/express/makeJsonSchema.d.ts +2 -2
- package/dist/api/express/makeJsonSchema.d.ts.map +1 -1
- package/dist/api/express/makeJsonSchema.js +4 -3
- package/dist/api/express/makeOpenApiSpecs.d.ts +1 -1
- package/dist/api/express/makeOpenApiSpecs.js +7 -5
- package/dist/api/express/schema/requestHandler.d.ts +8 -8
- package/dist/api/express/schema/requestHandler.d.ts.map +1 -1
- package/dist/api/express/schema/requestHandler.js +36 -34
- package/dist/api/express/schema/routing.d.ts +2 -2
- package/dist/api/express/schema/routing.js +23 -21
- package/dist/api/reportError.d.ts +5 -5
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +2 -2
- package/dist/api/routing.d.ts +6 -6
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +60 -57
- package/dist/api/setupRequest.d.ts +2 -2
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +4 -3
- package/dist/api/writeDocs.d.ts +1 -1
- package/dist/api/writeDocs.d.ts.map +1 -1
- package/dist/api/writeDocs.js +7 -5
- package/dist/errorReporter.d.ts +3 -3
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +13 -12
- package/dist/errors.d.ts +7 -7
- package/dist/errors.js +9 -9
- package/dist/filter.d.ts.map +1 -1
- package/dist/instrument.d.ts +1 -1
- package/dist/instrument.d.ts.map +1 -1
- package/dist/instrument.js +3 -2
- package/dist/logger/jsonLogger.d.ts +2 -2
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +12 -11
- package/dist/logger/logFmtLogger.d.ts +2 -2
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +6 -6
- package/dist/logger/shared.d.ts +1 -1
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +5 -5
- package/dist/rateLimit.d.ts +4 -4
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +9 -8
- package/dist/services/Emailer/Sendgrid.d.ts +1 -1
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +17 -15
- package/dist/services/Emailer/fake.d.ts +1 -1
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +6 -5
- package/dist/services/Emailer/service.d.ts +4 -4
- package/dist/services/Operations/live.d.ts +1 -1
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +39 -37
- package/dist/services/Operations/service.d.ts +9 -9
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +13 -12
- package/dist/services/QueueMaker/errors.d.ts +5 -5
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +7 -6
- package/dist/services/QueueMaker/memQueue.d.ts +3 -3
- package/dist/services/QueueMaker/memQueue.js +17 -16
- package/dist/services/QueueMaker/sbqueue.d.ts +4 -4
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +16 -15
- package/dist/services/Repository.d.ts +32 -32
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +18 -17
- package/dist/services/RepositoryBase.d.ts +32 -83
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +37 -35
- package/dist/services/RequestContextContainer.d.ts +9 -9
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +15 -13
- package/dist/services/Store/Cosmos.d.ts +3 -3
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +54 -51
- package/dist/services/Store/Disk.d.ts +3 -3
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +20 -19
- package/dist/services/Store/Memory.d.ts +5 -5
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +45 -41
- package/dist/services/Store/Redis.d.ts +3 -3
- package/dist/services/Store/Redis.d.ts.map +1 -1
- package/dist/services/Store/Redis.js +17 -15
- package/dist/services/Store/index.d.ts +1 -1
- package/dist/services/Store/index.d.ts.map +1 -1
- package/dist/services/Store/index.js +8 -7
- package/dist/services/Store/service.d.ts +10 -10
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +2 -2
- package/dist/services/Store/utils.d.ts +3 -3
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +21 -21
- package/dist/services/simpledb/cosmosdb.d.ts +5 -5
- package/dist/services/simpledb/cosmosdb.d.ts.map +1 -1
- package/dist/services/simpledb/cosmosdb.js +19 -17
- package/dist/services/simpledb/diskdb.d.ts +5 -5
- package/dist/services/simpledb/diskdb.d.ts.map +1 -1
- package/dist/services/simpledb/diskdb.js +10 -9
- package/dist/services/simpledb/memdb.d.ts +5 -5
- package/dist/services/simpledb/memdb.d.ts.map +1 -1
- package/dist/services/simpledb/memdb.js +13 -11
- package/dist/services/simpledb/mongodb.d.ts +5 -5
- package/dist/services/simpledb/mongodb.d.ts.map +1 -1
- package/dist/services/simpledb/mongodb.js +16 -14
- package/dist/services/simpledb/redisdb.d.ts +11 -11
- package/dist/services/simpledb/redisdb.d.ts.map +1 -1
- package/dist/services/simpledb/redisdb.js +12 -11
- package/dist/services/simpledb/shared.d.ts +13 -13
- package/dist/services/simpledb/shared.js +6 -6
- package/dist/services/simpledb/simpledb.d.ts +7 -7
- package/dist/services/simpledb/simpledb.d.ts.map +1 -1
- package/dist/services/simpledb/simpledb.js +16 -15
- package/package.json +5 -5
|
@@ -1,68 +1,70 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Effect";
|
|
2
2
|
import * as tsplus_module_2 from "@effect-app/prelude/_ext/date";
|
|
3
3
|
import * as tsplus_module_3 from "effect/Option";
|
|
4
|
-
import * as tsplus_module_4 from "
|
|
5
|
-
import * as tsplus_module_5 from "effect/
|
|
6
|
-
import * as tsplus_module_6 from "effect/
|
|
7
|
-
import * as tsplus_module_7 from "effect/
|
|
8
|
-
import * as tsplus_module_8 from "
|
|
9
|
-
import * as tsplus_module_9 from "@effect-app/
|
|
10
|
-
import * as tsplus_module_10 from "@effect-app/
|
|
11
|
-
import * as tsplus_module_11 from "effect/
|
|
12
|
-
import * as tsplus_module_12 from "effect/
|
|
13
|
-
import * as tsplus_module_13 from "effect/
|
|
4
|
+
import * as tsplus_module_4 from "effect/Option.impl";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/core/Array";
|
|
6
|
+
import * as tsplus_module_6 from "effect/Chunk.impl";
|
|
7
|
+
import * as tsplus_module_7 from "effect/Exit.impl";
|
|
8
|
+
import * as tsplus_module_8 from "effect/Cause.impl";
|
|
9
|
+
import * as tsplus_module_9 from "@effect-app/prelude/schema";
|
|
10
|
+
import * as tsplus_module_10 from "@effect-app/core/OptionX";
|
|
11
|
+
import * as tsplus_module_11 from "effect/Effect.impl";
|
|
12
|
+
import * as tsplus_module_12 from "@effect-app/core/EffectX";
|
|
13
|
+
import * as tsplus_module_13 from "effect/Duration";
|
|
14
|
+
import * as tsplus_module_14 from "effect/Schedule";
|
|
15
|
+
import * as tsplus_module_15 from "effect/Layer.impl";
|
|
14
16
|
import { RequestException } from "@effect-app/infra/api/reportError";
|
|
15
17
|
import { reportError } from "@effect-app/infra/errorReporter";
|
|
16
18
|
import { Failure, Operation, OperationId, Success } from "@effect-app/prelude/Operations";
|
|
17
19
|
import { Operations } from "./service.js";
|
|
18
20
|
const reportAppError = reportError((cause) => new RequestException(cause));
|
|
19
|
-
const make = tsplus_module_1.sync(() => {
|
|
21
|
+
const make = tsplus_module_1.Effect.sync(() => {
|
|
20
22
|
const ops = new Map();
|
|
21
|
-
const makeOp = tsplus_module_1.sync(() => OperationId.make());
|
|
22
|
-
const cleanup = tsplus_module_1.sync(() => {
|
|
23
|
+
const makeOp = tsplus_module_1.Effect.sync(() => OperationId.make());
|
|
24
|
+
const cleanup = tsplus_module_1.Effect.sync(() => {
|
|
23
25
|
const before = tsplus_module_2.DateSubHours(new Date(), 1);
|
|
24
|
-
|
|
26
|
+
tsplus_module_6.forEach(tsplus_module_5.ext_itToChunk(ops
|
|
25
27
|
.entries()), ([id, op]) => {
|
|
26
|
-
const lastChanged =
|
|
28
|
+
const lastChanged = tsplus_module_4.getOrElse(tsplus_module_3.Option.fromNullable(op.updatedAt), () => op.createdAt);
|
|
27
29
|
if (lastChanged < before) {
|
|
28
30
|
ops.delete(id);
|
|
29
31
|
}
|
|
30
32
|
});
|
|
31
33
|
});
|
|
32
34
|
function addOp(id) {
|
|
33
|
-
return tsplus_module_1.sync(() => {
|
|
35
|
+
return tsplus_module_1.Effect.sync(() => {
|
|
34
36
|
ops.set(id, new Operation({ id }));
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
39
|
function findOp(id) {
|
|
38
|
-
return tsplus_module_1.sync(() => tsplus_module_3.fromNullable(ops.get(id)));
|
|
40
|
+
return tsplus_module_1.Effect.sync(() => tsplus_module_3.Option.fromNullable(ops.get(id)));
|
|
39
41
|
}
|
|
40
42
|
function finishOp(id, exit) {
|
|
41
|
-
return
|
|
42
|
-
if (
|
|
43
|
+
return tsplus_module_11.flatMap(findOp(id), (_) => tsplus_module_1.Effect.sync(() => {
|
|
44
|
+
if (tsplus_module_4.isNone(_)) {
|
|
43
45
|
throw new Error("Not found");
|
|
44
46
|
}
|
|
45
47
|
ops.set(id, {
|
|
46
48
|
..._.value,
|
|
47
49
|
updatedAt: new Date(),
|
|
48
|
-
result:
|
|
50
|
+
result: tsplus_module_7.isSuccess(exit)
|
|
49
51
|
? new Success()
|
|
50
52
|
: new Failure({
|
|
51
|
-
message:
|
|
52
|
-
?
|
|
53
|
-
:
|
|
54
|
-
?
|
|
55
|
-
:
|
|
56
|
-
.cause), (_) => typeof _ === "object" && _ !== null && "message" in _ &&
|
|
57
|
-
? tsplus_module_3.some(_.message)
|
|
58
|
-
:
|
|
53
|
+
message: tsplus_module_8.isInterrupted(exit.cause)
|
|
54
|
+
? tsplus_module_9.LongString("Interrupted")
|
|
55
|
+
: tsplus_module_8.isDie(exit.cause)
|
|
56
|
+
? tsplus_module_9.LongString("Unknown error")
|
|
57
|
+
: tsplus_module_10.getOrUndefined(tsplus_module_4.flatMap(tsplus_module_8.failureOption(exit
|
|
58
|
+
.cause), (_) => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_9.LongString.Guard(_.message)
|
|
59
|
+
? tsplus_module_3.Option.some(_.message)
|
|
60
|
+
: tsplus_module_3.Option.none())) ?? null
|
|
59
61
|
})
|
|
60
62
|
});
|
|
61
63
|
}));
|
|
62
64
|
}
|
|
63
65
|
function update(id, progress) {
|
|
64
|
-
return
|
|
65
|
-
if (
|
|
66
|
+
return tsplus_module_11.flatMap(findOp(id), (_) => tsplus_module_1.Effect.sync(() => {
|
|
67
|
+
if (tsplus_module_4.isNone(_)) {
|
|
66
68
|
throw new Error("Not found");
|
|
67
69
|
}
|
|
68
70
|
ops.set(id, { ..._.value, updatedAt: new Date(), progress });
|
|
@@ -70,22 +72,22 @@ const make = tsplus_module_1.sync(() => {
|
|
|
70
72
|
}
|
|
71
73
|
return {
|
|
72
74
|
cleanup,
|
|
73
|
-
register:
|
|
75
|
+
register: tsplus_module_11.tap(makeOp, (id) => tsplus_module_11.zipRight(tsplus_module_11.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))(tsplus_module_12.EffectX.annotateLogscoped("operationId", id))),
|
|
74
76
|
find: findOp,
|
|
75
77
|
update
|
|
76
78
|
};
|
|
77
79
|
});
|
|
78
|
-
const cleanupLoop =
|
|
80
|
+
const cleanupLoop = tsplus_module_11.forkScoped(tsplus_module_11.schedule(tsplus_module_11.flatMap(tsplus_module_11.exit(Operations
|
|
79
81
|
.flatMap((_) => _.cleanup)), (_) => {
|
|
80
|
-
if (
|
|
81
|
-
return tsplus_module_1.unit;
|
|
82
|
+
if (tsplus_module_7.isSuccess(_)) {
|
|
83
|
+
return tsplus_module_1.Effect.unit;
|
|
82
84
|
}
|
|
83
85
|
else {
|
|
84
86
|
return reportAppError(_.cause);
|
|
85
87
|
}
|
|
86
|
-
}),
|
|
88
|
+
}), tsplus_module_14.Schedule.fixed(tsplus_module_13.Duration.minutes(1))));
|
|
87
89
|
/**
|
|
88
90
|
* @tsplus static Operations.Ops Live
|
|
89
91
|
*/
|
|
90
|
-
export const Live =
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
export const Live = tsplus_module_15.provideMerge(tsplus_module_15.scopedDiscard(cleanupLoop))(tsplus_module_15.effect(Operations)(make));
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV6QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUUxRSxNQUFNLElBQUksR0FBRyxnQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQWUsRUFBRTtJQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQTtJQUM3QyxNQUFNLE1BQU0sR0FBRyxnQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXBELE1BQU0sT0FBTyxHQUFHLGdCQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQy9CLE1BQU0sTUFBTSxHQUFHLDZCQUFBLElBQUksSUFBSSxFQUFFLEVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDckMsc0RBQUEsR0FBRzthQUNBLE9BQU8sRUFBRSxHQUVELENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRywwQkFBQSxnQkFBQSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBVyxH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
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { TagClass } from "@effect-app/prelude/service";
|
|
2
2
|
import { Effect } from "effect/Effect";
|
|
3
|
-
import { Option } from "
|
|
3
|
+
import { Option } from "effect/Option";
|
|
4
4
|
import type { Operation, OperationId, OperationProgress } from "@effect-app/prelude/Operations";
|
|
5
5
|
import * as Scope from "effect/Scope";
|
|
6
6
|
export interface OperationsId {
|
|
7
7
|
readonly _: unique symbol;
|
|
8
8
|
}
|
|
9
9
|
declare const Operations_base: (abstract new () => {}) & {
|
|
10
|
-
flatMap<R1, E1, B>(f: (a: Operations) => import("effect
|
|
11
|
-
map<B_1>(f: (a: Operations) => B_1): import("effect
|
|
12
|
-
makeLayer(svc: Operations): import("effect
|
|
13
|
-
} & import("effect/Context").Tag<OperationsId, Operations>;
|
|
10
|
+
flatMap<R1, E1, B>(f: (a: Operations) => import("effect").Effect<R1, E1, B>): import("effect").Effect<OperationsId | R1, E1, B>;
|
|
11
|
+
map<B_1>(f: (a: Operations) => B_1): import("effect").Effect<OperationsId, never, B_1>;
|
|
12
|
+
makeLayer(svc: Operations): import("effect").Layer<never, never, Operations>;
|
|
13
|
+
} & import("effect/Context.impl").Tag<OperationsId, Operations>;
|
|
14
14
|
/**
|
|
15
15
|
* @tsplus type Operations
|
|
16
16
|
* @tsplus companion Operations.Ops
|
|
@@ -25,21 +25,21 @@ export declare abstract class Operations extends Operations_base {
|
|
|
25
25
|
* @tsplus getter effect/io/Effect forkOperation
|
|
26
26
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
27
27
|
*/
|
|
28
|
-
export declare function forkOperation<R, E, A>(self: Effect<R, E, A>): import("effect
|
|
28
|
+
export declare function forkOperation<R, E, A>(self: Effect<R, E, A>): import("effect").Effect<OperationsId | Exclude<R, Scope.Scope>, never, import("@effect-app/prelude/schema").StringId>;
|
|
29
29
|
/**
|
|
30
30
|
* @tsplus getter function forkOperation
|
|
31
31
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
32
32
|
*/
|
|
33
|
-
export declare function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<R, E, A>): (inp: Inp) => import("effect
|
|
33
|
+
export declare function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<R, E, A>): (inp: Inp) => import("effect").Effect<OperationsId | Exclude<R, Scope.Scope>, never, import("@effect-app/prelude/schema").StringId>;
|
|
34
34
|
/**
|
|
35
35
|
* @tsplus static effect/io/Effect.Ops forkOperation
|
|
36
36
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
37
37
|
*/
|
|
38
|
-
export declare function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<R, E, A>): import("effect
|
|
38
|
+
export declare function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<R, E, A>): import("effect").Effect<OperationsId | Exclude<R, Scope.Scope>, never, import("@effect-app/prelude/schema").StringId>;
|
|
39
39
|
/**
|
|
40
40
|
* @tsplus static effect/io/Effect.Ops forkOperationWithEffect
|
|
41
41
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
42
42
|
*/
|
|
43
|
-
export declare function forkOperationWithEffect<R, R2, E, E2, A, A2>(self: (id: OperationId) => Effect<R, E, A>, fnc: (id: OperationId) => Effect<R2, E2, A2>): import("effect
|
|
43
|
+
export declare function forkOperationWithEffect<R, R2, E, E2, A, A2>(self: (id: OperationId) => Effect<R, E, A>, fnc: (id: OperationId) => Effect<R2, E2, A2>): import("effect").Effect<OperationsId | Exclude<R, Scope.Scope> | Exclude<R2, Scope.Scope>, never, import("@effect-app/prelude/schema").StringId>;
|
|
44
44
|
export {};
|
|
45
45
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAC/F,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;;;;;;AAED;;;GAGG;AACH,8BAAsB,UAAW,SAAQ,eAAoC;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7F,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAC7C;;;;;AAKD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAC/F,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;;;;;;AAED;;;GAGG;AACH,8BAAsB,UAAW,SAAQ,eAAoC;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7F,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAC7C;;;;;AAKD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,yHAY3D;;;;;AAKD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SACvE,GAAG,2HACjB;;;;;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,yHAYnF;;;;;AAKD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EACzD,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1C,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,oJAc7C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect-app/prelude/service";
|
|
2
|
-
import * as tsplus_module_2 from "
|
|
3
|
-
import * as tsplus_module_3 from "effect/
|
|
2
|
+
import * as tsplus_module_2 from "effect/Scope.impl";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/infra/api/reportError";
|
|
4
|
+
import * as tsplus_module_4 from "effect/Effect.impl";
|
|
4
5
|
export const forkOperation = forkOperation_1;
|
|
5
6
|
import * as Scope from "effect/Scope";
|
|
6
7
|
/**
|
|
@@ -13,9 +14,9 @@ export class Operations extends tsplus_module_1.TagClass() {
|
|
|
13
14
|
* @tsplus getter effect/io/Effect forkOperation
|
|
14
15
|
*/
|
|
15
16
|
function forkOperation_1(self) {
|
|
16
|
-
return Operations.flatMap((Operations) =>
|
|
17
|
-
.make(), (scope) =>
|
|
18
|
-
.register, scope), () =>
|
|
17
|
+
return Operations.flatMap((Operations) => tsplus_module_4.flatMap(Scope
|
|
18
|
+
.make(), (scope) => tsplus_module_4.tap(tsplus_module_2.extend(Operations
|
|
19
|
+
.register, scope), () => tsplus_module_3.forkDaemonReportRequestUnexpected(tsplus_module_2.use(self, scope)))));
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* @tsplus getter function forkOperation
|
|
@@ -27,16 +28,16 @@ export function forkOperationFunction(fnc) {
|
|
|
27
28
|
* @tsplus static effect/io/Effect.Ops forkOperation
|
|
28
29
|
*/
|
|
29
30
|
export function forkOperation2(self) {
|
|
30
|
-
return Operations.flatMap((Operations) =>
|
|
31
|
-
.make(), (scope) =>
|
|
32
|
-
.register, scope), (id) =>
|
|
31
|
+
return Operations.flatMap((Operations) => tsplus_module_4.flatMap(Scope
|
|
32
|
+
.make(), (scope) => tsplus_module_4.tap(tsplus_module_2.extend(Operations
|
|
33
|
+
.register, scope), (id) => tsplus_module_3.forkDaemonReportRequestUnexpected(tsplus_module_2.use(self(id), scope)))));
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* @tsplus static effect/io/Effect.Ops forkOperationWithEffect
|
|
36
37
|
*/
|
|
37
38
|
export function forkOperationWithEffect(self, fnc) {
|
|
38
|
-
return Operations.flatMap((Operations) =>
|
|
39
|
-
.make(), (scope) =>
|
|
40
|
-
.register, scope), (opId) =>
|
|
39
|
+
return Operations.flatMap((Operations) => tsplus_module_4.flatMap(Scope
|
|
40
|
+
.make(), (scope) => tsplus_module_4.tap(tsplus_module_4.tap(tsplus_module_2.extend(Operations
|
|
41
|
+
.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))));
|
|
41
42
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7YUFxQmdCLGFBQWE7QUFwQjdCLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBTXJDOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsVUFBVyxTQUFRLGdCQUFBLFFBQVEsRUFBNEI7Q0FLNUU7QUFFRDs7R0FFRztBQUNILHlCQUF1QyxJQUFxQjtJQUMxRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQ3ZCLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYix3QkFBQSxLQUFLO1NBQ0YsSUFBSSxFQUFFLEVBQ0UsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNqQixvQkFBQSx1QkFBQSxVQUFVO1NBQ1AsUUFBUSxFQUNELEtBQUssQ0FBQyxFQUNULEdBQUcsRUFBRSxtREFBQyxvQkFBQSxJQUFJLEVBQUssS0FBSyxDQUFDLENBQWtDLENBQUMsQ0FDaEUsQ0FDTixDQUFBO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFlLEdBQWtDO0lBQ3BGLE9BQU8sQ0FBQyxHQUFRLEVBQUUsRUFBRSxpQkFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQWMsQ0FBQTtBQUM3QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFVLElBQTRDO0lBQ2xGLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FDdkIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLHdCQUFBLEtBQUs7U0FDRixJQUFJLEVBQUUsRUFDRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLG9CQUFBLHVCQUFBLFVBQVU7U0FDUCxRQUFRLEVBQ0QsS0FBSyxDQUFDLEVBQ1QsQ0FBQyxFQUFFLEVBQUUsRUFBRSxtREFBQyxvQkFBQSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUssS0FBSyxDQUFDLENBQWtDLENBQUMsQ0FDdEUsQ0FDTixDQUFBO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUEwQyxFQUMxQyxHQUE0QztJQUU1QyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQ3ZCLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYix3QkFBQSxLQUFLO1NBQ0YsSUFBSSxFQUFFLEVBQ0UsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNqQixvQkFBQSxvQkFBQSx1QkFBQSxVQUFVO1NBQ1AsUUFBUSxFQUNELEtBQUssQ0FBQyxFQUNULENBQUMsSUFBSSxFQUFFLEVBQUUsbURBQUMsb0JBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFLLEtBQUssQ0FBQyxDQUFrQyxDQUFDLEVBQ2xFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnRkFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQWlDLEtBQUssQ0FBQyxDQUFDLENBQ25FLENBQ04sQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -8,7 +8,7 @@ export declare class MessageException<E> extends CauseException<E> {
|
|
|
8
8
|
export declare class FatalQueueException<E> extends CauseException<E> {
|
|
9
9
|
constructor(cause: Cause<E>);
|
|
10
10
|
}
|
|
11
|
-
export declare const reportQueueError: <E>(cause:
|
|
11
|
+
export declare const reportQueueError: <E>(cause: Cause<E>, extras?: Record<string, unknown> | undefined) => import("effect").Effect<never, never, void>;
|
|
12
12
|
/**
|
|
13
13
|
* Forks the effect into a new fiber attached to the global scope. Because the
|
|
14
14
|
* new fiber is attached to the global scope, when the fiber executing the
|
|
@@ -18,8 +18,8 @@ export declare const reportQueueError: <E>(cause: import("effect/Cause").Cause<E
|
|
|
18
18
|
* @tsplus getter effect/io/Effect forkDaemonReportQueue
|
|
19
19
|
* @tsplus location "@effect-app/infra/services/QueueMaker/errors"
|
|
20
20
|
*/
|
|
21
|
-
export declare function forkDaemonReportQueue<R, E, A>(self: Effect<R, E, A>): import("effect
|
|
22
|
-
export declare const reportFatalQueueError: (cause: import("effect
|
|
23
|
-
export declare function reportNonInterruptedFailure(context?: Record<string, unknown>): <R, E, A>(inp:
|
|
24
|
-
export declare function reportNonInterruptedFailureCause(context?: Record<string, unknown>): <E>(cause:
|
|
21
|
+
export declare function forkDaemonReportQueue<R, E, A>(self: Effect<R, E, A>): import("effect").Effect<R, never, import("effect/Fiber.impl").RuntimeFiber<E, A>>;
|
|
22
|
+
export declare const reportFatalQueueError: (cause: import("effect").Cause<unknown>, extras?: Record<string, unknown> | undefined) => import("effect").Effect<never, never, void>;
|
|
23
|
+
export declare function reportNonInterruptedFailure(context?: Record<string, unknown>): <R, E, A>(inp: Effect<R, E, A>) => Effect<R, never, Exit<E, A>>;
|
|
24
|
+
export declare function reportNonInterruptedFailureCause(context?: Record<string, unknown>): <E>(cause: Cause<E>) => Effect<never, never, void>;
|
|
25
25
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/errors.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAED,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC/C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAID,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/errors.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAED,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC/C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAID,eAAO,MAAM,gBAAgB,aAAc,MAAM,CAAC,CAAC,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,gDAC/D,CAAA;;;;;;;;;;AAWlC,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,qFAEnE;AAED,eAAO,MAAM,qBAAqB,uIAEjC,CAAA;AAED,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,kBAErD,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAQrE;AAED,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,cAC9D,MAAM,CAAC,CAAC,KAAG,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAMxD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "effect/Effect";
|
|
2
|
-
import * as tsplus_module_2 from "effect/
|
|
3
|
-
import * as tsplus_module_3 from "effect/
|
|
1
|
+
import * as tsplus_module_1 from "effect/Effect.impl";
|
|
2
|
+
import * as tsplus_module_2 from "effect/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "effect/Exit.impl";
|
|
4
|
+
import * as tsplus_module_4 from "effect/Cause.impl";
|
|
4
5
|
import { reportError } from "@effect-app/infra/errorReporter";
|
|
5
6
|
import { CauseException } from "@effect-app/infra/errors";
|
|
6
7
|
export class MessageException extends CauseException {
|
|
@@ -30,14 +31,14 @@ export function forkDaemonReportQueue(self) {
|
|
|
30
31
|
export const reportFatalQueueError = reportError((cause) => new FatalQueueException(cause));
|
|
31
32
|
export function reportNonInterruptedFailure(context) {
|
|
32
33
|
const report = reportNonInterruptedFailureCause(context);
|
|
33
|
-
return (inp) => tsplus_module_1.flatMap(tsplus_module_1.exit(inp), (result) =>
|
|
34
|
+
return (inp) => tsplus_module_1.flatMap(tsplus_module_1.exit(inp), (result) => tsplus_module_3.match(result, { onFailure: (cause) => tsplus_module_1.map(report(cause), () => result), onSuccess: () => tsplus_module_2.Effect.sync(() => result) }));
|
|
34
35
|
}
|
|
35
36
|
export function reportNonInterruptedFailureCause(context) {
|
|
36
37
|
return (cause) => {
|
|
37
|
-
if (
|
|
38
|
+
if (tsplus_module_4.isInterrupted(cause)) {
|
|
38
39
|
return tsplus_module_1.failCause(cause);
|
|
39
40
|
}
|
|
40
41
|
return reportQueueError(cause, context);
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV6RCxNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsY0FBaUI7SUFDeEQsWUFBWSxLQUFlO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGNBQWlCO0lBQzNELFlBQVksS0FBZTtRQUN6QixLQUFLLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQzVCLENBQUM7Q0FDRjtBQUVELE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFFN0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBSSxLQUFlLEVBQUUsTUFBNEMsRUFBRSxFQUFFLENBQ25HLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUVsQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBVSxJQUFxQjtJQUNsRSwyREFBTyw4QkFBQSxJQUFJLEVBQWUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBb0I7QUFDckYsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FDOUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQzFDLENBQUE7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsT0FBaUM7SUFDM0UsTUFBTSxNQUFNLEdBQUcsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEQsT0FBTyxDQUFVLEdBQW9CLEVBQWdDLEVBQUUsQ0FDckUsNkNBQUEsR0FBRyxHQUVRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbEIsc0JBQUEsTUFBTSxFQUNKLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxvQkFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDdEcsQ0FDRixDQUFBO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxPQUFpQztJQUNoRixPQUFPLENBQUksS0FBZSxFQUE4QixFQUFFO1FBQ3hELElBQUksOEJBQUEsS0FBSyxDQUFnQixFQUFFLENBQUM7WUFDMUIsaUNBQVEsS0FBc0IsRUFBVTtRQUMxQyxDQUFDO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDekMsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -17,8 +17,8 @@ export declare function makeMemQueue<DrainR, Evt, DrainEvt extends {
|
|
|
17
17
|
}) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext | RequestContextContainer>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
|
|
18
18
|
body: DrainEvt;
|
|
19
19
|
meta: RequestContext;
|
|
20
|
-
}>): import("effect
|
|
21
|
-
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("effect
|
|
22
|
-
drain: import("effect
|
|
20
|
+
}>): import("effect").Effect<MemQueue, never, {
|
|
21
|
+
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("effect").Effect<RequestContextContainer, never, import("effect/Fiber.impl").RuntimeFiber<never, void[]>>;
|
|
22
|
+
drain: import("effect").Effect<import("effect").Scope | DrainR, never, import("effect/Fiber.impl").RuntimeFiber<never, never>>;
|
|
23
23
|
}>;
|
|
24
24
|
//# sourceMappingURL=memQueue.d.ts.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Effect";
|
|
2
|
-
import * as tsplus_module_2 from "
|
|
3
|
-
import * as tsplus_module_3 from "@effect-app/
|
|
4
|
-
import * as tsplus_module_4 from "@effect-app/
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/prelude/
|
|
6
|
-
import * as tsplus_module_6 from "effect/
|
|
2
|
+
import * as tsplus_module_2 from "effect/Effect.impl";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/infra/services/QueueMaker/errors";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/prelude/utils";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/prelude/schema";
|
|
7
|
+
import * as tsplus_module_7 from "effect/Fiber.impl";
|
|
7
8
|
import { MemQueue } from "@effect-app/infra-adapters/memQueue";
|
|
8
9
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
9
10
|
import { RequestId } from "@effect-app/prelude/ids";
|
|
@@ -14,31 +15,31 @@ import { reportNonInterruptedFailure } from "./errors.js";
|
|
|
14
15
|
* @tsplus static QueueMaker.Ops makeMem
|
|
15
16
|
*/
|
|
16
17
|
export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provideContext, parseDrain) {
|
|
17
|
-
return tsplus_module_1.gen(function* ($) {
|
|
18
|
+
return tsplus_module_1.Effect.gen(function* ($) {
|
|
18
19
|
const mem = yield* $(MemQueue);
|
|
19
20
|
const q = yield* $(mem.getOrCreateQueue(queueName));
|
|
20
21
|
const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName));
|
|
21
22
|
return {
|
|
22
|
-
publish: (...messages) => tsplus_module_1.gen(function* ($) {
|
|
23
|
+
publish: (...messages) => tsplus_module_1.Effect.gen(function* ($) {
|
|
23
24
|
const requestContext = yield* $(RequestContextContainer.get);
|
|
24
|
-
return yield* $(
|
|
25
|
+
return yield* $(tsplus_module_4.forkDaemonReportQueue(tsplus_module_3.ext_forEach(messages, (m) => tsplus_module_2.asUnit(
|
|
25
26
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
26
|
-
|
|
27
|
+
tsplus_module_2.flatMap(tsplus_module_1.Effect.sync(() => JSON.stringify(encoder({ body: m, meta: requestContext })))
|
|
27
28
|
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
28
29
|
, (_) => q.offer(_))))));
|
|
29
30
|
}),
|
|
30
|
-
drain: tsplus_module_1.gen(function* ($) {
|
|
31
|
+
drain: tsplus_module_1.Effect.gen(function* ($) {
|
|
31
32
|
const handleEvent = yield* $(makeHandleEvent);
|
|
32
33
|
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
33
34
|
const processMessage = (msg) =>
|
|
34
35
|
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
35
|
-
|
|
36
|
+
tsplus_module_2.flatMap(tsplus_module_2.orDie(tsplus_module_2.flatMap(tsplus_module_1.Effect.sync(() => JSON.parse(msg)), parseDrain)), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
|
|
36
37
|
id: RequestId(body.id),
|
|
37
38
|
locale: "en",
|
|
38
|
-
name:
|
|
39
|
-
}))(silenceAndReportError(
|
|
40
|
-
return yield* $(
|
|
41
|
-
.take(), (x) =>
|
|
39
|
+
name: tsplus_module_6.ReasonableString(body._tag)
|
|
40
|
+
}))(silenceAndReportError(tsplus_module_2.zipRight(tsplus_module_2.tap(tsplus_module_1.Effect.annotateLogs({ body: tsplus_module_5.RecordPretty(tsplus_module_5.object$(body)), meta: tsplus_module_5.RecordPretty(tsplus_module_5.object$(meta)) })(tsplus_module_1.Effect.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), handleEvent(body)))));
|
|
41
|
+
return yield* $(tsplus_module_2.forkScoped(tsplus_module_2.forever(silenceAndReportError(tsplus_module_2.flatMap(qDrain
|
|
42
|
+
.take(), (x) => tsplus_module_2.flatMap(tsplus_module_2.fork(tsplus_module_2.uninterruptible(processMessage(x))), (_) => tsplus_module_7.join(_)))
|
|
42
43
|
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
43
44
|
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
44
45
|
))));
|
|
@@ -46,4 +47,4 @@ export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent
|
|
|
46
47
|
};
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUd6RDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBUTFCLFNBQWlCLEVBQ2pCLGNBQXNCLEVBQ3RCLE9BQXlELEVBQ3pELGVBQXdGLEVBQ3hGLGNBRWlFLEVBQ2pFLFVBR21GO0lBRW5GLE9BQU8sZ0JBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM5QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBRTdELE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQ3ZCLGdCQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FB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
|
|
@@ -19,13 +19,13 @@ export declare function makeServiceBusQueue<DrainR, Evt extends {
|
|
|
19
19
|
}) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext | RequestContextContainer>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
|
|
20
20
|
body: DrainEvt;
|
|
21
21
|
meta: RequestContext;
|
|
22
|
-
}>): import("effect
|
|
23
|
-
drain: import("effect
|
|
24
|
-
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("effect
|
|
22
|
+
}>): import("effect").Effect<import("@azure/service-bus").ServiceBusReceiver | import("@azure/service-bus").ServiceBusSender, never, {
|
|
23
|
+
drain: import("effect").Effect<import("effect").Scope | DrainR, never, void>;
|
|
24
|
+
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("effect").Effect<RequestContextContainer, never, import("effect/Fiber.impl").RuntimeFiber<never, void>>;
|
|
25
25
|
}>;
|
|
26
26
|
/**
|
|
27
27
|
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
28
28
|
* @tsplus location "@effect-app/infra/services/QueueMaker/sbqueue"
|
|
29
29
|
*/
|
|
30
|
-
export declare function makeServiceBusLayers(url: string, queueName: string, queueDrainName: string): import("effect
|
|
30
|
+
export declare function makeServiceBusLayers(url: string, queueName: string, queueDrainName: string): import("effect").Layer<never, never, import("@azure/service-bus").ServiceBusReceiver | import("@azure/service-bus").ServiceBusSender>;
|
|
31
31
|
//# sourceMappingURL=sbqueue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":";;AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;;;;;AAQvE,wBAAgB,mBAAmB,CACjC,MAAM,EACN,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjE,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GAuEpF;;;;;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":";;AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;;;;;AAQvE,wBAAgB,mBAAmB,CACjC,MAAM,EACN,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjE,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GAuEpF;;;;;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,yIAG1F"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect-app/core/Tag";
|
|
2
2
|
import * as tsplus_module_2 from "effect/Effect";
|
|
3
3
|
import * as tsplus_module_3 from "@effect-app/prelude/utils";
|
|
4
|
-
import * as tsplus_module_4 from "
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/
|
|
6
|
-
import * as tsplus_module_6 from "effect/
|
|
4
|
+
import * as tsplus_module_4 from "effect/Effect.impl";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/prelude/schema";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/infra/services/QueueMaker/errors";
|
|
7
|
+
import * as tsplus_module_7 from "effect/Layer.impl";
|
|
7
8
|
import { LiveReceiver, LiveSender, LiveServiceBusClient, Receiver, Sender, subscribe } from "@effect-app/infra-adapters/ServiceBus";
|
|
8
9
|
import { captureException } from "@effect-app/infra/errorReporter";
|
|
9
10
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
@@ -15,33 +16,33 @@ import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from ".
|
|
|
15
16
|
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
16
17
|
*/
|
|
17
18
|
export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHandleEvent, provideContext, parseDrain) {
|
|
18
|
-
return tsplus_module_2.gen(function* ($) {
|
|
19
|
+
return tsplus_module_2.Effect.gen(function* ($) {
|
|
19
20
|
const s = yield* $(Sender);
|
|
20
21
|
const receiver = yield* $(Receiver);
|
|
21
22
|
const receiverLayer = tsplus_module_1.makeLayer(Receiver, receiver);
|
|
22
23
|
const silenceAndReportError = reportNonInterruptedFailure({ name: "ServiceBusQueue.drain." + queueDrainName });
|
|
23
24
|
const reportError = reportNonInterruptedFailureCause({ name: "ServiceBusQueue.drain." + queueDrainName });
|
|
24
25
|
return {
|
|
25
|
-
drain: tsplus_module_2.gen(function* ($) {
|
|
26
|
+
drain: tsplus_module_2.Effect.gen(function* ($) {
|
|
26
27
|
const handleEvent = yield* $(makeHandleEvent);
|
|
27
28
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
29
|
function processMessage(messageBody) {
|
|
29
|
-
return
|
|
30
|
+
return tsplus_module_4.tapErrorCause(tsplus_module_4.flatMap(tsplus_module_4.orDie(tsplus_module_4.flatMap(tsplus_module_2.Effect.sync(() => JSON.parse(messageBody)), (x) => parseDrain(x))), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
|
|
30
31
|
id: RequestId(body.id),
|
|
31
32
|
locale: "en",
|
|
32
|
-
name:
|
|
33
|
-
}))(silenceAndReportError(
|
|
33
|
+
name: tsplus_module_5.ReasonableString(body._tag)
|
|
34
|
+
}))(silenceAndReportError(tsplus_module_4.orDie(tsplus_module_4.zipRight(tsplus_module_4.tap(tsplus_module_2.Effect.annotateLogs({ body: tsplus_module_3.RecordPretty(tsplus_module_3.object$(body)), meta: tsplus_module_3.RecordPretty(tsplus_module_3.object$(meta)) })(tsplus_module_2.Effect.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), handleEvent(body))))))
|
|
34
35
|
// we reportError here, so that we report the error only, and keep flowing
|
|
35
36
|
, reportError);
|
|
36
37
|
}
|
|
37
|
-
return yield* $(
|
|
38
|
-
processMessage: (x) =>
|
|
39
|
-
processError: (err) => tsplus_module_2.sync(() => captureException(err.error))
|
|
38
|
+
return yield* $(tsplus_module_4.provide(subscribe({
|
|
39
|
+
processMessage: (x) => tsplus_module_4.uninterruptible(processMessage(x.body)),
|
|
40
|
+
processError: (err) => tsplus_module_2.Effect.sync(() => captureException(err.error))
|
|
40
41
|
}), receiverLayer));
|
|
41
42
|
}),
|
|
42
|
-
publish: (...messages) => tsplus_module_2.gen(function* ($) {
|
|
43
|
+
publish: (...messages) => tsplus_module_2.Effect.gen(function* ($) {
|
|
43
44
|
const requestContext = yield* $(RequestContextContainer.get);
|
|
44
|
-
return yield* $(
|
|
45
|
+
return yield* $(tsplus_module_6.forkDaemonReportQueue(tsplus_module_2.Effect.promise(() => s.sendMessages(messages.map((x) => ({
|
|
45
46
|
body: JSON.stringify(encoder({ body: x, meta: requestContext })),
|
|
46
47
|
messageId: x.id, /* correllationid: requestId */
|
|
47
48
|
contentType: "application/json"
|
|
@@ -54,6 +55,6 @@ export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHan
|
|
|
54
55
|
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
55
56
|
*/
|
|
56
57
|
export function makeServiceBusLayers(url, queueName, queueDrainName) {
|
|
57
|
-
return
|
|
58
|
+
return tsplus_module_7.provide((tsplus_module_7.merge(LiveSender(queueName))(LiveReceiver(queueDrainName))))(LiveServiceBusClient(url));
|
|
58
59
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zYnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSx1Q0FBdUMsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUczRjs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FRakMsVUFBa0IsRUFDbEIsY0FBc0IsRUFDdEIsT0FBeUQsRUFDekQsZUFBd0YsRUFDeEYsY0FFaUUsRUFDakUsVUFHbUY7SUFFbkYsT0FBTyxnQkFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNuQyxNQUFNLGFBQWEsR0FBRywwQkFBQSxRQUFRLEVBQVcsUUFBUSxDQUFDLENBQUE7UUFDbEQsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQyxFQUFFLElBQUksRUFBRSx3QkFBd0IsR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFBO1FBQzlHLE1BQU0sV0FBVyxHQUFHLGdDQUFnQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUE7UUFFekcsT0FBTztZQUNMLEtBQUssRUFBRSxnQkFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQzNCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtnQkFDN0MsOERBQThEO2dCQUM5RCxTQUFTLGNBQWMsQ0FBQyxXQUFnQjtvQkFDdEMsT0FBTyw4QkFBQSw4Q0FBQSx3QkFBQSxnQkFBQSxNQUFNLENBQ1YsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDM0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUVyQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FVdEIsY0FBYyxDQUNaLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO3dCQUMzQixFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3RCLE1BQU0sRUFBRSxJQUFhO3dCQUNyQixJQUFJLEVBQUUsZ0JBQUEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztxQkFDbEMsQ0FBQyxDQUNILENBUkkscUJBQXFCLHVCQVA5Qix5QkFBQSxvQkFFUyxnQkFBQSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSx1REFBRSxJQUFJLEVBQVUsRUFBRSxJQUFJLHVEQUFFLElBQUksRUFBVSxFQUFFLENBQUMsQ0FGNUUsZ0JBQUEsTUFBTSxDQUNILFFBQVEsQ0FBQyxPQUFPLGNBQWMsK0JBQStCLENBQUMsR0FFMUQsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsRUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBWTNCLENBQ0o7b0JBQ0QsMEVBQTBFO3NCQUMzRCxXQUFXLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQztnQkFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDYix3QkFBQSxTQUFTLENBQUM7b0JBQ1IsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsaUNBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBZ0I7b0JBQzdELFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZ0JBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3RFLENBQUMsRUFDUyxhQUFhLENBQUMsQ0FDMUIsQ0FBQTtZQUNILENBQUMsQ0FBQztZQUVGLE9BQU8sRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FDdkIsZ0JBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FDYixnQkFBQSxNQUFNLENBQ0gsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUNaLENBQUMsQ0FBQyxZQUFZLENBQ1osUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ2xCLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQzNDO29CQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLCtCQUErQjtvQkFDaEQsV0FBVyxFQUFFLGtCQUFrQjtpQkFDaEMsQ0FBQyxDQUFDLENBQ0osQ0FDRixFQUVKLENBQUE7WUFDSCxDQUFDLENBQUM7U0FDNEIsQ0FBQTtJQUNwQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRSxjQUFzQjtJQUN6RiwrQkFDSyx1QkFBZ0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFwRCxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQXlCLEVBRHBELG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUMyQjtBQUM3RCxDQUFDIn0=
|