@effect-app/infra 2.86.0 → 2.87.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/dist/api/layerUtils.d.ts +1 -5
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +3 -11
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +33 -0
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -0
- package/dist/api/routing/middleware/RouterMiddleware.js +5 -0
- package/dist/api/routing/middleware/RpcMiddleware.d.ts +199 -0
- package/dist/api/routing/middleware/RpcMiddleware.d.ts.map +1 -0
- package/dist/api/routing/middleware/RpcMiddleware.js +14 -0
- package/dist/api/routing/middleware/dynamic-middleware.d.ts +2 -12
- package/dist/api/routing/middleware/dynamic-middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/dynamic-middleware.js +2 -18
- package/dist/api/routing/middleware/generic-middleware.d.ts +4 -23
- package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/generic-middleware.js +13 -9
- package/dist/api/routing/middleware/middleware-api.d.ts +43 -7
- package/dist/api/routing/middleware/middleware-api.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware-api.js +47 -22
- package/dist/api/routing/middleware/middleware.d.ts +3 -3
- package/dist/api/routing/middleware/middleware.js +2 -2
- package/dist/api/routing/middleware.d.ts +2 -1
- package/dist/api/routing/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware.js +3 -2
- package/dist/api/routing/tsort.d.ts +2 -2
- package/dist/api/routing/tsort.d.ts.map +1 -1
- package/dist/api/routing/tsort.js +1 -1
- package/package.json +9 -5
- package/src/api/layerUtils.ts +4 -18
- package/src/api/routing/middleware/RouterMiddleware.ts +149 -0
- package/src/api/routing/middleware/RpcMiddleware.ts +287 -0
- package/src/api/routing/middleware/dynamic-middleware.ts +5 -52
- package/src/api/routing/middleware/generic-middleware.ts +23 -34
- package/src/api/routing/middleware/middleware-api.ts +142 -59
- package/src/api/routing/middleware/middleware.ts +1 -1
- package/src/api/routing/middleware.ts +2 -1
- package/src/api/routing/tsort.ts +2 -2
- package/test/controller.test.ts +22 -58
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/fixtures.d.ts +4 -2
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +21 -9
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/fixtures.ts +29 -12
- package/test/requires.test.ts +98 -17
- package/dist/api/routing/middleware/DynamicMiddleware.d.ts +0 -229
- package/dist/api/routing/middleware/DynamicMiddleware.d.ts.map +0 -1
- package/dist/api/routing/middleware/DynamicMiddleware.js +0 -168
- package/src/api/routing/middleware/DynamicMiddleware.ts +0 -715
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { type NonEmptyArray } from "effect-app";
|
|
1
|
+
import { Context, Layer, type NonEmptyArray, type NonEmptyReadonlyArray } from "effect-app";
|
|
2
2
|
import { type RPCContextMap } from "effect-app/client";
|
|
3
|
-
import { type
|
|
4
|
-
|
|
3
|
+
import { type Simplify } from "effect-app/Types";
|
|
4
|
+
import { type LayerUtils } from "../../layerUtils.js";
|
|
5
|
+
import { type GenericMiddlewareMaker } from "./generic-middleware.js";
|
|
6
|
+
import { type MiddlewareMakerId, type RPCHandlerFactory } from "./RouterMiddleware.js";
|
|
7
|
+
import { type AnyDynamic, type RpcDynamic, type TagClassAny } from "./RpcMiddleware.js";
|
|
8
|
+
export declare const contextMap: <RequestContextMap extends Record<string, RPCContextMap.Any>>() => <K extends keyof RequestContextMap>(a: K, service: RequestContextMap[K]["service"]) => {
|
|
5
9
|
key: K;
|
|
6
10
|
settings: RequestContextMap[typeof a];
|
|
7
11
|
};
|
|
@@ -11,16 +15,48 @@ export interface MiddlewareM<RequestContext extends Record<string, RPCContextMap
|
|
|
11
15
|
...MW
|
|
12
16
|
], DynamicMiddlewareProviders, GenericMiddlewareMaker.ApplyManyServices<MW, MiddlewareR>>;
|
|
13
17
|
}
|
|
18
|
+
type GetDependsOnKeys<MW extends GenericMiddlewareMaker> = MW extends {
|
|
19
|
+
dependsOn: NonEmptyReadonlyArray<TagClassAny>;
|
|
20
|
+
} ? {
|
|
21
|
+
[K in keyof MW["dependsOn"]]: MW["dependsOn"][K] extends AnyDynamic ? MW["dependsOn"][K]["dynamic"]["key"] : never;
|
|
22
|
+
}[keyof MW["dependsOn"]] : never;
|
|
14
23
|
export interface MiddlewareDynamic<RequestContext extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContext, Middlewares extends ReadonlyArray<GenericMiddlewareMaker>, DynamicMiddlewareProviders, out MiddlewareR> {
|
|
15
|
-
middleware<MW extends NonEmptyArray<
|
|
24
|
+
middleware<MW extends NonEmptyArray<GenericMiddlewareMaker>>(...mw: MW): MW extends NonEmptyArray<{
|
|
25
|
+
dynamic: RpcDynamic<any, RequestContext[keyof RequestContext]>;
|
|
26
|
+
}> ? DynamicMiddlewareMakerrsss<RequestContext, Exclude<Provided | MW[number]["dynamic"]["key"], {
|
|
27
|
+
[K in keyof MW]: GetDependsOnKeys<MW[K]>;
|
|
28
|
+
}[number]>, [
|
|
29
|
+
...Middlewares,
|
|
30
|
+
...MW
|
|
31
|
+
], DynamicMiddlewareProviders & {
|
|
16
32
|
[U in MW[number] as U["dynamic"]["key"]]: U;
|
|
17
33
|
}, GenericMiddlewareMaker.ApplyManyServices<MW, MiddlewareR>> : DynamicMiddlewareMakerrsss<RequestContext, Provided, [
|
|
18
34
|
...Middlewares,
|
|
19
35
|
...MW
|
|
20
36
|
], DynamicMiddlewareProviders, GenericMiddlewareMaker.ApplyManyServices<MW, MiddlewareR>>;
|
|
21
37
|
}
|
|
22
|
-
type
|
|
23
|
-
|
|
24
|
-
|
|
38
|
+
type DynamicMiddlewareMakerrsss<RequestContext extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContext = never, Middlewares extends ReadonlyArray<GenericMiddlewareMaker> = [], DynamicMiddlewareProviders = unknown, MiddlewareR = never> = keyof Omit<RequestContext, Provided> extends never ? [MiddlewareR] extends [never] ? {
|
|
39
|
+
MiddlewareR: MiddlewareR;
|
|
40
|
+
Provided: Provided;
|
|
41
|
+
Middlewares: Middlewares;
|
|
42
|
+
DynamicMiddlewareProviders: Simplify<DynamicMiddlewareProviders>;
|
|
43
|
+
} & ReturnType<typeof makeMiddlewareBasic<RequestContext, Middlewares>> & MiddlewareM<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> : {
|
|
44
|
+
MiddlewareR: MiddlewareR;
|
|
45
|
+
Provided: Provided;
|
|
46
|
+
Middlewares: Middlewares;
|
|
47
|
+
DynamicMiddlewareProviders: Simplify<DynamicMiddlewareProviders>;
|
|
48
|
+
} & MiddlewareM<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> : {
|
|
49
|
+
MiddlewareR: MiddlewareR;
|
|
50
|
+
Provided: Provided;
|
|
51
|
+
Middlewares: Middlewares;
|
|
52
|
+
DynamicMiddlewareProviders: Simplify<DynamicMiddlewareProviders>;
|
|
53
|
+
} & MiddlewareDynamic<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR>;
|
|
54
|
+
export declare const makeMiddleware: <RequestContextMap extends Record<string, RPCContextMap.Any>>() => DynamicMiddlewareMakerrsss<RequestContextMap>;
|
|
55
|
+
export declare const makeMiddlewareBasic: <RequestContextMap extends Record<string, RPCContextMap.Any>, GenericMiddlewareProviders extends ReadonlyArray<GenericMiddlewareMaker>>(...make: GenericMiddlewareProviders) => Context.Tag<MiddlewareMakerId, {
|
|
56
|
+
effect: RPCHandlerFactory<RequestContextMap, GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]>>;
|
|
57
|
+
_tag: "MiddlewareMaker";
|
|
58
|
+
}> & {
|
|
59
|
+
Default: Layer.Layer<MiddlewareMakerId, LayerUtils.GetLayersError<[...{ [K in keyof GenericMiddlewareProviders]: GenericMiddlewareProviders[K]["Default"]; }]>, LayerUtils.GetLayersContext<[...{ [K in keyof GenericMiddlewareProviders]: GenericMiddlewareProviders[K]["Default"]; }]>>;
|
|
60
|
+
};
|
|
25
61
|
export {};
|
|
26
62
|
//# sourceMappingURL=middleware-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-api.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/middleware-api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware-api.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/middleware-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,58 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Rpc } from "@effect/rpc";
|
|
2
|
+
import { Context, Effect, Layer } from "effect-app";
|
|
3
|
+
import { genericMiddlewareMaker } from "./generic-middleware.js";
|
|
4
|
+
import { makeRpcEffect } from "./RouterMiddleware.js";
|
|
5
|
+
// TODO: don't expect service when it's wrap/never
|
|
6
|
+
// perhaps RequestContextMap should be an object, instead of an interface, so that we don't need to provide anything here
|
|
7
|
+
export const contextMap = () => (a, service) => ({
|
|
6
8
|
key: a,
|
|
7
|
-
settings:
|
|
9
|
+
settings: { service }
|
|
8
10
|
});
|
|
9
|
-
export const
|
|
10
|
-
|
|
11
|
-
let capturedMiddlewares = [];
|
|
11
|
+
export const makeMiddleware = () => {
|
|
12
|
+
let allMiddleware = [];
|
|
12
13
|
const it = {
|
|
13
14
|
middleware: (...middlewares) => {
|
|
14
15
|
for (const mw of middlewares) {
|
|
15
|
-
|
|
16
|
-
if (mw.dynamic) {
|
|
17
|
-
console.log("Adding dynamic middleware", mw.key, mw.dynamic.key);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
console.log("Adding generic middleware", mw.key);
|
|
21
|
-
}
|
|
16
|
+
allMiddleware = [mw, ...allMiddleware];
|
|
22
17
|
}
|
|
23
|
-
const [genericMiddlewares, dyn] = Array.partitionMap(capturedMiddlewares, (mw) => "dynamic" in mw && mw.dynamic
|
|
24
|
-
? Either.right(mw)
|
|
25
|
-
: Either.left(mw));
|
|
26
|
-
const dynamicMiddlewares = dyn.reduce((prev, cur) => ({ ...prev, [cur.dynamic.key]: cur }), {});
|
|
27
18
|
// TODO: support dynamic and generic intertwined. treat them as one
|
|
28
|
-
return Object.assign(
|
|
19
|
+
return Object.assign(makeMiddlewareBasic(...allMiddleware), it);
|
|
29
20
|
}
|
|
30
21
|
};
|
|
31
22
|
return it;
|
|
32
23
|
};
|
|
33
|
-
|
|
24
|
+
export const makeMiddlewareBasic =
|
|
25
|
+
// by setting RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
26
|
+
(...make) => {
|
|
27
|
+
const MiddlewareMaker = Context.GenericTag("MiddlewareMaker");
|
|
28
|
+
const middlewares = genericMiddlewareMaker(...make);
|
|
29
|
+
const l = Layer.scoped(MiddlewareMaker, middlewares
|
|
30
|
+
.effect
|
|
31
|
+
.pipe(Effect.map((generic) => ({
|
|
32
|
+
_tag: "MiddlewareMaker",
|
|
33
|
+
effect: makeRpcEffect()((schema, next, moduleName) => {
|
|
34
|
+
return (payload, headers) => Effect
|
|
35
|
+
.gen(function* () {
|
|
36
|
+
const basic = {
|
|
37
|
+
config: schema.config ?? {},
|
|
38
|
+
payload,
|
|
39
|
+
headers,
|
|
40
|
+
clientId: 0, // TODO: get the clientId from the request context
|
|
41
|
+
rpc: {
|
|
42
|
+
...Rpc.fromTaggedRequest(schema),
|
|
43
|
+
key: `${moduleName}.${payload._tag}`,
|
|
44
|
+
_tag: `${moduleName}.${payload._tag}`
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
return yield* generic({
|
|
48
|
+
...basic,
|
|
49
|
+
next: next(payload, headers)
|
|
50
|
+
});
|
|
51
|
+
}); // why?
|
|
52
|
+
})
|
|
53
|
+
}))));
|
|
54
|
+
const middlewareLayer = l
|
|
55
|
+
.pipe(Layer.provide(middlewares.dependencies));
|
|
56
|
+
return Object.assign(MiddlewareMaker, { Default: middlewareLayer });
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWlkZGxld2FyZS9taWRkbGV3YXJlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBa0QsTUFBTSxZQUFZLENBQUE7QUFJbkcsT0FBTyxFQUErQixzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQWtELE1BQU0sdUJBQXVCLENBQUE7QUFHckcsa0RBQWtEO0FBQ2xELHlIQUF5SDtBQUN6SCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQ3JCLEdBQWdFLEVBQUUsQ0FDbEUsQ0FBb0MsQ0FBSSxFQUFFLE9BQXdDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEYsR0FBRyxFQUFFLENBQUM7SUFDTixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQXdDO0NBQzVELENBQUMsQ0FBQTtBQW9ISixNQUFNLENBQUMsTUFBTSxjQUFjLEdBRTRCLEdBQUcsRUFBRTtJQUMxRCxJQUFJLGFBQWEsR0FBNkIsRUFBRSxDQUFBO0lBQ2hELE1BQU0sRUFBRSxHQUFHO1FBQ1QsVUFBVSxFQUFFLENBQUMsR0FBRyxXQUFrQixFQUFFLEVBQUU7WUFDcEMsS0FBSyxNQUFNLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDN0IsYUFBYSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUE7WUFDeEMsQ0FBQztZQUNELG1FQUFtRTtZQUNuRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQVcsR0FBRyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUMzRSxDQUFDO0tBQ0YsQ0FBQTtJQUNELE9BQU8sRUFBUyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQjtBQUM5QixxR0FBcUc7QUFDckcsQ0FLRSxHQUFHLElBQWdDLEVBQ25DLEVBQUU7SUFDRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQVV4QyxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUVELE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7SUFFbkQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDcEIsZUFBZSxFQUNmLFdBQVc7U0FDUixNQUFNO1NBQ04sSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxFQUFFLGlCQUEwQjtRQUNoQyxNQUFNLEVBQUUsYUFBYSxFQUdsQixDQUNELENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRTtZQUMzQixPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQzFCLE1BQU07aUJBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDWixNQUFNLEtBQUssR0FBRztvQkFDWixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFO29CQUMzQixPQUFPO29CQUNQLE9BQU87b0JBQ1AsUUFBUSxFQUFFLENBQUMsRUFBRSxrREFBa0Q7b0JBQy9ELEdBQUcsRUFBRTt3QkFDSCxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFhLENBQUM7d0JBQ3ZDLEdBQUcsRUFBRSxHQUFHLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO3dCQUNwQyxJQUFJLEVBQUUsR0FBRyxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtxQkFDdEM7aUJBQ0YsQ0FBQTtnQkFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFDcEIsR0FBRyxLQUFLO29CQUNSLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBUTtpQkFDcEMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFRLENBQUEsQ0FBQyxPQUFPO1FBQ3ZCLENBQUMsQ0FDRjtLQUNGLENBQUMsQ0FBQyxDQUNKLENBQ0osQ0FBQTtJQUVELE1BQU0sZUFBZSxHQUFHLENBQUM7U0FDdEIsSUFBSSxDQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQW1CLENBQUMsQ0FLL0MsQ0FBQTtJQUVILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQTtBQUNyRSxDQUFDLENBQUEifQ==
|
|
@@ -3,21 +3,21 @@ export declare const RequestCacheLayers: Layer.Layer<never, never, never>;
|
|
|
3
3
|
declare const DevMode_base: Context.ReferenceClass<DevMode, "DevMode", boolean>;
|
|
4
4
|
export declare class DevMode extends DevMode_base {
|
|
5
5
|
}
|
|
6
|
-
declare const RequestCacheMiddleware_base: import("./
|
|
6
|
+
declare const RequestCacheMiddleware_base: import("./RpcMiddleware.js").TagClass<RequestCacheMiddleware, "RequestCacheMiddleware", {
|
|
7
7
|
readonly wrap: true;
|
|
8
8
|
}> & {
|
|
9
9
|
Default: Layer.Layer<RequestCacheMiddleware, never, never>;
|
|
10
10
|
};
|
|
11
11
|
export declare class RequestCacheMiddleware extends RequestCacheMiddleware_base {
|
|
12
12
|
}
|
|
13
|
-
declare const ConfigureInterruptibility_base: import("./
|
|
13
|
+
declare const ConfigureInterruptibility_base: import("./RpcMiddleware.js").TagClass<ConfigureInterruptibility, "ConfigureInterruptibility", {
|
|
14
14
|
readonly wrap: true;
|
|
15
15
|
}> & {
|
|
16
16
|
Default: Layer.Layer<ConfigureInterruptibility, never, never>;
|
|
17
17
|
};
|
|
18
18
|
export declare class ConfigureInterruptibility extends ConfigureInterruptibility_base {
|
|
19
19
|
}
|
|
20
|
-
declare const MiddlewareLogger_base: import("./
|
|
20
|
+
declare const MiddlewareLogger_base: import("./RpcMiddleware.js").TagClass<MiddlewareLogger, "MiddlewareLogger", {
|
|
21
21
|
readonly wrap: true;
|
|
22
22
|
}> & {
|
|
23
23
|
Default: Layer.Layer<MiddlewareLogger, never, never>;
|
|
@@ -3,7 +3,7 @@ import { Cause, Context, Duration, Effect, Layer, ParseResult, Request } from "e
|
|
|
3
3
|
import { pretty } from "effect-app/utils";
|
|
4
4
|
import { logError, reportError } from "../../../errorReporter.js";
|
|
5
5
|
import { InfraLogger } from "../../../logger.js";
|
|
6
|
-
import { Tag } from "
|
|
6
|
+
import { Tag } from "./RpcMiddleware.js";
|
|
7
7
|
const logRequestError = logError("Request");
|
|
8
8
|
const reportRequestError = reportError("Request");
|
|
9
9
|
export const RequestCacheLayers = Layer.mergeAll(Layer.setRequestCache(Request.makeCache({ capacity: 500, timeToLive: Duration.hours(8) })), Layer.setRequestCaching(true), Layer.setRequestBatching(true));
|
|
@@ -77,4 +77,4 @@ export const DefaultGenericMiddlewares = [
|
|
|
77
77
|
ConfigureInterruptibility,
|
|
78
78
|
MiddlewareLogger
|
|
79
79
|
];
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9taWRkbGV3YXJlL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV4QyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDM0MsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFakQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FDOUMsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNwRSxFQUNELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFDN0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUMvQixDQUFBO0FBRUQsTUFBTSxPQUFPLE9BQVEsU0FBUSxPQUFPLENBQUMsU0FBUyxFQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0NB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
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from "./middleware/ContextProvider.js";
|
|
2
2
|
export * from "./middleware/dynamic-middleware.js";
|
|
3
|
-
export * from "./middleware/DynamicMiddleware.js";
|
|
4
3
|
export * from "./middleware/generic-middleware.js";
|
|
5
4
|
export * from "./middleware/middleware-api.js";
|
|
6
5
|
export * from "./middleware/middleware.js";
|
|
6
|
+
export * from "./middleware/RouterMiddleware.js";
|
|
7
|
+
export * from "./middleware/RpcMiddleware.js";
|
|
7
8
|
export * as Middleware from "./middleware.js";
|
|
8
9
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing/middleware.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oCAAoC,CAAA;AAClD,cAAc,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing/middleware.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oCAAoC,CAAA;AAClD,cAAc,oCAAoC,CAAA;AAClD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAG7C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// codegen:start {preset: barrel, include: ./middleware/*.ts, nodir: false }
|
|
2
2
|
export * from "./middleware/ContextProvider.js";
|
|
3
3
|
export * from "./middleware/dynamic-middleware.js";
|
|
4
|
-
export * from "./middleware/DynamicMiddleware.js";
|
|
5
4
|
export * from "./middleware/generic-middleware.js";
|
|
6
5
|
export * from "./middleware/middleware-api.js";
|
|
7
6
|
export * from "./middleware/middleware.js";
|
|
7
|
+
export * from "./middleware/RouterMiddleware.js";
|
|
8
|
+
export * from "./middleware/RpcMiddleware.js";
|
|
8
9
|
// codegen:end
|
|
9
10
|
export * as Middleware from "./middleware.js";
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQTtBQUNsRCxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWM7QUFFZCxPQUFPLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFBIn0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare function tsort(edges: any): any[];
|
|
2
2
|
export declare const createEdges: <T extends {
|
|
3
|
-
dependsOn?: any[];
|
|
3
|
+
dependsOn?: readonly any[];
|
|
4
4
|
}>(dep: readonly T[]) => any[];
|
|
5
5
|
export declare const sort: <T>(dep: readonly (T & {
|
|
6
|
-
dependsOn?: any[];
|
|
6
|
+
dependsOn?: readonly any[];
|
|
7
7
|
})[]) => readonly T[];
|
|
8
8
|
//# sourceMappingURL=tsort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsort.d.ts","sourceRoot":"","sources":["../../../src/api/routing/tsort.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,KAAK,KAAA,SAqC1B;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,KAAK,SAAS,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"tsort.d.ts","sourceRoot":"","sources":["../../../src/api/routing/tsort.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,KAAK,KAAA,SAqC1B;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,EAAE,KAAK,SAAS,CAAC,EAAE,UAQtF,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,CAAC,EAAE,KAAG,SAAS,CAAC,EAIxF,CAAA"}
|
|
@@ -48,4 +48,4 @@ export const sort = (dep) => {
|
|
|
48
48
|
const result = tsort(edges);
|
|
49
49
|
return result.concat(dep.filter((v) => !result.includes(v)));
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvdHNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELGNBQWM7QUFDZCxNQUFNLFVBQVUsS0FBSyxDQUFDLEtBQUs7SUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRXpELE1BQU0sSUFBSSxHQUFHLFVBQVMsRUFBRTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLENBQUMsQ0FBQTtJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNsQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDL0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2pDLENBQUMsQ0FBQyxDQUNEO0lBQUEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUztRQUN4RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO1FBRTNDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFNO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUFFLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFFN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFTLE9BQU87WUFDbEMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDL0QsQ0FBQztZQUNELEtBQUssQ0FDSCxPQUFPLEVBQ1AsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFTLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxDQUFBO1lBQ1YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNwQixDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUEyQyxHQUFpQixFQUFFLEVBQUU7SUFDekYsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNsQixHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBSSxHQUFvRCxFQUFnQixFQUFFO0lBQzVGLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDOUQsQ0FBQyxDQUFBIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.87.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "7.0.1",
|
|
15
15
|
"query-string": "^9.2.2",
|
|
16
|
-
"effect-app": "2.
|
|
16
|
+
"effect-app": "2.52.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.5.0",
|
|
@@ -306,9 +306,13 @@
|
|
|
306
306
|
"types": "./dist/api/routing/middleware/ContextProvider.d.ts",
|
|
307
307
|
"default": "./dist/api/routing/middleware/ContextProvider.js"
|
|
308
308
|
},
|
|
309
|
-
"./api/routing/middleware/
|
|
310
|
-
"types": "./dist/api/routing/middleware/
|
|
311
|
-
"default": "./dist/api/routing/middleware/
|
|
309
|
+
"./api/routing/middleware/RouterMiddleware": {
|
|
310
|
+
"types": "./dist/api/routing/middleware/RouterMiddleware.d.ts",
|
|
311
|
+
"default": "./dist/api/routing/middleware/RouterMiddleware.js"
|
|
312
|
+
},
|
|
313
|
+
"./api/routing/middleware/RpcMiddleware": {
|
|
314
|
+
"types": "./dist/api/routing/middleware/RpcMiddleware.d.ts",
|
|
315
|
+
"default": "./dist/api/routing/middleware/RpcMiddleware.js"
|
|
312
316
|
},
|
|
313
317
|
"./api/routing/middleware/dynamic-middleware": {
|
|
314
318
|
"types": "./dist/api/routing/middleware/dynamic-middleware.d.ts",
|
package/src/api/layerUtils.ts
CHANGED
|
@@ -35,25 +35,11 @@ export namespace ContextTagWithDefault {
|
|
|
35
35
|
export type GetContext<T> = T extends Context.Context<infer Y> ? Y : never
|
|
36
36
|
|
|
37
37
|
export const mergeContexts = Effect.fnUntraced(
|
|
38
|
-
function*<T extends readonly { maker: any; handle: Effect<Context<any
|
|
38
|
+
function*<T extends readonly { maker: any; handle: Effect<Context<any> | Option<Context<any>>> }[]>(makers: T) {
|
|
39
39
|
let context = Context.empty()
|
|
40
40
|
for (const mw of makers) {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
"Built dynamic context for middleware" + (mw.maker.key ?? mw.maker),
|
|
44
|
-
(moreContext as any).toJSON().services
|
|
45
|
-
)
|
|
46
|
-
context = Context.merge(context, moreContext)
|
|
47
|
-
}
|
|
48
|
-
return context as Context.Context<Effect.Success<T[number]["handle"]>>
|
|
49
|
-
}
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
export const mergeOptionContexts = Effect.fnUntraced(
|
|
53
|
-
function*<T extends readonly { maker: any; handle: Effect<Option<Context<any>>> }[]>(makers: T) {
|
|
54
|
-
let context = Context.empty()
|
|
55
|
-
for (const mw of makers) {
|
|
56
|
-
const moreContext = yield* mw.handle.pipe(Effect.provide(context))
|
|
41
|
+
const ctx = yield* mw.handle.pipe(Effect.provide(context))
|
|
42
|
+
const moreContext = Context.isContext(ctx) ? Option.some(ctx) : ctx
|
|
57
43
|
yield* InfraLogger.logDebug(
|
|
58
44
|
"Built dynamic context for middleware" + (mw.maker.key ?? mw.maker),
|
|
59
45
|
Option.map(moreContext, (c) => (c as any).toJSON().services)
|
|
@@ -62,6 +48,6 @@ export const mergeOptionContexts = Effect.fnUntraced(
|
|
|
62
48
|
context = Context.merge(context, moreContext.value)
|
|
63
49
|
}
|
|
64
50
|
}
|
|
65
|
-
return context
|
|
51
|
+
return context as Context.Context<Effect.Success<T[number]["handle"]>>
|
|
66
52
|
}
|
|
67
53
|
)
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
import { type Effect, type Request, type S, type Scope } from "effect-app"
|
|
5
|
+
import type { GetEffectContext, RPCContextMap } from "effect-app/client/req"
|
|
6
|
+
import type * as EffectRequest from "effect/Request"
|
|
7
|
+
import { type ContextTagWithDefault } from "../../layerUtils.js"
|
|
8
|
+
import { type ContextWithLayer } from "./dynamic-middleware.js"
|
|
9
|
+
|
|
10
|
+
// module:
|
|
11
|
+
//
|
|
12
|
+
export type MakeRPCHandlerFactory<
|
|
13
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
14
|
+
MiddlewareR
|
|
15
|
+
> = <
|
|
16
|
+
T extends {
|
|
17
|
+
config?: Partial<Record<keyof RequestContextMap, any>>
|
|
18
|
+
},
|
|
19
|
+
Req extends S.TaggedRequest.All,
|
|
20
|
+
HandlerR
|
|
21
|
+
>(
|
|
22
|
+
schema: T & S.Schema<Req, any, never>,
|
|
23
|
+
next: (
|
|
24
|
+
request: Req,
|
|
25
|
+
headers: any
|
|
26
|
+
) => Effect.Effect<
|
|
27
|
+
EffectRequest.Request.Success<Req>,
|
|
28
|
+
EffectRequest.Request.Error<Req>,
|
|
29
|
+
// dynamic middlewares removes the dynamic context from HandlerR
|
|
30
|
+
Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>
|
|
31
|
+
>,
|
|
32
|
+
moduleName: string
|
|
33
|
+
) => (
|
|
34
|
+
req: Req,
|
|
35
|
+
headers: any
|
|
36
|
+
) => Effect.Effect<
|
|
37
|
+
Request.Request.Success<Req>,
|
|
38
|
+
Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
|
|
39
|
+
// the middleware will remove from HandlerR the dynamic context, but will also add some requirements
|
|
40
|
+
| MiddlewareR
|
|
41
|
+
// & S.Schema<Req, any, never> is useless here but useful when creating the middleware
|
|
42
|
+
| Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>
|
|
43
|
+
>
|
|
44
|
+
|
|
45
|
+
export type RPCHandlerFactory<
|
|
46
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
47
|
+
ContextProviderA
|
|
48
|
+
> = <
|
|
49
|
+
T extends {
|
|
50
|
+
config?: Partial<Record<keyof RequestContextMap, any>>
|
|
51
|
+
},
|
|
52
|
+
Req extends S.TaggedRequest.All,
|
|
53
|
+
HandlerR
|
|
54
|
+
>(
|
|
55
|
+
schema: T & S.Schema<Req, any, never>,
|
|
56
|
+
next: (
|
|
57
|
+
request: Req,
|
|
58
|
+
headers: any
|
|
59
|
+
) => Effect.Effect<
|
|
60
|
+
EffectRequest.Request.Success<Req>,
|
|
61
|
+
EffectRequest.Request.Error<Req>,
|
|
62
|
+
HandlerR
|
|
63
|
+
>,
|
|
64
|
+
moduleName: string
|
|
65
|
+
) => (
|
|
66
|
+
req: Req,
|
|
67
|
+
headers: any
|
|
68
|
+
) => Effect.Effect<
|
|
69
|
+
Request.Request.Success<Req>,
|
|
70
|
+
Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
|
|
71
|
+
| Scope.Scope // because of the context provider and the middleware (Middleware)
|
|
72
|
+
| Exclude<
|
|
73
|
+
// the middleware will remove from HandlerR the dynamic context
|
|
74
|
+
// & S.Schema<Req, any, never> is useless here but useful when creating the middleware
|
|
75
|
+
Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
|
|
76
|
+
// the context provider provides additional stuff both to the middleware and the next
|
|
77
|
+
ContextProviderA
|
|
78
|
+
>
|
|
79
|
+
>
|
|
80
|
+
|
|
81
|
+
export type RequestContextMapProvider<RequestContextMap extends Record<string, RPCContextMap.Any>> = {
|
|
82
|
+
[K in keyof RequestContextMap]: ContextWithLayer.Base<
|
|
83
|
+
{ [K in keyof RequestContextMap]?: RequestContextMap[K]["contextActivation"] },
|
|
84
|
+
RequestContextMap[K]["service"],
|
|
85
|
+
S.Schema.Type<RequestContextMap[K]["error"]>
|
|
86
|
+
>
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface MiddlewareMakerId {
|
|
90
|
+
_tag: "MiddlewareMaker"
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export type RouterMiddleware<
|
|
94
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the next, or raise errors.
|
|
95
|
+
MakeMiddlewareE, // what the middleware construction can fail with
|
|
96
|
+
MakeMiddlewareR, // what the middlware requires to be constructed
|
|
97
|
+
ContextProviderA // what the context provider provides
|
|
98
|
+
> = ContextTagWithDefault<
|
|
99
|
+
MiddlewareMakerId,
|
|
100
|
+
{
|
|
101
|
+
_tag: "MiddlewareMaker"
|
|
102
|
+
effect: RPCHandlerFactory<RequestContextMap, ContextProviderA>
|
|
103
|
+
},
|
|
104
|
+
MakeMiddlewareE,
|
|
105
|
+
MakeMiddlewareR
|
|
106
|
+
>
|
|
107
|
+
|
|
108
|
+
export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<
|
|
109
|
+
RequestContextMap[keyof RequestContextMap]["error"]
|
|
110
|
+
>
|
|
111
|
+
|
|
112
|
+
// it just provides the right types without cluttering the implementation with them
|
|
113
|
+
export function makeRpcEffect<
|
|
114
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
115
|
+
ContextProviderA
|
|
116
|
+
>() {
|
|
117
|
+
return (
|
|
118
|
+
cb: <
|
|
119
|
+
T extends {
|
|
120
|
+
config?: Partial<Record<keyof RequestContextMap, any>>
|
|
121
|
+
},
|
|
122
|
+
Req extends S.TaggedRequest.All,
|
|
123
|
+
HandlerR
|
|
124
|
+
>(
|
|
125
|
+
schema: T & S.Schema<Req, any, never>,
|
|
126
|
+
next: (
|
|
127
|
+
request: Req,
|
|
128
|
+
headers: any
|
|
129
|
+
) => Effect.Effect<
|
|
130
|
+
EffectRequest.Request.Success<Req>,
|
|
131
|
+
EffectRequest.Request.Error<Req>,
|
|
132
|
+
HandlerR
|
|
133
|
+
>,
|
|
134
|
+
moduleName: string
|
|
135
|
+
) => (
|
|
136
|
+
req: Req,
|
|
137
|
+
headers: any
|
|
138
|
+
) => Effect.Effect<
|
|
139
|
+
Request.Request.Success<Req>,
|
|
140
|
+
Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
|
|
141
|
+
| Scope.Scope // the context provider may require Scope to run
|
|
142
|
+
| Exclude<
|
|
143
|
+
// it can also be removed from HandlerR
|
|
144
|
+
Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
|
|
145
|
+
ContextProviderA
|
|
146
|
+
>
|
|
147
|
+
>
|
|
148
|
+
) => cb
|
|
149
|
+
}
|