@effect-app/infra 2.87.2 → 2.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/dist/api/{routing/middleware/ContextProvider.d.ts → ContextProvider.d.ts} +1 -1
  3. package/dist/api/ContextProvider.d.ts.map +1 -0
  4. package/dist/api/ContextProvider.js +38 -0
  5. package/dist/api/routing/middleware/RouterMiddleware.d.ts +15 -28
  6. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  7. package/dist/api/routing/middleware/RouterMiddleware.js +2 -5
  8. package/dist/api/routing/middleware/RpcMiddleware.d.ts +19 -23
  9. package/dist/api/routing/middleware/RpcMiddleware.d.ts.map +1 -1
  10. package/dist/api/routing/middleware/RpcMiddleware.js +1 -1
  11. package/dist/api/routing/middleware/dynamic-middleware.d.ts +1 -9
  12. package/dist/api/routing/middleware/dynamic-middleware.d.ts.map +1 -1
  13. package/dist/api/routing/middleware/generic-middleware.d.ts +24 -22
  14. package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
  15. package/dist/api/routing/middleware/generic-middleware.js +24 -8
  16. package/dist/api/routing/middleware/middleware-api.d.ts +68 -36
  17. package/dist/api/routing/middleware/middleware-api.d.ts.map +1 -1
  18. package/dist/api/routing/middleware/middleware-api.js +45 -45
  19. package/dist/api/routing/middleware/middleware.d.ts +7 -7
  20. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  21. package/dist/api/routing/middleware/middleware.js +5 -5
  22. package/dist/api/routing/middleware.d.ts +0 -1
  23. package/dist/api/routing/middleware.d.ts.map +1 -1
  24. package/dist/api/routing/middleware.js +1 -2
  25. package/dist/api/routing.d.ts +1 -1
  26. package/dist/api/routing.d.ts.map +1 -1
  27. package/dist/api/routing.js +12 -10
  28. package/package.json +6 -6
  29. package/src/api/{routing/middleware/ContextProvider.ts → ContextProvider.ts} +1 -1
  30. package/src/api/routing/middleware/RouterMiddleware.ts +22 -134
  31. package/src/api/routing/middleware/RpcMiddleware.ts +28 -23
  32. package/src/api/routing/middleware/dynamic-middleware.ts +0 -47
  33. package/src/api/routing/middleware/generic-middleware.ts +84 -35
  34. package/src/api/routing/middleware/middleware-api.ts +190 -159
  35. package/src/api/routing/middleware/middleware.ts +5 -5
  36. package/src/api/routing/middleware.ts +0 -1
  37. package/src/api/routing.ts +22 -20
  38. package/test/contextProvider.test.ts +28 -25
  39. package/test/controller.test.ts +44 -9
  40. package/test/dist/contextProvider.test.d.ts.map +1 -1
  41. package/test/dist/controller.test.d.ts.map +1 -1
  42. package/test/dist/fixtures.d.ts +39 -45
  43. package/test/dist/fixtures.d.ts.map +1 -1
  44. package/test/dist/fixtures.js +27 -14
  45. package/test/dist/requires.test.d.ts.map +1 -1
  46. package/test/fixtures.ts +29 -18
  47. package/test/layerUtils.test.ts +1 -2
  48. package/test/requires.test.ts +146 -103
  49. package/dist/api/routing/middleware/ContextProvider.d.ts.map +0 -1
  50. package/dist/api/routing/middleware/ContextProvider.js +0 -38
@@ -1,8 +1,11 @@
1
- import { expect, expectTypeOf, it } from "@effect/vitest"
2
- import { Effect, Either, Layer, S } from "effect-app"
1
+ import { Rpc } from "@effect/rpc"
2
+ import { type SuccessValue } from "@effect/rpc/RpcMiddleware"
3
+ import { describe, expect, expectTypeOf, it } from "@effect/vitest"
4
+ import { Context, Effect, Either, Layer, S } from "effect-app"
3
5
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
6
+ import { HttpHeaders } from "effect-app/http"
4
7
  import { makeMiddleware, Middleware } from "../src/api/routing.js"
5
- import { AllowAnonymous, type RequestContextMap, RequireRoles, Some, SomeElse, Test } from "./fixtures.js"
8
+ import { AllowAnonymous, RequestContextMap, RequireRoles, Some, SomeElse, SomeService, Test } from "./fixtures.js"
6
9
 
7
10
  export class SomeMiddleware extends Middleware.Tag<SomeMiddleware>()("SomeMiddleware", {
8
11
  provides: Some
@@ -17,6 +20,18 @@ export class SomeMiddleware extends Middleware.Tag<SomeMiddleware>()("SomeMiddle
17
20
  }) {
18
21
  }
19
22
 
23
+ // functionally equivalent to the one above
24
+ export class SomeMiddlewareWrap extends Middleware.Tag<SomeMiddlewareWrap>()("SomeMiddlewareWrap", {
25
+ provides: Some,
26
+ wrap: true
27
+ })({
28
+ effect: Effect.gen(function*() {
29
+ // yield* Effect.context<"test-dep">()
30
+ return ({ next }) => next.pipe(Effect.provideService(Some, new Some({ a: 1 })))
31
+ })
32
+ }) {
33
+ }
34
+
20
35
  export class SomeElseMiddleware extends Middleware.Tag<SomeElseMiddleware>()("SomeElseMiddleware", {
21
36
  provides: SomeElse,
22
37
  wrap: true
@@ -48,109 +63,137 @@ export class RequiresSomeMiddleware extends Middleware.Tag<RequiresSomeMiddlewar
48
63
  }) {
49
64
  }
50
65
 
51
- it("requires gets enforced", async () => {
52
- const middleware3 = makeMiddleware<RequestContextMap>()
53
- .middleware(RequiresSomeMiddleware)
54
- .middleware(SomeMiddleware)
55
- .middleware(RequireRoles)
56
- .middleware(AllowAnonymous, Test)
57
- .middleware(SomeElseMiddleware)
58
-
59
- const layer = middleware3.Default.pipe(Layer.provide(Layer.succeed(Some, new Some({ a: 1 }))))
60
-
61
- type Default = typeof middleware3["Default"]
62
- type LayerContext = Layer.Layer.Context<Default>
63
- expectTypeOf({} as LayerContext).toEqualTypeOf<Some>()
64
-
65
- await Effect
66
- .gen(function*() {
67
- const mw = yield* middleware3
68
- const mwM = mw.effect(
69
- Object.assign({}, S.Any, { config: { requireRoles: ["manager"] } }),
70
- (_req) => Effect.void,
71
- "some-module"
72
- )
73
- yield* mwM({}, { "x-user": "test-user", "x-is-manager": "true" })
74
- })
75
- .pipe(
76
- Effect.scoped,
77
- Effect.provide(layer),
78
- Effect.runPromise
79
- )
66
+ const middleware3 = makeMiddleware(RequestContextMap)
67
+ .middleware(RequiresSomeMiddleware)
68
+ .middleware(SomeMiddleware)
69
+ .middleware(RequireRoles)
70
+ .middleware(AllowAnonymous, Test)
71
+ .middleware(SomeElseMiddleware)
80
72
 
81
- await Effect
82
- .gen(function*() {
83
- const mw = yield* middleware3
84
- const mwM = mw.effect(
85
- Object.assign({}, S.Any, { config: { allowAnonymous: true } }),
86
- (_req) => Effect.void,
87
- "some-module"
88
- )
89
- yield* mwM({}, {})
90
- })
91
- .pipe(
92
- Effect.scoped,
93
- Effect.provide(layer),
94
- Effect.runPromise
95
- )
73
+ const _middlewareSideways = makeMiddleware(RequestContextMap)
74
+ .middleware(RequiresSomeMiddleware)
75
+ .middleware(SomeMiddleware)
76
+ .middleware(RequireRoles, AllowAnonymous, Test)
77
+ .middleware(SomeElseMiddleware)
78
+
79
+ const _middlewareSidewaysFully = makeMiddleware(RequestContextMap)
80
+ .middleware(RequiresSomeMiddleware, SomeMiddleware, RequireRoles, AllowAnonymous, Test, SomeElseMiddleware)
81
+
82
+ const _middleware3Bis = makeMiddleware(RequestContextMap)
83
+ .middleware(RequiresSomeMiddleware)
84
+ .middleware(SomeMiddlewareWrap)
85
+ .middleware(RequireRoles)
86
+ .middleware(AllowAnonymous, Test)
87
+ .middleware(SomeElseMiddleware)
96
88
 
97
- expect(
98
- await Effect
99
- .gen(function*() {
100
- const mw = yield* middleware3
101
- const mwM = mw.effect(
102
- Object.assign({}, S.Any, { config: {} }),
103
- (_req) => Effect.void,
104
- "some-module"
89
+ expectTypeOf(_middlewareSideways).toEqualTypeOf<typeof middleware3>()
90
+ expectTypeOf(_middlewareSidewaysFully).toEqualTypeOf<typeof _middlewareSideways>()
91
+ expectTypeOf(_middleware3Bis).toEqualTypeOf<typeof middleware3>()
92
+
93
+ type Default = typeof middleware3["Default"]
94
+ type LayerContext = Layer.Layer.Context<Default>
95
+ expectTypeOf({} as LayerContext).toEqualTypeOf<SomeService>()
96
+
97
+ class TestRequest extends S.TaggedRequest<Test>("Test")("Test", {
98
+ payload: {},
99
+ success: S.Void,
100
+ failure: S.Never
101
+ }) {}
102
+
103
+ const testSuite = (_mw: typeof middleware3) =>
104
+ describe("middleware" + _mw, () => {
105
+ it.effect(
106
+ "works",
107
+ Effect.fn(function*() {
108
+ const defaultReq = {
109
+ headers: HttpHeaders.unsafeFromRecord({}),
110
+ payload: { _tag: "Test" },
111
+ clientId: 0,
112
+ rpc: { ...Rpc.fromTaggedRequest(TestRequest), annotations: Context.make(_mw.requestContext, {}) },
113
+ next: Effect.void as unknown as Effect<SuccessValue, never, any>
114
+ }
115
+ const layer = _mw.Default.pipe(Layer.provide(SomeService.toLayer()))
116
+ yield* Effect
117
+ .gen(function*() {
118
+ const mw = yield* _mw
119
+ const mwM = mw(
120
+ Object.assign({ ...defaultReq }, {
121
+ headers: { "x-user": "test-user", "x-is-manager": "true" },
122
+ rpc: { ...defaultReq.rpc, annotations: Context.make(_mw.requestContext, { requireRoles: ["manager"] }) }
123
+ })
124
+ )
125
+ yield* mwM
126
+ })
127
+ .pipe(
128
+ Effect.scoped,
129
+ Effect.provide(layer)
130
+ )
131
+
132
+ expect(
133
+ yield* Effect
134
+ .gen(function*() {
135
+ const mw = yield* _mw
136
+ const mwM = mw(
137
+ Object.assign({ ...defaultReq }, {})
138
+ )
139
+ yield* mwM
140
+ })
141
+ .pipe(
142
+ Effect.scoped,
143
+ Effect.provide(layer),
144
+ Effect.either
145
+ )
105
146
  )
106
- yield* mwM({}, {})
107
- })
108
- .pipe(
109
- Effect.scoped,
110
- Effect.provide(layer),
111
- Effect.either,
112
- Effect.runPromise
113
- )
114
- )
115
- .toEqual(Either.left(new NotLoggedInError()))
116
-
117
- expect(
118
- await Effect
119
- .gen(function*() {
120
- const mw = yield* middleware3
121
- const mwM = mw.effect(
122
- Object.assign({}, S.Any, { config: { requireRoles: ["manager"] } }),
123
- (_req) => Effect.void,
124
- "some-module"
147
+ .toEqual(Either.left(new NotLoggedInError()))
148
+
149
+ expect(
150
+ yield* Effect
151
+ .gen(function*() {
152
+ const mw = yield* _mw
153
+ const mwM = mw(
154
+ Object.assign({ ...defaultReq }, {
155
+ rpc: {
156
+ ...defaultReq.rpc,
157
+ annotations: Context.make(_mw.requestContext, { requireRoles: ["manager"] })
158
+ }
159
+ })
160
+ )
161
+ yield* mwM
162
+ })
163
+ .pipe(
164
+ Effect.scoped,
165
+ Effect.provide(layer),
166
+ Effect.either
167
+ )
125
168
  )
126
- yield* mwM({}, {})
127
- })
128
- .pipe(
129
- Effect.scoped,
130
- Effect.provide(layer),
131
- Effect.either,
132
- Effect.runPromise
133
- )
134
- )
135
- .toEqual(Either.left(new NotLoggedInError()))
136
-
137
- expect(
138
- await Effect
139
- .gen(function*() {
140
- const mw = yield* middleware3
141
- const mwM = mw.effect(
142
- Object.assign({}, S.Any, { config: { requireRoles: ["manager"] } }),
143
- (_req) => Effect.void,
144
- "some-module"
169
+ .toEqual(Either.left(new NotLoggedInError()))
170
+
171
+ expect(
172
+ yield* Effect
173
+ .gen(function*() {
174
+ const mw = yield* _mw
175
+ const mwM = mw(
176
+ Object.assign({ ...defaultReq }, { headers: { "x-user": "test-user" } }, {
177
+ rpc: {
178
+ ...defaultReq.rpc,
179
+ annotations: Context.make(_mw.requestContext, { requireRoles: ["manager"] })
180
+ }
181
+ })
182
+ )
183
+ yield* mwM
184
+ })
185
+ .pipe(
186
+ Effect.scoped,
187
+ Effect.provide(layer),
188
+ Effect.either
189
+ )
145
190
  )
146
- yield* mwM({}, { "x-user": "test-user" })
191
+ .toEqual(Either.left(new UnauthorizedError({ message: "don't have the right roles" })))
147
192
  })
148
- .pipe(
149
- Effect.scoped,
150
- Effect.provide(layer),
151
- Effect.either,
152
- Effect.runPromise
153
- )
154
- )
155
- .toEqual(Either.left(new UnauthorizedError({ message: "don't have the right roles" })))
156
- })
193
+ )
194
+ })
195
+
196
+ testSuite(middleware3)
197
+ testSuite(_middleware3Bis)
198
+ testSuite(_middlewareSideways)
199
+ testSuite(_middlewareSidewaysFully)
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/ContextProvider.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Context, Effect, Layer, pipe } from "effect-app";
3
- import { mergeContexts } from "../../layerUtils.js";
4
- // Note: the type here must be aligned with MergedContextProvider
5
- export const mergeContextProviders = (
6
- // long life to reverse mapped types
7
- ...deps) => ({
8
- dependencies: deps.map((_) => _.Default),
9
- effect: Effect.gen(function* () {
10
- // uses the tags to request the context providers
11
- const makers = yield* Effect.all(deps);
12
- return Effect
13
- .gen(function* () {
14
- const services = makers.map((handle, i) => ({
15
- maker: deps[i],
16
- handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
17
- }));
18
- // services are effects which return some Context.Context<...>
19
- const context = yield* mergeContexts(services);
20
- return context;
21
- });
22
- })
23
- });
24
- // Effect Rpc Middleware: for single tag providing, we could use Provides, for providing Context or Layer (bad boy) we could use Wrap..
25
- export const ContextProvider = (input) => {
26
- const ctx = Context.GenericTag("ContextProvider");
27
- const e = input.effect.pipe(Effect.map((eg) => eg[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(eg)() : eg));
28
- const l = Layer.scoped(ctx, e);
29
- return Object.assign(ctx, {
30
- Default: l.pipe(input.dependencies ? Layer.provide(input.dependencies) : (_) => _)
31
- });
32
- };
33
- // Note: the type here must be aligned with mergeContextProviders
34
- export const MergedContextProvider = (
35
- // long life to reverse mapped types
36
- ...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
37
- export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvQ29udGV4dFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQThCLElBQUksRUFBYyxNQUFNLFlBQVksQ0FBQTtBQUtqRyxPQUFPLEVBQWdFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBd0VqSCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7QUFHbkMsb0NBQW9DO0FBQ3BDLEdBQUcsSUFBcUIsRUFheEIsRUFBRSxDQUFDLENBQUM7SUFDSixZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBUyxDQUFDLE9BQU8sQ0FBUTtJQUN4RCxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDMUIsaURBQWlEO1FBQ2pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBYSxDQUFDLENBQUE7UUFDL0MsT0FBTyxNQUFNO2FBQ1YsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sUUFBUSxHQUFJLE1BQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDcEQ7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTTthQUNsRyxDQUNGLENBQUMsQ0FBQTtZQUNGLDhEQUE4RDtZQUM5RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBZSxDQUFDLENBQUE7WUFDckQsT0FBTyxPQUFPLENBQUE7UUFDaEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQVE7Q0FDVixDQUFDLENBQUE7QUFFRix1SUFBdUk7QUFDdkksTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBTzdCLEtBWUMsRUFDRCxFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FJNUIsaUJBQWlCLENBQ2xCLENBQUE7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUUsRUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDbEgsQ0FBQTtJQUNELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQVEsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDeEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2IsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBT3pFO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0FBR25DLG9DQUFvQztBQUNwQyxHQUFHLElBQXFCLEVBQ3hCLEVBQUUsQ0FDRixJQUFJLENBQ0YsSUFBcUQsRUFDckQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBUSxDQUFDLENBZWpDLENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBIn0=