@effect-app/infra 1.28.3 → 1.29.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 +19 -0
- package/_cjs/api/{routing2 → routing}/DynamicMiddleware.cjs +1 -1
- package/_cjs/api/routing/DynamicMiddleware.cjs.map +1 -0
- package/_cjs/api/routing.cjs +135 -43
- package/_cjs/api/routing.cjs.map +1 -1
- package/dist/api/routing/DynamicMiddleware.d.ts.map +1 -0
- package/dist/api/routing/DynamicMiddleware.js +33 -0
- package/dist/api/routing.d.ts +100 -4
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +116 -9
- package/dist/services/Repository/ext.d.ts +4 -4
- package/package.json +9 -79
- package/src/api/{routing2 → routing}/DynamicMiddleware.ts +1 -1
- package/src/api/routing.ts +434 -8
- package/_cjs/api/routing/base.cjs +0 -135
- package/_cjs/api/routing/base.cjs.map +0 -1
- package/_cjs/api/routing/defaultErrorHandler.cjs +0 -62
- package/_cjs/api/routing/defaultErrorHandler.cjs.map +0 -1
- package/_cjs/api/routing/makeRequestHandler.cjs +0 -130
- package/_cjs/api/routing/makeRequestHandler.cjs.map +0 -1
- package/_cjs/api/routing/match.cjs +0 -40
- package/_cjs/api/routing/match.cjs.map +0 -1
- package/_cjs/api/routing/schema/routing.cjs +0 -136
- package/_cjs/api/routing/schema/routing.cjs.map +0 -1
- package/_cjs/api/routing2/DynamicMiddleware.cjs.map +0 -1
- package/_cjs/api/routing2.cjs +0 -142
- package/_cjs/api/routing2.cjs.map +0 -1
- package/_cjs/router.cjs +0 -170
- package/_cjs/router.cjs.map +0 -1
- package/dist/api/routing/base.d.ts +0 -97
- package/dist/api/routing/base.d.ts.map +0 -1
- package/dist/api/routing/base.js +0 -129
- package/dist/api/routing/defaultErrorHandler.d.ts +0 -19
- package/dist/api/routing/defaultErrorHandler.d.ts.map +0 -1
- package/dist/api/routing/defaultErrorHandler.js +0 -68
- package/dist/api/routing/makeRequestHandler.d.ts +0 -20
- package/dist/api/routing/makeRequestHandler.d.ts.map +0 -1
- package/dist/api/routing/makeRequestHandler.js +0 -151
- package/dist/api/routing/match.d.ts +0 -12
- package/dist/api/routing/match.d.ts.map +0 -1
- package/dist/api/routing/match.js +0 -27
- package/dist/api/routing/schema/routing.d.ts +0 -31
- package/dist/api/routing/schema/routing.d.ts.map +0 -1
- package/dist/api/routing/schema/routing.js +0 -123
- package/dist/api/routing2/DynamicMiddleware.d.ts.map +0 -1
- package/dist/api/routing2/DynamicMiddleware.js +0 -33
- package/dist/api/routing2.d.ts +0 -93
- package/dist/api/routing2.d.ts.map +0 -1
- package/dist/api/routing2.js +0 -117
- package/dist/router.d.ts +0 -91
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -154
- package/src/api/routing/base.ts +0 -379
- package/src/api/routing/defaultErrorHandler.ts +0 -140
- package/src/api/routing/makeRequestHandler.ts +0 -343
- package/src/api/routing/match.ts +0 -128
- package/src/api/routing/schema/routing.ts +0 -237
- package/src/api/routing2.ts +0 -425
- package/src/api/writeDocs.ts.bak +0 -31
- package/src/router.ts +0 -619
- /package/dist/api/{routing2 → routing}/DynamicMiddleware.d.ts +0 -0
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { logError } from "@effect-app/infra/errorReporter";
|
|
2
|
-
import { setBody, setStatus } from "@effect/platform/HttpServerResponse";
|
|
3
|
-
import { Cause, Data, Effect, S, Schedule } from "effect-app";
|
|
4
|
-
import { InvalidStateError, NotFoundError, NotLoggedInError, OptimisticConcurrencyException, ServiceUnavailableError, UnauthorizedError, ValidationError } from "effect-app/client/errors";
|
|
5
|
-
import { HttpBody, HttpHeaders, HttpServerResponse } from "effect-app/http";
|
|
6
|
-
import { InfraLogger } from "../../logger.js";
|
|
7
|
-
export class JWTError extends Data.TaggedClass("JWTError") {
|
|
8
|
-
}
|
|
9
|
-
const logRequestError = logError("Request");
|
|
10
|
-
export function defaultBasicErrorHandler(_req, res, r2) {
|
|
11
|
-
const sendError = (code) => (body) => Effect.sync(() => setBody(res, HttpBody.unsafeJson(body)).pipe(setStatus(code)));
|
|
12
|
-
return r2.pipe(Effect.tapErrorCause((cause) => Cause.isFailure(cause) ? logRequestError(cause) : Effect.void), Effect.catchTag("ValidationError", (err) => sendError(400)(err.errors)), Effect
|
|
13
|
-
// final catch all; expecting never so that unhandled known errors will show up
|
|
14
|
-
.catchAll((err) => InfraLogger
|
|
15
|
-
.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err)
|
|
16
|
-
.pipe(Effect.map(() => err), Effect.flatMap(Effect.die))));
|
|
17
|
-
}
|
|
18
|
-
const optimisticConcurrencySchedule = Schedule.once
|
|
19
|
-
&& Schedule.recurWhile((a) => a._tag === "OptimisticConcurrencyException");
|
|
20
|
-
export function defaultErrorHandler(req, res, r2, customErrorSchema) {
|
|
21
|
-
const r3 = req.method === "PATCH"
|
|
22
|
-
? Effect.retry(r2, optimisticConcurrencySchedule)
|
|
23
|
-
: r2;
|
|
24
|
-
const sendError = (code, schema) => (body) => S
|
|
25
|
-
.encode(schema)(body)
|
|
26
|
-
.pipe(Effect.orDie, Effect.andThen((body) => res.pipe(setStatus(code), setBody(HttpBody.unsafeJson(body)))));
|
|
27
|
-
return r3
|
|
28
|
-
.pipe(Effect.tapErrorCause((cause) => Cause.isFailure(cause) ? logRequestError(cause) : Effect.void), Effect.tapErrorCause((cause) => Effect.annotateCurrentSpan({
|
|
29
|
-
"exception.escaped": true,
|
|
30
|
-
"exception.message": "Request Error",
|
|
31
|
-
"exception.stacktrace": Cause.pretty(cause),
|
|
32
|
-
"exception.type": Cause.squashWith(cause, (_) => _._tag
|
|
33
|
-
// Predicate.hasProperty(_, "_tag")
|
|
34
|
-
// ? _._tag
|
|
35
|
-
// : Predicate.hasProperty(_, "name")
|
|
36
|
-
// ? _.name
|
|
37
|
-
// // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
38
|
-
// : `${_}`
|
|
39
|
-
),
|
|
40
|
-
"error.type": cause._tag
|
|
41
|
-
})), Effect
|
|
42
|
-
.catchTags({
|
|
43
|
-
"JWTError": (err) => Effect.succeed(HttpServerResponse.unsafeJson({ message: err.error.message }, {
|
|
44
|
-
status: err
|
|
45
|
-
.error
|
|
46
|
-
.status,
|
|
47
|
-
headers: HttpHeaders.fromInput(err.error.headers)
|
|
48
|
-
})),
|
|
49
|
-
"ValidationError": sendError(400, ValidationError),
|
|
50
|
-
"NotFoundError": sendError(404, NotFoundError),
|
|
51
|
-
"NotLoggedInError": sendError(401, NotLoggedInError),
|
|
52
|
-
"UnauthorizedError": sendError(403, UnauthorizedError),
|
|
53
|
-
"InvalidStateError": sendError(422, InvalidStateError),
|
|
54
|
-
"ServiceUnavailableError": sendError(503, ServiceUnavailableError),
|
|
55
|
-
// 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
|
|
56
|
-
"OptimisticConcurrencyException": sendError(412, OptimisticConcurrencyException)
|
|
57
|
-
}), customErrorSchema
|
|
58
|
-
? Effect.catchAll((x) => S.is(customErrorSchema)(x)
|
|
59
|
-
// TODO: customize error code
|
|
60
|
-
? sendError(422, customErrorSchema)(x)
|
|
61
|
-
: Effect.fail(x))
|
|
62
|
-
: (x) => x, Effect
|
|
63
|
-
// final catch all; expecting never so that unhandled known errors will show up
|
|
64
|
-
.catchAll((err) => InfraLogger
|
|
65
|
-
.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err)
|
|
66
|
-
.pipe(Effect.map(() => err), Effect.flatMap(Effect.die))));
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9kZWZhdWx0RXJyb3JIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQiw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2hCLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQTBCLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFPbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTdDLE1BQU0sT0FBTyxRQUFTLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBTXZEO0NBQUc7QUFFTCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFM0MsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxJQUF5QyxFQUN6QyxHQUEwQyxFQUMxQyxFQUFxRTtJQUVyRSxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENB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
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { EnforceNonEmptyRecord } from "@effect-app/core/utils";
|
|
2
|
-
import { RequestFiberSet } from "@effect-app/infra-adapters/RequestFiberSet";
|
|
3
|
-
import type { ValidationError } from "@effect-app/infra/errors";
|
|
4
|
-
import type { RequestContextContainer } from "@effect-app/infra/services/RequestContextContainer";
|
|
5
|
-
import type { ContextMapContainer } from "@effect-app/infra/services/Store/ContextMapContainer";
|
|
6
|
-
import type { Struct } from "@effect/schema/Schema";
|
|
7
|
-
import type { Layer } from "effect-app";
|
|
8
|
-
import { Effect, FiberRef } from "effect-app";
|
|
9
|
-
import type { HttpServerError } from "effect-app/http";
|
|
10
|
-
import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
11
|
-
import type { RequestHandler, RequestHandlerBase } from "./base.js";
|
|
12
|
-
export declare const RequestSettings: FiberRef.FiberRef<{
|
|
13
|
-
verbose: boolean;
|
|
14
|
-
}>;
|
|
15
|
-
export type Middleware<R, M, PathA extends Struct.Fields, CookieA extends Struct.Fields, QueryA extends Struct.Fields, BodyA extends Struct.Fields, HeaderA extends Struct.Fields, ReqA extends PathA & QueryA & BodyA, ResA extends Struct.Fields, ResE, MiddlewareE, PPath extends `/${string}`, R2, PR, CTX, Context, Config> = (handler: RequestHandler<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, PPath, CTX, Context, Config>) => {
|
|
16
|
-
handler: RequestHandler<R2 | PR | RequestContextContainer | ContextMapContainer | RequestFiberSet, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, PPath, CTX, Context, Config>;
|
|
17
|
-
makeRequestLayer: Layer<PR, MiddlewareE, R2>;
|
|
18
|
-
};
|
|
19
|
-
export declare function makeRequestHandler<R, M, PathA extends Struct.Fields, CookieA extends Struct.Fields, QueryA extends Struct.Fields, BodyA extends Struct.Fields, HeaderA extends Struct.Fields, ReqA extends PathA & QueryA & BodyA, ResA extends Struct.Fields, ResE, MiddlewareE, R2, PR, RErr, PPath extends `/${string}`, Config>(handler: RequestHandlerBase<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, PPath, Config>, errorHandler: <R>(req: HttpServerRequest.HttpServerRequest, res: HttpServerResponse.HttpServerResponse, r2: Effect<HttpServerResponse.HttpServerResponse, ValidationError | ResE | MiddlewareE, R>) => Effect<HttpServerResponse.HttpServerResponse, never, RErr | R>, middlewareLayer?: Layer<PR, MiddlewareE, R2>): Effect<HttpServerResponse.HttpServerResponse, HttpServerError.RequestError, HttpRouter.RouteContext | HttpServerRequest.ParsedSearchParams | HttpServerRequest.HttpServerRequest | RequestContextContainer | ContextMapContainer | RequestFiberSet | RErr | Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR> | R2>;
|
|
20
|
-
//# sourceMappingURL=makeRequestHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/api/routing/makeRequestHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { copy, pretty } from "@effect-app/core/utils";
|
|
2
|
-
import { RequestFiberSet } from "@effect-app/infra-adapters/RequestFiberSet";
|
|
3
|
-
import { snipString } from "@effect-app/infra/api/util";
|
|
4
|
-
import { reportError } from "@effect-app/infra/errorReporter";
|
|
5
|
-
import { Console, Effect, FiberRef, Option, S } from "effect-app";
|
|
6
|
-
import { HttpBody, HttpRouter, HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
7
|
-
import { NonEmptyString255 } from "effect-app/schema";
|
|
8
|
-
import { InfraLogger } from "../../logger.js";
|
|
9
|
-
import { updateRequestContext } from "../setupRequest.js";
|
|
10
|
-
import { makeRequestParsers, parseRequestParams } from "./base.js";
|
|
11
|
-
export const RequestSettings = FiberRef.unsafeMake({
|
|
12
|
-
verbose: false
|
|
13
|
-
});
|
|
14
|
-
export function makeRequestHandler(handler, errorHandler, middlewareLayer) {
|
|
15
|
-
const { Request, Response, h: handle } = handler;
|
|
16
|
-
const response = Response ? Response : S.Void;
|
|
17
|
-
const resp = response;
|
|
18
|
-
// TODO: consider if the alternative of using the struct schema is perhaps just better.
|
|
19
|
-
const encoder = "fields" in resp && resp.fields
|
|
20
|
-
? S.encode(handler.rt === "raw" ? S.encodedSchema(S.Struct(resp.fields)) : S.Struct(resp.fields))
|
|
21
|
-
// ? (i: any) => {
|
|
22
|
-
// if (i instanceof (response as any)) return S.encodeSync(response)(i)
|
|
23
|
-
// else return S.encodeSync(response)(new (response as any)(i))
|
|
24
|
-
// }
|
|
25
|
-
: S.encode(handler.rt === "raw" ? S.encodedSchema(resp) : resp);
|
|
26
|
-
// const encodeResponse = adaptResponse
|
|
27
|
-
// ? (req: ReqA) => Encoder.for(adaptResponse(req))
|
|
28
|
-
// : () => encoder
|
|
29
|
-
const requestParsers = makeRequestParsers(Request);
|
|
30
|
-
const parseRequest = parseRequestParams(requestParsers);
|
|
31
|
-
const getParams = Effect.map(Effect
|
|
32
|
-
.all({
|
|
33
|
-
rcx: HttpRouter.RouteContext,
|
|
34
|
-
searchParms: HttpServerRequest.ParsedSearchParams,
|
|
35
|
-
req: Effect.flatMap(HttpServerRequest.HttpServerRequest, (req) => req.json.pipe(Effect.map((body) => ({ body, headers: req.headers }))))
|
|
36
|
-
}), ({ rcx, req, searchParms }) => ({
|
|
37
|
-
params: rcx.params,
|
|
38
|
-
query: searchParms,
|
|
39
|
-
body: req.body,
|
|
40
|
-
headers: req.headers,
|
|
41
|
-
cookies: {} // req.cookies
|
|
42
|
-
}));
|
|
43
|
-
return Effect
|
|
44
|
-
.gen(function* () {
|
|
45
|
-
const req = yield* HttpServerRequest.HttpServerRequest;
|
|
46
|
-
const res = HttpServerResponse
|
|
47
|
-
.empty()
|
|
48
|
-
.pipe((_) => req.method === "GET" ? HttpServerResponse.setHeader(_, "Cache-Control", "no-store") : _);
|
|
49
|
-
const pars = yield* getParams;
|
|
50
|
-
const settings = yield* FiberRef.get(RequestSettings);
|
|
51
|
-
const eff =
|
|
52
|
-
// TODO: we don;t have access to user id here cause context is not yet created
|
|
53
|
-
InfraLogger
|
|
54
|
-
.logInfo("Incoming request")
|
|
55
|
-
.pipe(Effect.annotateLogs({
|
|
56
|
-
method: req.method,
|
|
57
|
-
path: req.originalUrl,
|
|
58
|
-
...(settings.verbose
|
|
59
|
-
? {
|
|
60
|
-
reqPath: pretty(pars.params),
|
|
61
|
-
reqQuery: pretty(pars.query),
|
|
62
|
-
reqBody: pretty(pars.body),
|
|
63
|
-
reqCookies: pretty(pars.cookies),
|
|
64
|
-
reqHeaders: pretty(pars.headers)
|
|
65
|
-
}
|
|
66
|
-
: undefined)
|
|
67
|
-
}), Effect
|
|
68
|
-
.andThen(Effect.suspend(() => {
|
|
69
|
-
const handleRequest = parseRequest(pars)
|
|
70
|
-
.pipe(Effect.map(({ body, path, query }) => {
|
|
71
|
-
const hn = {
|
|
72
|
-
...body.pipe(Option.getOrUndefined) ?? {},
|
|
73
|
-
...query.pipe(Option.getOrUndefined) ?? {},
|
|
74
|
-
...path.pipe(Option.getOrUndefined) ?? {}
|
|
75
|
-
};
|
|
76
|
-
return hn;
|
|
77
|
-
}), Effect.tap((parsedReq) => Effect.annotateCurrentSpan("requestInput", Object.entries(parsedReq).reduce((prev, [key, value]) => {
|
|
78
|
-
prev[key] = key === "password"
|
|
79
|
-
? "<redacted>"
|
|
80
|
-
: typeof value === "string" || typeof value === "number" || typeof value === "boolean"
|
|
81
|
-
? typeof value === "string" && value.length > 256
|
|
82
|
-
? (value.substring(0, 253) + "...")
|
|
83
|
-
: value
|
|
84
|
-
: Array.isArray(value)
|
|
85
|
-
? `Array[${value.length}]`
|
|
86
|
-
: value === null || value === undefined
|
|
87
|
-
? `${value}`
|
|
88
|
-
: typeof value === "object" && value
|
|
89
|
-
? `Object[${Object.keys(value).length}]`
|
|
90
|
-
: typeof value;
|
|
91
|
-
return prev;
|
|
92
|
-
}, {}))), Effect.flatMap((parsedReq) => handle(parsedReq)
|
|
93
|
-
.pipe(Effect.provideService(handler.Request.Tag, parsedReq), Effect.flatMap(encoder), Effect
|
|
94
|
-
.map((r) => res.pipe(HttpServerResponse.setBody(HttpBody.unsafeJson(r)), HttpServerResponse.setStatus(r === undefined ? 204 : 200))))));
|
|
95
|
-
const r = middlewareLayer
|
|
96
|
-
? Effect.provide(handleRequest, middlewareLayer)
|
|
97
|
-
// PR is not relevant here
|
|
98
|
-
: handleRequest;
|
|
99
|
-
return errorHandler(req, res, r.pipe(Effect.andThen(RequestFiberSet.register)));
|
|
100
|
-
})), Effect
|
|
101
|
-
.catchAllCause((cause) => Effect
|
|
102
|
-
.sync(() => HttpServerResponse.setStatus(res, 500))
|
|
103
|
-
.pipe(Effect
|
|
104
|
-
.tap((res) => Effect
|
|
105
|
-
.all([
|
|
106
|
-
reportError("request")(cause, {
|
|
107
|
-
path: req.originalUrl,
|
|
108
|
-
method: req.method
|
|
109
|
-
}),
|
|
110
|
-
Effect.suspend(() => {
|
|
111
|
-
const headers = res.headers;
|
|
112
|
-
return InfraLogger
|
|
113
|
-
.logError("Finished request", cause)
|
|
114
|
-
.pipe(Effect.annotateLogs({
|
|
115
|
-
method: req.method,
|
|
116
|
-
path: req.originalUrl,
|
|
117
|
-
statusCode: res.status.toString(),
|
|
118
|
-
reqPath: pretty(pars.params),
|
|
119
|
-
reqQuery: pretty(pars.query),
|
|
120
|
-
reqBody: pretty(pars.body),
|
|
121
|
-
reqCookies: pretty(pars.cookies),
|
|
122
|
-
reqHeaders: pretty(pars.headers),
|
|
123
|
-
resHeaders: pretty(Object
|
|
124
|
-
.entries(headers)
|
|
125
|
-
.reduce((prev, [key, value]) => {
|
|
126
|
-
prev[key] = value && typeof value === "string" ? snipString(value) : value;
|
|
127
|
-
return prev;
|
|
128
|
-
}, {}))
|
|
129
|
-
}));
|
|
130
|
-
})
|
|
131
|
-
], { concurrency: "inherit" })))
|
|
132
|
-
.pipe(Effect.tapErrorCause((cause) => Console.error("Error occurred while reporting error", cause)))), Effect
|
|
133
|
-
.tap((res) => InfraLogger
|
|
134
|
-
.logInfo("Finished request")
|
|
135
|
-
.pipe(Effect.annotateLogs({
|
|
136
|
-
method: req.method,
|
|
137
|
-
path: req.originalUrl,
|
|
138
|
-
statusCode: res.status.toString(),
|
|
139
|
-
...(settings.verbose
|
|
140
|
-
? {
|
|
141
|
-
resHeaders: pretty(res.headers)
|
|
142
|
-
}
|
|
143
|
-
: undefined)
|
|
144
|
-
}))));
|
|
145
|
-
return yield* eff;
|
|
146
|
-
})
|
|
147
|
-
.pipe((_) => updateRequestContext(_, copy((_) => ({
|
|
148
|
-
name: NonEmptyString255(handler.name)
|
|
149
|
-
}))));
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcXVlc3RIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21ha2VSZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBTTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUdsRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNqRCxPQUFPLEVBQUUsS0FBSztDQUNmLENBQUMsQ0FBQTtBQXlERixNQUFNLFVBQVUsa0JBQWtCLENBa0JoQyxPQWFDLEVBQ0QsWUFJbUUsRUFDbkUsZUFBNEM7SUFjNUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUVoRCxNQUFNLFFB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
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ValidationError } from "@effect-app/infra/errors";
|
|
2
|
-
import { type RouteDescriptorAny } from "./schema/routing.js";
|
|
3
|
-
import type { Struct } from "@effect/schema/Schema";
|
|
4
|
-
import type { Ref, Scope } from "effect-app";
|
|
5
|
-
import { Context, Effect } from "effect-app";
|
|
6
|
-
import { HttpRouter } from "effect-app/http";
|
|
7
|
-
import type { HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
8
|
-
import type { RequestHandler } from "./base.js";
|
|
9
|
-
import type { Middleware } from "./makeRequestHandler.js";
|
|
10
|
-
export declare const RouteDescriptors: Context.Tag<Ref<RouteDescriptorAny[]>, Ref<RouteDescriptorAny[]>>;
|
|
11
|
-
export declare function match<R, M, PathA extends Struct.Fields, CookieA extends Struct.Fields, QueryA extends Struct.Fields, BodyA extends Struct.Fields, HeaderA extends Struct.Fields, ReqA extends PathA & QueryA & BodyA, ResA extends Struct.Fields, ResE, MiddlewareE, PPath extends `/${string}`, R2, PR, RErr, CTX, Context, Config>(requestHandler: RequestHandler<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, PPath, CTX, Context, Config>, errorHandler: <R>(req: HttpServerRequest.HttpServerRequest, res: HttpServerResponse.HttpServerResponse, r2: Effect<HttpServerResponse.HttpServerResponse, ValidationError | MiddlewareE | ResE, R>) => Effect<HttpServerResponse.HttpServerResponse, never, Exclude<RErr | R, HttpServerRequest.HttpServerRequest | HttpRouter.RouteContext | Scope>>, middleware?: Middleware<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, MiddlewareE, PPath, R2, PR, CTX, Context, Config>): Effect.Effect<HttpRouter.Route<import("@effect/platform/HttpServerError").RequestError, import("../../services/RequestContextContainer.js").RequestContextContainer | import("../../services/Store/ContextMapContainer.js").ContextMapContainer | import("@effect-app/infra-adapters/RequestFiberSet").RequestFiberSet | Exclude<R2, HttpRouter.HttpRouter.Provided> | Exclude<RErr, HttpRouter.HttpRouter.Provided> | Exclude<Exclude<Exclude<R, import("effect-app/utils").EnforceNonEmptyRecord<M>>, PR>, HttpRouter.HttpRouter.Provided>>, never, never>;
|
|
12
|
-
//# sourceMappingURL=match.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/api/routing/match.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAS,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,eAAO,MAAM,gBAAgB,mEAA8E,CAAA;AAE3G,wBAAgB,KAAK,CACnB,CAAC,EACD,CAAC,EACD,KAAK,SAAS,MAAM,CAAC,MAAM,EAC3B,OAAO,SAAS,MAAM,CAAC,MAAM,EAC7B,MAAM,SAAS,MAAM,CAAC,MAAM,EAC5B,KAAK,SAAS,MAAM,CAAC,MAAM,EAC3B,OAAO,SAAS,MAAM,CAAC,MAAM,EAC7B,IAAI,SAAS,KAAK,GAAG,MAAM,GAAG,KAAK,EACnC,IAAI,SAAS,MAAM,CAAC,MAAM,EAC1B,IAAI,EACJ,WAAW,EACX,KAAK,SAAS,IAAI,MAAM,EAAE,EAC1B,EAAE,EACF,EAAE,EACF,IAAI,EACJ,GAAG,EACH,OAAO,EACP,MAAM,EAEN,cAAc,EAAE,cAAc,CAC5B,CAAC,EACD,CAAC,EACD,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,GAAG,EACH,OAAO,EACP,MAAM,CACP,EACD,YAAY,EAAE,CAAC,CAAC,EACd,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,EACxC,GAAG,EAAE,kBAAkB,CAAC,kBAAkB,EAC1C,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC,KACvF,MAAM,CACT,kBAAkB,CAAC,kBAAkB,EACrC,KAAK,EACL,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,CACzF,EACD,UAAU,CAAC,EAAE,UAAU,CACrB,CAAC,EACD,CAAC,EACD,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,KAAK,EACL,EAAE,EACF,EAAE,EACF,GAAG,EACH,OAAO,EACP,MAAM,CACP,giBAgDF"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Context, Effect } from "effect-app";
|
|
2
|
-
import { HttpRouter } from "effect-app/http";
|
|
3
|
-
import { makeRequestHandler } from "./makeRequestHandler.js";
|
|
4
|
-
export const RouteDescriptors = Context.GenericTag("@services/RouteDescriptors");
|
|
5
|
-
export function match(requestHandler, errorHandler, middleware) {
|
|
6
|
-
let middlewareLayer = undefined;
|
|
7
|
-
if (middleware) {
|
|
8
|
-
const { handler, makeRequestLayer } = middleware(requestHandler);
|
|
9
|
-
requestHandler = handler; // todo
|
|
10
|
-
middlewareLayer = makeRequestLayer;
|
|
11
|
-
}
|
|
12
|
-
return Effect.gen(function* () {
|
|
13
|
-
// const rdesc = yield* $(RouteDescriptors.flatMap((_) => _.get))
|
|
14
|
-
const handler = makeRequestHandler(requestHandler, // one argument if no middleware, 2 if has middleware. TODO: clean this shit up
|
|
15
|
-
errorHandler, middlewareLayer);
|
|
16
|
-
const route = HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler, { uninterruptible: requestHandler.Request.method !== "GET" } // we don't want commands to be interruptible
|
|
17
|
-
);
|
|
18
|
-
// TODO
|
|
19
|
-
// rdesc.push(makeRouteDescriptor(
|
|
20
|
-
// requestHandler.Request.path,
|
|
21
|
-
// requestHandler.Request.method,
|
|
22
|
-
// requestHandler
|
|
23
|
-
// ))
|
|
24
|
-
return route;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRzVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQTRCLDRCQUE0QixDQUFDLENBQUE7QUFFM0csTUFBTSxVQUFVLEtBQUssQ0FvQm5CLGNBZUMsRUFDRCxZQVFDLEVBQ0QsVUFrQkM7SUFFRCxJQUFJLGVBQWUsR0FBMkMsU0FBUyxDQUFBO0lBQ3ZFLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2hFLGNBQWMsR0FBRyxPQUFjLENBQUEsQ0FBQyxPQUFPO1FBQ3ZDLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQTtJQUNwQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixpRUFBaUU7UUFFakUsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBa0JoQyxjQUFxQixFQUFFLCtFQUErRTtRQUN0RyxZQUFZLEVBQ1osZUFBZSxDQUNoQixDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FDaEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQzdCLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUMzQixPQUFPLEVBQ1AsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUMsNkNBQTZDO1NBQzNHLENBQUE7UUFDRCxPQUFPO1FBQ1Asa0NBQWtDO1FBQ2xDLGlDQUFpQztRQUNqQyxtQ0FBbUM7UUFDbkMsbUJBQW1CO1FBQ25CLEtBQUs7UUFDTCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Context } from "effect-app";
|
|
2
|
-
import type { REST } from "effect-app/schema";
|
|
3
|
-
export type Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, PPath extends `/${string}`> = REST.ReqRes<any, unknown, ReqA> & {
|
|
4
|
-
method: REST.SupportedMethods;
|
|
5
|
-
path: PPath;
|
|
6
|
-
Cookie?: REST.ReqRes<CookieA, Record<string, string>, any>;
|
|
7
|
-
Path?: REST.ReqRes<PathA, Record<string, string>, any>;
|
|
8
|
-
Body?: REST.ReqRes<BodyA, unknown, any>;
|
|
9
|
-
Query?: REST.ReqRes<QueryA, Record<string, string>, any>;
|
|
10
|
-
Headers?: REST.ReqRes<HeaderA, Record<string, string>, any>;
|
|
11
|
-
Tag: Context.Tag<M, M>;
|
|
12
|
-
};
|
|
13
|
-
export interface RouteRequestHandler<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, ResA, PPath extends `/${string}`> {
|
|
14
|
-
Request: Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, PPath>;
|
|
15
|
-
Response?: REST.ReqRes<ResA, unknown, any>;
|
|
16
|
-
ResponseOpenApi?: any;
|
|
17
|
-
}
|
|
18
|
-
export declare function asRouteDescriptionAny<R extends RouteDescriptorAny>(i: R): RouteDescriptorAny;
|
|
19
|
-
export declare function arrAsRouteDescriptionAny<R extends RouteDescriptorAny>(arr: ReadonlyArray<R>): RouteDescriptorAny[];
|
|
20
|
-
export interface RouteDescriptor<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, ResA, METHOD extends REST.Methods.Rest = REST.Methods.Rest> {
|
|
21
|
-
_tag: "Schema";
|
|
22
|
-
path: `/${string}`;
|
|
23
|
-
method: METHOD;
|
|
24
|
-
handler: RouteRequestHandler<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, `/${string}`>;
|
|
25
|
-
info?: {
|
|
26
|
-
tags: ReadonlyArray<string>;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export type RouteDescriptorAny = RouteDescriptor<any, any, any, any, any, any, any, any>;
|
|
30
|
-
export declare function makeRouteDescriptor<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, ResA = void, METHOD extends REST.Methods.Rest = REST.Methods.Rest>(path: `/${string}`, method: METHOD, handler: RouteRequestHandler<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, `/${string}`>): RouteDescriptor<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, METHOD>;
|
|
31
|
-
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/schema/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
export function asRouteDescriptionAny(i) {
|
|
2
|
-
return i;
|
|
3
|
-
}
|
|
4
|
-
export function arrAsRouteDescriptionAny(arr) {
|
|
5
|
-
return arr.map(asRouteDescriptionAny);
|
|
6
|
-
}
|
|
7
|
-
export function makeRouteDescriptor(path, method, handler) {
|
|
8
|
-
return { path, handler, method, _tag: "Schema" };
|
|
9
|
-
}
|
|
10
|
-
// export function makeFromSchema<ResA>(
|
|
11
|
-
// e: RouteDescriptor<any, any, any, any, any, any, ResA, any>
|
|
12
|
-
// ) {
|
|
13
|
-
// const jsonSchema_ = OpenApi.for
|
|
14
|
-
// const jsonSchema = <E, A>(r: REST.ReqRes<A, E, any>) => jsonSchema_(r)
|
|
15
|
-
// const { Request: Req, Response: Res_, ResponseOpenApi } = e.handler
|
|
16
|
-
// const r = ResponseOpenApi ?? Res_
|
|
17
|
-
// const Res = r ? S.extractSchema(r) : S.Void
|
|
18
|
-
// // TODO EffectOption.fromNullable(Req.Headers).flatMapOpt(jsonSchema)
|
|
19
|
-
// // TODO: use the path vs body etc serialisation also in the Client.
|
|
20
|
-
// const makeReqQuerySchema = Effect.sync(() => Option.fromNullable(Req.Query)).flatMap((_) =>
|
|
21
|
-
// _.match({
|
|
22
|
-
// onNone: () => Effect.sync(() => Option.none()),
|
|
23
|
-
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
24
|
-
// })
|
|
25
|
-
// )
|
|
26
|
-
// const makeReqHeadersSchema = Effect.sync(() => Option.fromNullable(Req.Headers)).flatMap((_) =>
|
|
27
|
-
// _.match({
|
|
28
|
-
// onNone: () => Effect.sync(() => Option.none()),
|
|
29
|
-
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
30
|
-
// })
|
|
31
|
-
// )
|
|
32
|
-
// const makeReqCookieSchema = Effect.sync(() => Option.fromNullable(Req.Cookie)).flatMap((_) =>
|
|
33
|
-
// _.match({
|
|
34
|
-
// onNone: () => Effect.sync(() => Option.none()),
|
|
35
|
-
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
36
|
-
// })
|
|
37
|
-
// )
|
|
38
|
-
// const makeReqPathSchema = Effect.sync(() => Option.fromNullable(Req.Path)).flatMap((_) =>
|
|
39
|
-
// _.match({
|
|
40
|
-
// onNone: () => Effect.sync(() => Option.none()),
|
|
41
|
-
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
42
|
-
// })
|
|
43
|
-
// )
|
|
44
|
-
// const makeReqBodySchema = Effect.sync(() => Option.fromNullable(Req.Body)).flatMap((_) =>
|
|
45
|
-
// _.match({
|
|
46
|
-
// onNone: () => Effect.sync(() => Option.none()),
|
|
47
|
-
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
48
|
-
// })
|
|
49
|
-
// )
|
|
50
|
-
// // const makeReqSchema = schema(Req)
|
|
51
|
-
// const makeResSchema = jsonSchema_(Res)
|
|
52
|
-
// function makeParameters(inn: ParameterLocation) {
|
|
53
|
-
// return (a: Option<JSONSchema | SubSchema>) => {
|
|
54
|
-
// return a
|
|
55
|
-
// .flatMap((o) => (isObjectSchema(o) ? Option.some(o) : Option.none()))
|
|
56
|
-
// .map((x) => {
|
|
57
|
-
// // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
58
|
-
// return Object.keys(x.properties!).map((p) => {
|
|
59
|
-
// // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
60
|
-
// const schema = x.properties![p]
|
|
61
|
-
// const required = Boolean(x.required?.includes(p))
|
|
62
|
-
// return { name: p, in: inn, required, schema }
|
|
63
|
-
// })
|
|
64
|
-
// })
|
|
65
|
-
// .getOrElse(() => [])
|
|
66
|
-
// }
|
|
67
|
-
// }
|
|
68
|
-
// return Effect
|
|
69
|
-
// .all({
|
|
70
|
-
// req: jsonSchema(Req.Model),
|
|
71
|
-
// reqQuery: makeReqQuerySchema,
|
|
72
|
-
// reqHeaders: makeReqHeadersSchema,
|
|
73
|
-
// reqBody: makeReqBodySchema,
|
|
74
|
-
// reqPath: makeReqPathSchema,
|
|
75
|
-
// reqCookie: makeReqCookieSchema,
|
|
76
|
-
// res: makeResSchema
|
|
77
|
-
// })
|
|
78
|
-
// .map((_) => {
|
|
79
|
-
// // console.log("$$$ REQ", _.req)
|
|
80
|
-
// const isEmpty = !e.handler.Response || e.handler.Response === S.Void
|
|
81
|
-
// return {
|
|
82
|
-
// path: e.path,
|
|
83
|
-
// method: e.method.toLowerCase(),
|
|
84
|
-
// tags: e.info?.tags,
|
|
85
|
-
// description: _.req?.description,
|
|
86
|
-
// summary: _.req?.summary,
|
|
87
|
-
// operationId: _.req?.title,
|
|
88
|
-
// parameters: [
|
|
89
|
-
// ...makeParameters("path")(_.reqPath),
|
|
90
|
-
// ...makeParameters("query")(_.reqQuery),
|
|
91
|
-
// ...makeParameters("header")(_.reqHeaders),
|
|
92
|
-
// ...makeParameters("cookie")(_.reqCookie)
|
|
93
|
-
// ],
|
|
94
|
-
// requestBody: _
|
|
95
|
-
// .reqBody
|
|
96
|
-
// .map((schema) => ({
|
|
97
|
-
// content: { "application/json": { schema } }
|
|
98
|
-
// }))
|
|
99
|
-
// .value,
|
|
100
|
-
// responses: [
|
|
101
|
-
// isEmpty
|
|
102
|
-
// ? new Response(204, { description: "Empty" })
|
|
103
|
-
// : new Response(200, {
|
|
104
|
-
// description: "OK",
|
|
105
|
-
// content: { "application/json": { schema: _.res } }
|
|
106
|
-
// }),
|
|
107
|
-
// new Response(400, { description: "ValidationError" })
|
|
108
|
-
// ]
|
|
109
|
-
// .concat(
|
|
110
|
-
// e.path.includes(":") && isEmpty
|
|
111
|
-
// ? [new Response(404, { description: "NotFoundError" })]
|
|
112
|
-
// : []
|
|
113
|
-
// )
|
|
114
|
-
// }
|
|
115
|
-
// })
|
|
116
|
-
// }
|
|
117
|
-
// class Response {
|
|
118
|
-
// constructor(
|
|
119
|
-
// public readonly statusCode: number,
|
|
120
|
-
// public readonly type: any // string | JSONSchema | SubSchema
|
|
121
|
-
// ) {}
|
|
122
|
-
// }
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9zY2hlbWEvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5Q0EsTUFBTSxVQUFVLHFCQUFxQixDQUErQixDQUFJO0lBQ3RFLE9BQU8sQ0FBdUIsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxHQUFxQjtJQUVyQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBaUNELE1BQU0sVUFBVSxtQkFBbUIsQ0FXakMsSUFBa0IsRUFDbEIsTUFBYyxFQUNkLE9BVUM7SUFZRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0FBQ2xELENBQUM7QUFFRCx3Q0FBd0M7QUFDeEMsZ0VBQWdFO0FBQ2hFLE1BQU07QUFDTixvQ0FBb0M7QUFDcEMsMkVBQTJFO0FBQzNFLHdFQUF3RTtBQUN4RSxzQ0FBc0M7QUFDdEMsZ0RBQWdEO0FBQ2hELDBFQUEwRTtBQUMxRSx3RUFBd0U7QUFDeEUsZ0dBQWdHO0FBQ2hHLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sb0dBQW9HO0FBQ3BHLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sa0dBQWtHO0FBQ2xHLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sOEZBQThGO0FBQzlGLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sOEZBQThGO0FBQzlGLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04seUNBQXlDO0FBRXpDLDJDQUEyQztBQUUzQyxzREFBc0Q7QUFDdEQsc0RBQXNEO0FBQ3RELGlCQUFpQjtBQUNqQixnRkFBZ0Y7QUFDaEYsd0JBQXdCO0FBQ3hCLGlGQUFpRjtBQUNqRiwyREFBMkQ7QUFDM0QsbUZBQW1GO0FBQ25GLDhDQUE4QztBQUM5QyxnRUFBZ0U7QUFDaEUsNERBQTREO0FBQzVELGVBQWU7QUFDZixhQUFhO0FBQ2IsK0JBQStCO0FBQy9CLFFBQVE7QUFDUixNQUFNO0FBRU4sa0JBQWtCO0FBQ2xCLGFBQWE7QUFDYixvQ0FBb0M7QUFDcEMsc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQyxvQ0FBb0M7QUFDcEMsb0NBQW9DO0FBQ3BDLHdDQUF3QztBQUN4QywyQkFBMkI7QUFDM0IsU0FBUztBQUNULG9CQUFvQjtBQUNwQix5Q0FBeUM7QUFDekMsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUNqQix3QkFBd0I7QUFDeEIsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5QiwyQ0FBMkM7QUFDM0MsbUNBQW1DO0FBQ25DLHFDQUFxQztBQUNyQyx3QkFBd0I7QUFDeEIsa0RBQWtEO0FBQ2xELG9EQUFvRDtBQUNwRCx1REFBdUQ7QUFDdkQscURBQXFEO0FBQ3JELGFBQWE7QUFDYix5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCLGdDQUFnQztBQUNoQywwREFBMEQ7QUFDMUQsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtBQUNwQix1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCLDREQUE0RDtBQUM1RCxvQ0FBb0M7QUFDcEMsbUNBQW1DO0FBQ25DLG1FQUFtRTtBQUNuRSxrQkFBa0I7QUFDbEIsa0VBQWtFO0FBQ2xFLFlBQVk7QUFDWixxQkFBcUI7QUFDckIsOENBQThDO0FBQzlDLHdFQUF3RTtBQUN4RSxxQkFBcUI7QUFDckIsY0FBYztBQUNkLFVBQVU7QUFDVixTQUFTO0FBQ1QsSUFBSTtBQUVKLG1CQUFtQjtBQUNuQixpQkFBaUI7QUFDakIsMENBQTBDO0FBQzFDLG1FQUFtRTtBQUNuRSxTQUFTO0FBQ1QsSUFBSSJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing2/DynamicMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
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 { Rpc } from "@effect/rpc";
|
|
5
|
-
import { S } from "effect-app";
|
|
6
|
-
const merge = (a, b) =>
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
8
|
-
a !== undefined && b.length ? S.Union(a, ...b) : a !== undefined ? a : b.length ? S.Union(...b) : S.Never;
|
|
9
|
-
export const makeRpcClient = (errors, generalErrors) => {
|
|
10
|
-
function TaggedRequest() {
|
|
11
|
-
// TODO: filter errors based on config + take care of inversion
|
|
12
|
-
const errorSchemas = Object.values(errors);
|
|
13
|
-
return ((tag, fields, config) => {
|
|
14
|
-
const req = S.TaggedRequest()(tag, {
|
|
15
|
-
payload: fields,
|
|
16
|
-
failure: merge(config?.failure, [...errorSchemas, generalErrors]),
|
|
17
|
-
success: config?.success ?? S.Void
|
|
18
|
-
});
|
|
19
|
-
return Object.assign(req, { config });
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return {
|
|
23
|
-
TaggedRequest
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
export const makeRpc = (middleware) => {
|
|
27
|
-
return {
|
|
28
|
-
effect: (schema, handler, moduleName) => {
|
|
29
|
-
return Rpc.effect(schema, middleware.execute(schema, handler, moduleName));
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcyL0R5bmFtaWNNaWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCx3REFBd0Q7QUFDeEQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFakMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQW9FOUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBYSxFQUFFLEVBQUU7QUFDdEMsaUVBQWlFO0FBQ2pFLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFFM0csTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBSzNCLE1BQTZDLEVBQzdDLGFBQTZCLEVBQzdCLEVBQUU7SUFHRixTQUFTLGFBQWE7UUFxRXBCLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE9BQU8sQ0FBQyxDQUNOLEdBQVEsRUFDUixNQUFjLEVBQ2QsTUFBVSxFQUNWLEVBQUU7WUFDRixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFRLENBQUMsR0FBRyxFQUFFO2dCQUN2QyxPQUFPLEVBQUUsTUFBTTtnQkFDZixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUk7YUFDbkMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFRLENBQUE7SUFDWCxDQUFDO0lBRUQsT0FBTztRQUNMLGFBQWE7S0FDZCxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBMEJELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUNyQixVQUF1QyxFQUN2QyxFQUFFO0lBQ0YsT0FBTztRQUNMLE1BQU0sRUFBRSxDQUNOLE1BQXFDLEVBQ3JDLE9BTUMsRUFDRCxVQUFtQixFQUNuQixFQUFFO1lBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUNmLE1BQU0sRUFDTixVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQ2hELENBQUE7UUFDSCxDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQSJ9
|