@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
@@ -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
- /* eslint-disable @typescript-eslint/ban-types */
3
- // codegen:start {preset: barrel, include: routing/*.ts }
4
- export * from "./routing/base.js";
5
- export * from "./routing/defaultErrorHandler.js";
6
- export * from "./routing/makeRequestHandler.js";
7
- export * from "./routing/match.js";
8
- // codegen:end
9
- // export * from "@effect-app/infra/api/routing"
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsaURBQWlEO0FBRWpELHlEQUF5RDtBQUN6RCxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWM7QUFFZCxnREFBZ0QifQ==
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 | E | NotFoundError<ItemType>, Exclude<R, {
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 | E | NotFoundError<ItemType>, Exclude<R, {
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 | E, Exclude<R, {
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 | E, R>;
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.28.4",
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.14.0",
25
- "effect-app": "1.20.0",
26
- "@effect-app/schema": "1.14.0"
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/base": {
131
+ "./api/routing/DynamicMiddleware": {
132
132
  "import": {
133
- "types": "./dist/api/routing/base.d.ts",
134
- "default": "./dist/api/routing/base.js"
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/base.d.ts",
138
- "default": "./_cjs/api/routing/base.cjs"
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",
@@ -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
+ }> {}