@effect-app/infra 2.73.4 → 2.75.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 +22 -0
- package/dist/QueueMaker/errors.d.ts +1 -1
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/api/layerUtils.d.ts +22 -0
- package/dist/api/layerUtils.d.ts.map +1 -0
- package/dist/api/layerUtils.js +2 -0
- package/dist/api/routing/middleware/ContextProvider.d.ts +41 -0
- package/dist/api/routing/middleware/ContextProvider.d.ts.map +1 -0
- package/dist/api/routing/middleware/ContextProvider.js +27 -0
- package/dist/api/routing/middleware/DynamicMiddleware.d.ts +61 -0
- package/dist/api/routing/middleware/DynamicMiddleware.d.ts.map +1 -0
- package/dist/api/routing/middleware/DynamicMiddleware.js +45 -0
- package/dist/api/routing/middleware/dynamic-middleware.d.ts +26 -0
- package/dist/api/routing/middleware/dynamic-middleware.d.ts.map +1 -0
- package/dist/api/routing/middleware/dynamic-middleware.js +39 -0
- package/dist/api/routing/middleware/generic-middleware.d.ts +9 -0
- package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -0
- package/dist/api/routing/middleware/generic-middleware.js +20 -0
- package/dist/api/routing/middleware/middleware.d.ts +23 -0
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -0
- package/dist/api/routing/middleware/middleware.js +91 -0
- package/dist/api/routing/middleware.d.ts +6 -0
- package/dist/api/routing/middleware.d.ts.map +1 -0
- package/dist/api/routing/middleware.js +8 -0
- package/dist/api/routing/tsort.d.ts +8 -0
- package/dist/api/routing/tsort.d.ts.map +1 -0
- package/dist/api/routing/tsort.js +51 -0
- package/dist/api/routing.d.ts +36 -46
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +7 -56
- package/package.json +33 -5
- package/src/api/layerUtils.ts +34 -0
- package/src/api/routing/middleware/ContextProvider.ts +148 -0
- package/src/api/routing/middleware/DynamicMiddleware.ts +317 -0
- package/src/api/routing/middleware/dynamic-middleware.ts +158 -0
- package/src/api/routing/middleware/generic-middleware.ts +38 -0
- package/src/api/routing/middleware/middleware.ts +120 -0
- package/src/api/routing/middleware.ts +7 -0
- package/src/api/routing/tsort.ts +56 -0
- package/src/api/routing.ts +47 -118
- package/test/controller.test.ts +212 -51
- package/test/dist/controller.legacy2.test.d.ts.map +1 -0
- package/test/dist/controller.legacy3.test.d.ts.map +1 -0
- package/test/dist/controller.test copy.d.ts +169 -0
- package/test/dist/controller.test copy.d.ts.map +1 -0
- package/test/dist/controller.test copy.js +152 -0
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/controller6.test.d.ts.map +1 -0
- package/test/dist/controller7.test.d.ts.map +1 -0
- package/test/dist/filterApi.test.d.ts.map +1 -0
- package/dist/api/routing/DynamicMiddleware.d.ts +0 -91
- package/dist/api/routing/DynamicMiddleware.d.ts.map +0 -1
- package/dist/api/routing/DynamicMiddleware.js +0 -56
- package/src/api/routing/DynamicMiddleware.ts +0 -415
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Cause, Context, Effect, ParseResult } from "effect-app"
|
|
2
|
+
import { HttpHeaders, type HttpRouter, HttpServerRequest } from "effect-app/http"
|
|
3
|
+
import { pretty } from "effect-app/utils"
|
|
4
|
+
import { logError, reportError } from "../../../errorReporter.js"
|
|
5
|
+
import { InfraLogger } from "../../../logger.js"
|
|
6
|
+
|
|
7
|
+
const logRequestError = logError("Request")
|
|
8
|
+
const reportRequestError = reportError("Request")
|
|
9
|
+
|
|
10
|
+
export class DevMode extends Context.Reference<DevMode>()("DevMode", { defaultValue: () => false }) {}
|
|
11
|
+
|
|
12
|
+
export class ConfigureInterruptibility extends Effect.Service<ConfigureInterruptibility>()(
|
|
13
|
+
"ConfigureInterruptibility",
|
|
14
|
+
{
|
|
15
|
+
effect: Effect.gen(function*() {
|
|
16
|
+
return <A, E>(
|
|
17
|
+
handle: (input: any, headers: HttpHeaders.Headers) => Effect.Effect<A, E, HttpRouter.HttpRouter.Provided>,
|
|
18
|
+
_moduleName: string
|
|
19
|
+
) =>
|
|
20
|
+
Effect.fnUntraced(function*(input: any, headers: HttpHeaders.Headers) {
|
|
21
|
+
return yield* handle(input, headers).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
|
+
) {}
|
|
29
|
+
|
|
30
|
+
export class CaptureHttpHeadersAsRpcHeaders
|
|
31
|
+
extends Effect.Service<CaptureHttpHeadersAsRpcHeaders>()("CaptureHttpHeadersAsRpcHeaders", {
|
|
32
|
+
effect: Effect.gen(function*() {
|
|
33
|
+
return <A, E>(
|
|
34
|
+
handle: (input: any, headers: HttpHeaders.Headers) => Effect.Effect<A, E, HttpRouter.HttpRouter.Provided>,
|
|
35
|
+
_moduleName: string
|
|
36
|
+
) =>
|
|
37
|
+
Effect.fnUntraced(function*(input: any, rpcHeaders: HttpHeaders.Headers) {
|
|
38
|
+
// merge in the request headers
|
|
39
|
+
// we should consider if we should merge them into rpc headers on the Protocol layer instead.
|
|
40
|
+
const httpReq = yield* HttpServerRequest.HttpServerRequest
|
|
41
|
+
const headers = HttpHeaders.merge(httpReq.headers, rpcHeaders)
|
|
42
|
+
return yield* handle(input, headers)
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
{}
|
|
47
|
+
|
|
48
|
+
export class MiddlewareLogger extends Effect.Service<MiddlewareLogger>()("MiddlewareLogger", {
|
|
49
|
+
effect: Effect.gen(function*() {
|
|
50
|
+
return <A, E>(
|
|
51
|
+
handle: (input: any, headers: HttpHeaders.Headers) => Effect.Effect<A, E, HttpRouter.HttpRouter.Provided>,
|
|
52
|
+
moduleName: string
|
|
53
|
+
) =>
|
|
54
|
+
Effect.fnUntraced(function*(input: any, rpcHeaders: HttpHeaders.Headers) {
|
|
55
|
+
const devMode = yield* DevMode
|
|
56
|
+
// merge in the request headers
|
|
57
|
+
// we should consider if we should merge them into rpc headers on the Protocol layer instead.
|
|
58
|
+
const httpReq = yield* HttpServerRequest.HttpServerRequest
|
|
59
|
+
const headers = HttpHeaders.merge(httpReq.headers, rpcHeaders)
|
|
60
|
+
|
|
61
|
+
return yield* Effect
|
|
62
|
+
.annotateCurrentSpan(
|
|
63
|
+
"requestInput",
|
|
64
|
+
Object.entries(input).reduce((prev, [key, value]: [string, unknown]) => {
|
|
65
|
+
prev[key] = key === "password"
|
|
66
|
+
? "<redacted>"
|
|
67
|
+
: typeof value === "string" || typeof value === "number" || typeof value === "boolean"
|
|
68
|
+
? typeof value === "string" && value.length > 256
|
|
69
|
+
? (value.substring(0, 253) + "...")
|
|
70
|
+
: value
|
|
71
|
+
: Array.isArray(value)
|
|
72
|
+
? `Array[${value.length}]`
|
|
73
|
+
: value === null || value === undefined
|
|
74
|
+
? `${value}`
|
|
75
|
+
: typeof value === "object" && value
|
|
76
|
+
? `Object[${Object.keys(value).length}]`
|
|
77
|
+
: typeof value
|
|
78
|
+
return prev
|
|
79
|
+
}, {} as Record<string, string | number | boolean>)
|
|
80
|
+
)
|
|
81
|
+
.pipe(
|
|
82
|
+
// can't use andThen due to some being a function and effect
|
|
83
|
+
Effect.zipRight(handle(input, headers)),
|
|
84
|
+
// TODO: support ParseResult if the error channel of the request allows it.. but who would want that?
|
|
85
|
+
Effect.catchAll((_) => ParseResult.isParseError(_) ? Effect.die(_) : Effect.fail(_)),
|
|
86
|
+
Effect.tapErrorCause((cause) => Cause.isFailure(cause) ? logRequestError(cause) : Effect.void),
|
|
87
|
+
Effect.tapDefect((cause) =>
|
|
88
|
+
Effect
|
|
89
|
+
.all([
|
|
90
|
+
reportRequestError(cause, {
|
|
91
|
+
action: `${moduleName}.${input._tag}`
|
|
92
|
+
}),
|
|
93
|
+
InfraLogger
|
|
94
|
+
.logError("Finished request", cause)
|
|
95
|
+
.pipe(Effect.annotateLogs({
|
|
96
|
+
action: `${moduleName}.${input._tag}`,
|
|
97
|
+
req: pretty(input),
|
|
98
|
+
headers: pretty(headers)
|
|
99
|
+
// resHeaders: pretty(
|
|
100
|
+
// Object
|
|
101
|
+
// .entries(headers)
|
|
102
|
+
// .reduce((prev, [key, value]) => {
|
|
103
|
+
// prev[key] = value && typeof value === "string" ? snipString(value) : value
|
|
104
|
+
// return prev
|
|
105
|
+
// }, {} as Record<string, any>)
|
|
106
|
+
// )
|
|
107
|
+
}))
|
|
108
|
+
])
|
|
109
|
+
),
|
|
110
|
+
devMode ? (_) => _ : Effect.catchAllDefect(() => Effect.die("Internal Server Error"))
|
|
111
|
+
)
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
}) {}
|
|
115
|
+
|
|
116
|
+
export const DefaultGenericMiddlewares = [
|
|
117
|
+
ConfigureInterruptibility,
|
|
118
|
+
CaptureHttpHeadersAsRpcHeaders,
|
|
119
|
+
MiddlewareLogger
|
|
120
|
+
] as const
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// codegen:start {preset: barrel, include: ./middleware/*.ts, nodir: false }
|
|
2
|
+
export * from "./middleware/ContextProvider.js"
|
|
3
|
+
export * from "./middleware/dynamic-middleware.js"
|
|
4
|
+
export * from "./middleware/DynamicMiddleware.js"
|
|
5
|
+
export * from "./middleware/generic-middleware.js"
|
|
6
|
+
export * from "./middleware/middleware.js"
|
|
7
|
+
// codegen:end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
export function tsort(edges) {
|
|
4
|
+
const nodes = new Map(), sorted = [], visited = new Map()
|
|
5
|
+
|
|
6
|
+
const Node = function(id) {
|
|
7
|
+
this.id = id
|
|
8
|
+
this.afters = []
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
edges.forEach((v) => {
|
|
12
|
+
const from = v[0], to = v[1]
|
|
13
|
+
if (!nodes.get(from)) nodes.set(from, new Node(from))
|
|
14
|
+
if (!nodes.get(to)) nodes.set(to, new Node(to))
|
|
15
|
+
nodes.get(from).afters.push(to)
|
|
16
|
+
})
|
|
17
|
+
;[...nodes.keys()].forEach(function visit(idstr, ancestors) {
|
|
18
|
+
const node = nodes.get(idstr), id = node.id
|
|
19
|
+
|
|
20
|
+
if (visited.get(idstr)) return
|
|
21
|
+
if (!Array.isArray(ancestors)) ancestors = []
|
|
22
|
+
|
|
23
|
+
ancestors.push(id)
|
|
24
|
+
visited.set(idstr, true)
|
|
25
|
+
node.afters.forEach(function(afterID) {
|
|
26
|
+
if (ancestors.indexOf(afterID) >= 0) {
|
|
27
|
+
throw new Error("closed chain : " + afterID + " is in " + id)
|
|
28
|
+
}
|
|
29
|
+
visit(
|
|
30
|
+
afterID,
|
|
31
|
+
ancestors.map(function(v) {
|
|
32
|
+
return v
|
|
33
|
+
})
|
|
34
|
+
)
|
|
35
|
+
})
|
|
36
|
+
sorted.unshift(id)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
return sorted
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const createEdges = <T extends { dependsOn?: any[] }>(dep: readonly T[]) => {
|
|
43
|
+
const result = []
|
|
44
|
+
dep.forEach((key) => {
|
|
45
|
+
key.dependsOn?.forEach((n) => {
|
|
46
|
+
result.push([n, key])
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
return result
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const sort = <T>(dep: readonly (T & { dependsOn?: any[] })[]): readonly T[] => {
|
|
53
|
+
const edges = createEdges(dep)
|
|
54
|
+
const result = tsort(edges)
|
|
55
|
+
return result.concat(dep.filter((v) => !result.includes(v)))
|
|
56
|
+
}
|
package/src/api/routing.ts
CHANGED
|
@@ -3,41 +3,17 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
import { determineMethod, isCommand } from "@effect-app/infra/api/routing/utils"
|
|
6
|
-
import { logError, reportError } from "@effect-app/infra/errorReporter"
|
|
7
|
-
import { InfraLogger } from "@effect-app/infra/logger"
|
|
8
6
|
import { Rpc, RpcGroup, RpcServer } from "@effect/rpc"
|
|
9
|
-
import { Array,
|
|
7
|
+
import { type Array, Duration, Effect, Layer, type NonEmptyArray, Predicate, Request, S, Schedule, Schema } from "effect-app"
|
|
10
8
|
import type { GetEffectContext, GetEffectError, RPCContextMap } from "effect-app/client/req"
|
|
11
9
|
import { type HttpHeaders, HttpRouter } from "effect-app/http"
|
|
12
|
-
import {
|
|
10
|
+
import { typedKeysOf, typedValuesOf } from "effect-app/utils"
|
|
13
11
|
import type { Contravariant } from "effect/Types"
|
|
14
12
|
import { type YieldWrap } from "effect/Utils"
|
|
15
|
-
import { type
|
|
13
|
+
import { type LayerUtils } from "./layerUtils.js"
|
|
14
|
+
import { DevMode, type Middleware } from "./routing/middleware.js"
|
|
16
15
|
|
|
17
|
-
export * from "./routing/
|
|
18
|
-
|
|
19
|
-
export namespace LayersUtils {
|
|
20
|
-
export type GetLayersSuccess<Layers extends ReadonlyArray<Layer.Layer.Any>> = Layers extends
|
|
21
|
-
NonEmptyReadonlyArray<Layer.Layer.Any> ? {
|
|
22
|
-
[k in keyof Layers]: Layer.Layer.Success<Layers[k]>
|
|
23
|
-
}[number]
|
|
24
|
-
: never
|
|
25
|
-
|
|
26
|
-
export type GetLayersContext<Layers extends ReadonlyArray<Layer.Layer.Any>> = Layers extends
|
|
27
|
-
NonEmptyReadonlyArray<Layer.Layer.Any> ? {
|
|
28
|
-
[k in keyof Layers]: Layer.Layer.Context<Layers[k]>
|
|
29
|
-
}[number]
|
|
30
|
-
: never
|
|
31
|
-
|
|
32
|
-
export type GetLayersError<Layers extends ReadonlyArray<Layer.Layer.Any>> = Layers extends
|
|
33
|
-
NonEmptyReadonlyArray<Layer.Layer.Any> ? {
|
|
34
|
-
[k in keyof Layers]: Layer.Layer.Error<Layers[k]>
|
|
35
|
-
}[number]
|
|
36
|
-
: never
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const logRequestError = logError("Request")
|
|
40
|
-
const reportRequestError = reportError("Request")
|
|
16
|
+
export * from "./routing/middleware.js"
|
|
41
17
|
|
|
42
18
|
// retry just once on optimistic concurrency exceptions
|
|
43
19
|
const optimisticConcurrencySchedule = Schedule.once.pipe(
|
|
@@ -423,64 +399,17 @@ export const makeRouter = <
|
|
|
423
399
|
}
|
|
424
400
|
} as any
|
|
425
401
|
: resource,
|
|
426
|
-
rpc.effect(
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
.
|
|
430
|
-
"requestInput",
|
|
431
|
-
Object.entries(input).reduce((prev, [key, value]: [string, unknown]) => {
|
|
432
|
-
prev[key] = key === "password"
|
|
433
|
-
? "<redacted>"
|
|
434
|
-
: typeof value === "string" || typeof value === "number" || typeof value === "boolean"
|
|
435
|
-
? typeof value === "string" && value.length > 256
|
|
436
|
-
? (value.substring(0, 253) + "...")
|
|
437
|
-
: value
|
|
438
|
-
: Array.isArray(value)
|
|
439
|
-
? `Array[${value.length}]`
|
|
440
|
-
: value === null || value === undefined
|
|
441
|
-
? `${value}`
|
|
442
|
-
: typeof value === "object" && value
|
|
443
|
-
? `Object[${Object.keys(value).length}]`
|
|
444
|
-
: typeof value
|
|
445
|
-
return prev
|
|
446
|
-
}, {} as Record<string, string | number | boolean>)
|
|
447
|
-
)
|
|
448
|
-
.pipe(
|
|
449
|
-
// can't use andThen due to some being a function and effect
|
|
450
|
-
Effect.zipRight(handle(input, headers)),
|
|
451
|
-
// TODO: support ParseResult if the error channel of the request allows it.. but who would want that?
|
|
452
|
-
Effect.catchAll((_) => ParseResult.isParseError(_) ? Effect.die(_) : Effect.fail(_)),
|
|
453
|
-
Effect.tapErrorCause((cause) => Cause.isFailure(cause) ? logRequestError(cause) : Effect.void),
|
|
454
|
-
Effect.tapDefect((cause) =>
|
|
455
|
-
Effect
|
|
456
|
-
.all([
|
|
457
|
-
reportRequestError(cause, {
|
|
458
|
-
action: `${meta.moduleName}.${resource._tag}`
|
|
459
|
-
}),
|
|
460
|
-
InfraLogger
|
|
461
|
-
.logError("Finished request", cause)
|
|
462
|
-
.pipe(Effect.annotateLogs({
|
|
463
|
-
action: `${meta.moduleName}.${resource._tag}`,
|
|
464
|
-
req: pretty(resource),
|
|
465
|
-
headers: pretty(headers)
|
|
466
|
-
// resHeaders: pretty(
|
|
467
|
-
// Object
|
|
468
|
-
// .entries(headers)
|
|
469
|
-
// .reduce((prev, [key, value]) => {
|
|
470
|
-
// prev[key] = value && typeof value === "string" ? snipString(value) : value
|
|
471
|
-
// return prev
|
|
472
|
-
// }, {} as Record<string, any>)
|
|
473
|
-
// )
|
|
474
|
-
}))
|
|
475
|
-
])
|
|
476
|
-
),
|
|
477
|
-
// NOTE: this does not catch errors from the middlewares..
|
|
478
|
-
// we should re-evalute this in any case..
|
|
479
|
-
devMode ? (_) => _ : Effect.catchAllDefect(() => Effect.die("Internal Server Error")),
|
|
402
|
+
rpc.effect(
|
|
403
|
+
resource,
|
|
404
|
+
(req, headers) =>
|
|
405
|
+
handle(req, headers).pipe(
|
|
480
406
|
Effect.withSpan("Request." + meta.moduleName + "." + resource._tag, {
|
|
481
407
|
captureStackTrace: () => handler.stack
|
|
482
|
-
})
|
|
483
|
-
|
|
408
|
+
}),
|
|
409
|
+
Effect.provideService(DevMode, devMode)
|
|
410
|
+
),
|
|
411
|
+
meta.moduleName
|
|
412
|
+
),
|
|
484
413
|
meta.moduleName
|
|
485
414
|
] as const
|
|
486
415
|
return acc
|
|
@@ -515,10 +444,10 @@ export const makeRouter = <
|
|
|
515
444
|
})) as unknown as Layer<
|
|
516
445
|
{ [K in keyof RequestModules]: Rpc.Handler<K> },
|
|
517
446
|
| Layer.Error<typeof middleware.Default>
|
|
518
|
-
|
|
|
447
|
+
| LayerUtils.GetLayersError<MakeDependencies>,
|
|
519
448
|
| RPCRouteR<typeof mapped[keyof typeof mapped]>
|
|
520
449
|
| Layer.Context<typeof middleware.Default>
|
|
521
|
-
|
|
|
450
|
+
| LayerUtils.GetLayersContext<MakeDependencies>
|
|
522
451
|
>
|
|
523
452
|
|
|
524
453
|
return RpcServer
|
|
@@ -544,12 +473,12 @@ export const makeRouter = <
|
|
|
544
473
|
)
|
|
545
474
|
) as (Layer.Layer<
|
|
546
475
|
Router,
|
|
547
|
-
|
|
|
476
|
+
| LayerUtils.GetLayersError<MakeDependencies>
|
|
548
477
|
| MakeE
|
|
549
478
|
| Layer.Error<typeof middleware.Default>,
|
|
550
|
-
|
|
|
479
|
+
| LayerUtils.GetLayersContext<MakeDependencies>
|
|
551
480
|
| Layer.Context<typeof middleware.Default>
|
|
552
|
-
| Exclude<MakeR,
|
|
481
|
+
| Exclude<MakeR, LayerUtils.GetLayersSuccess<MakeDependencies>>
|
|
553
482
|
>)
|
|
554
483
|
|
|
555
484
|
// Effect.Effect<HttpRouter.HttpRouter<unknown, HttpRouter.HttpRouter.DefaultServices>, never, UserRouter>
|
|
@@ -567,7 +496,7 @@ export const makeRouter = <
|
|
|
567
496
|
dependencies: Array<Layer.Layer.Any>
|
|
568
497
|
effect: (match: typeof router3) => Generator<
|
|
569
498
|
YieldWrap<
|
|
570
|
-
Effect<any, any, Make["strict"] extends false ? any :
|
|
499
|
+
Effect<any, any, Make["strict"] extends false ? any : LayerUtils.GetLayersSuccess<Make["dependencies"]>>
|
|
571
500
|
>,
|
|
572
501
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
573
502
|
any
|
|
@@ -585,13 +514,13 @@ export const makeRouter = <
|
|
|
585
514
|
routes: Layer.Layer<
|
|
586
515
|
RouterShape<Resource>,
|
|
587
516
|
| MakeErrors<Make>
|
|
588
|
-
|
|
|
517
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
589
518
|
| Layer.Error<typeof middleware.Default>,
|
|
590
|
-
|
|
|
519
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
591
520
|
| Layer.Context<typeof middleware.Default>
|
|
592
521
|
| Exclude<
|
|
593
522
|
MakeContext<Make>,
|
|
594
|
-
|
|
523
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
595
524
|
>
|
|
596
525
|
>
|
|
597
526
|
|
|
@@ -604,7 +533,7 @@ export const makeRouter = <
|
|
|
604
533
|
effect: Effect<
|
|
605
534
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
606
535
|
any,
|
|
607
|
-
Make["strict"] extends false ? any :
|
|
536
|
+
Make["strict"] extends false ? any : LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
608
537
|
>
|
|
609
538
|
strict?: boolean
|
|
610
539
|
/** @deprecated */
|
|
@@ -618,13 +547,13 @@ export const makeRouter = <
|
|
|
618
547
|
routes: Layer.Layer<
|
|
619
548
|
RouterShape<Resource>,
|
|
620
549
|
| MakeErrors<Make>
|
|
621
|
-
|
|
|
550
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
622
551
|
| Layer.Error<typeof middleware.Default>,
|
|
623
|
-
|
|
|
552
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
624
553
|
| Layer.Context<typeof middleware.Default>
|
|
625
554
|
| Exclude<
|
|
626
555
|
MakeContext<Make>,
|
|
627
|
-
|
|
556
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
628
557
|
>
|
|
629
558
|
>
|
|
630
559
|
|
|
@@ -637,7 +566,7 @@ export const makeRouter = <
|
|
|
637
566
|
effect: Effect<
|
|
638
567
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
639
568
|
any,
|
|
640
|
-
Make["strict"] extends false ? any :
|
|
569
|
+
Make["strict"] extends false ? any : LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
641
570
|
>
|
|
642
571
|
strict?: boolean
|
|
643
572
|
/** @deprecated */
|
|
@@ -651,13 +580,13 @@ export const makeRouter = <
|
|
|
651
580
|
routes: Layer.Layer<
|
|
652
581
|
RouterShape<Resource>,
|
|
653
582
|
| MakeErrors<Make>
|
|
654
|
-
|
|
|
583
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
655
584
|
| Layer.Error<typeof middleware.Default>,
|
|
656
|
-
|
|
|
585
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
657
586
|
| Layer.Context<typeof middleware.Default>
|
|
658
587
|
| Exclude<
|
|
659
588
|
MakeContext<Make>,
|
|
660
|
-
|
|
589
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
661
590
|
>
|
|
662
591
|
>
|
|
663
592
|
|
|
@@ -670,7 +599,7 @@ export const makeRouter = <
|
|
|
670
599
|
effect: Effect<
|
|
671
600
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
672
601
|
any,
|
|
673
|
-
Make["strict"] extends false ? any :
|
|
602
|
+
Make["strict"] extends false ? any : LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
674
603
|
>
|
|
675
604
|
strict?: boolean
|
|
676
605
|
/** @deprecated */
|
|
@@ -684,13 +613,13 @@ export const makeRouter = <
|
|
|
684
613
|
routes: Layer.Layer<
|
|
685
614
|
RouterShape<Resource>,
|
|
686
615
|
| MakeErrors<Make>
|
|
687
|
-
|
|
|
616
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
688
617
|
| Layer.Error<typeof middleware.Default>,
|
|
689
|
-
|
|
|
618
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
690
619
|
| Layer.Context<typeof middleware.Default>
|
|
691
620
|
| Exclude<
|
|
692
621
|
MakeContext<Make>,
|
|
693
|
-
|
|
622
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
694
623
|
>
|
|
695
624
|
>
|
|
696
625
|
|
|
@@ -703,7 +632,7 @@ export const makeRouter = <
|
|
|
703
632
|
effect: Effect<
|
|
704
633
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
705
634
|
any,
|
|
706
|
-
|
|
635
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
707
636
|
>
|
|
708
637
|
strict?: boolean
|
|
709
638
|
/** @deprecated */
|
|
@@ -717,13 +646,13 @@ export const makeRouter = <
|
|
|
717
646
|
routes: Layer.Layer<
|
|
718
647
|
RouterShape<Resource>,
|
|
719
648
|
| MakeErrors<Make>
|
|
720
|
-
|
|
|
649
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
721
650
|
| Layer.Error<typeof middleware.Default>,
|
|
722
|
-
|
|
|
651
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
723
652
|
| Layer.Context<typeof middleware.Default>
|
|
724
653
|
| Exclude<
|
|
725
654
|
MakeContext<Make>,
|
|
726
|
-
|
|
655
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
727
656
|
>
|
|
728
657
|
>
|
|
729
658
|
|
|
@@ -736,7 +665,7 @@ export const makeRouter = <
|
|
|
736
665
|
effect: Effect<
|
|
737
666
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
738
667
|
any,
|
|
739
|
-
|
|
668
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
740
669
|
>
|
|
741
670
|
strict?: boolean
|
|
742
671
|
}
|
|
@@ -748,13 +677,13 @@ export const makeRouter = <
|
|
|
748
677
|
routes: Layer.Layer<
|
|
749
678
|
RouterShape<Resource>,
|
|
750
679
|
| MakeErrors<Make>
|
|
751
|
-
|
|
|
680
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
752
681
|
| Layer.Error<typeof middleware.Default>,
|
|
753
|
-
|
|
|
682
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
754
683
|
| Layer.Context<typeof middleware.Default>
|
|
755
684
|
| Exclude<
|
|
756
685
|
MakeContext<Make>,
|
|
757
|
-
|
|
686
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
758
687
|
>
|
|
759
688
|
>
|
|
760
689
|
|
|
@@ -766,7 +695,7 @@ export const makeRouter = <
|
|
|
766
695
|
dependencies: Array<Layer.Layer.Any>
|
|
767
696
|
effect: (match: typeof router3) => Generator<
|
|
768
697
|
YieldWrap<
|
|
769
|
-
Effect<any, any, Make["strict"] extends false ? any :
|
|
698
|
+
Effect<any, any, Make["strict"] extends false ? any : LayerUtils.GetLayersSuccess<Make["dependencies"]>>
|
|
770
699
|
>,
|
|
771
700
|
{ [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]> },
|
|
772
701
|
any
|
|
@@ -782,13 +711,13 @@ export const makeRouter = <
|
|
|
782
711
|
routes: Layer.Layer<
|
|
783
712
|
RouterShape<Resource>,
|
|
784
713
|
| MakeErrors<Make>
|
|
785
|
-
|
|
|
714
|
+
| LayerUtils.GetLayersError<Make["dependencies"]>
|
|
786
715
|
| Layer.Error<typeof middleware.Default>,
|
|
787
|
-
|
|
|
716
|
+
| LayerUtils.GetLayersContext<Make["dependencies"]>
|
|
788
717
|
| Layer.Context<typeof middleware.Default>
|
|
789
718
|
| Exclude<
|
|
790
719
|
MakeContext<Make>,
|
|
791
|
-
|
|
720
|
+
LayerUtils.GetLayersSuccess<Make["dependencies"]>
|
|
792
721
|
>
|
|
793
722
|
>
|
|
794
723
|
|