@effect-app/infra 2.71.0 → 2.73.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 +18 -0
- package/dist/api/routing/DynamicMiddleware.d.ts +65 -20
- package/dist/api/routing/DynamicMiddleware.d.ts.map +1 -1
- package/dist/api/routing/DynamicMiddleware.js +56 -30
- package/dist/api/routing.d.ts +13 -32
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +4 -19
- package/package.json +1 -1
- package/src/api/routing/DynamicMiddleware.ts +252 -115
- package/src/api/routing.ts +29 -106
- package/test/controller.test.ts +24 -5
- package/test/dist/controller.test.d.ts.map +1 -1
package/dist/api/routing.js
CHANGED
|
@@ -6,10 +6,9 @@ import { determineMethod, isCommand } from "@effect-app/infra/api/routing/utils"
|
|
|
6
6
|
import { logError, reportError } from "@effect-app/infra/errorReporter";
|
|
7
7
|
import { InfraLogger } from "@effect-app/infra/logger";
|
|
8
8
|
import { Rpc, RpcGroup, RpcServer } from "@effect/rpc";
|
|
9
|
-
import { Array, Cause,
|
|
9
|
+
import { Array, Cause, Duration, Effect, Layer, ParseResult, Predicate, Request, S, Schedule, Schema } from "effect-app";
|
|
10
10
|
import { HttpRouter } from "effect-app/http";
|
|
11
11
|
import { pretty, typedKeysOf, typedValuesOf } from "effect-app/utils";
|
|
12
|
-
import { makeMiddlewareLayer, makeRpc } from "./routing/DynamicMiddleware.js";
|
|
13
12
|
export * from "./routing/DynamicMiddleware.js";
|
|
14
13
|
const logRequestError = logError("Request");
|
|
15
14
|
const reportRequestError = reportError("Request");
|
|
@@ -27,7 +26,6 @@ export const RouterSymbol = Symbol();
|
|
|
27
26
|
export class Router extends HttpRouter.Tag("@effect-app/Rpc")() {
|
|
28
27
|
}
|
|
29
28
|
export const makeRouter = (middleware, devMode) => {
|
|
30
|
-
const middlewareLayer = makeMiddlewareLayer(middleware);
|
|
31
29
|
function matchFor(rsc) {
|
|
32
30
|
const { meta } = rsc;
|
|
33
31
|
const requestModules = typedKeysOf(rsc).reduce((acc, cur) => {
|
|
@@ -106,7 +104,7 @@ export const makeRouter = (middleware, devMode) => {
|
|
|
106
104
|
? Effect.fnUntraced(make)(router3)
|
|
107
105
|
: make;
|
|
108
106
|
const controllers = yield* make;
|
|
109
|
-
const rpc = yield*
|
|
107
|
+
const rpc = yield* middleware;
|
|
110
108
|
// return make.pipe(Effect.map((c) => controllers(c, dependencies)))
|
|
111
109
|
const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
|
|
112
110
|
const handler = controllers[cur];
|
|
@@ -201,8 +199,7 @@ export const makeRouter = (middleware, devMode) => {
|
|
|
201
199
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
202
200
|
const routes = (layer.pipe(Layer.provide([
|
|
203
201
|
...dependencies ?? [],
|
|
204
|
-
middleware.
|
|
205
|
-
middlewareLayer
|
|
202
|
+
middleware.Default
|
|
206
203
|
])));
|
|
207
204
|
// Effect.Effect<HttpRouter.HttpRouter<unknown, HttpRouter.HttpRouter.DefaultServices>, never, UserRouter>
|
|
208
205
|
return {
|
|
@@ -224,16 +221,4 @@ export const makeRouter = (middleware, devMode) => {
|
|
|
224
221
|
};
|
|
225
222
|
};
|
|
226
223
|
export const RequestCacheLayers = Layer.mergeAll(Layer.setRequestCache(Request.makeCache({ capacity: 500, timeToLive: Duration.hours(8) })), Layer.setRequestCaching(true), Layer.setRequestBatching(true));
|
|
227
|
-
export const contextMaker = (...deps) => ({
|
|
228
|
-
dependencies: deps.map((_) => _.Default),
|
|
229
|
-
effect: Effect.gen(function* () {
|
|
230
|
-
const services = yield* Effect.all(deps);
|
|
231
|
-
// services are effects which return some Context.Context<...>
|
|
232
|
-
return Effect.all(services).pipe(Effect.map((_) => Context.mergeAll(..._)));
|
|
233
|
-
})
|
|
234
|
-
});
|
|
235
|
-
export class EmptyContextMaker extends Effect.Service()("EmptyContextMaker", {
|
|
236
|
-
succeed: Effect.succeed(Context.empty())
|
|
237
|
-
}) {
|
|
238
|
-
}
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFrRCxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVqTCxPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR3JFLE9BQU8sRUFBNkIsbUJBQW1CLEVBQUUsT0FBTyxFQUFtQixNQUFNLGdDQUFnQyxDQUFBO0FBRXpILGNBQWMsZ0NBQWdDLENBQUE7QUFzQjlDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUMzQyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUVqRCx1REFBdUQ7QUFDdkQsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdEQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENB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
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtELFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhLLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFLckUsY0FBYyxnQ0FBZ0MsQ0FBQTtBQXNCOUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRWpELHVEQUF1RDtBQUN2RCxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN0RCxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssZ0NBQWdDLENBQUMsQ0FBQyxDQUNsRyxDQUFBO0FBOEJELFFBQVE7QUFDUix1Q0FBdUM7QUFDdkMsNENBQTRDO0FBQzVDLElBQVUsWUFBWSxDQUtyQjtBQUxELFdBQVUsWUFBWTtJQUNQLG9CQUFPLEdBQUcsR0FBWSxDQUFBO0lBRXRCLGlCQUFJLEdBQUcsS0FBYyxDQUFBO0FBRXBDLENBQUMsRUFMUyxZQUFZLEtBQVosWUFBWSxRQUtyQjtBQXdDRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFrRXBDLE1BQU0sT0FBTyxNQUFPLFNBQVEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFVO0NBQUc7QUFFMUUsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBT3hCLFVBTUMsRUFDRCxPQUFnQixFQUNoQixFQUFFO0lBQ0YsU0FBUyxRQUFRLENBSWYsR0FBb0Q7UUEyRHBELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUE7UUFHcEIsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMxRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELEdBQUcsQ0FBQyxHQUEyQixDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzdDLENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsRUFBRSxFQUFvQixDQUFDLENBQUE7UUFFeEIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDWixDQUFDO1lBQUMsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUU7Z0JBQ3ZELG1EQUFtRDtnQkFDbkQsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQjtvQkFBRSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDekcsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ2hFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7b0JBQ2pDLENBQUMsQ0FBQzt3QkFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTt3QkFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7d0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQTt3QkFDbEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUE7cUJBQ25DO29CQUNELENBQUMsQ0FBQzt3QkFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTt3QkFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7d0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQTt3QkFDbEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUE7cUJBQzdCLENBQUE7WUFDTCxDQUFDLEVBQUU7Z0JBQ0QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPO2dCQUN6QixVQUFVLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUM3QyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU87Z0JBQ3pCLEdBQUcsRUFBRSxpR0FBaUc7Z0JBQ3BHLG9DQUFvQztnQkFDcEMsc0hBQXNIO2dCQUN0SCxDQUFDLFdBQWdCLEVBQUUsRUFBRTtvQkFDbkIsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQjt3QkFBRSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtvQkFDekcsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ2hFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7d0JBQ2pDLENBQUMsQ0FBQzs0QkFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTs0QkFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7NEJBQ3BCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQTs0QkFDL0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUE7eUJBQ25DO3dCQUNELENBQUMsQ0FBQzs0QkFDQSxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTs0QkFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7NEJBQ3BCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQTs0QkFDL0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUE7eUJBQzdCLENBQUE7Z0JBQ0wsQ0FBQzthQUNKLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxFQUNELEVBQTRELENBQzdELENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBb0Q7WUFDOUQsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLENBQUMsQ0FBTTtnQkFDUixDQUFDO2dCQUFDLElBQUksQ0FBQyxLQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ3ZDO2dCQUFDLElBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDbEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNO29CQUFFLE9BQU8sSUFBSSxDQUFDLEtBQVksQ0FBQTtnQkFDbkcsT0FBTyxJQUFXLENBQUE7WUFDcEIsQ0FBQztTQUNGLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FvQ1QsQ0FBQyxJQUF1QyxFQUFFLEVBQUUsQ0FDOUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUNuRyxPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsRUFBRSxFQUFTLENBQUMsQ0FBQTtRQUVmLE1BQU0sVUFBVSxHQUFHLENBU2pCLFlBQThCLEVBQzlCLElBQXVHLEVBQ3ZHLEVBQUU7WUFFRixNQUFNLEtBQUssR0FBRyxNQUFNO2lCQUNqQixHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUNaLElBQUksR0FBSSxJQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQjtvQkFDOUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBVyxDQUFDLENBQUMsT0FBTyxDQUFRO29CQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFBO2dCQUVSLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQTtnQkFDL0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFBO2dCQUU3QixvRUFBb0U7Z0JBQ3BFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7b0JBQzdELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUErQixDQUFDLENBQUE7b0JBQzVELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFFekIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQTtvQkFFckQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLENBQUMsR0FBb0MsRUFBRSxPQUE0QixFQUFFLEVBQUUsQ0FDdkUsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQVEsRUFBRSw2QkFBNkIsQ0FBQzt3QkFDbkYsQ0FBQyxDQUFDLENBQUMsR0FBb0MsRUFBRSxPQUE0QixFQUFFLEVBQUUsQ0FDdkUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQVEsQ0FBQyxDQUFBO29CQUU5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUc7d0JBQ1QsT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSTs0QkFDaEMsQ0FBQyxDQUFDLEtBQU0sU0FBUyxRQUFnQjtnQ0FDL0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQ0FDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztvQ0FDN0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBO2dDQUN6QixDQUFDO2dDQUNELElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7b0NBQzNCLE9BQU87d0NBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO3dDQUN6QixPQUFPLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO3FDQUMzQyxDQUFBO2dDQUNILENBQUM7NkJBQ0s7NEJBQ1IsQ0FBQyxDQUFDLFFBQVE7d0JBQ1osR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFVLEVBQUUsT0FBNEIsRUFBRSxFQUFFO3dCQUNoRSxnREFBZ0Q7d0JBQ2hELE1BQU07NkJBQ0gsbUJBQW1CLENBQ2xCLGNBQWMsRUFDZCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQW9CLEVBQUUsRUFBRTs0QkFDckUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxVQUFVO2dDQUM1QixDQUFDLENBQUMsWUFBWTtnQ0FDZCxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTO29DQUN0RixDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRzt3Q0FDL0MsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO3dDQUNuQyxDQUFDLENBQUMsS0FBSztvQ0FDVCxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7d0NBQ3RCLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxNQUFNLEdBQUc7d0NBQzFCLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTOzRDQUN2QyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUU7NENBQ1osQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLO2dEQUNwQyxDQUFDLENBQUMsVUFBVSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRztnREFDeEMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFBOzRCQUNoQixPQUFPLElBQUksQ0FBQTt3QkFDYixDQUFDLEVBQUUsRUFBK0MsQ0FBQyxDQUNwRDs2QkFDQSxJQUFJO3dCQUNILDREQUE0RDt3QkFDNUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUN2QyxxR0FBcUc7d0JBQ3JHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDcEYsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzlGLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN6QixNQUFNOzZCQUNILEdBQUcsQ0FBQzs0QkFDSCxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7Z0NBQ3hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTs2QkFDOUMsQ0FBQzs0QkFDRixXQUFXO2lDQUNSLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUM7aUNBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2dDQUN4QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0NBQzdDLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO2dDQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQ0FDeEIsc0JBQXNCO2dDQUN0QixXQUFXO2dDQUNYLHdCQUF3QjtnQ0FDeEIsd0NBQXdDO2dDQUN4QyxtRkFBbUY7Z0NBQ25GLG9CQUFvQjtnQ0FDcEIsb0NBQW9DO2dDQUNwQyxJQUFJOzZCQUNMLENBQUMsQ0FBQzt5QkFDTixDQUFDLENBQ0w7d0JBQ0QsMERBQTBEO3dCQUMxRCwwQ0FBMEM7d0JBQzFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFDckYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRTs0QkFDbEUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUs7eUJBQ3ZDLENBQUMsQ0FDSCxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxVQUFVO3FCQUNQLENBQUE7b0JBQ1YsT0FBTyxHQUFHLENBQUE7Z0JBQ1osQ0FBQyxFQUFFLEVBQVMsQ0FpQlgsQ0FBQTtnQkFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUN4QixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7b0JBQzFDLE9BQU8sR0FBRyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUN4QyxDQUFDLENBQUMsQ0FDSCxDQUFBO2dCQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ2hELE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO3dCQUMvRCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQTt3QkFDNUIsT0FBTyxHQUFHLENBQUE7b0JBQ1osQ0FBQyxFQUFFLEVBQXlCLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQyxDQUFDLENBT0QsQ0FBQTtnQkFFRCxPQUFPLFNBQVM7cUJBQ2IsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3FCQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDN0IsSUFBSSxDQUNILEtBQUssQ0FBQyxZQUFZLENBQ2hCLFNBQVMsQ0FBQyxpQkFBaUIsQ0FDekIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBaUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQ3JGLENBQ0YsQ0FDRixDQUFBO1lBQ0wsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7WUFFM0IsNEVBQTRFO1lBQzVFLE1BQU0sTUFBTSxHQUFHLENBQ2IsS0FBSyxDQUFDLElBQUksQ0FDUixLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUNaLEdBQUcsWUFBWSxJQUFJLEVBQUU7Z0JBQ3JCLFVBQVUsQ0FBQyxPQUFPO2FBQ1osQ0FBUSxDQUNqQixDQVNELENBQUE7WUFFRiwwR0FBMEc7WUFFMUcsT0FBTztnQkFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLE1BQU07YUFDUCxDQUFBO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsTUFBTSxNQUFNLEdBOFFWLENBQUMsQ0FBQyxJQUFzRCxFQUFFLEVBQUUsQ0FDMUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFRLENBQUE7UUFFL0UsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsU0FBUyxRQUFRLENBU2YsUUFBVztRQUVYLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFVLENBSTdELENBQUEsQ0FBQyxPQUFPO0lBQ1gsQ0FBQztJQUVELE9BQU87UUFDTCxRQUFRO1FBQ1IsUUFBUSxFQUFFLENBSVIsR0FBb0QsRUFDcEQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPO1FBQzFCLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUE7QUFDSCxDQUFDLENBQUE7QUF5QkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FDOUMsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNwRSxFQUNELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFDN0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUMvQixDQUFBIn0=
|
package/package.json
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
import { Context, Effect, Layer, type NonEmptyArray, type Request, type S
|
|
4
|
+
import { type Array, Context, Effect, Layer, type NonEmptyArray, type Request, type S } from "effect-app"
|
|
5
5
|
import type { GetEffectContext, RPCContextMap } from "effect-app/client/req"
|
|
6
|
+
import { type HttpRouter } from "effect-app/http"
|
|
6
7
|
import type * as EffectRequest from "effect/Request"
|
|
7
8
|
import { type LayersUtils } from "../routing.js"
|
|
8
9
|
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
export type MakeRPCHandlerFactory<
|
|
11
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
12
|
+
MiddlewareR
|
|
13
|
+
> = <
|
|
12
14
|
T extends {
|
|
13
15
|
config?: Partial<Record<keyof RequestContextMap, any>>
|
|
14
16
|
},
|
|
@@ -30,69 +32,68 @@ export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContex
|
|
|
30
32
|
headers: any
|
|
31
33
|
) => Effect.Effect<
|
|
32
34
|
Request.Request.Success<Req>,
|
|
33
|
-
Request.Request.Error<Req>,
|
|
35
|
+
Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
|
|
34
36
|
// the middleware will remove from HandlerR the dynamic context, but will also add the MiddlewareR
|
|
35
37
|
| MiddlewareR
|
|
36
38
|
// & S.Schema<Req, any, never> is useless here but useful when creating the middleware
|
|
37
39
|
| Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>
|
|
38
40
|
>
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
return (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => cb
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export const makeMiddlewareLayer = <
|
|
42
|
+
export type RPCHandlerFactory<
|
|
45
43
|
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
46
44
|
MiddlewareR,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
ContextProviderA
|
|
46
|
+
> = <
|
|
47
|
+
T extends {
|
|
48
|
+
config?: Partial<Record<keyof RequestContextMap, any>>
|
|
49
|
+
},
|
|
50
|
+
Req extends S.TaggedRequest.All,
|
|
51
|
+
HandlerR
|
|
54
52
|
>(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
53
|
+
schema: T & S.Schema<Req, any, never>,
|
|
54
|
+
handler: (
|
|
55
|
+
request: Req,
|
|
56
|
+
headers: any
|
|
57
|
+
) => Effect.Effect<
|
|
58
|
+
EffectRequest.Request.Success<Req>,
|
|
59
|
+
EffectRequest.Request.Error<Req>,
|
|
60
|
+
HandlerR
|
|
61
|
+
>,
|
|
62
|
+
moduleName?: string
|
|
63
|
+
) => (
|
|
64
|
+
req: Req,
|
|
65
|
+
headers: any
|
|
66
|
+
) => Effect.Effect<
|
|
67
|
+
Request.Request.Success<Req>,
|
|
68
|
+
Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
|
|
69
|
+
| HttpRouter.HttpRouter.Provided
|
|
70
|
+
// the middleware will remove from HandlerR the dynamic context, but will also add the MiddlewareR
|
|
71
|
+
| Exclude<
|
|
72
|
+
| MiddlewareR
|
|
73
|
+
// & S.Schema<Req, any, never> is useless here but useful when creating the middleware
|
|
74
|
+
| Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
|
|
75
|
+
ContextProviderA
|
|
65
76
|
>
|
|
66
|
-
|
|
67
|
-
if (!middleware.execute && !middleware.executeContextual) {
|
|
68
|
-
throw new Error("No execute or executeContextual provided in middleware")
|
|
69
|
-
}
|
|
70
|
-
const middlewareLayer = Layer
|
|
71
|
-
.effect(
|
|
72
|
-
MiddlewareMaker,
|
|
73
|
-
middleware.execute
|
|
74
|
-
? middleware.execute
|
|
75
|
-
: middleware.executeContextual!(makeRpcHandler<RequestContextMap, MiddlewareR>())
|
|
76
|
-
)
|
|
77
|
-
.pipe(middleware.dependencies ? Layer.provide(middleware.dependencies) as any : (_) => _)
|
|
77
|
+
>
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
never,
|
|
82
|
-
Exclude<MiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
|
|
83
|
-
>
|
|
79
|
+
function makeRpcHandler<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() {
|
|
80
|
+
return (cb: MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>) => cb
|
|
84
81
|
}
|
|
85
|
-
export type ContextProviderShape<ContextProviderA> = Effect<Context.Context<ContextProviderA>, never, Scope>
|
|
86
82
|
|
|
87
|
-
export
|
|
83
|
+
export type ContextProviderShape<ContextProviderA> = Effect<
|
|
84
|
+
Context.Context<ContextProviderA>,
|
|
85
|
+
never,
|
|
86
|
+
HttpRouter.HttpRouter.Provided
|
|
87
|
+
>
|
|
88
|
+
|
|
89
|
+
export interface MiddlewareMake<
|
|
88
90
|
MiddlewareR, // what the middlware requires to execute
|
|
89
91
|
RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the handler, or raise errors.
|
|
92
|
+
MakeMiddlewareE, // what the middleware construction can fail with
|
|
90
93
|
MakeMiddlewareR, // what the middlware requires to be constructed
|
|
91
94
|
MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
|
|
92
95
|
//
|
|
93
96
|
// ContextProvider is a service that builds additional context for each request.
|
|
94
|
-
ContextProviderId, // it is the context provider itself
|
|
95
|
-
ContextProviderKey extends string, // tag for the context provider
|
|
96
97
|
ContextProviderA, // what the context provider provides
|
|
97
98
|
MakeContextProviderE, // what the context provider construction can fail with
|
|
98
99
|
MakeContextProviderR // what the context provider construction requires
|
|
@@ -101,36 +102,221 @@ export interface Middleware<
|
|
|
101
102
|
contextProvider:
|
|
102
103
|
& Context.Tag<
|
|
103
104
|
ContextProviderId,
|
|
104
|
-
|
|
105
|
+
ContextProviderShape<ContextProviderA>
|
|
105
106
|
>
|
|
106
107
|
& {
|
|
107
108
|
Default: Layer.Layer<ContextProviderId, MakeContextProviderE, MakeContextProviderR>
|
|
108
109
|
}
|
|
109
|
-
execute
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
execute: (
|
|
111
|
+
maker: (
|
|
112
|
+
cb: MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>
|
|
113
|
+
) => MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>
|
|
114
|
+
) => Effect<
|
|
115
|
+
MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>,
|
|
116
|
+
MakeMiddlewareE,
|
|
112
117
|
MakeMiddlewareR
|
|
113
118
|
>
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface MiddlewareMakerId {
|
|
122
|
+
_tag: "MiddlewareMaker"
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export interface ContextProviderId {
|
|
126
|
+
_tag: "ContextProvider"
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
type GetContext<T> = T extends Context.Context<infer Y> ? Y : never
|
|
130
|
+
|
|
131
|
+
export const mergeContextProviders = <
|
|
132
|
+
// TDeps is an array of services whit Default implementation
|
|
133
|
+
// each service is an effect which builds some context for each request
|
|
134
|
+
TDeps extends Array.NonEmptyReadonlyArray<
|
|
135
|
+
& (
|
|
136
|
+
| Context.Tag<any, Effect<Context.Context<any>, never, any> & { _tag: any }>
|
|
137
|
+
| Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
|
|
138
|
+
)
|
|
139
|
+
& {
|
|
140
|
+
new(...args: any[]): any
|
|
141
|
+
Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
|
|
142
|
+
}
|
|
143
|
+
>
|
|
144
|
+
>(...deps: TDeps): {
|
|
145
|
+
dependencies: { [K in keyof TDeps]: TDeps[K]["Default"] }
|
|
146
|
+
effect: Effect.Effect<
|
|
147
|
+
Effect.Effect<
|
|
148
|
+
Context.Context<GetContext<Effect.Success<InstanceType<TDeps[number]>>>>,
|
|
149
|
+
Effect.Error<InstanceType<TDeps[number]>>,
|
|
150
|
+
Effect.Context<InstanceType<TDeps[number]>>
|
|
151
|
+
>,
|
|
119
152
|
never,
|
|
120
|
-
|
|
153
|
+
InstanceType<TDeps[number]>
|
|
121
154
|
>
|
|
155
|
+
} => ({
|
|
156
|
+
dependencies: deps.map((_) => _.Default) as any,
|
|
157
|
+
effect: Effect.gen(function*() {
|
|
158
|
+
const services = yield* Effect.all(deps)
|
|
159
|
+
// services are effects which return some Context.Context<...>
|
|
160
|
+
return Effect.all(services as any[]).pipe(
|
|
161
|
+
Effect.map((_) => Context.mergeAll(..._ as any))
|
|
162
|
+
)
|
|
163
|
+
}) as any
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
// TODO: andrea; how?
|
|
167
|
+
// export const MergedContextProvider = <
|
|
168
|
+
// // TDeps is an array of services whit Default implementation
|
|
169
|
+
// // each service is an effect which builds some context for each request
|
|
170
|
+
// TDeps extends Array.NonEmptyReadonlyArray<
|
|
171
|
+
// & (
|
|
172
|
+
// | Context.Tag<any, Effect<Context.Context<any>, never, any> & { _tag: any }>
|
|
173
|
+
// | Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
|
|
174
|
+
// )
|
|
175
|
+
// & {
|
|
176
|
+
// new(...args: any[]): any
|
|
177
|
+
// Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
|
|
178
|
+
// }
|
|
179
|
+
// >
|
|
180
|
+
// >(...deps: TDeps) => ContextProvider(mergeContextProviders(...deps))
|
|
181
|
+
|
|
182
|
+
export const ContextProvider = <A, E, R, EContext, Dependencies extends NonEmptyArray<Layer.Layer.Any>>(
|
|
183
|
+
input: { effect: Effect<Effect<A, EContext, HttpRouter.HttpRouter.Provided>, E, R>; dependencies?: Dependencies }
|
|
184
|
+
) => {
|
|
185
|
+
const ctx = Context.GenericTag<
|
|
186
|
+
ContextProviderId,
|
|
187
|
+
Effect<A, EContext, HttpRouter.HttpRouter.Provided>
|
|
188
|
+
>(
|
|
189
|
+
"ContextProvider"
|
|
190
|
+
)
|
|
191
|
+
const l = Layer.effect(ctx, input.effect)
|
|
192
|
+
return Object.assign(ctx, {
|
|
193
|
+
Default: l.pipe(
|
|
194
|
+
input.dependencies ? Layer.provide(input.dependencies) as any : (_) => _
|
|
195
|
+
) as Layer.Layer<
|
|
196
|
+
ContextProviderId,
|
|
197
|
+
E | LayersUtils.GetLayersError<Dependencies>,
|
|
198
|
+
Exclude<R, LayersUtils.GetLayersSuccess<Dependencies>> | LayersUtils.GetLayersContext<Dependencies>
|
|
199
|
+
>
|
|
200
|
+
})
|
|
122
201
|
}
|
|
123
202
|
|
|
203
|
+
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) })
|
|
204
|
+
|
|
205
|
+
export type Middleware<
|
|
206
|
+
MiddlewareR, // what the middlware requires to execute
|
|
207
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the handler, or raise errors.
|
|
208
|
+
MakeMiddlewareE, // what the middleware construction can fail with
|
|
209
|
+
MakeMiddlewareR, // what the middlware requires to be constructed
|
|
210
|
+
ContextProviderA // what the context provider provides
|
|
211
|
+
> =
|
|
212
|
+
& Context.Tag<
|
|
213
|
+
MiddlewareMakerId,
|
|
214
|
+
MiddlewareMakerId & {
|
|
215
|
+
effect: RPCHandlerFactory<RequestContextMap, MiddlewareR, ContextProviderA>
|
|
216
|
+
} & {
|
|
217
|
+
_tag: "MiddlewareMaker"
|
|
218
|
+
}
|
|
219
|
+
>
|
|
220
|
+
& {
|
|
221
|
+
Default: Layer.Layer<
|
|
222
|
+
MiddlewareMakerId,
|
|
223
|
+
MakeMiddlewareE,
|
|
224
|
+
MakeMiddlewareR
|
|
225
|
+
>
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<
|
|
229
|
+
RequestContextMap[keyof RequestContextMap]["error"]
|
|
230
|
+
>
|
|
231
|
+
|
|
124
232
|
// identity factory for Middleware
|
|
125
233
|
export const makeMiddleware =
|
|
126
|
-
// by setting MiddlewareR and RequestContextMap beforehand,
|
|
234
|
+
// by setting MiddlewareR and RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
127
235
|
<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() =>
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
|
|
236
|
+
<
|
|
237
|
+
MakeMiddlewareE, // what the middleware construction can fail with
|
|
238
|
+
MakeMiddlewareR, // what the middlware requires to be constructed
|
|
239
|
+
MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
|
|
240
|
+
//
|
|
241
|
+
// ContextProvider is a service that builds additional context for each request.
|
|
242
|
+
ContextProviderA, // what the context provider provides
|
|
243
|
+
MakeContextProviderE, // what the context provider construction can fail with
|
|
244
|
+
MakeContextProviderR // what the context provider construction requires
|
|
245
|
+
>(
|
|
246
|
+
make: MiddlewareMake<
|
|
247
|
+
MiddlewareR,
|
|
248
|
+
RequestContextMap,
|
|
249
|
+
MakeMiddlewareE,
|
|
250
|
+
MakeMiddlewareR,
|
|
251
|
+
MiddlewareDependencies,
|
|
252
|
+
ContextProviderA,
|
|
253
|
+
MakeContextProviderE,
|
|
254
|
+
MakeContextProviderR
|
|
255
|
+
>
|
|
256
|
+
) => {
|
|
257
|
+
// type Id = MiddlewareMakerId &
|
|
258
|
+
const MiddlewareMaker = Context.GenericTag<
|
|
259
|
+
MiddlewareMakerId,
|
|
260
|
+
{
|
|
261
|
+
effect: RPCHandlerFactory<RequestContextMap, MiddlewareR, ContextProviderA>
|
|
262
|
+
_tag: "MiddlewareMaker"
|
|
263
|
+
}
|
|
264
|
+
>(
|
|
265
|
+
"MiddlewareMaker"
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
const l = Layer.effect(
|
|
269
|
+
MiddlewareMaker,
|
|
270
|
+
Effect
|
|
271
|
+
.all({
|
|
272
|
+
middleware: make.execute(makeRpcHandler<RequestContextMap, MiddlewareR>()),
|
|
273
|
+
contextProvider: make.contextProvider // uses the middleware.contextProvider tag to get the context provider service
|
|
274
|
+
})
|
|
275
|
+
.pipe(
|
|
276
|
+
Effect.map(({ contextProvider, middleware }) => ({
|
|
277
|
+
_tag: "MiddlewareMaker" as const,
|
|
278
|
+
effect: makeRpcEffect<RequestContextMap, MiddlewareR, ContextProviderA>()(
|
|
279
|
+
(schema, handler, moduleName) => {
|
|
280
|
+
const h = middleware(schema, handler, moduleName)
|
|
281
|
+
return (req, headers) =>
|
|
282
|
+
// the contextProvider is an Effect that builds the context for the request
|
|
283
|
+
contextProvider.pipe(
|
|
284
|
+
Effect.flatMap((ctx) =>
|
|
285
|
+
h(req, headers)
|
|
286
|
+
.pipe(
|
|
287
|
+
Effect.provide(ctx),
|
|
288
|
+
// TODO: make this depend on query/command, and consider if middleware also should be affected or not.
|
|
289
|
+
Effect.uninterruptible
|
|
290
|
+
)
|
|
291
|
+
)
|
|
292
|
+
)
|
|
293
|
+
}
|
|
294
|
+
)
|
|
295
|
+
}))
|
|
296
|
+
)
|
|
297
|
+
)
|
|
298
|
+
const middlewareLayer = l
|
|
299
|
+
.pipe(
|
|
300
|
+
make.dependencies ? Layer.provide(make.dependencies) as any : (_) => _,
|
|
301
|
+
Layer.provide(make.contextProvider.Default)
|
|
302
|
+
) as Layer.Layer<
|
|
303
|
+
MiddlewareMakerId,
|
|
304
|
+
| MakeMiddlewareE
|
|
305
|
+
| Layer.Error<typeof make.contextProvider.Default>,
|
|
306
|
+
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
307
|
+
| Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
|
|
308
|
+
| Layer.Context<typeof make.contextProvider.Default>
|
|
309
|
+
>
|
|
310
|
+
|
|
311
|
+
return Object.assign(MiddlewareMaker, { Default: middlewareLayer })
|
|
312
|
+
}
|
|
131
313
|
|
|
132
314
|
// it just provides the right types without cluttering the implementation with them
|
|
133
|
-
function makeRpcEffect<
|
|
315
|
+
function makeRpcEffect<
|
|
316
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
317
|
+
MiddlewareR,
|
|
318
|
+
ContextProviderA
|
|
319
|
+
>() {
|
|
134
320
|
return (
|
|
135
321
|
cb: <
|
|
136
322
|
T extends {
|
|
@@ -154,9 +340,9 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
|
|
|
154
340
|
headers: any
|
|
155
341
|
) => Effect.Effect<
|
|
156
342
|
Request.Request.Success<Req>,
|
|
157
|
-
Request.Request.Error<Req>,
|
|
158
|
-
|
|
|
159
|
-
| Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR
|
|
343
|
+
Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
|
|
344
|
+
| HttpRouter.HttpRouter.Provided // the context provider may require HttpRouter.Provided to run
|
|
345
|
+
| Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR\
|
|
160
346
|
| Exclude<
|
|
161
347
|
Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
|
|
162
348
|
ContextProviderA
|
|
@@ -164,52 +350,3 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
|
|
|
164
350
|
>
|
|
165
351
|
) => cb
|
|
166
352
|
}
|
|
167
|
-
|
|
168
|
-
export const makeRpc = <
|
|
169
|
-
MiddlewareR,
|
|
170
|
-
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
171
|
-
MakeMiddlewareR,
|
|
172
|
-
MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>,
|
|
173
|
-
ContextProviderId,
|
|
174
|
-
ContextProviderKey extends string,
|
|
175
|
-
ContextProviderA,
|
|
176
|
-
MakeContextProviderE,
|
|
177
|
-
MakeContextProviderR
|
|
178
|
-
>(
|
|
179
|
-
middleware: Middleware<
|
|
180
|
-
MiddlewareR,
|
|
181
|
-
RequestContextMap,
|
|
182
|
-
MakeMiddlewareR,
|
|
183
|
-
MiddlewareDependencies,
|
|
184
|
-
ContextProviderId,
|
|
185
|
-
ContextProviderKey,
|
|
186
|
-
ContextProviderA,
|
|
187
|
-
MakeContextProviderE,
|
|
188
|
-
MakeContextProviderR
|
|
189
|
-
>
|
|
190
|
-
) =>
|
|
191
|
-
Effect
|
|
192
|
-
.all({
|
|
193
|
-
middleware: MiddlewareMaker as Context.Tag<
|
|
194
|
-
"MiddlewareMaker",
|
|
195
|
-
RPCHandlerFactory<RequestContextMap, MiddlewareR>
|
|
196
|
-
>,
|
|
197
|
-
contextProvider: middleware.contextProvider // uses the middleware.contextProvider tag to get the context provider service
|
|
198
|
-
})
|
|
199
|
-
.pipe(Effect.map(({ contextProvider, middleware }) => ({
|
|
200
|
-
effect: makeRpcEffect<RequestContextMap, MiddlewareR, ContextProviderA>()((schema, handler, moduleName) => {
|
|
201
|
-
const h = middleware(schema, handler, moduleName)
|
|
202
|
-
return (req, headers) =>
|
|
203
|
-
// the contextProvider is an Effect that builds the context for the request
|
|
204
|
-
contextProvider.pipe(
|
|
205
|
-
Effect.flatMap((ctx) =>
|
|
206
|
-
h(req, headers)
|
|
207
|
-
.pipe(
|
|
208
|
-
Effect.provide(ctx),
|
|
209
|
-
// TODO: make this depend on query/command, and consider if middleware also should be affected or not.
|
|
210
|
-
Effect.uninterruptible
|
|
211
|
-
)
|
|
212
|
-
)
|
|
213
|
-
)
|
|
214
|
-
})
|
|
215
|
-
})))
|