@effect-app/infra 4.0.0-beta.20 → 4.0.0-beta.201
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 +1410 -0
- package/_check.sh +1 -1
- package/dist/CUPS.d.ts +15 -7
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +10 -12
- package/dist/Emailer/Sendgrid.d.ts +14 -14
- package/dist/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/Emailer/Sendgrid.js +16 -15
- package/dist/Emailer/fake.d.ts +1 -1
- package/dist/Emailer/service.d.ts +10 -4
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +3 -3
- package/dist/Emailer.d.ts +1 -1
- package/dist/MainFiberSet.d.ts +9 -9
- package/dist/MainFiberSet.d.ts.map +1 -1
- package/dist/MainFiberSet.js +3 -3
- package/dist/Model/Repository/Registry.d.ts +20 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +17 -0
- package/dist/Model/Repository/ext.d.ts +33 -15
- package/dist/Model/Repository/ext.d.ts.map +1 -1
- package/dist/Model/Repository/ext.js +54 -2
- package/dist/Model/Repository/internal/internal.d.ts +6 -6
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +43 -32
- package/dist/Model/Repository/legacy.d.ts +1 -1
- package/dist/Model/Repository/makeRepo.d.ts +7 -6
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +5 -1
- package/dist/Model/Repository/service.d.ts +28 -23
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/Repository/validation.d.ts +142 -17
- package/dist/Model/Repository/validation.d.ts.map +1 -1
- package/dist/Model/Repository/validation.js +5 -5
- package/dist/Model/Repository.d.ts +2 -1
- package/dist/Model/Repository.d.ts.map +1 -1
- package/dist/Model/Repository.js +2 -1
- package/dist/Model/dsl.d.ts +4 -4
- package/dist/Model/dsl.d.ts.map +1 -1
- package/dist/Model/filter/filterApi.d.ts +5 -5
- package/dist/Model/filter/filterApi.d.ts.map +1 -1
- package/dist/Model/filter/types/errors.d.ts +1 -1
- package/dist/Model/filter/types/fields.d.ts +1 -1
- package/dist/Model/filter/types/path/common.d.ts +1 -1
- package/dist/Model/filter/types/path/eager.d.ts +1 -1
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
- package/dist/Model/filter/types/path/eager.js +1 -1
- package/dist/Model/filter/types/path/index.d.ts +1 -1
- package/dist/Model/filter/types/utils.d.ts +1 -1
- package/dist/Model/filter/types/validator.d.ts +1 -1
- package/dist/Model/filter/types.d.ts +1 -1
- package/dist/Model/query/dsl.d.ts +16 -16
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.d.ts +6 -6
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.js +3 -3
- package/dist/Model/query.d.ts +1 -1
- package/dist/Model.d.ts +2 -1
- package/dist/Model.d.ts.map +1 -1
- package/dist/Model.js +2 -1
- package/dist/QueueMaker/SQLQueue.d.ts +5 -7
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +105 -114
- package/dist/QueueMaker/errors.d.ts +2 -2
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.d.ts +7 -4
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +51 -62
- package/dist/QueueMaker/sbqueue.d.ts +6 -3
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +37 -53
- package/dist/QueueMaker/service.d.ts +1 -1
- package/dist/RequestContext.d.ts +112 -26
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +7 -8
- package/dist/RequestFiberSet.d.ts +7 -7
- package/dist/RequestFiberSet.d.ts.map +1 -1
- package/dist/RequestFiberSet.js +5 -5
- package/dist/Store/ContextMapContainer.d.ts +19 -3
- package/dist/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/Store/ContextMapContainer.js +13 -3
- package/dist/Store/Cosmos/query.d.ts +1 -1
- package/dist/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/Store/Cosmos/query.js +10 -12
- package/dist/Store/Cosmos.d.ts +1 -1
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +318 -240
- package/dist/Store/Disk.d.ts +2 -2
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +25 -22
- package/dist/Store/Memory.d.ts +4 -4
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +27 -22
- package/dist/Store/SQL/Pg.d.ts +4 -0
- package/dist/Store/SQL/Pg.d.ts.map +1 -0
- package/dist/Store/SQL/Pg.js +189 -0
- package/dist/Store/SQL/query.d.ts +38 -0
- package/dist/Store/SQL/query.d.ts.map +1 -0
- package/dist/Store/SQL/query.js +367 -0
- package/dist/Store/SQL.d.ts +20 -0
- package/dist/Store/SQL.d.ts.map +1 -0
- package/dist/Store/SQL.js +381 -0
- package/dist/Store/codeFilter.d.ts +1 -1
- package/dist/Store/codeFilter.d.ts.map +1 -1
- package/dist/Store/codeFilter.js +2 -1
- package/dist/Store/index.d.ts +5 -2
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +15 -3
- package/dist/Store/service.d.ts +18 -7
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +24 -6
- package/dist/Store/utils.d.ts +1 -1
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +3 -4
- package/dist/Store.d.ts +1 -1
- package/dist/adapters/SQL/Model.d.ts +28 -42
- package/dist/adapters/SQL/Model.d.ts.map +1 -1
- package/dist/adapters/SQL/Model.js +2 -2
- package/dist/adapters/SQL.d.ts +1 -1
- package/dist/adapters/ServiceBus.d.ts +11 -11
- package/dist/adapters/ServiceBus.d.ts.map +1 -1
- package/dist/adapters/ServiceBus.js +13 -15
- package/dist/adapters/cosmos-client.d.ts +3 -3
- package/dist/adapters/cosmos-client.d.ts.map +1 -1
- package/dist/adapters/cosmos-client.js +3 -3
- package/dist/adapters/index.d.ts +8 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +8 -2
- package/dist/adapters/logger.d.ts +2 -2
- package/dist/adapters/logger.d.ts.map +1 -1
- package/dist/adapters/memQueue.d.ts +3 -3
- package/dist/adapters/memQueue.d.ts.map +1 -1
- package/dist/adapters/memQueue.js +3 -3
- package/dist/adapters/mongo-client.d.ts +3 -3
- package/dist/adapters/mongo-client.d.ts.map +1 -1
- package/dist/adapters/mongo-client.js +3 -3
- package/dist/adapters/redis-client.d.ts +3 -3
- package/dist/adapters/redis-client.d.ts.map +1 -1
- package/dist/adapters/redis-client.js +3 -3
- package/dist/api/ContextProvider.d.ts +8 -8
- package/dist/api/ContextProvider.d.ts.map +1 -1
- package/dist/api/ContextProvider.js +6 -6
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/internal/RequestContextMiddleware.d.ts +2 -2
- package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
- package/dist/api/internal/RequestContextMiddleware.js +2 -2
- package/dist/api/internal/auth.d.ts +44 -6
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +160 -29
- package/dist/api/internal/events.d.ts +3 -3
- package/dist/api/internal/events.d.ts.map +1 -1
- package/dist/api/internal/events.js +9 -7
- package/dist/api/internal/health.d.ts +1 -1
- package/dist/api/layerUtils.d.ts +6 -6
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +5 -5
- package/dist/api/middlewares.d.ts +1 -1
- package/dist/api/reportError.d.ts +1 -1
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -4
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.d.ts +39 -3
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +46 -14
- package/dist/api/routing/middleware.d.ts +1 -2
- package/dist/api/routing/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware.js +1 -2
- package/dist/api/routing/schema/jwt.d.ts +1 -1
- package/dist/api/routing/schema/jwt.d.ts.map +1 -1
- package/dist/api/routing/tsort.d.ts +1 -1
- package/dist/api/routing/tsort.d.ts.map +1 -1
- package/dist/api/routing/utils.d.ts +3 -3
- package/dist/api/routing/utils.d.ts.map +1 -1
- package/dist/api/routing.d.ts +25 -26
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +99 -35
- package/dist/api/setupRequest.d.ts +8 -5
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +12 -7
- package/dist/api/util.d.ts +1 -1
- package/dist/arbs.d.ts +1 -1
- package/dist/arbs.d.ts.map +1 -1
- package/dist/arbs.js +5 -3
- package/dist/errorReporter.d.ts +4 -4
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +20 -25
- package/dist/errors.d.ts +1 -1
- package/dist/fileUtil.d.ts +1 -1
- package/dist/fileUtil.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/logger/jsonLogger.d.ts +1 -1
- package/dist/logger/logFmtLogger.d.ts +1 -1
- package/dist/logger/shared.d.ts +1 -1
- package/dist/logger/shared.js +2 -2
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/rateLimit.d.ts +9 -3
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +5 -11
- package/dist/test.d.ts +2 -2
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +1 -1
- package/dist/vitest.d.ts +1 -1
- package/examples/query.ts +39 -35
- package/package.json +41 -37
- package/src/CUPS.ts +9 -11
- package/src/Emailer/Sendgrid.ts +17 -14
- package/src/Emailer/service.ts +9 -3
- package/src/MainFiberSet.ts +5 -6
- package/src/Model/Repository/Registry.ts +33 -0
- package/src/Model/Repository/ext.ts +96 -10
- package/src/Model/Repository/internal/internal.ts +97 -88
- package/src/Model/Repository/makeRepo.ts +12 -10
- package/src/Model/Repository/service.ts +31 -22
- package/src/Model/Repository/validation.ts +4 -4
- package/src/Model/Repository.ts +1 -0
- package/src/Model/dsl.ts +3 -3
- package/src/Model/filter/types/path/eager.ts +1 -2
- package/src/Model/query/dsl.ts +18 -18
- package/src/Model/query/new-kid-interpreter.ts +2 -2
- package/src/Model.ts +1 -0
- package/src/QueueMaker/SQLQueue.ts +121 -151
- package/src/QueueMaker/memQueue.ts +82 -103
- package/src/QueueMaker/sbqueue.ts +56 -86
- package/src/RequestContext.ts +8 -10
- package/src/RequestFiberSet.ts +4 -4
- package/src/Store/ContextMapContainer.ts +41 -2
- package/src/Store/Cosmos/query.ts +16 -20
- package/src/Store/Cosmos.ts +452 -342
- package/src/Store/Disk.ts +52 -49
- package/src/Store/Memory.ts +54 -48
- package/src/Store/SQL/Pg.ts +318 -0
- package/src/Store/SQL/query.ts +409 -0
- package/src/Store/SQL.ts +668 -0
- package/src/Store/codeFilter.ts +1 -0
- package/src/Store/index.ts +17 -2
- package/src/Store/service.ts +32 -8
- package/src/Store/utils.ts +23 -22
- package/src/adapters/SQL/Model.ts +10 -4
- package/src/adapters/ServiceBus.ts +112 -116
- package/src/adapters/cosmos-client.ts +2 -2
- package/src/adapters/index.ts +7 -0
- package/src/adapters/memQueue.ts +2 -2
- package/src/adapters/mongo-client.ts +2 -2
- package/src/adapters/redis-client.ts +2 -2
- package/src/api/ContextProvider.ts +12 -13
- package/src/api/internal/RequestContextMiddleware.ts +1 -1
- package/src/api/internal/auth.ts +246 -44
- package/src/api/internal/events.ts +12 -8
- package/src/api/layerUtils.ts +8 -8
- package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
- package/src/api/routing/middleware/middleware.ts +53 -12
- package/src/api/routing/middleware.ts +0 -2
- package/src/api/routing.ts +173 -63
- package/src/api/setupRequest.ts +28 -8
- package/src/arbs.ts +4 -2
- package/src/errorReporter.ts +62 -74
- package/src/logger/shared.ts +1 -1
- package/src/rateLimit.ts +30 -22
- package/src/test.ts +1 -1
- package/test/auth.test.ts +101 -0
- package/test/contextProvider.test.ts +11 -11
- package/test/controller.test.ts +19 -17
- package/test/dist/auth.test.d.ts.map +1 -0
- package/test/dist/contextProvider.test.d.ts.map +1 -1
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/date-query.test.d.ts.map +1 -0
- package/test/dist/fixtures.d.ts +26 -12
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +12 -10
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/dist/repository-ext.test.d.ts.map +1 -0
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/router-generator.test.d.ts.map +1 -0
- package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
- package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
- package/test/dist/sql-store.test.d.ts.map +1 -0
- package/test/fixtures.ts +11 -9
- package/test/query.test.ts +216 -34
- package/test/rawQuery.test.ts +23 -19
- package/test/repository-ext.test.ts +60 -0
- package/test/requires.test.ts +6 -6
- package/test/router-generator.test.ts +183 -0
- package/test/routing-interruptibility.test.ts +63 -0
- package/test/rpc-e2e-invalidation.test.ts +249 -0
- package/test/rpc-multi-middleware.test.ts +78 -9
- package/test/rpc-stream-fullstack.test.ts +325 -0
- package/test/sql-store.test.ts +1064 -0
- package/test/validateSample.test.ts +15 -12
- package/tsconfig.examples.json +1 -1
- package/tsconfig.json +0 -1
- package/tsconfig.json.bak +2 -2
- package/tsconfig.src.json +35 -35
- package/tsconfig.test.json +2 -2
- package/dist/Operations.d.ts +0 -55
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -102
- package/dist/OperationsRepo.d.ts +0 -41
- package/dist/OperationsRepo.d.ts.map +0 -1
- package/dist/OperationsRepo.js +0 -14
- package/eslint.config.mjs +0 -24
- package/src/Operations.ts +0 -235
- package/src/OperationsRepo.ts +0 -16
|
@@ -7,124 +7,115 @@ import { pretty } from "effect-app/utils";
|
|
|
7
7
|
import { SqlClient } from "effect/unstable/sql";
|
|
8
8
|
import { SQLModel } from "../adapters/SQL.js";
|
|
9
9
|
import { InfraLogger } from "../logger.js";
|
|
10
|
-
export const QueueId = S.
|
|
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.decodeEffectConcurrently(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
|
-
attributes: {
|
|
106
|
-
"queue.name": queueDrainName,
|
|
107
|
-
"queue.sessionId": sessionId,
|
|
108
|
-
"queue.input": body
|
|
109
|
-
}
|
|
110
|
-
}));
|
|
111
|
-
if (meta.span) {
|
|
112
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
113
|
-
}
|
|
114
|
-
return effect;
|
|
115
|
-
}));
|
|
116
|
-
return q
|
|
117
|
-
.take
|
|
118
|
-
.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",
|
|
119
100
|
attributes: {
|
|
120
|
-
"queue.type": "sql",
|
|
121
101
|
"queue.name": queueDrainName,
|
|
122
|
-
"queue.sessionId": sessionId
|
|
102
|
+
"queue.sessionId": sessionId,
|
|
103
|
+
"queue.input": body
|
|
123
104
|
}
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import { Cause, Effect, Exit } from "effect-app";
|
|
2
|
-
export declare const reportQueueError: <E>(cause: Cause.Cause<E>, extras?: Record<string, unknown>) => Effect.Effect<import("effect-app/client
|
|
2
|
+
export declare const reportQueueError: <E>(cause: Cause.Cause<E>, extras?: Record<string, unknown>) => Effect.Effect<import("effect-app/client").CauseException<unknown> | undefined, never, never>;
|
|
3
3
|
export declare function reportNonInterruptedFailure(context?: Record<string, unknown>): <A, E, R>(inp: Effect.Effect<A, E, R>) => Effect.Effect<Exit.Exit<A, E>, never, R>;
|
|
4
4
|
export declare function reportNonInterruptedFailureCause(context?: Record<string, unknown>): <E>(cause: Cause.Cause<E>) => Effect.Effect<void>;
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBSWhELGVBQU8sTUFBTSxnQkFBZ0IsR0FBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxpR0FDekQsQ0FBQTtBQUVsQyx3QkFBZ0IsMkJBQTJCLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFFbkUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQVV4RjtBQUVELHdCQUFnQixnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUN4RSxDQUFDLFNBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQU12RCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIhD,eAAO,MAAM,gBAAgB,GAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIhD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iGACzD,CAAA;AAElC,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAEnE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAUxF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACxE,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAMvD"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { Tracer } from "effect";
|
|
1
2
|
import { Effect, S } from "effect-app";
|
|
2
3
|
import { MemQueue } from "../adapters/memQueue.js";
|
|
3
|
-
|
|
4
|
-
export declare function makeMemQueue<Evt extends {
|
|
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>)
|
|
11
|
-
|
|
10
|
+
}, EvtE, DrainEvtE>(queueName: string, queueDrainName: string, schema: S.Codec<Evt, EvtE, never, never>, drainSchema: S.Codec<DrainEvt, DrainEvtE, never, never>) => Effect.Effect<{
|
|
11
|
+
publish: (args_0: Evt, ...args: Evt[]) => Effect.Effect<void, never, never>;
|
|
12
|
+
drain: <DrainE, DrainR>(handleEvent: (ks: DrainEvt) => Effect.Effect<void, DrainE, DrainR>, sessionId?: string) => Effect.Effect<never, never, Exclude<Exclude<DrainR, Tracer.ParentSpan>, never>>;
|
|
13
|
+
}, never, MemQueue>;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9RdWV1ZU1ha2VyL21lbVF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBMkMsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQU1sRCxlQUFPLE1BQU0sWUFBWSxHQUN2QixHQUFHLFNBQVM7SUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUFDLElBQUksRUFBRSxNQUFNLENBQUE7Q0FBRSxFQUM1QyxRQUFRLFNBQVM7SUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUFDLElBQUksRUFBRSxNQUFNLENBQUE7Q0FBRSxFQUNqRCxJQUFJLEVBQ0osU0FBUzs7WUFvQ0MsTUFBTSxFQUFFLE1BQU0sZUFDUCxDQUFDLEVBQUUsRUFBRSxRQUFRLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxjQUN0RCxNQUFNO21CQXdEdEIsQ0FBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/memQueue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,MAAM,EAA2C,CAAC,EAAE,MAAM,YAAY,CAAA;AAG/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAMlD,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;;YAoCC,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cACtD,MAAM;mBAwDtB,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.decodeUnknownEffectConcurrently(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9tZW1RdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQThCLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBTXJELFNBQWlCLEVBQ2pCLGNBQXNCLEVBQ3RCLE1BQTBCLEVBQzFCLFdBQXlDO0lBRXpDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQTtJQUMzQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDaEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRTFELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMs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
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { Tracer } from "effect";
|
|
1
2
|
import { Effect, S } from "effect-app";
|
|
2
3
|
import type { StringId } from "effect-app/Schema";
|
|
3
4
|
import { Receiver, Sender } from "../adapters/ServiceBus.js";
|
|
4
|
-
import { type QueueBase } from "./service.js";
|
|
5
5
|
export declare function makeServiceBusQueue<Evt extends {
|
|
6
6
|
id: StringId;
|
|
7
7
|
_tag: string;
|
|
8
8
|
}, DrainEvt extends {
|
|
9
9
|
id: StringId;
|
|
10
10
|
_tag: string;
|
|
11
|
-
}, EvtE, DrainEvtE>(schema: S.Codec<Evt, EvtE>, drainSchema: S.Codec<DrainEvt, DrainEvtE>): Effect.Effect<
|
|
12
|
-
|
|
11
|
+
}, EvtE, DrainEvtE>(schema: S.Codec<Evt, EvtE>, drainSchema: S.Codec<DrainEvt, DrainEvtE>): Effect.Effect<{
|
|
12
|
+
drain: <DrainE, DrainR>(handleEvent: (ks: DrainEvt) => Effect.Effect<void, DrainE, DrainR>, sessionId?: string) => Effect.Effect<never, never, import("effect/Scope").Scope | Exclude<Exclude<DrainR, Tracer.ParentSpan>, never>>;
|
|
13
|
+
publish: (args_0: Evt, ...args: Evt[]) => Effect.Effect<void, never, never>;
|
|
14
|
+
}, never, Receiver | Sender>;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1F1ZXVlTWFrZXIvc2JxdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBUyxNQUFNLEVBQW9DLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvRSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBTTVELHdCQUFnQixtQkFBbUIsQ0FDakMsR0FBRyxTQUFTO0lBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztJQUFDLElBQUksRUFBRSxNQUFNLENBQUE7Q0FBRSxFQUMxQyxRQUFRLFNBQVM7SUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0lBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQy9DLElBQUksRUFDSixTQUFTLEVBRVQsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUMxQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBdUI3QixNQUFNLEVBQUUsTUFBTSxlQUNQLENBQUMsRUFBRSxFQUFFLFFBQVEsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQ3RELE1BQU07OzZCQWdFekIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/sbqueue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,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;AAM5D,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;YAuB7B,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cACtD,MAAM;;6BAgEzB"}
|