@effect-app/infra 0.36.2 → 0.37.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 +6 -0
- package/_cjs/RequestContext.cjs +0 -7
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +8 -9
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +34 -34
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +8 -8
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +9 -10
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +16 -15
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +8 -7
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +60 -0
- package/_cjs/services/RequestContextContainer.cjs.map +1 -0
- package/_cjs/services/Store/Memory.cjs +35 -36
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_src/RequestContext.ts +0 -5
- package/_src/api/reportError.ts +3 -3
- package/_src/api/routing.ts +2 -1
- package/_src/api/setupRequest.ts +3 -2
- package/_src/services/QueueMaker/errors.ts +4 -3
- package/_src/services/QueueMaker/memQueue.ts +3 -2
- package/_src/services/QueueMaker/sbqueue.ts +3 -2
- package/_src/services/QueueMaker/service.ts +2 -2
- package/_src/services/RequestContextContainer.ts +41 -0
- package/_src/services/Store/Memory.ts +2 -2
- package/dist/RequestContext.d.ts +0 -5
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +1 -6
- package/dist/api/defaultErrorHandler.d.ts +2 -2
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/reportError.d.ts +5 -5
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +9 -10
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +28 -28
- package/dist/api/setupRequest.d.ts +3 -2
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +7 -7
- package/dist/services/Operations/service.d.ts +4 -4
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.d.ts +0 -1
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +10 -12
- package/dist/services/QueueMaker/memQueue.d.ts +3 -2
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +13 -13
- package/dist/services/QueueMaker/sbqueue.d.ts +3 -2
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +7 -7
- package/dist/services/QueueMaker/service.d.ts +2 -2
- package/dist/services/QueueMaker/service.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.d.ts +29 -0
- package/dist/services/RequestContextContainer.d.ts.map +1 -0
- package/dist/services/RequestContextContainer.js +51 -0
- package/dist/services/Store/Memory.d.ts +2 -2
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +37 -38
- package/package.json +12 -2
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect-app/core/Option";
|
|
2
|
-
import * as tsplus_module_2 from "@effect
|
|
3
|
-
import * as tsplus_module_3 from "@effect/
|
|
4
|
-
import * as tsplus_module_4 from "@effect/io/
|
|
5
|
-
import * as tsplus_module_5 from "@effect/io/Exit";
|
|
6
|
-
import * as tsplus_module_6 from "@effect/io/Cause";
|
|
2
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect/io/Exit";
|
|
4
|
+
import * as tsplus_module_4 from "@effect/io/Cause";
|
|
7
5
|
import { reportError } from "@effect-app/infra/errorReporter";
|
|
8
6
|
import { CauseException } from "@effect-app/infra/errors";
|
|
9
|
-
import "
|
|
7
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
10
8
|
export class MessageException extends CauseException {
|
|
11
9
|
constructor(cause) {
|
|
12
10
|
super(cause, "Message");
|
|
@@ -18,7 +16,7 @@ export class FatalQueueException extends CauseException {
|
|
|
18
16
|
}
|
|
19
17
|
}
|
|
20
18
|
const reportQueueError_ = reportError(cause => new MessageException(cause));
|
|
21
|
-
export const reportQueueError = (cause, context) =>
|
|
19
|
+
export const reportQueueError = (cause, context) => tsplus_module_2.flatMap(RequestContextContainer.getOption, requestContext => reportQueueError_(cause, { requestContext: tsplus_module_1.getOrUndefined(requestContext), ...context }));
|
|
22
20
|
/**
|
|
23
21
|
* Forks the effect into a new fiber attached to the global scope. Because the
|
|
24
22
|
* new fiber is attached to the global scope, when the fiber executing the
|
|
@@ -29,19 +27,19 @@ export const reportQueueError = (cause, context) => tsplus_module_4.flatMap(tspl
|
|
|
29
27
|
* @tsplus getter effect/io/Effect forkDaemonReportQueue
|
|
30
28
|
*/
|
|
31
29
|
export function forkDaemonReportQueue(self) {
|
|
32
|
-
return
|
|
30
|
+
return tsplus_module_2.daemonChildren(tsplus_module_2.fork(tsplus_module_2.tapErrorCause(self, reportNonInterruptedFailureCause({}))));
|
|
33
31
|
}
|
|
34
32
|
export const reportFatalQueueError = reportError(cause => new FatalQueueException(cause));
|
|
35
33
|
export function reportNonInterruptedFailure(context) {
|
|
36
34
|
const report = reportNonInterruptedFailureCause(context);
|
|
37
|
-
return (inp) =>
|
|
35
|
+
return (inp) => tsplus_module_2.flatMap(tsplus_module_2.exit(inp), result => tsplus_module_3.match(result, cause => tsplus_module_2.map(report(cause), () => result), () => tsplus_module_2.sync(() => result)));
|
|
38
36
|
}
|
|
39
37
|
export function reportNonInterruptedFailureCause(context) {
|
|
40
38
|
return (cause) => {
|
|
41
|
-
if (
|
|
42
|
-
return
|
|
39
|
+
if (tsplus_module_4.isInterrupted(cause)) {
|
|
40
|
+
return tsplus_module_2.failCause(cause);
|
|
43
41
|
}
|
|
44
42
|
return reportQueueError(cause, context);
|
|
45
43
|
};
|
|
46
44
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV2RSxNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsY0FBaUI7SUFDeEQsWUFBWSxLQUFlO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGNBQWlCO0lBQzNELFlBQVksS0FBZTtRQUN6QixLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3pCLENBQUM7Q0FDRjtBQUVELE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUksS0FBZSxFQUFFLE9BQTZDLEVBQUUsRUFBRSxDQUNwRyx3QkFBQSx1QkFBdUIsQ0FBQyxTQUFTLEVBQVMsY0FBYyxDQUFDLEVBQUUsQ0FDekQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxpQ0FBRSxjQUFjLENBQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQy9FLENBQUE7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBVSxJQUFxQjtJQUNsRSwyREFBTyw4QkFBQSxJQUFJLEVBQWUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBb0I7QUFDckYsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FDOUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxDQUFBO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQWlDO0lBQzNFLE1BQU0sTUFBTSxHQUFHLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hELE9BQU8sQ0FBVSxHQUFvQixFQUFnQyxFQUFFLENBQ3JFLDZDQUFBLEdBQUcsR0FDUSxNQUFNLENBQUMsRUFBRSxDQUNoQixzQkFBQSxNQUFNLEVBQ0osS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQ3hDLEdBQUcsRUFBRSxDQUFDLDJCQUFPLE1BQU0sQ0FBQyxDQUNyQixDQUNGLENBQUE7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLE9BQWlDO0lBQ2hGLE9BQU8sQ0FBSSxLQUFlLEVBQThCLEVBQUU7UUFDeEQsSUFBSSw4QkFBQSxLQUFLLENBQWdCLEVBQUU7WUFDekIsaUNBQVEsS0FBc0IsRUFBVTtTQUN6QztRQUNELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -3,6 +3,7 @@ import { Effect } from "@effect/io/Effect";
|
|
|
3
3
|
import { MemQueue } from "@effect-app/infra-adapters/memQueue";
|
|
4
4
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
5
5
|
import type { CustomSchemaException } from "@effect-app/prelude/schema";
|
|
6
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
6
7
|
/**
|
|
7
8
|
* @tsplus static QueueMaker.Ops makeMem
|
|
8
9
|
* @tsplus location "@effect-app/infra/services/QueueMaker/memQueue"
|
|
@@ -13,11 +14,11 @@ export declare function makeMemQueue<DrainR, Evt, DrainEvt extends {
|
|
|
13
14
|
}, RContext, EvtE, DrainE>(queueName: string, queueDrainName: string, encoder: (e: {
|
|
14
15
|
body: Evt;
|
|
15
16
|
meta: RequestContext;
|
|
16
|
-
}) => 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 |
|
|
17
|
+
}) => 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 | RequestContextContainer>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
|
|
17
18
|
body: DrainEvt;
|
|
18
19
|
meta: RequestContext;
|
|
19
20
|
}>): import("@effect/io/Effect").Effect<MemQueue, never, {
|
|
20
|
-
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("@effect/io/Effect").Effect<
|
|
21
|
+
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("@effect/io/Effect").Effect<RequestContextContainer, never, import("@effect/io/Fiber").RuntimeFiber<never, import("@effect/data/Chunk").Chunk<void>>>;
|
|
21
22
|
drain: import("@effect/io/Effect").Effect<import("@effect/io/Scope").Scope | DrainR, never, import("@effect/io/Fiber").RuntimeFiber<never, never>>;
|
|
22
23
|
}>;
|
|
23
24
|
//# sourceMappingURL=memQueue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;;;;;AAQvE,wBAAgB,YAAY,CAC1B,MAAM,EACN,GAAG,EACH,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,SAAS,EAAE,MAAM,EACjB,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,GAAG,
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;;;;;AAQvE,wBAAgB,YAAY,CAC1B,MAAM,EACN,GAAG,EACH,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,SAAS,EAAE,MAAM,EACjB,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,GAAG,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjE,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;;;GA+DpF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
|
-
import * as tsplus_module_2 from "@effect-app/
|
|
3
|
-
import * as tsplus_module_3 from "@effect-app/
|
|
4
|
-
import * as tsplus_module_4 from "@effect-app/
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/prelude/
|
|
6
|
-
import * as tsplus_module_6 from "@effect-app/prelude/
|
|
7
|
-
import * as tsplus_module_7 from "@effect
|
|
8
|
-
import * as tsplus_module_8 from "@effect/io/Fiber";
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/core/_ext/Iterable";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/infra/services/QueueMaker/errors";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/prelude/utils";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/prelude/_ext/misc";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/prelude/schema";
|
|
7
|
+
import * as tsplus_module_7 from "@effect/io/Fiber";
|
|
9
8
|
import { MemQueue } from "@effect-app/infra-adapters/memQueue";
|
|
10
9
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
10
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
11
11
|
import { restoreFromRequestContext } from "../Store/Memory.js";
|
|
12
12
|
import { reportNonInterruptedFailure } from "./errors.js";
|
|
13
13
|
/**
|
|
@@ -20,8 +20,8 @@ export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent
|
|
|
20
20
|
const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName));
|
|
21
21
|
return {
|
|
22
22
|
publish: (...messages) => tsplus_module_1.gen(function* ($) {
|
|
23
|
-
const requestContext = yield* $(
|
|
24
|
-
return yield* $(
|
|
23
|
+
const requestContext = yield* $(RequestContextContainer.get);
|
|
24
|
+
return yield* $(tsplus_module_3.forkDaemonReportQueue(tsplus_module_2.ext_forEach(messages, m => tsplus_module_1.asUnit(
|
|
25
25
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
26
26
|
tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.stringify(encoder({ body: m, meta: requestContext })))
|
|
27
27
|
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
@@ -35,9 +35,9 @@ export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent
|
|
|
35
35
|
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, {
|
|
36
36
|
id: body.id,
|
|
37
37
|
locale: "en",
|
|
38
|
-
name:
|
|
39
|
-
}))(silenceAndReportError(tsplus_module_1.zipRight(tsplus_module_1.tap(
|
|
40
|
-
return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(silenceAndReportError(tsplus_module_1.flatMap(qDrain.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ =>
|
|
38
|
+
name: tsplus_module_6.ReasonableString(body._tag)
|
|
39
|
+
}))(silenceAndReportError(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_5.logAnnotates({ body: tsplus_module_4.RecordPretty(tsplus_module_4.object$(body)), meta: tsplus_module_4.RecordPretty(tsplus_module_4.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), handleEvent(body)))));
|
|
40
|
+
return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(silenceAndReportError(tsplus_module_1.flatMap(qDrain.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_7.join(_)))
|
|
41
41
|
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
42
42
|
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
43
43
|
))));
|
|
@@ -45,4 +45,4 @@ export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent
|
|
|
45
45
|
};
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3pEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FRMUIsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsT0FBeUQsRUFDekQsZUFBd0YsRUFDeEYsY0FFaUUsRUFDakUsVUFHbUY7SUFFbkYsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQUMsUUFBUSxFQUFRLENBQUE7UUFDckMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUU3RCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUN2QixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FDYiw0QkFBQSxRQUFRLEVBQWUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLHVIQUF1SDtnQkFDdkgsd0JBQUEsMkJBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FDWixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUMzQyxDQUNGO2dCQUNDLHVFQUF1RTtrQkFDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xCLENBQ1YsRUFFRixDQUFBO1lBQ0gsQ0FBQyxDQUFDO1lBQ0osS0FBSyxFQUFFLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQzNCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtnQkFDN0MsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFBO2dCQUN2RyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO2dCQUNyQyxzSEFBc0g7Z0JBQ3RILDhDQUFBLHdCQUFBLDJCQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDWixVQUFVLENBQUMsR0FFWCxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FRdEIsY0FBYyxDQUNaLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsTUFBTSxFQUFFLElBQWE7b0JBQ3JCLElBQUksRUFBRSxnQkFBQSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUNsQyxDQUFDLENBQ0gsQ0FSSSxxQkFBcUIsQ0FMOUIseUJBQUEsb0JBRVMsNkJBQW9CLEVBQUUsSUFBSSx1REFBRSxJQUFJLEVBQVUsRUFBRSxJQUFJLHVEQUFFLElBQUksRUFBVSxFQUFFLENBQUMsQ0FGNUUseUJBQ1ksT0FBTyxjQUFjLCtCQUErQixDQUFDLEdBRTFELEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQVUzQixDQUNKLENBQUE7Z0JBQ0wsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLG9EQUtKLHFCQUFxQixDQUo5Qix3QkFBQSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQ0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyw2RUFBQSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQThCLENBQUMsQ0FBQyxFQUFFLHNCQUFDLENBQUMsQ0FBSyxDQUFDLENBQUM7Z0JBQzFFLHlGQUF5RjtnQkFDekYsdUlBQXVJO29CQUkxSSxDQUFBO1lBQ0gsQ0FBQyxDQUFDO1NBQzhCLENBQUE7SUFDcEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIn0=
|
|
@@ -2,6 +2,7 @@ import { StringId, Parser } from "@effect-app/prelude/schema";
|
|
|
2
2
|
import { Effect } from "@effect/io/Effect";
|
|
3
3
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
4
4
|
import type { CustomSchemaException } from "@effect-app/prelude/schema";
|
|
5
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
5
6
|
/**
|
|
6
7
|
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
7
8
|
* @tsplus location "@effect-app/infra/services/QueueMaker/sbqueue"
|
|
@@ -15,12 +16,12 @@ export declare function makeServiceBusQueue<DrainR, Evt extends {
|
|
|
15
16
|
}, RContext, EvtE, DrainE>(_queueName: string, queueDrainName: string, encoder: (e: {
|
|
16
17
|
body: Evt;
|
|
17
18
|
meta: RequestContext;
|
|
18
|
-
}) => 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 |
|
|
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 | RequestContextContainer>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
|
|
19
20
|
body: DrainEvt;
|
|
20
21
|
meta: RequestContext;
|
|
21
22
|
}>): import("@effect/io/Effect").Effect<import("@azure/service-bus").ServiceBusReceiver | import("@azure/service-bus").ServiceBusSender, never, {
|
|
22
23
|
drain: import("@effect/io/Effect").Effect<import("@effect/io/Scope").Scope | DrainR, never, void>;
|
|
23
|
-
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("@effect/io/Effect").Effect<
|
|
24
|
+
publish: (messages_0: Evt, ...messages_1: Evt[]) => import("@effect/io/Effect").Effect<RequestContextContainer, never, import("@effect/io/Fiber").RuntimeFiber<never, void>>;
|
|
24
25
|
}>;
|
|
25
26
|
/**
|
|
26
27
|
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
@@ -1 +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;;;;;AAQvE,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,GAAG,
|
|
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;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;;;;;AAQvE,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,GAAG,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjE,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;;;GAqEpF;;;;;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mJAG1F"}
|
|
@@ -3,12 +3,12 @@ import * as tsplus_module_2 from "@effect-app/core/Tag";
|
|
|
3
3
|
import * as tsplus_module_3 from "@effect-app/prelude/utils";
|
|
4
4
|
import * as tsplus_module_4 from "@effect-app/prelude/_ext/misc";
|
|
5
5
|
import * as tsplus_module_5 from "@effect-app/prelude/schema";
|
|
6
|
-
import * as tsplus_module_6 from "@effect-app/infra/
|
|
7
|
-
import * as tsplus_module_7 from "@effect
|
|
8
|
-
import * as tsplus_module_8 from "@effect/io/Layer";
|
|
6
|
+
import * as tsplus_module_6 from "@effect-app/infra/services/QueueMaker/errors";
|
|
7
|
+
import * as tsplus_module_7 from "@effect/io/Layer";
|
|
9
8
|
import { LiveReceiver, LiveSender, LiveServiceBusClient, Receiver, Sender, subscribe } from "@effect-app/infra-adapters/ServiceBus";
|
|
10
9
|
import { captureException } from "@effect-app/infra/errorReporter";
|
|
11
10
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
11
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
12
12
|
import { restoreFromRequestContext } from "../Store/Memory.js";
|
|
13
13
|
import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js";
|
|
14
14
|
/**
|
|
@@ -40,8 +40,8 @@ export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHan
|
|
|
40
40
|
}), receiverLayer));
|
|
41
41
|
}),
|
|
42
42
|
publish: (...messages) => tsplus_module_1.gen(function* ($) {
|
|
43
|
-
const requestContext = yield* $(
|
|
44
|
-
return yield* $(
|
|
43
|
+
const requestContext = yield* $(RequestContextContainer.get);
|
|
44
|
+
return yield* $(tsplus_module_6.forkDaemonReportQueue(tsplus_module_1.promise(() => s.sendMessages(messages.map(x => ({
|
|
45
45
|
body: JSON.stringify(encoder({ body: x, meta: requestContext })),
|
|
46
46
|
messageId: x.id,
|
|
47
47
|
contentType: "application/json"
|
|
@@ -54,6 +54,6 @@ export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHan
|
|
|
54
54
|
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
55
55
|
*/
|
|
56
56
|
export function makeServiceBusLayers(url, queueName, queueDrainName) {
|
|
57
|
-
return
|
|
57
|
+
return tsplus_module_7.provide((tsplus_module_7.merge(LiveSender(queueName))(LiveReceiver(queueDrainName))))(LiveServiceBusClient(url));
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zYnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSx1Q0FBdUMsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRzNGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQVFqQyxVQUFrQixFQUNsQixjQUFzQixFQUN0QixPQUF5RCxFQUN6RCxlQUF3RixFQUN4RixjQUVpRSxFQUNqRSxVQUdtRjtJQUVuRixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyx5QkFBQyxNQUFNLEVBQVEsQ0FBQTtRQUNqQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLFFBQVEsRUFBUSxDQUFBO1FBQzFDLE1BQU0sYUFBYSxHQUFHLDBCQUFBLFFBQVEsRUFBVyxRQUFRLENBQUMsQ0FBQTtRQUNsRCxNQUFNLHFCQUFxQixHQUFHLDJCQUEyQixDQUFDLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUE7UUFDOUcsTUFBTSxXQUFXLEdBQUcsZ0NBQWdDLENBQUMs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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Effect } from "@effect/io/Effect";
|
|
2
2
|
import { Scope } from "@effect/io/Scope";
|
|
3
3
|
import { NonEmptyReadonlyArray } from "@effect/data/ReadonlyArray";
|
|
4
|
-
import type {
|
|
4
|
+
import type { RequestContextContainer } from "../RequestContextContainer.js";
|
|
5
5
|
export interface QueueBase<RContext, Evt> {
|
|
6
6
|
drain: Effect<Scope | RContext, never, void>;
|
|
7
|
-
publish: (...messages: NonEmptyReadonlyArray<Evt>) => Effect<
|
|
7
|
+
publish: (...messages: NonEmptyReadonlyArray<Evt>) => Effect<RequestContextContainer, never, void>;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* @tsplus type QueueMaker.Ops
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAE5E,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,uBAAuB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;CAAG;AACjC,eAAO,MAAM,UAAU,EAAE,aAAkB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TagClass } from "@effect-app/prelude/service";
|
|
2
|
+
import { Effect } from "@effect/io/Effect";
|
|
3
|
+
import { Context } from "@effect/data/Context";
|
|
4
|
+
import { Option } from "@effect-app/core/Option";
|
|
5
|
+
import { Ref } from "@effect/io/Ref";
|
|
6
|
+
import { RequestContext } from "../RequestContext.js";
|
|
7
|
+
declare const RequestContextContainer_base: (abstract new () => {}) & import("@effect/data/Context").Tag<RequestContextContainer>;
|
|
8
|
+
/**
|
|
9
|
+
* @tsplus companion RequestContextContainer.Ops
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class RequestContextContainer extends RequestContextContainer_base {
|
|
12
|
+
abstract readonly requestContext: Effect<never, never, RequestContext>;
|
|
13
|
+
abstract readonly update: (f: (rc: RequestContext) => RequestContext) => Effect<never, never, void>;
|
|
14
|
+
static get get(): Effect<RequestContextContainer, never, RequestContext>;
|
|
15
|
+
static get getOption(): import("@effect/io/Effect").Effect<never, never, import("@effect/data/Option").Option<RequestContext>>;
|
|
16
|
+
}
|
|
17
|
+
export declare class RequestContextContainerImpl extends RequestContextContainer {
|
|
18
|
+
#private;
|
|
19
|
+
constructor(inp: RequestContext.ConstructorInput);
|
|
20
|
+
get requestContext(): import("@effect/io/Effect").Effect<never, never, RequestContext>;
|
|
21
|
+
update: (f: (a: RequestContext) => RequestContext) => import("@effect/io/Effect").Effect<never, never, RequestContext>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @tsplus static RequestContextContainer.Ops live
|
|
25
|
+
* @tsplus location "@effect-app/infra/services/RequestContextContainer"
|
|
26
|
+
*/
|
|
27
|
+
export declare function live(inp: RequestContext.ConstructorInput): RequestContextContainerImpl;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=RequestContextContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestContextContainer.d.ts","sourceRoot":"","sources":["../../_src/services/RequestContextContainer.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;;AAErD;;GAEG;AACH,8BAAsB,uBAAwB,SAAQ,4BAAmC;IACvF,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;IACtE,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,cAAc,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACnG,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,uBAAuB,EAAE,KAAK,EAAE,cAAc,CAAC,CAEvE;IACD,MAAM,KAAK,SAAS,2GAOnB;CACF;AAED,qBAAa,2BAA4B,SAAQ,uBAAuB;;gBAE1D,GAAG,EAAE,cAAc,CAAC,gBAAgB;IAKhD,IAAa,cAAc,qEAE1B;IAEQ,MAAM,UAAW,cAAc,KAAK,cAAc,sEAA8B;CAC1F;;;;;AAKD,wBAAgB,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,gBAAgB,+BAExD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _RequestContextContainerImpl_ref;
|
|
13
|
+
import * as tsplus_module_1 from "@effect-app/prelude/service";
|
|
14
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
15
|
+
import * as tsplus_module_3 from "@effect/data/Option";
|
|
16
|
+
import * as tsplus_module_4 from "@effect-app/core/Option";
|
|
17
|
+
import * as tsplus_module_5 from "@effect/data/Context";
|
|
18
|
+
import * as tsplus_module_6 from "@effect/io/Ref";
|
|
19
|
+
import { RequestContext } from "../RequestContext.js";
|
|
20
|
+
/**
|
|
21
|
+
* @tsplus companion RequestContextContainer.Ops
|
|
22
|
+
*/
|
|
23
|
+
export class RequestContextContainer extends tsplus_module_1.TagClass() {
|
|
24
|
+
static get get() {
|
|
25
|
+
return tsplus_module_2.serviceWithEffect(RequestContextContainer, _ => _.requestContext);
|
|
26
|
+
}
|
|
27
|
+
static get getOption() {
|
|
28
|
+
return tsplus_module_2.flatMap(tsplus_module_2.contextWith((_) => tsplus_module_5.getOption(_, RequestContextContainer)), requestContext => tsplus_module_3.isSome(requestContext)
|
|
29
|
+
? tsplus_module_2.map(requestContext.value.requestContext, tsplus_module_3.some)
|
|
30
|
+
: tsplus_module_2.sync(() => tsplus_module_4.none));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class RequestContextContainerImpl extends RequestContextContainer {
|
|
34
|
+
constructor(inp) {
|
|
35
|
+
super();
|
|
36
|
+
_RequestContextContainerImpl_ref.set(this, void 0);
|
|
37
|
+
this.update = (f) => tsplus_module_6.getAndUpdate(__classPrivateFieldGet(this, _RequestContextContainerImpl_ref, "f"), f);
|
|
38
|
+
__classPrivateFieldSet(this, _RequestContextContainerImpl_ref, tsplus_module_6.unsafeMake(new RequestContext(inp)), "f");
|
|
39
|
+
}
|
|
40
|
+
get requestContext() {
|
|
41
|
+
return tsplus_module_6.get(__classPrivateFieldGet(this, _RequestContextContainerImpl_ref, "f"));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
_RequestContextContainerImpl_ref = new WeakMap();
|
|
45
|
+
/**
|
|
46
|
+
* @tsplus static RequestContextContainer.Ops live
|
|
47
|
+
*/
|
|
48
|
+
export function live(inp) {
|
|
49
|
+
return new RequestContextContainerImpl(inp);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdENvbnRleHRDb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL3NlcnZpY2VzL1JlcXVlc3RDb250ZXh0Q29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVyRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsZ0JBQUEsUUFBUSxFQUEyQjtJQUd2RixNQUFNLEtBQUssR0FBRztRQUNaLE9BQU8sa0NBQUEsdUJBQXVCLEVBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFDRCxNQUFNLEtBQUssU0FBUztRQUNsQixPQUFPLHdCQUFBLDRCQUFtQixDQUFDLENBQWlCLEVBQUUsRUFBRSxDQUFDLDBCQUFrQixDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxFQUNwRixjQUFjLENBQUMsRUFBRSxDQUN4Qix1QkFBQSxjQUFjLENBQVM7WUFDckIsQ0FBQyxDQUFDLG9CQUFBLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyx1QkFBaUI7WUFDdEQsQ0FBQyxDQUFDLGdEQUFtQixDQUN4QixDQUFBO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtJQUV0RSxZQUFZLEdBQW9DO1FBQzlDLEtBQUssRUFBRSxDQUFBO1FBRlQsbURBQXlCO1FBVWhCLFdBQU0sR0FBRyxDQUFDLENBQXdDLEVBQUUsRUFBRSxDQUFDLDZCQUFBLHVCQUFBLElBQUksd0NBQUssRUFBYyxDQUFDLENBQUMsQ0FBQTtRQVB2Rix1QkFBQSxJQUFJLG9DQUFRLDJCQUErQixJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFBLENBQUE7SUFDckUsQ0FBQztJQUVELElBQWEsY0FBYztRQUN6QiwyQkFBTyx1QkFBQSxJQUFJLHdDQUFLLEVBQUk7SUFDdEIsQ0FBQztDQUdGOztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxHQUFvQztJQUN2RCxPQUFPLElBQUksMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDN0MsQ0FBQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Chunk } from "@effect/data/Chunk";
|
|
2
2
|
import { Effect } from "@effect/io/Effect";
|
|
3
3
|
import { NonEmptyReadonlyArray } from "@effect/data/ReadonlyArray";
|
|
4
|
-
import {
|
|
4
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
5
5
|
import type { Filter, PersistenceModelType, Store, StoreConfig } from "./service.js";
|
|
6
6
|
import { StoreMaker } from "./service.js";
|
|
7
7
|
export declare function memFilter<T extends {
|
|
@@ -11,7 +11,7 @@ export declare function memFilter<T extends {
|
|
|
11
11
|
limit?: number;
|
|
12
12
|
}): (c: Chunk<T>) => Chunk<T>;
|
|
13
13
|
export declare const storeId: import("@effect/io/FiberRef").FiberRef<string>;
|
|
14
|
-
export declare const restoreFromRequestContext: import("@effect/io/Effect").Effect<
|
|
14
|
+
export declare const restoreFromRequestContext: import("@effect/io/Effect").Effect<RequestContextContainer, never, void>;
|
|
15
15
|
export declare function makeMemoryStoreInt<Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(name: string, seed?: Effect<never, never, ReadonlyMap<Id2, PM>>): import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
|
|
16
16
|
export declare const makeMemoryStore: () => {
|
|
17
17
|
make: <Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(name: string, seed?: import("@effect/io/Effect").Effect<never, never, ReadonlyMap<Id2, PM>> | undefined, config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAoB,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,OACnG,MAAM,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAehC;AAED,eAAO,MAAM,OAAO,gDAAiC,CAAA;AACrD,eAAO,MAAM,yBAAyB,0EAErC,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,SAAS,oBAAoB,CAAC,EAAE,CAAC,EACvG,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,mEA6ClD;AAED,eAAO,MAAM,eAAe;yFAElB,MAAM;CAkCd,CAAA;AAEF,eAAO,MAAM,eAAe,4DAA0C,CAAA"}
|
|
@@ -3,13 +3,12 @@ import * as tsplus_module_2 from "@effect-app/core/Chunk";
|
|
|
3
3
|
import * as tsplus_module_3 from "@effect/data/Option";
|
|
4
4
|
import * as tsplus_module_4 from "@effect-app/core/Array";
|
|
5
5
|
import * as tsplus_module_5 from "@effect/io/FiberRef";
|
|
6
|
-
import * as tsplus_module_6 from "@effect
|
|
7
|
-
import * as tsplus_module_7 from "@effect/io/
|
|
8
|
-
import * as tsplus_module_8 from "@effect/
|
|
9
|
-
import * as tsplus_module_9 from "@effect-app/core/
|
|
10
|
-
import * as tsplus_module_10 from "@effect-app/core/Tag";
|
|
6
|
+
import * as tsplus_module_6 from "@effect/io/Effect";
|
|
7
|
+
import * as tsplus_module_7 from "@effect/io/Ref";
|
|
8
|
+
import * as tsplus_module_8 from "@effect-app/core/_ext/Iterable";
|
|
9
|
+
import * as tsplus_module_9 from "@effect-app/core/Tag";
|
|
11
10
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
12
|
-
import "
|
|
11
|
+
import { RequestContextContainer } from "../RequestContextContainer.js";
|
|
13
12
|
import { StoreMaker } from "./service.js";
|
|
14
13
|
import { codeFilter, codeFilterJoinSelect, makeETag, makeUpdateETag } from "./utils.js";
|
|
15
14
|
export function memFilter(filter, cursor) {
|
|
@@ -30,68 +29,68 @@ export function memFilter(filter, cursor) {
|
|
|
30
29
|
});
|
|
31
30
|
}
|
|
32
31
|
export const storeId = tsplus_module_5.unsafeMake("primary");
|
|
33
|
-
export const restoreFromRequestContext =
|
|
32
|
+
export const restoreFromRequestContext = tsplus_module_6.flatMap(RequestContextContainer.get, ctx => tsplus_module_5.set(storeId, ctx.namespace ?? "primary"));
|
|
34
33
|
export function makeMemoryStoreInt(name, seed) {
|
|
35
|
-
return
|
|
34
|
+
return tsplus_module_6.gen(function* ($) {
|
|
36
35
|
const updateETag = makeUpdateETag(name);
|
|
37
|
-
const items = yield* $(seed ??
|
|
36
|
+
const items = yield* $(seed ?? tsplus_module_6.sync(() => new Map()));
|
|
38
37
|
const makeStore = () => new Map([...items.entries()].map(([id, e]) => [id, makeETag(e)]));
|
|
39
|
-
const store =
|
|
40
|
-
const sem =
|
|
38
|
+
const store = tsplus_module_7.unsafeMake(makeStore());
|
|
39
|
+
const sem = tsplus_module_6.unsafeMakeSemaphore(1);
|
|
41
40
|
const withPermit = sem.withPermits(1);
|
|
42
|
-
const values =
|
|
43
|
-
const all =
|
|
44
|
-
const batchSet = (items) => withPermit(
|
|
41
|
+
const values = tsplus_module_6.map(tsplus_module_7.get(store), s => s.values());
|
|
42
|
+
const all = tsplus_module_6.map(values, tsplus_module_1.fromIterable);
|
|
43
|
+
const batchSet = (items) => withPermit(tsplus_module_6.map(tsplus_module_6.tap(tsplus_module_8.ext_forEach(items, i => tsplus_module_6.flatMap(s.find(i.id), current => updateETag(i, current))), items => tsplus_module_6.flatMap(tsplus_module_6.map(tsplus_module_7.get(store), m => {
|
|
45
44
|
const mut = m;
|
|
46
45
|
tsplus_module_1.forEach(items, e => mut.set(e.id, e));
|
|
47
46
|
return mut;
|
|
48
|
-
}), _ =>
|
|
47
|
+
}), _ => tsplus_module_7.set(store, _))), _ => tsplus_module_1.toReadonlyArray(_)));
|
|
49
48
|
const s = {
|
|
50
49
|
all,
|
|
51
|
-
find: id =>
|
|
52
|
-
filter: (filter, cursor) =>
|
|
53
|
-
filterJoinSelect: (filter) =>
|
|
54
|
-
set: e => withPermit(
|
|
55
|
-
.find(e.id), current => updateETag(e, current)), e =>
|
|
50
|
+
find: id => tsplus_module_6.map(tsplus_module_7.get(store), _ => tsplus_module_3.fromNullable(_.get(id))),
|
|
51
|
+
filter: (filter, cursor) => tsplus_module_6.map(all, memFilter(filter, cursor)),
|
|
52
|
+
filterJoinSelect: (filter) => tsplus_module_6.map(all, c => tsplus_module_1.flatMap(c, codeFilterJoinSelect(filter))),
|
|
53
|
+
set: e => withPermit(tsplus_module_6.tap(tsplus_module_6.flatMap(s
|
|
54
|
+
.find(e.id), current => updateETag(e, current)), e => tsplus_module_6.flatMap(tsplus_module_6.map(tsplus_module_7.get(store), _ => new Map([..._, [e.id, e]])), _ => tsplus_module_7.set(store, _)))),
|
|
56
55
|
batchSet,
|
|
57
56
|
bulkSet: batchSet,
|
|
58
|
-
remove: (e) => withPermit(
|
|
57
|
+
remove: (e) => withPermit(tsplus_module_6.flatMap(tsplus_module_6.map(tsplus_module_7.get(store), _ => new Map([..._].filter(([_]) => _ !== e.id))), _ => tsplus_module_7.set(store, _)))
|
|
59
58
|
};
|
|
60
59
|
return s;
|
|
61
60
|
});
|
|
62
61
|
}
|
|
63
62
|
export const makeMemoryStore = () => ({
|
|
64
|
-
make: (name, seed, config) =>
|
|
65
|
-
const storesSem =
|
|
63
|
+
make: (name, seed, config) => tsplus_module_6.gen(function* ($) {
|
|
64
|
+
const storesSem = tsplus_module_6.unsafeMakeSemaphore(1);
|
|
66
65
|
const primary = yield* $(makeMemoryStoreInt(name, seed));
|
|
67
66
|
const stores = new Map([["primary", primary]]);
|
|
68
|
-
const getStore = !config?.allowNamespace ?
|
|
67
|
+
const getStore = !config?.allowNamespace ? tsplus_module_6.succeed(primary) : tsplus_module_6.flatMap(tsplus_module_5.get(storeId), namespace => {
|
|
69
68
|
const store = stores.get(namespace);
|
|
70
69
|
if (store) {
|
|
71
|
-
return
|
|
70
|
+
return tsplus_module_6.succeed(store);
|
|
72
71
|
}
|
|
73
72
|
if (!config.allowNamespace(namespace)) {
|
|
74
73
|
throw new Error(`Namespace ${namespace} not allowed!`);
|
|
75
74
|
}
|
|
76
|
-
return storesSem.withPermits(1)(
|
|
75
|
+
return storesSem.withPermits(1)(tsplus_module_6.suspendSucceed(() => {
|
|
77
76
|
const store = stores.get(namespace);
|
|
78
77
|
if (store)
|
|
79
|
-
return
|
|
80
|
-
return
|
|
78
|
+
return tsplus_module_6.sync(() => store);
|
|
79
|
+
return tsplus_module_6.tap(makeMemoryStoreInt(name, seed), store => tsplus_module_6.sync(() => stores.set(namespace, store)));
|
|
81
80
|
}));
|
|
82
81
|
});
|
|
83
82
|
const s = {
|
|
84
|
-
all:
|
|
85
|
-
find: (...args) =>
|
|
86
|
-
filter: (...args) =>
|
|
87
|
-
filterJoinSelect: (...args) =>
|
|
88
|
-
set: (...args) =>
|
|
89
|
-
batchSet: (...args) =>
|
|
90
|
-
bulkSet: (...args) =>
|
|
91
|
-
remove: (...args) =>
|
|
83
|
+
all: tsplus_module_6.flatMap(getStore, _ => _.all),
|
|
84
|
+
find: (...args) => tsplus_module_6.flatMap(getStore, _ => _.find(...args)),
|
|
85
|
+
filter: (...args) => tsplus_module_6.flatMap(getStore, _ => _.filter(...args)),
|
|
86
|
+
filterJoinSelect: (...args) => tsplus_module_6.flatMap(getStore, _ => _.filterJoinSelect(...args)),
|
|
87
|
+
set: (...args) => tsplus_module_6.flatMap(getStore, _ => _.set(...args)),
|
|
88
|
+
batchSet: (...args) => tsplus_module_6.flatMap(getStore, _ => _.batchSet(...args)),
|
|
89
|
+
bulkSet: (...args) => tsplus_module_6.flatMap(getStore, _ => _.bulkSet(...args)),
|
|
90
|
+
remove: (...args) => tsplus_module_6.flatMap(getStore, _ => _.remove(...args))
|
|
92
91
|
};
|
|
93
92
|
return s;
|
|
94
93
|
})
|
|
95
94
|
});
|
|
96
|
-
export const MemoryStoreLive =
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
export const MemoryStoreLive = tsplus_module_9.makeLayer(StoreMaker, makeMemoryStore());
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXZGLE1BQU0sVUFBVSxTQUFTLENBQTJCLE1BQWlCLEVBQUUsTUFBMEM7SUFDL0csT0FBTyxDQUFDLENBQUMsQ0FBVyxFQUFZLEVBQUU7UUFDaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxDQUFBO1FBQzNCLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLDBCQUFBLG9CQUFBLDZCQUFlLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBakMsQ0FBQyxDQUFpQyx1QkFBZ0IsRUFBVyxHQUFHLEVBQUUsQ0FBQyx1QkFBYSxDQUFDLENBQUE7U0FDekY7UUFDRCxJQUFJLENBQUMsR0FBRywwQkFBWSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQTlCLENBQUMsQ0FBOEIsQ0FBQTtRQUN2QyxJQUFJLElBQUksRUFBRTtZQUNSLENBQUMsR0FBRyxxQkFBQSxDQUFDLEVBQU0sSUFBSSxDQUFDLENBQUE7U0FDakI7UUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsQ0FBQyxHQUFHLHFCQUFBLENBQUMsRUFBTSxLQUFLLENBQUMsQ0FBQTtTQUNsQjtRQUNELHFDQUFPLENBQUMsRUFBUTtJQUNsQixDQUFDLENBQUMsQ0FBQTtBQUNKLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"proper-lockfile": "^4.1.2",
|
|
20
20
|
"pure-rand": "^6.0.0",
|
|
21
21
|
"redlock": "^4.2.0",
|
|
22
|
-
"@effect-app/prelude": "0.26.1",
|
|
23
22
|
"@effect-app/core": "0.33.0",
|
|
24
23
|
"@effect-app/schema": "0.24.0",
|
|
24
|
+
"@effect-app/prelude": "0.26.1",
|
|
25
25
|
"@effect-app/infra-adapters": "0.26.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
@@ -492,6 +492,16 @@
|
|
|
492
492
|
"default": "./_cjs/services/Repository.cjs"
|
|
493
493
|
}
|
|
494
494
|
},
|
|
495
|
+
"./services/RequestContextContainer": {
|
|
496
|
+
"import": {
|
|
497
|
+
"types": "./dist/services/RequestContextContainer.d.ts",
|
|
498
|
+
"default": "./dist/services/RequestContextContainer.js"
|
|
499
|
+
},
|
|
500
|
+
"require": {
|
|
501
|
+
"types": "./dist/services/RequestContextContainer.d.ts",
|
|
502
|
+
"default": "./_cjs/services/RequestContextContainer.cjs"
|
|
503
|
+
}
|
|
504
|
+
},
|
|
495
505
|
"./services/Store": {
|
|
496
506
|
"import": {
|
|
497
507
|
"types": "./dist/services/Store.d.ts",
|