@effect-app/infra 2.78.7 → 2.78.8
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 +6 -0
- package/dist/api/routing/middleware/ContextProvider.d.ts +17 -12
- package/dist/api/routing/middleware/ContextProvider.d.ts.map +1 -1
- package/dist/api/routing/middleware/ContextProvider.js +14 -5
- package/package.json +1 -1
- package/src/api/routing/middleware/ContextProvider.ts +83 -28
- package/test/controller.test.ts +84 -3
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/controller.legacy2.test.d.ts.map +0 -1
- package/test/dist/controller.legacy3.test.d.ts.map +0 -1
- package/test/dist/controller.test copy.d.ts +0 -169
- package/test/dist/controller.test copy.d.ts.map +0 -1
- package/test/dist/controller.test copy.js +0 -152
- package/test/dist/controller6.test.d.ts.map +0 -1
- package/test/dist/controller7.test.d.ts.map +0 -1
- package/test/dist/filterApi.test.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context, Effect, Layer, type NonEmptyArray, type Scope } from "effect-app";
|
|
2
2
|
import { type HttpRouter } from "effect-app/http";
|
|
3
3
|
import { type Tag } from "effect/Context";
|
|
4
|
+
import { type YieldWrap } from "effect/Utils";
|
|
4
5
|
import { type ContextTagWithDefault, type GetContext, type LayerUtils } from "../../layerUtils.js";
|
|
6
|
+
export declare namespace EffectGenUtils {
|
|
7
|
+
type Success<EG> = EG extends Effect<infer A, infer _E, infer _R> ? A : EG extends (..._: infer _3) => Generator<never, infer A, infer _2> ? A : EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer _R>>, infer A, infer _2> ? A : never;
|
|
8
|
+
type Error<EG> = EG extends Effect<infer _A, infer E, infer _R> ? E : EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never : EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer E, infer _R>>, infer _A, infer _2> ? E : never;
|
|
9
|
+
type Context<EG> = EG extends Effect<infer _A, infer _E, infer R> ? R : EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never : EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer R>>, infer _A, infer _2> ? R : never;
|
|
10
|
+
}
|
|
5
11
|
export type ContextProviderShape<ContextProviderA, ContextProviderR extends HttpRouter.HttpRouter.Provided> = Effect<Context.Context<ContextProviderA>, never, // no errors are allowed
|
|
6
12
|
ContextProviderR>;
|
|
7
13
|
export interface ContextProviderId {
|
|
@@ -11,25 +17,24 @@ export interface ContextProviderId {
|
|
|
11
17
|
* TDeps is an array of services with Default implementation
|
|
12
18
|
* each service is an effect which builds some context for each request
|
|
13
19
|
*/
|
|
14
|
-
type TDepsArr
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
_tag:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
[K in keyof TDeps]: TDeps[K]["Service"] extends Effect<Context.Context<any>, never, HttpRouter.HttpRouter.Provided> ? TDeps[K] : `HttpRouter.HttpRouter.Provided are the only requirements ${TDeps[K]["Service"]["_tag"]}'s returned effect can have`;
|
|
20
|
+
type TDepsArr<TDeps extends ReadonlyArray<any>> = {
|
|
21
|
+
[K in keyof TDeps]: TDeps[K] extends (ContextTagWithDefault.Base<Effect<Context.Context<infer _1>, never, infer _R> & {
|
|
22
|
+
_tag: infer _2;
|
|
23
|
+
}>) ? [_R] extends [HttpRouter.HttpRouter.Provided] ? TDeps[K] : `HttpRouter.HttpRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : TDeps[K] extends (ContextTagWithDefault.Base<(() => Generator<infer _YW, infer _1, infer _2>) & {
|
|
24
|
+
_tag: infer _3;
|
|
25
|
+
}>) ? [_YW] extends [never] ? TDeps[K] : [_YW] extends [YieldWrap<Effect<infer _2, never, infer _R>>] ? [_R] extends [HttpRouter.HttpRouter.Provided] ? TDeps[K] : `HttpRouter.HttpRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : "WTF are you yielding man?" : `You cannot throw errors from providers`;
|
|
21
26
|
};
|
|
22
|
-
export declare const mergeContextProviders: <TDeps extends
|
|
27
|
+
export declare const mergeContextProviders: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => {
|
|
23
28
|
dependencies: { [K in keyof TDeps]: TDeps[K]["Default"]; };
|
|
24
|
-
effect: Effect.Effect<Effect.Effect<Context.Context<GetContext<
|
|
29
|
+
effect: Effect.Effect<Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Tag.Service<TDeps[number]>>>>, never, EffectGenUtils.Context<Tag.Service<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
|
|
25
30
|
};
|
|
26
31
|
export declare const ContextProvider: <ContextProviderA, MakeContextProviderE, MakeContextProviderR, ContextProviderR extends HttpRouter.HttpRouter.Provided, Dependencies extends NonEmptyArray<Layer.Layer.Any>>(input: {
|
|
27
|
-
effect: Effect<Effect<ContextProviderA, never, ContextProviderR
|
|
32
|
+
effect: Effect<Effect<ContextProviderA, never, ContextProviderR> | (() => Generator<YieldWrap<Effect<any, never, ContextProviderR>>, ContextProviderA, any>), MakeContextProviderE, MakeContextProviderR | Scope>;
|
|
28
33
|
dependencies?: Dependencies;
|
|
29
34
|
}) => Context.Tag<ContextProviderId, Effect<ContextProviderA, never, ContextProviderR>> & {
|
|
30
35
|
Default: Layer.Layer<ContextProviderId, MakeContextProviderE | LayerUtils.GetLayersError<Dependencies>, Exclude<MakeContextProviderR, LayerUtils.GetLayersSuccess<Dependencies>> | LayerUtils.GetLayersContext<Dependencies>>;
|
|
31
36
|
};
|
|
32
|
-
export declare const MergedContextProvider: <TDeps extends
|
|
37
|
+
export declare const MergedContextProvider: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => ContextTagWithDefault<ContextProviderId, Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Tag.Service<TDeps[number]>>>>, never, EffectGenUtils.Context<Tag.Service<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, Exclude<Tag.Service<TDeps[number]>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>> | LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
|
|
33
38
|
export declare const EmptyContextProvider: Context.Tag<ContextProviderId, Effect<Context.Context<never>, never, never>> & {
|
|
34
39
|
Default: Layer.Layer<ContextProviderId, never, never>;
|
|
35
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/ContextProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/ContextProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { Context, Effect, Layer, pipe } from "effect-app";
|
|
2
2
|
import { mergeContexts } from "../../layerUtils.js";
|
|
3
3
|
// Note: the type here must be aligned with MergedContextProvider
|
|
4
|
-
export const mergeContextProviders = (
|
|
4
|
+
export const mergeContextProviders = (
|
|
5
|
+
// long life to reverse mapped types
|
|
6
|
+
...deps) => ({
|
|
5
7
|
dependencies: deps.map((_) => _.Default),
|
|
6
8
|
effect: Effect.gen(function* () {
|
|
9
|
+
// uses the tags to request the context providers
|
|
7
10
|
const makers = yield* Effect.all(deps);
|
|
8
11
|
return Effect
|
|
9
12
|
.gen(function* () {
|
|
10
|
-
const services = makers.map((handle, i) => ({
|
|
13
|
+
const services = makers.map((handle, i) => ({
|
|
14
|
+
maker: deps[i],
|
|
15
|
+
handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
|
|
16
|
+
}));
|
|
11
17
|
// services are effects which return some Context.Context<...>
|
|
12
18
|
const context = yield* mergeContexts(services);
|
|
13
19
|
return context;
|
|
@@ -17,12 +23,15 @@ export const mergeContextProviders = (...deps) => ({
|
|
|
17
23
|
// Effect Rpc Middleware: for single tag providing, we could use Provides, for providing Context or Layer (bad boy) we could use Wrap..
|
|
18
24
|
export const ContextProvider = (input) => {
|
|
19
25
|
const ctx = Context.GenericTag("ContextProvider");
|
|
20
|
-
const
|
|
26
|
+
const e = input.effect.pipe(Effect.map((eg) => eg[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(eg)() : eg));
|
|
27
|
+
const l = Layer.scoped(ctx, e);
|
|
21
28
|
return Object.assign(ctx, {
|
|
22
29
|
Default: l.pipe(input.dependencies ? Layer.provide(input.dependencies) : (_) => _)
|
|
23
30
|
});
|
|
24
31
|
};
|
|
25
32
|
// Note: the type here must be aligned with mergeContextProviders
|
|
26
|
-
export const MergedContextProvider = (
|
|
33
|
+
export const MergedContextProvider = (
|
|
34
|
+
// long life to reverse mapped types
|
|
35
|
+
...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
|
|
27
36
|
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvQ29udGV4dFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBc0IsSUFBSSxFQUFjLE1BQU0sWUFBWSxDQUFBO0FBS3pGLE9BQU8sRUFBZ0UsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUF1RWpILGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztBQUduQyxvQ0FBb0M7QUFDcEMsR0FBRyxJQUFxQixFQWF4QixFQUFFLENBQUMsQ0FBQztJQUNKLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFTLENBQUMsT0FBTyxDQUFRO0lBQ3hELE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMxQixpREFBaUQ7UUFDakQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFhLENBQUMsQ0FBQTtRQUMvQyxPQUFPLE1BQU07YUFDVixHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxRQUFRLEdBQUksTUFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNwRDtnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNO2FBQ2xHLENBQ0YsQ0FBQyxDQUFBO1lBQ0YsOERBQThEO1lBQzlELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFlLENBQUMsQ0FBQTtZQUNyRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBUTtDQUNWLENBQUMsQ0FBQTtBQUVGLHVJQUF1STtBQUN2SSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FPN0IsS0FZQyxFQUNELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUk1QixpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNsSCxDQUFBO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBUSxDQUFDLENBQUE7SUFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDYixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FPekU7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7QUFHbkMsb0NBQW9DO0FBQ3BDLEdBQUcsSUFBcUIsRUFDeEIsRUFBRSxDQUNGLElBQUksQ0FDRixJQUFxRCxFQUNyRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDbEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFRLENBQUMsQ0FlakMsQ0FBQTtBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context, Effect, Layer, type NonEmptyArray, pipe, type Scope } from "effect-app"
|
|
2
|
+
|
|
2
3
|
import { type HttpRouter } from "effect-app/http"
|
|
3
4
|
import { type Tag } from "effect/Context"
|
|
5
|
+
import { type YieldWrap } from "effect/Utils"
|
|
4
6
|
import { type ContextTagWithDefault, type GetContext, type LayerUtils, mergeContexts } from "../../layerUtils.js"
|
|
5
7
|
|
|
8
|
+
export namespace EffectGenUtils {
|
|
9
|
+
export type Success<EG> = EG extends Effect<infer A, infer _E, infer _R> ? A
|
|
10
|
+
// there could be a case where the generator function does not yield anything, so we need to handle that
|
|
11
|
+
: EG extends (..._: infer _3) => Generator<never, infer A, infer _2> ? A
|
|
12
|
+
: EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer _R>>, infer A, infer _2> ? A
|
|
13
|
+
: never
|
|
14
|
+
|
|
15
|
+
export type Error<EG> = EG extends Effect<infer _A, infer E, infer _R> ? E
|
|
16
|
+
// there could be a case where the generator function does not yield anything, so we need to handle that
|
|
17
|
+
: EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never
|
|
18
|
+
: EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer E, infer _R>>, infer _A, infer _2> ? E
|
|
19
|
+
: never
|
|
20
|
+
|
|
21
|
+
export type Context<EG> = EG extends Effect<infer _A, infer _E, infer R> ? R
|
|
22
|
+
// there could be a case where the generator function does not yield anything, so we need to handle that
|
|
23
|
+
: EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never
|
|
24
|
+
: EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer R>>, infer _A, infer _2> ? R
|
|
25
|
+
: never
|
|
26
|
+
}
|
|
27
|
+
|
|
6
28
|
// the context provider provides additional stuff
|
|
7
29
|
export type ContextProviderShape<ContextProviderA, ContextProviderR extends HttpRouter.HttpRouter.Provided> = Effect<
|
|
8
30
|
Context.Context<ContextProviderA>,
|
|
@@ -14,51 +36,75 @@ export interface ContextProviderId {
|
|
|
14
36
|
_tag: "ContextProvider"
|
|
15
37
|
}
|
|
16
38
|
|
|
39
|
+
// ContextTagWithDefault.Base<Effect<Context.Context<infer _1>, never, infer _R> & { _tag: infer _2 }>
|
|
40
|
+
|
|
17
41
|
/**
|
|
18
42
|
* TDeps is an array of services with Default implementation
|
|
19
43
|
* each service is an effect which builds some context for each request
|
|
20
44
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
45
|
+
type TDepsArr<TDeps extends ReadonlyArray<any>> = {
|
|
46
|
+
// the following freaking shit helps me with nested variance issues: it wasn't sufficient to use never/any/unknown for
|
|
47
|
+
// the various type parameters, not anymore because of () => Generator<YieldWrap<Effect craziness
|
|
48
|
+
// existential types may help, and all the following usages of infer _ have that meaning: I do not care which is the
|
|
49
|
+
// actual type in that position, I just wanna set the overall structure
|
|
50
|
+
[K in keyof TDeps]: TDeps[K] extends //
|
|
23
51
|
// E = never => the context provided cannot trigger errors
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
// _R extends HttpRouter.HttpRouter.Provided => the context provided can only have what HttpRouter.Provided provides as requirements
|
|
53
|
+
(
|
|
54
|
+
ContextTagWithDefault.Base<Effect<Context.Context<infer _1>, never, infer _R> & { _tag: infer _2 }>
|
|
55
|
+
) ? [_R] extends [HttpRouter.HttpRouter.Provided] ? TDeps[K]
|
|
56
|
+
: `HttpRouter.HttpRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have`
|
|
57
|
+
: TDeps[K] extends (
|
|
58
|
+
ContextTagWithDefault.Base<
|
|
59
|
+
& (() => Generator<
|
|
60
|
+
infer _YW,
|
|
61
|
+
infer _1,
|
|
62
|
+
infer _2
|
|
63
|
+
>)
|
|
64
|
+
& { _tag: infer _3 }
|
|
65
|
+
>
|
|
66
|
+
) // [_YW] extends [never] if no yield* is used and just some context is returned
|
|
67
|
+
? [_YW] extends [never] ? TDeps[K]
|
|
68
|
+
: [_YW] extends [YieldWrap<Effect<infer _2, never, infer _R>>]
|
|
69
|
+
? [_R] extends [HttpRouter.HttpRouter.Provided] ? TDeps[K]
|
|
70
|
+
: `HttpRouter.HttpRouter.Provided is the only requirement ${TDeps[K]["Service"][
|
|
71
|
+
"_tag"
|
|
72
|
+
]}'s returned effect can have`
|
|
73
|
+
: "WTF are you yielding man?"
|
|
74
|
+
: `You cannot throw errors from providers`
|
|
36
75
|
}
|
|
37
76
|
|
|
38
77
|
// Note: the type here must be aligned with MergedContextProvider
|
|
39
78
|
export const mergeContextProviders = <
|
|
40
|
-
TDeps extends
|
|
79
|
+
TDeps extends ReadonlyArray<any>
|
|
41
80
|
>(
|
|
42
|
-
|
|
81
|
+
// long life to reverse mapped types
|
|
82
|
+
...deps: TDepsArr<TDeps>
|
|
43
83
|
): {
|
|
44
84
|
dependencies: { [K in keyof TDeps]: TDeps[K]["Default"] }
|
|
45
85
|
effect: Effect.Effect<
|
|
46
86
|
Effect.Effect<
|
|
47
87
|
// we need to merge all contexts into one
|
|
48
|
-
Context.Context<GetContext<
|
|
88
|
+
Context.Context<GetContext<EffectGenUtils.Success<Tag.Service<TDeps[number]>>>>,
|
|
49
89
|
never,
|
|
50
|
-
|
|
90
|
+
EffectGenUtils.Context<Tag.Service<TDeps[number]>>
|
|
51
91
|
>,
|
|
52
92
|
LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"] }>,
|
|
53
93
|
LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"] }>
|
|
54
94
|
>
|
|
55
95
|
} => ({
|
|
56
|
-
dependencies: deps.map((_) => _.Default) as any,
|
|
96
|
+
dependencies: deps.map((_) => (_ as any).Default) as any,
|
|
57
97
|
effect: Effect.gen(function*() {
|
|
58
|
-
|
|
98
|
+
// uses the tags to request the context providers
|
|
99
|
+
const makers = yield* Effect.all(deps as any[])
|
|
59
100
|
return Effect
|
|
60
101
|
.gen(function*() {
|
|
61
|
-
const services = (makers as any[]).map((handle, i) => (
|
|
102
|
+
const services = (makers as any[]).map((handle, i) => (
|
|
103
|
+
{
|
|
104
|
+
maker: deps[i],
|
|
105
|
+
handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
|
|
106
|
+
}
|
|
107
|
+
))
|
|
62
108
|
// services are effects which return some Context.Context<...>
|
|
63
109
|
const context = yield* mergeContexts(services as any)
|
|
64
110
|
return context
|
|
@@ -76,7 +122,12 @@ export const ContextProvider = <
|
|
|
76
122
|
>(
|
|
77
123
|
input: {
|
|
78
124
|
effect: Effect<
|
|
79
|
-
Effect<ContextProviderA, never, ContextProviderR
|
|
125
|
+
| Effect<ContextProviderA, never, ContextProviderR>
|
|
126
|
+
| (() => Generator<
|
|
127
|
+
YieldWrap<Effect<any, never, ContextProviderR>>,
|
|
128
|
+
ContextProviderA,
|
|
129
|
+
any
|
|
130
|
+
>),
|
|
80
131
|
MakeContextProviderE,
|
|
81
132
|
MakeContextProviderR | Scope
|
|
82
133
|
>
|
|
@@ -89,7 +140,10 @@ export const ContextProvider = <
|
|
|
89
140
|
>(
|
|
90
141
|
"ContextProvider"
|
|
91
142
|
)
|
|
92
|
-
const
|
|
143
|
+
const e = input.effect.pipe(
|
|
144
|
+
Effect.map((eg) => (eg as any)[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(eg as any)() : eg)
|
|
145
|
+
)
|
|
146
|
+
const l = Layer.scoped(ctx, e as any)
|
|
93
147
|
return Object.assign(ctx, {
|
|
94
148
|
Default: l.pipe(
|
|
95
149
|
input.dependencies ? Layer.provide(input.dependencies) as any : (_) => _
|
|
@@ -105,9 +159,10 @@ export const ContextProvider = <
|
|
|
105
159
|
|
|
106
160
|
// Note: the type here must be aligned with mergeContextProviders
|
|
107
161
|
export const MergedContextProvider = <
|
|
108
|
-
TDeps extends
|
|
162
|
+
TDeps extends ReadonlyArray<any>
|
|
109
163
|
>(
|
|
110
|
-
|
|
164
|
+
// long life to reverse mapped types
|
|
165
|
+
...deps: TDepsArr<TDeps>
|
|
111
166
|
) =>
|
|
112
167
|
pipe(
|
|
113
168
|
deps as [Parameters<typeof mergeContextProviders>[0]],
|
|
@@ -117,9 +172,9 @@ export const MergedContextProvider = <
|
|
|
117
172
|
ContextProviderId,
|
|
118
173
|
Effect.Effect<
|
|
119
174
|
// we need to merge all contexts into one
|
|
120
|
-
Context.Context<GetContext<
|
|
175
|
+
Context.Context<GetContext<EffectGenUtils.Success<Tag.Service<TDeps[number]>>>>,
|
|
121
176
|
never,
|
|
122
|
-
|
|
177
|
+
EffectGenUtils.Context<Tag.Service<TDeps[number]>>
|
|
123
178
|
>,
|
|
124
179
|
LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"] }>,
|
|
125
180
|
| Exclude<
|
package/test/controller.test.ts
CHANGED
|
@@ -53,6 +53,26 @@ export const someContextProvider = ContextProvider({
|
|
|
53
53
|
})
|
|
54
54
|
})
|
|
55
55
|
})
|
|
56
|
+
export const someContextProviderGen = ContextProvider({
|
|
57
|
+
effect: Effect.gen(function*() {
|
|
58
|
+
yield* SomeService
|
|
59
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
60
|
+
|
|
61
|
+
return function*() {
|
|
62
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
63
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
64
|
+
|
|
65
|
+
// not allowed
|
|
66
|
+
// yield* SomeElse
|
|
67
|
+
|
|
68
|
+
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
69
|
+
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
70
|
+
|
|
71
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
expectTypeOf(someContextProvider).toEqualTypeOf<typeof someContextProviderGen>()
|
|
56
76
|
|
|
57
77
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
58
78
|
class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextProvider", {
|
|
@@ -61,9 +81,12 @@ class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextPr
|
|
|
61
81
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
62
82
|
|
|
63
83
|
return Effect.gen(function*() {
|
|
64
|
-
// the only
|
|
84
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
65
85
|
yield* HttpServerRequest.HttpServerRequest
|
|
66
86
|
|
|
87
|
+
yield* Effect.logInfo("MyContextProviderGen", "this is a generator")
|
|
88
|
+
yield* Effect.succeed("this is a generator")
|
|
89
|
+
|
|
67
90
|
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
68
91
|
// yield* SomeElse
|
|
69
92
|
|
|
@@ -75,11 +98,36 @@ class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextPr
|
|
|
75
98
|
})
|
|
76
99
|
})
|
|
77
100
|
}) {}
|
|
101
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
102
|
+
class MyContextProviderGen extends Effect.Service<MyContextProviderGen>()("MyContextProviderGen", {
|
|
103
|
+
effect: Effect.gen(function*() {
|
|
104
|
+
yield* SomeService
|
|
105
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
106
|
+
|
|
107
|
+
return function*() {
|
|
108
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
109
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
110
|
+
|
|
111
|
+
yield* Effect.logInfo("MyContextProviderGen", "this is a generator")
|
|
112
|
+
yield* Effect.succeed("this is a generator")
|
|
113
|
+
|
|
114
|
+
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
115
|
+
// yield* SomeElse
|
|
116
|
+
|
|
117
|
+
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
118
|
+
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
119
|
+
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
120
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
}) {}
|
|
124
|
+
|
|
125
|
+
const merged = mergeContextProviders(MyContextProvider)
|
|
126
|
+
const mergedGen = mergeContextProviders(MyContextProviderGen)
|
|
78
127
|
|
|
79
128
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
80
129
|
class MyContextProvider2 extends Effect.Service<MyContextProvider2>()("MyContextProvider2", {
|
|
81
130
|
effect: Effect.gen(function*() {
|
|
82
|
-
yield* SomeService
|
|
83
131
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
84
132
|
|
|
85
133
|
return Effect.gen(function*() {
|
|
@@ -89,17 +137,49 @@ class MyContextProvider2 extends Effect.Service<MyContextProvider2>()("MyContext
|
|
|
89
137
|
})
|
|
90
138
|
})
|
|
91
139
|
}) {}
|
|
140
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
141
|
+
class MyContextProvider2Gen extends Effect.Service<MyContextProvider2Gen>()("MyContextProvider2Gen", {
|
|
142
|
+
effect: Effect.gen(function*() {
|
|
143
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
144
|
+
|
|
145
|
+
return function*() {
|
|
146
|
+
// we test without dependencies, so that we end up with an R of never
|
|
147
|
+
|
|
148
|
+
return Context.make(SomeElse, new SomeElse({ b: 2 }))
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
}) {}
|
|
92
152
|
|
|
93
|
-
const merged = mergeContextProviders(MyContextProvider)
|
|
94
153
|
export const contextProvider2 = ContextProvider(merged)
|
|
95
154
|
export const contextProvider3 = MergedContextProvider(MyContextProvider)
|
|
96
155
|
expectTypeOf(contextProvider2).toEqualTypeOf<typeof someContextProvider>()
|
|
97
156
|
expectTypeOf(contextProvider3).toEqualTypeOf<typeof contextProvider2>()
|
|
157
|
+
|
|
158
|
+
export const contextProvider2Gen = ContextProvider(mergedGen)
|
|
159
|
+
export const contextProvider3Gen = MergedContextProvider(MyContextProviderGen)
|
|
160
|
+
expectTypeOf(contextProvider2Gen).toEqualTypeOf<typeof someContextProvider>()
|
|
161
|
+
expectTypeOf(contextProvider3Gen).toEqualTypeOf<typeof contextProvider2Gen>()
|
|
162
|
+
|
|
163
|
+
expectTypeOf(contextProvider2Gen).toEqualTypeOf<typeof contextProvider2>()
|
|
164
|
+
expectTypeOf(contextProvider3Gen).toEqualTypeOf<typeof contextProvider3>()
|
|
165
|
+
|
|
166
|
+
//
|
|
167
|
+
|
|
98
168
|
const merged2 = mergeContextProviders(MyContextProvider, MyContextProvider2)
|
|
99
169
|
export const contextProvider22 = ContextProvider(merged2)
|
|
100
170
|
export const contextProvider23 = MergedContextProvider(MyContextProvider, MyContextProvider2)
|
|
101
171
|
expectTypeOf(contextProvider23).toEqualTypeOf<typeof contextProvider22>()
|
|
102
172
|
|
|
173
|
+
const merged2Gen = mergeContextProviders(MyContextProviderGen, MyContextProvider2Gen)
|
|
174
|
+
export const contextProvider22Gen = ContextProvider(merged2Gen)
|
|
175
|
+
export const contextProvider23Gen = MergedContextProvider(MyContextProviderGen, MyContextProvider2Gen)
|
|
176
|
+
expectTypeOf(contextProvider23Gen).toEqualTypeOf<typeof contextProvider22Gen>()
|
|
177
|
+
|
|
178
|
+
expectTypeOf(contextProvider22Gen).toEqualTypeOf<typeof contextProvider22>()
|
|
179
|
+
expectTypeOf(contextProvider23Gen).toEqualTypeOf<typeof contextProvider23>()
|
|
180
|
+
|
|
181
|
+
//
|
|
182
|
+
|
|
103
183
|
export type RequestContextMap = {
|
|
104
184
|
allowAnonymous: RPCContextMap.Inverted<UserProfile, typeof NotLoggedInError>
|
|
105
185
|
requireRoles: RPCContextMap.Custom<never, typeof UnauthorizedError, Array<string>>
|
|
@@ -171,6 +251,7 @@ export class BogusMiddleware extends Effect.Service<BogusMiddleware>()("BogusMid
|
|
|
171
251
|
}) {}
|
|
172
252
|
|
|
173
253
|
const contextProvider = MergedContextProvider(MyContextProvider2, MyContextProvider)
|
|
254
|
+
|
|
174
255
|
// TODO: eventually it might be nice if we have total control over order somehow..
|
|
175
256
|
// [ AddRequestNameToSpanContext, RequestCacheContext, UninterruptibleMiddleware, Dynamic(or individual, AllowAnonymous, RequireRoles, Test - or whichever order) ]
|
|
176
257
|
const middleware = makeMiddleware<RequestContextMap>()({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;;;;;;AAE7C,cAAM,WAAY,SAAQ,gBAKzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;;;;AAEL,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;;;;AACxF,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;AAExF,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;AAGpG,eAAO,MAAM,mBAAmB;;CAkB9B,CAAA;
|
|
1
|
+
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.legacy2.test.d.ts","sourceRoot":"","sources":["../controller.legacy2.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.legacy3.test.d.ts","sourceRoot":"","sources":["../controller.legacy3.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;gBA0EgwD,MAAO,KAAK;;;;;;GA1E1wD,QAAQ;;;;;;iDA0Eq0F,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAg1D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAg1D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAg1D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAA2yD,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CA1E1oU,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;yCAxEL,EAAG,MAAM,CAAC,MAAM;iBAgClC,EA/BK,MACb,CA8BQ,GA9BJ,GA8BI,EA9BC,MAEV,CA4BS,MA5BF;iBAAuB,EAAE,MAC9B,CA2BO,GA3BH,GA2BG,EA3BG,MAAK,CAAC,MAAM;;;;;;2CASkB,EAAG,MAAM,CAAC,MAAM;iBAkBjD,EAAA,MAjBA,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAiBtB,EAPO,MAAC,CAAC,MAAM;iBACA,EAAG,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAc1C,EAAA,MAAL,CAAK,MAAE;;;;;2CAMqC,EAAG,MAAM,CAAC,MAAM;;;;;CA6BnE,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import type { RequestContext } from "@effect-app/infra/RequestContext";
|
|
2
|
-
import { Rpc } from "@effect/rpc";
|
|
3
|
-
import { Effect, Layer, S } from "effect-app";
|
|
4
|
-
import { type RPCContextMap, UnauthorizedError } from "effect-app/client";
|
|
5
|
-
import { HttpServerRequest } from "effect-app/http";
|
|
6
|
-
export interface CTX {
|
|
7
|
-
context: RequestContext;
|
|
8
|
-
}
|
|
9
|
-
export type CTXMap = {
|
|
10
|
-
requireRoles: RPCContextMap.Custom<"", never, typeof UnauthorizedError, Array<string>>;
|
|
11
|
-
};
|
|
12
|
-
export declare const matchAll: <T extends {
|
|
13
|
-
[key: string]: {
|
|
14
|
-
Router: {
|
|
15
|
-
router: Effect<import("@effect/platform/HttpRouter").HttpRouter<any, any>, any, any>;
|
|
16
|
-
};
|
|
17
|
-
routes: Layer.Layer<any, any, any>;
|
|
18
|
-
moduleName: string;
|
|
19
|
-
};
|
|
20
|
-
}, A, E, R>(handlers: T, requestLayer: Layer.Layer<A, E, R>) => {
|
|
21
|
-
layer: Layer.Layer<never, Layer.Layer.Error<T[keyof T]["routes"]>, Layer.Layer.Context<T[keyof T]["routes"]>>;
|
|
22
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<"RootRouter", "RootRouter", Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_1 ? T_1 extends T_1 & Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_1 extends import("@effect/platform/HttpRouter").HttpRouter<infer E_1, any> ? E_1 : never : never : never, R | Exclude<Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_2 ? T_2 extends T_2 & Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_2 extends import("@effect/platform/HttpRouter").HttpRouter<any, infer R_1> ? R_1 : never : never : never, A>>;
|
|
23
|
-
}, matchFor: <const ModuleName extends string, const Rsc extends Record<string, any>>(rsc: Rsc & {
|
|
24
|
-
meta: {
|
|
25
|
-
moduleName: ModuleName;
|
|
26
|
-
};
|
|
27
|
-
}) => {
|
|
28
|
-
<const Make extends {
|
|
29
|
-
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
30
|
-
effect: Effect<{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K_1], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
31
|
-
strict?: boolean;
|
|
32
|
-
readonly ಠ_ಠ: never;
|
|
33
|
-
}>(make: Make): {
|
|
34
|
-
moduleName: ModuleName;
|
|
35
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_2 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_2], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_2]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
36
|
-
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
37
|
-
};
|
|
38
|
-
<const Make extends {
|
|
39
|
-
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
40
|
-
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
41
|
-
strict?: boolean;
|
|
42
|
-
readonly ಠ_ಠ: never;
|
|
43
|
-
}>(make: Make): {
|
|
44
|
-
moduleName: ModuleName;
|
|
45
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
46
|
-
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
47
|
-
};
|
|
48
|
-
<const Make extends {
|
|
49
|
-
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
50
|
-
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
51
|
-
strict?: boolean;
|
|
52
|
-
readonly ಠ_ಠ: never;
|
|
53
|
-
}>(make: Make): {
|
|
54
|
-
moduleName: ModuleName;
|
|
55
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
56
|
-
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
57
|
-
};
|
|
58
|
-
<const Make extends {
|
|
59
|
-
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
60
|
-
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
61
|
-
strict?: boolean;
|
|
62
|
-
readonly ಠ_ಠ: never;
|
|
63
|
-
}>(make: Make): {
|
|
64
|
-
moduleName: ModuleName;
|
|
65
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
66
|
-
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
67
|
-
};
|
|
68
|
-
<const Make extends {
|
|
69
|
-
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
70
|
-
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
71
|
-
strict?: boolean;
|
|
72
|
-
}>(make: Make): {
|
|
73
|
-
moduleName: ModuleName;
|
|
74
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
75
|
-
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
76
|
-
};
|
|
77
|
-
<const Make extends {
|
|
78
|
-
dependencies: [...Make["dependencies"], ...Exclude<Effect.Effect.Context<Make["effect"]>, import("effect/Types").Contravariant.Type<import("@effect-app/infra/api/routing").MakeDeps<Make>[typeof Layer.LayerTypeId]["_ROut"]>> extends never ? [] : [Layer.Layer<Exclude<Effect.Effect.Context<Make["effect"]>, import("effect/Types").Contravariant.Type<import("@effect-app/infra/api/routing").MakeDeps<Make>[typeof Layer.LayerTypeId]["_ROut"]>>, never, never>]];
|
|
79
|
-
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, any>;
|
|
80
|
-
strict?: boolean;
|
|
81
|
-
}>(make: Make): {
|
|
82
|
-
moduleName: ModuleName;
|
|
83
|
-
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, never>;
|
|
84
|
-
routes: any;
|
|
85
|
-
};
|
|
86
|
-
} & import("@effect-app/infra/api/routing").RouteMatcher<CTXMap, Rsc, HttpServerRequest.HttpServerRequest> & {
|
|
87
|
-
router: import("@effect-app/infra/api/routing").AddAction<{ [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }], {}>;
|
|
88
|
-
router2: { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; } extends infer T extends Record<string, import("@effect-app/infra/api/routing").AnyRequestModule> ? { [K in keyof T]: import("@effect-app/infra/api/routing").Method<{ [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }, K, "d", {}>; } : never;
|
|
89
|
-
};
|
|
90
|
-
export type RequestConfig = {
|
|
91
|
-
/** Disable authentication requirement */
|
|
92
|
-
allowAnonymous?: true;
|
|
93
|
-
/** Control the roles that are required to access the resource */
|
|
94
|
-
allowRoles?: readonly string[];
|
|
95
|
-
};
|
|
96
|
-
export declare const Req: <Self>() => {
|
|
97
|
-
<Tag extends string, Payload extends S.Struct.Fields, C extends {
|
|
98
|
-
success: S.Schema.Any | S.Struct.Fields;
|
|
99
|
-
failure: S.Schema.Any | S.Struct.Fields;
|
|
100
|
-
}>(tag: Tag, fields: Payload, config: RequestConfig & C): S.TaggedRequestClass<Self, Tag, {
|
|
101
|
-
readonly _tag: S.tag<Tag>;
|
|
102
|
-
} & Payload, (RequestConfig & C)["success"] extends infer T ? T extends (RequestConfig & C)["success"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, ([((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>] extends [never] ? [] : [((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>]) extends infer T_2 ? T_2 extends ([((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>] extends [never] ? [] : [((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>]) ? T_2 extends readonly S.Schema.All[] ? S.Union<T_2> : typeof S.Never : never : never> & {
|
|
103
|
-
config: Omit<C, "success" | "failure">;
|
|
104
|
-
};
|
|
105
|
-
<Tag extends string, Payload_1 extends S.Struct.Fields, C_1 extends {
|
|
106
|
-
success: S.Schema.Any | S.Struct.Fields;
|
|
107
|
-
}>(tag: Tag, fields: Payload_1, config: RequestConfig & C_1): S.TaggedRequestClass<Self, Tag, {
|
|
108
|
-
readonly _tag: S.tag<Tag>;
|
|
109
|
-
} & Payload_1, (RequestConfig & C_1)["success"] extends infer T ? T extends (RequestConfig & C_1)["success"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, ([import("effect-app/client").GetEffectError<CTXMap, C_1>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_1>]) extends infer T_1 ? T_1 extends ([import("effect-app/client").GetEffectError<CTXMap, C_1>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_1>]) ? T_1 extends readonly S.Schema.All[] ? S.Union<T_1> : typeof S.Never : never : never> & {
|
|
110
|
-
config: Omit<C_1, "success" | "failure">;
|
|
111
|
-
};
|
|
112
|
-
<Tag extends string, Payload_2 extends S.Struct.Fields, C_2 extends {
|
|
113
|
-
failure: S.Schema.Any | S.Struct.Fields;
|
|
114
|
-
}>(tag: Tag, fields: Payload_2, config: RequestConfig & C_2): S.TaggedRequestClass<Self, Tag, {
|
|
115
|
-
readonly _tag: S.tag<Tag>;
|
|
116
|
-
} & Payload_2, typeof S.Void, ([((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>] extends [never] ? [] : [((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>]) extends infer T_1 ? T_1 extends ([((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>] extends [never] ? [] : [((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>]) ? T_1 extends readonly S.Schema.All[] ? S.Union<T_1> : typeof S.Never : never : never> & {
|
|
117
|
-
config: Omit<C_2, "success" | "failure">;
|
|
118
|
-
};
|
|
119
|
-
<Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 & RequestConfig): S.TaggedRequestClass<Self, Tag, {
|
|
120
|
-
readonly _tag: S.tag<Tag>;
|
|
121
|
-
} & Payload_3, typeof S.Void, ([import("effect-app/client").GetEffectError<CTXMap, C_3>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_3>]) extends infer T ? T extends ([import("effect-app/client").GetEffectError<CTXMap, C_3>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_3>]) ? T extends readonly S.Schema.All[] ? S.Union<T> : typeof S.Never : never : never> & {
|
|
122
|
-
config: Omit<C_3, "success" | "failure">;
|
|
123
|
-
};
|
|
124
|
-
<Tag extends string, Payload_4 extends S.Struct.Fields>(tag: Tag, fields: Payload_4): S.TaggedRequestClass<Self, Tag, {
|
|
125
|
-
readonly _tag: S.tag<Tag>;
|
|
126
|
-
} & Payload_4, typeof S.Void, never>;
|
|
127
|
-
};
|
|
128
|
-
declare const GetSomething_base: S.TaggedRequestClass<GetSomething, "GetSomething", {
|
|
129
|
-
readonly _tag: S.tag<"GetSomething">;
|
|
130
|
-
} & {
|
|
131
|
-
id: typeof S.String;
|
|
132
|
-
}, typeof S.Void, S.Union<[typeof UnauthorizedError]>> & {
|
|
133
|
-
config: Omit<{
|
|
134
|
-
success: typeof S.Void;
|
|
135
|
-
}, "success" | "failure">;
|
|
136
|
-
};
|
|
137
|
-
export declare class GetSomething extends GetSomething_base {
|
|
138
|
-
}
|
|
139
|
-
declare const GetSomethingElse_base: S.TaggedRequestClass<GetSomethingElse, "GetSomethingElse", {
|
|
140
|
-
readonly _tag: S.tag<"GetSomethingElse">;
|
|
141
|
-
} & {
|
|
142
|
-
id: typeof S.String;
|
|
143
|
-
}, typeof S.String, S.Union<[typeof UnauthorizedError]>> & {
|
|
144
|
-
config: Omit<{
|
|
145
|
-
success: typeof S.String;
|
|
146
|
-
}, "success" | "failure">;
|
|
147
|
-
};
|
|
148
|
-
export declare class GetSomethingElse extends GetSomethingElse_base {
|
|
149
|
-
}
|
|
150
|
-
declare const SomethingService_base: import("effect/Effect").Service.Class<SomethingService, "SomethingService", {
|
|
151
|
-
readonly dependencies: readonly [];
|
|
152
|
-
readonly effect: Effect.Effect<{}, never, never>;
|
|
153
|
-
}>;
|
|
154
|
-
export declare class SomethingService extends SomethingService_base {
|
|
155
|
-
}
|
|
156
|
-
declare const SomethingRepo_base: import("effect/Effect").Service.Class<SomethingRepo, "SomethingRepo", {
|
|
157
|
-
readonly dependencies: readonly [Layer.Layer<SomethingService, never, never>];
|
|
158
|
-
readonly effect: Effect.Effect<{}, never, SomethingService>;
|
|
159
|
-
}>;
|
|
160
|
-
export declare class SomethingRepo extends SomethingRepo_base {
|
|
161
|
-
}
|
|
162
|
-
declare const SomethingService2_base: import("effect/Effect").Service.Class<SomethingService2, "SomethingService2", {
|
|
163
|
-
readonly dependencies: readonly [];
|
|
164
|
-
readonly effect: Effect.Effect<{}, never, never>;
|
|
165
|
-
}>;
|
|
166
|
-
export declare class SomethingService2 extends SomethingService2_base {
|
|
167
|
-
}
|
|
168
|
-
export {};
|
|
169
|
-
//# sourceMappingURL=controller.test%20copy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.test copy.d.ts","sourceRoot":"","sources":["../controller.test copy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;sBA2DnB,KACH;;;;;;GA5DwB,QAAQ;;;;;;uDAmG8B,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAA6vD,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;CAnG7oO,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxEM,MAAM,CAAC,MAAM;mBAgC1C,MA9BA,CAAC,GAAG,KA8BJ,MA5BD,CA4BC,MA5BM;mBA4BN,MA3BC,CAAE,GAAE,KAAM,MAAK,CAAC,MAAM;;;;;;6CASqB,MAAM,CAAC,MAAM;mBACtD,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUpB,MAAM,CAAC,MAAM;mBACG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAE,MAAK;;;;;;6CAclD,MAAG,CAAC,MAAM;;;;;6CAMwC,MAAM,CAAC,MACrE;;;CA4BA,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
-
import { makeMiddleware, makeRouter } from "@effect-app/infra/api/routing";
|
|
3
|
-
import { Rpc } from "@effect/rpc";
|
|
4
|
-
import { Context, Effect, FiberRef, Layer, S, Schedule } from "effect-app";
|
|
5
|
-
import { makeRpcClient, UnauthorizedError } from "effect-app/client";
|
|
6
|
-
import { HttpHeaders, HttpServerRequest } from "effect-app/http";
|
|
7
|
-
import { it } from "vitest";
|
|
8
|
-
const optimisticConcurrencySchedule = Schedule.once
|
|
9
|
-
&& Schedule.recurWhile((a) => a?._tag === "OptimisticConcurrencyException");
|
|
10
|
-
const middleware = makeMiddleware({
|
|
11
|
-
contextMap: null,
|
|
12
|
-
// helper to deal with nested generic lmitations
|
|
13
|
-
context: null,
|
|
14
|
-
execute: Effect.gen(function* () {
|
|
15
|
-
return (_schema, handler, moduleName) => (req) => Effect
|
|
16
|
-
.gen(function* () {
|
|
17
|
-
// const headers = yield* Rpc.currentHeaders
|
|
18
|
-
const ctx = Context.empty();
|
|
19
|
-
// const config = "config" in schema ? schema.config : undefined
|
|
20
|
-
// Check JWT
|
|
21
|
-
// TODO
|
|
22
|
-
// if (!fakeLogin && !request.allowAnonymous) {
|
|
23
|
-
// yield* Effect.catchAll(
|
|
24
|
-
// checkJWTI({
|
|
25
|
-
// ...authConfig,
|
|
26
|
-
// issuer: authConfig.issuer + "/",
|
|
27
|
-
// jwksUri: `${authConfig.issuer}/.well-known/jwks.json`
|
|
28
|
-
// }),
|
|
29
|
-
// (err) => Effect.fail(new JWTError({ error: err }))
|
|
30
|
-
// )
|
|
31
|
-
// }
|
|
32
|
-
// const fakeLogin = true
|
|
33
|
-
// const r = (fakeLogin
|
|
34
|
-
// ? makeUserProfileFromUserHeader(headers["x-user"])
|
|
35
|
-
// : makeUserProfileFromAuthorizationHeader(
|
|
36
|
-
// headers["authorization"]
|
|
37
|
-
// ))
|
|
38
|
-
// .pipe(Effect.exit, basicRuntime.runSync)
|
|
39
|
-
// if (!Exit.isSuccess(r)) {
|
|
40
|
-
// yield* Effect.logWarning("Parsing userInfo failed").pipe(Effect.annotateLogs("r", r))
|
|
41
|
-
// }
|
|
42
|
-
// const userProfile = Option.fromNullable(Exit.isSuccess(r) ? r.value : undefined)
|
|
43
|
-
// if (Option.isSome(userProfile)) {
|
|
44
|
-
// // yield* rcc.update((_) => ({ ..._, userPorfile: userProfile.value }))
|
|
45
|
-
// ctx = ctx.pipe(Context.add(UserProfile, userProfile.value))
|
|
46
|
-
// } else if (!config?.allowAnonymous) {
|
|
47
|
-
// return yield* new NotLoggedInError({ message: "no auth" })
|
|
48
|
-
// }
|
|
49
|
-
// if (config?.requireRoles) {
|
|
50
|
-
// // TODO
|
|
51
|
-
// if (
|
|
52
|
-
// !userProfile.value
|
|
53
|
-
// || !config.requireRoles.every((role: any) => userProfile.value!.roles.includes(role))
|
|
54
|
-
// ) {
|
|
55
|
-
// return yield* new UnauthorizedError()
|
|
56
|
-
// }
|
|
57
|
-
// }
|
|
58
|
-
return yield* handler(req).pipe(Effect.retry(optimisticConcurrencySchedule), Effect.provide(ctx));
|
|
59
|
-
})
|
|
60
|
-
.pipe(Effect.provide(Effect
|
|
61
|
-
.gen(function* () {
|
|
62
|
-
yield* Effect.annotateCurrentSpan("request.name", moduleName ? `${moduleName}.${req._tag}` : req._tag);
|
|
63
|
-
// yield* RequestContextContainer.update((_) => ({
|
|
64
|
-
// ..._,
|
|
65
|
-
// name: NonEmptyString255(moduleName ? `${moduleName}.${req._tag}` : req._tag)
|
|
66
|
-
// }))
|
|
67
|
-
const httpReq = yield* HttpServerRequest.HttpServerRequest;
|
|
68
|
-
// TODO: only pass Authentication etc, or move headers to actual Rpc Headers
|
|
69
|
-
yield* FiberRef.update(Rpc.currentHeaders, (headers) => HttpHeaders.merge(httpReq.headers, headers));
|
|
70
|
-
})
|
|
71
|
-
.pipe(Layer.effectDiscard)));
|
|
72
|
-
// .pipe(Effect.provide(RequestCacheLayers)) as any
|
|
73
|
-
})
|
|
74
|
-
});
|
|
75
|
-
export const { matchAll, matchFor } = makeRouter(middleware, true);
|
|
76
|
-
export const { TaggedRequest: Req } = makeRpcClient({
|
|
77
|
-
// allowAnonymous: NotLoggedInError,
|
|
78
|
-
requireRoles: UnauthorizedError
|
|
79
|
-
});
|
|
80
|
-
export class GetSomething extends Req()("GetSomething", {
|
|
81
|
-
id: S.String
|
|
82
|
-
}, { success: S.Void }) {
|
|
83
|
-
}
|
|
84
|
-
export class GetSomethingElse extends Req()("GetSomethingElse", {
|
|
85
|
-
id: S.String
|
|
86
|
-
}, { success: S.String }) {
|
|
87
|
-
}
|
|
88
|
-
const Something = { GetSomething, GetSomethingElse, meta: { moduleName: "Something" } };
|
|
89
|
-
export class SomethingService extends Effect.Service()("SomethingService", {
|
|
90
|
-
dependencies: [],
|
|
91
|
-
effect: Effect.gen(function* () {
|
|
92
|
-
return {};
|
|
93
|
-
})
|
|
94
|
-
}) {
|
|
95
|
-
}
|
|
96
|
-
export class SomethingRepo extends Effect.Service()("SomethingRepo", {
|
|
97
|
-
dependencies: [SomethingService.Default],
|
|
98
|
-
effect: Effect.gen(function* () {
|
|
99
|
-
const smth = yield* SomethingService;
|
|
100
|
-
console.log({ smth });
|
|
101
|
-
return {};
|
|
102
|
-
})
|
|
103
|
-
}) {
|
|
104
|
-
}
|
|
105
|
-
export class SomethingService2 extends Effect.Service()("SomethingService2", {
|
|
106
|
-
dependencies: [],
|
|
107
|
-
effect: Effect.gen(function* () {
|
|
108
|
-
return {};
|
|
109
|
-
})
|
|
110
|
-
}) {
|
|
111
|
-
}
|
|
112
|
-
it("router", () => {
|
|
113
|
-
const routes = matchFor(Something)({
|
|
114
|
-
dependencies: [
|
|
115
|
-
SomethingRepo.Default,
|
|
116
|
-
SomethingService.Default,
|
|
117
|
-
SomethingService2.Default
|
|
118
|
-
],
|
|
119
|
-
effect: Effect.gen(function* () {
|
|
120
|
-
const repo = yield* SomethingRepo;
|
|
121
|
-
const smth = yield* SomethingService;
|
|
122
|
-
const smth2 = yield* SomethingService2;
|
|
123
|
-
console.log({ repo, smth, smth2 });
|
|
124
|
-
const { GetSomething, GetSomethingElse, router } = matchFor(Something);
|
|
125
|
-
return router
|
|
126
|
-
.add(GetSomething(() => Effect.void))
|
|
127
|
-
.add(GetSomethingElse(Effect.succeed("12")));
|
|
128
|
-
})
|
|
129
|
-
});
|
|
130
|
-
console.log({ routes });
|
|
131
|
-
});
|
|
132
|
-
it("router2", () => {
|
|
133
|
-
const routes2 = matchFor(Something)({
|
|
134
|
-
dependencies: [
|
|
135
|
-
SomethingRepo.Default,
|
|
136
|
-
SomethingService.Default,
|
|
137
|
-
SomethingService2.Default
|
|
138
|
-
],
|
|
139
|
-
effect: Effect.gen(function* () {
|
|
140
|
-
const repo = yield* SomethingRepo;
|
|
141
|
-
const smth = yield* SomethingService;
|
|
142
|
-
const smth2 = yield* SomethingService2;
|
|
143
|
-
console.log({ repo, smth, smth2 });
|
|
144
|
-
const { router2 } = matchFor(Something);
|
|
145
|
-
return router2
|
|
146
|
-
.GetSomething(() => Effect.void)
|
|
147
|
-
.GetSomethingElse(Effect.succeed("12"));
|
|
148
|
-
})
|
|
149
|
-
});
|
|
150
|
-
console.log({ routes2 });
|
|
151
|
-
});
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci50ZXN0IGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9jb250cm9sbGVyLnRlc3QgY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUUxRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMxRSxPQUFPLEVBQXlCLGFBQWEsRUFBc0IsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFaEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUUzQixNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBQyxJQUFJO09BQzlDLFFBQVEsQ0FBQyxVQUFVLENBQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssZ0NBQWdDLENBQUMsQ0FBQTtBQVdsRixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDaEMsVUFBVSxFQUFFLElBQXlCO0lBQ3JDLGdEQUFnRDtJQUNoRCxPQUFPLEVBQUUsSUFBa0Q7SUFDM0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzNCLE9BQU8sQ0FDTCxPQUFzQyxFQUN0QyxPQUFpSCxFQUNqSCxVQUFtQixFQUNuQixFQUFFLENBQ0osQ0FDRSxHQUFRLEVBTVIsRUFBRSxDQUNGLE1BQU07YUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osNENBQTRDO1lBQzVDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFL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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller6.test.d.ts","sourceRoot":"","sources":["../controller6.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQ/G,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxEK,MAAM,CAAC,MAAM;mBAgCzC,MA9BD,CA8BC,GA9BG,KA8BH,MA5BF,CA4BE,MA5BK;mBA4BL,MA3BA,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CASqB,MAAM,CAAC,MAAM;mBACvD,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUpB,MAAM,CAAC,MAAM;mBACG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAcjD,MAAE,CAAC,MAAM;;;;;6CAMwC,MAAM,CAAC,MACrE;;;;;CA4BC,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller7.test.d.ts","sourceRoot":"","sources":["../controller7.test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQ/G,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,MAAM,OAAE,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxCvB,MAjCD,CAiCC,MAjCM;mBACgB,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;mBAgClD,MA9BJ,CA8BI,GA9BA,KA8BA,MA5BL,CA4BK,MA5BE;;;;;;6CASC,MACV,CAkBO,MAlBA;mBAAuC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAkBnE,MATE,CASF,MATS;mBAEF,MAAI,CAAC,GAAG,KAAK,MAC9B,CAMU,MANH;;;;;;6CAYG,MAAL,CAAK,MAAE;;;;;6CAQI,MAAH,CAAG,MAAI;;;;;CA6BlB,CAAA;;;;;;;;;;AAEF,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;AAE1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;;AA0BL,wBAmBE;AAEF,eAAO,MAAM,OAAO,KAmBlB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filterApi.test.d.ts","sourceRoot":"","sources":["../filterApi.test.ts"],"names":[],"mappings":""}
|