@effect-app/infra 3.0.5 → 3.0.7
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 +16 -0
- package/dist/Model/query/new-kid-interpreter.d.ts +1 -1
- package/dist/api/ContextProvider.d.ts +1 -5
- package/dist/api/ContextProvider.d.ts.map +1 -1
- package/dist/api/ContextProvider.js +1 -1
- package/package.json +2 -2
- package/src/api/ContextProvider.ts +1 -20
- package/test/controller.test.ts +57 -45
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/fixtures.d.ts +10 -9
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +8 -7
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/fixtures.ts +9 -6
- package/test/requires.test.ts +17 -12
- package/test/rpc-multi-middleware.test.ts +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 3.0.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 182ca78: improve: MiddlewareMaker is a Tag with Self so we can extend it from class.
|
|
8
|
+
- Updated dependencies [182ca78]
|
|
9
|
+
- effect-app@3.0.5
|
|
10
|
+
|
|
11
|
+
## 3.0.6
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- bc68d9f: feat: introduce Layer.make as alternative to Context.ProvideService
|
|
16
|
+
- Updated dependencies [bc68d9f]
|
|
17
|
+
- effect-app@3.0.4
|
|
18
|
+
|
|
3
19
|
## 3.0.5
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -21,7 +21,7 @@ export declare const toFilter: <TFieldValues extends FieldValues, A, R, TFieldVa
|
|
|
21
21
|
key: import("../filter/types/path/eager.js").Path<TFieldValues>;
|
|
22
22
|
direction: "ASC" | "DESC";
|
|
23
23
|
}[]];
|
|
24
|
-
ttype: "one" | "
|
|
24
|
+
ttype: "one" | "many" | "count";
|
|
25
25
|
mode: "project" | "collect" | "transform";
|
|
26
26
|
filter: FilterResult[];
|
|
27
27
|
};
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { Context, Effect, Layer, type NonEmptyReadonlyArray, type Scope } from "effect-app";
|
|
2
2
|
import { type HttpLayerRouter } from "effect-app/http";
|
|
3
|
+
import { type EffectGenUtils } from "effect-app/utils/gen";
|
|
3
4
|
import { type Tag } from "effect/Context";
|
|
4
5
|
import { type YieldWrap } from "effect/Utils";
|
|
5
6
|
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
|
-
}
|
|
11
7
|
export interface ContextProviderId {
|
|
12
8
|
_tag: "ContextProvider";
|
|
13
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../src/api/ContextProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,qBAAqB,EAAQ,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAEjG,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../src/api/ContextProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,4 +35,4 @@ export const MergedContextProvider = (
|
|
|
35
35
|
// long life to reverse mapped types
|
|
36
36
|
...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
|
|
37
37
|
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9Db250ZXh0UHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsSUFBSSxFQUFjLE1BQU0sWUFBWSxDQUFBO0FBTWpHLE9BQU8sRUFBZ0UsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFzRDdHLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztBQUduQyxvQ0FBb0M7QUFDcEMsR0FBRyxJQUFxQixFQWF4QixFQUFFLENBQUMsQ0FBQztJQUNKLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFTLENBQUMsT0FBTyxDQUFRO0lBQ3hELE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMxQixpREFBaUQ7UUFDakQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFhLENBQUMsQ0FBQTtRQUMvQyxPQUFPLE1BQU07YUFDVixHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxRQUFRLEdBQUksTUFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNwRDtnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNO2FBQ2xHLENBQ0YsQ0FBQyxDQUFBO1lBQ0YsOERBQThEO1lBQzlELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFlLENBQUMsQ0FBQTtZQUNyRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBUTtDQUNWLENBQUMsQ0FBQTtBQUVGLHVJQUF1STtBQUN2SSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FPN0IsS0FZQyxFQUNELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUk1QixpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNsSCxDQUFBO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBUSxDQUFDLENBQUE7SUFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDYixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FPekU7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7QUFHbkMsb0NBQW9DO0FBQ3BDLEdBQUcsSUFBcUIsRUFDeEIsRUFBRSxDQUNGLElBQUksQ0FDRixJQUFxRCxFQUNyRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDbEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFRLENBQUMsQ0FlakMsQ0FBQTtBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "7.0.1",
|
|
15
15
|
"query-string": "^9.2.2",
|
|
16
|
-
"effect-app": "3.0.
|
|
16
|
+
"effect-app": "3.0.5"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.5.0",
|
|
@@ -2,30 +2,11 @@
|
|
|
2
2
|
import { Context, Effect, Layer, type NonEmptyReadonlyArray, pipe, type Scope } from "effect-app"
|
|
3
3
|
|
|
4
4
|
import { type HttpLayerRouter } from "effect-app/http"
|
|
5
|
+
import { type EffectGenUtils } from "effect-app/utils/gen"
|
|
5
6
|
import { type Tag } from "effect/Context"
|
|
6
7
|
import { type YieldWrap } from "effect/Utils"
|
|
7
8
|
import { type ContextTagWithDefault, type GetContext, type LayerUtils, mergeContexts } from "./layerUtils.js"
|
|
8
9
|
|
|
9
|
-
export namespace EffectGenUtils {
|
|
10
|
-
export type Success<EG> = EG extends Effect<infer A, infer _E, infer _R> ? A
|
|
11
|
-
// there could be a case where the generator function does not yield anything, so we need to handle that
|
|
12
|
-
: EG extends (..._: infer _3) => Generator<never, infer A, infer _2> ? A
|
|
13
|
-
: EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer _R>>, infer A, infer _2> ? A
|
|
14
|
-
: never
|
|
15
|
-
|
|
16
|
-
export type Error<EG> = EG extends Effect<infer _A, infer E, infer _R> ? E
|
|
17
|
-
// there could be a case where the generator function does not yield anything, so we need to handle that
|
|
18
|
-
: EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never
|
|
19
|
-
: EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer E, infer _R>>, infer _A, infer _2> ? E
|
|
20
|
-
: never
|
|
21
|
-
|
|
22
|
-
export type Context<EG> = EG extends Effect<infer _A, infer _E, infer R> ? R
|
|
23
|
-
// there could be a case where the generator function does not yield anything, so we need to handle that
|
|
24
|
-
: EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never
|
|
25
|
-
: EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer R>>, infer _A, infer _2> ? R
|
|
26
|
-
: never
|
|
27
|
-
}
|
|
28
|
-
|
|
29
10
|
// // the context provider provides additional stuff
|
|
30
11
|
// export type ContextProviderShape<ContextProviderA, ContextProviderR> = Effect<
|
|
31
12
|
// Context.Context<ContextProviderA>,
|
package/test/controller.test.ts
CHANGED
|
@@ -6,20 +6,20 @@ import { expect, expectTypeOf, it } from "@effect/vitest"
|
|
|
6
6
|
import { Context, Effect, Layer, S, Scope } from "effect-app"
|
|
7
7
|
import { InvalidStateError, makeRpcClient, NotLoggedInError, UnauthorizedError } from "effect-app/client"
|
|
8
8
|
import { DefaultGenericMiddlewares } from "effect-app/middleware"
|
|
9
|
-
import
|
|
9
|
+
import * as RpcX from "effect-app/rpc"
|
|
10
|
+
import { MiddlewareMaker } from "effect-app/rpc"
|
|
10
11
|
import { TypeTestId } from "effect-app/TypeTest"
|
|
11
12
|
import { DefaultGenericMiddlewaresLive } from "../src/api/routing/middleware.js"
|
|
12
13
|
import { sort } from "../src/api/routing/tsort.js"
|
|
13
14
|
import { AllowAnonymous, AllowAnonymousLive, CustomError1, RequestContextMap, RequireRoles, RequireRolesLive, Some, SomeElse, SomeService, Test, TestLive } from "./fixtures.js"
|
|
14
15
|
|
|
15
16
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
16
|
-
class MyContextProvider extends
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
effect: Effect.gen(function*() {
|
|
17
|
+
class MyContextProvider extends RpcX.RpcMiddleware.Tag<MyContextProvider, {
|
|
18
|
+
provides: Some
|
|
19
|
+
requires: SomeElse
|
|
20
|
+
}>()("MyContextProvider") {
|
|
21
|
+
static Default = Layer.make(this, {
|
|
22
|
+
*make() {
|
|
23
23
|
yield* SomeService
|
|
24
24
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
25
25
|
|
|
@@ -40,19 +40,19 @@ class MyContextProvider extends Context.DefineService(
|
|
|
40
40
|
|
|
41
41
|
return yield* Effect.provideService(effect, Some, new Some({ a: 1 }))
|
|
42
42
|
})
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
static but_why = "???" // remove me and life rocks
|
|
46
|
+
}
|
|
46
47
|
|
|
47
48
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
48
|
-
class MyContextProvider3 extends
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
{
|
|
49
|
+
class MyContextProvider3 extends RpcX.RpcMiddleware.Tag<MyContextProvider3, {
|
|
50
|
+
provides: Some
|
|
51
|
+
requires: SomeElse
|
|
52
|
+
}>()("MyContextProvider3") {
|
|
53
|
+
static Default = Layer.make(this, {
|
|
54
54
|
dependencies: [Layer.effect(SomeService, SomeService.make)],
|
|
55
|
-
|
|
55
|
+
*make() {
|
|
56
56
|
yield* SomeService
|
|
57
57
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
58
58
|
|
|
@@ -73,17 +73,22 @@ class MyContextProvider3 extends Context.DefineService(
|
|
|
73
73
|
|
|
74
74
|
return yield* Effect.provideService(effect, Some, new Some({ a: 1 }))
|
|
75
75
|
})
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
79
|
|
|
80
|
-
expectTypeOf(MyContextProvider3.Default).toEqualTypeOf<
|
|
80
|
+
expectTypeOf(MyContextProvider3.Default).toEqualTypeOf<
|
|
81
|
+
Layer.Layer<MyContextProvider3, CustomError1, never> & {
|
|
82
|
+
withoutDependencies: Layer.Layer<MyContextProvider3, CustomError1, SomeService>
|
|
83
|
+
}
|
|
84
|
+
>()
|
|
81
85
|
|
|
82
86
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
83
|
-
class MyContextProvider2
|
|
84
|
-
Tag<MyContextProvider2, { provides: SomeElse }>()("MyContextProvider2"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
class MyContextProvider2
|
|
88
|
+
extends RpcX.RpcMiddleware.Tag<MyContextProvider2, { provides: SomeElse }>()("MyContextProvider2")
|
|
89
|
+
{
|
|
90
|
+
static Default = Layer.make(this, {
|
|
91
|
+
*make() {
|
|
87
92
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
88
93
|
|
|
89
94
|
return Effect.fnUntraced(function*(effect) {
|
|
@@ -91,25 +96,26 @@ class MyContextProvider2 extends Context.DefineService(
|
|
|
91
96
|
|
|
92
97
|
return yield* Effect.provideService(effect, SomeElse, new SomeElse({ b: 2 }))
|
|
93
98
|
})
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
}
|
|
97
102
|
|
|
98
103
|
//
|
|
99
104
|
|
|
100
105
|
const Str = Context.GenericTag<"str", "str">("str")
|
|
101
106
|
|
|
102
|
-
export class BogusMiddleware extends
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
export class BogusMiddleware extends RpcX.RpcMiddleware.Tag<BogusMiddleware>()("BogusMiddleware") {
|
|
108
|
+
static Default = Layer.make(this, {
|
|
109
|
+
*make() {
|
|
110
|
+
yield* Str
|
|
111
|
+
// yield* Effect.context<"test-dep">()
|
|
112
|
+
return (effect) =>
|
|
113
|
+
Effect.gen(function*() {
|
|
114
|
+
// yield* Effect.context<"test-dep2">()
|
|
115
|
+
return yield* effect
|
|
116
|
+
})
|
|
117
|
+
}
|
|
111
118
|
})
|
|
112
|
-
}) {
|
|
113
119
|
}
|
|
114
120
|
|
|
115
121
|
const genericMiddlewares = [
|
|
@@ -124,7 +130,8 @@ const genericMiddlewaresLive = [
|
|
|
124
130
|
MyContextProvider2.Default
|
|
125
131
|
] as const
|
|
126
132
|
|
|
127
|
-
const middleware =
|
|
133
|
+
const middleware = MiddlewareMaker
|
|
134
|
+
.Tag()("middleware", RequestContextMap)
|
|
128
135
|
.middleware(
|
|
129
136
|
RequireRoles,
|
|
130
137
|
Test
|
|
@@ -134,7 +141,8 @@ const middleware = makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
|
134
141
|
.middleware(MyContextProvider)
|
|
135
142
|
.middleware(...genericMiddlewares)
|
|
136
143
|
|
|
137
|
-
const middlewareBis =
|
|
144
|
+
const middlewareBis = MiddlewareMaker
|
|
145
|
+
.Tag()("middleware", RequestContextMap)
|
|
138
146
|
.middleware(
|
|
139
147
|
RequireRoles,
|
|
140
148
|
Test
|
|
@@ -144,7 +152,8 @@ const middlewareBis = makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
|
144
152
|
|
|
145
153
|
expectTypeOf(middleware).toEqualTypeOf<typeof middlewareBis>()
|
|
146
154
|
|
|
147
|
-
const middlewareTrisWip =
|
|
155
|
+
const middlewareTrisWip = MiddlewareMaker
|
|
156
|
+
.Tag()("middleware", RequestContextMap)
|
|
148
157
|
.middleware(
|
|
149
158
|
MyContextProvider,
|
|
150
159
|
RequireRoles,
|
|
@@ -157,7 +166,8 @@ expectTypeOf(middlewareTrisWip).toEqualTypeOf<{
|
|
|
157
166
|
}>()
|
|
158
167
|
|
|
159
168
|
// testing more sideways elimination]
|
|
160
|
-
const middlewareQuater =
|
|
169
|
+
const middlewareQuater = MiddlewareMaker
|
|
170
|
+
.Tag()("middleware", RequestContextMap)
|
|
161
171
|
.middleware(
|
|
162
172
|
RequireRoles,
|
|
163
173
|
Test,
|
|
@@ -168,13 +178,15 @@ const middlewareQuater = makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
|
168
178
|
|
|
169
179
|
expectTypeOf(middleware).toEqualTypeOf<typeof middlewareQuater>()
|
|
170
180
|
|
|
171
|
-
const middleware2 =
|
|
181
|
+
const middleware2 = MiddlewareMaker
|
|
182
|
+
.Tag()("middleware", RequestContextMap)
|
|
172
183
|
.middleware(MyContextProvider)
|
|
173
184
|
.middleware(RequireRoles, Test)
|
|
174
185
|
.middleware(AllowAnonymous)
|
|
175
186
|
.middleware(...DefaultGenericMiddlewares, BogusMiddleware, MyContextProvider2)
|
|
176
187
|
|
|
177
|
-
export const middleware3 =
|
|
188
|
+
export const middleware3 = MiddlewareMaker
|
|
189
|
+
.Tag()("middleware", RequestContextMap)
|
|
178
190
|
.middleware(...genericMiddlewares)
|
|
179
191
|
.middleware(AllowAnonymous, RequireRoles)
|
|
180
192
|
.middleware(Test)
|
|
@@ -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,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAW,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,
|
|
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,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAW,MAAM,EAAE,KAAK,EAAE,CAAC,EAAS,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAoC,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEzG,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAKtC,OAAO,EAAE,cAAc,EAAsB,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAA0B,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAY,MAAM,eAAe,CAAA;;cA0E/G,QAAQ;;AADzE,cAAM,kBACJ,SAAQ,uBAA0F;IAElG,MAAM,CAAC,OAAO,uDAUZ;CACH;;;;;AAMD,qBAAa,eAAgB,SAAQ,oBAA4D;IAC/F,MAAM,CAAC,OAAO,6CAUZ;CACH;AAqED,eAAO,MAAM,WAAW;;;;;;;;;;YAKM,CAAA;AAE9B,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI/B,CAAA;;;;;;;;;;AAEF,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;AAgB1B,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;AAUL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;qGAK9B,CAAA;AAED,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGd,CAAA"}
|
package/test/dist/fixtures.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, Effect, Layer, S, Scope } from "effect-app";
|
|
2
2
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
|
|
3
|
-
import {
|
|
3
|
+
import { RpcX } from "effect-app/rpc";
|
|
4
|
+
import { RpcContextMap } from "effect-app/rpc/RpcContextMap";
|
|
4
5
|
declare const UserProfile_base: S.EnhancedClass<UserProfile, {
|
|
5
6
|
id: typeof S.String;
|
|
6
7
|
roles: S.Array$<typeof S.String> & {
|
|
@@ -93,13 +94,13 @@ declare const SomeService_base: (abstract new (service: {
|
|
|
93
94
|
};
|
|
94
95
|
export declare class SomeService extends SomeService_base {
|
|
95
96
|
}
|
|
96
|
-
declare const SomeMiddleware_base:
|
|
97
|
+
declare const SomeMiddleware_base: RpcX.RpcMiddleware.TagClass<SomeMiddleware, "SomeMiddleware", {}, {
|
|
97
98
|
provides: Some;
|
|
98
99
|
}>;
|
|
99
100
|
export declare class SomeMiddleware extends SomeMiddleware_base {
|
|
100
101
|
}
|
|
101
102
|
export declare const SomeMiddlewareLive: Layer.Layer<SomeMiddleware, never, never>;
|
|
102
|
-
declare const SomeElseMiddleware_base:
|
|
103
|
+
declare const SomeElseMiddleware_base: RpcX.RpcMiddleware.TagClass<SomeElseMiddleware, "SomeElseMiddleware", {}, {
|
|
103
104
|
provides: SomeElse;
|
|
104
105
|
}>;
|
|
105
106
|
export declare class SomeElseMiddleware extends SomeElseMiddleware_base {
|
|
@@ -113,16 +114,16 @@ export declare const RequestContextMap: {
|
|
|
113
114
|
type _RequestContextMap = typeof RequestContextMap;
|
|
114
115
|
export interface RequestContextMap extends _RequestContextMap {
|
|
115
116
|
}
|
|
116
|
-
declare const AllowAnonymous_base:
|
|
117
|
-
readonly dynamic:
|
|
117
|
+
declare const AllowAnonymous_base: RpcX.RpcMiddleware.TagClass<AllowAnonymous, "AllowAnonymous", {
|
|
118
|
+
readonly dynamic: RpcX.RpcMiddleware.RpcDynamic<"allowAnonymous", RpcContextMap.Inverted<[typeof UserProfile], typeof NotLoggedInError>>;
|
|
118
119
|
}, {
|
|
119
120
|
requires: SomeElse;
|
|
120
121
|
}>;
|
|
121
122
|
export declare class AllowAnonymous extends AllowAnonymous_base {
|
|
122
123
|
}
|
|
123
124
|
export declare const AllowAnonymousLive: Layer.Layer<AllowAnonymous, never, never>;
|
|
124
|
-
declare const RequireRoles_base:
|
|
125
|
-
readonly dynamic:
|
|
125
|
+
declare const RequireRoles_base: RpcX.RpcMiddleware.TagClass<RequireRoles, "RequireRoles", {
|
|
126
|
+
readonly dynamic: RpcX.RpcMiddleware.RpcDynamic<"requireRoles", RpcContextMap.Custom<never, typeof UnauthorizedError, string[]>>;
|
|
126
127
|
readonly dependsOn: readonly [typeof AllowAnonymous];
|
|
127
128
|
}, {
|
|
128
129
|
requires: never;
|
|
@@ -131,8 +132,8 @@ declare const RequireRoles_base: import("effect-app/rpc").TagClass<RequireRoles,
|
|
|
131
132
|
export declare class RequireRoles extends RequireRoles_base {
|
|
132
133
|
}
|
|
133
134
|
export declare const RequireRolesLive: Layer.Layer<RequireRoles, never, SomeService>;
|
|
134
|
-
declare const Test_base:
|
|
135
|
-
readonly dynamic:
|
|
135
|
+
declare const Test_base: RpcX.RpcMiddleware.TagClass<Test, "Test", {
|
|
136
|
+
readonly dynamic: RpcX.RpcMiddleware.RpcDynamic<"test", RpcContextMap.RpcContextMap<never, typeof S.Never>>;
|
|
136
137
|
}, {
|
|
137
138
|
requires: never;
|
|
138
139
|
provides: never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAyB,aAAa,
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAyB,aAAa,EAAE,MAAM,8BAA8B,CAAA;;;;;;;;;;;;;AAGnF,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AAEpG,qBAAa,WAAY,SAAQ,gBAAgE;CAAG;;cAGb,IAAI;;AAA3F,qBAAa,cAAe,SAAQ,mBAA8E;CACjH;AAED,eAAO,MAAM,kBAAkB,2CAM9B,CAAA;;cAGgE,QAAQ;;AADzE,qBAAa,kBACX,SAAQ,uBAA0F;CAClG;AAEF,eAAO,MAAM,sBAAsB,+CAUlC,CAAA;AASD,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAA;AAEV,KAAK,kBAAkB,GAAG,OAAO,iBAAiB,CAAA;AAClD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;CAAG;;;;cAEuB,QAAQ;;AAA/F,qBAAa,cAAe,SAAQ,mBAElC;CAAG;AAEL,eAAO,MAAM,kBAAkB,2CAyB9B,CAAA;;;;;;;;AAID,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;AAEL,eAAO,MAAM,gBAAgB,+CAuB5B,CAAA;;;;;;;AAGD,qBAAa,IAAK,SAAQ,SAExB;CAAG;AAEL,eAAO,MAAM,QAAQ,iCAOpB,CAAA;;;;AAED,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;;;;AACxF,qBAAa,YAAa,SAAQ,iBAAmD;CAAG"}
|
package/test/dist/fixtures.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, Effect, Layer, S, Scope } from "effect-app";
|
|
2
2
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
|
|
3
|
-
import {
|
|
3
|
+
import { RpcX } from "effect-app/rpc";
|
|
4
|
+
import { contextMap, getConfig, RpcContextMap } from "effect-app/rpc/RpcContextMap";
|
|
4
5
|
import { TaggedError } from "effect-app/Schema";
|
|
5
6
|
export class UserProfile extends Context.assignTag("UserProfile")(S.Class("UserProfile")({
|
|
6
7
|
id: S.String,
|
|
@@ -15,13 +16,13 @@ const MakeSomeService = Effect.succeed({ a: 1 });
|
|
|
15
16
|
export class SomeService extends Context.TagMakeId("SomeService", MakeSomeService)() {
|
|
16
17
|
}
|
|
17
18
|
// functionally equivalent to the one above
|
|
18
|
-
export class SomeMiddleware extends Tag()("SomeMiddleware"
|
|
19
|
+
export class SomeMiddleware extends RpcX.RpcMiddleware.Tag()("SomeMiddleware") {
|
|
19
20
|
}
|
|
20
21
|
export const SomeMiddlewareLive = Layer.effect(SomeMiddleware, Effect.gen(function* () {
|
|
21
22
|
// yield* Effect.context<"test-dep">()
|
|
22
23
|
return (effect) => effect.pipe(Effect.provideService(Some, new Some({ a: 1 })));
|
|
23
24
|
}));
|
|
24
|
-
export class SomeElseMiddleware extends Tag()("SomeElseMiddleware"
|
|
25
|
+
export class SomeElseMiddleware extends RpcX.RpcMiddleware.Tag()("SomeElseMiddleware") {
|
|
25
26
|
}
|
|
26
27
|
export const SomeElseMiddlewareLive = Layer.effect(SomeElseMiddleware, Effect.gen(function* () {
|
|
27
28
|
// yield* Effect.context<"test-dep">()
|
|
@@ -41,7 +42,7 @@ export const RequestContextMap = {
|
|
|
41
42
|
requireRoles: RpcContextMap.makeCustom(null, UnauthorizedError, Array()),
|
|
42
43
|
test: RpcContextMap.make(null, S.Never)
|
|
43
44
|
};
|
|
44
|
-
export class AllowAnonymous extends Tag()("AllowAnonymous", {
|
|
45
|
+
export class AllowAnonymous extends RpcX.RpcMiddleware.Tag()("AllowAnonymous", {
|
|
45
46
|
dynamic: contextMap(RequestContextMap, "allowAnonymous")
|
|
46
47
|
}) {
|
|
47
48
|
}
|
|
@@ -64,7 +65,7 @@ export const AllowAnonymousLive = Layer.effect(AllowAnonymous, Effect.gen(functi
|
|
|
64
65
|
}));
|
|
65
66
|
// TODO: don't expect service when it's wrap
|
|
66
67
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
67
|
-
export class RequireRoles extends Tag()("RequireRoles", {
|
|
68
|
+
export class RequireRoles extends RpcX.RpcMiddleware.Tag()("RequireRoles", {
|
|
68
69
|
dynamic: contextMap(RequestContextMap, "requireRoles"),
|
|
69
70
|
// had to move this in here, because once you put it manually as a readonly static property on the class,
|
|
70
71
|
// there's a weird issue where the fluent api stops behaving properly after adding this middleware via `addDynamicMiddleware`
|
|
@@ -88,7 +89,7 @@ export const RequireRolesLive = Layer.effect(RequireRoles, Effect.gen(function*
|
|
|
88
89
|
});
|
|
89
90
|
}));
|
|
90
91
|
// TODO: don't expect service when it's wrap
|
|
91
|
-
export class Test extends Tag()("Test", {
|
|
92
|
+
export class Test extends RpcX.RpcMiddleware.Tag()("Test", {
|
|
92
93
|
dynamic: contextMap(RequestContextMap, "test")
|
|
93
94
|
}) {
|
|
94
95
|
}
|
|
@@ -101,4 +102,4 @@ export class CustomError1 extends TaggedError()("CustomError1", {}) {
|
|
|
101
102
|
}
|
|
102
103
|
export class CustomError2 extends TaggedError()("CustomError1", {}) {
|
|
103
104
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRS9DLE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBMkIsYUFBYSxDQUFDLENBQ3pGLENBQUMsQ0FBQyxLQUFLLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDLENBQ0g7Q0FDQTtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQVE7Q0FBRztBQUN4RixNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFZO0NBQUc7QUFDcEcsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAEtC,OAAO,EAAE,cAAc,EAAyC,YAAY,EAAoB,IAAI,EAAE,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,MAAM,eAAe,CAAA;;cAGnK,IAAI;;AADzE,qBAAa,sBACX,SAAQ,2BAA8F;IAEtG,MAAM,CAAC,OAAO,oDASZ;CACH;AAqBD,eAAO,MAAM,eAAe;;;;;;;;;;SAMK,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkD,MAAM,aAAa,CAAA;AAEvF,OAAO,EAA2B,KAAK,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkD,MAAM,aAAa,CAAA;AAEvF,OAAO,EAA2B,KAAK,EAAE,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,cAAc,EAAyC,YAAY,EAA0B,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;;;;;;;;;;;;AAErP,cAAM,UAAW,SAAQ,eAKkB;CACzC;AAsCF,eAAO,MAAM,OAAO,uFAMhB,CAAA;AAiBJ,eAAO,MAAM,YAAY,yIAItB,CAAA;AAEH,eAAO,MAAM,YAAY,+FAgByB,CAAA"}
|
package/test/fixtures.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, Effect, Layer, S, Scope } from "effect-app"
|
|
2
2
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
|
|
3
|
-
import {
|
|
3
|
+
import { RpcX } from "effect-app/rpc"
|
|
4
|
+
import { contextMap, getConfig, RpcContextMap } from "effect-app/rpc/RpcContextMap"
|
|
4
5
|
import { TaggedError } from "effect-app/Schema"
|
|
5
6
|
|
|
6
7
|
export class UserProfile extends Context.assignTag<UserProfile, UserProfile>("UserProfile")(
|
|
@@ -17,7 +18,7 @@ const MakeSomeService = Effect.succeed({ a: 1 })
|
|
|
17
18
|
export class SomeService extends Context.TagMakeId("SomeService", MakeSomeService)<SomeService>() {}
|
|
18
19
|
|
|
19
20
|
// functionally equivalent to the one above
|
|
20
|
-
export class SomeMiddleware extends Tag<SomeMiddleware, { provides: Some }>()("SomeMiddleware"
|
|
21
|
+
export class SomeMiddleware extends RpcX.RpcMiddleware.Tag<SomeMiddleware, { provides: Some }>()("SomeMiddleware") {
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export const SomeMiddlewareLive = Layer.effect(
|
|
@@ -28,7 +29,9 @@ export const SomeMiddlewareLive = Layer.effect(
|
|
|
28
29
|
})
|
|
29
30
|
)
|
|
30
31
|
|
|
31
|
-
export class SomeElseMiddleware
|
|
32
|
+
export class SomeElseMiddleware
|
|
33
|
+
extends RpcX.RpcMiddleware.Tag<SomeElseMiddleware, { provides: SomeElse }>()("SomeElseMiddleware")
|
|
34
|
+
{}
|
|
32
35
|
|
|
33
36
|
export const SomeElseMiddlewareLive = Layer.effect(
|
|
34
37
|
SomeElseMiddleware,
|
|
@@ -58,7 +61,7 @@ export const RequestContextMap = {
|
|
|
58
61
|
type _RequestContextMap = typeof RequestContextMap
|
|
59
62
|
export interface RequestContextMap extends _RequestContextMap {}
|
|
60
63
|
|
|
61
|
-
export class AllowAnonymous extends Tag<AllowAnonymous, { requires: SomeElse }>()("AllowAnonymous", {
|
|
64
|
+
export class AllowAnonymous extends RpcX.RpcMiddleware.Tag<AllowAnonymous, { requires: SomeElse }>()("AllowAnonymous", {
|
|
62
65
|
dynamic: contextMap(RequestContextMap, "allowAnonymous")
|
|
63
66
|
}) {}
|
|
64
67
|
|
|
@@ -91,7 +94,7 @@ export const AllowAnonymousLive = Layer.effect(
|
|
|
91
94
|
|
|
92
95
|
// TODO: don't expect service when it's wrap
|
|
93
96
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
94
|
-
export class RequireRoles extends Tag<RequireRoles>()("RequireRoles", {
|
|
97
|
+
export class RequireRoles extends RpcX.RpcMiddleware.Tag<RequireRoles>()("RequireRoles", {
|
|
95
98
|
dynamic: contextMap(RequestContextMap, "requireRoles"),
|
|
96
99
|
// had to move this in here, because once you put it manually as a readonly static property on the class,
|
|
97
100
|
// there's a weird issue where the fluent api stops behaving properly after adding this middleware via `addDynamicMiddleware`
|
|
@@ -124,7 +127,7 @@ export const RequireRolesLive = Layer.effect(
|
|
|
124
127
|
)
|
|
125
128
|
|
|
126
129
|
// TODO: don't expect service when it's wrap
|
|
127
|
-
export class Test extends Tag<Test>()("Test", {
|
|
130
|
+
export class Test extends RpcX.RpcMiddleware.Tag<Test>()("Test", {
|
|
128
131
|
dynamic: contextMap(RequestContextMap, "test")
|
|
129
132
|
}) {}
|
|
130
133
|
|
package/test/requires.test.ts
CHANGED
|
@@ -4,41 +4,46 @@ import { describe, expect, expectTypeOf, it } from "@effect/vitest"
|
|
|
4
4
|
import { Context, Effect, Either, Layer, S } from "effect-app"
|
|
5
5
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
|
|
6
6
|
import { HttpHeaders } from "effect-app/http"
|
|
7
|
-
import
|
|
7
|
+
import * as RpcX from "effect-app/rpc"
|
|
8
|
+
import { MiddlewareMaker } from "effect-app/rpc"
|
|
8
9
|
import { AllowAnonymous, AllowAnonymousLive, RequestContextMap, RequireRoles, RequireRolesLive, Some, SomeElseMiddleware, SomeElseMiddlewareLive, SomeMiddleware, SomeMiddlewareLive, SomeService, Test, TestLive } from "./fixtures.js"
|
|
9
10
|
|
|
10
|
-
export class RequiresSomeMiddleware
|
|
11
|
-
Tag<RequiresSomeMiddleware, { requires: Some }>()("RequiresSomeMiddleware"
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
export class RequiresSomeMiddleware
|
|
12
|
+
extends RpcX.RpcMiddleware.Tag<RequiresSomeMiddleware, { requires: Some }>()("RequiresSomeMiddleware")
|
|
13
|
+
{
|
|
14
|
+
static Default = Layer.make(this, {
|
|
15
|
+
*make() {
|
|
14
16
|
// yield* Effect.context<"test-dep">()
|
|
15
17
|
return Effect.fnUntraced(function*(effect) {
|
|
16
18
|
yield* Some
|
|
17
19
|
// yield* Effect.context<"test-dep2">()
|
|
18
20
|
return yield* effect
|
|
19
21
|
})
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
) {
|
|
22
|
+
}
|
|
23
|
+
})
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
const middleware3 =
|
|
26
|
+
const middleware3 = MiddlewareMaker
|
|
27
|
+
.Tag()("middleware", RequestContextMap)
|
|
26
28
|
.middleware(RequiresSomeMiddleware)
|
|
27
29
|
.middleware(SomeMiddleware)
|
|
28
30
|
.middleware(RequireRoles)
|
|
29
31
|
.middleware(AllowAnonymous, Test)
|
|
30
32
|
.middleware(SomeElseMiddleware)
|
|
31
33
|
|
|
32
|
-
const _middlewareSideways =
|
|
34
|
+
const _middlewareSideways = MiddlewareMaker
|
|
35
|
+
.Tag()("middleware", RequestContextMap)
|
|
33
36
|
.middleware(RequiresSomeMiddleware)
|
|
34
37
|
.middleware(SomeMiddleware)
|
|
35
38
|
.middleware(RequireRoles, AllowAnonymous, Test)
|
|
36
39
|
.middleware(SomeElseMiddleware)
|
|
37
40
|
|
|
38
|
-
const _middlewareSidewaysFully =
|
|
41
|
+
const _middlewareSidewaysFully = MiddlewareMaker
|
|
42
|
+
.Tag()("middleware", RequestContextMap)
|
|
39
43
|
.middleware(RequiresSomeMiddleware, SomeMiddleware, RequireRoles, AllowAnonymous, Test, SomeElseMiddleware)
|
|
40
44
|
|
|
41
|
-
export const _middleware3Bis =
|
|
45
|
+
export const _middleware3Bis = MiddlewareMaker
|
|
46
|
+
.Tag()("middleware", RequestContextMap)
|
|
42
47
|
.middleware(RequiresSomeMiddleware)
|
|
43
48
|
.middleware(SomeMiddleware)
|
|
44
49
|
.middleware(RequireRoles)
|
|
@@ -7,16 +7,19 @@ import { S } from "effect-app"
|
|
|
7
7
|
import { NotLoggedInError } from "effect-app/client"
|
|
8
8
|
import { HttpLayerRouter } from "effect-app/http"
|
|
9
9
|
import { DefaultGenericMiddlewares } from "effect-app/middleware"
|
|
10
|
-
import {
|
|
10
|
+
import { MiddlewareMaker } from "effect-app/rpc"
|
|
11
|
+
import { middlewareGroup } from "effect-app/rpc/MiddlewareMaker"
|
|
11
12
|
import { createServer } from "http"
|
|
12
13
|
import { DefaultGenericMiddlewaresLive } from "../src/api/routing.js"
|
|
13
14
|
import { AllowAnonymous, AllowAnonymousLive, RequestContextMap, RequireRoles, RequireRolesLive, Some, SomeElseMiddleware, SomeElseMiddlewareLive, SomeMiddleware, SomeMiddlewareLive, SomeService, Test, TestLive, UserProfile } from "./fixtures.js"
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
class middleware extends MiddlewareMaker
|
|
17
|
+
.Tag<middleware>()("MiddlewareMaker", RequestContextMap)
|
|
16
18
|
.middleware(RequireRoles)
|
|
17
19
|
.middleware(AllowAnonymous, Test)
|
|
18
20
|
.middleware(SomeElseMiddleware, SomeMiddleware)
|
|
19
21
|
.middleware(...DefaultGenericMiddlewares)
|
|
22
|
+
{}
|
|
20
23
|
|
|
21
24
|
const UserRpcs = middlewareGroup(middleware)(
|
|
22
25
|
RpcGroup.make(
|