@effect-app/infra 3.0.6 → 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 +8 -0
- package/package.json +2 -2
- package/test/controller.test.ts +19 -16
- 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 +10 -9
- package/test/rpc-multi-middleware.test.ts +5 -2
package/CHANGELOG.md
CHANGED
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",
|
package/test/controller.test.ts
CHANGED
|
@@ -7,13 +7,14 @@ 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
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 RpcX.Tag<MyContextProvider, {
|
|
17
|
+
class MyContextProvider extends RpcX.RpcMiddleware.Tag<MyContextProvider, {
|
|
17
18
|
provides: Some
|
|
18
19
|
requires: SomeElse
|
|
19
20
|
}>()("MyContextProvider") {
|
|
@@ -45,7 +46,7 @@ class MyContextProvider extends RpcX.Tag<MyContextProvider, {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
48
|
-
class MyContextProvider3 extends RpcX.Tag<MyContextProvider3, {
|
|
49
|
+
class MyContextProvider3 extends RpcX.RpcMiddleware.Tag<MyContextProvider3, {
|
|
49
50
|
provides: Some
|
|
50
51
|
requires: SomeElse
|
|
51
52
|
}>()("MyContextProvider3") {
|
|
@@ -83,7 +84,9 @@ expectTypeOf(MyContextProvider3.Default).toEqualTypeOf<
|
|
|
83
84
|
>()
|
|
84
85
|
|
|
85
86
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
86
|
-
class MyContextProvider2
|
|
87
|
+
class MyContextProvider2
|
|
88
|
+
extends RpcX.RpcMiddleware.Tag<MyContextProvider2, { provides: SomeElse }>()("MyContextProvider2")
|
|
89
|
+
{
|
|
87
90
|
static Default = Layer.make(this, {
|
|
88
91
|
*make() {
|
|
89
92
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
@@ -101,7 +104,7 @@ class MyContextProvider2 extends RpcX.Tag<MyContextProvider2, { provides: SomeEl
|
|
|
101
104
|
|
|
102
105
|
const Str = Context.GenericTag<"str", "str">("str")
|
|
103
106
|
|
|
104
|
-
export class BogusMiddleware extends RpcX.Tag<BogusMiddleware>()("BogusMiddleware") {
|
|
107
|
+
export class BogusMiddleware extends RpcX.RpcMiddleware.Tag<BogusMiddleware>()("BogusMiddleware") {
|
|
105
108
|
static Default = Layer.make(this, {
|
|
106
109
|
*make() {
|
|
107
110
|
yield* Str
|
|
@@ -127,8 +130,8 @@ const genericMiddlewaresLive = [
|
|
|
127
130
|
MyContextProvider2.Default
|
|
128
131
|
] as const
|
|
129
132
|
|
|
130
|
-
const middleware =
|
|
131
|
-
.
|
|
133
|
+
const middleware = MiddlewareMaker
|
|
134
|
+
.Tag()("middleware", RequestContextMap)
|
|
132
135
|
.middleware(
|
|
133
136
|
RequireRoles,
|
|
134
137
|
Test
|
|
@@ -138,8 +141,8 @@ const middleware = RpcX
|
|
|
138
141
|
.middleware(MyContextProvider)
|
|
139
142
|
.middleware(...genericMiddlewares)
|
|
140
143
|
|
|
141
|
-
const middlewareBis =
|
|
142
|
-
.
|
|
144
|
+
const middlewareBis = MiddlewareMaker
|
|
145
|
+
.Tag()("middleware", RequestContextMap)
|
|
143
146
|
.middleware(
|
|
144
147
|
RequireRoles,
|
|
145
148
|
Test
|
|
@@ -149,8 +152,8 @@ const middlewareBis = RpcX
|
|
|
149
152
|
|
|
150
153
|
expectTypeOf(middleware).toEqualTypeOf<typeof middlewareBis>()
|
|
151
154
|
|
|
152
|
-
const middlewareTrisWip =
|
|
153
|
-
.
|
|
155
|
+
const middlewareTrisWip = MiddlewareMaker
|
|
156
|
+
.Tag()("middleware", RequestContextMap)
|
|
154
157
|
.middleware(
|
|
155
158
|
MyContextProvider,
|
|
156
159
|
RequireRoles,
|
|
@@ -163,8 +166,8 @@ expectTypeOf(middlewareTrisWip).toEqualTypeOf<{
|
|
|
163
166
|
}>()
|
|
164
167
|
|
|
165
168
|
// testing more sideways elimination]
|
|
166
|
-
const middlewareQuater =
|
|
167
|
-
.
|
|
169
|
+
const middlewareQuater = MiddlewareMaker
|
|
170
|
+
.Tag()("middleware", RequestContextMap)
|
|
168
171
|
.middleware(
|
|
169
172
|
RequireRoles,
|
|
170
173
|
Test,
|
|
@@ -175,15 +178,15 @@ const middlewareQuater = RpcX
|
|
|
175
178
|
|
|
176
179
|
expectTypeOf(middleware).toEqualTypeOf<typeof middlewareQuater>()
|
|
177
180
|
|
|
178
|
-
const middleware2 =
|
|
179
|
-
.
|
|
181
|
+
const middleware2 = MiddlewareMaker
|
|
182
|
+
.Tag()("middleware", RequestContextMap)
|
|
180
183
|
.middleware(MyContextProvider)
|
|
181
184
|
.middleware(RequireRoles, Test)
|
|
182
185
|
.middleware(AllowAnonymous)
|
|
183
186
|
.middleware(...DefaultGenericMiddlewares, BogusMiddleware, MyContextProvider2)
|
|
184
187
|
|
|
185
|
-
export const middleware3 =
|
|
186
|
-
.
|
|
188
|
+
export const middleware3 = MiddlewareMaker
|
|
189
|
+
.Tag()("middleware", RequestContextMap)
|
|
187
190
|
.middleware(...genericMiddlewares)
|
|
188
191
|
.middleware(AllowAnonymous, RequireRoles)
|
|
189
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;AAEvE,OAAO,KAAK,IAAI,MAAM,gBAAgB,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
|
@@ -5,10 +5,11 @@ 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
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
11
|
export class RequiresSomeMiddleware
|
|
11
|
-
extends RpcX.Tag<RequiresSomeMiddleware, { requires: Some }>()("RequiresSomeMiddleware")
|
|
12
|
+
extends RpcX.RpcMiddleware.Tag<RequiresSomeMiddleware, { requires: Some }>()("RequiresSomeMiddleware")
|
|
12
13
|
{
|
|
13
14
|
static Default = Layer.make(this, {
|
|
14
15
|
*make() {
|
|
@@ -22,27 +23,27 @@ export class RequiresSomeMiddleware
|
|
|
22
23
|
})
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
const middleware3 =
|
|
26
|
-
.
|
|
26
|
+
const middleware3 = MiddlewareMaker
|
|
27
|
+
.Tag()("middleware", RequestContextMap)
|
|
27
28
|
.middleware(RequiresSomeMiddleware)
|
|
28
29
|
.middleware(SomeMiddleware)
|
|
29
30
|
.middleware(RequireRoles)
|
|
30
31
|
.middleware(AllowAnonymous, Test)
|
|
31
32
|
.middleware(SomeElseMiddleware)
|
|
32
33
|
|
|
33
|
-
const _middlewareSideways =
|
|
34
|
-
.
|
|
34
|
+
const _middlewareSideways = MiddlewareMaker
|
|
35
|
+
.Tag()("middleware", RequestContextMap)
|
|
35
36
|
.middleware(RequiresSomeMiddleware)
|
|
36
37
|
.middleware(SomeMiddleware)
|
|
37
38
|
.middleware(RequireRoles, AllowAnonymous, Test)
|
|
38
39
|
.middleware(SomeElseMiddleware)
|
|
39
40
|
|
|
40
|
-
const _middlewareSidewaysFully =
|
|
41
|
-
.
|
|
41
|
+
const _middlewareSidewaysFully = MiddlewareMaker
|
|
42
|
+
.Tag()("middleware", RequestContextMap)
|
|
42
43
|
.middleware(RequiresSomeMiddleware, SomeMiddleware, RequireRoles, AllowAnonymous, Test, SomeElseMiddleware)
|
|
43
44
|
|
|
44
|
-
export const _middleware3Bis =
|
|
45
|
-
.
|
|
45
|
+
export const _middleware3Bis = MiddlewareMaker
|
|
46
|
+
.Tag()("middleware", RequestContextMap)
|
|
46
47
|
.middleware(RequiresSomeMiddleware)
|
|
47
48
|
.middleware(SomeMiddleware)
|
|
48
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(
|