@effect-app/infra 3.0.5 → 3.0.6
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 +8 -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 +54 -45
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +3 -3
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/fixtures.ts +2 -2
- package/test/requires.test.ts +16 -12
package/CHANGELOG.md
CHANGED
|
@@ -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.6",
|
|
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.4"
|
|
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,19 @@ 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
10
|
import { TypeTestId } from "effect-app/TypeTest"
|
|
11
11
|
import { DefaultGenericMiddlewaresLive } from "../src/api/routing/middleware.js"
|
|
12
12
|
import { sort } from "../src/api/routing/tsort.js"
|
|
13
13
|
import { AllowAnonymous, AllowAnonymousLive, CustomError1, RequestContextMap, RequireRoles, RequireRolesLive, Some, SomeElse, SomeService, Test, TestLive } from "./fixtures.js"
|
|
14
14
|
|
|
15
15
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
16
|
-
class MyContextProvider extends
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
effect: Effect.gen(function*() {
|
|
16
|
+
class MyContextProvider extends RpcX.Tag<MyContextProvider, {
|
|
17
|
+
provides: Some
|
|
18
|
+
requires: SomeElse
|
|
19
|
+
}>()("MyContextProvider") {
|
|
20
|
+
static Default = Layer.make(this, {
|
|
21
|
+
*make() {
|
|
23
22
|
yield* SomeService
|
|
24
23
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
25
24
|
|
|
@@ -40,19 +39,19 @@ class MyContextProvider extends Context.DefineService(
|
|
|
40
39
|
|
|
41
40
|
return yield* Effect.provideService(effect, Some, new Some({ a: 1 }))
|
|
42
41
|
})
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
static but_why = "???" // remove me and life rocks
|
|
45
|
+
}
|
|
46
46
|
|
|
47
47
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
48
|
-
class MyContextProvider3 extends
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
{
|
|
48
|
+
class MyContextProvider3 extends RpcX.Tag<MyContextProvider3, {
|
|
49
|
+
provides: Some
|
|
50
|
+
requires: SomeElse
|
|
51
|
+
}>()("MyContextProvider3") {
|
|
52
|
+
static Default = Layer.make(this, {
|
|
54
53
|
dependencies: [Layer.effect(SomeService, SomeService.make)],
|
|
55
|
-
|
|
54
|
+
*make() {
|
|
56
55
|
yield* SomeService
|
|
57
56
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
58
57
|
|
|
@@ -73,17 +72,20 @@ class MyContextProvider3 extends Context.DefineService(
|
|
|
73
72
|
|
|
74
73
|
return yield* Effect.provideService(effect, Some, new Some({ a: 1 }))
|
|
75
74
|
})
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
}
|
|
79
78
|
|
|
80
|
-
expectTypeOf(MyContextProvider3.Default).toEqualTypeOf<
|
|
79
|
+
expectTypeOf(MyContextProvider3.Default).toEqualTypeOf<
|
|
80
|
+
Layer.Layer<MyContextProvider3, CustomError1, never> & {
|
|
81
|
+
withoutDependencies: Layer.Layer<MyContextProvider3, CustomError1, SomeService>
|
|
82
|
+
}
|
|
83
|
+
>()
|
|
81
84
|
|
|
82
85
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
83
|
-
class MyContextProvider2 extends
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
effect: Effect.gen(function*() {
|
|
86
|
+
class MyContextProvider2 extends RpcX.Tag<MyContextProvider2, { provides: SomeElse }>()("MyContextProvider2") {
|
|
87
|
+
static Default = Layer.make(this, {
|
|
88
|
+
*make() {
|
|
87
89
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
88
90
|
|
|
89
91
|
return Effect.fnUntraced(function*(effect) {
|
|
@@ -91,25 +93,26 @@ class MyContextProvider2 extends Context.DefineService(
|
|
|
91
93
|
|
|
92
94
|
return yield* Effect.provideService(effect, SomeElse, new SomeElse({ b: 2 }))
|
|
93
95
|
})
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
}
|
|
97
99
|
|
|
98
100
|
//
|
|
99
101
|
|
|
100
102
|
const Str = Context.GenericTag<"str", "str">("str")
|
|
101
103
|
|
|
102
|
-
export class BogusMiddleware extends
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
export class BogusMiddleware extends RpcX.Tag<BogusMiddleware>()("BogusMiddleware") {
|
|
105
|
+
static Default = Layer.make(this, {
|
|
106
|
+
*make() {
|
|
107
|
+
yield* Str
|
|
108
|
+
// yield* Effect.context<"test-dep">()
|
|
109
|
+
return (effect) =>
|
|
110
|
+
Effect.gen(function*() {
|
|
111
|
+
// yield* Effect.context<"test-dep2">()
|
|
112
|
+
return yield* effect
|
|
113
|
+
})
|
|
114
|
+
}
|
|
111
115
|
})
|
|
112
|
-
}) {
|
|
113
116
|
}
|
|
114
117
|
|
|
115
118
|
const genericMiddlewares = [
|
|
@@ -124,7 +127,8 @@ const genericMiddlewaresLive = [
|
|
|
124
127
|
MyContextProvider2.Default
|
|
125
128
|
] as const
|
|
126
129
|
|
|
127
|
-
const middleware =
|
|
130
|
+
const middleware = RpcX
|
|
131
|
+
.makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
128
132
|
.middleware(
|
|
129
133
|
RequireRoles,
|
|
130
134
|
Test
|
|
@@ -134,7 +138,8 @@ const middleware = makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
|
134
138
|
.middleware(MyContextProvider)
|
|
135
139
|
.middleware(...genericMiddlewares)
|
|
136
140
|
|
|
137
|
-
const middlewareBis =
|
|
141
|
+
const middlewareBis = RpcX
|
|
142
|
+
.makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
138
143
|
.middleware(
|
|
139
144
|
RequireRoles,
|
|
140
145
|
Test
|
|
@@ -144,7 +149,8 @@ const middlewareBis = makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
|
144
149
|
|
|
145
150
|
expectTypeOf(middleware).toEqualTypeOf<typeof middlewareBis>()
|
|
146
151
|
|
|
147
|
-
const middlewareTrisWip =
|
|
152
|
+
const middlewareTrisWip = RpcX
|
|
153
|
+
.makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
148
154
|
.middleware(
|
|
149
155
|
MyContextProvider,
|
|
150
156
|
RequireRoles,
|
|
@@ -157,7 +163,8 @@ expectTypeOf(middlewareTrisWip).toEqualTypeOf<{
|
|
|
157
163
|
}>()
|
|
158
164
|
|
|
159
165
|
// testing more sideways elimination]
|
|
160
|
-
const middlewareQuater =
|
|
166
|
+
const middlewareQuater = RpcX
|
|
167
|
+
.makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
161
168
|
.middleware(
|
|
162
169
|
RequireRoles,
|
|
163
170
|
Test,
|
|
@@ -168,13 +175,15 @@ const middlewareQuater = makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
|
168
175
|
|
|
169
176
|
expectTypeOf(middleware).toEqualTypeOf<typeof middlewareQuater>()
|
|
170
177
|
|
|
171
|
-
const middleware2 =
|
|
178
|
+
const middleware2 = RpcX
|
|
179
|
+
.makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
172
180
|
.middleware(MyContextProvider)
|
|
173
181
|
.middleware(RequireRoles, Test)
|
|
174
182
|
.middleware(AllowAnonymous)
|
|
175
183
|
.middleware(...DefaultGenericMiddlewares, BogusMiddleware, MyContextProvider2)
|
|
176
184
|
|
|
177
|
-
export const middleware3 =
|
|
185
|
+
export const middleware3 = RpcX
|
|
186
|
+
.makeMiddleware<RequestContextMap>(RequestContextMap)
|
|
178
187
|
.middleware(...genericMiddlewares)
|
|
179
188
|
.middleware(AllowAnonymous, RequireRoles)
|
|
180
189
|
.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,KAAK,EAAE,MAAM,YAAY,CAAA;
|
|
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,KAAK,EAAE,MAAM,YAAY,CAAA;AAG7D,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAItC,OAAO,EAAE,cAAc,EAAsB,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAoB,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAY,MAAM,eAAe,CAAA;;cAyEtG,QAAQ;;AAAlF,cAAM,kBAAmB,SAAQ,uBAA4E;IAC3G,MAAM,CAAC,OAAO,uDAUZ;CACH;;;;;AAMD,qBAAa,eAAgB,SAAQ,oBAA8C;IACjF,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"}
|
|
@@ -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,EAAO,MAAM,gBAAgB,CAAA;;;;;;;;;;;;;AAG1E,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AAEpG,qBAAa,WAAY,SAAQ,gBAAgE;CAAG;;cAGhC,IAAI;;AAAxE,qBAAa,cAAe,SAAQ,
|
|
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,EAAO,MAAM,gBAAgB,CAAA;;;;;;;;;;;;;AAG1E,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AAEpG,qBAAa,WAAY,SAAQ,gBAAgE;CAAG;;cAGhC,IAAI;;AAAxE,qBAAa,cAAe,SAAQ,mBAA2D;CAC9F;AAED,eAAO,MAAM,kBAAkB,2CAM9B,CAAA;;cAE2E,QAAQ;;AAApF,qBAAa,kBAAmB,SAAQ,uBAAuE;CAAG;AAElH,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;;;;cAEI,QAAQ;;AAA5E,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
|
@@ -15,13 +15,13 @@ const MakeSomeService = Effect.succeed({ a: 1 });
|
|
|
15
15
|
export class SomeService extends Context.TagMakeId("SomeService", MakeSomeService)() {
|
|
16
16
|
}
|
|
17
17
|
// functionally equivalent to the one above
|
|
18
|
-
export class SomeMiddleware extends Tag()("SomeMiddleware"
|
|
18
|
+
export class SomeMiddleware extends Tag()("SomeMiddleware") {
|
|
19
19
|
}
|
|
20
20
|
export const SomeMiddlewareLive = Layer.effect(SomeMiddleware, Effect.gen(function* () {
|
|
21
21
|
// yield* Effect.context<"test-dep">()
|
|
22
22
|
return (effect) => effect.pipe(Effect.provideService(Some, new Some({ a: 1 })));
|
|
23
23
|
}));
|
|
24
|
-
export class SomeElseMiddleware extends Tag()("SomeElseMiddleware"
|
|
24
|
+
export class SomeElseMiddleware extends Tag()("SomeElseMiddleware") {
|
|
25
25
|
}
|
|
26
26
|
export const SomeElseMiddlewareLive = Layer.effect(SomeElseMiddleware, Effect.gen(function* () {
|
|
27
27
|
// yield* Effect.context<"test-dep">()
|
|
@@ -101,4 +101,4 @@ export class CustomError1 extends TaggedError()("CustomError1", {}) {
|
|
|
101
101
|
}
|
|
102
102
|
export class CustomError2 extends TaggedError()("CustomError1", {}) {
|
|
103
103
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRS9DLE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBMkIsYUFBYSxDQUFDLENBQ3pGLENBQUMsQ0FBQyxLQUFLLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDLENBQ0g7Q0FDQTtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQVE7Q0FBRztBQUN4RixNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFZO0NBQUc7QUFDcEcsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sT0FBTyxXQUFZLFNB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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;AACtC,OAAO,EAAE,cAAc,EAAyC,YAAY,EAAoB,IAAI,EAAE,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,MAAM,eAAe,CAAA;;cAGjL,IAAI;;AAD3D,qBAAa,sBACX,SAAQ,2BAAgF;IAExF,MAAM,CAAC,OAAO,oDASZ;CACH;AAqBD,eAAO,MAAM,eAAe;;;;;;;;;;SAMK,CAAA"}
|
package/test/fixtures.ts
CHANGED
|
@@ -17,7 +17,7 @@ const MakeSomeService = Effect.succeed({ a: 1 })
|
|
|
17
17
|
export class SomeService extends Context.TagMakeId("SomeService", MakeSomeService)<SomeService>() {}
|
|
18
18
|
|
|
19
19
|
// functionally equivalent to the one above
|
|
20
|
-
export class SomeMiddleware extends Tag<SomeMiddleware, { provides: Some }>()("SomeMiddleware"
|
|
20
|
+
export class SomeMiddleware extends Tag<SomeMiddleware, { provides: Some }>()("SomeMiddleware") {
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export const SomeMiddlewareLive = Layer.effect(
|
|
@@ -28,7 +28,7 @@ export const SomeMiddlewareLive = Layer.effect(
|
|
|
28
28
|
})
|
|
29
29
|
)
|
|
30
30
|
|
|
31
|
-
export class SomeElseMiddleware extends Tag<SomeElseMiddleware, { provides: SomeElse }>()("SomeElseMiddleware"
|
|
31
|
+
export class SomeElseMiddleware extends Tag<SomeElseMiddleware, { provides: SomeElse }>()("SomeElseMiddleware") {}
|
|
32
32
|
|
|
33
33
|
export const SomeElseMiddlewareLive = Layer.effect(
|
|
34
34
|
SomeElseMiddleware,
|
package/test/requires.test.ts
CHANGED
|
@@ -4,41 +4,45 @@ 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
8
|
import { AllowAnonymous, AllowAnonymousLive, RequestContextMap, RequireRoles, RequireRolesLive, Some, SomeElseMiddleware, SomeElseMiddlewareLive, SomeMiddleware, SomeMiddlewareLive, SomeService, Test, TestLive } from "./fixtures.js"
|
|
9
9
|
|
|
10
|
-
export class RequiresSomeMiddleware
|
|
11
|
-
Tag<RequiresSomeMiddleware, { requires: Some }>()("RequiresSomeMiddleware"
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
export class RequiresSomeMiddleware
|
|
11
|
+
extends RpcX.Tag<RequiresSomeMiddleware, { requires: Some }>()("RequiresSomeMiddleware")
|
|
12
|
+
{
|
|
13
|
+
static Default = Layer.make(this, {
|
|
14
|
+
*make() {
|
|
14
15
|
// yield* Effect.context<"test-dep">()
|
|
15
16
|
return Effect.fnUntraced(function*(effect) {
|
|
16
17
|
yield* Some
|
|
17
18
|
// yield* Effect.context<"test-dep2">()
|
|
18
19
|
return yield* effect
|
|
19
20
|
})
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
) {
|
|
21
|
+
}
|
|
22
|
+
})
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
const middleware3 =
|
|
25
|
+
const middleware3 = RpcX
|
|
26
|
+
.makeMiddleware(RequestContextMap)
|
|
26
27
|
.middleware(RequiresSomeMiddleware)
|
|
27
28
|
.middleware(SomeMiddleware)
|
|
28
29
|
.middleware(RequireRoles)
|
|
29
30
|
.middleware(AllowAnonymous, Test)
|
|
30
31
|
.middleware(SomeElseMiddleware)
|
|
31
32
|
|
|
32
|
-
const _middlewareSideways =
|
|
33
|
+
const _middlewareSideways = RpcX
|
|
34
|
+
.makeMiddleware(RequestContextMap)
|
|
33
35
|
.middleware(RequiresSomeMiddleware)
|
|
34
36
|
.middleware(SomeMiddleware)
|
|
35
37
|
.middleware(RequireRoles, AllowAnonymous, Test)
|
|
36
38
|
.middleware(SomeElseMiddleware)
|
|
37
39
|
|
|
38
|
-
const _middlewareSidewaysFully =
|
|
40
|
+
const _middlewareSidewaysFully = RpcX
|
|
41
|
+
.makeMiddleware(RequestContextMap)
|
|
39
42
|
.middleware(RequiresSomeMiddleware, SomeMiddleware, RequireRoles, AllowAnonymous, Test, SomeElseMiddleware)
|
|
40
43
|
|
|
41
|
-
export const _middleware3Bis =
|
|
44
|
+
export const _middleware3Bis = RpcX
|
|
45
|
+
.makeMiddleware(RequestContextMap)
|
|
42
46
|
.middleware(RequiresSomeMiddleware)
|
|
43
47
|
.middleware(SomeMiddleware)
|
|
44
48
|
.middleware(RequireRoles)
|