@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.
Files changed (54) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/_cjs/api/defaultErrorHandler.cjs +1 -1
  3. package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
  4. package/_cjs/api/setupRequest.cjs +22 -4
  5. package/_cjs/api/setupRequest.cjs.map +1 -1
  6. package/_cjs/rateLimit.cjs +6 -6
  7. package/_cjs/rateLimit.cjs.map +1 -1
  8. package/_cjs/services/Operations/live.cjs +9 -8
  9. package/_cjs/services/Operations/live.cjs.map +1 -1
  10. package/_cjs/services/QueueMaker/errors.cjs +54 -0
  11. package/_cjs/services/QueueMaker/errors.cjs.map +1 -0
  12. package/_cjs/services/QueueMaker/memQueue.cjs +79 -0
  13. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -0
  14. package/_cjs/services/QueueMaker/sbqueue.cjs +80 -0
  15. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -0
  16. package/_cjs/services/QueueMaker/service.cjs +9 -0
  17. package/_cjs/services/QueueMaker/service.cjs.map +1 -0
  18. package/_cjs/services/Store/Cosmos.test.cjs +3 -4
  19. package/_cjs/services/Store/Cosmos.test.cjs.map +1 -1
  20. package/_cjs/services/Store/codeFilter.test.cjs +6 -7
  21. package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
  22. package/_src/_global.ext.ts +4 -0
  23. package/_src/api/setupRequest.ts +19 -0
  24. package/_src/services/QueueMaker/errors.ts +48 -0
  25. package/_src/services/QueueMaker/memQueue.ts +102 -0
  26. package/_src/services/QueueMaker/sbqueue.ts +118 -0
  27. package/_src/services/QueueMaker/service.ts +14 -0
  28. package/_src/services/Store/Cosmos.test.ts +0 -1
  29. package/_src/services/Store/codeFilter.test.ts +0 -1
  30. package/dist/_global.ext.d.ts +4 -0
  31. package/dist/_global.ext.d.ts.map +1 -1
  32. package/dist/api/defaultErrorHandler.js +2 -3
  33. package/dist/api/setupRequest.d.ts +5 -0
  34. package/dist/api/setupRequest.d.ts.map +1 -1
  35. package/dist/api/setupRequest.js +20 -3
  36. package/dist/rateLimit.js +7 -7
  37. package/dist/services/Operations/live.js +10 -9
  38. package/dist/services/QueueMaker/errors.d.ts +24 -0
  39. package/dist/services/QueueMaker/errors.d.ts.map +1 -0
  40. package/dist/services/QueueMaker/errors.js +37 -0
  41. package/dist/services/QueueMaker/memQueue.d.ts +25 -0
  42. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -0
  43. package/dist/services/QueueMaker/memQueue.js +60 -0
  44. package/dist/services/QueueMaker/sbqueue.d.ts +31 -0
  45. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -0
  46. package/dist/services/QueueMaker/sbqueue.js +61 -0
  47. package/dist/services/QueueMaker/service.d.ts +15 -0
  48. package/dist/services/QueueMaker/service.d.ts.map +1 -0
  49. package/dist/services/QueueMaker/service.js +2 -0
  50. package/dist/services/Store/Cosmos.test.d.ts.map +1 -1
  51. package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
  52. package/package.json +48 -7
  53. package/tsconfig.json +5 -3
  54. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zYnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLHVDQUF1QyxDQUFBO0FBRTlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHOUM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBUWpDLFVBQWtCLEVBQ2xCLGNBQXNCLEVBQ3RCLE9BQXlELEVBQ3pELGVBQXdGLEVBQ3hGLGNBRXVDLEVBQ3ZDLFVBR21GO0lBRW5GLE9BQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLE1BQU0sRUFBUSxDQUFBO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQUMsUUFBUSxFQUFRLENBQUE7UUFDMUMsTUFBTSxhQUFhLEdBQUcsMEJBQUEsUUFBUSxFQUFXLFFBQVEsQ0FBQyxDQUFBO1FBRWxELE9BQU87WUFDTCxLQUFLLEVBQUUsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDM0IsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUM3Qyw4REFBOEQ7Z0JBQzlELFNBQVMsY0FBYyxDQUFDLFdBQWdCO29CQUN0QyxvREFBTywwQkFBQSx3QkFBQSxvREFBQSx3QkFBQSxxQkFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3RDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBRWIsTUFBTSxDQUFDLEVBQ2IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBT3RCLGNBQWMsQ0FDWixjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTt3QkFDM0IsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO3dCQUNYLE1BQU0sRUFBRSxJQUFhO3dCQUNyQixJQUFJLEVBQUUsZ0JBQUEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztxQkFDbEMsQ0FBQyxDQUNILENBWkwsOEJBQUEseUJBRVMsNkJBQW9CLEVBQUUsSUFBSSx1REFBRSxJQUFJLEVBQVUsRUFBRSxJQUFJLHVEQUFFLElBQUksRUFBVSxFQUFFLENBQUMsQ0FGNUUseUJBQ1ksT0FBTyxjQUFjLCtCQUErQixDQUFDLEdBRXJELFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNiLE1BQU0sQ0FBQyxDQVNyQixDQUNKLEVBQ3FCLHNCQUFzQixDQUFDLEdBRXRDO2dCQUNYLENBQUM7Z0JBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IsaUNBQUEsU0FBUyxDQUFDO29CQUNSLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFnQjtvQkFDM0QsWUFBWSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsMkJBQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6RCxDQUFDLEVBQ2tCLGFBQWEsQ0FBQyxDQUNuQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDO1lBRUYsT0FBTyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUN2QixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhDQUEyQixDQUFBO2dCQUMxRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsdUNBQ2Isd0JBQWUsR0FBRyxFQUFFLENBQ2xCLENBQUMsQ0FBQyxZQUFZLENBQ1osUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNsQixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUMzQztvQkFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7b0JBQ2YsV0FBVyxFQUFFLGtCQUFrQjtpQkFDaEMsQ0FBQyxDQUFDLENBQ0osQ0FDRixFQUVGLENBQUE7WUFDSCxDQUFDLENBQUM7U0FDNEIsQ0FBQTtJQUNwQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRSxjQUFzQjtJQUN6RiwrQkFDSyx1QkFBZ0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFwRCxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQXlCLEVBRHBELG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUMyQjtBQUM3RCxDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUksS0FBZTtJQUNoQyxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyw4Q0FBMkIsQ0FBQTtRQUMxRCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUE7SUFDcEQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIn0=
@@ -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;AAK/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
+ {"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;AAU/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
+ {"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.16.1",
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.15.1",
23
- "@effect-app/core": "0.15.1",
24
- "@effect-app/infra-adapters": "0.13.1",
25
- "@effect-app/schema": "0.13.1"
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.164/compiler/typescript.tgz",
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.8.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",
package/tsconfig.json.bak CHANGED
@@ -13,6 +13,7 @@
13
13
  "rootDir": "./_src",
14
14
  "tsBuildInfoFile": "./dist/.tsbuildinfo",
15
15
  "types": [
16
+ "vitest/globals",
16
17
  "./types/modules"
17
18
  ],
18
19
  // temp disbaled to support ts-plus ops