@effect-app/infra 0.16.1 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/_cjs/api/defaultErrorHandler.cjs +1 -1
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +22 -4
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +6 -6
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +9 -8
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +54 -0
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -0
- package/_cjs/services/QueueMaker/memQueue.cjs +79 -0
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -0
- package/_cjs/services/QueueMaker/sbqueue.cjs +80 -0
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -0
- package/_cjs/services/QueueMaker/service.cjs +9 -0
- package/_cjs/services/QueueMaker/service.cjs.map +1 -0
- package/_cjs/services/Store/Cosmos.test.cjs +3 -4
- package/_cjs/services/Store/Cosmos.test.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +6 -7
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_src/_global.ext.ts +4 -0
- package/_src/api/setupRequest.ts +19 -0
- package/_src/services/QueueMaker/errors.ts +48 -0
- package/_src/services/QueueMaker/memQueue.ts +102 -0
- package/_src/services/QueueMaker/sbqueue.ts +118 -0
- package/_src/services/QueueMaker/service.ts +14 -0
- package/_src/services/Store/Cosmos.test.ts +0 -1
- package/_src/services/Store/codeFilter.test.ts +0 -1
- package/dist/_global.ext.d.ts +4 -0
- package/dist/_global.ext.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +2 -3
- package/dist/api/setupRequest.d.ts +5 -0
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +20 -3
- package/dist/rateLimit.js +7 -7
- package/dist/services/Operations/live.js +10 -9
- package/dist/services/QueueMaker/errors.d.ts +24 -0
- package/dist/services/QueueMaker/errors.d.ts.map +1 -0
- package/dist/services/QueueMaker/errors.js +37 -0
- package/dist/services/QueueMaker/memQueue.d.ts +25 -0
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -0
- package/dist/services/QueueMaker/memQueue.js +60 -0
- package/dist/services/QueueMaker/sbqueue.d.ts +31 -0
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -0
- package/dist/services/QueueMaker/sbqueue.js +61 -0
- package/dist/services/QueueMaker/service.d.ts +15 -0
- package/dist/services/QueueMaker/service.d.ts.map +1 -0
- package/dist/services/QueueMaker/service.js +2 -0
- package/dist/services/Store/Cosmos.test.d.ts.map +1 -1
- package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
- package/package.json +48 -7
- package/tsconfig.json +5 -3
- package/tsconfig.json.bak +1 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/infra/RequestContext";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/infra/services/QueueMaker/errors";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/prelude/utils";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/prelude/_ext/misc";
|
|
7
|
+
import * as tsplus_module_7 from "@effect-app/prelude/schema";
|
|
8
|
+
import * as tsplus_module_8 from "@effect-app/infra/api/setupRequest";
|
|
9
|
+
import * as tsplus_module_9 from "@effect/io/Cause";
|
|
10
|
+
import * as tsplus_module_10 from "@effect-app/core/Effect";
|
|
11
|
+
import * as tsplus_module_11 from "@effect/io/Exit";
|
|
12
|
+
import { MemQueue } from "@effect-app/infra-adapters/memQueue";
|
|
13
|
+
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
14
|
+
import { reportFailure, reportQueueError } from "./errors.js";
|
|
15
|
+
/**
|
|
16
|
+
* @tsplus static QueueMaker.Ops makeMem
|
|
17
|
+
*/
|
|
18
|
+
export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provideContext, parseDrain) {
|
|
19
|
+
return tsplus_module_1.gen(function* ($) {
|
|
20
|
+
const mem = yield* $(tsplus_module_1.service(MemQueue));
|
|
21
|
+
const q = yield* $(mem.getOrCreateQueue(queueName));
|
|
22
|
+
const qReply = yield* $(mem.getOrCreateQueue(queueDrainName));
|
|
23
|
+
return {
|
|
24
|
+
publish: (...messages) => tsplus_module_1.gen(function* ($) {
|
|
25
|
+
const requestContext = yield* $(tsplus_module_1.service(tsplus_module_2.tag));
|
|
26
|
+
return yield* $(tsplus_module_4.forkDaemonReportQueue(tsplus_module_3.ext_forEach(messages, m => tsplus_module_1.asUnit(
|
|
27
|
+
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
28
|
+
tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.stringify(encoder({ body: m, meta: requestContext })))
|
|
29
|
+
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
30
|
+
, _ => q.offer(_))))));
|
|
31
|
+
}),
|
|
32
|
+
drain: tsplus_module_1.gen(function* ($) {
|
|
33
|
+
const handleEvent = yield* $(makeHandleEvent);
|
|
34
|
+
const processMessage = (msg) =>
|
|
35
|
+
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
36
|
+
tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(msg)), parseDrain)), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
|
|
37
|
+
id: body.id,
|
|
38
|
+
locale: "en",
|
|
39
|
+
name: tsplus_module_7.ReasonableString(body._tag)
|
|
40
|
+
}))(tsplus_module_1.zipRight(tsplus_module_6.logAnnotates({ body: tsplus_module_5.RecordPretty(tsplus_module_5.object$(body)), meta: tsplus_module_5.RecordPretty(tsplus_module_5.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), silence(handleEvent(body)))));
|
|
41
|
+
return yield* $(tsplus_module_1.forkScoped(tsplus_module_8.setupReq3(reportFailure("drain")(tsplus_module_1.forever(tsplus_module_1.flatMap(qReply.take(), x => tsplus_module_1.uninterruptible(processMessage(x))))), "Queue.ReceiveMessage")));
|
|
42
|
+
})
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// We want the Queue to continue processing even on errors per messages
|
|
47
|
+
// must make sure that the errors are processed/handled beforehand.
|
|
48
|
+
export function silence(inp) {
|
|
49
|
+
return tsplus_module_1.flatMap(tsplus_module_1.exit(inp), result => tsplus_module_1.gen(function* ($) {
|
|
50
|
+
const requestContext = yield* $(tsplus_module_1.service(tsplus_module_2.tag));
|
|
51
|
+
return yield* $(tsplus_module_11.match(result, cause => {
|
|
52
|
+
if (tsplus_module_9.isInterrupted(cause)) {
|
|
53
|
+
return tsplus_module_1.failCause(cause);
|
|
54
|
+
}
|
|
55
|
+
reportQueueError(cause, { requestContext });
|
|
56
|
+
return tsplus_module_10.unit;
|
|
57
|
+
}, () => tsplus_module_10.unit));
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBRWpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHN0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixTQUFpQixFQUNqQixjQUFzQixFQUN0QixPQUF5RCxFQUN6RCxlQUF3RixFQUN4RixjQUV1QyxFQUN2QyxVQUdtRjtJQUVuRixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyx5QkFBQyxRQUFRLEVBQVEsQ0FBQTtRQUNyQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBRTdELE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQ3ZCLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQ3BCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsOENBQTJCLENBQUE7Z0JBQzFELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FDYiw0QkFBQSxRQUFRLEVBQWUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLHVIQUF1SDtnQkFDdkgsd0JBQUEscUJBQU8s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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { StringId, Parser } from "@effect-app/prelude/schema";
|
|
2
|
+
import { Effect } from "@effect/io/Effect";
|
|
3
|
+
import { Cause } from "@effect/io/Cause";
|
|
4
|
+
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
5
|
+
import type { CustomSchemaException } from "@effect-app/prelude/schema";
|
|
6
|
+
/**
|
|
7
|
+
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
8
|
+
* @tsplus location "@effect-app/infra/services/QueueMaker/sbqueue"
|
|
9
|
+
*/
|
|
10
|
+
export declare function makeServiceBusQueue<DrainR, Evt extends {
|
|
11
|
+
id: StringId;
|
|
12
|
+
_tag: string;
|
|
13
|
+
}, DrainEvt extends {
|
|
14
|
+
id: StringId;
|
|
15
|
+
_tag: string;
|
|
16
|
+
}, RContext, EvtE, DrainE>(_queueName: string, queueDrainName: string, encoder: (e: {
|
|
17
|
+
body: Evt;
|
|
18
|
+
meta: RequestContext;
|
|
19
|
+
}) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
|
|
20
|
+
body: DrainEvt;
|
|
21
|
+
meta: RequestContext;
|
|
22
|
+
}>): import("@effect/io/Effect").Effect<import("@azure/service-bus").ServiceBusReceiver | import("@azure/service-bus").ServiceBusSender, never, {
|
|
23
|
+
drain: import("@effect/io/Effect").Effect<import("@effect/io/Scope").Scope | DrainR, never, void>;
|
|
24
|
+
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("@effect/io/Effect").Effect<RequestContext, never, import("@effect/io/Fiber").RuntimeFiber<never, void>>;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
28
|
+
* @tsplus location "@effect-app/infra/services/QueueMaker/sbqueue"
|
|
29
|
+
*/
|
|
30
|
+
export declare function makeServiceBusLayers(url: string, queueName: string, queueDrainName: string): import("@effect/io/Layer").Layer<never, never, import("@azure/service-bus").ServiceBusReceiver | import("@azure/service-bus").ServiceBusSender>;
|
|
31
|
+
//# sourceMappingURL=sbqueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":";;;AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;;;;;AAOvE,wBAAgB,mBAAmB,CACjC,MAAM,EACN,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACvC,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GAkEpF;;;;;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mJAG1F"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/core/Tag";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/prelude/utils";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/prelude/_ext/misc";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/prelude/schema";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/infra/api/setupRequest";
|
|
7
|
+
import * as tsplus_module_7 from "@effect-app/infra/RequestContext";
|
|
8
|
+
import * as tsplus_module_8 from "@effect-app/infra/services/QueueMaker/errors";
|
|
9
|
+
import * as tsplus_module_9 from "@effect/io/Layer";
|
|
10
|
+
import { LiveReceiver, LiveSender, LiveServiceBusClient, Receiver, Sender, subscribe } from "@effect-app/infra-adapters/ServiceBus";
|
|
11
|
+
import { captureException } from "@effect-app/infra/errorReporter";
|
|
12
|
+
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
13
|
+
import { reportQueueError } from "./errors.js";
|
|
14
|
+
/**
|
|
15
|
+
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
16
|
+
*/
|
|
17
|
+
export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHandleEvent, provideContext, parseDrain) {
|
|
18
|
+
return tsplus_module_1.gen(function* ($) {
|
|
19
|
+
const s = yield* $(tsplus_module_1.service(Sender));
|
|
20
|
+
const receiver = yield* $(tsplus_module_1.service(Receiver));
|
|
21
|
+
const receiverLayer = tsplus_module_2.makeLayer(Receiver, receiver);
|
|
22
|
+
return {
|
|
23
|
+
drain: tsplus_module_1.gen(function* ($) {
|
|
24
|
+
const handleEvent = yield* $(makeHandleEvent);
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
function processMessage(messageBody) {
|
|
27
|
+
return tsplus_module_1.asUnit(tsplus_module_1.orDie(tsplus_module_6.setupReq3(tsplus_module_1.flatMap(tsplus_module_1.tapErrorCause(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(messageBody)), x => parseDrain(x))), report), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
|
|
28
|
+
id: body.id,
|
|
29
|
+
locale: "en",
|
|
30
|
+
name: tsplus_module_5.ReasonableString(body._tag)
|
|
31
|
+
}))(tsplus_module_1.tapErrorCause(tsplus_module_1.zipRight(tsplus_module_4.logAnnotates({ body: tsplus_module_3.RecordPretty(tsplus_module_3.object$(body)), meta: tsplus_module_3.RecordPretty(tsplus_module_3.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), handleEvent(body)), report))), "Queue.ReceiveMessage")));
|
|
32
|
+
}
|
|
33
|
+
return yield* $(tsplus_module_1.provideSomeLayer(subscribe({
|
|
34
|
+
processMessage: x => tsplus_module_1.uninterruptible(processMessage(x.body)),
|
|
35
|
+
processError: err => tsplus_module_1.sync(() => captureException(err.error))
|
|
36
|
+
}), receiverLayer));
|
|
37
|
+
}),
|
|
38
|
+
publish: (...messages) => tsplus_module_1.gen(function* ($) {
|
|
39
|
+
const requestContext = yield* $(tsplus_module_1.service(tsplus_module_7.tag));
|
|
40
|
+
return yield* $(tsplus_module_8.forkDaemonReportQueue(tsplus_module_1.promise(() => s.sendMessages(messages.map(x => ({
|
|
41
|
+
body: JSON.stringify(encoder({ body: x, meta: requestContext })),
|
|
42
|
+
messageId: x.id,
|
|
43
|
+
contentType: "application/json"
|
|
44
|
+
}))))));
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
51
|
+
*/
|
|
52
|
+
export function makeServiceBusLayers(url, queueName, queueDrainName) {
|
|
53
|
+
return tsplus_module_9.provide((tsplus_module_9.merge(LiveSender(queueName))(LiveReceiver(queueDrainName))))(LiveServiceBusClient(url));
|
|
54
|
+
}
|
|
55
|
+
function report(cause) {
|
|
56
|
+
return tsplus_module_1.gen(function* ($) {
|
|
57
|
+
const requestContext = yield* $(tsplus_module_1.service(tsplus_module_7.tag));
|
|
58
|
+
return reportQueueError(cause, { requestContext });
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zYnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLHVDQUF1QyxDQUFBO0FBRTlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHOUM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBUWpDLFVBQWtCLEVBQ2xCLGNBQXNCLEVBQ3RCLE9BQXlELEVBQ3pELGVBQXdGLEVBQ3hGLGNBRXVDLEVBQ3ZDLFVBR21GO0lBRW5GLE9BQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLE1BQU0sRUFBUSxDQUFBO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQUMsUUFBUSxFQUFRLENBQUE7UUFDMUMsTUFBTSxhQUFhLEdBQUcsMEJBQUEsUUFBUSxFQUFXLFFBQVEsQ0FBQyxDQUFBO1FBRWxELE9BQU87WUFDTCxLQUFLLEVBQUUsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDM0IsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUM3Qyw4REFBOEQ7Z0JBQzlELFNBQVMsY0FBYyxDQUFDLFdBQWdCO29CQUN0QyxvREFBTywwQkFBQSx3QkFBQSxvREFBQSx3QkFBQSxxQkFBWSxHQUFHLEVBQUUsQ0FBQyxJ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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from "@effect/io/Effect";
|
|
2
|
+
import { Scope } from "@effect/io/Scope";
|
|
3
|
+
import { NonEmptyReadonlyArray } from "@fp-ts/core/ReadonlyArray";
|
|
4
|
+
import type { RequestContext } from "@effect-app/infra/RequestContext";
|
|
5
|
+
export interface QueueBase<RContext, Evt> {
|
|
6
|
+
drain: Effect<Scope | RContext, never, void>;
|
|
7
|
+
publish: (...messages: NonEmptyReadonlyArray<Evt>) => Effect<RequestContext, never, void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @tsplus type QueueMaker.Ops
|
|
11
|
+
*/
|
|
12
|
+
export interface QueueMakerOps {
|
|
13
|
+
}
|
|
14
|
+
export declare const QueueMaker: QueueMakerOps;
|
|
15
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,MAAM,WAAW,SAAS,CAAC,QAAQ,EAAE,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC5C,OAAO,EAAE,CACP,GAAG,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,KACpC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;CAAG;AACjC,eAAO,MAAM,UAAU,EAAE,aAAkB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const QueueMaker = {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBa0IsRUFBRSxDQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cosmos.test.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Cosmos.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"Cosmos.test.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Cosmos.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAI/E,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAA2B,CAAA;AACnC,MAAM,MAAM,oBAAoB,GAAG,OAAO,EAAE,CAAA;AAE5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,gBAAgB,oBAEzF;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CACT,CAAC,EAAE,oBAAoB,KACpB,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,EAChC,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,oBASpB;AAED,KAAK,aAAa,GAAG;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,KAAK,SAAS,GAAG;IACf,CAAC,EAAE,MAAM,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAC5B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeFilter.test.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/codeFilter.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"codeFilter.test.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/codeFilter.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAS/E,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAA2B,CAAA;AACnC,MAAM,MAAM,oBAAoB,GAAG,OAAO,EAAE,CAAA;AAE5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,gBAAgB,oBAEzF;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CACT,CAAC,EAAE,oBAAoB,KACpB,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,EAChC,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,oBASpB;AAED,KAAK,aAAa,GAAG;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,KAAK,SAAS,GAAG;IACf,CAAC,EAAE,MAAM,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAC5B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@azure/cosmos": "^3.17.2",
|
|
8
|
+
"@azure/service-bus": "^7.7.3",
|
|
8
9
|
"@effect/io": "^0.1.2",
|
|
9
10
|
"@fp-ts/core": "^0.1.1",
|
|
10
11
|
"@fp-ts/data": "^0.1.0",
|
|
@@ -19,10 +20,10 @@
|
|
|
19
20
|
"proper-lockfile": "^4.1.2",
|
|
20
21
|
"pure-rand": "^6.0.0",
|
|
21
22
|
"redlock": "^4.2.0",
|
|
22
|
-
"@effect-app/prelude": "0.
|
|
23
|
-
"@effect-app/core": "0.
|
|
24
|
-
"@effect-app/
|
|
25
|
-
"@effect-app/
|
|
23
|
+
"@effect-app/prelude": "0.16.0",
|
|
24
|
+
"@effect-app/core": "0.16.0",
|
|
25
|
+
"@effect-app/schema": "0.14.0",
|
|
26
|
+
"@effect-app/infra-adapters": "0.14.0"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
28
29
|
"@babel/cli": "^7.20.7",
|
|
@@ -40,9 +41,9 @@
|
|
|
40
41
|
"mongodb": "4.13.0",
|
|
41
42
|
"redis": "^3.1.2",
|
|
42
43
|
"ts-node": "^10.9.1",
|
|
43
|
-
"typescript": "https://cdn.jsdelivr.net/npm/@tsplus/installer@0.0.
|
|
44
|
+
"typescript": "https://cdn.jsdelivr.net/npm/@tsplus/installer@0.0.168/compiler/typescript.tgz",
|
|
44
45
|
"vitest": "^0.28.3",
|
|
45
|
-
"@effect-app/compiler": "0.
|
|
46
|
+
"@effect-app/compiler": "0.9.0"
|
|
46
47
|
},
|
|
47
48
|
"typesVersions": {
|
|
48
49
|
"*": {
|
|
@@ -452,6 +453,46 @@
|
|
|
452
453
|
"default": "./_cjs/services/Operations/service.cjs"
|
|
453
454
|
}
|
|
454
455
|
},
|
|
456
|
+
"./services/QueueMaker/errors": {
|
|
457
|
+
"import": {
|
|
458
|
+
"types": "./dist/services/QueueMaker/errors.d.ts",
|
|
459
|
+
"default": "./dist/services/QueueMaker/errors.js"
|
|
460
|
+
},
|
|
461
|
+
"require": {
|
|
462
|
+
"types": "./dist/services/QueueMaker/errors.d.ts",
|
|
463
|
+
"default": "./_cjs/services/QueueMaker/errors.cjs"
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
"./services/QueueMaker/memQueue": {
|
|
467
|
+
"import": {
|
|
468
|
+
"types": "./dist/services/QueueMaker/memQueue.d.ts",
|
|
469
|
+
"default": "./dist/services/QueueMaker/memQueue.js"
|
|
470
|
+
},
|
|
471
|
+
"require": {
|
|
472
|
+
"types": "./dist/services/QueueMaker/memQueue.d.ts",
|
|
473
|
+
"default": "./_cjs/services/QueueMaker/memQueue.cjs"
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
"./services/QueueMaker/sbqueue": {
|
|
477
|
+
"import": {
|
|
478
|
+
"types": "./dist/services/QueueMaker/sbqueue.d.ts",
|
|
479
|
+
"default": "./dist/services/QueueMaker/sbqueue.js"
|
|
480
|
+
},
|
|
481
|
+
"require": {
|
|
482
|
+
"types": "./dist/services/QueueMaker/sbqueue.d.ts",
|
|
483
|
+
"default": "./_cjs/services/QueueMaker/sbqueue.cjs"
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
"./services/QueueMaker/service": {
|
|
487
|
+
"import": {
|
|
488
|
+
"types": "./dist/services/QueueMaker/service.d.ts",
|
|
489
|
+
"default": "./dist/services/QueueMaker/service.js"
|
|
490
|
+
},
|
|
491
|
+
"require": {
|
|
492
|
+
"types": "./dist/services/QueueMaker/service.d.ts",
|
|
493
|
+
"default": "./_cjs/services/QueueMaker/service.cjs"
|
|
494
|
+
}
|
|
495
|
+
},
|
|
455
496
|
"./services/Repository": {
|
|
456
497
|
"import": {
|
|
457
498
|
"types": "./dist/services/Repository.d.ts",
|
package/tsconfig.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"moduleResolution": "Node16",
|
|
36
36
|
"downlevelIteration": true,
|
|
37
37
|
"noErrorTruncation": true,
|
|
38
|
+
"ignoreDeprecations": "5.0",
|
|
38
39
|
"tsPlusTypes": [
|
|
39
40
|
"./node_modules/@effect-app/core/vendor/effect-io-tsplus.json",
|
|
40
41
|
"./node_modules/@effect-app/core/vendor/effect-stm-tsplus.json",
|
|
@@ -61,12 +62,13 @@
|
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
],
|
|
64
|
-
"tsPlusConfig": "./tsplus.config.json",
|
|
65
|
-
"rootDir": "./_src",
|
|
66
|
-
"tsBuildInfoFile": "./dist/.tsbuildinfo",
|
|
67
65
|
"types": [
|
|
66
|
+
"vitest/globals",
|
|
68
67
|
"./types/modules"
|
|
69
68
|
],
|
|
69
|
+
"tsPlusConfig": "./tsplus.config.json",
|
|
70
|
+
"rootDir": "./_src",
|
|
71
|
+
"tsBuildInfoFile": "./dist/.tsbuildinfo",
|
|
70
72
|
"noEmit": true
|
|
71
73
|
},
|
|
72
74
|
"$schema": "https://json.schemastore.org/tsconfig",
|