@effect-app/infra 2.78.7 → 2.79.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.
- package/CHANGELOG.md +12 -0
- package/dist/api/layerUtils.d.ts +2 -4
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +4 -5
- package/dist/api/routing/middleware/ContextProvider.d.ts +17 -12
- package/dist/api/routing/middleware/ContextProvider.d.ts.map +1 -1
- package/dist/api/routing/middleware/ContextProvider.js +15 -5
- package/dist/api/routing/middleware/DynamicMiddleware.d.ts +43 -21
- package/dist/api/routing/middleware/DynamicMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/DynamicMiddleware.js +60 -20
- package/dist/api/routing/middleware/generic-middleware.d.ts +17 -10
- package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/generic-middleware.js +34 -8
- package/dist/api/routing/middleware/middleware.d.ts +16 -10
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +41 -51
- package/dist/api/routing/middleware.d.ts +1 -0
- package/dist/api/routing/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware.js +2 -1
- package/dist/api/routing.d.ts +2 -2
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +3 -3
- package/package.json +1 -1
- package/src/api/layerUtils.ts +6 -9
- package/src/api/routing/middleware/ContextProvider.ts +84 -28
- package/src/api/routing/middleware/DynamicMiddleware.ts +162 -78
- package/src/api/routing/middleware/generic-middleware.ts +56 -20
- package/src/api/routing/middleware/middleware.ts +27 -35
- package/src/api/routing/middleware.ts +2 -0
- package/src/api/routing.ts +5 -5
- package/test/controller.test.ts +27 -47
- package/test/dist/controller/test2.test.d.ts.map +1 -0
- package/test/dist/controller.test copy.js +23 -46
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/controller5.test.d.ts.map +1 -0
- package/test/dist/controller6.test.d.ts.map +1 -1
- package/test/dist/controller7.test.d.ts.map +1 -1
- package/test/dist/dynamicContext.test.d.ts.map +1 -0
- package/test/dynamicContext.test.ts +153 -0
- package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
- package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
- package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
- package/vitest.config.ts.timestamp-1711744615239-dcf257a844e01.mjs +37 -0
- package/test/dist/controller.test copy.d.ts +0 -169
- package/test/dist/controller.test copy.d.ts.map +0 -1
|
@@ -3,46 +3,38 @@ import { Cause, Context, Effect, ParseResult } from "effect-app"
|
|
|
3
3
|
import { pretty } from "effect-app/utils"
|
|
4
4
|
import { logError, reportError } from "../../../errorReporter.js"
|
|
5
5
|
import { InfraLogger } from "../../../logger.js"
|
|
6
|
-
import {
|
|
6
|
+
import { RequestCacheLayers, Tag } from "../../routing.js"
|
|
7
7
|
|
|
8
8
|
const logRequestError = logError("Request")
|
|
9
9
|
const reportRequestError = reportError("Request")
|
|
10
10
|
|
|
11
11
|
export class DevMode extends Context.Reference<DevMode>()("DevMode", { defaultValue: () => false }) {}
|
|
12
|
-
// Effect Rpc Middleware: Wrap
|
|
13
|
-
export class RequestCacheMiddleware extends Effect.Service<RequestCacheMiddleware>()("RequestCacheMiddleware", {
|
|
14
|
-
effect: Effect.gen(function*() {
|
|
15
|
-
return genericMiddleware(Effect.fnUntraced(function*(options) {
|
|
16
|
-
return yield* options.next.pipe(Effect.provide(RequestCacheLayers))
|
|
17
|
-
}))
|
|
18
|
-
})
|
|
19
|
-
}) {}
|
|
20
12
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
effect: Effect.gen(function*() {
|
|
26
|
-
return genericMiddleware(Effect.fnUntraced(function*(options) {
|
|
27
|
-
return yield* options.next.pipe(
|
|
28
|
-
// TODO: make this depend on query/command, and consider if middleware also should be affected. right now it's not.
|
|
29
|
-
Effect.uninterruptible
|
|
30
|
-
)
|
|
31
|
-
}))
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
) {}
|
|
13
|
+
export class RequestCacheMiddleware extends Tag<RequestCacheMiddleware>()("RequestCacheMiddleware", { wrap: true })({
|
|
14
|
+
effect: Effect.succeed((options) => options.next.pipe(Effect.provide(RequestCacheLayers)))
|
|
15
|
+
}) {
|
|
16
|
+
}
|
|
35
17
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
18
|
+
export class ConfigureInterruptibility
|
|
19
|
+
extends Tag<ConfigureInterruptibility>()("ConfigureInterruptibility", { wrap: true })({
|
|
20
|
+
effect: Effect.succeed((options) =>
|
|
21
|
+
options.next.pipe(
|
|
22
|
+
// TODO: make this depend on query/command, and consider if middleware also should be affected. right now it's not.
|
|
23
|
+
Effect.uninterruptible
|
|
24
|
+
)
|
|
25
|
+
)
|
|
26
|
+
})
|
|
27
|
+
{
|
|
28
|
+
}
|
|
41
29
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
30
|
+
export class MiddlewareLogger extends Tag<MiddlewareLogger>()("MiddlewareLogger", { wrap: true })({
|
|
31
|
+
effect: Effect.gen(function*() {
|
|
32
|
+
const devMode = yield* DevMode
|
|
33
|
+
return ({ headers, next, payload, rpc }) =>
|
|
34
|
+
Effect
|
|
35
|
+
.annotateCurrentSpan({
|
|
36
|
+
"request.name": rpc._tag,
|
|
37
|
+
"requestInput": typeof payload === "object" && payload !== null
|
|
46
38
|
? Object.entries(payload).reduce((prev, [key, value]: [string, unknown]) => {
|
|
47
39
|
prev[key] = key === "password"
|
|
48
40
|
? "<redacted>"
|
|
@@ -60,7 +52,7 @@ export class MiddlewareLogger extends Effect.Service<MiddlewareLogger>()("Middle
|
|
|
60
52
|
return prev
|
|
61
53
|
}, {} as Record<string, string | number | boolean>)
|
|
62
54
|
: payload
|
|
63
|
-
)
|
|
55
|
+
})
|
|
64
56
|
.pipe(
|
|
65
57
|
// can't use andThen due to some being a function and effect
|
|
66
58
|
Effect.zipRight(next),
|
|
@@ -92,9 +84,9 @@ export class MiddlewareLogger extends Effect.Service<MiddlewareLogger>()("Middle
|
|
|
92
84
|
),
|
|
93
85
|
devMode ? (_) => _ : Effect.catchAllDefect(() => Effect.die("Internal Server Error"))
|
|
94
86
|
)
|
|
95
|
-
}))
|
|
96
87
|
})
|
|
97
|
-
}) {
|
|
88
|
+
}) {
|
|
89
|
+
}
|
|
98
90
|
|
|
99
91
|
export const DefaultGenericMiddlewares = [
|
|
100
92
|
RequestCacheMiddleware,
|
package/src/api/routing.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { typedKeysOf, typedValuesOf } from "effect-app/utils"
|
|
|
11
11
|
import type { Contravariant } from "effect/Types"
|
|
12
12
|
import { type YieldWrap } from "effect/Utils"
|
|
13
13
|
import { type LayerUtils } from "./layerUtils.js"
|
|
14
|
-
import { DevMode, type
|
|
14
|
+
import { DevMode, type RouterMiddleware } from "./routing/middleware.js"
|
|
15
15
|
|
|
16
16
|
export * from "./routing/middleware.js"
|
|
17
17
|
|
|
@@ -168,7 +168,7 @@ export const makeRouter = <
|
|
|
168
168
|
MakeMiddlewareR,
|
|
169
169
|
ContextProviderA
|
|
170
170
|
>(
|
|
171
|
-
middleware:
|
|
171
|
+
middleware: RouterMiddleware<
|
|
172
172
|
RequestContextMap,
|
|
173
173
|
MakeMiddlewareE,
|
|
174
174
|
MakeMiddlewareR,
|
|
@@ -405,8 +405,7 @@ export const makeRouter = <
|
|
|
405
405
|
handle(req, headers).pipe(
|
|
406
406
|
Effect.withSpan("Request." + meta.moduleName + "." + resource._tag, {
|
|
407
407
|
captureStackTrace: () => handler.stack
|
|
408
|
-
})
|
|
409
|
-
Effect.provideService(DevMode, devMode)
|
|
408
|
+
})
|
|
410
409
|
),
|
|
411
410
|
meta.moduleName
|
|
412
411
|
),
|
|
@@ -469,7 +468,8 @@ export const makeRouter = <
|
|
|
469
468
|
Layer.provide([
|
|
470
469
|
...dependencies ?? [],
|
|
471
470
|
middleware.Default
|
|
472
|
-
] as any) as any
|
|
471
|
+
] as any) as any,
|
|
472
|
+
Layer.provide(Layer.succeed(DevMode, devMode))
|
|
473
473
|
)
|
|
474
474
|
) as (Layer.Layer<
|
|
475
475
|
Router,
|
package/test/controller.test.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { type Array, Context, Effect, Layer, Option, S } from "effect-app"
|
|
|
7
7
|
import { InvalidStateError, makeRpcClient, type RPCContextMap, UnauthorizedError } from "effect-app/client"
|
|
8
8
|
import { HttpServerRequest } from "effect-app/http"
|
|
9
9
|
import { Class, TaggedError } from "effect-app/Schema"
|
|
10
|
-
import {
|
|
10
|
+
import { DefaultGenericMiddlewares, implementMiddleware, makeMiddleware, Middleware, Tag } from "../src/api/routing/middleware.js"
|
|
11
11
|
import { sort } from "../src/api/routing/tsort.js"
|
|
12
12
|
import { SomeService } from "./query.test.js"
|
|
13
13
|
|
|
@@ -34,35 +34,17 @@ export class Some extends Context.TagMakeId("Some", Effect.succeed({ a: 1 }))<So
|
|
|
34
34
|
export class SomeElse extends Context.TagMakeId("SomeElse", Effect.succeed({ b: 2 }))<SomeElse>() {}
|
|
35
35
|
|
|
36
36
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
37
|
-
|
|
37
|
+
class MyContextProvider extends Middleware.Tag<MyContextProvider>()("MyContextProvider", { provides: Some })({
|
|
38
38
|
effect: Effect.gen(function*() {
|
|
39
39
|
yield* SomeService
|
|
40
40
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
41
41
|
|
|
42
|
-
return Effect.
|
|
42
|
+
return Effect.fnUntraced(function*() {
|
|
43
43
|
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
44
44
|
yield* HttpServerRequest.HttpServerRequest
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
50
|
-
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
51
|
-
|
|
52
|
-
return Context.make(Some, new Some({ a: 1 }))
|
|
53
|
-
})
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
58
|
-
class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextProvider", {
|
|
59
|
-
effect: Effect.gen(function*() {
|
|
60
|
-
yield* SomeService
|
|
61
|
-
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
62
|
-
|
|
63
|
-
return Effect.gen(function*() {
|
|
64
|
-
// the only requiremeno you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
65
|
-
yield* HttpServerRequest.HttpServerRequest
|
|
46
|
+
yield* Effect.logInfo("MyContextProviderGen", "this is a generator")
|
|
47
|
+
yield* Effect.succeed("this is a generator")
|
|
66
48
|
|
|
67
49
|
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
68
50
|
// yield* SomeElse
|
|
@@ -71,34 +53,25 @@ class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextPr
|
|
|
71
53
|
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
72
54
|
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
73
55
|
|
|
74
|
-
return
|
|
56
|
+
return new Some({ a: 1 })
|
|
75
57
|
})
|
|
76
58
|
})
|
|
77
59
|
}) {}
|
|
78
60
|
|
|
79
61
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
80
|
-
class MyContextProvider2 extends
|
|
62
|
+
class MyContextProvider2 extends Middleware.Tag<MyContextProvider2>()("MyContextProvider2", { provides: SomeElse })({
|
|
81
63
|
effect: Effect.gen(function*() {
|
|
82
|
-
yield* SomeService
|
|
83
64
|
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
84
65
|
|
|
85
|
-
return Effect.
|
|
66
|
+
return Effect.fnUntraced(function*() {
|
|
86
67
|
// we test without dependencies, so that we end up with an R of never.
|
|
87
68
|
|
|
88
|
-
return
|
|
69
|
+
return new SomeElse({ b: 2 })
|
|
89
70
|
})
|
|
90
71
|
})
|
|
91
72
|
}) {}
|
|
92
73
|
|
|
93
|
-
|
|
94
|
-
export const contextProvider2 = ContextProvider(merged)
|
|
95
|
-
export const contextProvider3 = MergedContextProvider(MyContextProvider)
|
|
96
|
-
expectTypeOf(contextProvider2).toEqualTypeOf<typeof someContextProvider>()
|
|
97
|
-
expectTypeOf(contextProvider3).toEqualTypeOf<typeof contextProvider2>()
|
|
98
|
-
const merged2 = mergeContextProviders(MyContextProvider, MyContextProvider2)
|
|
99
|
-
export const contextProvider22 = ContextProvider(merged2)
|
|
100
|
-
export const contextProvider23 = MergedContextProvider(MyContextProvider, MyContextProvider2)
|
|
101
|
-
expectTypeOf(contextProvider23).toEqualTypeOf<typeof contextProvider22>()
|
|
74
|
+
//
|
|
102
75
|
|
|
103
76
|
export type RequestContextMap = {
|
|
104
77
|
allowAnonymous: RPCContextMap.Inverted<UserProfile, typeof NotLoggedInError>
|
|
@@ -162,20 +135,28 @@ class Test extends Effect.Service<Test>()("Test", {
|
|
|
162
135
|
})
|
|
163
136
|
}) {}
|
|
164
137
|
|
|
165
|
-
export class BogusMiddleware extends
|
|
138
|
+
export class BogusMiddleware extends Tag<BogusMiddleware>()("BogusMiddleware", {
|
|
139
|
+
provides: SomeService,
|
|
140
|
+
wrap: true
|
|
141
|
+
})({
|
|
166
142
|
effect: Effect.gen(function*() {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}))
|
|
143
|
+
// yield* Effect.context<"test-dep">()
|
|
144
|
+
return (options) => options.next.pipe(Effect.provideService(SomeService, null as any))
|
|
170
145
|
})
|
|
171
|
-
}) {
|
|
146
|
+
}) {
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const genericMiddlewares = [
|
|
150
|
+
...DefaultGenericMiddlewares,
|
|
151
|
+
// BogusMiddleware,
|
|
152
|
+
MyContextProvider2,
|
|
153
|
+
MyContextProvider
|
|
154
|
+
] as const
|
|
172
155
|
|
|
173
|
-
const contextProvider = MergedContextProvider(MyContextProvider2, MyContextProvider)
|
|
174
156
|
// TODO: eventually it might be nice if we have total control over order somehow..
|
|
175
157
|
// [ AddRequestNameToSpanContext, RequestCacheContext, UninterruptibleMiddleware, Dynamic(or individual, AllowAnonymous, RequireRoles, Test - or whichever order) ]
|
|
176
158
|
const middleware = makeMiddleware<RequestContextMap>()({
|
|
177
|
-
|
|
178
|
-
genericMiddlewares: [...DefaultGenericMiddlewares, BogusMiddleware],
|
|
159
|
+
genericMiddlewares,
|
|
179
160
|
|
|
180
161
|
dynamicMiddlewares: {
|
|
181
162
|
requireRoles: RequireRoles,
|
|
@@ -206,8 +187,7 @@ const middleware = makeMiddleware<RequestContextMap>()({
|
|
|
206
187
|
|
|
207
188
|
const middleware2 = makeMiddleware<RequestContextMap>()({
|
|
208
189
|
// TODO: I guess it makes sense to support just passing array of context providers too, like dynamicMiddlewares?
|
|
209
|
-
|
|
210
|
-
genericMiddlewares: [...DefaultGenericMiddlewares, BogusMiddleware],
|
|
190
|
+
genericMiddlewares: [...DefaultGenericMiddlewares, BogusMiddleware, MyContextProvider2, MyContextProvider],
|
|
211
191
|
// or is the better api to use constructors outside, like how contextProvider is used now?
|
|
212
192
|
dynamicMiddlewares: {
|
|
213
193
|
requireRoles: RequireRoles,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test2.test.d.ts","sourceRoot":"","sources":["../../controller/test2.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAA8B,MAAM,+BAA+B,CAAA;AAC7G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAClI,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;AAE9C,cAAM,WAAY,SAAQ,gBAIzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;AAKL,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;AAExF,qBAAa,YAAa,SAAQ,iBAQhC;CAAG;AAEL,MAAM,MAAM,MAAM,GAAG;IACnB,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,gBAAgB,CAAC,CAAA;IAE3F,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAsGD,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAA;;;;;;;;;;AAEF,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;AAE1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;;;;2HAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qFAAiC,CAAA"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
-
import { makeMiddleware, makeRouter } from "@effect-app/infra/api/routing";
|
|
3
2
|
import { Rpc } from "@effect/rpc";
|
|
4
3
|
import { Context, Effect, FiberRef, Layer, S, Schedule } from "effect-app";
|
|
5
4
|
import { makeRpcClient, UnauthorizedError } from "effect-app/client";
|
|
6
5
|
import { HttpHeaders, HttpServerRequest } from "effect-app/http";
|
|
7
|
-
import {
|
|
6
|
+
import { makeMiddleware, makeRouter } from "../src/api/routing5.js";
|
|
8
7
|
const optimisticConcurrencySchedule = Schedule.once
|
|
9
8
|
&& Schedule.recurWhile((a) => a?._tag === "OptimisticConcurrencyException");
|
|
10
9
|
const middleware = makeMiddleware({
|
|
@@ -12,11 +11,11 @@ const middleware = makeMiddleware({
|
|
|
12
11
|
// helper to deal with nested generic lmitations
|
|
13
12
|
context: null,
|
|
14
13
|
execute: Effect.gen(function* () {
|
|
15
|
-
return (
|
|
14
|
+
return (schema, handler, moduleName) => (req) => Effect
|
|
16
15
|
.gen(function* () {
|
|
17
|
-
|
|
16
|
+
const headers = yield* Rpc.currentHeaders;
|
|
18
17
|
const ctx = Context.empty();
|
|
19
|
-
|
|
18
|
+
const config = "config" in schema ? schema.config : undefined;
|
|
20
19
|
// Check JWT
|
|
21
20
|
// TODO
|
|
22
21
|
// if (!fakeLogin && !request.allowAnonymous) {
|
|
@@ -93,11 +92,11 @@ export class SomethingService extends Effect.Service()("SomethingService", {
|
|
|
93
92
|
})
|
|
94
93
|
}) {
|
|
95
94
|
}
|
|
95
|
+
const c = a({ a: 5 });
|
|
96
96
|
export class SomethingRepo extends Effect.Service()("SomethingRepo", {
|
|
97
97
|
dependencies: [SomethingService.Default],
|
|
98
98
|
effect: Effect.gen(function* () {
|
|
99
99
|
const smth = yield* SomethingService;
|
|
100
|
-
console.log({ smth });
|
|
101
100
|
return {};
|
|
102
101
|
})
|
|
103
102
|
}) {
|
|
@@ -109,44 +108,22 @@ export class SomethingService2 extends Effect.Service()("SomethingService2", {
|
|
|
109
108
|
})
|
|
110
109
|
}) {
|
|
111
110
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
});
|
|
130
|
-
console.log({ routes });
|
|
131
|
-
});
|
|
132
|
-
it("router2", () => {
|
|
133
|
-
const routes2 = matchFor(Something)({
|
|
134
|
-
dependencies: [
|
|
135
|
-
SomethingRepo.Default,
|
|
136
|
-
SomethingService.Default,
|
|
137
|
-
SomethingService2.Default
|
|
138
|
-
],
|
|
139
|
-
effect: Effect.gen(function* () {
|
|
140
|
-
const repo = yield* SomethingRepo;
|
|
141
|
-
const smth = yield* SomethingService;
|
|
142
|
-
const smth2 = yield* SomethingService2;
|
|
143
|
-
console.log({ repo, smth, smth2 });
|
|
144
|
-
const { router2 } = matchFor(Something);
|
|
145
|
-
return router2
|
|
146
|
-
.GetSomething(() => Effect.void)
|
|
147
|
-
.GetSomethingElse(Effect.succeed("12"));
|
|
148
|
-
})
|
|
149
|
-
});
|
|
150
|
-
console.log({ routes2 });
|
|
111
|
+
const { handle, routes } = matchFor(Something);
|
|
112
|
+
const d = handle({
|
|
113
|
+
dependencies: [
|
|
114
|
+
SomethingRepo.Default,
|
|
115
|
+
SomethingService.Default
|
|
116
|
+
// SomethingService2.Default
|
|
117
|
+
],
|
|
118
|
+
effect: Effect.gen(function* () {
|
|
119
|
+
const repo = yield* SomethingRepo;
|
|
120
|
+
const smth = yield* SomethingService;
|
|
121
|
+
const smth2 = yield* SomethingService2;
|
|
122
|
+
const { GetSomething, GetSomethingElse } = routes;
|
|
123
|
+
return {
|
|
124
|
+
GetSomething: GetSomething(Effect.void),
|
|
125
|
+
GetSomethingElse: GetSomethingElse(Effect.succeed("12"))
|
|
126
|
+
};
|
|
127
|
+
})
|
|
151
128
|
});
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci50ZXN0IGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9jb250cm9sbGVyLnRlc3QgY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUUsT0FBTyxFQUF5QixhQUFhLEVBQXNCLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFHbkUsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQUMsSUFBSTtPQUM5QyxRQUFRLENBQUMsVUFBVSxDQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLGdDQUFnQyxDQUFDLENBQUE7QUFXbEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ2hDLFVBQVUsRUFBRSxJQUF5QjtJQUNyQyxnREFBZ0Q7SUFDaEQsT0FBTyxFQUFFLElBQWtEO0lBQzNELE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMzQixPQUFPLENBQ0wsTUFBcUMsRUFDckMsT0FBaUgsRUFDakgsVUFBbUIsRUFDbkIsRUFBRSxDQUNKLENBQ0UsR0FBUSxFQU1SLEVBQUUsQ0FDRixNQUFNO2FBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUE7WUFDekMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;;;;;;AAE7C,cAAM,WAAY,SAAQ,gBAKzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;;;;AAEL,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;;;;AACxF,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;AAExF,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;
|
|
1
|
+
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller5.test.d.ts","sourceRoot":"","sources":["../controller5.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAI/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK9D,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAvElB,MACZ,CA8BO,MA9BA;mBAEqB,MAC9B,CA2BS,GA3BL,KA2BK,MA3BM,CAAC,MAAM;mBACR,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CA0BhC,MAjBD,CAiBC,MAjBM;mBAiBN,MAhBI,CAgBJ,GAhBQ,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUT,MAAM,CAAC,MAAM;mBAAuC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MACjG;;;;;;6CAciB,MAAM,CAAC,MAAM;;;;;6CAMF,MAAM,CAAC,MAAM;;;CA4B3C,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAM,MAAM,KAmBjB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller6.test.d.ts","sourceRoot":"","sources":["../controller6.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"controller6.test.d.ts","sourceRoot":"","sources":["../controller6.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;gBA0EqxD,MAAO,KAAK;;;;;;GA1E/xD,QAAQ;;;;;;iDA0E01F,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAA6xD,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CA1EvmU,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;yCAxEE,EAAG,MAAM,CAAC,MAAM;iBAgCzC,EAAA,MA9BD,CA8BC,GA9BG,GA8BH,EAAA,MA5BF,CA4BE,MA5BK;iBA4BL,EAAA,MA3BA,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CASkB,EAAG,MAAM,CAAC,MAAM;iBAkBxD,EAjBC,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAUtB,EAAE,MAAM,CAAC,MAAM;iBACA,EAAG,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAcjD,EAAA,MAAE,CAAC,MAAM;;;;;2CAMqC,EAAG,MAAM,CAAC,MACrE;;;;;CA4BC,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller7.test.d.ts","sourceRoot":"","sources":["../controller7.test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"controller7.test.d.ts","sourceRoot":"","sources":["../controller7.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamicContext.test.d.ts","sourceRoot":"","sources":["../dynamicContext.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AA8E7C,eAAO,MAAM,mBAAmB;;CAkB9B,CAAA;AACF,eAAO,MAAM,sBAAsB;;CAkBjC,CAAA;AAMF,eAAO,MAAM,gBAAgB;;CAA0B,CAAA;AACvD,eAAO,MAAM,gBAAgB,0NAA2C,CAAA;AAIxE,eAAO,MAAM,mBAAmB;;CAA6B,CAAA;AAC7D,eAAO,MAAM,mBAAmB,0NAA8C,CAAA;AAQ9E,eAAO,MAAM,iBAAiB;;CAA2B,CAAA;AACzD,eAAO,MAAM,iBAAiB,qOAA+D,CAAA;AAI7F,eAAO,MAAM,oBAAoB;;CAA8B,CAAA;AAC/D,eAAO,MAAM,oBAAoB,qOAAqE,CAAA"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
3
|
+
import { expectTypeOf } from "@effect/vitest"
|
|
4
|
+
import { Context, Effect } from "effect-app"
|
|
5
|
+
import { HttpServerRequest } from "effect-app/http"
|
|
6
|
+
import { ContextProvider, mergeContextProviders, MergedContextProvider } from "../src/api/routing.js"
|
|
7
|
+
import { CustomError1, Some, SomeElse } from "./controller.test.js"
|
|
8
|
+
import { SomeService } from "./query.test.js"
|
|
9
|
+
|
|
10
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
11
|
+
class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextProvider", {
|
|
12
|
+
effect: Effect.gen(function*() {
|
|
13
|
+
yield* SomeService
|
|
14
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
15
|
+
|
|
16
|
+
return Effect.gen(function*() {
|
|
17
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
18
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
19
|
+
|
|
20
|
+
yield* Effect.logInfo("MyContextProviderGen", "this is a generator")
|
|
21
|
+
yield* Effect.succeed("this is a generator")
|
|
22
|
+
|
|
23
|
+
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
24
|
+
// yield* SomeElse
|
|
25
|
+
|
|
26
|
+
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
27
|
+
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
28
|
+
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
29
|
+
|
|
30
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
}) {}
|
|
34
|
+
|
|
35
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
36
|
+
class MyContextProvider2 extends Effect.Service<MyContextProvider2>()("MyContextProvider2", {
|
|
37
|
+
effect: Effect.gen(function*() {
|
|
38
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
39
|
+
|
|
40
|
+
return Effect.gen(function*() {
|
|
41
|
+
// we test without dependencies, so that we end up with an R of never.
|
|
42
|
+
|
|
43
|
+
return Context.make(SomeElse, new SomeElse({ b: 2 }))
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
}) {}
|
|
47
|
+
|
|
48
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
49
|
+
class MyContextProvider2Gen extends Effect.Service<MyContextProvider2Gen>()("MyContextProvider2Gen", {
|
|
50
|
+
effect: Effect.gen(function*() {
|
|
51
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
52
|
+
|
|
53
|
+
return function*() {
|
|
54
|
+
// we test without dependencies, so that we end up with an R of never
|
|
55
|
+
|
|
56
|
+
return Context.make(SomeElse, new SomeElse({ b: 2 }))
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
}) {}
|
|
60
|
+
|
|
61
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
62
|
+
class MyContextProviderGen extends Effect.Service<MyContextProviderGen>()("MyContextProviderGen", {
|
|
63
|
+
effect: Effect.gen(function*() {
|
|
64
|
+
yield* SomeService
|
|
65
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
66
|
+
|
|
67
|
+
return function*() {
|
|
68
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
69
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
70
|
+
|
|
71
|
+
yield* Effect.logInfo("MyContextProviderGen", "this is a generator")
|
|
72
|
+
yield* Effect.succeed("this is a generator")
|
|
73
|
+
|
|
74
|
+
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
75
|
+
// yield* SomeElse
|
|
76
|
+
|
|
77
|
+
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
78
|
+
// this is allowed here but mergeContextProviders/MergedContextProvider will trigger an error
|
|
79
|
+
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
80
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
}) {}
|
|
84
|
+
|
|
85
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
86
|
+
export const someContextProvider = ContextProvider({
|
|
87
|
+
effect: Effect.gen(function*() {
|
|
88
|
+
yield* SomeService
|
|
89
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
90
|
+
|
|
91
|
+
return Effect.gen(function*() {
|
|
92
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
93
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
94
|
+
|
|
95
|
+
// not allowed
|
|
96
|
+
// yield* SomeElse
|
|
97
|
+
|
|
98
|
+
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
99
|
+
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
100
|
+
|
|
101
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
export const someContextProviderGen = ContextProvider({
|
|
106
|
+
effect: Effect.gen(function*() {
|
|
107
|
+
yield* SomeService
|
|
108
|
+
if (Math.random() > 0.5) return yield* new CustomError1()
|
|
109
|
+
|
|
110
|
+
return function*() {
|
|
111
|
+
// the only requirements you can have are the one provided by HttpRouter.HttpRouter.Provided
|
|
112
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
113
|
+
|
|
114
|
+
// not allowed
|
|
115
|
+
// yield* SomeElse
|
|
116
|
+
|
|
117
|
+
// currently the effectful context provider cannot trigger an error when building the per request context
|
|
118
|
+
// if (Math.random() > 0.5) return yield* new CustomError2()
|
|
119
|
+
|
|
120
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
expectTypeOf(someContextProvider).toEqualTypeOf<typeof someContextProviderGen>()
|
|
125
|
+
|
|
126
|
+
const merged = mergeContextProviders(MyContextProvider)
|
|
127
|
+
const mergedGen = mergeContextProviders(MyContextProviderGen)
|
|
128
|
+
|
|
129
|
+
export const contextProvider2 = ContextProvider(merged)
|
|
130
|
+
export const contextProvider3 = MergedContextProvider(MyContextProvider)
|
|
131
|
+
expectTypeOf(contextProvider2).toEqualTypeOf<typeof someContextProvider>()
|
|
132
|
+
expectTypeOf(contextProvider3).toEqualTypeOf<typeof contextProvider2>()
|
|
133
|
+
|
|
134
|
+
export const contextProvider2Gen = ContextProvider(mergedGen)
|
|
135
|
+
export const contextProvider3Gen = MergedContextProvider(MyContextProviderGen)
|
|
136
|
+
expectTypeOf(contextProvider2Gen).toEqualTypeOf<typeof someContextProvider>()
|
|
137
|
+
expectTypeOf(contextProvider3Gen).toEqualTypeOf<typeof contextProvider2Gen>()
|
|
138
|
+
|
|
139
|
+
expectTypeOf(contextProvider2Gen).toEqualTypeOf<typeof contextProvider2>()
|
|
140
|
+
expectTypeOf(contextProvider3Gen).toEqualTypeOf<typeof contextProvider3>()
|
|
141
|
+
|
|
142
|
+
const merged2 = mergeContextProviders(MyContextProvider, MyContextProvider2)
|
|
143
|
+
export const contextProvider22 = ContextProvider(merged2)
|
|
144
|
+
export const contextProvider23 = MergedContextProvider(MyContextProvider, MyContextProvider2)
|
|
145
|
+
expectTypeOf(contextProvider23).toEqualTypeOf<typeof contextProvider22>()
|
|
146
|
+
|
|
147
|
+
const merged2Gen = mergeContextProviders(MyContextProviderGen, MyContextProvider2Gen)
|
|
148
|
+
export const contextProvider22Gen = ContextProvider(merged2Gen)
|
|
149
|
+
export const contextProvider23Gen = MergedContextProvider(MyContextProviderGen, MyContextProvider2Gen)
|
|
150
|
+
expectTypeOf(contextProvider23Gen).toEqualTypeOf<typeof contextProvider22Gen>()
|
|
151
|
+
|
|
152
|
+
expectTypeOf(contextProvider22Gen).toEqualTypeOf<typeof contextProvider22>()
|
|
153
|
+
expectTypeOf(contextProvider23Gen).toEqualTypeOf<typeof contextProvider23>()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|