@effect-app/infra 1.28.4 → 1.29.1

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 (67) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/_cjs/api/internal/auth.cjs +3 -1
  3. package/_cjs/api/internal/auth.cjs.map +1 -1
  4. package/_cjs/api/routing/DynamicMiddleware.cjs.map +1 -0
  5. package/_cjs/api/routing.cjs +135 -43
  6. package/_cjs/api/routing.cjs.map +1 -1
  7. package/dist/api/internal/auth.d.ts +8 -1
  8. package/dist/api/internal/auth.d.ts.map +1 -1
  9. package/dist/api/internal/auth.js +4 -2
  10. package/dist/api/routing/DynamicMiddleware.d.ts.map +1 -0
  11. package/dist/api/routing/DynamicMiddleware.js +33 -0
  12. package/dist/api/routing.d.ts +100 -4
  13. package/dist/api/routing.d.ts.map +1 -1
  14. package/dist/api/routing.js +116 -9
  15. package/dist/services/Repository/ext.d.ts +4 -4
  16. package/package.json +9 -79
  17. package/src/api/internal/auth.ts +9 -1
  18. package/src/api/routing.ts +434 -8
  19. package/_cjs/api/routing/base.cjs +0 -135
  20. package/_cjs/api/routing/base.cjs.map +0 -1
  21. package/_cjs/api/routing/defaultErrorHandler.cjs +0 -62
  22. package/_cjs/api/routing/defaultErrorHandler.cjs.map +0 -1
  23. package/_cjs/api/routing/makeRequestHandler.cjs +0 -130
  24. package/_cjs/api/routing/makeRequestHandler.cjs.map +0 -1
  25. package/_cjs/api/routing/match.cjs +0 -40
  26. package/_cjs/api/routing/match.cjs.map +0 -1
  27. package/_cjs/api/routing/schema/routing.cjs +0 -136
  28. package/_cjs/api/routing/schema/routing.cjs.map +0 -1
  29. package/_cjs/api/routing2/DynamicMiddleware.cjs.map +0 -1
  30. package/_cjs/api/routing2.cjs +0 -142
  31. package/_cjs/api/routing2.cjs.map +0 -1
  32. package/_cjs/router.cjs +0 -170
  33. package/_cjs/router.cjs.map +0 -1
  34. package/dist/api/routing/base.d.ts +0 -97
  35. package/dist/api/routing/base.d.ts.map +0 -1
  36. package/dist/api/routing/base.js +0 -129
  37. package/dist/api/routing/defaultErrorHandler.d.ts +0 -19
  38. package/dist/api/routing/defaultErrorHandler.d.ts.map +0 -1
  39. package/dist/api/routing/defaultErrorHandler.js +0 -68
  40. package/dist/api/routing/makeRequestHandler.d.ts +0 -20
  41. package/dist/api/routing/makeRequestHandler.d.ts.map +0 -1
  42. package/dist/api/routing/makeRequestHandler.js +0 -151
  43. package/dist/api/routing/match.d.ts +0 -12
  44. package/dist/api/routing/match.d.ts.map +0 -1
  45. package/dist/api/routing/match.js +0 -27
  46. package/dist/api/routing/schema/routing.d.ts +0 -31
  47. package/dist/api/routing/schema/routing.d.ts.map +0 -1
  48. package/dist/api/routing/schema/routing.js +0 -123
  49. package/dist/api/routing2/DynamicMiddleware.d.ts.map +0 -1
  50. package/dist/api/routing2/DynamicMiddleware.js +0 -33
  51. package/dist/api/routing2.d.ts +0 -93
  52. package/dist/api/routing2.d.ts.map +0 -1
  53. package/dist/api/routing2.js +0 -117
  54. package/dist/router.d.ts +0 -91
  55. package/dist/router.d.ts.map +0 -1
  56. package/dist/router.js +0 -154
  57. package/src/api/routing/base.ts +0 -379
  58. package/src/api/routing/defaultErrorHandler.ts +0 -140
  59. package/src/api/routing/makeRequestHandler.ts +0 -343
  60. package/src/api/routing/match.ts +0 -128
  61. package/src/api/routing/schema/routing.ts +0 -237
  62. package/src/api/routing2.ts +0 -425
  63. package/src/api/writeDocs.ts.bak +0 -31
  64. package/src/router.ts +0 -619
  65. /package/_cjs/api/{routing2 → routing}/DynamicMiddleware.cjs +0 -0
  66. /package/dist/api/{routing2 → routing}/DynamicMiddleware.d.ts +0 -0
  67. /package/src/api/{routing2 → routing}/DynamicMiddleware.ts +0 -0
package/_cjs/router.cjs DELETED
@@ -1,170 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.makeRouter = void 0;
7
- var _Effect = require("@effect-app/core/Effect");
8
- var _utils = require("@effect-app/core/utils");
9
- var _routing = require("@effect-app/infra/api/routing");
10
- var _effectApp = require("effect-app");
11
- var _http = require("effect-app/http");
12
- var _schema = require("effect-app/schema");
13
- // For CTXMap, handled by `handleRequestEnv` middleware:
14
- // ["configurationKey", ["contextKey", ServiceShape, defaultOffBoolean]]
15
- // defaultOffBoolean:
16
- // false means: if not configured, or set to false, the item is considered active.
17
- // true means: if configured as true, the item is considered active.
18
- // not active means the service is not in the context, and in route context is marked as optional.
19
- const makeRouter = (handleRequestEnv /* Middleware */) => {
20
- function match(requestHandler, errorHandler, middleware) {
21
- let middlewareLayer = undefined;
22
- if (middleware) {
23
- const {
24
- handler,
25
- makeRequestLayer
26
- } = middleware(requestHandler);
27
- requestHandler = handler; // todo
28
- middlewareLayer = makeRequestLayer;
29
- }
30
- // const rdesc = yield* RouteDescriptors.flatMap((_) => _.get)
31
- const handler = (0, _routing.makeRequestHandler)(requestHandler,
32
- // one argument if no middleware, 2 if has middleware. TODO: clean this shit up
33
- errorHandler, middlewareLayer);
34
- const route = _http.HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler.pipe(_effectApp.Effect.withSpan("Request." + requestHandler.name, {
35
- captureStackTrace: () => requestHandler.stack
36
- })));
37
- // TODO
38
- // rdesc.push(makeRouteDescriptor(
39
- // requestHandler.Request.path,
40
- // requestHandler.Request.method,
41
- // requestHandler
42
- // ))
43
- return route;
44
- }
45
- function handle(_, name, adaptResponse) {
46
- const Request = _effectApp.S.REST.extractRequest(_);
47
- const Response = _effectApp.S.REST.extractResponse(_);
48
- return h => ({
49
- adaptResponse,
50
- stack: h.stack,
51
- h: h.handler,
52
- name,
53
- Request,
54
- Response,
55
- ResponseOpenApi: _.ResponseOpenApi ?? Response,
56
- Context: null,
57
- CTX: null,
58
- rt: h._tag
59
- });
60
- }
61
- function matchFor(rsc) {
62
- const filtered = (0, _utils.typedKeysOf)(rsc).reduce((acc, cur) => {
63
- if (_effectApp.Predicate.isObject(rsc[cur]) && rsc[cur].Request) {
64
- acc[cur] = rsc[cur];
65
- }
66
- return acc;
67
- }, {});
68
- const matchWithServices = action => {
69
- return (services, f) => (req, ctx) => _effectApp.Effect.andThen((0, _Effect.allLower)(services), svc2 => f(req, {
70
- ...ctx,
71
- ...svc2,
72
- Response: rsc[action].Response
73
- }));
74
- };
75
- const controllers = controllers => {
76
- const handlers = (0, _utils.typedKeysOf)(filtered).reduce((acc, cur) => {
77
- if (cur === "meta") return acc;
78
- const m = rsc.meta;
79
- if (!m) throw new Error("Resource has no meta specified");
80
- acc[cur] = handle(rsc[cur], m.moduleName + "." + cur)(controllers[cur]);
81
- return acc;
82
- }, {});
83
- const mapped = (0, _utils.typedKeysOf)(handlers).reduce((acc, cur) => {
84
- const handler = handlers[cur];
85
- const req = handler.Request;
86
- class Request extends req {
87
- static path = "/" + handler.name + (req.path === "/" ? "" : req.path);
88
- static method = req.method === "AUTO" ? _schema.REST.determineMethod(handler.name.split(".")[1], req) : req.method;
89
- }
90
- if (req.method === "AUTO") {
91
- Object.assign(Request, {
92
- [Request.method === "GET" || Request.method === "DELETE" ? "Query" : "Body"]: req.Auto
93
- });
94
- }
95
- Object.assign(handler, {
96
- Request
97
- });
98
- acc[cur] = match(handler, errorHandler(req), handleRequestEnv // TODO
99
- );
100
- return acc;
101
- }, {});
102
- return _http.HttpRouter.fromIterable(Object.values(mapped));
103
- };
104
- const r = {
105
- controllers,
106
- ...(0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
107
- ;
108
- prev[cur] = (svcOrFnOrEffect, fnOrNone) => {
109
- const stack = new Error().stack?.split("\n").slice(2).join("\n");
110
- return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
111
- static stack = stack;
112
- static _tag = "d";
113
- static handler = () => svcOrFnOrEffect;
114
- } : typeof svcOrFnOrEffect === "function" ? class {
115
- static stack = stack;
116
- static _tag = "d";
117
- static handler = (req, ctx) => svcOrFnOrEffect(req, {
118
- ...ctx,
119
- Response: rsc[cur].Response
120
- });
121
- } : class {
122
- static stack = stack;
123
- static _tag = "d";
124
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
125
- };
126
- };
127
- prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => {
128
- const stack = new Error().stack?.split("\n").slice(2).join("\n");
129
- return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
130
- static stack = stack;
131
- static _tag = "raw";
132
- static handler = () => svcOrFnOrEffect;
133
- } : typeof svcOrFnOrEffect === "function" ? class {
134
- static stack = stack;
135
- static _tag = "raw";
136
- static handler = (req, ctx) => svcOrFnOrEffect(req, {
137
- ...ctx,
138
- Response: rsc[cur].Response
139
- });
140
- } : class {
141
- static stack = stack;
142
- static _tag = "raw";
143
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
144
- };
145
- };
146
- return prev;
147
- }, {})
148
- };
149
- return r;
150
- }
151
- const errorHandler = resourceRequest => {
152
- return (req, res, r2) => (0, _routing.defaultErrorHandler)(req, res, _effectApp.Effect.catchTag(r2, "ParseError", _ => _effectApp.Effect.die(_)), resourceRequest.failure);
153
- };
154
- /**
155
- * Gather all handlers of a module and attach them to the Server.
156
- * If no `allowAnonymous` flag is on the Request, will require a valid authenticated user.
157
- */
158
- function matchAll(handlers) {
159
- const r = (0, _utils.typedKeysOf)(handlers).reduce((acc, cur) => {
160
- return _http.HttpRouter.concat(acc, handlers[cur]);
161
- }, _http.HttpRouter.empty);
162
- return r;
163
- }
164
- return {
165
- matchFor,
166
- matchAll
167
- };
168
- };
169
- exports.makeRouter = makeRouter;
170
- //# sourceMappingURL=router.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.cjs","names":["_Effect","require","_utils","_routing","_effectApp","_http","_schema","makeRouter","handleRequestEnv","match","requestHandler","errorHandler","middleware","middlewareLayer","undefined","handler","makeRequestLayer","makeRequestHandler","route","HttpRouter","makeRoute","Request","method","path","pipe","Effect","withSpan","name","captureStackTrace","stack","handle","_","adaptResponse","S","REST","extractRequest","Response","extractResponse","h","ResponseOpenApi","Context","CTX","rt","_tag","matchFor","rsc","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","matchWithServices","action","services","f","req","ctx","andThen","allLower","svc2","controllers","handlers","m","meta","Error","moduleName","mapped","determineMethod","split","Object","assign","Auto","fromIterable","values","r","prev","svcOrFnOrEffect","fnOrNone","slice","join","isEffect","resourceRequest","res","r2","defaultErrorHandler","catchTag","die","failure","matchAll","concat","empty","exports"],"sources":["../src/router.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,97 +0,0 @@
1
- import { ValidationError } from "@effect-app/infra/errors";
2
- import type { Struct } from "@effect/schema/Schema";
3
- import * as S from "@effect/schema/Schema";
4
- import type { Context } from "effect-app";
5
- import { Effect, Option } from "effect-app";
6
- import type { REST } from "effect-app/schema";
7
- import type { Simplify } from "effect/Types";
8
- export interface ReqHandler<Req, R, E, Res, ReqSchema extends S.Schema.Any, ResSchema extends S.Schema.Any, CTX = any, Context = any> {
9
- h: (r: Req, ctx: CTX) => Effect<Res, E, R>;
10
- Request: ReqSchema;
11
- Response: ResSchema;
12
- ResponseOpenApi: any;
13
- name: string;
14
- CTX: CTX;
15
- Context: Context;
16
- rt: "raw" | "d";
17
- }
18
- export type ReqFromSchema<ReqSchema extends S.Schema<any, any, any>> = S.Schema.Type<ReqSchema>;
19
- export type Extr<T> = T extends {
20
- Model: S.Schema<any, any, any>;
21
- } ? T["Model"] : T extends S.Schema<any, any, any> ? T : never;
22
- export type ResFromSchema<ResSchema> = S.Schema.Type<Extr<ResSchema>>;
23
- export type _R<T extends Effect<any, any, any>> = [T] extends [
24
- Effect<any, any, infer R>
25
- ] ? R : never;
26
- export type _E<T extends Effect<any, any, any>> = [T] extends [
27
- Effect<any, infer E, any>
28
- ] ? E : never;
29
- export type Encode<A, E> = (a: A) => E;
30
- export declare function decodeErrors(x: unknown): unknown[];
31
- export declare function parseRequestParams<PathA extends Struct.Fields, CookieA extends Struct.Fields, QueryA extends Struct.Fields, BodyA extends Struct.Fields, HeaderA extends Struct.Fields>(parsers: RequestParsers<PathA, CookieA, QueryA, BodyA, HeaderA>): ({ body, cookies, headers, params, query }: {
32
- body: unknown;
33
- cookies: unknown;
34
- headers: unknown;
35
- params: unknown;
36
- query: unknown;
37
- }) => Effect.Effect<{
38
- body: Option<Simplify<Struct.Type<BodyA>>>;
39
- cookie: Option<Simplify<Struct.Type<CookieA>>>;
40
- headers: Option<Simplify<Struct.Type<HeaderA>>>;
41
- path: Option<Simplify<Struct.Type<PathA>>>;
42
- query: Option<Simplify<Struct.Type<QueryA>>>;
43
- }, ValidationError, never>;
44
- export declare function makeRequestParsers<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, Errors, PPath extends `/${string}`, CTX, Context, Config>(Request: RequestHandler<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, Errors, PPath, CTX, Context, Config>["Request"]): RequestParsers<PathA, CookieA, QueryA, BodyA, HeaderA>;
45
- type Decode<A> = (u: unknown) => Effect<A, unknown>;
46
- export interface RequestParsers<PathA extends Struct.Fields, CookieA extends Struct.Fields, QueryA extends Struct.Fields, BodyA extends Struct.Fields, HeaderA extends Struct.Fields> {
47
- parseHeaders: Decode<Option<Simplify<S.Struct.Type<HeaderA>>>>;
48
- parseQuery: Decode<Option<Simplify<S.Struct.Type<QueryA>>>>;
49
- parseBody: Decode<Option<Simplify<S.Struct.Type<BodyA>>>>;
50
- parsePath: Decode<Option<Simplify<S.Struct.Type<PathA>>>>;
51
- parseCookie: Decode<Option<Simplify<S.Struct.Type<CookieA>>>>;
52
- }
53
- export type EffectDeps<A> = {
54
- [K in keyof A as A[K] extends Effect<any, any, any> ? K : never]: A[K] extends Effect<any, any, any> ? A[K] : never;
55
- };
56
- export type Request<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, PPath extends `/${string}`> = REST.ReqRes<any, any, any> & {
57
- method: REST.Methods.Rest;
58
- path: PPath;
59
- Cookie?: CookieA;
60
- Path?: PathA;
61
- Body?: BodyA;
62
- Query?: QueryA;
63
- Headers?: HeaderA;
64
- Tag: Context.Tag<M, M>;
65
- ReqA?: ReqA;
66
- };
67
- export interface RequestHandlerBase<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, PPath extends `/${string}`, Config> {
68
- adaptResponse?: any;
69
- h: (i: PathA & QueryA & BodyA & {}) => Effect<ResA, ResE, R>;
70
- Request: Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, PPath>;
71
- Response: REST.ReqRes<any, any, any>;
72
- ResponseOpenApi?: any;
73
- config: Config;
74
- name: string;
75
- rt: "raw" | "d";
76
- }
77
- export interface RequestHandler<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, PPath extends `/${string}`, CTX, Context, Config> {
78
- adaptResponse?: any;
79
- h: (i: PathA & QueryA & BodyA & {}, ctx: any) => Effect<ResA, ResE, R>;
80
- Request: Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, PPath> & Config;
81
- Response: REST.ReqRes<any, any, any>;
82
- ResponseOpenApi?: any;
83
- name: string;
84
- CTX: CTX;
85
- rt: "raw" | "d";
86
- Context: Context;
87
- }
88
- export interface RequestHandlerOrig<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, PPath extends `/${string}`> {
89
- adaptResponse?: any;
90
- h: (i: PathA & QueryA & BodyA & {}) => Effect<ResA, ResE, R>;
91
- Request: Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, PPath>;
92
- Response: REST.ReqRes<any, any, any>;
93
- name: string;
94
- ResponseOpenApi?: any;
95
- }
96
- export {};
97
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/api/routing/base.ts"],"names":[],"mappings":"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"}
@@ -1,129 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/ban-types */
3
- import { ValidationError } from "@effect-app/infra/errors";
4
- import * as S from "@effect/schema/Schema";
5
- import { Cause, Effect, Exit, Option } from "effect-app";
6
- // function getErrorMessage(current: ContextEntry) {
7
- // switch (current.type.name) {
8
- // case "NonEmptyString":
9
- // return "Must not be empty"
10
- // }
11
- // if (current.type.name?.startsWith("NonEmptyReadonlyArray<")) {
12
- // return "Must not be empty"
13
- // }
14
- // return `Invalid value specified`
15
- // }
16
- export function decodeErrors(x) {
17
- return [x];
18
- }
19
- // const ValidationApplicative = Effect.getValidationApplicative(
20
- // makeAssociative<ReadonlyArray<{ type: string; errors: ReturnType<typeof decodeErrors> }>>(
21
- // (l, r) => l.concat(r)
22
- // )
23
- // )
24
- // const structValidation = DSL.structF(ValidationApplicative)
25
- export function parseRequestParams(parsers) {
26
- const handleParse = (effect) => effect.pipe(Effect.exit, Effect
27
- .flatMap((_) => Exit.isFailure(_) && !Cause.isFailure(_.cause)
28
- ? Effect.failCauseSync(() => _.cause)
29
- : Effect.sync(() => Exit.isSuccess(_)
30
- ? { _tag: "Success", value: _.value }
31
- : { _tag: "Failure", errors: Cause.failures(_.cause) })));
32
- return ({ body, cookies, headers, params, query }) => Effect
33
- .all({
34
- body: parsers
35
- .parseBody(body)
36
- .pipe(handleParse),
37
- cookie: parsers
38
- .parseCookie(cookies)
39
- .pipe(handleParse),
40
- headers: parsers
41
- .parseHeaders(headers)
42
- .pipe(handleParse),
43
- query: parsers
44
- .parseQuery(query)
45
- .pipe(handleParse),
46
- path: parsers
47
- .parsePath(params)
48
- .pipe(handleParse)
49
- })
50
- .pipe(Effect
51
- .flatMap(({ body, cookie, headers, path, query }) => {
52
- const errors = [];
53
- if (body._tag === "Failure") {
54
- errors.push(makeError("body")(body.errors));
55
- }
56
- if (cookie._tag === "Failure") {
57
- errors.push(makeError("cookie")(cookie.errors));
58
- }
59
- if (headers._tag === "Failure") {
60
- errors.push(makeError("headers")(headers.errors));
61
- }
62
- if (path._tag === "Failure") {
63
- errors.push(makeError("path")(path.errors));
64
- }
65
- if (query._tag === "Failure") {
66
- errors.push(makeError("query")(query.errors));
67
- }
68
- if (errors.length) {
69
- return new ValidationError({ errors });
70
- }
71
- return Effect.sync(() => ({
72
- body: body.value,
73
- cookie: cookie.value,
74
- headers: headers.value,
75
- path: path.value,
76
- query: query.value
77
- }));
78
- }));
79
- }
80
- // // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
- // function mapErrors_<E, NE, NER extends Record<string, Effect<any, E, any>>>(
82
- // t: NER, // TODO: enforce non empty
83
- // mapErrors: (k: keyof NER) => (err: E) => NE
84
- // ): {
85
- // [K in keyof NER]: Effect<_R<NER[K]>, NE, Effect.Success<NER[K]>>
86
- // } {
87
- // return typedKeysOf(t).reduce(
88
- // (prev, cur) => {
89
- // prev[cur] = t[cur].mapError(mapErrors(cur))
90
- // return prev
91
- // },
92
- // {} as {
93
- // [K in keyof NER]: Effect<_R<NER[K]>, NE, Effect.Success<NER[K]>>
94
- // }
95
- // )
96
- // }
97
- function makeError(type) {
98
- return (e) => [{ type, errors: decodeErrors(e) }];
99
- }
100
- export function makeRequestParsers(Request) {
101
- const ph = Effect.sync(() => Option
102
- .fromNullable(Request.Headers)
103
- .pipe(Option.map((s) => s), Option.map(S.decodeUnknown)));
104
- const parseHeaders = (u) => Effect.flatMapOption(ph, (d) => d(u));
105
- const pq = Effect.sync(() => Option
106
- .fromNullable(Request.Query)
107
- .pipe(Option.map((s) => s), Option.map(S.decodeUnknown)));
108
- const parseQuery = (u) => Effect.flatMapOption(pq, (d) => d(u));
109
- const pb = Effect.sync(() => Option
110
- .fromNullable(Request.Body)
111
- .pipe(Option.map((s) => s), Option.map(S.decodeUnknown)));
112
- const parseBody = (u) => Effect.flatMapOption(pb, (d) => d(u));
113
- const pp = Effect.sync(() => Option
114
- .fromNullable(Request.Path)
115
- .pipe(Option.map((s) => s), Option.map(S.decodeUnknown)));
116
- const parsePath = (u) => Effect.flatMapOption(pp, (d) => d(u));
117
- const pc = Effect.sync(() => Option
118
- .fromNullable(Request.Cookie)
119
- .pipe(Option.map((s) => s), Option.map(S.decodeUnknown)));
120
- const parseCookie = (u) => Effect.flatMapOption(pc, (d) => d(u));
121
- return {
122
- parseBody,
123
- parseCookie,
124
- parseHeaders,
125
- parsePath,
126
- parseQuery
127
- };
128
- }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxpREFBaUQ7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTFELE9BQU8sS0FBSyxDQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFFMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQTRDeEQsb0RBQW9EO0FBQ3BELGlDQUFpQztBQUNqQyw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLE1BQU07QUFDTixtRUFBbUU7QUFDbkUsaUNBQWlDO0FBQ2pDLE1BQU07QUFDTixxQ0FBcUM7QUFDckMsSUFBSTtBQUNKLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBVTtJQUNyQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDWixDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLCtGQUErRjtBQUMvRiw0QkFBNEI7QUFDNUIsTUFBTTtBQUNOLElBQUk7QUFFSiw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLGtCQUFrQixDQU9oQyxPQUErRDtJQUUvRCxNQUFNLFdBQVcsR0FBRyxDQUFVLE1BQXVCLEVBQUUsRUFBRSxDQUN2RCxNQUFNLENBQUMsSUFBSSxDQUNULE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTTtTQUNILE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1QyxDQUFDLENBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFvQztRQUN6RSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBa0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUM5QyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUN6RCxDQUNKLENBQ0osQ0FBQTtJQUNILE9BQU8sQ0FDTCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBTXRDLEVBQ0QsRUFBRSxDQUNGLE1BQU07U0FDSCxHQUFHLENBQUM7UUFDSCxJQUFJLEVBQUUsT0FBTzthQUNWLFNBQVMsQ0FBQyxJQUFJLENBQUM7YUFDZixJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxPQUFPO2FBQ1osV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxPQUFPO2FBQ2IsWUFBWSxDQUFDLE9BQU8sQ0FBQzthQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BCLEtBQUssRUFBRSxPQUFPO2FBQ1gsVUFBVSxDQUFDLEtBQUssQ0FBQzthQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BCLElBQUksRUFBRSxPQUFPO2FBQ1YsU0FBUyxDQUFDLE1BQU0sQ0FBQzthQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDO0tBQ3JCLENBQUM7U0FDRCxJQUFJLENBQUMsTUFBTTtTQUNULE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDbEQsTUFBTSxNQUFNLEdBQWMsRUFBRSxDQUFBO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUN4QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFNO1lBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBTTtZQUNyQixPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQU07WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFNO1lBQ2pCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBTTtTQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDWCxDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLCtFQUErRTtBQUMvRSx1Q0FBdUM7QUFDdkMsZ0RBQWdEO0FBQ2hELE9BQU87QUFDUCxxRUFBcUU7QUFDckUsTUFBTTtBQUNOLGtDQUFrQztBQUNsQyx1QkFBdUI7QUFDdkIsb0RBQW9EO0FBQ3BELG9CQUFvQjtBQUNwQixTQUFTO0FBQ1QsY0FBYztBQUNkLHlFQUF5RTtBQUN6RSxRQUFRO0FBQ1IsTUFBTTtBQUNOLElBQUk7QUFFSixTQUFTLFNBQVMsQ0FBQyxJQUFZO0lBQzdCLE9BQU8sQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FnQmhDLE9BZVk7SUFFWixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUMxQixNQUFNO1NBQ0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDN0IsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQTZCLENBQUMsRUFDaEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQzVCLENBQ0osQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFMUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDMUIsTUFBTTtTQUNILFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQzNCLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUE2QixDQUFDLEVBQ2hELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUM1QixDQUNKLENBQUE7SUFDRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXhFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQzFCLE1BQU07U0FDSCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztTQUMxQixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBNkIsQ0FBQyxFQUNoRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FDNUIsQ0FDSixDQUFBO0lBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUV2RSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUMxQixNQUFNO1NBQ0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDMUIsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQTZCLENBQUMsRUFDaEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQzVCLENBQ0osQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFdkUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDMUIsTUFBTTtTQUNILFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzVCLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUE2QixDQUFDLEVBQ2hELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUM1QixDQUNKLENBQUE7SUFDRCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXpFLE9BQU87UUFDTCxTQUFTO1FBQ1QsV0FBVztRQUNYLFlBQVk7UUFDWixTQUFTO1FBQ1QsVUFBVTtLQUNYLENBQUE7QUFDSCxDQUFDIn0=
@@ -1,19 +0,0 @@
1
- import type { Schema } from "@effect-app/schema";
2
- import { Effect } from "effect-app";
3
- import type { SupportedErrors } from "effect-app/client/errors";
4
- import { ValidationError } from "effect-app/client/errors";
5
- import { type HttpServerRequest, HttpServerResponse } from "effect-app/http";
6
- import type { InsufficientScopeError, InvalidRequestError, InvalidTokenError, UnauthorizedError as JWTUnauthorizedError } from "express-oauth2-jwt-bearer";
7
- declare const JWTError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
8
- readonly _tag: "JWTError";
9
- };
10
- export declare class JWTError extends JWTError_base<{
11
- error: InsufficientScopeError | InvalidRequestError | InvalidTokenError | JWTUnauthorizedError;
12
- }> {
13
- }
14
- export declare function defaultBasicErrorHandler<R>(_req: HttpServerRequest.HttpServerRequest, res: HttpServerResponse.HttpServerResponse, r2: Effect<HttpServerResponse.HttpServerResponse, ValidationError, R>): Effect.Effect<HttpServerResponse.HttpServerResponse, never, R>;
15
- export declare function defaultErrorHandler<R, A extends {
16
- _tag: string;
17
- } = never>(req: HttpServerRequest.HttpServerRequest, res: HttpServerResponse.HttpServerResponse, r2: Effect<HttpServerResponse.HttpServerResponse, SupportedErrors | JWTError, R>, customErrorSchema?: Schema<A, unknown>): Effect.Effect<HttpServerResponse.HttpServerResponse, never, R>;
18
- export {};
19
- //# sourceMappingURL=defaultErrorHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultErrorHandler.d.ts","sourceRoot":"","sources":["../../../src/api/routing/defaultErrorHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAe,MAAM,EAAe,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAOL,eAAe,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAyB,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACnG,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,IAAI,oBAAoB,EAC1C,MAAM,2BAA2B,CAAA;;;;AAGlC,qBAAa,QAAS,SAAQ,cAA6B;IACzD,KAAK,EACD,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,CAAA;CACzB,CAAC;CAAG;AAIL,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,EACzC,GAAG,EAAE,kBAAkB,CAAC,kBAAkB,EAC1C,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,kEAoBtE;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,EACvE,GAAG,EAAE,iBAAiB,CAAC,iBAAiB,EACxC,GAAG,EAAE,kBAAkB,CAAC,kBAAkB,EAC1C,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,eAAe,GAAG,QAAQ,EAAE,CAAC,CAAC,EAChF,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,kEA0EvC"}
@@ -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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"}