@effect-app/infra 2.32.2 → 2.34.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 +22 -0
- package/package.json +174 -632
- package/_cjs/CUPS.cjs +0 -120
- package/_cjs/CUPS.cjs.map +0 -1
- package/_cjs/Emailer/Sendgrid.cjs +0 -109
- package/_cjs/Emailer/Sendgrid.cjs.map +0 -1
- package/_cjs/Emailer/fake.cjs +0 -17
- package/_cjs/Emailer/fake.cjs.map +0 -1
- package/_cjs/Emailer/service.cjs +0 -12
- package/_cjs/Emailer/service.cjs.map +0 -1
- package/_cjs/Emailer.cjs +0 -17
- package/_cjs/Emailer.cjs.map +0 -1
- package/_cjs/MainFiberSet.cjs +0 -61
- package/_cjs/MainFiberSet.cjs.map +0 -1
- package/_cjs/Model/Repository/ext.cjs +0 -68
- package/_cjs/Model/Repository/ext.cjs.map +0 -1
- package/_cjs/Model/Repository/internal/internal.cjs +0 -245
- package/_cjs/Model/Repository/internal/internal.cjs.map +0 -1
- package/_cjs/Model/Repository/legacy.cjs +0 -6
- package/_cjs/Model/Repository/legacy.cjs.map +0 -1
- package/_cjs/Model/Repository/makeRepo.cjs +0 -34
- package/_cjs/Model/Repository/makeRepo.cjs.map +0 -1
- package/_cjs/Model/Repository/service.cjs +0 -6
- package/_cjs/Model/Repository/service.cjs.map +0 -1
- package/_cjs/Model/Repository.cjs +0 -52
- package/_cjs/Model/Repository.cjs.map +0 -1
- package/_cjs/Model/dsl.cjs +0 -54
- package/_cjs/Model/dsl.cjs.map +0 -1
- package/_cjs/Model/filter/filterApi.cjs +0 -6
- package/_cjs/Model/filter/filterApi.cjs.map +0 -1
- package/_cjs/Model/filter/types/errors.cjs +0 -6
- package/_cjs/Model/filter/types/errors.cjs.map +0 -1
- package/_cjs/Model/filter/types/fields.cjs +0 -6
- package/_cjs/Model/filter/types/fields.cjs.map +0 -1
- package/_cjs/Model/filter/types/path/common.cjs +0 -6
- package/_cjs/Model/filter/types/path/common.cjs.map +0 -1
- package/_cjs/Model/filter/types/path/eager.cjs +0 -37
- package/_cjs/Model/filter/types/path/eager.cjs.map +0 -1
- package/_cjs/Model/filter/types/path/index.cjs +0 -6
- package/_cjs/Model/filter/types/path/index.cjs.map +0 -1
- package/_cjs/Model/filter/types/utils.cjs +0 -6
- package/_cjs/Model/filter/types/utils.cjs.map +0 -1
- package/_cjs/Model/filter/types/validator.cjs +0 -6
- package/_cjs/Model/filter/types/validator.cjs.map +0 -1
- package/_cjs/Model/filter/types.cjs +0 -50
- package/_cjs/Model/filter/types.cjs.map +0 -1
- package/_cjs/Model/query/dsl.cjs +0 -133
- package/_cjs/Model/query/dsl.cjs.map +0 -1
- package/_cjs/Model/query/new-kid-interpreter.cjs +0 -162
- package/_cjs/Model/query/new-kid-interpreter.cjs.map +0 -1
- package/_cjs/Model/query.cjs +0 -28
- package/_cjs/Model/query.cjs.map +0 -1
- package/_cjs/Model.cjs +0 -34
- package/_cjs/Model.cjs.map +0 -1
- package/_cjs/Operations.cjs +0 -105
- package/_cjs/Operations.cjs.map +0 -1
- package/_cjs/OperationsRepo.cjs +0 -21
- package/_cjs/OperationsRepo.cjs.map +0 -1
- package/_cjs/QueueMaker/SQLQueue.cjs +0 -149
- package/_cjs/QueueMaker/SQLQueue.cjs.map +0 -1
- package/_cjs/QueueMaker/errors.cjs +0 -29
- package/_cjs/QueueMaker/errors.cjs.map +0 -1
- package/_cjs/QueueMaker/memQueue.cjs +0 -90
- package/_cjs/QueueMaker/memQueue.cjs.map +0 -1
- package/_cjs/QueueMaker/sbqueue.cjs +0 -107
- package/_cjs/QueueMaker/sbqueue.cjs.map +0 -1
- package/_cjs/QueueMaker/service.cjs +0 -10
- package/_cjs/QueueMaker/service.cjs.map +0 -1
- package/_cjs/RequestContext.cjs +0 -54
- package/_cjs/RequestContext.cjs.map +0 -1
- package/_cjs/RequestFiberSet.cjs +0 -85
- package/_cjs/RequestFiberSet.cjs.map +0 -1
- package/_cjs/Store/ContextMapContainer.cjs +0 -19
- package/_cjs/Store/ContextMapContainer.cjs.map +0 -1
- package/_cjs/Store/Cosmos/query.cjs +0 -170
- package/_cjs/Store/Cosmos/query.cjs.map +0 -1
- package/_cjs/Store/Cosmos.cjs +0 -302
- package/_cjs/Store/Cosmos.cjs.map +0 -1
- package/_cjs/Store/Disk.cjs +0 -118
- package/_cjs/Store/Disk.cjs.map +0 -1
- package/_cjs/Store/Memory.cjs +0 -174
- package/_cjs/Store/Memory.cjs.map +0 -1
- package/_cjs/Store/codeFilter.cjs +0 -128
- package/_cjs/Store/codeFilter.cjs.map +0 -1
- package/_cjs/Store/index.cjs +0 -46
- package/_cjs/Store/index.cjs.map +0 -1
- package/_cjs/Store/service.cjs +0 -73
- package/_cjs/Store/service.cjs.map +0 -1
- package/_cjs/Store/utils.cjs +0 -70
- package/_cjs/Store/utils.cjs.map +0 -1
- package/_cjs/Store.cjs +0 -17
- package/_cjs/Store.cjs.map +0 -1
- package/_cjs/adapters/SQL/Model.cjs +0 -501
- package/_cjs/adapters/SQL/Model.cjs.map +0 -1
- package/_cjs/adapters/SQL.cjs +0 -11
- package/_cjs/adapters/SQL.cjs.map +0 -1
- package/_cjs/adapters/ServiceBus.cjs +0 -76
- package/_cjs/adapters/ServiceBus.cjs.map +0 -1
- package/_cjs/adapters/cosmos-client.cjs +0 -18
- package/_cjs/adapters/cosmos-client.cjs.map +0 -1
- package/_cjs/adapters/index.cjs +0 -6
- package/_cjs/adapters/index.cjs.map +0 -1
- package/_cjs/adapters/logger.cjs +0 -9
- package/_cjs/adapters/logger.cjs.map +0 -1
- package/_cjs/adapters/memQueue.cjs +0 -27
- package/_cjs/adapters/memQueue.cjs.map +0 -1
- package/_cjs/adapters/mongo-client.cjs +0 -20
- package/_cjs/adapters/mongo-client.cjs.map +0 -1
- package/_cjs/adapters/redis-client.cjs +0 -83
- package/_cjs/adapters/redis-client.cjs.map +0 -1
- package/_cjs/api/codec.cjs +0 -13
- package/_cjs/api/codec.cjs.map +0 -1
- package/_cjs/api/internal/RequestContextMiddleware.cjs +0 -41
- package/_cjs/api/internal/RequestContextMiddleware.cjs.map +0 -1
- package/_cjs/api/internal/auth.cjs +0 -58
- package/_cjs/api/internal/auth.cjs.map +0 -1
- package/_cjs/api/internal/events.cjs +0 -34
- package/_cjs/api/internal/events.cjs.map +0 -1
- package/_cjs/api/internal/health.cjs +0 -13
- package/_cjs/api/internal/health.cjs.map +0 -1
- package/_cjs/api/internal/middlewares.cjs +0 -197
- package/_cjs/api/internal/middlewares.cjs.map +0 -1
- package/_cjs/api/middlewares.cjs +0 -115
- package/_cjs/api/middlewares.cjs.map +0 -1
- package/_cjs/api/reportError.cjs +0 -29
- package/_cjs/api/reportError.cjs.map +0 -1
- package/_cjs/api/routing/DynamicMiddleware.cjs +0 -19
- package/_cjs/api/routing/DynamicMiddleware.cjs.map +0 -1
- package/_cjs/api/routing/schema/jwt.cjs +0 -21
- package/_cjs/api/routing/schema/jwt.cjs.map +0 -1
- package/_cjs/api/routing/utils.cjs +0 -53
- package/_cjs/api/routing/utils.cjs.map +0 -1
- package/_cjs/api/routing.cjs +0 -228
- package/_cjs/api/routing.cjs.map +0 -1
- package/_cjs/api/routing.legacy.cjs +0 -191
- package/_cjs/api/routing.legacy.cjs.map +0 -1
- package/_cjs/api/routing.legacy2.cjs +0 -210
- package/_cjs/api/routing.legacy2.cjs.map +0 -1
- package/_cjs/api/routing.legacy3.cjs +0 -214
- package/_cjs/api/routing.legacy3.cjs.map +0 -1
- package/_cjs/api/setupRequest.cjs +0 -58
- package/_cjs/api/setupRequest.cjs.map +0 -1
- package/_cjs/api/util.cjs +0 -17
- package/_cjs/api/util.cjs.map +0 -1
- package/_cjs/arbs.cjs +0 -25
- package/_cjs/arbs.cjs.map +0 -1
- package/_cjs/errorReporter.cjs +0 -74
- package/_cjs/errorReporter.cjs.map +0 -1
- package/_cjs/errors.cjs +0 -17
- package/_cjs/errors.cjs.map +0 -1
- package/_cjs/fileUtil.cjs +0 -48
- package/_cjs/fileUtil.cjs.map +0 -1
- package/_cjs/index.cjs +0 -11
- package/_cjs/index.cjs.map +0 -1
- package/_cjs/logger/jsonLogger.cjs +0 -43
- package/_cjs/logger/jsonLogger.cjs.map +0 -1
- package/_cjs/logger/logFmtLogger.cjs +0 -25
- package/_cjs/logger/logFmtLogger.cjs.map +0 -1
- package/_cjs/logger/shared.cjs +0 -30
- package/_cjs/logger/shared.cjs.map +0 -1
- package/_cjs/logger.cjs +0 -9
- package/_cjs/logger.cjs.map +0 -1
- package/_cjs/rateLimit.cjs +0 -76
- package/_cjs/rateLimit.cjs.map +0 -1
- package/_cjs/test.cjs +0 -77
- package/_cjs/test.cjs.map +0 -1
- package/_cjs/vitest.cjs +0 -28
- package/_cjs/vitest.cjs.map +0 -1
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.QueueId = void 0;
|
|
7
|
-
exports.makeSQLQueue = makeSQLQueue;
|
|
8
|
-
var _setupRequest = require("@effect-app/infra/api/setupRequest");
|
|
9
|
-
var _errors = require("@effect-app/infra/QueueMaker/errors");
|
|
10
|
-
var _service = require("@effect-app/infra/QueueMaker/service");
|
|
11
|
-
var _sql = require("@effect/sql");
|
|
12
|
-
var _dateFns = require("date-fns");
|
|
13
|
-
var _effectApp = require("effect-app");
|
|
14
|
-
var _utils = require("effect-app/utils");
|
|
15
|
-
var _SQL = require("../adapters/SQL.cjs");
|
|
16
|
-
var _logger = require("../logger.cjs");
|
|
17
|
-
const QueueId = exports.QueueId = _effectApp.S.Number.pipe(_effectApp.S.brand("QueueId"));
|
|
18
|
-
// TODO: let the model track and Auto Generate versionColumn on every update instead
|
|
19
|
-
function makeSQLQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
20
|
-
return _effectApp.Effect.gen(function* () {
|
|
21
|
-
const base = {
|
|
22
|
-
id: _SQL.SQLModel.Generated(QueueId),
|
|
23
|
-
meta: _SQL.SQLModel.JsonFromString(_service.QueueMeta),
|
|
24
|
-
name: _effectApp.S.NonEmptyString255,
|
|
25
|
-
createdAt: _SQL.SQLModel.DateTimeInsert,
|
|
26
|
-
updatedAt: _SQL.SQLModel.DateTimeUpdate,
|
|
27
|
-
// TODO: at+owner
|
|
28
|
-
processingAt: _SQL.SQLModel.FieldOption(_effectApp.S.Date),
|
|
29
|
-
finishedAt: _SQL.SQLModel.FieldOption(_effectApp.S.Date),
|
|
30
|
-
etag: _effectApp.S.String // TODO: use a SQLModel thing that auto updates it?
|
|
31
|
-
// TODO: record locking.. / optimistic locking
|
|
32
|
-
// rowVersion: SQLModel.DateTimeFromNumberWithNow
|
|
33
|
-
};
|
|
34
|
-
class Queue extends _SQL.SQLModel.Class("Queue")({
|
|
35
|
-
body: _SQL.SQLModel.JsonFromString(schema),
|
|
36
|
-
...base
|
|
37
|
-
}) {}
|
|
38
|
-
class Drain extends _SQL.SQLModel.Class("Drain")({
|
|
39
|
-
body: _SQL.SQLModel.JsonFromString(drainSchema),
|
|
40
|
-
...base
|
|
41
|
-
}) {}
|
|
42
|
-
const sql = yield* _sql.SqlClient.SqlClient;
|
|
43
|
-
const queueRepo = yield* _SQL.SQLModel.makeRepository(Queue, {
|
|
44
|
-
tableName: "queue",
|
|
45
|
-
spanPrefix: "QueueRepo",
|
|
46
|
-
idColumn: "id",
|
|
47
|
-
versionColumn: "etag"
|
|
48
|
-
});
|
|
49
|
-
const drainRepo = yield* _SQL.SQLModel.makeRepository(Drain, {
|
|
50
|
-
tableName: "queue",
|
|
51
|
-
spanPrefix: "DrainRepo",
|
|
52
|
-
idColumn: "id",
|
|
53
|
-
versionColumn: "etag"
|
|
54
|
-
});
|
|
55
|
-
const decodeDrain = _effectApp.S.decode(Drain);
|
|
56
|
-
const drain = _effectApp.Effect.sync(() => (0, _dateFns.subMinutes)(new Date(), 15)).pipe(_effectApp.Effect.andThen(limit => sql`SELECT *
|
|
57
|
-
FROM queue
|
|
58
|
-
WHERE name = ${queueDrainName} AND finishedAt IS NULL AND (processingAt IS NULL OR processingAt < ${limit.getTime()})
|
|
59
|
-
LIMIT 1`));
|
|
60
|
-
const q = {
|
|
61
|
-
offer: (body, meta) => _effectApp.Effect.gen(function* () {
|
|
62
|
-
yield* queueRepo.insertVoid(Queue.insert.make({
|
|
63
|
-
body,
|
|
64
|
-
meta,
|
|
65
|
-
name: queueName,
|
|
66
|
-
processingAt: _effectApp.Option.none(),
|
|
67
|
-
finishedAt: _effectApp.Option.none(),
|
|
68
|
-
etag: crypto.randomUUID()
|
|
69
|
-
}));
|
|
70
|
-
}),
|
|
71
|
-
take: _effectApp.Effect.gen(function* () {
|
|
72
|
-
while (true) {
|
|
73
|
-
const [first] = yield* drain.pipe(_effectApp.Effect.withTracerEnabled(false)); // disable sql tracer otherwise we spam it..
|
|
74
|
-
if (first) {
|
|
75
|
-
const dec = yield* decodeDrain(first);
|
|
76
|
-
const {
|
|
77
|
-
createdAt,
|
|
78
|
-
updatedAt,
|
|
79
|
-
...rest
|
|
80
|
-
} = dec;
|
|
81
|
-
return yield* drainRepo.update(Drain.update.make({
|
|
82
|
-
...rest,
|
|
83
|
-
processingAt: _effectApp.Option.some(new Date())
|
|
84
|
-
}) // auto in lib , etag: crypto.randomUUID()
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
if (first) return first;
|
|
88
|
-
yield* _effectApp.Effect.sleep(250);
|
|
89
|
-
}
|
|
90
|
-
}),
|
|
91
|
-
finish: ({
|
|
92
|
-
createdAt,
|
|
93
|
-
updatedAt,
|
|
94
|
-
...q
|
|
95
|
-
}) => drainRepo.updateVoid(Drain.update.make({
|
|
96
|
-
...q,
|
|
97
|
-
finishedAt: _effectApp.Option.some(new Date())
|
|
98
|
-
})) // auto in lib , etag: crypto.randomUUID()
|
|
99
|
-
};
|
|
100
|
-
return {
|
|
101
|
-
publish: (...messages) => _effectApp.Effect.gen(function* () {
|
|
102
|
-
const requestContext = yield* _setupRequest.getRequestContext;
|
|
103
|
-
return yield* _effectApp.Effect.forEach(messages, m => q.offer(m, requestContext), {
|
|
104
|
-
discard: true
|
|
105
|
-
});
|
|
106
|
-
}).pipe(_effectApp.Effect.withSpan("queue.publish: " + queueName, {
|
|
107
|
-
captureStackTrace: false,
|
|
108
|
-
kind: "producer",
|
|
109
|
-
attributes: {
|
|
110
|
-
"message_tags": messages.map(_ => _._tag)
|
|
111
|
-
}
|
|
112
|
-
})),
|
|
113
|
-
drain: (handleEvent, sessionId) => _effectApp.Effect.gen(function* () {
|
|
114
|
-
const silenceAndReportError = (0, _errors.reportNonInterruptedFailure)({
|
|
115
|
-
name: "MemQueue.drain." + queueDrainName
|
|
116
|
-
});
|
|
117
|
-
const processMessage = msg => _effectApp.Effect.succeed(msg).pipe(_effectApp.Effect.flatMap(({
|
|
118
|
-
body,
|
|
119
|
-
meta
|
|
120
|
-
}) => {
|
|
121
|
-
let effect = _logger.InfraLogger.logInfo(`[${queueDrainName}] Processing incoming message`).pipe(_effectApp.Effect.annotateLogs({
|
|
122
|
-
body: (0, _utils.pretty)(body),
|
|
123
|
-
meta: (0, _utils.pretty)(meta)
|
|
124
|
-
}), _effectApp.Effect.zipRight(handleEvent(body)), silenceAndReportError, _ => (0, _setupRequest.setupRequestContext)(_, meta), _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}.${body._tag}`, {
|
|
125
|
-
captureStackTrace: false,
|
|
126
|
-
kind: "consumer",
|
|
127
|
-
attributes: {
|
|
128
|
-
"queue.name": queueDrainName,
|
|
129
|
-
"queue.sessionId": sessionId,
|
|
130
|
-
"queue.input": body
|
|
131
|
-
}
|
|
132
|
-
}));
|
|
133
|
-
if (meta.span) {
|
|
134
|
-
effect = _effectApp.Effect.withParentSpan(effect, _effectApp.Tracer.externalSpan(meta.span));
|
|
135
|
-
}
|
|
136
|
-
return effect;
|
|
137
|
-
}));
|
|
138
|
-
return yield* q.take.pipe(_effectApp.Effect.flatMap(x => processMessage(x).pipe(_effectApp.Effect.uninterruptible, _effectApp.Effect.fork, _effectApp.Effect.flatMap(_effectApp.Fiber.join), _effectApp.Effect.tap(q.finish(x)))), silenceAndReportError, _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
139
|
-
attributes: {
|
|
140
|
-
"queue.type": "sql",
|
|
141
|
-
"queue.name": queueDrainName,
|
|
142
|
-
"queue.sessionId": sessionId
|
|
143
|
-
}
|
|
144
|
-
}), _effectApp.Effect.forever);
|
|
145
|
-
})
|
|
146
|
-
};
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=SQLQueue.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SQLQueue.cjs","names":["_setupRequest","require","_errors","_service","_sql","_dateFns","_effectApp","_utils","_SQL","_logger","QueueId","exports","S","Number","pipe","brand","makeSQLQueue","queueName","queueDrainName","schema","drainSchema","Effect","gen","base","id","SQLModel","Generated","meta","JsonFromString","QueueMeta","name","NonEmptyString255","createdAt","DateTimeInsert","updatedAt","DateTimeUpdate","processingAt","FieldOption","Date","finishedAt","etag","String","Queue","Class","body","Drain","sql","SqlClient","queueRepo","makeRepository","tableName","spanPrefix","idColumn","versionColumn","drainRepo","decodeDrain","decode","drain","sync","subMinutes","andThen","limit","getTime","q","offer","insertVoid","insert","make","Option","none","crypto","randomUUID","take","first","withTracerEnabled","dec","rest","update","some","sleep","finish","updateVoid","publish","messages","requestContext","getRequestContext","forEach","m","discard","withSpan","captureStackTrace","kind","attributes","map","_","_tag","handleEvent","sessionId","silenceAndReportError","reportNonInterruptedFailure","processMessage","msg","succeed","flatMap","effect","InfraLogger","logInfo","annotateLogs","pretty","zipRight","setupRequestContext","span","withParentSpan","Tracer","externalSpan","x","uninterruptible","fork","Fiber","join","tap","forever"],"sources":["../../src/QueueMaker/SQLQueue.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.reportNonInterruptedFailure = reportNonInterruptedFailure;
|
|
7
|
-
exports.reportNonInterruptedFailureCause = reportNonInterruptedFailureCause;
|
|
8
|
-
exports.reportQueueError = void 0;
|
|
9
|
-
var _errorReporter = require("@effect-app/infra/errorReporter");
|
|
10
|
-
var _effectApp = require("effect-app");
|
|
11
|
-
const reportQueueError_ = (0, _errorReporter.reportError)("Queue");
|
|
12
|
-
const reportQueueError = (cause, extras) => reportQueueError_(cause, extras);
|
|
13
|
-
exports.reportQueueError = reportQueueError;
|
|
14
|
-
function reportNonInterruptedFailure(context) {
|
|
15
|
-
const report = reportNonInterruptedFailureCause(context);
|
|
16
|
-
return inp => inp.pipe(_effectApp.Effect.onExit(_effectApp.Exit.match({
|
|
17
|
-
onFailure: report,
|
|
18
|
-
onSuccess: () => _effectApp.Effect.void
|
|
19
|
-
})), _effectApp.Effect.exit);
|
|
20
|
-
}
|
|
21
|
-
function reportNonInterruptedFailureCause(context) {
|
|
22
|
-
return cause => {
|
|
23
|
-
if (_effectApp.Cause.isInterruptedOnly(cause)) {
|
|
24
|
-
return _effectApp.Effect.failCause(cause);
|
|
25
|
-
}
|
|
26
|
-
return reportQueueError(cause, context);
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=errors.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.cjs","names":["_errorReporter","require","_effectApp","reportQueueError_","reportError","reportQueueError","cause","extras","exports","reportNonInterruptedFailure","context","report","reportNonInterruptedFailureCause","inp","pipe","Effect","onExit","Exit","match","onFailure","onSuccess","void","exit","Cause","isInterruptedOnly","failCause"],"sources":["../../src/QueueMaker/errors.ts"],"sourcesContent":[null],"mappings":";;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,MAAME,iBAAiB,GAAG,IAAAC,0BAAW,EAAC,OAAO,CAAC;AAEvC,MAAMC,gBAAgB,GAAGA,CAAIC,KAAe,EAAEC,MAAgC,KACnFJ,iBAAiB,CAACG,KAAK,EAAEC,MAAM,CAAC;AAAAC,OAAA,CAAAH,gBAAA,GAAAA,gBAAA;AAE5B,SAAUI,2BAA2BA,CAACC,OAAiC;EAC3E,MAAMC,MAAM,GAAGC,gCAAgC,CAACF,OAAO,CAAC;EACxD,OAAiBG,GAAoB,IACnCA,GAAG,CAACC,IAAI,CACNC,iBAAM,CAACC,MAAM,CACXC,eAAI,CAACC,KAAK,CAAC;IACTC,SAAS,EAAER,MAAM;IACjBS,SAAS,EAAEA,CAAA,KAAML,iBAAM,CAACM;GACzB,CAAC,CACH,EACDN,iBAAM,CAACO,IAAI,CACZ;AACL;AAEM,SAAUV,gCAAgCA,CAACF,OAAiC;EAChF,OAAWJ,KAAe,IAAkB;IAC1C,IAAIiB,gBAAK,CAACC,iBAAiB,CAAClB,KAAK,CAAC,EAAE;MAClC,OAAOS,iBAAM,CAACU,SAAS,CAACnB,KAAqB,CAAC;IAChD;IACA,OAAOD,gBAAgB,CAACC,KAAK,EAAEI,OAAO,CAAC;EACzC,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.makeMemQueue = makeMemQueue;
|
|
7
|
-
var _effect = require("effect");
|
|
8
|
-
var _effectApp = require("effect-app");
|
|
9
|
-
var _utils = require("effect-app/utils");
|
|
10
|
-
var _memQueue = require("../adapters/memQueue.cjs");
|
|
11
|
-
var _setupRequest = require("../api/setupRequest.cjs");
|
|
12
|
-
var _logger = require("../logger.cjs");
|
|
13
|
-
var _errors = require("./errors.cjs");
|
|
14
|
-
var _service = require("./service.cjs");
|
|
15
|
-
function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
16
|
-
return _effectApp.Effect.gen(function* () {
|
|
17
|
-
const mem = yield* _memQueue.MemQueue;
|
|
18
|
-
const q = yield* mem.getOrCreateQueue(queueName);
|
|
19
|
-
const qDrain = yield* mem.getOrCreateQueue(queueDrainName);
|
|
20
|
-
const wireSchema = _effectApp.S.Struct({
|
|
21
|
-
body: schema,
|
|
22
|
-
meta: _service.QueueMeta
|
|
23
|
-
});
|
|
24
|
-
const drainW = _effectApp.S.Struct({
|
|
25
|
-
body: drainSchema,
|
|
26
|
-
meta: _service.QueueMeta
|
|
27
|
-
});
|
|
28
|
-
const parseDrain = (0, _effectApp.flow)(_effectApp.S.decodeUnknown(drainW), _effectApp.Effect.orDie);
|
|
29
|
-
return {
|
|
30
|
-
publish: (...messages) => _effectApp.Effect.gen(function* () {
|
|
31
|
-
const requestContext = yield* _setupRequest.getRequestContext;
|
|
32
|
-
return yield* _effectApp.Effect.forEach(messages, m =>
|
|
33
|
-
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
34
|
-
_effectApp.S.encode(wireSchema)({
|
|
35
|
-
body: m,
|
|
36
|
-
meta: requestContext
|
|
37
|
-
}).pipe(_effectApp.Effect.orDie, _effectApp.Effect.andThen(JSON.stringify),
|
|
38
|
-
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
39
|
-
_effectApp.Effect.flatMap(_ => q.offer(_))), {
|
|
40
|
-
discard: true
|
|
41
|
-
});
|
|
42
|
-
}).pipe(_effectApp.Effect.withSpan("queue.publish: " + queueName, {
|
|
43
|
-
captureStackTrace: false,
|
|
44
|
-
kind: "producer",
|
|
45
|
-
attributes: {
|
|
46
|
-
"message_tags": messages.map(_ => _._tag)
|
|
47
|
-
}
|
|
48
|
-
})),
|
|
49
|
-
drain: (handleEvent, sessionId) => _effectApp.Effect.gen(function* () {
|
|
50
|
-
const silenceAndReportError = (0, _errors.reportNonInterruptedFailure)({
|
|
51
|
-
name: "MemQueue.drain." + queueDrainName
|
|
52
|
-
});
|
|
53
|
-
const processMessage = msg =>
|
|
54
|
-
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
55
|
-
_effectApp.Effect.sync(() => JSON.parse(msg)).pipe(_effectApp.Effect.flatMap(parseDrain), _effectApp.Effect.orDie, _effectApp.Effect.flatMap(({
|
|
56
|
-
body,
|
|
57
|
-
meta
|
|
58
|
-
}) => {
|
|
59
|
-
let effect = _logger.InfraLogger.logInfo(`[${queueDrainName}] Processing incoming message`).pipe(_effectApp.Effect.annotateLogs({
|
|
60
|
-
body: (0, _utils.pretty)(body),
|
|
61
|
-
meta: (0, _utils.pretty)(meta)
|
|
62
|
-
}), _effectApp.Effect.zipRight(handleEvent(body)), silenceAndReportError, _ => (0, _setupRequest.setupRequestContext)(_, meta), _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}.${body._tag}`, {
|
|
63
|
-
captureStackTrace: false,
|
|
64
|
-
kind: "consumer",
|
|
65
|
-
attributes: {
|
|
66
|
-
"queue.name": queueDrainName,
|
|
67
|
-
"queue.sessionId": sessionId,
|
|
68
|
-
"queue.input": body
|
|
69
|
-
}
|
|
70
|
-
}));
|
|
71
|
-
if (meta.span) {
|
|
72
|
-
effect = _effectApp.Effect.withParentSpan(effect, _effect.Tracer.externalSpan(meta.span));
|
|
73
|
-
}
|
|
74
|
-
return effect;
|
|
75
|
-
}));
|
|
76
|
-
return yield* qDrain.take.pipe(_effectApp.Effect.flatMap(x => processMessage(x).pipe(_effectApp.Effect.uninterruptible, _effectApp.Effect.fork, _effectApp.Effect.flatMap(_effectApp.Fiber.join))),
|
|
77
|
-
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
78
|
-
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
79
|
-
silenceAndReportError, _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
80
|
-
attributes: {
|
|
81
|
-
"queue.type": "mem",
|
|
82
|
-
"queue.name": queueDrainName,
|
|
83
|
-
"queue.sessionId": sessionId
|
|
84
|
-
}
|
|
85
|
-
}), _effectApp.Effect.forever);
|
|
86
|
-
})
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=memQueue.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.cjs","names":["_effect","require","_effectApp","_utils","_memQueue","_setupRequest","_logger","_errors","_service","makeMemQueue","queueName","queueDrainName","schema","drainSchema","Effect","gen","mem","MemQueue","q","getOrCreateQueue","qDrain","wireSchema","S","Struct","body","meta","QueueMeta","drainW","parseDrain","flow","decodeUnknown","orDie","publish","messages","requestContext","getRequestContext","forEach","m","encode","pipe","andThen","JSON","stringify","flatMap","_","offer","discard","withSpan","captureStackTrace","kind","attributes","map","_tag","drain","handleEvent","sessionId","silenceAndReportError","reportNonInterruptedFailure","name","processMessage","msg","sync","parse","effect","InfraLogger","logInfo","annotateLogs","pretty","zipRight","setupRequestContext","span","withParentSpan","Tracer","externalSpan","take","x","uninterruptible","fork","Fiber","join","forever"],"sources":["../../src/QueueMaker/memQueue.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.makeServiceBusLayers = makeServiceBusLayers;
|
|
7
|
-
exports.makeServiceBusQueue = makeServiceBusQueue;
|
|
8
|
-
var _effect = require("effect");
|
|
9
|
-
var _effectApp = require("effect-app");
|
|
10
|
-
var _utils = require("effect-app/utils");
|
|
11
|
-
var _ServiceBus = require("../adapters/ServiceBus.cjs");
|
|
12
|
-
var _setupRequest = require("../api/setupRequest.cjs");
|
|
13
|
-
var _logger = require("../logger.cjs");
|
|
14
|
-
var _errors = require("./errors.cjs");
|
|
15
|
-
var _service = require("./service.cjs");
|
|
16
|
-
function makeServiceBusQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
17
|
-
const wireSchema = _effectApp.S.Struct({
|
|
18
|
-
body: schema,
|
|
19
|
-
meta: _service.QueueMeta
|
|
20
|
-
});
|
|
21
|
-
const drainW = _effectApp.S.Struct({
|
|
22
|
-
body: drainSchema,
|
|
23
|
-
meta: _service.QueueMeta
|
|
24
|
-
});
|
|
25
|
-
const parseDrain = (0, _effectApp.flow)(_effectApp.S.decodeUnknown(drainW), _effectApp.Effect.orDie);
|
|
26
|
-
return _effectApp.Effect.gen(function* () {
|
|
27
|
-
const s = yield* _ServiceBus.Sender;
|
|
28
|
-
const receiver = yield* _ServiceBus.ServiceBusReceiverFactory;
|
|
29
|
-
const silenceAndReportError = (0, _errors.reportNonInterruptedFailure)({
|
|
30
|
-
name: "ServiceBusQueue.drain." + queueDrainName
|
|
31
|
-
});
|
|
32
|
-
const reportError = (0, _errors.reportNonInterruptedFailureCause)({
|
|
33
|
-
name: "ServiceBusQueue.drain." + queueDrainName
|
|
34
|
-
});
|
|
35
|
-
// TODO: or do async?
|
|
36
|
-
// This will make sure that the host receives the error (MainFiberSet.join), who will then interrupt everything and commence a shutdown and restart of app
|
|
37
|
-
// const deferred = yield* Deferred.make<never, ServiceBusError | Error>()
|
|
38
|
-
return {
|
|
39
|
-
drain: (handleEvent, sessionId) => _effectApp.Effect.gen(function* () {
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
-
function processMessage(messageBody) {
|
|
42
|
-
return _effectApp.Effect.sync(() => JSON.parse(messageBody)).pipe(_effectApp.Effect.flatMap(x => parseDrain(x)), _effectApp.Effect.orDie, _effectApp.Effect.flatMap(({
|
|
43
|
-
body,
|
|
44
|
-
meta
|
|
45
|
-
}) => {
|
|
46
|
-
let effect = _logger.InfraLogger.logInfo(`[${queueDrainName}] Processing incoming message`).pipe(_effectApp.Effect.annotateLogs({
|
|
47
|
-
body: (0, _utils.pretty)(body),
|
|
48
|
-
meta: (0, _utils.pretty)(meta)
|
|
49
|
-
}), _effectApp.Effect.zipRight(handleEvent(body)), _effectApp.Effect.orDie)
|
|
50
|
-
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
51
|
-
.pipe(silenceAndReportError, _ => (0, _setupRequest.setupRequestContext)(_, meta), _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}${sessionId ? `#${sessionId}` : ""}.${body._tag}`, {
|
|
52
|
-
captureStackTrace: false,
|
|
53
|
-
kind: "consumer",
|
|
54
|
-
attributes: {
|
|
55
|
-
"queue.name": queueDrainName,
|
|
56
|
-
"queue.sessionId": sessionId,
|
|
57
|
-
"queue.input": body
|
|
58
|
-
}
|
|
59
|
-
}));
|
|
60
|
-
if (meta.span) {
|
|
61
|
-
effect = _effectApp.Effect.withParentSpan(effect, _effect.Tracer.externalSpan(meta.span));
|
|
62
|
-
}
|
|
63
|
-
return effect;
|
|
64
|
-
}), _effectApp.Effect
|
|
65
|
-
// we reportError here, so that we report the error only, and keep flowing
|
|
66
|
-
.tapErrorCause(reportError));
|
|
67
|
-
}
|
|
68
|
-
return yield* (0, _ServiceBus.subscribe)({
|
|
69
|
-
processMessage: x => processMessage(x.body).pipe(_effectApp.Effect.uninterruptible),
|
|
70
|
-
processError: err => (0, _errors.reportQueueError)(_effectApp.Cause.fail(err.error))
|
|
71
|
-
// Deferred.completeWith(
|
|
72
|
-
// deferred,
|
|
73
|
-
// reportFatalQueueError(Cause.fail(err.error))
|
|
74
|
-
// .pipe(Effect.andThen(Effect.fail(err.error)))
|
|
75
|
-
// )
|
|
76
|
-
}, sessionId).pipe(_effectApp.Effect.provideService(_ServiceBus.ServiceBusReceiverFactory, receiver));
|
|
77
|
-
})
|
|
78
|
-
// .pipe(Effect.andThen(Deferred.await(deferred).pipe(Effect.orDie))),
|
|
79
|
-
.pipe(_effectApp.Effect.andThen(_effectApp.Effect.never)),
|
|
80
|
-
publish: (...messages) => _effectApp.Effect.gen(function* () {
|
|
81
|
-
const requestContext = yield* _setupRequest.getRequestContext;
|
|
82
|
-
return yield* _effectApp.Effect.promise(abortSignal => s.sendMessages(messages.map(m => ({
|
|
83
|
-
body: JSON.stringify(_effectApp.S.encodeSync(wireSchema)({
|
|
84
|
-
body: m,
|
|
85
|
-
meta: requestContext
|
|
86
|
-
})),
|
|
87
|
-
messageId: m.id,
|
|
88
|
-
/* correllationid: requestId */
|
|
89
|
-
contentType: "application/json",
|
|
90
|
-
sessionId: "sessionId" in m ? m.sessionId : undefined
|
|
91
|
-
})), {
|
|
92
|
-
abortSignal
|
|
93
|
-
}));
|
|
94
|
-
}).pipe(_effectApp.Effect.withSpan("queue.publish: " + queueName, {
|
|
95
|
-
captureStackTrace: false,
|
|
96
|
-
kind: "producer",
|
|
97
|
-
attributes: {
|
|
98
|
-
"message_tags": messages.map(_ => _._tag)
|
|
99
|
-
}
|
|
100
|
-
}))
|
|
101
|
-
};
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
function makeServiceBusLayers(url, queueName, queueDrainName) {
|
|
105
|
-
return _effectApp.Layer.merge(_ServiceBus.ServiceBusReceiverFactory.Live(queueDrainName), (0, _ServiceBus.LiveSender)(queueName)).pipe(_effectApp.Layer.provide((0, _ServiceBus.LiveServiceBusClient)(url)));
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=sbqueue.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.cjs","names":["_effect","require","_effectApp","_utils","_ServiceBus","_setupRequest","_logger","_errors","_service","makeServiceBusQueue","queueName","queueDrainName","schema","drainSchema","wireSchema","S","Struct","body","meta","QueueMeta","drainW","parseDrain","flow","decodeUnknown","Effect","orDie","gen","s","Sender","receiver","ServiceBusReceiverFactory","silenceAndReportError","reportNonInterruptedFailure","name","reportError","reportNonInterruptedFailureCause","drain","handleEvent","sessionId","processMessage","messageBody","sync","JSON","parse","pipe","flatMap","x","effect","InfraLogger","logInfo","annotateLogs","pretty","zipRight","_","setupRequestContext","withSpan","_tag","captureStackTrace","kind","attributes","span","withParentSpan","Tracer","externalSpan","tapErrorCause","subscribe","uninterruptible","processError","err","reportQueueError","Cause","fail","error","provideService","andThen","never","publish","messages","requestContext","getRequestContext","promise","abortSignal","sendMessages","map","m","stringify","encodeSync","messageId","id","contentType","undefined","makeServiceBusLayers","url","Layer","merge","Live","LiveSender","provide","LiveServiceBusClient"],"sources":["../../src/QueueMaker/sbqueue.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.QueueMeta = exports.QueueMaker = void 0;
|
|
7
|
-
var _RequestContext = require("../RequestContext.cjs");
|
|
8
|
-
const QueueMaker = exports.QueueMaker = {};
|
|
9
|
-
const QueueMeta = exports.QueueMeta = _RequestContext.RequestContext;
|
|
10
|
-
//# sourceMappingURL=service.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.cjs","names":["_RequestContext","require","QueueMaker","exports","QueueMeta","RequestContext"],"sources":["../../src/QueueMaker/service.ts"],"sourcesContent":[null],"mappings":";;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AAaO,MAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAkB,EAAE;AAEpC,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAGC,8BAAc","ignoreList":[]}
|
package/_cjs/RequestContext.cjs
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.spanAttributes = exports.RequestContext = exports.LocaleRef = exports.Locale = void 0;
|
|
7
|
-
var _effectApp = require("effect-app");
|
|
8
|
-
var _ids = require("effect-app/ids");
|
|
9
|
-
var _Schema = require("effect-app/Schema");
|
|
10
|
-
const Locale = exports.Locale = _effectApp.S.Literal("en", "de");
|
|
11
|
-
const LocaleRef = exports.LocaleRef = _effectApp.FiberRef.unsafeMake("en");
|
|
12
|
-
class RequestContext extends _effectApp.S.ExtendedClass()({
|
|
13
|
-
span: _effectApp.S.Struct({
|
|
14
|
-
traceId: _effectApp.S.String,
|
|
15
|
-
spanId: _effectApp.S.String,
|
|
16
|
-
sampled: _effectApp.S.Boolean
|
|
17
|
-
}),
|
|
18
|
-
name: _Schema.NonEmptyString255,
|
|
19
|
-
locale: Locale,
|
|
20
|
-
sourceId: _effectApp.S.optional(_Schema.NonEmptyString255),
|
|
21
|
-
// TODO?
|
|
22
|
-
namespace: _Schema.NonEmptyString255,
|
|
23
|
-
/** @deprecated */
|
|
24
|
-
userProfile: _effectApp.S.optional(_effectApp.S.Struct({
|
|
25
|
-
sub: _ids.UserProfileId
|
|
26
|
-
})) //
|
|
27
|
-
}) {
|
|
28
|
-
// static Tag = Context.Tag<RequestContext>()
|
|
29
|
-
static toMonitoring(self) {
|
|
30
|
-
return {
|
|
31
|
-
operationName: self.name,
|
|
32
|
-
locale: self.locale
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.RequestContext = RequestContext;
|
|
37
|
-
const spanAttributes = ctx => ({
|
|
38
|
-
"request.name": ctx.name,
|
|
39
|
-
"request.locale": ctx.locale,
|
|
40
|
-
"request.namespace": ctx.namespace,
|
|
41
|
-
...(ctx.sourceId ? {
|
|
42
|
-
"request.source.id": ctx.sourceId
|
|
43
|
-
} : {}),
|
|
44
|
-
...(ctx.userProfile?.sub ? {
|
|
45
|
-
"request.user.sub": ctx.userProfile.sub,
|
|
46
|
-
"request.user.roles": "roles" in ctx.userProfile ? ctx.userProfile.roles : undefined
|
|
47
|
-
} : {})
|
|
48
|
-
});
|
|
49
|
-
/* eslint-enable */
|
|
50
|
-
//
|
|
51
|
-
// codegen:end
|
|
52
|
-
//
|
|
53
|
-
exports.spanAttributes = spanAttributes;
|
|
54
|
-
//# sourceMappingURL=RequestContext.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RequestContext.cjs","names":["_effectApp","require","_ids","_Schema","Locale","exports","S","Literal","LocaleRef","FiberRef","unsafeMake","RequestContext","ExtendedClass","span","Struct","traceId","String","spanId","sampled","Boolean","name","NonEmptyString255","locale","sourceId","optional","namespace","userProfile","sub","UserProfileId","toMonitoring","self","operationName","spanAttributes","ctx","roles","undefined"],"sources":["../src/RequestContext.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEO,MAAMG,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAGE,YAAC,CAACC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AAGpC,MAAMC,SAAS,GAAAH,OAAA,CAAAG,SAAA,GAAGC,mBAAQ,CAACC,UAAU,CAAS,IAAI,CAAC;AAEpD,MAAOC,cAAe,SAAQL,YAAC,CAACM,aAAa,EAGhD,CAAC;EACFC,IAAI,EAAEP,YAAC,CAACQ,MAAM,CAAC;IACbC,OAAO,EAAET,YAAC,CAACU,MAAM;IACjBC,MAAM,EAAEX,YAAC,CAACU,MAAM;IAChBE,OAAO,EAAEZ,YAAC,CAACa;GACZ,CAAC;EACFC,IAAI,EAAEC,yBAAiB;EACvBC,MAAM,EAAElB,MAAM;EACdmB,QAAQ,EAAEjB,YAAC,CAACkB,QAAQ,CAACH,yBAAiB,CAAC;EAAE;EACzCI,SAAS,EAAEJ,yBAAiB;EAC5B;EACAK,WAAW,EAAEpB,YAAC,CAACkB,QAAQ,CAAClB,YAAC,CAACQ,MAAM,CAAC;IAAEa,GAAG,EAAEC;EAAa,CAAE,CAAC,CAAC,CAAC;CAC3D,CAAC;EACA;EAEA,OAAOC,YAAYA,CAAaC,IAAoB;IAClD,OAAO;MACLC,aAAa,EAAED,IAAI,CAACV,IAAI;MACxBE,MAAM,EAAEQ,IAAI,CAACR;KACd;EACH;;AACDjB,OAAA,CAAAM,cAAA,GAAAA,cAAA;AAEM,MAAMqB,cAAc,GAAIC,GAA2E,KAAM;EAC9G,cAAc,EAAEA,GAAG,CAACb,IAAI;EACxB,gBAAgB,EAAEa,GAAG,CAACX,MAAM;EAC5B,mBAAmB,EAAEW,GAAG,CAACR,SAAS;EAClC,IAAGQ,GAAG,CAACV,QAAQ,GAAG;IAAE,mBAAmB,EAAEU,GAAG,CAACV;EAAQ,CAAE,GAAG,EAAE;EAC5D,IAAIU,GAAG,CAACP,WAAW,EAAEC,GAAG,GACpB;IACA,kBAAkB,EAAEM,GAAG,CACpBP,WAAW,CACXC,GAAG;IACN,oBAAoB,EAAE,OAAO,IAAIM,GAAG,CAC/BP,WAAW,GACZO,GAAG,CAACP,WAAW,CAACQ,KAAK,GACrBC;GACL,GACC,EAAE;CACP,CAAC;AAQF;AACA;AACA;AACA;AAAA9B,OAAA,CAAA2B,cAAA,GAAAA,cAAA","ignoreList":[]}
|
package/_cjs/RequestFiberSet.cjs
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.setRootParentSpan = exports.RequestFiberSet = void 0;
|
|
7
|
-
var _effectApp = require("effect-app");
|
|
8
|
-
var _reportError = require("./api/reportError.cjs");
|
|
9
|
-
var _logger = require("./logger.cjs");
|
|
10
|
-
const getRootParentSpan = _effectApp.Effect.gen(function* () {
|
|
11
|
-
let span = yield* _effectApp.Effect.currentSpan.pipe(_effectApp.Effect.catchTag("NoSuchElementException", () => _effectApp.Effect.succeed(null)));
|
|
12
|
-
if (!span) return span;
|
|
13
|
-
while (span._tag === "Span" && _effectApp.Option.isSome(span.parent)) {
|
|
14
|
-
span = span.parent.value;
|
|
15
|
-
}
|
|
16
|
-
return span;
|
|
17
|
-
});
|
|
18
|
-
const setRootParentSpan = self => getRootParentSpan.pipe(_effectApp.Effect.andThen(span => span ? _effectApp.Effect.withParentSpan(self, span) : self));
|
|
19
|
-
exports.setRootParentSpan = setRootParentSpan;
|
|
20
|
-
const make = _effectApp.Effect.gen(function* () {
|
|
21
|
-
const set = yield* _effectApp.FiberSet.make();
|
|
22
|
-
const add = (...fibers) => _effectApp.Effect.sync(() => fibers.forEach(_ => _effectApp.FiberSet.unsafeAdd(set, _)));
|
|
23
|
-
const addAll = fibers => _effectApp.Effect.sync(() => fibers.forEach(_ => _effectApp.FiberSet.unsafeAdd(set, _)));
|
|
24
|
-
const join = _effectApp.FiberSet.size(set).pipe(_effectApp.Effect.andThen(count => _logger.InfraLogger.logInfo(`Joining ${count} current fibers on the RequestFiberSet`)), _effectApp.Effect.andThen(_effectApp.FiberSet.join(set)));
|
|
25
|
-
const run = _effectApp.FiberSet.run(set);
|
|
26
|
-
const register = self => self.pipe(_effectApp.Effect.fork, _effectApp.Effect.tap(add), _effectApp.Effect.andThen(_effectApp.Fiber.join));
|
|
27
|
-
// const waitUntilEmpty = Effect.gen(function*() {
|
|
28
|
-
// const currentSize = yield* FiberSet.size(set)
|
|
29
|
-
// if (currentSize === 0) {
|
|
30
|
-
// return
|
|
31
|
-
// }
|
|
32
|
-
// yield* Effect.logInfo("Waiting RequestFiberSet to be empty: " + currentSize)
|
|
33
|
-
// while ((yield* FiberSet.size(set)) > 0) yield* Effect.sleep("250 millis")
|
|
34
|
-
// yield* Effect.logDebug("RequestFiberSet is empty")
|
|
35
|
-
// })
|
|
36
|
-
// TODO: loop and interrupt all fibers in the set continuously?
|
|
37
|
-
const interrupt = _effectApp.Fiber.interruptAll(set);
|
|
38
|
-
/**
|
|
39
|
-
* Forks the effect into a new fiber attached to the RequestFiberSet scope. Because the
|
|
40
|
-
* new fiber isn't attached to the parent, when the fiber executing the
|
|
41
|
-
* returned effect terminates, the forked fiber will continue running.
|
|
42
|
-
* The fiber will be interrupted when the RequestFiberSet scope is closed.
|
|
43
|
-
*
|
|
44
|
-
* The parent span is set to the root span of the current fiber.
|
|
45
|
-
* Reports errors.
|
|
46
|
-
*/
|
|
47
|
-
function forkDaemonReport(self) {
|
|
48
|
-
return self.pipe(_reportError.reportRequestError, setRootParentSpan, _effectApp.Effect.uninterruptible, run);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Forks the effect into a new fiber attached to the RequestFiberSet scope. Because the
|
|
52
|
-
* new fiber isn't attached to the parent, when the fiber executing the
|
|
53
|
-
* returned effect terminates, the forked fiber will continue running.
|
|
54
|
-
* The fiber will be interrupted when the RequestFiberSet scope is closed.
|
|
55
|
-
*
|
|
56
|
-
* The parent span is set to the root span of the current fiber.
|
|
57
|
-
* Reports unexpected errors.
|
|
58
|
-
*/
|
|
59
|
-
function forkDaemonReportUnexpected(self) {
|
|
60
|
-
return self.pipe(_reportError.reportUnknownRequestError, setRootParentSpan, _effectApp.Effect.uninterruptible, run);
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
interrupt,
|
|
64
|
-
join,
|
|
65
|
-
run,
|
|
66
|
-
add,
|
|
67
|
-
addAll,
|
|
68
|
-
register,
|
|
69
|
-
forkDaemonReport,
|
|
70
|
-
forkDaemonReportUnexpected
|
|
71
|
-
};
|
|
72
|
-
});
|
|
73
|
-
/**
|
|
74
|
-
* Whenever you fork a fiber for a Request, and you want to prevent dependent services to close prematurely on interruption,
|
|
75
|
-
* like the ServiceBus Sender, you should register these fibers in this FiberSet.
|
|
76
|
-
*/
|
|
77
|
-
class RequestFiberSet extends _effectApp.Context.TagMakeId("RequestFiberSet", make)() {
|
|
78
|
-
static Live = this.toLayerScoped();
|
|
79
|
-
static register = self => this.use(_ => _.register(self));
|
|
80
|
-
static run = self => this.use(_ => _.run(self));
|
|
81
|
-
static forkDaemonReport = self => this.use(_ => _.forkDaemonReport(self));
|
|
82
|
-
static forkDaemonReportUnexpected = self => this.use(_ => _.forkDaemonReportUnexpected(self));
|
|
83
|
-
}
|
|
84
|
-
exports.RequestFiberSet = RequestFiberSet;
|
|
85
|
-
//# sourceMappingURL=RequestFiberSet.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RequestFiberSet.cjs","names":["_effectApp","require","_reportError","_logger","getRootParentSpan","Effect","gen","span","currentSpan","pipe","catchTag","succeed","_tag","Option","isSome","parent","value","setRootParentSpan","self","andThen","withParentSpan","exports","make","set","FiberSet","add","fibers","sync","forEach","_","unsafeAdd","addAll","join","size","count","InfraLogger","logInfo","run","register","fork","tap","Fiber","interrupt","interruptAll","forkDaemonReport","reportRequestError","uninterruptible","forkDaemonReportUnexpected","reportUnknownRequestError","RequestFiberSet","Context","TagMakeId","Live","toLayerScoped","use"],"sources":["../src/RequestFiberSet.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.startContextMap = exports.getContextMap = exports.ContextMapNotStartedError = void 0;
|
|
7
|
-
var _effectApp = require("effect-app");
|
|
8
|
-
var _service = require("./service.cjs");
|
|
9
|
-
// TODO: we have to create a new contextmap on every request.
|
|
10
|
-
// we want to share one map during startup
|
|
11
|
-
// but we want to make sure we don't re-use the startup map after startup
|
|
12
|
-
// we can call another start after startup. but it would be even better if we could Die on accessing rootmap
|
|
13
|
-
// we could also make the ContextMap optional, and when missing, issue a warning instead?
|
|
14
|
-
const ContextMapContainer = _effectApp.FiberRef.unsafeMake("root");
|
|
15
|
-
class ContextMapNotStartedError extends _effectApp.Data.TaggedError("ContextMapNotStartedError") {}
|
|
16
|
-
exports.ContextMapNotStartedError = ContextMapNotStartedError;
|
|
17
|
-
const getContextMap = exports.getContextMap = _effectApp.FiberRef.get(ContextMapContainer).pipe(_effectApp.Effect.filterOrFail(_ => _ !== "root", () => new ContextMapNotStartedError()));
|
|
18
|
-
const startContextMap = exports.startContextMap = _effectApp.Effect.flatMap(_service.ContextMap.make, _ => _effectApp.FiberRef.set(ContextMapContainer, _));
|
|
19
|
-
//# sourceMappingURL=ContextMapContainer.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMapContainer.cjs","names":["_effectApp","require","_service","ContextMapContainer","FiberRef","unsafeMake","ContextMapNotStartedError","Data","TaggedError","exports","getContextMap","get","pipe","Effect","filterOrFail","_","startContextMap","flatMap","ContextMap","make","set"],"sources":["../../src/Store/ContextMapContainer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AAEA,MAAME,mBAAmB,GAAGC,mBAAQ,CAACC,UAAU,CAAsB,MAAM,CAAC;AAEtE,MAAOC,yBAA0B,SAAQC,eAAI,CAACC,WAAW,CAAC,2BAA2B,CAAC;AAAGC,OAAA,CAAAH,yBAAA,GAAAA,yBAAA;AAExF,MAAMI,aAAa,GAAAD,OAAA,CAAAC,aAAA,GAAGN,mBAAQ,CAACO,GAAG,CAACR,mBAAmB,CAAC,CAACS,IAAI,CACjEC,iBAAM,CAACC,YAAY,CAAEC,CAAC,IAAKA,CAAC,KAAK,MAAM,EAAE,MAAM,IAAIT,yBAAyB,EAAE,CAAC,CAChF;AAEM,MAAMU,eAAe,GAAAP,OAAA,CAAAO,eAAA,GAAGH,iBAAM,CAACI,OAAO,CAACC,mBAAU,CAACC,IAAI,EAAGJ,CAAC,IAAKX,mBAAQ,CAACgB,GAAG,CAACjB,mBAAmB,EAAEY,CAAC,CAAC,CAAC","ignoreList":[]}
|