@effect-app/infra 4.0.0-beta.205 → 4.0.0-beta.207
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 +49 -0
- package/dist/api/routing.d.ts +68 -24
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +13 -15
- package/package.json +2 -2
- package/src/api/routing.ts +132 -82
- package/test/controller.test.ts +3 -14
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/router-generator.test.ts +2 -2
- package/test/rpc-e2e-invalidation.test.ts +17 -15
- package/test/rpc-stream-fullstack.test.ts +19 -44
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.207
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b0db40f: Router handlers are now discriminated by `Resource[K]["stream"]`:
|
|
8
|
+
|
|
9
|
+
- Stream resources (`stream: true`) accept only `(req) => Stream<...>` handlers.
|
|
10
|
+
- Non-stream resources accept only `(req) => Effect<...>` (or generator yielding `Yieldable`).
|
|
11
|
+
|
|
12
|
+
Mixing — e.g. returning `Effect.fail(...)` or `Effect<Stream<...>>` from a stream handler — no longer type-checks.
|
|
13
|
+
|
|
14
|
+
The runtime `Stream.unwrap` branch that lifted `Effect`/`Effect<Stream>` returns into a `Stream` is removed; handlers for stream resources must return a `Stream` directly. Migrate `Effect.gen(...).pipe(Stream.unwrap)` patterns by returning the `Stream` directly, and convert `Effect.fail(err)` in stream handlers to `Stream.fail(err)`.
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [8fffc3c]
|
|
17
|
+
- effect-app@4.0.0-beta.207
|
|
18
|
+
|
|
19
|
+
## 4.0.0-beta.206
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- 54bfc59: Require middleware to flow through `makeRpcClient` and the live layer through `makeRouter`.
|
|
24
|
+
|
|
25
|
+
### `makeRpcClient(middleware, generalErrors?)`
|
|
26
|
+
|
|
27
|
+
Signature drops the `rcs` (request-context map wrapper) parameter. `rcs` was only load-bearing on the type side for `RequestConfig` inference; that information is now derived from `middleware.requestContextMap`. `middleware` is required — the previous "rcs + optional middleware" overload is gone.
|
|
28
|
+
|
|
29
|
+
**Migration**:
|
|
30
|
+
|
|
31
|
+
```diff
|
|
32
|
+
-makeRpcClient(RequestContextMap, undefined, AppMiddleware)
|
|
33
|
+
+makeRpcClient(AppMiddleware)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For tests/clients without a real middleware, build a minimal stub (`{ requestContextMap, requestContext }`) or pass any value satisfying `ClientMiddleware<RCM>`.
|
|
37
|
+
|
|
38
|
+
### `makeRouter(middlewareLive)`
|
|
39
|
+
|
|
40
|
+
`makeRouter()` no longer infers the live middleware layer from `meta.middleware.Default`. The Live layer is now passed explicitly to `makeRouter`, and the request classes only carry the middleware tag (schema-only). This decouples the router from any assumption that the middleware tag exposes a `Default` static.
|
|
41
|
+
|
|
42
|
+
**Migration**:
|
|
43
|
+
|
|
44
|
+
```diff
|
|
45
|
+
-export const { Router, matchAll } = makeRouter()
|
|
46
|
+
+export const { Router, matchAll } = makeRouter(AppMiddleware.Default)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- Updated dependencies [54bfc59]
|
|
50
|
+
- effect-app@4.0.0-beta.206
|
|
51
|
+
|
|
3
52
|
## 4.0.0-beta.205
|
|
4
53
|
|
|
5
54
|
### Patch Changes
|
package/dist/api/routing.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { type GetEffectContext, type RpcContextMap } from "effect-app/rpc/RpcCon
|
|
|
4
4
|
import { type TypeTestId } from "effect-app/TypeTest";
|
|
5
5
|
import { type Yieldable } from "effect/Effect";
|
|
6
6
|
import { Rpc, type RpcSerialization } from "effect/unstable/rpc";
|
|
7
|
-
import { type RouterMiddleware } from "./routing/middleware.js";
|
|
8
7
|
export * from "./routing/middleware.js";
|
|
9
8
|
export declare const applyRequestTypeInterruptibility: <A, E, R>(requestType: "command" | "query", effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> | Rpc.Wrapper<Effect.Effect<A, E, R>>;
|
|
10
9
|
export type AnyRequestModule = S.Top & {
|
|
@@ -56,10 +55,11 @@ type AnyHandler<Action extends AnyRequestModule> = Handler<Action, RequestType,
|
|
|
56
55
|
type FilterRequestModules<T> = {
|
|
57
56
|
[K in keyof T as T[K] extends AnyRequestModule ? K : never]: T[K];
|
|
58
57
|
};
|
|
59
|
-
type
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
type EffectMatch<Resource extends Record<string, any>, RequestContextMap extends Record<string, any>, RT extends RequestType, Key extends keyof Resource> = <A extends GetSuccessShape<Resource[Key], RT>, R2 = never, E = never>(f: (req: S.Schema.Type<Resource[Key]>) => Effect.Effect<A, E, R2>) => Handler<Resource[Key], RT, Exclude<Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>, Scope.Scope>>;
|
|
59
|
+
type StreamMatch<Resource extends Record<string, any>, RequestContextMap extends Record<string, any>, RT extends RequestType, Key extends keyof Resource> = <A extends GetSuccessShape<Resource[Key], RT>, R2 = never, E = never>(f: (req: S.Schema.Type<Resource[Key]>) => Stream.Stream<A, E, R2>) => Handler<Resource[Key], RT, Exclude<Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>, Scope.Scope>>;
|
|
60
|
+
type Match<Resource extends Record<string, any>, RequestContextMap extends Record<string, any>, RT extends RequestType, Key extends keyof Resource> = Resource[Key] extends {
|
|
61
|
+
stream: true;
|
|
62
|
+
} ? StreamMatch<Resource, RequestContextMap, RT, Key> : EffectMatch<Resource, RequestContextMap, RT, Key>;
|
|
63
63
|
export type RouteMatcher<RequestContextMap extends Record<string, any>, Resource extends Record<string, any>> = {
|
|
64
64
|
[Key in keyof FilterRequestModules<Resource>]: Match<Resource, RequestContextMap, RequestTypes.DECODED, Key> & {
|
|
65
65
|
success: Resource[Key]["success"];
|
|
@@ -72,45 +72,89 @@ export type RouteMatcher<RequestContextMap extends Record<string, any>, Resource
|
|
|
72
72
|
};
|
|
73
73
|
};
|
|
74
74
|
export declare const skipOnProd: Effect.Effect<boolean, never, never>;
|
|
75
|
-
|
|
75
|
+
type ProvidesOf<MW> = MW extends {
|
|
76
|
+
readonly provides: infer P;
|
|
77
|
+
} ? P : never;
|
|
78
|
+
type RequestContextMapOf<MW> = MW extends {
|
|
79
|
+
requestContextMap: infer RCM extends Record<string, RpcContextMap.Any>;
|
|
80
|
+
} ? RCM : Record<string, never>;
|
|
81
|
+
type LayerNormalize<L> = L extends Layer.Layer<any, infer E, infer R> ? Layer.Layer<never, E, R> : Layer.Layer<never, never, never>;
|
|
82
|
+
type LayerSuccess<L> = L extends Layer.Layer<infer A, any, any> ? A : never;
|
|
83
|
+
/**
|
|
84
|
+
* Middleware tags are typically passed to `makeRpcClient` as the class value, so
|
|
85
|
+
* the captured `MW` is a constructor type. Layers carry the *instance* type as
|
|
86
|
+
* their success channel. Bridge the two so the constraint compares like-with-like.
|
|
87
|
+
*
|
|
88
|
+
* Effect middleware classes declare `new(_: never): Shape` which the standard
|
|
89
|
+
* `T extends abstract new (...args: any) => infer I` form sometimes fails to
|
|
90
|
+
* narrow. Use the `prototype` member instead — it is always the instance type.
|
|
91
|
+
*/
|
|
92
|
+
type MWService<MW> = MW extends {
|
|
93
|
+
readonly prototype: infer P;
|
|
94
|
+
} ? P : MW;
|
|
95
|
+
/**
|
|
96
|
+
* Type-level guard: emits a structural mismatch on `Resource` when the middleware
|
|
97
|
+
* service identifier extracted from the resource's request classes is not provided
|
|
98
|
+
* by the layer passed to `makeRouter`. When `MW` is `never` (no middleware on the
|
|
99
|
+
* resource) or already a subtype of the layer's success, this resolves to `unknown`
|
|
100
|
+
* and intersects harmlessly with `Resource`.
|
|
101
|
+
*/
|
|
102
|
+
type EnsureMiddlewareProvided<Live, MW> = [MW] extends [never] ? unknown : [MWService<MW>] extends [LayerSuccess<Live>] ? unknown : {
|
|
103
|
+
readonly __middlewareNotProvidedByRouterLayer: {
|
|
104
|
+
readonly expected: MWService<MW>;
|
|
105
|
+
readonly providedByLayer: LayerSuccess<Live>;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
type SafeGetEffectContext<RCM, Config> = RCM extends Record<string, RpcContextMap.Any> ? GetEffectContext<RCM, Config> : never;
|
|
109
|
+
export declare const makeRouter: <Live extends Layer.Layer<any, any, any> = Layer.Layer<any, never, never>>(middlewareLive?: Live) => {
|
|
76
110
|
matchAll: <T extends {
|
|
77
111
|
[key: string]: Layer.Layer<never, any, any>;
|
|
78
112
|
}>(handlers: T) => Layer.Layer<never, Layer.Error<(typeof handlers)[keyof typeof handlers]>, Layer.Services<(typeof handlers)[keyof typeof handlers]>>;
|
|
79
|
-
Router: <const Resource extends Record<string, any
|
|
113
|
+
Router: <const Resource extends Record<string, any>, MW = Exclude<{ [K in keyof Resource]: Resource[K] extends {
|
|
114
|
+
readonly middleware?: infer MW_1;
|
|
115
|
+
} ? NonNullable<MW_1> : never; }[keyof Resource], never>>(rsc: Resource & EnsureMiddlewareProvided<Live, MW>, options?: {
|
|
80
116
|
check?: Effect.Effect<boolean>;
|
|
81
117
|
}) => {
|
|
82
118
|
<const Make extends {
|
|
83
119
|
dependencies?: ReadonlyArray<Layer.Any>;
|
|
84
|
-
effect: (match: <const Impl extends { [K in keyof FilterRequestModules<Resource>]: (
|
|
85
|
-
|
|
120
|
+
effect: (match: <const Impl extends { [K in keyof FilterRequestModules<Resource>]: (Resource[K] extends infer T ? T extends Resource[K] ? T extends {
|
|
121
|
+
stream: true;
|
|
122
|
+
} ? (req: S.Schema.Type<T>) => Stream.Stream<S.Schema.Type<GetSuccess<T>>, S.SchemaError | S.Schema.Type<GetFailure<T>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>> : ((req: S.Schema.Type<T>) => Effect.Effect<S.Schema.Type<GetSuccess<T>>, S.SchemaError | S.Schema.Type<GetFailure<T>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>) | ((req: S.Schema.Type<T>) => Generator<Yieldable<any, any, S.SchemaError | S.Schema.Type<GetFailure<T>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>, S.Schema.Type<GetSuccess<T>>, never>) : never : never) | (Resource[K] extends infer T_1 ? T_1 extends Resource[K] ? T_1 extends {
|
|
123
|
+
stream: true;
|
|
124
|
+
} ? {
|
|
125
|
+
raw: (req: S.Schema.Type<T_1>) => Stream.Stream<S.Codec.Encoded<GetSuccess<T_1>>, S.SchemaError | S.Schema.Type<GetFailure<T_1>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
|
|
126
|
+
} : {
|
|
127
|
+
raw: (req: S.Schema.Type<T_1>) => Generator<Yieldable<any, any, S.SchemaError | S.Schema.Type<GetFailure<T_1>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>, S.Codec.Encoded<GetSuccess<T_1>>, never>;
|
|
86
128
|
} | {
|
|
87
|
-
raw: (req: S.Schema.Type<
|
|
88
|
-
}
|
|
89
|
-
raw: (req: S.Schema.Type<Resource[K]>) => Stream.Stream<S.Codec.Encoded<GetSuccess<Resource[K]>>, S.SchemaError | S.Schema.Type<GetFailure<Resource[K]>>, ContextProviderA | GetEffectContext<RequestContextMap, Resource[K]["config"]>>;
|
|
90
|
-
}); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules<Resource>]: Handler<FilterRequestModules<Resource>[K], Impl[K] extends {
|
|
129
|
+
raw: (req: S.Schema.Type<T_1>) => Effect.Effect<S.Codec.Encoded<GetSuccess<T_1>>, S.SchemaError | S.Schema.Type<GetFailure<T_1>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
|
|
130
|
+
} : never : never); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules<Resource>]: Handler<FilterRequestModules<Resource>[K], Impl[K] extends {
|
|
91
131
|
raw: any;
|
|
92
132
|
} ? RequestTypes.RAW : RequestTypes.DECODED, Exclude<Exclude<Impl[K] extends {
|
|
93
133
|
raw: any;
|
|
94
|
-
} ? Impl[K]["raw"] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never,
|
|
134
|
+
} ? Impl[K]["raw"] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never, SafeGetEffectContext<RequestContextMapOf<MW>, Resource[K]["config"]> | ProvidesOf<MW>>, Scope.Scope>>; }) => Generator<Yieldable<any, any, any, any>, { [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]>; }>;
|
|
95
135
|
/** @deprecated */
|
|
96
136
|
readonly ಠ_ಠ: never;
|
|
97
|
-
}>(make: Make): Layer.Layer<never, MakeErrors<Make> | MakeDepsE<Make> | Layer.Error<
|
|
137
|
+
}>(make: Make): Layer.Layer<never, MakeErrors<Make> | MakeDepsE<Make> | Layer.Error<LayerNormalize<Live>>, MakeDepsIn<Make> | Layer.Services<LayerNormalize<Live>> | Exclude<MakeContext<Make>, MakeDepsOut<Make>> | RpcSerialization.RpcSerialization> & {
|
|
98
138
|
[TypeTestId]: Make;
|
|
99
139
|
};
|
|
100
140
|
<const Make extends {
|
|
101
141
|
dependencies?: ReadonlyArray<Layer.Any>;
|
|
102
|
-
effect: (match: <const Impl extends { [K in keyof FilterRequestModules<Resource>]: (
|
|
103
|
-
|
|
104
|
-
} | {
|
|
105
|
-
|
|
142
|
+
effect: (match: <const Impl extends { [K in keyof FilterRequestModules<Resource>]: (Resource[K] extends infer T ? T extends Resource[K] ? T extends {
|
|
143
|
+
stream: true;
|
|
144
|
+
} ? (req: S.Schema.Type<T>) => Stream.Stream<S.Schema.Type<GetSuccess<T>>, S.SchemaError | S.Schema.Type<GetFailure<T>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>> : ((req: S.Schema.Type<T>) => Effect.Effect<S.Schema.Type<GetSuccess<T>>, S.SchemaError | S.Schema.Type<GetFailure<T>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>) | ((req: S.Schema.Type<T>) => Generator<Yieldable<any, any, S.SchemaError | S.Schema.Type<GetFailure<T>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T["config"]>>, S.Schema.Type<GetSuccess<T>>, never>) : never : never) | (Resource[K] extends infer T_1 ? T_1 extends Resource[K] ? T_1 extends {
|
|
145
|
+
stream: true;
|
|
146
|
+
} ? {
|
|
147
|
+
raw: (req: S.Schema.Type<T_1>) => Stream.Stream<S.Codec.Encoded<GetSuccess<T_1>>, S.SchemaError | S.Schema.Type<GetFailure<T_1>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
|
|
148
|
+
} : {
|
|
149
|
+
raw: (req: S.Schema.Type<T_1>) => Generator<Yieldable<any, any, S.SchemaError | S.Schema.Type<GetFailure<T_1>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>, S.Codec.Encoded<GetSuccess<T_1>>, never>;
|
|
106
150
|
} | {
|
|
107
|
-
raw: (req: S.Schema.Type<
|
|
108
|
-
}); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules<Resource>]: Handler<FilterRequestModules<Resource>[K], Impl[K] extends {
|
|
151
|
+
raw: (req: S.Schema.Type<T_1>) => Effect.Effect<S.Codec.Encoded<GetSuccess<T_1>>, S.SchemaError | S.Schema.Type<GetFailure<T_1>>, ProvidesOf<MW> | SafeGetEffectContext<RequestContextMapOf<MW>, T_1["config"]>>;
|
|
152
|
+
} : never : never); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules<Resource>]: Handler<FilterRequestModules<Resource>[K], Impl[K] extends {
|
|
109
153
|
raw: any;
|
|
110
154
|
} ? RequestTypes.RAW : RequestTypes.DECODED, Exclude<Exclude<Impl[K] extends {
|
|
111
155
|
raw: any;
|
|
112
|
-
} ? Impl[K]["raw"] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never,
|
|
113
|
-
}>(make: Make): Layer.Layer<never, MakeErrors<Make> | MakeDepsE<Make> | Layer.Error<
|
|
156
|
+
} ? Impl[K]["raw"] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K]["raw"] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Stream.Stream<any, any, infer R> ? R : Impl[K] extends (...args: any[]) => Generator<Yieldable<any, any, any, infer R>> ? R : never, SafeGetEffectContext<RequestContextMapOf<MW>, Resource[K]["config"]> | ProvidesOf<MW>>, Scope.Scope>>; }) => Generator<Yieldable<any, any, any, any>, { [K in keyof FilterRequestModules<Resource>]: AnyHandler<Resource[K]>; }>;
|
|
157
|
+
}>(make: Make): Layer.Layer<never, MakeErrors<Make> | MakeDepsE<Make> | Layer.Error<LayerNormalize<Live>>, MakeDepsIn<Make> | Layer.Services<LayerNormalize<Live>> | Exclude<MakeContext<Make>, MakeDepsOut<Make>> | RpcSerialization.RpcSerialization> & {
|
|
114
158
|
readonly [TypeTestId]: Make;
|
|
115
159
|
};
|
|
116
160
|
};
|
|
@@ -134,4 +178,4 @@ export type MakeHandlers<Make, _Handlers extends Record<string, any>> = Make ext
|
|
|
134
178
|
export type MakeDepsE<Make> = Layer.Error<MakeDeps<Make>>;
|
|
135
179
|
export type MakeDepsIn<Make> = Layer.Services<MakeDeps<Make>>;
|
|
136
180
|
export type MakeDepsOut<Make> = Layer.Success<MakeDeps<Make>>;
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBVSxNQUFNLEVBQUUsS0FBSyxFQUE4QyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXJILE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWxELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixLQUFLLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdHLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXJELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFZLEtBQUssZ0JBQWdCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQTtBQUVyRixPQUFPLEVBQXdDLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUVyRyxjQUFjLHlCQUF5QixDQUFBO0FBRXZDLGVBQU8sTUFBTSxnQ0FBZ0MsR0FBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFDekMsU0FBUyxHQUFHLE9BQU8sVUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxpRUFDcUMsQ0FBQTtBQUlyRSxNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFBO0lBQ1osSUFBSSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUE7SUFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQTtJQUNmLE1BQU0sRUFBRSxHQUFHLENBQUE7SUFDWCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUNkLEtBQUssRUFBRSxDQUFDLENB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RUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7Q0FBRSxHQUFHLENBQUMsR0FDOUYsS0FBSyxDQUFBO0FBRVgsTUFBTSxNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBSWxFLElBQUksU0FBUztJQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtDQUFFLEdBQUcsQ0FBQyxHQUNyRSxLQUFLLENBQUE7QUFFWCxNQUFNLE1BQU0sU0FBUyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBRXpELE1BQU0sTUFBTSxVQUFVLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFFN0QsTUFBTSxNQUFNLFdBQVcsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSJ9
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBVSxNQUFNLEVBQUUsS0FBSyxFQUE4QyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXJILE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWxELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixLQUFLLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdHLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXJELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFZLEtBQUssZ0JBQWdCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQTtBQUlyRixjQUFjLHlCQUF5QixDQUFBO0FBRXZDLGVBQU8sTUFBTSxnQ0FBZ0MsR0FBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFDekMsU0FBUyxHQUFHLE9BQU8sVUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxpRUFDcUMsQ0FBQTtBQUlyRSxNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFBO0lBQ1osSUFBSSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUE7SUFDekIsTUFBTSxFQUFFLE9BQU8sQ0FBQTtJQUNmLE1BQU0sRUFBRSxHQUFHLENBQUE7SUFDWCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBO0NBQ2IsQ0FBQTtBQUdELE1BQU0sV0FBVyxTQUFTLENBQUMsT0FB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TyxDQUNMLE9BQU8sQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDekUsS0FBSyxDQUFDLEtBQUssQ0FDWixDQUNGLENBQUE7QUFFRCxLQUFLLFdBQVcsQ0FDZCxRQUFRLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFDcEMsaUJBQWlCLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFDN0MsRUFBRSxTQUFTLFdBQVcsRUFDdEIsR0FBRyxTQUFTLE1BQU0sUUFBUSxJQUN4QixDQUFDLENBQUMsU0FBUyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFDdEUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FDOUQsT0FBTyxDQUNWLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFDYixFQUFFLEVBQ0YsT0FBTyxDQUNMLE9BQU8sQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDekUsS0FBSyxDQUFDLEtBQUssQ0FDWixDQUNGLENBQUE7QUFJRCxLQUFLLEtBQUssQ0FDUixRQUFRLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFDcEMsaUJBQWlCLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFDN0MsRUFBRSxTQUFTLFdBQVcsRUFDdEIsR0FBRyxTQUFTLE1BQU0sUUFBUSxJQUN4QixRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVM7SUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFBO0NBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FDMUYsV0FBVyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFFckQsTUFBTSxNQUFNLFlBQVksQ0FDdEIsaUJBQWlCLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFDN0MsUUFBUSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQ2xDO0tBS0QsR0FBRyxJQUFJLE1BQU0sb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQ3hDLEtBQUssQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FDN0Q7UUFDQSxPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pDLFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUQsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3Qjs7V0FFRztRQUNILEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7S0FDL0Q7Q0FDSixDQUFBO0FBRUQsZUFBTyxNQUFNLFVBQVUsc0NBS0YsQ0FBQTtBQU9yQixLQUFLLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTO0lBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtDQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtBQUMzRSxLQUFLLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVM7SUFDeEMsaUJBQWlCLEVBQUUsTUFBTSxHQUFHLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7Q0FDdkUsR0FBRyxHQUFHLEdBQ0gsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUN6QixLQUFLLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUM1RixLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDcEMsS0FBSyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO0FBRTNFOzs7Ozs7OztHQVFHO0FBQ0gsS0FBSyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUztJQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7Q0FBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUE7QUFFeEU7Ozs7OztHQU1HO0FBQ0gsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLEdBQ3BFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQ3REO0lBQ0EsUUFBUSxDQUFDLG9DQUFvQyxFQUFFO1FBQzdDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2hDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQzdDLENBQUE7Q0FDRixDQUFBO0FBSUgsS0FBSyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQ2xILEtBQUssQ0FBQTtBQUlULGVBQU8sTUFBTSxVQUFVLEdBQUksSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsb0RBQy9DLElBQUk7ZUEwZG5CLENBQUMsU0FBUztRQUNSLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7S0FDNUMsWUFFUyxDQUFDLEtBSThDLEtBQUssQ0FBQyxLQUFLLENBQ2xFLEtBQUssRUFDTCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUEsT0FBTyxRQUFRLEVBQUMsTUFBTSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQ25ELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQSxPQUFPLFFBQVEsRUFBQyxNQUFNLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FDdkQ7bUJBM2RLLFFBQVEsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUMxQyxFQUFFLGNBM0RELENBQUM7OEJBQW1ELE1BQU0sSUFBRTttRUE2RHhELFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFlBQ3hDO1FBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUFFO2VBb1lsQyxJQUFJLFNBQVM7WUFDakIsWUFBWSxDQUFDLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN2QyxNQUFNLEVBQUUsQ0FBQyxLQUFLLFNBbFJaLElBQUksU0FBUyxHQUNoQixDQUFDLElBQUksTUFBTSxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7d0JBL0RvRCxJQUFJOzt3QkFNekIsSUFBSTs7Ozs7OztpQ0EwRDlFLFFBRUssSUFBSSxLQUNQLEdBQ0YsQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUMvRCxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUFFLEdBQUcsRUFBRSxHQUFHLENBQUE7YUFBRSxHQUFHLFlBQVksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFDdEUsT0FBTyxDQUNMLE9BQU8sQ0FFTCxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQTthQUFFLEdBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FDL0UsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUMvRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQ3BELFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUNsQyxHQUFHLENBQUMsR0FDSCxLQUFLLEdBQ0wsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUN4RSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQ3hFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLFNBQVMsQ0FDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ2xDLEdBQUcsQ0FBQyxHQUNILEtBQUssRUFDUCxvQkFBb0IsMEJBQTRCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFDOUMsQ0FDM0IsRUFDRCxLQUFLLENBQUMsS0FBSyxDQUNaLENBQ0YsR0FvUGlDLEtBQUssU0FBUyxDQUMxQyxTQUFTLENBQ1AsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxDQUNKLEVBQ0QsR0FBRyxDQUFDLElBQUksTUFBTSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FDekUsQ0FBQTtZQUNELGtCQUFrQjtZQUNsQixRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQTtTQUNwQixRQUVLLElBQUksR0FFUixLQUFLLENBQUMsS0FBSyxDQUNYLEtBQUssRUFDSCxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FDZixLQUFLLENBQUMsS0FBSyxzQkFBbUIsRUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUNoQixLQUFLLENBQUMsUUFBUSxzQkFBbUIsR0FDakMsT0FBTyxDQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFDakIsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUNsQixHQUNDLGdCQUFnQixDQUFDLGdCQUFnQixDQUNwQyxHQUNDO1lBRUEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUE7U0FDbkI7ZUFFSyxJQUFJLFNBQVM7WUFDakIsWUFBWSxDQUFDLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUV2QyxNQUFNLEVBQUUsQ0FBQyxLQUFLOzs7Ozs7Ozs7Ozs7OztzbkJBQWdCLEtBQUssU0FBUyxDQUMxQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxJQUFJLE1BQU0sb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQ3pFLENBQUE7U0FDRixRQUVLLElBQUksR0FFUixLQUFLLENBQUMsS0FBSyxDQUNYLEtBQUssRUFDSCxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FDZixLQUFLLENBQUMsS0FBSyxzQkFBbUIsRUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUNoQixLQUFLLENBQUMsUUFBUSxzQkFBbUIsR0FDakMsT0FBTyxDQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFDakIsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUNsQixHQUNDLGdCQUFnQixDQUFDLGdCQUFnQixDQUNwQyxHQUNDO1lBRUEsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFBO1NBQzVCOztDQTRCUixDQUFBO0FBRUQsTUFBTSxNQUFNLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxTQUFTO0lBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0NBQUUsR0FDekYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUM1QixLQUFLLENBQUE7QUFFVCxNQUFNLE1BQU0sVUFBVSxDQUFDLElBQUksSUFJekIsSUFBSSxTQUFTO0lBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0NBQUUsR0FBRyxLQUFLLEdBQzVGLElBQUksU0FBUztJQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0NBQUUsR0FBRyxDQUFDLEdBQzlGLEtBQUssQ0FBQTtBQUVYLE1BQU0sTUFBTSxXQUFXLENBQUMsSUFBSSxJQUkxQixJQUFJLFNBQVM7SUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtDQUFFLEdBQUcsS0FBSyxHQUNyRixJQUFJLFNBQVM7SUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtDQUFFLEdBQUcsQ0FBQyxHQUM5RixLQUFLLENBQUE7QUFFWCxNQUFNLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFJbEUsSUFBSSxTQUFTO0lBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO0NBQUUsR0FBRyxDQUFDLEdBQ3JFLEtBQUssQ0FBQTtBQUVYLE1BQU0sTUFBTSxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFFekQsTUFBTSxNQUFNLFVBQVUsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUU3RCxNQUFNLE1BQU0sV0FBVyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/api/routing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/api/routing.ts"],"names":[],"mappings":"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"}
|
package/dist/api/routing.js
CHANGED
|
@@ -24,10 +24,12 @@ export const skipOnProd = Effect
|
|
|
24
24
|
return env !== "prod";
|
|
25
25
|
})
|
|
26
26
|
.pipe(Effect.orDie);
|
|
27
|
-
export const makeRouter = (
|
|
27
|
+
export const makeRouter = (middlewareLive) => {
|
|
28
28
|
/**
|
|
29
|
-
* Create a Router for specified resource
|
|
30
|
-
*
|
|
29
|
+
* Create a Router for specified resource.
|
|
30
|
+
* Middleware schema/tag is read from the request classes (stored via `makeRpcClient`).
|
|
31
|
+
* The middleware **Live** layer is the one passed to `makeRouter`.
|
|
32
|
+
* If `check` is provided, the router will only be created if the effect succeeds with true.
|
|
31
33
|
*/
|
|
32
34
|
function matchFor(rsc, options) {
|
|
33
35
|
const meta = getMeta(rsc);
|
|
@@ -85,6 +87,8 @@ export const makeRouter = (middleware) => {
|
|
|
85
87
|
? Effect.fnUntraced(make)(router3)
|
|
86
88
|
: make(router3));
|
|
87
89
|
const controllers = yield* finalMake;
|
|
90
|
+
// Read the middleware from the resource's request classes at runtime
|
|
91
|
+
const mw = meta.middleware;
|
|
88
92
|
// return make.pipe(Effect.map((c) => controllers(c, dependencies)))
|
|
89
93
|
const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
|
|
90
94
|
const handler = controllers[cur];
|
|
@@ -96,14 +100,8 @@ export const makeRouter = (middleware) => {
|
|
|
96
100
|
}
|
|
97
101
|
: resource,
|
|
98
102
|
(payload, headers) => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// Lift Effect to Stream so `Effect.fail(...)` and `Effect<Stream>` (e.g.
|
|
102
|
-
// from generator handlers) work the same as a returned Stream.
|
|
103
|
-
if (resource.stream && Effect.isEffect(result)) {
|
|
104
|
-
result = Stream.unwrap(result.pipe(Effect.map((v) => Stream.isStream(v) ? v : Stream.succeed(v))));
|
|
105
|
-
}
|
|
106
|
-
if (Stream.isStream(result)) {
|
|
103
|
+
const result = handler.handler(payload, headers);
|
|
104
|
+
if (resource.stream) {
|
|
107
105
|
// Wrap stream items as { _tag: "value", value } and append a final
|
|
108
106
|
// { _tag: "done", metadata } chunk carrying accumulated invalidation keys.
|
|
109
107
|
// V2: on failure, convert to { _tag: "error", error, metadata } chunk so
|
|
@@ -176,11 +174,11 @@ export const makeRouter = (middleware) => {
|
|
|
176
174
|
error: resource.error,
|
|
177
175
|
stream: isStream
|
|
178
176
|
}))
|
|
179
|
-
.annotate(
|
|
177
|
+
.annotate(mw.requestContext, resource.config ?? {})
|
|
180
178
|
.annotate(RequestTypeAnnotation, resource.type);
|
|
181
179
|
}))
|
|
182
180
|
.prefix(`${meta.moduleName}.`)
|
|
183
|
-
.middleware(
|
|
181
|
+
.middleware(mw);
|
|
184
182
|
const rpc = rpcs
|
|
185
183
|
.toLayer(Effect.gen(function* () {
|
|
186
184
|
return typedValuesOf(mapped).reduce((acc, [resource, handler]) => {
|
|
@@ -200,7 +198,7 @@ export const makeRouter = (middleware) => {
|
|
|
200
198
|
.pipe(Layer.unwrap);
|
|
201
199
|
const routes = layer.pipe(Layer.provide([
|
|
202
200
|
dependenciesL,
|
|
203
|
-
|
|
201
|
+
(middlewareLive ?? Layer.empty)
|
|
204
202
|
]));
|
|
205
203
|
const check = options?.check;
|
|
206
204
|
return check
|
|
@@ -227,4 +225,4 @@ export const makeRouter = (middleware) => {
|
|
|
227
225
|
Router: matchFor
|
|
228
226
|
};
|
|
229
227
|
};
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE4QixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBYyxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTdELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUF5QixTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVyRixPQUFPLEVBQUUsV0FBVyxJQUFJLHFCQUFxQixFQUF5QixNQUFNLHlCQUF5QixDQUFBO0FBRXJHLGNBQWMseUJBQXlCLENBQUE7QUFFdkMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FDOUMsV0FBZ0MsRUFDaEMsTUFBOEIsRUFDOUIsRUFBRSxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtBQWdDckUsUUFBUTtBQUNSLHVDQUF1QztBQUN2Qyw0Q0FBNEM7QUFDNUMsSUFBVSxZQUFZLENBS3JCO0FBTEQsV0FBVSxZQUFZO0lBQ1Asb0JBQU8sR0FBRyxHQUFZLENBQUE7SUFFdEIsZ0JBQUcsR0FBRyxLQUFjLENBQUE7QUFFbkMsQ0FBQyxFQUxTLFlBQVksS0FBWixZQUFZLFFBS3JCO0FBc0dELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxN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
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE4QixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBYyxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTdELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUF5QixTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVyRixPQUFPLEVBQUUsV0FBVyxJQUFJLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFOUUsY0FBYyx5QkFBeUIsQ0FBQTtBQUV2QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUM5QyxXQUFnQyxFQUNoQyxNQUE4QixFQUM5QixFQUFFLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0FBZ0NyRSxRQUFRO0FBQ1IsdUNBQXVDO0FBQ3ZDLDRDQUE0QztBQUM1QyxJQUFVLFlBQVksQ0FLckI7QUFMRCxXQUFVLFlBQVk7SUFDUCxvQkFBTyxHQUFHLEdBQVksQ0FBQTtJQUV0QixnQkFBRyxHQUFHLEtBQWMsQ0FBQTtBQUVuQyxDQUFDLEVBTFMsWUFBWSxLQUFaLFlBQVksUUFLckI7QUFrSEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1B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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.207",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "8.4.0",
|
|
15
15
|
"query-string": "^9.3.1",
|
|
16
|
-
"effect-app": "4.0.0-beta.
|
|
16
|
+
"effect-app": "4.0.0-beta.207"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.9.3",
|
package/src/api/routing.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { typedKeysOf, typedValuesOf } from "effect-app/utils"
|
|
|
12
12
|
import { type Yieldable } from "effect/Effect"
|
|
13
13
|
import { Rpc, RpcGroup, type RpcSerialization, RpcServer } from "effect/unstable/rpc"
|
|
14
14
|
import { type LayerUtils } from "./layerUtils.js"
|
|
15
|
-
import { RequestType as RequestTypeAnnotation
|
|
15
|
+
import { RequestType as RequestTypeAnnotation } from "./routing/middleware.js"
|
|
16
16
|
|
|
17
17
|
export * from "./routing/middleware.js"
|
|
18
18
|
|
|
@@ -110,35 +110,47 @@ type RpcRouteR<
|
|
|
110
110
|
] ? R
|
|
111
111
|
: never
|
|
112
112
|
|
|
113
|
-
type
|
|
113
|
+
type EffectMatch<
|
|
114
114
|
Resource extends Record<string, any>,
|
|
115
115
|
RequestContextMap extends Record<string, any>,
|
|
116
116
|
RT extends RequestType,
|
|
117
117
|
Key extends keyof Resource
|
|
118
|
-
> =
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>,
|
|
127
|
-
Scope.Scope
|
|
128
|
-
>
|
|
118
|
+
> = <A extends GetSuccessShape<Resource[Key], RT>, R2 = never, E = never>(
|
|
119
|
+
f: (req: S.Schema.Type<Resource[Key]>) => Effect.Effect<A, E, R2>
|
|
120
|
+
) => Handler<
|
|
121
|
+
Resource[Key],
|
|
122
|
+
RT,
|
|
123
|
+
Exclude<
|
|
124
|
+
Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>,
|
|
125
|
+
Scope.Scope
|
|
129
126
|
>
|
|
127
|
+
>
|
|
130
128
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
129
|
+
type StreamMatch<
|
|
130
|
+
Resource extends Record<string, any>,
|
|
131
|
+
RequestContextMap extends Record<string, any>,
|
|
132
|
+
RT extends RequestType,
|
|
133
|
+
Key extends keyof Resource
|
|
134
|
+
> = <A extends GetSuccessShape<Resource[Key], RT>, R2 = never, E = never>(
|
|
135
|
+
f: (req: S.Schema.Type<Resource[Key]>) => Stream.Stream<A, E, R2>
|
|
136
|
+
) => Handler<
|
|
137
|
+
Resource[Key],
|
|
138
|
+
RT,
|
|
139
|
+
Exclude<
|
|
140
|
+
Exclude<R2, GetEffectContext<RequestContextMap, Resource[Key]["config"]>>,
|
|
141
|
+
Scope.Scope
|
|
140
142
|
>
|
|
141
|
-
|
|
143
|
+
>
|
|
144
|
+
|
|
145
|
+
// Stream resources only accept Stream / Effect<Stream> handlers; non-stream resources
|
|
146
|
+
// only accept Effect handlers. Discriminated by the request module's `stream` flag.
|
|
147
|
+
type Match<
|
|
148
|
+
Resource extends Record<string, any>,
|
|
149
|
+
RequestContextMap extends Record<string, any>,
|
|
150
|
+
RT extends RequestType,
|
|
151
|
+
Key extends keyof Resource
|
|
152
|
+
> = Resource[Key] extends { stream: true } ? StreamMatch<Resource, RequestContextMap, RT, Key>
|
|
153
|
+
: EffectMatch<Resource, RequestContextMap, RT, Key>
|
|
142
154
|
|
|
143
155
|
export type RouteMatcher<
|
|
144
156
|
RequestContextMap extends Record<string, any>,
|
|
@@ -168,37 +180,81 @@ export const skipOnProd = Effect
|
|
|
168
180
|
})
|
|
169
181
|
.pipe(Effect.orDie)
|
|
170
182
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
>
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
183
|
+
// Type helpers to extract middleware information from a resource's request classes.
|
|
184
|
+
type MiddlewareOf<M extends Record<string, any>> = Exclude<
|
|
185
|
+
{ [K in keyof M]: M[K] extends { readonly middleware?: infer MW } ? NonNullable<MW> : never }[keyof M],
|
|
186
|
+
never
|
|
187
|
+
>
|
|
188
|
+
type ProvidesOf<MW> = MW extends { readonly provides: infer P } ? P : never
|
|
189
|
+
type RequestContextMapOf<MW> = MW extends {
|
|
190
|
+
requestContextMap: infer RCM extends Record<string, RpcContextMap.Any>
|
|
191
|
+
} ? RCM
|
|
192
|
+
: Record<string, never>
|
|
193
|
+
type LayerNormalize<L> = L extends Layer.Layer<any, infer E, infer R> ? Layer.Layer<never, E, R>
|
|
194
|
+
: Layer.Layer<never, never, never>
|
|
195
|
+
type LayerSuccess<L> = L extends Layer.Layer<infer A, any, any> ? A : never
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Middleware tags are typically passed to `makeRpcClient` as the class value, so
|
|
199
|
+
* the captured `MW` is a constructor type. Layers carry the *instance* type as
|
|
200
|
+
* their success channel. Bridge the two so the constraint compares like-with-like.
|
|
201
|
+
*
|
|
202
|
+
* Effect middleware classes declare `new(_: never): Shape` which the standard
|
|
203
|
+
* `T extends abstract new (...args: any) => infer I` form sometimes fails to
|
|
204
|
+
* narrow. Use the `prototype` member instead — it is always the instance type.
|
|
205
|
+
*/
|
|
206
|
+
type MWService<MW> = MW extends { readonly prototype: infer P } ? P : MW
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Type-level guard: emits a structural mismatch on `Resource` when the middleware
|
|
210
|
+
* service identifier extracted from the resource's request classes is not provided
|
|
211
|
+
* by the layer passed to `makeRouter`. When `MW` is `never` (no middleware on the
|
|
212
|
+
* resource) or already a subtype of the layer's success, this resolves to `unknown`
|
|
213
|
+
* and intersects harmlessly with `Resource`.
|
|
214
|
+
*/
|
|
215
|
+
type EnsureMiddlewareProvided<Live, MW> = [MW] extends [never] ? unknown
|
|
216
|
+
: [MWService<MW>] extends [LayerSuccess<Live>] ? unknown
|
|
217
|
+
: {
|
|
218
|
+
readonly __middlewareNotProvidedByRouterLayer: {
|
|
219
|
+
readonly expected: MWService<MW>
|
|
220
|
+
readonly providedByLayer: LayerSuccess<Live>
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Safe wrappers that check the constraint before calling GetEffectContext/GetEffectError.
|
|
225
|
+
// These avoid TypeScript constraint errors when the RC map type is deferred (generic).
|
|
226
|
+
type SafeGetEffectContext<RCM, Config> = RCM extends Record<string, RpcContextMap.Any> ? GetEffectContext<RCM, Config>
|
|
227
|
+
: never
|
|
228
|
+
type SafeGetEffectError<RCM, Config> = RCM extends Record<string, RpcContextMap.Any> ? GetEffectError<RCM, Config>
|
|
229
|
+
: never
|
|
230
|
+
|
|
231
|
+
export const makeRouter = <Live extends Layer.Layer<any, any, any> = Layer.Layer<any, never, never>>(
|
|
232
|
+
middlewareLive?: Live
|
|
191
233
|
) => {
|
|
234
|
+
type ResourceMWDefault = LayerNormalize<Live>
|
|
235
|
+
|
|
192
236
|
/**
|
|
193
|
-
* Create a Router for specified resource
|
|
194
|
-
*
|
|
237
|
+
* Create a Router for specified resource.
|
|
238
|
+
* Middleware schema/tag is read from the request classes (stored via `makeRpcClient`).
|
|
239
|
+
* The middleware **Live** layer is the one passed to `makeRouter`.
|
|
240
|
+
* If `check` is provided, the router will only be created if the effect succeeds with true.
|
|
195
241
|
*/
|
|
196
242
|
function matchFor<
|
|
197
|
-
const Resource extends Record<string, any
|
|
243
|
+
const Resource extends Record<string, any>,
|
|
244
|
+
MW = MiddlewareOf<Resource>
|
|
198
245
|
>(
|
|
199
|
-
rsc: Resource,
|
|
246
|
+
rsc: Resource & EnsureMiddlewareProvided<Live, MW>,
|
|
200
247
|
options?: { check?: Effect.Effect<boolean> }
|
|
201
248
|
) {
|
|
249
|
+
// MW is a defaulted type parameter so TypeScript evaluates MiddlewareOf<Resource>
|
|
250
|
+
// eagerly at each call site, producing a concrete type instead of a deferred conditional.
|
|
251
|
+
type ResourceRequestContextMap = RequestContextMapOf<MW>
|
|
252
|
+
type ResourceContextProviderA = ProvidesOf<MW>
|
|
253
|
+
|
|
254
|
+
type HandlerContext<Action extends AnyRequestModule> =
|
|
255
|
+
| SafeGetEffectContext<ResourceRequestContextMap, Action["config"]>
|
|
256
|
+
| ResourceContextProviderA
|
|
257
|
+
|
|
202
258
|
type HandlerWithInputGen<
|
|
203
259
|
Action extends AnyRequestModule,
|
|
204
260
|
RT extends RequestType
|
|
@@ -211,7 +267,7 @@ export const makeRouter = <
|
|
|
211
267
|
S.Schema.Type<GetFailure<Action>> | S.SchemaError,
|
|
212
268
|
// the actual implementation of the handler may just require the dynamic context provided by the middleware
|
|
213
269
|
// and the per request context provided by the context provider
|
|
214
|
-
|
|
270
|
+
HandlerContext<Action>
|
|
215
271
|
>,
|
|
216
272
|
GetSuccessShape<Action, RT>,
|
|
217
273
|
never
|
|
@@ -227,7 +283,7 @@ export const makeRouter = <
|
|
|
227
283
|
S.Schema.Type<GetFailure<Action>> | S.SchemaError,
|
|
228
284
|
// the actual implementation of the handler may just require the dynamic context provided by the middleware
|
|
229
285
|
// and the per request context provided by the context provider
|
|
230
|
-
|
|
286
|
+
HandlerContext<Action>
|
|
231
287
|
>
|
|
232
288
|
|
|
233
289
|
type HandlerWithInputStream<
|
|
@@ -238,20 +294,21 @@ export const makeRouter = <
|
|
|
238
294
|
) => Stream.Stream<
|
|
239
295
|
GetSuccessShape<Action, RT>,
|
|
240
296
|
S.Schema.Type<GetFailure<Action>> | S.SchemaError,
|
|
241
|
-
|
|
297
|
+
HandlerContext<Action>
|
|
242
298
|
>
|
|
243
299
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
|
300
|
+
// Stream resources only accept `(req) => Stream`; non-stream only Effect / Generator.
|
|
301
|
+
type Handlers<Action extends AnyRequestModule, RT extends RequestType> = Action extends { stream: true }
|
|
302
|
+
? HandlerWithInputStream<Action, RT>
|
|
303
|
+
: HandlerWithInputGen<Action, RT> | HandlerWithInputEff<Action, RT>
|
|
248
304
|
|
|
249
305
|
type HandlersDecoded<Action extends AnyRequestModule> = Handlers<Action, RequestTypes.DECODED>
|
|
250
306
|
|
|
251
|
-
type HandlersRaw<Action extends AnyRequestModule> =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
307
|
+
type HandlersRaw<Action extends AnyRequestModule> = Action extends { stream: true }
|
|
308
|
+
? { raw: HandlerWithInputStream<Action, RequestTypes.RAW> }
|
|
309
|
+
:
|
|
310
|
+
| { raw: HandlerWithInputGen<Action, RequestTypes.RAW> }
|
|
311
|
+
| { raw: HandlerWithInputEff<Action, RequestTypes.RAW> }
|
|
255
312
|
|
|
256
313
|
type AnyHandlers<Action extends AnyRequestModule> = HandlersRaw<Action> | HandlersDecoded<Action>
|
|
257
314
|
|
|
@@ -299,7 +356,7 @@ export const makeRouter = <
|
|
|
299
356
|
})
|
|
300
357
|
return prev
|
|
301
358
|
},
|
|
302
|
-
{} as RouteMatcher<
|
|
359
|
+
{} as RouteMatcher<ResourceRequestContextMap, Resource>
|
|
303
360
|
)
|
|
304
361
|
|
|
305
362
|
const router3: <
|
|
@@ -328,8 +385,8 @@ export const makeRouter = <
|
|
|
328
385
|
Yieldable<any, any, any, infer R>
|
|
329
386
|
> ? R
|
|
330
387
|
: never,
|
|
331
|
-
|
|
|
332
|
-
|
|
|
388
|
+
| SafeGetEffectContext<ResourceRequestContextMap, Resource[K]["config"]>
|
|
389
|
+
| ResourceContextProviderA
|
|
333
390
|
>,
|
|
334
391
|
Scope.Scope
|
|
335
392
|
>
|
|
@@ -370,6 +427,9 @@ export const makeRouter = <
|
|
|
370
427
|
|
|
371
428
|
const controllers = yield* finalMake
|
|
372
429
|
|
|
430
|
+
// Read the middleware from the resource's request classes at runtime
|
|
431
|
+
const mw = meta.middleware as any
|
|
432
|
+
|
|
373
433
|
// return make.pipe(Effect.map((c) => controllers(c, dependencies)))
|
|
374
434
|
const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
|
|
375
435
|
const handler = controllers[cur as keyof typeof controllers]
|
|
@@ -382,18 +442,8 @@ export const makeRouter = <
|
|
|
382
442
|
} as any
|
|
383
443
|
: resource,
|
|
384
444
|
(payload: any, headers: any) => {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
// Lift Effect to Stream so `Effect.fail(...)` and `Effect<Stream>` (e.g.
|
|
388
|
-
// from generator handlers) work the same as a returned Stream.
|
|
389
|
-
if (resource.stream && Effect.isEffect(result)) {
|
|
390
|
-
result = Stream.unwrap(
|
|
391
|
-
(result as Effect.Effect<unknown, unknown, unknown>).pipe(
|
|
392
|
-
Effect.map((v) => Stream.isStream(v) ? v : Stream.succeed(v))
|
|
393
|
-
)
|
|
394
|
-
)
|
|
395
|
-
}
|
|
396
|
-
if (Stream.isStream(result)) {
|
|
445
|
+
const result: any = handler.handler(payload, headers)
|
|
446
|
+
if (resource.stream) {
|
|
397
447
|
// Wrap stream items as { _tag: "value", value } and append a final
|
|
398
448
|
// { _tag: "done", metadata } chunk carrying accumulated invalidation keys.
|
|
399
449
|
// V2: on failure, convert to { _tag: "error", error, metadata } chunk so
|
|
@@ -495,10 +545,10 @@ export const makeRouter = <
|
|
|
495
545
|
) => Effect.Effect<
|
|
496
546
|
Effect.Success<ReturnType<THandlers[K]["handler"]>>,
|
|
497
547
|
| Effect.Error<ReturnType<THandlers[K]["handler"]>>
|
|
498
|
-
|
|
|
548
|
+
| SafeGetEffectError<ResourceRequestContextMap, Resource[K]["config"]>,
|
|
499
549
|
Exclude<
|
|
500
550
|
Effect.Services<ReturnType<THandlers[K]["handler"]>>,
|
|
501
|
-
|
|
551
|
+
ResourceContextProviderA | SafeGetEffectContext<ResourceRequestContextMap, Resource[K]["config"]>
|
|
502
552
|
>
|
|
503
553
|
>
|
|
504
554
|
]
|
|
@@ -528,12 +578,12 @@ export const makeRouter = <
|
|
|
528
578
|
error: resource.error,
|
|
529
579
|
stream: isStream
|
|
530
580
|
}))
|
|
531
|
-
.annotate(
|
|
581
|
+
.annotate(mw.requestContext, resource.config ?? {})
|
|
532
582
|
.annotate(RequestTypeAnnotation, resource.type)
|
|
533
583
|
})
|
|
534
584
|
)
|
|
535
585
|
.prefix(`${meta.moduleName}.`)
|
|
536
|
-
.middleware(
|
|
586
|
+
.middleware(mw)
|
|
537
587
|
|
|
538
588
|
const rpc = rpcs
|
|
539
589
|
.toLayer(Effect.gen(function*() {
|
|
@@ -561,7 +611,7 @@ export const makeRouter = <
|
|
|
561
611
|
const routes = layer.pipe(
|
|
562
612
|
Layer.provide([
|
|
563
613
|
dependenciesL,
|
|
564
|
-
|
|
614
|
+
(middlewareLive ?? Layer.empty) as Layer.Layer<any, any, any>
|
|
565
615
|
])
|
|
566
616
|
)
|
|
567
617
|
|
|
@@ -603,9 +653,9 @@ export const makeRouter = <
|
|
|
603
653
|
never,
|
|
604
654
|
| MakeErrors<Make>
|
|
605
655
|
| MakeDepsE<Make>
|
|
606
|
-
| Layer.Error<
|
|
656
|
+
| Layer.Error<ResourceMWDefault>,
|
|
607
657
|
| MakeDepsIn<Make>
|
|
608
|
-
| Layer.Services<
|
|
658
|
+
| Layer.Services<ResourceMWDefault>
|
|
609
659
|
| Exclude<
|
|
610
660
|
MakeContext<Make>,
|
|
611
661
|
MakeDepsOut<Make>
|
|
@@ -632,9 +682,9 @@ export const makeRouter = <
|
|
|
632
682
|
never,
|
|
633
683
|
| MakeErrors<Make>
|
|
634
684
|
| MakeDepsE<Make>
|
|
635
|
-
| Layer.Error<
|
|
685
|
+
| Layer.Error<ResourceMWDefault>,
|
|
636
686
|
| MakeDepsIn<Make>
|
|
637
|
-
| Layer.Services<
|
|
687
|
+
| Layer.Services<ResourceMWDefault>
|
|
638
688
|
| Exclude<
|
|
639
689
|
MakeContext<Make>,
|
|
640
690
|
MakeDepsOut<Make>
|
package/test/controller.test.ts
CHANGED
|
@@ -187,13 +187,6 @@ const middlewareQuater = MiddlewareMaker
|
|
|
187
187
|
|
|
188
188
|
expectTypeOf(middleware["Service"]).toEqualTypeOf<typeof middlewareQuater["Service"]>()
|
|
189
189
|
|
|
190
|
-
const middleware2 = MiddlewareMaker
|
|
191
|
-
.Tag()("middleware", RequestContextMap)
|
|
192
|
-
.middleware(MyContextProvider)
|
|
193
|
-
.middleware(RequireRoles, Test)
|
|
194
|
-
.middleware(AllowAnonymous)
|
|
195
|
-
.middleware(...DefaultGenericMiddlewares, BogusMiddleware, MyContextProvider2)
|
|
196
|
-
|
|
197
190
|
export const middleware3 = MiddlewareMaker
|
|
198
191
|
.Tag()("middleware", RequestContextMap)
|
|
199
192
|
.middleware(...genericMiddlewares)
|
|
@@ -201,7 +194,7 @@ export const middleware3 = MiddlewareMaker
|
|
|
201
194
|
.middleware(Test)
|
|
202
195
|
.middleware(BogusMiddleware)
|
|
203
196
|
|
|
204
|
-
export const { TaggedRequestFor } = makeRpcClient(
|
|
197
|
+
export const { TaggedRequestFor } = makeRpcClient(middleware)
|
|
205
198
|
const Req = TaggedRequestFor("Something")
|
|
206
199
|
const Command = Req.Command
|
|
207
200
|
const Query = Req.Query
|
|
@@ -286,13 +279,9 @@ export class SomethingService2 extends Context.Service<SomethingService2>()(
|
|
|
286
279
|
static Default = Layer.effect(this, this.make)
|
|
287
280
|
}
|
|
288
281
|
|
|
289
|
-
export const { Router, matchAll } = makeRouter(
|
|
290
|
-
middleware
|
|
291
|
-
)
|
|
282
|
+
export const { Router, matchAll } = makeRouter(middleware.Default)
|
|
292
283
|
|
|
293
|
-
export const r2 = makeRouter(
|
|
294
|
-
Object.assign(middleware2, { Default: middleware2.layer.pipe(Layer.provide([...MiddlewaresLive])) })
|
|
295
|
-
)
|
|
284
|
+
export const r2 = makeRouter(middleware.Default)
|
|
296
285
|
|
|
297
286
|
const router = Router(Something)({
|
|
298
287
|
dependencies: [
|
|
@@ -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;AAE7F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAoC,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,OAAO,EAAE,cAAc,EAAsB,YAAY,EAAqB,YAAY,EAAoB,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAY,MAAM,eAAe,CAAA;;
|
|
1
|
+
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,7 @@ class mw extends MiddlewareMaker
|
|
|
55
55
|
)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
const { TaggedRequestFor } = makeRpcClient(
|
|
58
|
+
const { TaggedRequestFor } = makeRpcClient(mw)
|
|
59
59
|
const Req = TaggedRequestFor("GenRouter")
|
|
60
60
|
|
|
61
61
|
class GetThing extends Req.Query<GetThing>()("GetThing", { id: S.String }, {
|
|
@@ -66,7 +66,7 @@ class DoThing extends Req.Command<DoThing>()("DoThing", { id: S.String }, { succ
|
|
|
66
66
|
|
|
67
67
|
const Resource = { GetThing, DoThing }
|
|
68
68
|
|
|
69
|
-
const { Router, matchAll } = makeRouter(mw)
|
|
69
|
+
const { Router, matchAll } = makeRouter(mw.Default)
|
|
70
70
|
|
|
71
71
|
class ThingRepo extends Context.Service<ThingRepo>()("ThingRepo", {
|
|
72
72
|
make: Effect.succeed({ get: (id: string) => Effect.succeed(id + "!") })
|
|
@@ -40,17 +40,19 @@ class AppMiddleware extends MiddlewareMaker
|
|
|
40
40
|
.middleware(...DefaultGenericMiddlewares)
|
|
41
41
|
{
|
|
42
42
|
static Default = this.layer.pipe(
|
|
43
|
-
Layer.provide(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
Layer.provide(
|
|
44
|
+
[
|
|
45
|
+
RequireRolesLive.pipe(Layer.provide(SomeService.Default)),
|
|
46
|
+
AllowAnonymousLive,
|
|
47
|
+
TestLive,
|
|
48
|
+
SomeElseMiddlewareLive,
|
|
49
|
+
DefaultGenericMiddlewaresLive
|
|
50
|
+
] as const
|
|
51
|
+
)
|
|
50
52
|
)
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
const { Router, matchAll } = makeRouter(AppMiddleware)
|
|
55
|
+
const { Router, matchAll } = makeRouter(AppMiddleware.Default)
|
|
54
56
|
|
|
55
57
|
// ---------------------------------------------------------------------------
|
|
56
58
|
// Resources
|
|
@@ -60,7 +62,7 @@ const DynamicKey: Invalidation.InvalidationKey = ["dynamic", "key"]
|
|
|
60
62
|
const ExtraKey: Invalidation.InvalidationKey = ["extra", "key"]
|
|
61
63
|
const StreamKey: Invalidation.InvalidationKey = ["stream", "key"]
|
|
62
64
|
|
|
63
|
-
const { TaggedRequestFor } = makeRpcClient(
|
|
65
|
+
const { TaggedRequestFor } = makeRpcClient(AppMiddleware)
|
|
64
66
|
const Req = TaggedRequestFor("Inv")
|
|
65
67
|
|
|
66
68
|
class CmdBoom extends TaggedErrorClass<CmdBoom>()("CmdBoom", { reason: S.String }) {}
|
|
@@ -171,7 +173,7 @@ const withCapture = <A, E, R>(eff: Effect.Effect<A, E, R>) =>
|
|
|
171
173
|
it.live(
|
|
172
174
|
"command with no invalidation keys: caller sees raw payload, no keys forwarded",
|
|
173
175
|
Effect.fnUntraced(function*() {
|
|
174
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
176
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(InvRsc)
|
|
175
177
|
const { result, keys } = yield* withCapture(client.DoNothing.handler())
|
|
176
178
|
expect(Exit.isSuccess(result)).toBe(true)
|
|
177
179
|
expect(keys).toStrictEqual([])
|
|
@@ -182,7 +184,7 @@ it.live(
|
|
|
182
184
|
it.live(
|
|
183
185
|
"command with dynamic InvalidationSet.use: payload + key forwarded",
|
|
184
186
|
Effect.fnUntraced(function*() {
|
|
185
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
187
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(InvRsc)
|
|
186
188
|
const { result, keys } = yield* withCapture(client.DoWithDynamicKey.handler())
|
|
187
189
|
expect(Exit.isSuccess(result) && result.value).toBe("done")
|
|
188
190
|
expect(keys).toStrictEqual([DynamicKey])
|
|
@@ -193,7 +195,7 @@ it.live(
|
|
|
193
195
|
it.live(
|
|
194
196
|
"command accumulating multiple dynamic keys: all keys forwarded in order",
|
|
195
197
|
Effect.fnUntraced(function*() {
|
|
196
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
198
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(InvRsc)
|
|
197
199
|
const { result, keys } = yield* withCapture(client.DoWithBothKeys.handler())
|
|
198
200
|
expect(Exit.isSuccess(result) && result.value).toBe(99)
|
|
199
201
|
expect(keys).toStrictEqual([DynamicKey, ExtraKey])
|
|
@@ -204,7 +206,7 @@ it.live(
|
|
|
204
206
|
it.live(
|
|
205
207
|
"per-request isolation: each command call starts with a fresh InvalidationSet",
|
|
206
208
|
Effect.fnUntraced(function*() {
|
|
207
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
209
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(InvRsc)
|
|
208
210
|
const r1 = yield* withCapture(client.DoWithDynamicKey.handler())
|
|
209
211
|
const r2 = yield* withCapture(client.DoWithDynamicKey.handler())
|
|
210
212
|
// Each call must have exactly one key — no accumulation across calls
|
|
@@ -217,7 +219,7 @@ it.live(
|
|
|
217
219
|
it.live(
|
|
218
220
|
"command failure (V2): keys accumulated before fail still reach the client; original error re-thrown",
|
|
219
221
|
Effect.fnUntraced(function*() {
|
|
220
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
222
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(InvRsc)
|
|
221
223
|
const { result, keys } = yield* withCapture(client.DoAndFail.handler())
|
|
222
224
|
expect(Exit.isFailure(result)).toBe(true)
|
|
223
225
|
if (Exit.isFailure(result)) {
|
|
@@ -233,7 +235,7 @@ it.live(
|
|
|
233
235
|
it.live(
|
|
234
236
|
"stream: per-chunk metadata drains keys mid-stream",
|
|
235
237
|
Effect.fnUntraced(function*() {
|
|
236
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
238
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(InvRsc)
|
|
237
239
|
const ref = yield* Ref.make<ReadonlyArray<Invalidation.InvalidationKey>>([])
|
|
238
240
|
const svc = makeInvalidationKeysService(ref)
|
|
239
241
|
const values = yield* Stream.runCollect(client.StreamWithKey.handler()).pipe(
|
|
@@ -37,23 +37,25 @@ class AppMiddleware extends MiddlewareMaker
|
|
|
37
37
|
.middleware(...DefaultGenericMiddlewares)
|
|
38
38
|
{
|
|
39
39
|
static Default = this.layer.pipe(
|
|
40
|
-
Layer.provide(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
Layer.provide(
|
|
41
|
+
[
|
|
42
|
+
RequireRolesLive.pipe(Layer.provide(SomeService.Default)),
|
|
43
|
+
AllowAnonymousLive,
|
|
44
|
+
TestLive,
|
|
45
|
+
SomeElseMiddlewareLive,
|
|
46
|
+
DefaultGenericMiddlewaresLive
|
|
47
|
+
] as const
|
|
48
|
+
)
|
|
47
49
|
)
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
const { Router, matchAll } = makeRouter(AppMiddleware)
|
|
52
|
+
const { Router, matchAll } = makeRouter(AppMiddleware.Default)
|
|
51
53
|
|
|
52
54
|
// ---------------------------------------------------------------------------
|
|
53
55
|
// Resources — Stream with and without payload.
|
|
54
56
|
// ---------------------------------------------------------------------------
|
|
55
57
|
|
|
56
|
-
const { TaggedRequestFor } = makeRpcClient(
|
|
58
|
+
const { TaggedRequestFor } = makeRpcClient(AppMiddleware)
|
|
57
59
|
const Req = TaggedRequestFor("Streamy")
|
|
58
60
|
|
|
59
61
|
class StreamTicks extends Req.Command<StreamTicks>()("StreamTicks", {}, {
|
|
@@ -78,13 +80,6 @@ class StreamRealtime extends Req.Command<StreamRealtime>()("StreamRealtime", {},
|
|
|
78
80
|
|
|
79
81
|
class StreamBoom extends TaggedErrorClass<StreamBoom>()("StreamBoom", { reason: S.String }) {}
|
|
80
82
|
|
|
81
|
-
class StreamFailEffect extends Req.Command<StreamFailEffect>()("StreamFailEffect", {}, {
|
|
82
|
-
stream: true,
|
|
83
|
-
allowAnonymous: true,
|
|
84
|
-
success: S.Number,
|
|
85
|
-
error: StreamBoom
|
|
86
|
-
}) {}
|
|
87
|
-
|
|
88
83
|
class StreamFailStream extends Req.Command<StreamFailStream>()("StreamFailStream", {}, {
|
|
89
84
|
stream: true,
|
|
90
85
|
allowAnonymous: true,
|
|
@@ -116,7 +111,6 @@ const StreamyRsc = {
|
|
|
116
111
|
StreamTicks,
|
|
117
112
|
StreamCountTo,
|
|
118
113
|
StreamRealtime,
|
|
119
|
-
StreamFailEffect,
|
|
120
114
|
StreamFailStream,
|
|
121
115
|
StreamNoSuccess,
|
|
122
116
|
StreamRequiresAuth,
|
|
@@ -144,9 +138,6 @@ const router = Router(StreamyRsc)({
|
|
|
144
138
|
Stream.fromIterable([1, 2, 3]).pipe(
|
|
145
139
|
Stream.mapEffect((n) => Effect.sleep("100 millis").pipe(Effect.as(n)))
|
|
146
140
|
),
|
|
147
|
-
// returning Effect.fail from a stream handler should surface as a failing
|
|
148
|
-
// stream on the client (not a protocol error)
|
|
149
|
-
StreamFailEffect: () => Effect.fail(new StreamBoom({ reason: "from-effect" })),
|
|
150
141
|
StreamFailStream: () => Stream.fail(new StreamBoom({ reason: "from-stream" })),
|
|
151
142
|
StreamNoSuccess: () => Stream.empty,
|
|
152
143
|
// handlers below are unreachable when middleware-auth fails; bodies exist
|
|
@@ -200,7 +191,7 @@ const TestLayer = Layer.mergeAll(ServerLayer, ClientLayer)
|
|
|
200
191
|
it.live(
|
|
201
192
|
"stream resource without input: ApiClientFactory client emits all values",
|
|
202
193
|
Effect.fnUntraced(function*() {
|
|
203
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
194
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
204
195
|
const values = yield* Stream.runCollect(client.StreamTicks.handler())
|
|
205
196
|
expect(values).toStrictEqual([10, 20, 30])
|
|
206
197
|
}, Effect.provide(TestLayer)),
|
|
@@ -210,7 +201,7 @@ it.live(
|
|
|
210
201
|
it.live(
|
|
211
202
|
"stream resource with input: payload drives the emitted values",
|
|
212
203
|
Effect.fnUntraced(function*() {
|
|
213
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
204
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
214
205
|
const values = yield* Stream.runCollect(client.StreamCountTo.handler({ to: 4 }))
|
|
215
206
|
expect(values).toStrictEqual([1, 2, 3, 4])
|
|
216
207
|
}, Effect.provide(TestLayer)),
|
|
@@ -220,7 +211,7 @@ it.live(
|
|
|
220
211
|
it.live(
|
|
221
212
|
"stream resource is delivered element-by-element in real time (not batched)",
|
|
222
213
|
Effect.fnUntraced(function*() {
|
|
223
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
214
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
224
215
|
const start = Date.now()
|
|
225
216
|
const arrivals = yield* Stream.runCollect(
|
|
226
217
|
client.StreamRealtime.handler().pipe(
|
|
@@ -241,26 +232,10 @@ it.live(
|
|
|
241
232
|
{ timeout: 10_000 }
|
|
242
233
|
)
|
|
243
234
|
|
|
244
|
-
it.live(
|
|
245
|
-
"stream handler returning Effect.fail surfaces as failing stream on client",
|
|
246
|
-
Effect.fnUntraced(function*() {
|
|
247
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty, { middleware: AppMiddleware })(StreamyRsc)
|
|
248
|
-
const exit = yield* Stream.runCollect(client.StreamFailEffect.handler()).pipe(Effect.exit)
|
|
249
|
-
expect(Exit.isFailure(exit)).toBe(true)
|
|
250
|
-
if (Exit.isFailure(exit)) {
|
|
251
|
-
const failures = (exit.cause as any).reasons as ReadonlyArray<{ _tag: "Fail"; error: StreamBoom }>
|
|
252
|
-
expect(failures.length).toBeGreaterThan(0)
|
|
253
|
-
expect(failures[0]!.error._tag).toBe("StreamBoom")
|
|
254
|
-
expect(failures[0]!.error.reason).toBe("from-effect")
|
|
255
|
-
}
|
|
256
|
-
}, Effect.provide(TestLayer)),
|
|
257
|
-
{ timeout: 10_000 }
|
|
258
|
-
)
|
|
259
|
-
|
|
260
235
|
it.live(
|
|
261
236
|
"stream handler returning Stream.fail surfaces as failing stream on client",
|
|
262
237
|
Effect.fnUntraced(function*() {
|
|
263
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
238
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
264
239
|
const exit = yield* Stream.runCollect(client.StreamFailStream.handler()).pipe(Effect.exit)
|
|
265
240
|
expect(Exit.isFailure(exit)).toBe(true)
|
|
266
241
|
if (Exit.isFailure(exit)) {
|
|
@@ -276,7 +251,7 @@ it.live(
|
|
|
276
251
|
it.live(
|
|
277
252
|
"stream resource without `success` exposes handler as a Stream on the client",
|
|
278
253
|
Effect.fnUntraced(function*() {
|
|
279
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
254
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
280
255
|
const exit = yield* Stream.runCollect(client.StreamNoSuccess.handler()).pipe(Effect.exit)
|
|
281
256
|
expect(Exit.isSuccess(exit)).toBe(true)
|
|
282
257
|
}, Effect.provide(TestLayer)),
|
|
@@ -297,7 +272,7 @@ const expectNotLoggedIn = (exit: Exit.Exit<unknown, unknown>) => {
|
|
|
297
272
|
it.live(
|
|
298
273
|
"stream resource: middleware-emitted NotLoggedInError surfaces cleanly on the client",
|
|
299
274
|
Effect.fnUntraced(function*() {
|
|
300
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
275
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
301
276
|
const exit = yield* Stream.runCollect(client.StreamRequiresAuth.handler()).pipe(Effect.exit)
|
|
302
277
|
expectNotLoggedIn(exit)
|
|
303
278
|
}, Effect.provide(TestLayer)),
|
|
@@ -307,7 +282,7 @@ it.live(
|
|
|
307
282
|
it.live(
|
|
308
283
|
"command resource: middleware-emitted NotLoggedInError surfaces cleanly on the client",
|
|
309
284
|
Effect.fnUntraced(function*() {
|
|
310
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
285
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
311
286
|
const exit = yield* client.CommandRequiresAuth.handler().pipe(Effect.exit)
|
|
312
287
|
expectNotLoggedIn(exit)
|
|
313
288
|
}, Effect.provide(TestLayer)),
|
|
@@ -317,7 +292,7 @@ it.live(
|
|
|
317
292
|
it.live(
|
|
318
293
|
"query resource: middleware-emitted NotLoggedInError surfaces cleanly on the client",
|
|
319
294
|
Effect.fnUntraced(function*() {
|
|
320
|
-
const client = yield* ApiClientFactory.makeFor(Layer.empty
|
|
295
|
+
const client = yield* ApiClientFactory.makeFor(Layer.empty)(StreamyRsc)
|
|
321
296
|
const exit = yield* client.QueryRequiresAuth.handler().pipe(Effect.exit)
|
|
322
297
|
expectNotLoggedIn(exit)
|
|
323
298
|
}, Effect.provide(TestLayer)),
|