@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/_cjs/api/{routing2 → routing}/DynamicMiddleware.cjs +1 -1
  3. package/_cjs/api/routing/DynamicMiddleware.cjs.map +1 -0
  4. package/_cjs/api/routing.cjs +135 -43
  5. package/_cjs/api/routing.cjs.map +1 -1
  6. package/dist/api/routing/DynamicMiddleware.d.ts.map +1 -0
  7. package/dist/api/routing/DynamicMiddleware.js +33 -0
  8. package/dist/api/routing.d.ts +100 -4
  9. package/dist/api/routing.d.ts.map +1 -1
  10. package/dist/api/routing.js +116 -9
  11. package/dist/services/Repository/ext.d.ts +4 -4
  12. package/package.json +9 -79
  13. package/src/api/{routing2 → routing}/DynamicMiddleware.ts +1 -1
  14. package/src/api/routing.ts +434 -8
  15. package/_cjs/api/routing/base.cjs +0 -135
  16. package/_cjs/api/routing/base.cjs.map +0 -1
  17. package/_cjs/api/routing/defaultErrorHandler.cjs +0 -62
  18. package/_cjs/api/routing/defaultErrorHandler.cjs.map +0 -1
  19. package/_cjs/api/routing/makeRequestHandler.cjs +0 -130
  20. package/_cjs/api/routing/makeRequestHandler.cjs.map +0 -1
  21. package/_cjs/api/routing/match.cjs +0 -40
  22. package/_cjs/api/routing/match.cjs.map +0 -1
  23. package/_cjs/api/routing/schema/routing.cjs +0 -136
  24. package/_cjs/api/routing/schema/routing.cjs.map +0 -1
  25. package/_cjs/api/routing2/DynamicMiddleware.cjs.map +0 -1
  26. package/_cjs/api/routing2.cjs +0 -142
  27. package/_cjs/api/routing2.cjs.map +0 -1
  28. package/_cjs/router.cjs +0 -170
  29. package/_cjs/router.cjs.map +0 -1
  30. package/dist/api/routing/base.d.ts +0 -97
  31. package/dist/api/routing/base.d.ts.map +0 -1
  32. package/dist/api/routing/base.js +0 -129
  33. package/dist/api/routing/defaultErrorHandler.d.ts +0 -19
  34. package/dist/api/routing/defaultErrorHandler.d.ts.map +0 -1
  35. package/dist/api/routing/defaultErrorHandler.js +0 -68
  36. package/dist/api/routing/makeRequestHandler.d.ts +0 -20
  37. package/dist/api/routing/makeRequestHandler.d.ts.map +0 -1
  38. package/dist/api/routing/makeRequestHandler.js +0 -151
  39. package/dist/api/routing/match.d.ts +0 -12
  40. package/dist/api/routing/match.d.ts.map +0 -1
  41. package/dist/api/routing/match.js +0 -27
  42. package/dist/api/routing/schema/routing.d.ts +0 -31
  43. package/dist/api/routing/schema/routing.d.ts.map +0 -1
  44. package/dist/api/routing/schema/routing.js +0 -123
  45. package/dist/api/routing2/DynamicMiddleware.d.ts.map +0 -1
  46. package/dist/api/routing2/DynamicMiddleware.js +0 -33
  47. package/dist/api/routing2.d.ts +0 -93
  48. package/dist/api/routing2.d.ts.map +0 -1
  49. package/dist/api/routing2.js +0 -117
  50. package/dist/router.d.ts +0 -91
  51. package/dist/router.d.ts.map +0 -1
  52. package/dist/router.js +0 -154
  53. package/src/api/routing/base.ts +0 -379
  54. package/src/api/routing/defaultErrorHandler.ts +0 -140
  55. package/src/api/routing/makeRequestHandler.ts +0 -343
  56. package/src/api/routing/match.ts +0 -128
  57. package/src/api/routing/schema/routing.ts +0 -237
  58. package/src/api/routing2.ts +0 -425
  59. package/src/api/writeDocs.ts.bak +0 -31
  60. package/src/router.ts +0 -619
  61. /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