@effect-app/infra 3.10.0 → 4.0.0-beta.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 +11 -0
- package/_check.sh +3 -0
- package/dist/CUPS.d.ts +22 -12
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +28 -29
- package/dist/Emailer/Sendgrid.js +13 -12
- package/dist/Emailer/service.d.ts +3 -13
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +3 -3
- package/dist/MainFiberSet.d.ts +18 -41
- package/dist/MainFiberSet.d.ts.map +1 -1
- package/dist/MainFiberSet.js +10 -10
- package/dist/Model/Repository/ext.d.ts.map +1 -1
- package/dist/Model/Repository/ext.js +13 -10
- package/dist/Model/Repository/internal/internal.d.ts +5 -5
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +52 -42
- package/dist/Model/Repository/legacy.d.ts +9 -9
- package/dist/Model/Repository/legacy.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.d.ts +4 -4
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +1 -1
- package/dist/Model/Repository/service.d.ts +11 -11
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/Repository/validation.d.ts +17 -47
- package/dist/Model/Repository/validation.d.ts.map +1 -1
- package/dist/Model/Repository/validation.js +2 -2
- package/dist/Model/query/dsl.d.ts +22 -22
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/dist/Model/query/dsl.js +1 -1
- package/dist/Model/query/new-kid-interpreter.d.ts +1 -1
- package/dist/Model/query/new-kid-interpreter.js +7 -7
- package/dist/Operations.d.ts +22 -63
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Operations.js +14 -14
- package/dist/OperationsRepo.d.ts +23 -7
- package/dist/OperationsRepo.d.ts.map +1 -1
- package/dist/OperationsRepo.js +4 -5
- package/dist/QueueMaker/SQLQueue.d.ts +6 -8
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +20 -24
- package/dist/QueueMaker/errors.js +1 -1
- package/dist/QueueMaker/memQueue.d.ts +2 -5
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +22 -26
- package/dist/QueueMaker/sbqueue.d.ts +2 -5
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +24 -28
- package/dist/RequestContext.d.ts +28 -41
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +4 -4
- package/dist/RequestFiberSet.d.ts +23 -50
- package/dist/RequestFiberSet.d.ts.map +1 -1
- package/dist/RequestFiberSet.js +14 -14
- package/dist/Store/ContextMapContainer.d.ts +4 -4
- package/dist/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/Store/ContextMapContainer.js +5 -5
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +21 -28
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +12 -16
- package/dist/Store/Memory.d.ts +2 -2
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +25 -33
- package/dist/Store/index.js +2 -2
- package/dist/Store/service.d.ts +9 -34
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +4 -4
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +10 -2
- package/dist/adapters/SQL/Model.d.ts +106 -162
- package/dist/adapters/SQL/Model.d.ts.map +1 -1
- package/dist/adapters/SQL/Model.js +92 -130
- package/dist/adapters/ServiceBus.d.ts +13 -44
- package/dist/adapters/ServiceBus.d.ts.map +1 -1
- package/dist/adapters/ServiceBus.js +13 -15
- package/dist/adapters/cosmos-client.d.ts +7 -3
- package/dist/adapters/cosmos-client.d.ts.map +1 -1
- package/dist/adapters/cosmos-client.js +5 -4
- package/dist/adapters/logger.d.ts +1 -1
- package/dist/adapters/logger.d.ts.map +1 -1
- package/dist/adapters/memQueue.d.ts +8 -21
- package/dist/adapters/memQueue.d.ts.map +1 -1
- package/dist/adapters/memQueue.js +4 -4
- package/dist/adapters/mongo-client.d.ts +6 -6
- package/dist/adapters/mongo-client.d.ts.map +1 -1
- package/dist/adapters/mongo-client.js +5 -4
- package/dist/adapters/redis-client.d.ts +14 -4
- package/dist/adapters/redis-client.d.ts.map +1 -1
- package/dist/adapters/redis-client.js +19 -18
- package/dist/api/ContextProvider.d.ts +10 -15
- package/dist/api/ContextProvider.d.ts.map +1 -1
- package/dist/api/ContextProvider.js +8 -8
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/codec.d.ts.map +1 -1
- package/dist/api/codec.js +1 -1
- package/dist/api/internal/RequestContextMiddleware.d.ts +1 -1
- package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
- package/dist/api/internal/auth.d.ts +3 -3
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +8 -8
- package/dist/api/internal/events.d.ts +2 -2
- package/dist/api/internal/events.d.ts.map +1 -1
- package/dist/api/internal/events.js +9 -9
- package/dist/api/internal/health.d.ts +1 -1
- package/dist/api/internal/health.d.ts.map +1 -1
- package/dist/api/internal/health.js +2 -2
- package/dist/api/layerUtils.d.ts +14 -14
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +5 -5
- package/dist/api/middlewares.d.ts +0 -75
- package/dist/api/middlewares.d.ts.map +1 -1
- package/dist/api/middlewares.js +6 -51
- package/dist/api/reportError.js +4 -4
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -4
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.d.ts +6 -7
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +9 -13
- package/dist/api/routing/schema/jwt.d.ts +1 -1
- package/dist/api/routing/schema/jwt.d.ts.map +1 -1
- package/dist/api/routing/schema/jwt.js +5 -4
- package/dist/api/routing/utils.d.ts +2 -2
- package/dist/api/routing/utils.d.ts.map +1 -1
- package/dist/api/routing/utils.js +10 -8
- package/dist/api/routing.d.ts +39 -37
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +17 -21
- package/dist/api/setupRequest.d.ts +4 -6
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +10 -9
- package/dist/arbs.d.ts +3 -3
- package/dist/arbs.d.ts.map +1 -1
- package/dist/arbs.js +2 -2
- package/dist/errorReporter.d.ts +1 -1
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +12 -12
- package/dist/fileUtil.d.ts +6 -6
- package/dist/fileUtil.d.ts.map +1 -1
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +19 -18
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +11 -13
- package/dist/logger/shared.d.ts +2 -2
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +7 -9
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/rateLimit.d.ts +2 -2
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +5 -5
- package/dist/test.d.ts +2 -2
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +6 -24
- package/package.json +19 -22
- package/src/CUPS.ts +15 -14
- package/src/Emailer/Sendgrid.ts +15 -13
- package/src/Emailer/service.ts +3 -3
- package/src/MainFiberSet.ts +16 -12
- package/src/Model/Repository/ext.ts +18 -16
- package/src/Model/Repository/internal/internal.ts +80 -69
- package/src/Model/Repository/legacy.ts +9 -9
- package/src/Model/Repository/makeRepo.ts +5 -5
- package/src/Model/Repository/service.ts +12 -12
- package/src/Model/Repository/validation.ts +1 -1
- package/src/Model/query/dsl.ts +13 -13
- package/src/Model/query/new-kid-interpreter.ts +8 -8
- package/src/Operations.ts +17 -14
- package/src/OperationsRepo.ts +3 -4
- package/src/QueueMaker/SQLQueue.ts +86 -89
- package/src/QueueMaker/errors.ts +1 -1
- package/src/QueueMaker/memQueue.ts +90 -91
- package/src/QueueMaker/sbqueue.ts +90 -92
- package/src/RequestContext.ts +3 -3
- package/src/RequestFiberSet.ts +17 -15
- package/src/Store/ContextMapContainer.ts +4 -4
- package/src/Store/Cosmos.ts +20 -27
- package/src/Store/Disk.ts +13 -17
- package/src/Store/Memory.ts +28 -34
- package/src/Store/index.ts +1 -1
- package/src/Store/service.ts +4 -4
- package/src/Store/utils.ts +9 -5
- package/src/adapters/SQL/Model.ts +255 -268
- package/src/adapters/ServiceBus.ts +17 -20
- package/src/adapters/cosmos-client.ts +5 -5
- package/src/adapters/memQueue.ts +3 -3
- package/src/adapters/mongo-client.ts +5 -5
- package/src/adapters/redis-client.ts +25 -19
- package/src/api/ContextProvider.ts +24 -34
- package/src/api/codec.ts +1 -1
- package/src/api/internal/auth.ts +11 -13
- package/src/api/internal/events.ts +11 -11
- package/src/api/internal/health.ts +1 -1
- package/src/api/layerUtils.ts +20 -20
- package/src/api/middlewares.ts +0 -97
- package/src/api/reportError.ts +3 -3
- package/src/api/routing/middleware/RouterMiddleware.ts +5 -6
- package/src/api/routing/middleware/middleware.ts +13 -25
- package/src/api/routing/schema/jwt.ts +9 -7
- package/src/api/routing/utils.ts +12 -10
- package/src/api/routing.ts +77 -79
- package/src/api/setupRequest.ts +9 -8
- package/src/arbs.ts +3 -3
- package/src/errorReporter.ts +12 -12
- package/src/logger/jsonLogger.ts +18 -17
- package/src/logger/logFmtLogger.ts +10 -12
- package/src/logger/shared.ts +6 -8
- package/src/rateLimit.ts +7 -7
- package/src/test.ts +7 -29
- package/test/contextProvider.test.ts +77 -70
- package/test/controller.test.ts +51 -39
- package/test/dist/contextProvider.test.d.ts.map +1 -1
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/fixtures.d.ts +33 -81
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +9 -8
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/fixtures.ts +9 -7
- package/test/query.test.ts +49 -41
- package/test/rawQuery.test.ts +44 -40
- package/test/requires.test.ts +40 -31
- package/test/rpc-multi-middleware.test.ts +13 -14
- package/test/validateSample.test.ts +2 -2
- package/tsconfig.json +1 -27
- package/dist/api/internal/middlewares.d.ts +0 -15
- package/dist/api/internal/middlewares.d.ts.map +0 -1
- package/dist/api/internal/middlewares.js +0 -168
- package/src/api/internal/middlewares.ts +0 -279
|
@@ -3,10 +3,10 @@ import { HttpHeaders, HttpServerRequest, HttpServerResponse } from "effect-app/h
|
|
|
3
3
|
import { auth, InsufficientScopeError, InvalidRequestError, InvalidTokenError, UnauthorizedError } from "express-oauth2-jwt-bearer";
|
|
4
4
|
type Config = Parameters<typeof auth>[0];
|
|
5
5
|
export declare const checkJWTI: (config: Config) => (headers: HttpHeaders.Headers) => Effect.Effect<void, InsufficientScopeError | InvalidRequestError | InvalidTokenError | UnauthorizedError, never>;
|
|
6
|
-
export declare const checkJwt: (config: Config) => <E, R>(app:
|
|
7
|
-
declare const JWTError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").
|
|
6
|
+
export declare const checkJwt: (config: Config) => <E, R>(app: Effect.Effect<HttpServerResponse.HttpServerResponse, E, HttpServerRequest.HttpServerRequest | R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, E | import("effect/unstable/http/HttpBody").HttpBodyError, HttpServerRequest.HttpServerRequest | R>;
|
|
7
|
+
declare const JWTError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").MatchRecord<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }, void, { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Readonly<A> & {
|
|
8
8
|
readonly _tag: "JWTError";
|
|
9
|
-
};
|
|
9
|
+
} & import("effect/Pipeable").Pipeable;
|
|
10
10
|
export declare class JWTError extends JWTError_base<{
|
|
11
11
|
error: InsufficientScopeError | InvalidRequestError | InvalidTokenError | UnauthorizedError;
|
|
12
12
|
}> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/internal/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,MAAM,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,WAAW,EAAkB,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpG,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAMnI,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,uJA6BvC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/internal/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,MAAM,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,WAAW,EAAkB,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpG,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAMnI,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,uJA6BvC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,8QAiBtC,CAAA;;;;AAED,qBAAa,QAAS,SAAQ,cAA6B;IACzD,KAAK,EACD,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,CAAA;CACtB,CAAC;CAAG"}
|
|
@@ -6,24 +6,24 @@ import { auth, InsufficientScopeError, InvalidRequestError, InvalidTokenError, U
|
|
|
6
6
|
export const checkJWTI = (config) => {
|
|
7
7
|
const mw = auth(config);
|
|
8
8
|
return Effect.fnUntraced(function* (headers) {
|
|
9
|
-
return yield* Effect.
|
|
9
|
+
return yield* Effect.callback((resume) => {
|
|
10
10
|
const next = (err) => {
|
|
11
11
|
if (!err)
|
|
12
|
-
return
|
|
12
|
+
return resume(Effect.void);
|
|
13
13
|
if (err instanceof InsufficientScopeError
|
|
14
14
|
|| err instanceof InvalidRequestError
|
|
15
15
|
|| err instanceof InvalidTokenError
|
|
16
16
|
|| err instanceof UnauthorizedError) {
|
|
17
|
-
return
|
|
17
|
+
return resume(Effect.fail(err));
|
|
18
18
|
}
|
|
19
|
-
return
|
|
19
|
+
return resume(Effect.die(err));
|
|
20
20
|
};
|
|
21
21
|
const r = { headers, query: {}, body: {}, is: () => false, method: "POST" }; // is("urlencoded")
|
|
22
22
|
try {
|
|
23
23
|
mw(r, {}, next);
|
|
24
24
|
}
|
|
25
25
|
catch (e) {
|
|
26
|
-
return
|
|
26
|
+
return resume(Effect.die(e));
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
});
|
|
@@ -32,10 +32,10 @@ export const checkJwt = (config) => {
|
|
|
32
32
|
const check = checkJWTI(config);
|
|
33
33
|
return HttpMiddleware.make((app) => Effect.gen(function* () {
|
|
34
34
|
const req = yield* HttpServerRequest.HttpServerRequest;
|
|
35
|
-
const response = yield* check(req.headers).pipe(Effect.
|
|
35
|
+
const response = yield* check(req.headers).pipe(Effect.catch((e) => HttpServerResponse.json({ message: e.message }, {
|
|
36
36
|
status: e.status,
|
|
37
37
|
headers: HttpHeaders.fromInput(e.headers)
|
|
38
|
-
})))
|
|
38
|
+
})));
|
|
39
39
|
if (response) {
|
|
40
40
|
return response;
|
|
41
41
|
}
|
|
@@ -44,4 +44,4 @@ export const checkJwt = (config) => {
|
|
|
44
44
|
};
|
|
45
45
|
export class JWTError extends Data.TaggedClass("JWTError") {
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvaW50ZXJuYWwvYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsa0RBQWtEO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDcEcsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBT25JLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN2QixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUMsT0FBNEI7UUFDN0QsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUkzQixDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUc7b0JBQUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNwQyxJQUNFLEdBQUcsWUFBWSxzQkFBc0I7dUJBQ2xDLEdBQUcsWUFBWSxtQkFBbUI7dUJBQ2xDLEdBQUcsWUFBWSxpQkFBaUI7dUJBQ2hDLEdBQUcsWUFBWSxpQkFBaUIsRUFDbkMsQ0FBQztvQkFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQ2pDLENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLENBQUMsQ0FBQTtZQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQSxDQUFDLG1CQUFtQjtZQUMvRixJQUFJLENBQUM7Z0JBQ0gsRUFBRSxDQUFDLENBQVEsRUFBRSxFQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDL0IsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7SUFDekMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9CLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFBO1FBQ3RELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNqRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNoQixPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQzFDLENBQUMsQ0FDSCxDQUFDLENBQUE7UUFDRixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQ25CLENBQUMsQ0FBQyxDQUNILENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLE9BQU8sUUFBUyxTQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQU12RDtDQUFHIn0=
|
|
@@ -2,8 +2,8 @@ import { Effect, S, Stream } from "effect-app";
|
|
|
2
2
|
import { HttpServerResponse } from "effect-app/http";
|
|
3
3
|
export declare const makeSSE: <A extends {
|
|
4
4
|
id: any;
|
|
5
|
-
}, SI, SR>(schema: S.
|
|
5
|
+
}, SI, SR>(schema: S.Codec<A, SI, SR>) => <E, R>(events: Stream.Stream<{
|
|
6
6
|
evt: A;
|
|
7
7
|
namespace: string;
|
|
8
|
-
}, E, R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, never, Exclude<Exclude<SR, import("effect/Tracer").ParentSpan>,
|
|
8
|
+
}, E, R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, never, Exclude<Exclude<SR, import("effect/Tracer").ParentSpan>, never> | Exclude<Exclude<R, import("effect/Tracer").ParentSpan>, never>>;
|
|
9
9
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/api/internal/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAQ,CAAC,EAAY,MAAM,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAe,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAUjE,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,EAAE,EAAE,EAAE,EAAE,EACnD,QAAQ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/api/internal/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAQ,CAAC,EAAY,MAAM,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAe,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAUjE,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,EAAE,EAAE,EAAE,EAAE,EACnD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAE3B,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,CAAC,kMAoD2B,CAAA"}
|
|
@@ -4,12 +4,12 @@ import { reportError } from "../../errorReporter.js";
|
|
|
4
4
|
import { setupRequestContextFromCurrent } from "../setupRequest.js";
|
|
5
5
|
// Tell the client to retry every 10 seconds if connectivity is lost
|
|
6
6
|
const setRetry = Stream.succeed("retry: 10000");
|
|
7
|
-
const keepAlive = Stream.
|
|
7
|
+
const keepAlive = Stream.fromEffectSchedule(Effect.succeed(":keep-alive"), Schedule.fixed(Duration.seconds(15)));
|
|
8
8
|
let connId = BigInt(0);
|
|
9
9
|
export const makeSSE = (schema) => (events) => Effect
|
|
10
10
|
.gen(function* () {
|
|
11
11
|
const id = connId++;
|
|
12
|
-
const ctx = yield* Effect.
|
|
12
|
+
const ctx = yield* Effect.services();
|
|
13
13
|
const res = HttpServerResponse.stream(
|
|
14
14
|
// workaround for different scoped behaviour for streams in Bun
|
|
15
15
|
// https://discord.com/channels/795981131316985866/1098177242598756412/1389646879675125861
|
|
@@ -19,13 +19,13 @@ export const makeSSE = (schema) => (events) => Effect
|
|
|
19
19
|
yield* Effect.logInfo("$ start listening to events, id: " + id.toString());
|
|
20
20
|
yield* Effect.addFinalizer(() => Effect.logInfo("$ end listening to events, id: " + id.toString()));
|
|
21
21
|
const enc = new TextEncoder();
|
|
22
|
-
const encode = S.
|
|
23
|
-
const eventStream = Stream.
|
|
24
|
-
.pipe(Effect.
|
|
25
|
-
const stream = pipe(setRetry, Stream.merge(keepAlive), Stream.merge(eventStream, { haltStrategy: "either" }), Stream.
|
|
22
|
+
const encode = S.encodeEffect(schema);
|
|
23
|
+
const eventStream = Stream.mapEffect(events, (_) => encode(_.evt)
|
|
24
|
+
.pipe(Effect.map((evt) => `id: ${_.evt.id}\ndata: ${JSON.stringify(evt)}`)));
|
|
25
|
+
const stream = pipe(setRetry, Stream.merge(keepAlive), Stream.merge(eventStream, { haltStrategy: "either" }), Stream.tapCause((cause) => Effect.logError("SSE error", cause)), Stream.map((_) => enc.encode(_ + "\n\n")));
|
|
26
26
|
return stream;
|
|
27
27
|
})
|
|
28
|
-
.pipe(Stream.
|
|
28
|
+
.pipe(Stream.unwrap, Stream.tapCause(reportError("Request")), Stream.provide(ctx)), {
|
|
29
29
|
contentType: "text/event-stream",
|
|
30
30
|
headers: HttpHeaders.fromInput({
|
|
31
31
|
"content-type": "text/event-stream",
|
|
@@ -36,5 +36,5 @@ export const makeSSE = (schema) => (events) => Effect
|
|
|
36
36
|
});
|
|
37
37
|
return res;
|
|
38
38
|
})
|
|
39
|
-
.pipe(Effect.
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
.pipe(Effect.tapCause(reportError("Request")), setupRequestContextFromCurrent("events"));
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9pbnRlcm5hbC9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDcEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbkUsb0VBQW9FO0FBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUE7QUFDL0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUVoSCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFdEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQ3JCLE1BQTBCLEVBQzFCLEVBQUUsQ0FDSixDQUFPLE1BQTBELEVBQUUsRUFBRSxDQUNuRSxNQUFNO0tBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNaLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBQ25CLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQVUsQ0FBQTtJQUM1QyxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNO0lBQ25DLCtEQUErRDtJQUMvRCwwRkFBMEY7SUFDMUYsTUFBTTtTQUNILEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDWixLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNsRSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBRW5HLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7UUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUNsQyxNQUFNLEVBQ04sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDaEYsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FDakIsUUFBUSxFQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQy9ELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQzFDLENBQUE7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQztTQUNELElBQUksQ0FDSCxNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ3ZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ3BCLEVBQ0g7UUFDRSxXQUFXLEVBQUUsbUJBQW1CO1FBQ2hDLE9BQU8sRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQzdCLGNBQWMsRUFBRSxtQkFBbUI7WUFDbkMsZUFBZSxFQUFFLFVBQVU7WUFDM0IsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixZQUFZLEVBQUUsWUFBWSxDQUFDLGlDQUFpQztTQUM3RCxDQUFDO0tBQ0gsQ0FDRixDQUFBO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDLENBQUM7S0FDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBIn0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { HttpServerResponse } from "effect-app/http";
|
|
2
|
-
export declare function serverHealth(version: string): import("effect/Effect").Effect<HttpServerResponse.HttpServerResponse,
|
|
2
|
+
export declare function serverHealth(version: string): import("effect/Effect").Effect<HttpServerResponse.HttpServerResponse, import("effect/unstable/http/HttpBody").HttpBodyError, import("effect/unstable/http/HttpServerRequest").HttpServerRequest>;
|
|
3
3
|
//# sourceMappingURL=health.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/api/internal/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/api/internal/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,oMAE3C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpMiddleware, HttpServerResponse } from "effect-app/http";
|
|
2
2
|
export function serverHealth(version) {
|
|
3
|
-
return HttpServerResponse.
|
|
3
|
+
return HttpServerResponse.json({ version }).pipe(HttpMiddleware.withLoggerDisabled);
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9pbnRlcm5hbC9oZWFsdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXBFLE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZTtJQUMxQyxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0FBQ3JGLENBQUMifQ==
|
package/dist/api/layerUtils.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Effect, type Layer, type NonEmptyReadonlyArray, Option, ServiceMap } from "effect-app";
|
|
2
2
|
export declare namespace LayerUtils {
|
|
3
|
-
type GetLayersSuccess<Layers extends ReadonlyArray<Layer.
|
|
4
|
-
[k in keyof Layers]: Layer.
|
|
5
|
-
}[number] : Layer.
|
|
6
|
-
type GetLayersContext<Layers extends ReadonlyArray<Layer.
|
|
7
|
-
[k in keyof Layers]: Layer.
|
|
8
|
-
}[number] : Layer.
|
|
9
|
-
type GetLayersError<Layers extends ReadonlyArray<Layer.
|
|
10
|
-
[k in keyof Layers]: Layer.
|
|
11
|
-
}[number] : Layer.
|
|
3
|
+
type GetLayersSuccess<Layers extends ReadonlyArray<Layer.Any>> = Layers extends NonEmptyReadonlyArray<Layer.Any> ? {
|
|
4
|
+
[k in keyof Layers]: Layer.Success<Layers[k]>;
|
|
5
|
+
}[number] : Layer.Success<Layers[number]>;
|
|
6
|
+
type GetLayersContext<Layers extends ReadonlyArray<Layer.Any>> = Layers extends NonEmptyReadonlyArray<Layer.Any> ? {
|
|
7
|
+
[k in keyof Layers]: Layer.Services<Layers[k]>;
|
|
8
|
+
}[number] : Layer.Services<Layers[number]>;
|
|
9
|
+
type GetLayersError<Layers extends ReadonlyArray<Layer.Any>> = Layers extends NonEmptyReadonlyArray<Layer.Any> ? {
|
|
10
|
+
[k in keyof Layers]: Layer.Error<Layers[k]>;
|
|
11
|
+
}[number] : Layer.Error<Layers[number]>;
|
|
12
12
|
}
|
|
13
|
-
export type ContextTagWithDefault<Id, A, LayerE, LayerR> =
|
|
13
|
+
export type ContextTagWithDefault<Id, A, LayerE, LayerR> = ServiceMap.Service<Id, A> & {
|
|
14
14
|
Default: Layer.Layer<Id, LayerE, LayerR>;
|
|
15
15
|
};
|
|
16
16
|
export declare namespace ContextTagWithDefault {
|
|
17
17
|
type Base<A> = ContextTagWithDefault<any, A, any, any>;
|
|
18
18
|
}
|
|
19
|
-
export type GetContext<T> = T extends
|
|
19
|
+
export type GetContext<T> = T extends ServiceMap.ServiceMap<infer Y> ? Y : never;
|
|
20
20
|
export declare const mergeContexts: <T extends readonly {
|
|
21
21
|
maker: any;
|
|
22
|
-
handle: Effect.Effect<
|
|
23
|
-
}[]>(makers: T) => Effect.Effect<
|
|
22
|
+
handle: Effect.Effect<ServiceMap.ServiceMap<any> | Option.Option<ServiceMap.ServiceMap<any>>>;
|
|
23
|
+
}[]>(makers: T) => Effect.Effect<ServiceMap.ServiceMap<Effect.Success<T[number]["handle"]>>, never, never>;
|
|
24
24
|
//# sourceMappingURL=layerUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layerUtils.d.ts","sourceRoot":"","sources":["../../src/api/layerUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"layerUtils.d.ts","sourceRoot":"","sources":["../../src/api/layerUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAO/F,yBAAiB,UAAU,CAAC;IAC1B,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAC5E,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SAChC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC9C,CAAC,MAAM,CAAC,GACP,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEjC,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAC5E,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SAChC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC/C,CAAC,MAAM,CAAC,GACP,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAElC,KAAY,cAAc,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAAS,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,GACjH;SACC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC,MAAM,CAAC,GACP,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,qBAAqB,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,IACnD,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GACzB;IACA,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC,CAAA;AAEH,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,IAAI,CAAC,CAAC,IAAI,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAC9D;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEhF,eAAO,MAAM,aAAa,GAEtB,CAAC,SAAS,SAAS;IACjB,KAAK,EAAE,GAAG,CAAA;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CAC9F,EAAE,uGAkBN,CAAA"}
|
package/dist/api/layerUtils.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
2
|
+
import { Effect, Option, ServiceMap } from "effect-app";
|
|
3
3
|
import { InfraLogger } from "../logger.js";
|
|
4
4
|
export const mergeContexts = Effect.fnUntraced(function* (makers) {
|
|
5
|
-
let context =
|
|
5
|
+
let context = ServiceMap.empty();
|
|
6
6
|
for (const mw of makers) {
|
|
7
7
|
const ctx = yield* mw.handle.pipe(Effect.provide(context));
|
|
8
|
-
const moreContext =
|
|
8
|
+
const moreContext = ServiceMap.isServiceMap(ctx) ? Option.some(ctx) : ctx;
|
|
9
9
|
yield* InfraLogger.logDebug("Built dynamic context for middleware" + (mw.maker.key ?? mw.maker), Option.map(moreContext, (c) => c.toJSON().services));
|
|
10
10
|
if (moreContext.value) {
|
|
11
|
-
context =
|
|
11
|
+
context = ServiceMap.merge(context, moreContext.value);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
return context;
|
|
15
15
|
});
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbGF5ZXJVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBMEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBc0MxQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDNUMsUUFBUSxDQUFDLEVBTVAsTUFBUztJQUVULElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNoQyxLQUFLLE1BQU0sRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMxRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDekUsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDekIsc0NBQXNDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ25FLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzdELENBQUE7UUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxPQUFxRSxDQUFBO0FBQzlFLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -3,83 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @since 1.0.0
|
|
5
5
|
*/
|
|
6
|
-
import type * as App from "@effect/platform/HttpApp";
|
|
7
|
-
import type { Effect } from "effect-app";
|
|
8
|
-
import type { NotLoggedInError } from "../errors.js";
|
|
9
6
|
export * from "./internal/auth.js";
|
|
10
7
|
export * from "./internal/events.js";
|
|
11
8
|
export * from "./internal/health.js";
|
|
12
9
|
export * from "./internal/RequestContextMiddleware.js";
|
|
13
|
-
/**
|
|
14
|
-
* Add access logs for handled requests. The log runs before each request.
|
|
15
|
-
* Optionally configure log level using the first argument. The default log level
|
|
16
|
-
* is `Debug`.
|
|
17
|
-
*
|
|
18
|
-
* @category logging
|
|
19
|
-
* @since 1.0.0
|
|
20
|
-
*/
|
|
21
|
-
export declare const accessLog: (level?: "Info" | "Warning" | "Debug") => <R, E>(app: App.Default<R, E>) => App.Default<R, E>;
|
|
22
|
-
/**
|
|
23
|
-
* Annotate request logs using generated UUID. The default annotation key is `requestId`.
|
|
24
|
-
* The annotation key is configurable using the first argument.
|
|
25
|
-
*
|
|
26
|
-
* Note that in order to apply the annotation also for access logging, you should
|
|
27
|
-
* make sure the `accessLog` middleware is plugged after the `uuidLogAnnotation`.
|
|
28
|
-
*
|
|
29
|
-
* @category logging
|
|
30
|
-
* @since 1.0.0
|
|
31
|
-
*/
|
|
32
|
-
export declare const uuidLogAnnotation: (logAnnotationKey?: string) => <R, E>(app: App.Default<R, E>) => App.Default<R, E>;
|
|
33
|
-
/**
|
|
34
|
-
* Measure how many times each endpoint was called in a
|
|
35
|
-
* `server.endpoint_calls` counter metrics.
|
|
36
|
-
*
|
|
37
|
-
* @category metrics
|
|
38
|
-
* @since 1.0.0
|
|
39
|
-
*/
|
|
40
|
-
export declare const endpointCallsMetric: () => <R, E>(app: App.Default<R, E>) => App.Default<R, E>;
|
|
41
|
-
/**
|
|
42
|
-
* Logs out a handler failure.
|
|
43
|
-
*
|
|
44
|
-
* @category logging
|
|
45
|
-
* @since 1.0.0
|
|
46
|
-
*/
|
|
47
|
-
export declare const errorLog: <R, E>(app: App.Default<R, E>) => App.Default<R, E>;
|
|
48
|
-
/**
|
|
49
|
-
* @category models
|
|
50
|
-
* @since 1.0.0
|
|
51
|
-
*/
|
|
52
|
-
export interface BasicAuthCredentials {
|
|
53
|
-
user: string;
|
|
54
|
-
password: string;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Basic auth middleware.
|
|
58
|
-
*
|
|
59
|
-
* @category authorization
|
|
60
|
-
* @since 1.0.0
|
|
61
|
-
*/
|
|
62
|
-
export declare const basicAuth: <R2, _>(checkCredentials: (credentials: BasicAuthCredentials) => Effect.Effect<_, NotLoggedInError, R2>, options?: Partial<{
|
|
63
|
-
headerName: string;
|
|
64
|
-
skipPaths: readonly string[];
|
|
65
|
-
}>) => <R1, E>(app: App.Default<E, R1>) => App.Default<E, R1 | R2>;
|
|
66
|
-
/**
|
|
67
|
-
* @category models
|
|
68
|
-
* @since 1.0.0
|
|
69
|
-
*/
|
|
70
|
-
export interface CorsOptions {
|
|
71
|
-
allowedOrigins: readonly string[];
|
|
72
|
-
allowedMethods: readonly string[];
|
|
73
|
-
allowedHeaders: readonly string[];
|
|
74
|
-
exposedHeaders: readonly string[];
|
|
75
|
-
maxAge: number;
|
|
76
|
-
credentials: boolean;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Basic auth middleware.
|
|
80
|
-
*
|
|
81
|
-
* @category authorization
|
|
82
|
-
* @since 1.0.0
|
|
83
|
-
*/
|
|
84
|
-
export declare const cors: (options?: Partial<CorsOptions>) => <R, E>(app: App.Default<R, E>) => App.Default<R, E>;
|
|
85
10
|
//# sourceMappingURL=middlewares.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../src/api/middlewares.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../src/api/middlewares.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wCAAwC,CAAA"}
|
package/dist/api/middlewares.js
CHANGED
|
@@ -1,55 +1,10 @@
|
|
|
1
|
-
import * as internal from "./internal/middlewares.js";
|
|
2
|
-
export * from "./internal/auth.js";
|
|
3
|
-
export * from "./internal/events.js";
|
|
4
|
-
export * from "./internal/health.js";
|
|
5
|
-
export * from "./internal/RequestContextMiddleware.js";
|
|
6
1
|
/**
|
|
7
|
-
*
|
|
8
|
-
* Optionally configure log level using the first argument. The default log level
|
|
9
|
-
* is `Debug`.
|
|
2
|
+
* Mechanism for extendning behaviour of all handlers on the server.
|
|
10
3
|
*
|
|
11
|
-
* @category logging
|
|
12
4
|
* @since 1.0.0
|
|
13
5
|
*/
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
* Note that in order to apply the annotation also for access logging, you should
|
|
20
|
-
* make sure the `accessLog` middleware is plugged after the `uuidLogAnnotation`.
|
|
21
|
-
*
|
|
22
|
-
* @category logging
|
|
23
|
-
* @since 1.0.0
|
|
24
|
-
*/
|
|
25
|
-
export const uuidLogAnnotation = internal.uuidLogAnnotation;
|
|
26
|
-
/**
|
|
27
|
-
* Measure how many times each endpoint was called in a
|
|
28
|
-
* `server.endpoint_calls` counter metrics.
|
|
29
|
-
*
|
|
30
|
-
* @category metrics
|
|
31
|
-
* @since 1.0.0
|
|
32
|
-
*/
|
|
33
|
-
export const endpointCallsMetric = internal.endpointCallsMetric;
|
|
34
|
-
/**
|
|
35
|
-
* Logs out a handler failure.
|
|
36
|
-
*
|
|
37
|
-
* @category logging
|
|
38
|
-
* @since 1.0.0
|
|
39
|
-
*/
|
|
40
|
-
export const errorLog = internal.errorLog;
|
|
41
|
-
/**
|
|
42
|
-
* Basic auth middleware.
|
|
43
|
-
*
|
|
44
|
-
* @category authorization
|
|
45
|
-
* @since 1.0.0
|
|
46
|
-
*/
|
|
47
|
-
export const basicAuth = internal.basicAuth;
|
|
48
|
-
/**
|
|
49
|
-
* Basic auth middleware.
|
|
50
|
-
*
|
|
51
|
-
* @category authorization
|
|
52
|
-
* @since 1.0.0
|
|
53
|
-
*/
|
|
54
|
-
export const cors = internal.cors;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sS0FBSyxRQUFRLE1BQU0sMkJBQTJCLENBQUE7QUFFckQsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx3Q0FBd0MsQ0FBQTtBQUV0RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUVxQyxRQUFRLENBQUMsU0FBUyxDQUFBO0FBRTdFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUU2QixRQUFRLENBQUMsaUJBQWlCLENBQUE7QUFFckY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBRVAsUUFBUSxDQUFDLG1CQUFtQixDQUFBO0FBRXJEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUF3RCxRQUFRLENBQUMsUUFBUSxDQUFBO0FBVzlGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQVE2QyxRQUFRLENBQUMsU0FBUyxDQUFBO0FBZXJGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUUwQyxRQUFRLENBQUMsSUFBSSxDQUFBIn0=
|
|
6
|
+
export * from "./internal/auth.js";
|
|
7
|
+
export * from "./internal/events.js";
|
|
8
|
+
export * from "./internal/health.js";
|
|
9
|
+
export * from "./internal/RequestContextMiddleware.js";
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHdDQUF3QyxDQUFBIn0=
|
package/dist/api/reportError.js
CHANGED
|
@@ -7,7 +7,7 @@ import { logError, reportError } from "../errorReporter.js";
|
|
|
7
7
|
// Effect.onExit(self, (exit) =>
|
|
8
8
|
// Exit.isFailure(exit)
|
|
9
9
|
// ? unknownOnly
|
|
10
|
-
// ? Cause.
|
|
10
|
+
// ? Cause.hasInterruptsOnly(exit.cause) || Cause.isDie(exit.cause)
|
|
11
11
|
// ? report(exit.cause)
|
|
12
12
|
// : log(exit.cause)
|
|
13
13
|
// : report(exit.cause)
|
|
@@ -16,12 +16,12 @@ import { logError, reportError } from "../errorReporter.js";
|
|
|
16
16
|
const tapErrorCause = (name, unknownOnly) => {
|
|
17
17
|
const report = reportError(name);
|
|
18
18
|
const log = logError(name);
|
|
19
|
-
return (self) => Effect.
|
|
20
|
-
? Cause.
|
|
19
|
+
return (self) => Effect.tapCause(self, (cause) => unknownOnly
|
|
20
|
+
? Cause.hasFails(cause)
|
|
21
21
|
? log(cause)
|
|
22
22
|
: report(cause)
|
|
23
23
|
: report(cause));
|
|
24
24
|
};
|
|
25
25
|
export const reportRequestError = tapErrorCause("request");
|
|
26
26
|
export const reportUnknownRequestError = tapErrorCause("request", true);
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0RXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3JlcG9ydEVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFM0QsdUVBQXVFO0FBQ3ZFLHFDQUFxQztBQUNyQywrQkFBK0I7QUFDL0Isc0RBQXNEO0FBQ3RELG9DQUFvQztBQUNwQyw2QkFBNkI7QUFDN0Isd0JBQXdCO0FBQ3hCLDZFQUE2RTtBQUM3RSxtQ0FBbUM7QUFDbkMsZ0NBQWdDO0FBQ2hDLGlDQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsSUFBSTtBQUNKLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFFLFdBQXFCLEVBQUUsRUFBRTtJQUM1RCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzFCLE9BQU8sQ0FBVSxJQUE0QixFQUFFLEVBQUUsQ0FDL0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUM5QixXQUFXO1FBQ1QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ1osQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3hCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUMxRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBIn0=
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type Context, type Effect, type Layer } from "effect-app";
|
|
1
|
+
import { type Layer, type ServiceMap } from "effect-app";
|
|
3
2
|
import { type GetContextConfig, type RpcContextMap } from "effect-app/rpc/RpcContextMap";
|
|
3
|
+
import { type RpcMiddlewareV4 } from "effect-app/rpc/RpcMiddleware";
|
|
4
4
|
export type RouterMiddleware<Self, RequestContextMap extends Record<string, RpcContextMap.Any>, // what services will the middlware provide dynamically to the next, or raise errors.
|
|
5
5
|
MakeMiddlewareE, // what the middleware construction can fail with
|
|
6
6
|
MakeMiddlewareR, // what the middlware requires to be constructed
|
|
7
7
|
ContextProviderA, // what the context provider provides
|
|
8
8
|
ContextProviderE, // what the context provider may fail with
|
|
9
9
|
_ContextProviderR, // what the context provider requires
|
|
10
|
-
RequestContextId> =
|
|
10
|
+
RequestContextId> = ServiceMap.Service<Self, RpcMiddlewareV4<ContextProviderA, ContextProviderE, never>> & {
|
|
11
11
|
readonly Default: Layer.Layer<Self, MakeMiddlewareE, MakeMiddlewareR>;
|
|
12
|
-
readonly requestContext:
|
|
12
|
+
readonly requestContext: ServiceMap.Service<RequestContextId, GetContextConfig<RequestContextMap>>;
|
|
13
13
|
readonly requestContextMap: RequestContextMap;
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=RouterMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/RouterMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"RouterMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/RouterMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACxF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAKnE,MAAM,MAAM,gBAAgB,CAC1B,IAAI,EACJ,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,qFAAqF;AAClJ,eAAe,EAAE,iDAAiD;AAClE,eAAe,EAAE,gDAAgD;AACjE,gBAAgB,EAAE,qCAAqC;AACvD,gBAAgB,EAAE,0CAA0C;AAC5D,iBAAiB,EAAE,qCAAqC;AACxD,gBAAgB,IAEd,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,GACpF;IACA,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAA;IACrE,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAClG,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;CAC9C,CAAA"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Layer } from "effect";
|
|
2
|
-
import { ConfigureInterruptibilityMiddleware,
|
|
3
|
-
export declare const DevModeLive: Layer.Layer<
|
|
4
|
-
export declare const RequestCacheLayers: Layer.Layer<never, never, never>;
|
|
1
|
+
import { Config, Layer } from "effect";
|
|
2
|
+
import { ConfigureInterruptibilityMiddleware, DevModeMiddleware, LoggerMiddleware, RequestCacheMiddleware } from "effect-app/middleware";
|
|
3
|
+
export declare const DevModeLive: Layer.Layer<never, Config.ConfigError, never>;
|
|
5
4
|
export declare const RequestCacheMiddlewareLive: Layer.Layer<RequestCacheMiddleware, never, never>;
|
|
6
5
|
export declare const ConfigureInterruptibilityMiddlewareLive: Layer.Layer<ConfigureInterruptibilityMiddleware, never, never>;
|
|
7
|
-
export declare const LoggerMiddlewareLive: Layer.Layer<LoggerMiddleware,
|
|
8
|
-
export declare const DevModeMiddlewareLive: Layer.Layer<DevModeMiddleware,
|
|
9
|
-
export declare const DefaultGenericMiddlewaresLive: Layer.Layer<RequestCacheMiddleware | ConfigureInterruptibilityMiddleware | LoggerMiddleware | DevModeMiddleware,
|
|
6
|
+
export declare const LoggerMiddlewareLive: Layer.Layer<LoggerMiddleware, Config.ConfigError, never>;
|
|
7
|
+
export declare const DevModeMiddlewareLive: Layer.Layer<DevModeMiddleware, Config.ConfigError, never>;
|
|
8
|
+
export declare const DefaultGenericMiddlewaresLive: Layer.Layer<RequestCacheMiddleware | ConfigureInterruptibilityMiddleware | LoggerMiddleware | DevModeMiddleware, Config.ConfigError, never>;
|
|
10
9
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/middleware.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAAU,KAAK,EAAU,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,mCAAmC,EAAW,iBAAiB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAUjJ,eAAO,MAAM,WAAW,+CAMvB,CAAA;AAED,eAAO,MAAM,0BAA0B,mDAGtC,CAAA;AAKD,eAAO,MAAM,uCAAuC,gEAqBnD,CAAA;AAED,eAAO,MAAM,oBAAoB,0DA2DE,CAAA;AAEnC,eAAO,MAAM,qBAAqB,2DAQC,CAAA;AAEnC,eAAO,MAAM,6BAA6B,6IAKzC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Cause, Config,
|
|
2
|
+
import { Cause, Config, Effect, Layer, Schema } from "effect";
|
|
3
3
|
import { ConfigureInterruptibilityMiddleware, DevMode, DevModeMiddleware, LoggerMiddleware, RequestCacheMiddleware } from "effect-app/middleware";
|
|
4
4
|
import { pretty } from "effect-app/utils";
|
|
5
5
|
import { logError, reportError } from "../../../errorReporter.js";
|
|
@@ -12,10 +12,8 @@ export const DevModeLive = Layer.effect(DevMode, Effect.gen(function* () {
|
|
|
12
12
|
const env = yield* Config.string("env").pipe(Config.withDefault("local-dev"));
|
|
13
13
|
return env !== "prod";
|
|
14
14
|
}));
|
|
15
|
-
export const
|
|
16
|
-
|
|
17
|
-
// retry just once on optimistic concurrency exceptions
|
|
18
|
-
const optimisticConcurrencySchedule = Schedule.once.pipe(Schedule.intersect(Schedule.recurWhile((a) => a?._tag === "OptimisticConcurrencyException")));
|
|
15
|
+
export const RequestCacheMiddlewareLive = Layer.succeed(RequestCacheMiddleware, (effect) => effect);
|
|
16
|
+
const isOptimisticConcurrencyException = (input) => typeof input === "object" && input !== null && "_tag" in input && input._tag === "OptimisticConcurrencyException";
|
|
19
17
|
export const ConfigureInterruptibilityMiddlewareLive = Layer.effect(ConfigureInterruptibilityMiddleware, Effect.gen(function* () {
|
|
20
18
|
const cache = new Map();
|
|
21
19
|
const getCached = (key, schema) => {
|
|
@@ -29,7 +27,7 @@ export const ConfigureInterruptibilityMiddlewareLive = Layer.effect(ConfigureInt
|
|
|
29
27
|
return (effect, { rpc }) => {
|
|
30
28
|
const method = getCached(rpc._tag, rpc.payloadSchema);
|
|
31
29
|
effect = isCommand(method)
|
|
32
|
-
? Effect.retry(Effect.uninterruptible(effect),
|
|
30
|
+
? Effect.retry(Effect.uninterruptible(effect), { times: 1, while: isOptimisticConcurrencyException })
|
|
33
31
|
: Effect.interruptible(effect);
|
|
34
32
|
return effect;
|
|
35
33
|
};
|
|
@@ -59,11 +57,9 @@ export const LoggerMiddlewareLive = Layer
|
|
|
59
57
|
}, {})
|
|
60
58
|
: payload
|
|
61
59
|
})
|
|
62
|
-
.pipe(
|
|
63
|
-
//
|
|
64
|
-
Effect.
|
|
65
|
-
// TODO: support ParseResult if the error channel of the request allows it.. but who would want that?
|
|
66
|
-
Effect.catchAll((_) => ParseResult.isParseError(_) ? Effect.die(_) : Effect.fail(_)), Effect.tapErrorCause((cause) => Cause.isFailure(cause) ? logRequestError(cause) : Effect.void), Effect.tapDefect((cause) => Effect
|
|
60
|
+
.pipe(Effect.andThen(effect),
|
|
61
|
+
// TODO: support SchemaError if the error channel of the request allows it.. but who would want that?
|
|
62
|
+
Effect.catch((_) => Schema.isSchemaError(_) ? Effect.die(_) : Effect.fail(_)), Effect.tapCause((cause) => Cause.hasFails(cause) ? logRequestError(cause) : Effect.void), Effect.tapCauseIf(Cause.hasDies, (cause) => Effect
|
|
67
63
|
.all([
|
|
68
64
|
reportRequestError(cause, {
|
|
69
65
|
action: rpc._tag
|
|
@@ -83,7 +79,7 @@ export const LoggerMiddlewareLive = Layer
|
|
|
83
79
|
// }, {} as Record<string, any>)
|
|
84
80
|
// )
|
|
85
81
|
}))
|
|
86
|
-
])), devMode ? (_) => _ : Effect.
|
|
82
|
+
])), devMode ? (_) => _ : Effect.catchDefect(() => Effect.die("Internal Server Error")));
|
|
87
83
|
}))
|
|
88
84
|
.pipe(Layer.provide(DevModeLive));
|
|
89
85
|
export const DevModeMiddlewareLive = Layer
|
|
@@ -93,4 +89,4 @@ export const DevModeMiddlewareLive = Layer
|
|
|
93
89
|
}))
|
|
94
90
|
.pipe(Layer.provide(DevModeLive));
|
|
95
91
|
export const DefaultGenericMiddlewaresLive = Layer.mergeAll(RequestCacheMiddlewareLive, ConfigureInterruptibilityMiddlewareLive, LoggerMiddlewareLive, DevModeMiddlewareLive);
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9taWRkbGV3YXJlL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqSixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFeEQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRWpELHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDckMsT0FBTyxFQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ2xCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUM3RSxPQUFPLEdBQUcsS0FBSyxNQUFNLENBQUE7QUFDdkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtBQUVELE1B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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as S from "effect-app/Schema";
|
|
2
2
|
import { type JwtDecodeOptions } from "jwt-decode";
|
|
3
|
-
export declare const parseJwt: <
|
|
3
|
+
export declare const parseJwt: <Sch extends S.Top>(schema: Sch, options?: JwtDecodeOptions) => S.decodeTo<Sch, S.String>;
|
|
4
4
|
//# sourceMappingURL=jwt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/schema/jwt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/schema/jwt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7D,eAAO,MAAM,QAAQ,GAAI,GAAG,SAAS,CAAC,CAAC,GAAG,EACxC,QAAQ,GAAG,EACX,UAAU,gBAAgB,KAamB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA"}
|