@effect-app/infra 4.0.0-beta.121 → 4.0.0-beta.123
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 +17 -0
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +8 -10
- package/dist/Model/Repository/ext.d.ts +15 -3
- package/dist/Model/Repository/ext.d.ts.map +1 -1
- package/dist/Model/Repository/ext.js +25 -2
- package/dist/Model/Repository/internal/internal.d.ts +1 -1
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +9 -8
- package/dist/Model/Repository/makeRepo.d.ts +3 -3
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/service.d.ts +21 -21
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.d.ts +2 -2
- package/dist/Operations.d.ts +2 -2
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Operations.js +54 -57
- package/dist/OperationsRepo.d.ts +2 -2
- package/dist/QueueMaker/SQLQueue.d.ts +2 -3
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +104 -115
- package/dist/QueueMaker/memQueue.d.ts +2 -2
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +51 -62
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +34 -50
- package/dist/Store/ContextMapContainer.d.ts +1 -1
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +304 -306
- package/dist/Store/Disk.d.ts +1 -1
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +2 -2
- package/dist/Store/Memory.d.ts +1 -1
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +2 -2
- package/dist/Store/SQL/Pg.d.ts.map +1 -1
- package/dist/Store/SQL/Pg.js +147 -149
- package/dist/Store/SQL.d.ts.map +1 -1
- package/dist/Store/SQL.js +6 -6
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +3 -4
- package/dist/adapters/ServiceBus.d.ts.map +1 -1
- package/dist/adapters/ServiceBus.js +7 -9
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +1 -1
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +2 -2
- package/dist/errorReporter.d.ts +3 -3
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +16 -23
- package/package.json +14 -14
- package/src/CUPS.ts +7 -9
- package/src/Model/Repository/ext.ts +71 -6
- package/src/Model/Repository/internal/internal.ts +13 -25
- package/src/Model/Repository/makeRepo.ts +4 -4
- package/src/Model/Repository/service.ts +22 -21
- package/src/Operations.ts +76 -111
- package/src/QueueMaker/SQLQueue.ts +119 -150
- package/src/QueueMaker/memQueue.ts +81 -102
- package/src/QueueMaker/sbqueue.ts +51 -81
- package/src/Store/Cosmos.ts +481 -484
- package/src/Store/Disk.ts +52 -53
- package/src/Store/Memory.ts +49 -50
- package/src/Store/SQL/Pg.ts +247 -250
- package/src/Store/SQL.ts +420 -426
- package/src/Store/utils.ts +23 -22
- package/src/adapters/ServiceBus.ts +106 -110
- package/src/api/internal/auth.ts +8 -6
- package/src/api/routing/middleware/middleware.ts +10 -11
- package/src/errorReporter.ts +58 -72
- package/test/dist/auth.test.d.ts.map +1 -0
- package/test/dist/fixtures.d.ts +1 -1
- package/test/dist/repository-ext.test.d.ts.map +1 -0
- package/test/repository-ext.test.ts +58 -0
|
@@ -9,124 +9,113 @@ import { SQLModel } from "../adapters/SQL.js";
|
|
|
9
9
|
import { InfraLogger } from "../logger.js";
|
|
10
10
|
export const QueueId = S.Finite.pipe(S.brand("QueueId"));
|
|
11
11
|
// TODO: let the model track and Auto Generate versionColumn on every update instead
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
.pipe(Effect
|
|
54
|
-
.andThen((limit) => sql `SELECT *
|
|
12
|
+
export const makeSQLQueue = Effect.fnUntraced(function* (queueName, queueDrainName, schema, drainSchema) {
|
|
13
|
+
const base = {
|
|
14
|
+
id: SQLModel.Generated(QueueId),
|
|
15
|
+
meta: SQLModel.JsonFromString(QueueMeta),
|
|
16
|
+
name: S.NonEmptyString255,
|
|
17
|
+
createdAt: SQLModel.DateTimeInsert,
|
|
18
|
+
updatedAt: SQLModel.DateTimeUpdate,
|
|
19
|
+
// TODO: at+owner
|
|
20
|
+
processingAt: SQLModel.FieldOption(S.Date),
|
|
21
|
+
finishedAt: SQLModel.FieldOption(S.Date),
|
|
22
|
+
etag: S.String // TODO: use a SQLModel thing that auto updates it?
|
|
23
|
+
// TODO: record locking.. / optimistic locking
|
|
24
|
+
// rowVersion: SQLModel.DateTimeFromNumberWithNow
|
|
25
|
+
};
|
|
26
|
+
class Queue extends SQLModel.Class("Queue")({
|
|
27
|
+
body: SQLModel.JsonFromString(schema),
|
|
28
|
+
...base
|
|
29
|
+
}) {
|
|
30
|
+
}
|
|
31
|
+
class Drain extends SQLModel.Class("Drain")({
|
|
32
|
+
body: SQLModel.JsonFromString(drainSchema),
|
|
33
|
+
...base
|
|
34
|
+
}) {
|
|
35
|
+
}
|
|
36
|
+
const sql = yield* SqlClient.SqlClient;
|
|
37
|
+
const queueRepo = yield* SQLModel.makeRepository(Queue, {
|
|
38
|
+
tableName: "queue",
|
|
39
|
+
spanPrefix: "QueueRepo",
|
|
40
|
+
idColumn: "id",
|
|
41
|
+
versionColumn: "etag"
|
|
42
|
+
});
|
|
43
|
+
const drainRepo = yield* SQLModel.makeRepository(Drain, {
|
|
44
|
+
tableName: "queue",
|
|
45
|
+
spanPrefix: "DrainRepo",
|
|
46
|
+
idColumn: "id",
|
|
47
|
+
versionColumn: "etag"
|
|
48
|
+
});
|
|
49
|
+
const decodeDrain = S.decodeEffect(Drain);
|
|
50
|
+
const drain = Effect.gen(function* () {
|
|
51
|
+
const limit = subMinutes(new Date(), 15);
|
|
52
|
+
return yield* sql `SELECT *
|
|
55
53
|
FROM queue
|
|
56
54
|
WHERE name = ${queueDrainName} AND finishedAt IS NULL AND (processingAt IS NULL OR processingAt < ${limit.getTime()})
|
|
57
|
-
LIMIT 1
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (first)
|
|
79
|
-
return first;
|
|
80
|
-
yield* Effect.sleep(250);
|
|
55
|
+
LIMIT 1`;
|
|
56
|
+
});
|
|
57
|
+
const q = {
|
|
58
|
+
offer: Effect.fnUntraced(function* (body, meta) {
|
|
59
|
+
yield* queueRepo.insertVoid(Queue.insert.make({
|
|
60
|
+
body,
|
|
61
|
+
meta,
|
|
62
|
+
name: queueName,
|
|
63
|
+
processingAt: Option.none(),
|
|
64
|
+
finishedAt: Option.none(),
|
|
65
|
+
etag: crypto.randomUUID()
|
|
66
|
+
}));
|
|
67
|
+
}),
|
|
68
|
+
take: Effect.gen(function* () {
|
|
69
|
+
while (true) {
|
|
70
|
+
const [first] = yield* drain.pipe(Effect.withTracerEnabled(false)); // disable sql tracer otherwise we spam it..
|
|
71
|
+
if (first) {
|
|
72
|
+
const dec = yield* decodeDrain(first);
|
|
73
|
+
const { createdAt, updatedAt, ...rest } = dec;
|
|
74
|
+
return yield* drainRepo.update(Drain.update.make({ ...rest, processingAt: Option.some(new Date()) }) // auto in lib , etag: crypto.randomUUID()
|
|
75
|
+
);
|
|
81
76
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
captureStackTrace: false,
|
|
106
|
-
kind: "consumer",
|
|
107
|
-
attributes: {
|
|
108
|
-
"queue.name": queueDrainName,
|
|
109
|
-
"queue.sessionId": sessionId,
|
|
110
|
-
"queue.input": body
|
|
111
|
-
}
|
|
112
|
-
}));
|
|
113
|
-
if (meta.span) {
|
|
114
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
115
|
-
}
|
|
116
|
-
return effect;
|
|
117
|
-
}));
|
|
118
|
-
return q
|
|
119
|
-
.take
|
|
120
|
-
.pipe(Effect.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.forkChild, Effect.flatMap(Fiber.join), Effect.tap(q.finish(x)))), silenceAndReportError, Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
77
|
+
if (first)
|
|
78
|
+
return first;
|
|
79
|
+
yield* Effect.sleep(250);
|
|
80
|
+
}
|
|
81
|
+
}),
|
|
82
|
+
finish: Effect.fn(function* ({ createdAt, updatedAt, ...q }) {
|
|
83
|
+
return yield* drainRepo.updateVoid(Drain.update.make({ ...q, finishedAt: Option.some(new Date()) })); // auto in lib , etag: crypto.randomUUID()
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
const queue = {
|
|
87
|
+
publish: Effect.fn("queue.publish: " + queueName, { kind: "producer" })(function* (...messages) {
|
|
88
|
+
yield* Effect.annotateCurrentSpan({ "message_tags": messages.map((_) => _._tag) });
|
|
89
|
+
const requestContext = yield* getRequestContext;
|
|
90
|
+
yield* Effect.forEach(messages, (m) => q.offer(m, requestContext), { discard: true });
|
|
91
|
+
}),
|
|
92
|
+
drain: (handleEvent, sessionId) => {
|
|
93
|
+
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
94
|
+
const processMessage = Effect.fnUntraced(function* ({ body, meta }) {
|
|
95
|
+
let effect = InfraLogger
|
|
96
|
+
.logDebug(`[${queueDrainName}] Processing incoming message`)
|
|
97
|
+
.pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.andThen(handleEvent(body)), silenceAndReportError, (_) => setupRequestContextWithCustomSpan(_, meta, `queue.drain: ${queueDrainName}.${body._tag}`, {
|
|
98
|
+
captureStackTrace: false,
|
|
99
|
+
kind: "consumer",
|
|
121
100
|
attributes: {
|
|
122
|
-
"queue.type": "sql",
|
|
123
101
|
"queue.name": queueDrainName,
|
|
124
|
-
"queue.sessionId": sessionId
|
|
102
|
+
"queue.sessionId": sessionId,
|
|
103
|
+
"queue.input": body
|
|
125
104
|
}
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
105
|
+
}));
|
|
106
|
+
if (meta.span) {
|
|
107
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
108
|
+
}
|
|
109
|
+
return yield* effect;
|
|
110
|
+
});
|
|
111
|
+
return Effect.fn(`queue.drain: ${queueDrainName}`, {
|
|
112
|
+
attributes: { "queue.type": "sql", "queue.name": queueDrainName, "queue.sessionId": sessionId }
|
|
113
|
+
})(function* () {
|
|
114
|
+
const x = yield* q.take;
|
|
115
|
+
yield* processMessage(x).pipe(Effect.uninterruptible, Effect.forkChild, Effect.flatMap(Fiber.join), Effect.tap(q.finish(x)));
|
|
116
|
+
}, (effect) => effect.pipe(silenceAndReportError, Effect.forever))();
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
return queue;
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9TUUxRdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNqRixPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQThCLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFMUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUd4RCxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBTXJELFNBQTRCLEVBQzVCLGNBQWlDLEVBQ2pDLE1BQTBCLEVBQzFCLFdBQXlDO0lBRXpDLE1BQU0sSUFBSSxHQUFHO1FBQ1gsRUFBRSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJ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
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Effect, S } from "effect-app";
|
|
2
2
|
import { MemQueue } from "../adapters/memQueue.js";
|
|
3
3
|
import { type QueueBase } from "./service.js";
|
|
4
|
-
export declare
|
|
4
|
+
export declare const makeMemQueue: <Evt extends {
|
|
5
5
|
id: S.StringId;
|
|
6
6
|
_tag: string;
|
|
7
7
|
}, DrainEvt extends {
|
|
8
8
|
id: S.StringId;
|
|
9
9
|
_tag: string;
|
|
10
|
-
}, EvtE, DrainEvtE>(queueName: string, queueDrainName: string, schema: S.Codec<Evt, EvtE>, drainSchema: S.Codec<DrainEvt, DrainEvtE>)
|
|
10
|
+
}, EvtE, DrainEvtE>(queueName: string, queueDrainName: string, schema: S.Codec<Evt, EvtE, never, never>, drainSchema: S.Codec<DrainEvt, DrainEvtE, never, never>) => Effect.Effect<QueueBase<Evt, DrainEvt>, never, MemQueue>;
|
|
11
11
|
//# sourceMappingURL=memQueue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/memQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA2C,CAAC,EAAE,MAAM,YAAY,CAAA;AAG/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAIlD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,cAAc,CAAA;AAExD,
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/memQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA2C,CAAC,EAAE,MAAM,YAAY,CAAA;AAG/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAIlD,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,cAAc,CAAA;AAExD,eAAO,MAAM,YAAY,GACvB,GAAG,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,IAAI,EACJ,SAAS,2MA8FT,CAAA"}
|
|
@@ -7,70 +7,59 @@ import { getRequestContext, setupRequestContextWithCustomSpan } from "../api/set
|
|
|
7
7
|
import { InfraLogger } from "../logger.js";
|
|
8
8
|
import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js";
|
|
9
9
|
import { QueueMeta } from "./service.js";
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
.forEach(messages, (m) =>
|
|
10
|
+
export const makeMemQueue = Effect.fnUntraced(function* (queueName, queueDrainName, schema, drainSchema) {
|
|
11
|
+
const mem = yield* MemQueue;
|
|
12
|
+
const q = yield* mem.getOrCreateQueue(queueName);
|
|
13
|
+
const qDrain = yield* mem.getOrCreateQueue(queueDrainName);
|
|
14
|
+
const wireSchema = S.Struct({ body: schema, meta: QueueMeta });
|
|
15
|
+
const wireSchemaJson = S.fromJsonString(S.toCodecJson(wireSchema));
|
|
16
|
+
const encodePublish = S.encodeEffect(wireSchemaJson);
|
|
17
|
+
const drainW = S.Struct({ body: drainSchema, meta: QueueMeta });
|
|
18
|
+
const drainWJson = S.fromJsonString(S.toCodecJson(drainW));
|
|
19
|
+
const parseDrain = flow(S.decodeUnknownEffect(drainWJson), Effect.orDie);
|
|
20
|
+
const queue = {
|
|
21
|
+
publish: Effect.fn("queue.publish: " + queueName, { kind: "producer" })(function* (...messages) {
|
|
22
|
+
yield* Effect.annotateCurrentSpan({ "message_tags": messages.map((_) => _._tag) });
|
|
23
|
+
const requestContext = yield* getRequestContext;
|
|
25
24
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
26
|
-
encodePublish({ body: m, meta: requestContext }).pipe(Effect.orDie,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
drain: (handleEvent, sessionId) => {
|
|
33
|
-
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
34
|
-
const reportError = reportNonInterruptedFailureCause({ name: "MemQueue.drain." + queueDrainName });
|
|
35
|
-
const processMessage = (msg) =>
|
|
25
|
+
yield* Effect.forEach(messages, (m) => encodePublish({ body: m, meta: requestContext }).pipe(Effect.orDie, Effect.flatMap((_) => Q.offer(q, _))), { discard: true });
|
|
26
|
+
}),
|
|
27
|
+
drain: (handleEvent, sessionId) => {
|
|
28
|
+
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
29
|
+
const reportError = reportNonInterruptedFailureCause({ name: "MemQueue.drain." + queueDrainName });
|
|
30
|
+
const processMessage = Effect.fnUntraced(function* (msg) {
|
|
36
31
|
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
37
|
-
parseDrain(msg).pipe(Effect.orDie
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
kind: "consumer",
|
|
44
|
-
attributes: {
|
|
45
|
-
"queue.name": queueDrainName,
|
|
46
|
-
"queue.sessionId": sessionId,
|
|
47
|
-
"queue.input": body
|
|
48
|
-
}
|
|
49
|
-
}));
|
|
50
|
-
if (meta.span) {
|
|
51
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
52
|
-
}
|
|
53
|
-
return effect;
|
|
54
|
-
}));
|
|
55
|
-
return Q
|
|
56
|
-
.take(qDrain)
|
|
57
|
-
.pipe(Effect
|
|
58
|
-
.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.forkChild, Effect.flatMap(Fiber.join),
|
|
59
|
-
// normally a failed item would be returned to the queue and retried up to X times.
|
|
60
|
-
Effect.flatMap((_) => _._tag === "Failure" && !Cause.hasInterruptsOnly(_.cause)
|
|
61
|
-
? Q.offer(qDrain, x).pipe(
|
|
62
|
-
// TODO: retry count tracking and max retries.
|
|
63
|
-
Effect.delay("5 seconds"), Effect.tapCause(reportError), Effect.forkDetach)
|
|
64
|
-
: Effect.void))), silenceAndReportError, Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
32
|
+
const { body, meta } = yield* parseDrain(msg).pipe(Effect.orDie);
|
|
33
|
+
let effect = InfraLogger
|
|
34
|
+
.logDebug(`[${queueDrainName}] Processing incoming message`)
|
|
35
|
+
.pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.andThen(handleEvent(body)), silenceAndReportError, (_) => setupRequestContextWithCustomSpan(_, meta, `queue.drain: ${queueDrainName}.${body._tag}`, {
|
|
36
|
+
captureStackTrace: false,
|
|
37
|
+
kind: "consumer",
|
|
65
38
|
attributes: {
|
|
66
|
-
"queue.type": "mem",
|
|
67
39
|
"queue.name": queueDrainName,
|
|
68
|
-
"queue.sessionId": sessionId
|
|
40
|
+
"queue.sessionId": sessionId,
|
|
41
|
+
"queue.input": body
|
|
69
42
|
}
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
43
|
+
}));
|
|
44
|
+
if (meta.span) {
|
|
45
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
46
|
+
}
|
|
47
|
+
return yield* effect;
|
|
48
|
+
});
|
|
49
|
+
return Effect.fn(`queue.drain: ${queueDrainName}`, {
|
|
50
|
+
attributes: { "queue.type": "mem", "queue.name": queueDrainName, "queue.sessionId": sessionId }
|
|
51
|
+
})(function* () {
|
|
52
|
+
const x = yield* Q.take(qDrain);
|
|
53
|
+
const exit = yield* processMessage(x).pipe(Effect.uninterruptible, Effect.forkChild, Effect.flatMap(Fiber.join));
|
|
54
|
+
if (exit._tag === "Failure" && !Cause.hasInterruptsOnly(exit.cause)) {
|
|
55
|
+
// normally a failed item would be returned to the queue and retried up to X times.
|
|
56
|
+
yield* Q.offer(qDrain, x).pipe(
|
|
57
|
+
// TODO: retry count tracking and max retries.
|
|
58
|
+
Effect.delay("5 seconds"), Effect.tapCause(reportError), Effect.forkDetach);
|
|
59
|
+
}
|
|
60
|
+
}, (effect) => effect.pipe(silenceAndReportError, Effect.forever))();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return queue;
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9tZW1RdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQThCLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNGLE9BQU8sRUFBa0IsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQU1yRCxTQUFpQixFQUNqQixjQUFzQixFQUN0QixNQUEwQixFQUMxQixXQUF5QztJQUV6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFDM0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUUxRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAAoC,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAI5D,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,cAAc,CAAA;AAExD,wBAAgB,mBAAmB,CACjC,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,IAAI,EACJ,SAAS,EAET,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAC1B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAAoC,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAI5D,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,cAAc,CAAA;AAExD,wBAAgB,mBAAmB,CACjC,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,IAAI,EACJ,SAAS,EAET,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAC1B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,qEAyF1C"}
|
|
@@ -26,66 +26,50 @@ export function makeServiceBusQueue(schema, drainSchema) {
|
|
|
26
26
|
// const deferred = yield* Deferred.make<never, ServiceBusError | Error>()
|
|
27
27
|
const queue = {
|
|
28
28
|
drain: (handleEvent, sessionId) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
attributes: {
|
|
43
|
-
"queue.name": receiver.name,
|
|
44
|
-
"queue.sessionId": sessionId,
|
|
45
|
-
"queue.input": body
|
|
46
|
-
}
|
|
47
|
-
}));
|
|
48
|
-
if (meta.span) {
|
|
49
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
29
|
+
const processMessage = Effect.fnUntraced(function* (messageBody) {
|
|
30
|
+
const { body, meta } = yield* parseDrain(messageBody).pipe(Effect.orDie);
|
|
31
|
+
let effect = InfraLogger
|
|
32
|
+
.logDebug(`[${receiver.name}] Processing incoming message`)
|
|
33
|
+
.pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.andThen(handleEvent(body)), Effect.orDie,
|
|
34
|
+
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
35
|
+
silenceAndReportError, (_) => setupRequestContextWithCustomSpan(_, meta, `queue.drain: ${receiver.name}${sessionId ? `#${sessionId}` : ""}.${body._tag}`, {
|
|
36
|
+
captureStackTrace: false,
|
|
37
|
+
kind: "consumer",
|
|
38
|
+
attributes: {
|
|
39
|
+
"queue.name": receiver.name,
|
|
40
|
+
"queue.sessionId": sessionId,
|
|
41
|
+
"queue.input": body
|
|
50
42
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// we
|
|
56
|
-
Effect.
|
|
57
|
-
|
|
43
|
+
}));
|
|
44
|
+
if (meta.span) {
|
|
45
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
46
|
+
}
|
|
47
|
+
// we reportError here, so that we report the error only, and keep flowing
|
|
48
|
+
const exit = yield* Effect.tapCause(effect, reportError);
|
|
49
|
+
return yield* exit;
|
|
50
|
+
});
|
|
58
51
|
return receiver
|
|
59
52
|
.subscribe({
|
|
60
53
|
processMessage: (x) => processMessage(x.body).pipe(Effect.uninterruptible),
|
|
61
54
|
processError: (err) => reportQueueError(Cause.fail(err.error))
|
|
62
|
-
// Deferred.completeWith(
|
|
63
|
-
// deferred,
|
|
64
|
-
// reportFatalQueueError(Cause.fail(err.error))
|
|
65
|
-
// .pipe(Effect.andThen(Effect.fail(err.error)))
|
|
66
|
-
// )
|
|
67
55
|
}, sessionId)
|
|
68
|
-
// .pipe(Effect.andThen(Deferred.await(deferred).pipe(Effect.orDie))),
|
|
69
56
|
.pipe(Effect.andThen(Effect.never));
|
|
70
57
|
},
|
|
71
|
-
publish: (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
58
|
+
publish: Effect.fn("queue.publish: " + sender.name, {
|
|
59
|
+
kind: "producer"
|
|
60
|
+
})(function* (...messages) {
|
|
61
|
+
yield* Effect.annotateCurrentSpan({ "message_tags": messages.map((_) => _._tag) });
|
|
62
|
+
const requestContext = yield* getRequestContext;
|
|
63
|
+
const msgs = yield* Effect.forEach(messages, (m) => encodePublish({ body: m, meta: requestContext }).pipe(Effect.orDie, Effect.map((body) => ({
|
|
64
|
+
body,
|
|
65
|
+
messageId: m.id, /* correllationid: requestId */
|
|
66
|
+
contentType: "application/json",
|
|
67
|
+
sessionId: "sessionId" in m ? m.sessionId : undefined // TODO: optional
|
|
68
|
+
}))));
|
|
69
|
+
yield* sender.sendMessages(msgs);
|
|
76
70
|
})
|
|
77
|
-
.pipe(Effect.orDie, Effect.map((body) => ({
|
|
78
|
-
body,
|
|
79
|
-
messageId: m.id, /* correllationid: requestId */
|
|
80
|
-
contentType: "application/json",
|
|
81
|
-
sessionId: "sessionId" in m ? m.sessionId : undefined // TODO: optional
|
|
82
|
-
}))))
|
|
83
|
-
.pipe(Effect.flatMap((msgs) => sender.sendMessages(msgs)))), Effect.withSpan("queue.publish: " + sender.name, {
|
|
84
|
-
kind: "producer",
|
|
85
|
-
attributes: { "message_tags": messages.map((_) => _._tag) }
|
|
86
|
-
}, { captureStackTrace: false }))
|
|
87
71
|
};
|
|
88
72
|
return queue;
|
|
89
73
|
});
|
|
90
74
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9RdWV1ZU1ha2VyL3NicXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQThCLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzFDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3RyxPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV4RCxNQUFNLFVBQVUsbUJBQW1CLENBTWpDLE1BQTBCLEVBQzFCLFdBQXlDO0lBRXpDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFDLENBQUE7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUs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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context, Effect, Layer, RequestResolver } from "effect-app";
|
|
2
2
|
import type * as Request from "effect/Request";
|
|
3
3
|
import { ContextMap } from "./service.js";
|
|
4
|
-
declare const ContextMapContainer_base: Context.Reference<
|
|
4
|
+
declare const ContextMapContainer_base: Context.Reference<"root" | ContextMap>;
|
|
5
5
|
export declare class ContextMapContainer extends ContextMapContainer_base {
|
|
6
6
|
static readonly layer: Layer.Layer<never, never, never>;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cosmos.d.ts","sourceRoot":"","sources":["../../src/Store/Cosmos.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,EAA8D,MAAM,YAAY,CAAA;AAUvH,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"Cosmos.d.ts","sourceRoot":"","sources":["../../src/Store/Cosmos.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,EAA8D,MAAM,YAAY,CAAA;AAUvH,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;AAyiBvI,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,yCAIlD"}
|