@effect-app/infra 2.87.1 → 2.88.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 +19 -1
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -22
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/RouterMiddleware.js +1 -1
- package/dist/api/routing/middleware/RpcMiddleware.d.ts +13 -13
- package/dist/api/routing/middleware/RpcMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/RpcMiddleware.js +1 -1
- package/dist/api/routing/middleware/dynamic-middleware.d.ts +1 -9
- package/dist/api/routing/middleware/dynamic-middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/generic-middleware.d.ts +8 -8
- package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/generic-middleware.js +23 -7
- package/dist/api/routing/middleware/middleware-api.d.ts +59 -30
- package/dist/api/routing/middleware/middleware-api.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware-api.js +44 -35
- package/dist/api/routing/middleware/middleware.d.ts +7 -7
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +5 -5
- package/dist/api/routing.d.ts +28 -22
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +1 -1
- package/package.json +2 -2
- package/src/api/routing/middleware/RouterMiddleware.ts +8 -86
- package/src/api/routing/middleware/RpcMiddleware.ts +13 -12
- package/src/api/routing/middleware/dynamic-middleware.ts +0 -47
- package/src/api/routing/middleware/generic-middleware.ts +45 -14
- package/src/api/routing/middleware/middleware-api.ts +147 -101
- package/src/api/routing/middleware/middleware.ts +5 -5
- package/src/api/routing.ts +50 -35
- package/test/contextProvider.test.ts +27 -24
- package/test/controller.test.ts +45 -23
- package/test/dist/contextProvider.test.d.ts.map +1 -1
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/fixtures.d.ts +38 -44
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +21 -9
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/fixtures.ts +22 -13
- package/test/layerUtils.test.ts +4 -2
- package/test/requires.test.ts +119 -97
|
@@ -3,37 +3,22 @@ import { Context, Effect, Layer, type NonEmptyArray, type NonEmptyReadonlyArray
|
|
|
3
3
|
import { type RPCContextMap } from "effect-app/client"
|
|
4
4
|
import { type LayerUtils } from "../../layerUtils.js"
|
|
5
5
|
import { type GenericMiddlewareMaker, genericMiddlewareMaker } from "./generic-middleware.js"
|
|
6
|
-
import { makeRpcEffect, type
|
|
6
|
+
import { makeRpcEffect, type RPCHandlerFactory } from "./RouterMiddleware.js"
|
|
7
7
|
import { type AnyDynamic, type RpcDynamic, type TagClassAny } from "./RpcMiddleware.js"
|
|
8
8
|
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export interface MiddlewareM<
|
|
19
|
-
RequestContext extends Record<string, RPCContextMap.Any>,
|
|
20
|
-
Provided extends keyof RequestContext,
|
|
21
|
-
Middlewares extends ReadonlyArray<GenericMiddlewareMaker>,
|
|
22
|
-
DynamicMiddlewareProviders,
|
|
23
|
-
// out MiddlewareR = never
|
|
24
|
-
MiddlewareR = never
|
|
25
|
-
> {
|
|
26
|
-
middleware<MW extends NonEmptyArray<GenericMiddlewareMaker>>(
|
|
27
|
-
...mw: MW
|
|
28
|
-
): DynamicMiddlewareMakerrsss<
|
|
29
|
-
RequestContext,
|
|
30
|
-
Provided,
|
|
31
|
-
[...Middlewares, ...MW],
|
|
32
|
-
DynamicMiddlewareProviders,
|
|
33
|
-
GenericMiddlewareMaker.ApplyManyServices<MW, MiddlewareR>
|
|
34
|
-
>
|
|
35
|
-
}
|
|
9
|
+
// adapter used when setting the dynamic prop on a middleware implementation
|
|
10
|
+
export const contextMap = <
|
|
11
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
12
|
+
Key extends (keyof RequestContextMap) & string
|
|
13
|
+
>(rcm: RequestContextMap, key: Key): RpcDynamic<Key, RequestContextMap[Key]> => ({
|
|
14
|
+
key,
|
|
15
|
+
settings: { service: rcm[key]!["service"] } as RequestContextMap[Key]
|
|
16
|
+
})
|
|
36
17
|
|
|
18
|
+
// the following implements sort of builder pattern
|
|
19
|
+
// we support both sideways and upwards elimination of dependencies
|
|
20
|
+
|
|
21
|
+
// it's for dynamic middlewares
|
|
37
22
|
type GetDependsOnKeys<MW extends GenericMiddlewareMaker> = MW extends { dependsOn: NonEmptyReadonlyArray<TagClassAny> }
|
|
38
23
|
? {
|
|
39
24
|
[K in keyof MW["dependsOn"]]: MW["dependsOn"][K] extends AnyDynamic ? MW["dependsOn"][K]["dynamic"]["key"]
|
|
@@ -41,112 +26,171 @@ type GetDependsOnKeys<MW extends GenericMiddlewareMaker> = MW extends { dependsO
|
|
|
41
26
|
}[keyof MW["dependsOn"]]
|
|
42
27
|
: never
|
|
43
28
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
29
|
+
type FilterInDynamicMiddlewares<
|
|
30
|
+
MWs extends ReadonlyArray<GenericMiddlewareMaker>,
|
|
31
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>
|
|
32
|
+
> = {
|
|
33
|
+
[K in keyof MWs]: MWs[K] extends { dynamic: RpcDynamic<any, RequestContextMap[keyof RequestContextMap]> } ? MWs[K]
|
|
34
|
+
: never
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
type RecursiveHandleMWsSideways<
|
|
38
|
+
MWs,
|
|
39
|
+
R extends {
|
|
40
|
+
rcm: Record<string, RPCContextMap.Any>
|
|
41
|
+
provided: keyof R["rcm"] // that's fine
|
|
42
|
+
middlewares: ReadonlyArray<GenericMiddlewareMaker>
|
|
43
|
+
dmp: any
|
|
44
|
+
middlewareR: any
|
|
45
|
+
}
|
|
46
|
+
> = MWs extends [
|
|
47
|
+
infer F extends GenericMiddlewareMaker,
|
|
48
|
+
...infer Rest extends ReadonlyArray<GenericMiddlewareMaker>
|
|
49
|
+
] ? RecursiveHandleMWsSideways<Rest, {
|
|
50
|
+
rcm: R["rcm"]
|
|
51
|
+
// when one dynamic middleware depends on another, subtract the key to enforce the dependency to be provided after
|
|
52
|
+
// (if already provided, it would have to be re-provided anyway, so better to provide it after)
|
|
53
|
+
provided: Exclude<
|
|
54
|
+
R["provided"] | FilterInDynamicMiddlewares<[F], R["rcm"]>[number]["dynamic"]["key"],
|
|
55
|
+
// F is fine here because only dynamic middlewares will have 'dependsOn' prop
|
|
56
|
+
GetDependsOnKeys<F>
|
|
57
|
+
>
|
|
58
|
+
middlewares: [...R["middlewares"], F]
|
|
59
|
+
dmp: [FilterInDynamicMiddlewares<[F], R["rcm"]>[number]] extends [never] ? R["dmp"]
|
|
60
|
+
:
|
|
61
|
+
& R["dmp"]
|
|
62
|
+
& {
|
|
63
|
+
[U in FilterInDynamicMiddlewares<[F], R["rcm"]>[number] as U["dynamic"]["key"]]: U
|
|
64
|
+
}
|
|
65
|
+
middlewareR: GenericMiddlewareMaker.ApplyManyServices<[F], R["middlewareR"]>
|
|
66
|
+
}>
|
|
67
|
+
: R
|
|
68
|
+
|
|
69
|
+
export interface BuildingMiddleware<
|
|
70
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
71
|
+
Provided extends keyof RequestContextMap,
|
|
47
72
|
Middlewares extends ReadonlyArray<GenericMiddlewareMaker>,
|
|
48
73
|
DynamicMiddlewareProviders,
|
|
49
|
-
out MiddlewareR
|
|
74
|
+
out MiddlewareR extends { _tag: string } = never
|
|
50
75
|
> {
|
|
51
|
-
middleware<
|
|
52
|
-
...mw:
|
|
53
|
-
):
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
[...Middlewares, ...MW],
|
|
72
|
-
DynamicMiddlewareProviders,
|
|
73
|
-
GenericMiddlewareMaker.ApplyManyServices<MW, MiddlewareR>
|
|
76
|
+
middleware<MWs extends NonEmptyArray<GenericMiddlewareMaker>>(
|
|
77
|
+
...mw: MWs
|
|
78
|
+
): RecursiveHandleMWsSideways<MWs, {
|
|
79
|
+
rcm: RequestContextMap
|
|
80
|
+
provided: Provided
|
|
81
|
+
middlewares: Middlewares
|
|
82
|
+
dmp: DynamicMiddlewareProviders
|
|
83
|
+
middlewareR: MiddlewareR
|
|
84
|
+
}> extends infer Res extends {
|
|
85
|
+
rcm: RequestContextMap
|
|
86
|
+
provided: keyof RequestContextMap
|
|
87
|
+
middlewares: ReadonlyArray<GenericMiddlewareMaker>
|
|
88
|
+
dmp: any
|
|
89
|
+
middlewareR: any
|
|
90
|
+
} ? MiddlewaresBuilder<
|
|
91
|
+
Res["rcm"],
|
|
92
|
+
Res["provided"],
|
|
93
|
+
Res["middlewares"],
|
|
94
|
+
Res["dmp"],
|
|
95
|
+
Res["middlewareR"]
|
|
74
96
|
>
|
|
97
|
+
: never
|
|
98
|
+
|
|
99
|
+
// helps debugging what are the missing requirements (type only)
|
|
100
|
+
missing: {
|
|
101
|
+
missingDynamicMiddlewares: Exclude<keyof RequestContextMap, Provided>
|
|
102
|
+
missingContext: MiddlewareR
|
|
103
|
+
}
|
|
75
104
|
}
|
|
76
105
|
|
|
77
|
-
type
|
|
78
|
-
|
|
79
|
-
Provided extends keyof
|
|
106
|
+
export type MiddlewaresBuilder<
|
|
107
|
+
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
108
|
+
Provided extends keyof RequestContextMap = never,
|
|
80
109
|
Middlewares extends ReadonlyArray<GenericMiddlewareMaker> = [],
|
|
81
110
|
DynamicMiddlewareProviders = unknown,
|
|
82
|
-
MiddlewareR = never
|
|
83
|
-
> =
|
|
84
|
-
|
|
111
|
+
MiddlewareR extends { _tag: string } = never
|
|
112
|
+
> =
|
|
113
|
+
// keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
114
|
+
// MiddlewareR is never when all the required services from generic & dynamic middlewares are provided
|
|
115
|
+
keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? ReturnType<
|
|
85
116
|
typeof makeMiddlewareBasic<
|
|
86
|
-
|
|
117
|
+
RequestContextMap,
|
|
87
118
|
Middlewares
|
|
88
119
|
>
|
|
89
120
|
>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
: MiddlewareDynamic<
|
|
105
|
-
RequestContext,
|
|
106
|
-
Provided,
|
|
107
|
-
Middlewares,
|
|
108
|
-
DynamicMiddlewareProviders,
|
|
109
|
-
MiddlewareR
|
|
110
|
-
>
|
|
121
|
+
: BuildingMiddleware<
|
|
122
|
+
RequestContextMap,
|
|
123
|
+
Provided,
|
|
124
|
+
Middlewares,
|
|
125
|
+
DynamicMiddlewareProviders,
|
|
126
|
+
MiddlewareR
|
|
127
|
+
>
|
|
128
|
+
: BuildingMiddleware<
|
|
129
|
+
RequestContextMap,
|
|
130
|
+
Provided,
|
|
131
|
+
Middlewares,
|
|
132
|
+
DynamicMiddlewareProviders,
|
|
133
|
+
MiddlewareR
|
|
134
|
+
>
|
|
111
135
|
|
|
112
136
|
export const makeMiddleware: <
|
|
113
137
|
RequestContextMap extends Record<string, RPCContextMap.Any>
|
|
114
|
-
>() =>
|
|
138
|
+
>(rcm: RequestContextMap) => MiddlewaresBuilder<RequestContextMap> = (rcm) => {
|
|
115
139
|
let allMiddleware: GenericMiddlewareMaker[] = []
|
|
116
140
|
const it = {
|
|
117
141
|
middleware: (...middlewares: any[]) => {
|
|
118
142
|
for (const mw of middlewares) {
|
|
143
|
+
// recall that we run middlewares in reverse order
|
|
119
144
|
allMiddleware = [mw, ...allMiddleware]
|
|
120
145
|
}
|
|
121
|
-
|
|
122
|
-
|
|
146
|
+
return allMiddleware.filter((m) => !!m.dynamic).length !== Object.keys(rcm).length
|
|
147
|
+
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
148
|
+
? it
|
|
149
|
+
// actually, we don't know yet if MiddlewareR is never, but we can't easily check it at runtime
|
|
150
|
+
: Object.assign(makeMiddlewareBasic<any, any>(rcm, ...allMiddleware), it)
|
|
123
151
|
}
|
|
124
152
|
}
|
|
125
153
|
return it as any
|
|
126
154
|
}
|
|
127
155
|
|
|
128
|
-
|
|
156
|
+
//
|
|
157
|
+
export const MiddlewareMakerTag = "MiddlewareMaker" as const
|
|
158
|
+
|
|
159
|
+
export interface MiddlewareMaker<E> {
|
|
160
|
+
readonly effect: E
|
|
161
|
+
readonly _tag: typeof MiddlewareMakerTag
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export type MiddlewareMakerId = Pick<MiddlewareMaker<any>, "_tag">
|
|
165
|
+
|
|
166
|
+
export const buildMiddlewareMaker = <E>(eff: E) =>
|
|
167
|
+
({
|
|
168
|
+
_tag: MiddlewareMakerTag,
|
|
169
|
+
effect: eff
|
|
170
|
+
}) satisfies MiddlewareMaker<E>
|
|
171
|
+
|
|
172
|
+
const makeMiddlewareBasic =
|
|
129
173
|
// by setting RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
130
174
|
<
|
|
131
175
|
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
132
|
-
// RequestContextProviders extends RequestContextMapProvider<RequestContextMap>, // how to resolve the dynamic middleware
|
|
133
176
|
GenericMiddlewareProviders extends ReadonlyArray<GenericMiddlewareMaker>
|
|
134
177
|
>(
|
|
178
|
+
_rcm: RequestContextMap,
|
|
135
179
|
...make: GenericMiddlewareProviders
|
|
136
180
|
) => {
|
|
137
181
|
const MiddlewareMaker = Context.GenericTag<
|
|
138
182
|
MiddlewareMakerId,
|
|
139
|
-
|
|
140
|
-
|
|
183
|
+
MiddlewareMaker<
|
|
184
|
+
RPCHandlerFactory<
|
|
141
185
|
RequestContextMap,
|
|
142
186
|
GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]>
|
|
143
187
|
>
|
|
144
|
-
|
|
145
|
-
}
|
|
188
|
+
>
|
|
146
189
|
>(
|
|
147
|
-
|
|
190
|
+
MiddlewareMakerTag
|
|
148
191
|
)
|
|
149
192
|
|
|
193
|
+
// reverse middlewares and wrap one after the other
|
|
150
194
|
const middlewares = genericMiddlewareMaker(...make)
|
|
151
195
|
|
|
152
196
|
const l = Layer.scoped(
|
|
@@ -154,16 +198,16 @@ export const makeMiddlewareBasic =
|
|
|
154
198
|
middlewares
|
|
155
199
|
.effect
|
|
156
200
|
.pipe(
|
|
157
|
-
Effect.map((generic) => (
|
|
158
|
-
|
|
159
|
-
effect: makeRpcEffect<
|
|
201
|
+
Effect.map((generic) => (buildMiddlewareMaker(
|
|
202
|
+
makeRpcEffect<
|
|
160
203
|
RequestContextMap,
|
|
161
204
|
GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]>
|
|
162
205
|
>()(
|
|
163
|
-
(schema,
|
|
206
|
+
(schema, handler, moduleName) => {
|
|
164
207
|
return (payload, headers) =>
|
|
165
208
|
Effect
|
|
166
209
|
.gen(function*() {
|
|
210
|
+
// will be propagated to all the wrapped middlewares
|
|
167
211
|
const basic = {
|
|
168
212
|
config: schema.config ?? {},
|
|
169
213
|
payload,
|
|
@@ -177,12 +221,12 @@ export const makeMiddlewareBasic =
|
|
|
177
221
|
}
|
|
178
222
|
return yield* generic({
|
|
179
223
|
...basic,
|
|
180
|
-
next:
|
|
224
|
+
next: handler(payload, headers) as any
|
|
181
225
|
})
|
|
182
|
-
}) as any // why?
|
|
226
|
+
}) as any // why? because: Type 'SuccessValue' is not assignable to type 'Success<Req>' :P
|
|
183
227
|
}
|
|
184
228
|
)
|
|
185
|
-
|
|
229
|
+
)))
|
|
186
230
|
)
|
|
187
231
|
)
|
|
188
232
|
|
|
@@ -191,9 +235,11 @@ export const makeMiddlewareBasic =
|
|
|
191
235
|
Layer.provide(middlewares.dependencies as any)
|
|
192
236
|
) as Layer.Layer<
|
|
193
237
|
MiddlewareMakerId,
|
|
194
|
-
|
|
238
|
+
// what could go wrong when building the dynamic middleware provider
|
|
239
|
+
LayerUtils.GetLayersError<typeof middlewares.dependencies>,
|
|
195
240
|
LayerUtils.GetLayersContext<typeof middlewares.dependencies>
|
|
196
241
|
>
|
|
197
242
|
|
|
243
|
+
// add to the tag a default implementation
|
|
198
244
|
return Object.assign(MiddlewareMaker, { Default: middlewareLayer })
|
|
199
245
|
}
|
|
@@ -23,8 +23,8 @@ export class RequestCacheMiddleware extends Tag<RequestCacheMiddleware>()("Reque
|
|
|
23
23
|
}) {
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export class
|
|
27
|
-
extends Tag<
|
|
26
|
+
export class ConfigureInterruptibilityMiddleware
|
|
27
|
+
extends Tag<ConfigureInterruptibilityMiddleware>()("ConfigureInterruptibilityMiddleware", { wrap: true })({
|
|
28
28
|
effect: Effect.succeed(({ next }) =>
|
|
29
29
|
next.pipe(
|
|
30
30
|
// TODO: make this depend on query/command, and consider if middleware also should be affected. right now it's not.
|
|
@@ -35,7 +35,7 @@ export class ConfigureInterruptibility
|
|
|
35
35
|
{
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export class
|
|
38
|
+
export class LoggerMiddleware extends Tag<LoggerMiddleware>()("LoggerMiddleware", { wrap: true })({
|
|
39
39
|
effect: Effect.gen(function*() {
|
|
40
40
|
const devMode = yield* DevMode
|
|
41
41
|
return ({ headers, next, payload, rpc }) =>
|
|
@@ -98,6 +98,6 @@ export class MiddlewareLogger extends Tag<MiddlewareLogger>()("MiddlewareLogger"
|
|
|
98
98
|
|
|
99
99
|
export const DefaultGenericMiddlewares = [
|
|
100
100
|
RequestCacheMiddleware,
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
ConfigureInterruptibilityMiddleware,
|
|
102
|
+
LoggerMiddleware
|
|
103
103
|
] as const
|
package/src/api/routing.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { type Array, Effect, Layer, type NonEmptyReadonlyArray, Predicate, S, Sc
|
|
|
8
8
|
import type { GetEffectContext, GetEffectError, RPCContextMap } from "effect-app/client/req"
|
|
9
9
|
import { type HttpHeaders, HttpRouter } from "effect-app/http"
|
|
10
10
|
import { typedKeysOf, typedValuesOf } from "effect-app/utils"
|
|
11
|
+
import { type Service } from "effect/Effect"
|
|
11
12
|
import type { Contravariant } from "effect/Types"
|
|
12
13
|
import { type YieldWrap } from "effect/Utils"
|
|
13
14
|
import { type LayerUtils } from "./layerUtils.js"
|
|
@@ -493,10 +494,16 @@ export const makeRouter = <
|
|
|
493
494
|
// Multiple times duplicated the "good" overload, so that errors will only mention the last overload when failing
|
|
494
495
|
<
|
|
495
496
|
const Make extends {
|
|
496
|
-
dependencies
|
|
497
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
497
498
|
effect: (match: typeof router3) => Generator<
|
|
498
499
|
YieldWrap<
|
|
499
|
-
Effect<
|
|
500
|
+
Effect<
|
|
501
|
+
any,
|
|
502
|
+
any,
|
|
503
|
+
Make["strict"] extends false ? any
|
|
504
|
+
: Make extends { dependencies: Array<Layer.Layer.Any> } ? MakeDepsOut<Make>
|
|
505
|
+
: any
|
|
506
|
+
>
|
|
500
507
|
>,
|
|
501
508
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
502
509
|
any
|
|
@@ -514,13 +521,13 @@ export const makeRouter = <
|
|
|
514
521
|
routes: Layer.Layer<
|
|
515
522
|
RouterShape<Resource>,
|
|
516
523
|
| MakeErrors<Make>
|
|
517
|
-
|
|
|
524
|
+
| Service.MakeDepsE<Make>
|
|
518
525
|
| Layer.Error<typeof middleware.Default>,
|
|
519
|
-
|
|
|
526
|
+
| Service.MakeDepsIn<Make>
|
|
520
527
|
| Layer.Context<typeof middleware.Default>
|
|
521
528
|
| Exclude<
|
|
522
529
|
MakeContext<Make>,
|
|
523
|
-
|
|
530
|
+
MakeDepsOut<Make>
|
|
524
531
|
>
|
|
525
532
|
>
|
|
526
533
|
|
|
@@ -529,11 +536,13 @@ export const makeRouter = <
|
|
|
529
536
|
}
|
|
530
537
|
<
|
|
531
538
|
const Make extends {
|
|
532
|
-
dependencies
|
|
539
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
533
540
|
effect: Effect<
|
|
534
541
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
535
542
|
any,
|
|
536
|
-
Make["strict"] extends false ? any
|
|
543
|
+
Make["strict"] extends false ? any
|
|
544
|
+
: Make extends { dependencies: Array<Layer.Layer.Any> } ? MakeDepsOut<Make>
|
|
545
|
+
: any
|
|
537
546
|
>
|
|
538
547
|
strict?: boolean
|
|
539
548
|
/** @deprecated */
|
|
@@ -547,13 +556,13 @@ export const makeRouter = <
|
|
|
547
556
|
routes: Layer.Layer<
|
|
548
557
|
RouterShape<Resource>,
|
|
549
558
|
| MakeErrors<Make>
|
|
550
|
-
|
|
|
559
|
+
| Service.MakeDepsE<Make>
|
|
551
560
|
| Layer.Error<typeof middleware.Default>,
|
|
552
|
-
|
|
|
561
|
+
| Service.MakeDepsIn<Make>
|
|
553
562
|
| Layer.Context<typeof middleware.Default>
|
|
554
563
|
| Exclude<
|
|
555
564
|
MakeContext<Make>,
|
|
556
|
-
|
|
565
|
+
MakeDepsOut<Make>
|
|
557
566
|
>
|
|
558
567
|
>
|
|
559
568
|
|
|
@@ -562,11 +571,11 @@ export const makeRouter = <
|
|
|
562
571
|
}
|
|
563
572
|
<
|
|
564
573
|
const Make extends {
|
|
565
|
-
dependencies
|
|
574
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
566
575
|
effect: Effect<
|
|
567
576
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
568
577
|
any,
|
|
569
|
-
Make["strict"] extends false ? any :
|
|
578
|
+
Make["strict"] extends false ? any : MakeDepsOut<Make>
|
|
570
579
|
>
|
|
571
580
|
strict?: boolean
|
|
572
581
|
/** @deprecated */
|
|
@@ -580,13 +589,13 @@ export const makeRouter = <
|
|
|
580
589
|
routes: Layer.Layer<
|
|
581
590
|
RouterShape<Resource>,
|
|
582
591
|
| MakeErrors<Make>
|
|
583
|
-
|
|
|
592
|
+
| Service.MakeDepsE<Make>
|
|
584
593
|
| Layer.Error<typeof middleware.Default>,
|
|
585
|
-
|
|
|
594
|
+
| Service.MakeDepsIn<Make>
|
|
586
595
|
| Layer.Context<typeof middleware.Default>
|
|
587
596
|
| Exclude<
|
|
588
597
|
MakeContext<Make>,
|
|
589
|
-
|
|
598
|
+
MakeDepsOut<Make>
|
|
590
599
|
>
|
|
591
600
|
>
|
|
592
601
|
|
|
@@ -595,11 +604,11 @@ export const makeRouter = <
|
|
|
595
604
|
}
|
|
596
605
|
<
|
|
597
606
|
const Make extends {
|
|
598
|
-
dependencies
|
|
607
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
599
608
|
effect: Effect<
|
|
600
609
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
601
610
|
any,
|
|
602
|
-
Make["strict"] extends false ? any :
|
|
611
|
+
Make["strict"] extends false ? any : MakeDepsOut<Make>
|
|
603
612
|
>
|
|
604
613
|
strict?: boolean
|
|
605
614
|
/** @deprecated */
|
|
@@ -613,13 +622,13 @@ export const makeRouter = <
|
|
|
613
622
|
routes: Layer.Layer<
|
|
614
623
|
RouterShape<Resource>,
|
|
615
624
|
| MakeErrors<Make>
|
|
616
|
-
|
|
|
625
|
+
| Service.MakeDepsE<Make>
|
|
617
626
|
| Layer.Error<typeof middleware.Default>,
|
|
618
|
-
|
|
|
627
|
+
| Service.MakeDepsIn<Make>
|
|
619
628
|
| Layer.Context<typeof middleware.Default>
|
|
620
629
|
| Exclude<
|
|
621
630
|
MakeContext<Make>,
|
|
622
|
-
|
|
631
|
+
MakeDepsOut<Make>
|
|
623
632
|
>
|
|
624
633
|
>
|
|
625
634
|
|
|
@@ -628,11 +637,11 @@ export const makeRouter = <
|
|
|
628
637
|
}
|
|
629
638
|
<
|
|
630
639
|
const Make extends {
|
|
631
|
-
dependencies
|
|
640
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
632
641
|
effect: Effect<
|
|
633
642
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
634
643
|
any,
|
|
635
|
-
|
|
644
|
+
MakeDepsOut<Make>
|
|
636
645
|
>
|
|
637
646
|
strict?: boolean
|
|
638
647
|
/** @deprecated */
|
|
@@ -646,13 +655,13 @@ export const makeRouter = <
|
|
|
646
655
|
routes: Layer.Layer<
|
|
647
656
|
RouterShape<Resource>,
|
|
648
657
|
| MakeErrors<Make>
|
|
649
|
-
|
|
|
658
|
+
| Service.MakeDepsE<Make>
|
|
650
659
|
| Layer.Error<typeof middleware.Default>,
|
|
651
|
-
|
|
|
660
|
+
| Service.MakeDepsIn<Make>
|
|
652
661
|
| Layer.Context<typeof middleware.Default>
|
|
653
662
|
| Exclude<
|
|
654
663
|
MakeContext<Make>,
|
|
655
|
-
|
|
664
|
+
MakeDepsOut<Make>
|
|
656
665
|
>
|
|
657
666
|
>
|
|
658
667
|
|
|
@@ -661,11 +670,11 @@ export const makeRouter = <
|
|
|
661
670
|
}
|
|
662
671
|
<
|
|
663
672
|
const Make extends {
|
|
664
|
-
dependencies
|
|
673
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
665
674
|
effect: Effect<
|
|
666
675
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
667
676
|
any,
|
|
668
|
-
|
|
677
|
+
MakeDepsOut<Make>
|
|
669
678
|
>
|
|
670
679
|
strict?: boolean
|
|
671
680
|
}
|
|
@@ -677,13 +686,13 @@ export const makeRouter = <
|
|
|
677
686
|
routes: Layer.Layer<
|
|
678
687
|
RouterShape<Resource>,
|
|
679
688
|
| MakeErrors<Make>
|
|
680
|
-
|
|
|
689
|
+
| Service.MakeDepsE<Make>
|
|
681
690
|
| Layer.Error<typeof middleware.Default>,
|
|
682
|
-
|
|
|
691
|
+
| Service.MakeDepsIn<Make>
|
|
683
692
|
| Layer.Context<typeof middleware.Default>
|
|
684
693
|
| Exclude<
|
|
685
694
|
MakeContext<Make>,
|
|
686
|
-
|
|
695
|
+
MakeDepsOut<Make>
|
|
687
696
|
>
|
|
688
697
|
>
|
|
689
698
|
|
|
@@ -692,10 +701,16 @@ export const makeRouter = <
|
|
|
692
701
|
}
|
|
693
702
|
<
|
|
694
703
|
const Make extends {
|
|
695
|
-
dependencies
|
|
704
|
+
dependencies?: Array<Layer.Layer.Any>
|
|
696
705
|
effect: (match: typeof router3) => Generator<
|
|
697
706
|
YieldWrap<
|
|
698
|
-
Effect<
|
|
707
|
+
Effect<
|
|
708
|
+
any,
|
|
709
|
+
any,
|
|
710
|
+
Make["strict"] extends false ? any
|
|
711
|
+
: Make extends { dependencies: Array<Layer.Layer.Any> } ? MakeDepsOut<Make>
|
|
712
|
+
: any
|
|
713
|
+
>
|
|
699
714
|
>,
|
|
700
715
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
701
716
|
any
|
|
@@ -711,13 +726,13 @@ export const makeRouter = <
|
|
|
711
726
|
routes: Layer.Layer<
|
|
712
727
|
RouterShape<Resource>,
|
|
713
728
|
| MakeErrors<Make>
|
|
714
|
-
|
|
|
729
|
+
| Service.MakeDepsE<Make>
|
|
715
730
|
| Layer.Error<typeof middleware.Default>,
|
|
716
|
-
|
|
|
731
|
+
| Service.MakeDepsIn<Make>
|
|
717
732
|
| Layer.Context<typeof middleware.Default>
|
|
718
733
|
| Exclude<
|
|
719
734
|
MakeContext<Make>,
|
|
720
|
-
|
|
735
|
+
MakeDepsOut<Make>
|
|
721
736
|
>
|
|
722
737
|
>
|
|
723
738
|
|