@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.
- package/CHANGELOG.md +19 -0
- package/_cjs/api/internal/auth.cjs +3 -1
- package/_cjs/api/internal/auth.cjs.map +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/internal/auth.d.ts +8 -1
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +4 -2
- 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/internal/auth.ts +9 -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/_cjs/api/{routing2 → routing}/DynamicMiddleware.cjs +0 -0
- /package/dist/api/{routing2 → routing}/DynamicMiddleware.d.ts +0 -0
- /package/src/api/{routing2 → routing}/DynamicMiddleware.ts +0 -0
package/dist/api/routing.js
CHANGED
|
@@ -1,10 +1,117 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
1
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
/*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
/*
|
|
5
|
+
TODO: Effect.retry(r2, optimisticConcurrencySchedule) / was for PATCH only
|
|
6
|
+
TODO: uninteruptible commands! was for All except GET.
|
|
7
|
+
*/
|
|
8
|
+
import { allLower } from "@effect-app/core/Effect";
|
|
9
|
+
import { typedKeysOf } from "@effect-app/core/utils";
|
|
10
|
+
import { RpcRouter } from "@effect/rpc";
|
|
11
|
+
import { Chunk, Context, Effect, FiberRef, Predicate, Stream } from "effect-app";
|
|
12
|
+
import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
13
|
+
import { makeRpc } from "./routing/DynamicMiddleware.js";
|
|
14
|
+
/**
|
|
15
|
+
* Plain jane JSON version
|
|
16
|
+
*/
|
|
17
|
+
export const toHttpApp = (self, options) => {
|
|
18
|
+
const handler = RpcRouter.toHandler(self, options);
|
|
19
|
+
return Effect.withFiberRuntime((fiber) => {
|
|
20
|
+
const context = fiber.getFiberRef(FiberRef.currentContext);
|
|
21
|
+
const request = Context.unsafeGet(context, HttpServerRequest.HttpServerRequest);
|
|
22
|
+
return Effect.flatMap(request.json, (_) => handler(_).pipe(Stream.provideContext(context), Stream.runCollect, Effect.map((_) => Chunk.toReadonlyArray(_)), Effect.andThen((_) => HttpServerResponse.json(_)), Effect.orDie));
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export const makeRouter = (middleware) => {
|
|
26
|
+
const rpc = makeRpc(middleware);
|
|
27
|
+
function matchFor(rsc) {
|
|
28
|
+
const meta = rsc.meta;
|
|
29
|
+
if (!meta)
|
|
30
|
+
throw new Error("Resource has no meta specified"); // TODO: do something with moduleName+cur etc.
|
|
31
|
+
const filtered = typedKeysOf(rsc).reduce((acc, cur) => {
|
|
32
|
+
if (Predicate.isObject(rsc[cur]) && rsc[cur]["success"]) {
|
|
33
|
+
acc[cur] = rsc[cur];
|
|
34
|
+
}
|
|
35
|
+
return acc;
|
|
36
|
+
}, {});
|
|
37
|
+
const matchWithServices = (action) => {
|
|
38
|
+
return (services, f) => (req) => Effect.andThen(Effect.all({ svc: allLower(services), ctx: middleware.makeContext }), ({ ctx, svc }) => f(req, { ...svc, ...ctx, Response: rsc[action].success }));
|
|
39
|
+
};
|
|
40
|
+
const controllers = (controllers) => {
|
|
41
|
+
const handlers = typedKeysOf(filtered).reduce((acc, cur) => {
|
|
42
|
+
;
|
|
43
|
+
acc[cur] = {
|
|
44
|
+
h: controllers[cur].handler,
|
|
45
|
+
Request: rsc[cur]
|
|
46
|
+
};
|
|
47
|
+
return acc;
|
|
48
|
+
}, {});
|
|
49
|
+
const mapped = typedKeysOf(handlers).reduce((acc, cur) => {
|
|
50
|
+
const handler = handlers[cur];
|
|
51
|
+
const req = handler.Request;
|
|
52
|
+
acc[cur] = rpc.effect(req, handler.h, meta.moduleName); // TODO
|
|
53
|
+
return acc;
|
|
54
|
+
}, {});
|
|
55
|
+
const router = RpcRouter.make(...Object.values(mapped));
|
|
56
|
+
return HttpRouter.empty.pipe(HttpRouter.all(("/rpc/" + rsc.meta.moduleName), toHttpApp(router),
|
|
57
|
+
// TODO: not queries.
|
|
58
|
+
{ uninterruptible: true }));
|
|
59
|
+
};
|
|
60
|
+
const r = {
|
|
61
|
+
controllers,
|
|
62
|
+
...typedKeysOf(filtered).reduce((prev, cur) => {
|
|
63
|
+
;
|
|
64
|
+
prev[cur] = (svcOrFnOrEffect, fnOrNone) => {
|
|
65
|
+
const stack = new Error().stack?.split("\n").slice(2).join("\n");
|
|
66
|
+
return Effect.isEffect(svcOrFnOrEffect)
|
|
67
|
+
? class {
|
|
68
|
+
static stack = stack;
|
|
69
|
+
static _tag = "d";
|
|
70
|
+
static handler = () => svcOrFnOrEffect;
|
|
71
|
+
}
|
|
72
|
+
: typeof svcOrFnOrEffect === "function"
|
|
73
|
+
? class {
|
|
74
|
+
static stack = stack;
|
|
75
|
+
static _tag = "d";
|
|
76
|
+
static handler = (req) => Effect.andThen(Effect.all({ ctx: middleware.makeContext }), ({ ctx }) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].success }));
|
|
77
|
+
}
|
|
78
|
+
: class {
|
|
79
|
+
static stack = stack;
|
|
80
|
+
static _tag = "d";
|
|
81
|
+
static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => {
|
|
85
|
+
const stack = new Error().stack?.split("\n").slice(2).join("\n");
|
|
86
|
+
return Effect.isEffect(svcOrFnOrEffect)
|
|
87
|
+
? class {
|
|
88
|
+
static stack = stack;
|
|
89
|
+
static _tag = "raw";
|
|
90
|
+
static handler = () => svcOrFnOrEffect;
|
|
91
|
+
}
|
|
92
|
+
: typeof svcOrFnOrEffect === "function"
|
|
93
|
+
? class {
|
|
94
|
+
static stack = stack;
|
|
95
|
+
static _tag = "raw";
|
|
96
|
+
static handler = (req, ctx) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].success });
|
|
97
|
+
}
|
|
98
|
+
: class {
|
|
99
|
+
static stack = stack;
|
|
100
|
+
static _tag = "raw";
|
|
101
|
+
static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
return prev;
|
|
105
|
+
}, {})
|
|
106
|
+
};
|
|
107
|
+
return r;
|
|
108
|
+
}
|
|
109
|
+
function matchAll(handlers) {
|
|
110
|
+
const r = typedKeysOf(handlers).reduce((acc, cur) => {
|
|
111
|
+
return HttpRouter.concat(acc, handlers[cur]);
|
|
112
|
+
}, HttpRouter.empty);
|
|
113
|
+
return r;
|
|
114
|
+
}
|
|
115
|
+
return { matchAll, matchFor };
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFDMUQsNERBQTREO0FBQzVELHVEQUF1RDtBQUN2RDs7O0VBR0U7QUFDRixPQUFPLEVBQUUsUUFBUSxFQUE0QyxNQUFNLHlCQUF5QixDQUFBO0FBQzVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUlwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVoRixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFbkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBZXhEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQTBDLElBQU8sRUFBRSxPQUUzRSxFQUdDLEVBQUU7SUFDRixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNsRCxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDL0UsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUNuQixPQUFPLENBQUMsSUFBSSxFQUNaLENBQUMsQ0FBQyxFQUFFLEVBQUUs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
|
|
@@ -26,7 +26,7 @@ export declare function byIdAndSaveWithPure<T extends {
|
|
|
26
26
|
id: unknown;
|
|
27
27
|
}, Encoded extends {
|
|
28
28
|
id: string;
|
|
29
|
-
}, Evt, ItemType extends string>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>, id: T["id"]): <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) => Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | import("effect-app/client/errors").InvalidStateError |
|
|
29
|
+
}, Evt, ItemType extends string>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>, id: T["id"]): <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) => Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | E | import("effect-app/client/errors").InvalidStateError | NotFoundError<ItemType>, Exclude<R, {
|
|
30
30
|
env: import("effect-app/Pure").PureEnv<Evt, T, S2>;
|
|
31
31
|
}>>;
|
|
32
32
|
/**
|
|
@@ -39,7 +39,7 @@ export declare function handleByIdAndSaveWithPure<T extends {
|
|
|
39
39
|
id: string;
|
|
40
40
|
}, Evt, ItemType extends string>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>): <Req extends {
|
|
41
41
|
id: T["id"];
|
|
42
|
-
}, Context, R, A, E, S2 extends T>(pure: (req: Req, ctx: Context) => Effect<A, E, FixEnv<R, Evt, T, S2>>) => (req: Req, ctx: Context) => Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | import("effect-app/client/errors").InvalidStateError |
|
|
42
|
+
}, Context, R, A, E, S2 extends T>(pure: (req: Req, ctx: Context) => Effect<A, E, FixEnv<R, Evt, T, S2>>) => (req: Req, ctx: Context) => Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | E | import("effect-app/client/errors").InvalidStateError | NotFoundError<ItemType>, Exclude<R, {
|
|
43
43
|
env: import("effect-app/Pure").PureEnv<Evt, T, S2>;
|
|
44
44
|
}>>;
|
|
45
45
|
/**
|
|
@@ -49,7 +49,7 @@ export declare function saveManyWithPure_<R, T extends {
|
|
|
49
49
|
id: unknown;
|
|
50
50
|
}, Encoded extends {
|
|
51
51
|
id: string;
|
|
52
|
-
}, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | import("effect-app/client/errors").InvalidStateError
|
|
52
|
+
}, A, E, Evt, S1 extends T, S2 extends T, ItemType extends string>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>, items: Iterable<S1>, pure: Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | E | import("effect-app/client/errors").InvalidStateError, Exclude<R, {
|
|
53
53
|
env: import("effect-app/Pure").PureEnv<Evt, readonly S1[], readonly S2[]>;
|
|
54
54
|
}>>;
|
|
55
55
|
/**
|
|
@@ -66,7 +66,7 @@ export declare function saveAllWithEffectInt<T extends {
|
|
|
66
66
|
id: unknown;
|
|
67
67
|
}, Encoded extends {
|
|
68
68
|
id: string;
|
|
69
|
-
}, P extends T, Evt, ItemType extends string, R, E, A>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>, gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>): Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | import("effect-app/client/errors").InvalidStateError
|
|
69
|
+
}, P extends T, Evt, ItemType extends string, R, E, A>(self: RepositoryBaseC<T, Encoded, Evt, ItemType>, gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>): Effect.Effect<A, import("effect-app/client/errors").OptimisticConcurrencyException | E | import("effect-app/client/errors").InvalidStateError, R>;
|
|
70
70
|
/**
|
|
71
71
|
* @tsplus fluent Repository saveManyWithPureBatched
|
|
72
72
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.29.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"pure-rand": "6.1.0",
|
|
22
22
|
"redlock": "^4.2.0",
|
|
23
23
|
"@effect-app/core": "1.12.0",
|
|
24
|
-
"@effect-app/infra-adapters": "1.
|
|
25
|
-
"effect-app": "1.
|
|
26
|
-
"@effect-app/schema": "1.
|
|
24
|
+
"@effect-app/infra-adapters": "1.15.0",
|
|
25
|
+
"effect-app": "1.21.0",
|
|
26
|
+
"@effect-app/schema": "1.15.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@babel/cli": "^7.25.7",
|
|
@@ -128,44 +128,14 @@
|
|
|
128
128
|
"default": "./_cjs/api/routing.cjs"
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
|
-
"./api/routing/
|
|
131
|
+
"./api/routing/DynamicMiddleware": {
|
|
132
132
|
"import": {
|
|
133
|
-
"types": "./dist/api/routing/
|
|
134
|
-
"default": "./dist/api/routing/
|
|
133
|
+
"types": "./dist/api/routing/DynamicMiddleware.d.ts",
|
|
134
|
+
"default": "./dist/api/routing/DynamicMiddleware.js"
|
|
135
135
|
},
|
|
136
136
|
"require": {
|
|
137
|
-
"types": "./dist/api/routing/
|
|
138
|
-
"default": "./_cjs/api/routing/
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
"./api/routing/defaultErrorHandler": {
|
|
142
|
-
"import": {
|
|
143
|
-
"types": "./dist/api/routing/defaultErrorHandler.d.ts",
|
|
144
|
-
"default": "./dist/api/routing/defaultErrorHandler.js"
|
|
145
|
-
},
|
|
146
|
-
"require": {
|
|
147
|
-
"types": "./dist/api/routing/defaultErrorHandler.d.ts",
|
|
148
|
-
"default": "./_cjs/api/routing/defaultErrorHandler.cjs"
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
"./api/routing/makeRequestHandler": {
|
|
152
|
-
"import": {
|
|
153
|
-
"types": "./dist/api/routing/makeRequestHandler.d.ts",
|
|
154
|
-
"default": "./dist/api/routing/makeRequestHandler.js"
|
|
155
|
-
},
|
|
156
|
-
"require": {
|
|
157
|
-
"types": "./dist/api/routing/makeRequestHandler.d.ts",
|
|
158
|
-
"default": "./_cjs/api/routing/makeRequestHandler.cjs"
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
"./api/routing/match": {
|
|
162
|
-
"import": {
|
|
163
|
-
"types": "./dist/api/routing/match.d.ts",
|
|
164
|
-
"default": "./dist/api/routing/match.js"
|
|
165
|
-
},
|
|
166
|
-
"require": {
|
|
167
|
-
"types": "./dist/api/routing/match.d.ts",
|
|
168
|
-
"default": "./_cjs/api/routing/match.cjs"
|
|
137
|
+
"types": "./dist/api/routing/DynamicMiddleware.d.ts",
|
|
138
|
+
"default": "./_cjs/api/routing/DynamicMiddleware.cjs"
|
|
169
139
|
}
|
|
170
140
|
},
|
|
171
141
|
"./api/routing/schema/jwt": {
|
|
@@ -178,36 +148,6 @@
|
|
|
178
148
|
"default": "./_cjs/api/routing/schema/jwt.cjs"
|
|
179
149
|
}
|
|
180
150
|
},
|
|
181
|
-
"./api/routing/schema/routing": {
|
|
182
|
-
"import": {
|
|
183
|
-
"types": "./dist/api/routing/schema/routing.d.ts",
|
|
184
|
-
"default": "./dist/api/routing/schema/routing.js"
|
|
185
|
-
},
|
|
186
|
-
"require": {
|
|
187
|
-
"types": "./dist/api/routing/schema/routing.d.ts",
|
|
188
|
-
"default": "./_cjs/api/routing/schema/routing.cjs"
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
"./api/routing2": {
|
|
192
|
-
"import": {
|
|
193
|
-
"types": "./dist/api/routing2.d.ts",
|
|
194
|
-
"default": "./dist/api/routing2.js"
|
|
195
|
-
},
|
|
196
|
-
"require": {
|
|
197
|
-
"types": "./dist/api/routing2.d.ts",
|
|
198
|
-
"default": "./_cjs/api/routing2.cjs"
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
"./api/routing2/DynamicMiddleware": {
|
|
202
|
-
"import": {
|
|
203
|
-
"types": "./dist/api/routing2/DynamicMiddleware.d.ts",
|
|
204
|
-
"default": "./dist/api/routing2/DynamicMiddleware.js"
|
|
205
|
-
},
|
|
206
|
-
"require": {
|
|
207
|
-
"types": "./dist/api/routing2/DynamicMiddleware.d.ts",
|
|
208
|
-
"default": "./_cjs/api/routing2/DynamicMiddleware.cjs"
|
|
209
|
-
}
|
|
210
|
-
},
|
|
211
151
|
"./api/setupRequest": {
|
|
212
152
|
"import": {
|
|
213
153
|
"types": "./dist/api/setupRequest.d.ts",
|
|
@@ -378,16 +318,6 @@
|
|
|
378
318
|
"default": "./_cjs/rateLimit.cjs"
|
|
379
319
|
}
|
|
380
320
|
},
|
|
381
|
-
"./router": {
|
|
382
|
-
"import": {
|
|
383
|
-
"types": "./dist/router.d.ts",
|
|
384
|
-
"default": "./dist/router.js"
|
|
385
|
-
},
|
|
386
|
-
"require": {
|
|
387
|
-
"types": "./dist/router.d.ts",
|
|
388
|
-
"default": "./_cjs/router.cjs"
|
|
389
|
-
}
|
|
390
|
-
},
|
|
391
321
|
"./services/Emailer": {
|
|
392
322
|
"import": {
|
|
393
323
|
"types": "./dist/services/Emailer.d.ts",
|
package/src/api/internal/auth.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* eslint-disable unused-imports/no-unused-vars */
|
|
3
|
-
import { Effect } from "effect-app"
|
|
3
|
+
import { Data, Effect } from "effect-app"
|
|
4
4
|
import { HttpHeaders, HttpMiddleware, HttpServerRequest, HttpServerResponse } from "effect-app/http"
|
|
5
5
|
import {
|
|
6
6
|
auth,
|
|
@@ -67,3 +67,11 @@ export const checkJwt = (config: Config) => {
|
|
|
67
67
|
})
|
|
68
68
|
)
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
export class JWTError extends Data.TaggedClass("JWTError")<{
|
|
72
|
+
error:
|
|
73
|
+
| InsufficientScopeError
|
|
74
|
+
| InvalidRequestError
|
|
75
|
+
| InvalidTokenError
|
|
76
|
+
| UnauthorizedError
|
|
77
|
+
}> {}
|