effect-app 3.0.1 → 3.0.2
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 +6 -0
- package/dist/client/req.d.ts +4 -0
- package/dist/client/req.d.ts.map +1 -1
- package/dist/client/req.js +1 -1
- package/dist/rpc/RpcMiddleware.d.ts +29 -57
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +3 -1
- package/dist/rpc/RpcMiddlewareX.d.ts +10 -4
- package/dist/rpc/RpcMiddlewareX.d.ts.map +1 -1
- package/dist/rpc/RpcMiddlewareX.js +1 -1
- package/dist/rpc/generic-middleware.d.ts +5 -9
- package/dist/rpc/generic-middleware.d.ts.map +1 -1
- package/dist/rpc/generic-middleware.js +9 -52
- package/dist/rpc/middleware-native.d.ts +9 -7
- package/dist/rpc/middleware-native.d.ts.map +1 -1
- package/dist/rpc/middleware-native.js +5 -7
- package/package.json +1 -1
- package/src/client/req.ts +6 -0
- package/src/rpc/RpcMiddleware.ts +45 -75
- package/src/rpc/RpcMiddlewareX.ts +15 -20
- package/src/rpc/generic-middleware.ts +15 -85
- package/src/rpc/middleware-native.ts +4 -8
package/CHANGELOG.md
CHANGED
package/dist/client/req.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { type Tag } from "../Context.js";
|
|
2
2
|
import { type Context, type NonEmptyReadonlyArray, S } from "../internal/lib.js";
|
|
3
3
|
import { type Values } from "../utils.js";
|
|
4
|
+
/** @deprecated just use Service Identifier Union */
|
|
4
5
|
export type ContextTagArray = NonEmptyReadonlyArray<Context.Tag<any, any>>;
|
|
6
|
+
/** @deprecated just use Service Identifier Union */
|
|
5
7
|
export declare namespace ContextTagArray {
|
|
6
8
|
type Identifier<A> = A extends ContextTagArray ? Tag.Identifier<A[number]> : never;
|
|
7
9
|
type Service<A> = A extends ContextTagArray ? Tag.Service<A[number]> : never;
|
|
8
10
|
}
|
|
11
|
+
/** @deprecated just use Service Identifier Union */
|
|
9
12
|
export type AnyService = Context.Tag<any, any> | ContextTagArray;
|
|
13
|
+
/** @deprecated just use Service Identifier Union */
|
|
10
14
|
export declare namespace AnyService {
|
|
11
15
|
type Bla<A> = A extends ContextTagArray ? Context.Context<ContextTagArray.Identifier<A>> : A extends Context.Tag<any, any> ? Tag.Service<A> : never;
|
|
12
16
|
type Identifier<A> = A extends ContextTagArray ? ContextTagArray.Identifier<A> : A extends Context.Tag<any, any> ? Tag.Identifier<A> : never;
|
package/dist/client/req.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"req.d.ts","sourceRoot":"","sources":["../../src/client/req.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,qBAAqB,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"req.d.ts","sourceRoot":"","sources":["../../src/client/req.ts"],"names":[],"mappings":"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"}
|
package/dist/client/req.js
CHANGED
|
@@ -53,4 +53,4 @@ export const makeRpcClient = (errors, generalErrors) => {
|
|
|
53
53
|
TaggedRequest
|
|
54
54
|
};
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9yZXEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCx1REFBdUQ7QUFHdkQsT0FBTyxFQUE0QyxDQUFDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQTJCaEYsTUFBTSxLQUFXLGFBQWEsQ0E0RDdCO0FBNURELFdBQWlCLGFBQWE7SUFpQ2Ysa0JBQUksR0FBRyxDQUNsQixPQUFnQixFQUNoQixLQUFRLEVBQ21CLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLE9BQU87UUFDUCxLQUFLO1FBQ0wsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFDLENBQUE7SUFFVywwQkFBWSxHQUFHLENBQzFCLE9BQWdCLEVBQ2hCLEtBQVEsRUFDYyxFQUFFLENBQUMsQ0FBQztRQUMxQixPQUFPO1FBQ1AsS0FBSztRQUNMLGlCQUFpQixFQUFFLEtBQUs7S0FDekIsQ0FBQyxDQUFBO0lBRVcsd0JBQVUsR0FBRyxDQUN4QixPQUFnQixFQUNoQixLQUFRLEVBQ1IsaUJBQW9CLEVBQ0csRUFBRSxDQUFDLENBQUM7UUFDM0IsT0FBTztRQUNQLEtBQUs7UUFDTCxpQkFBaUI7S0FDbEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxFQTVEZ0IsYUFBYSxLQUFiLGFBQWEsUUE0RDdCO0FBcURELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBTSxFQUFFLENBQWEsRUFBRSxFQUFFLENBQ3RDLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFrQjNHOztHQUVHO0FBQ0gsTUFBTSxTQUFTLEdBQW1CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFNUcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBSzNCLE1BQXlFLEVBQ3pFLGFBQTZCLEVBQzdCLEVBQUU7SUFPRixTQUFTLGFBQWE7UUF1RXBCLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE9BQU8sQ0FBQyxDQUNOLEdBQVEsRUFDUixNQUFjLEVBQ2QsTUFBVSxFQUNWLEVBQUU7WUFDRiwyRUFBMkU7WUFDM0UsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDdkMsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsOENBQThDO2dCQUM5QyxPQUFPLEVBQUUsS0FBSyxDQUNaLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUNwRyxDQUFDLEdBQUcsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDakQ7Z0JBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPO29CQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO3dCQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTzt3QkFDdEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLFNBQVM7YUFDZCxDQUFDLENBQUE7WUFDRixPQUFPLEtBQU0sU0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFTO2dCQUMxRCxZQUFZLE9BQVksRUFBRSxvQkFBeUIsSUFBSTtvQkFDckQsNkRBQTZEO29CQUM3RCxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7Z0JBQ25DLENBQUM7YUFDRixDQUFBO1FBQ0gsQ0FBQyxDQUFRLENBQUE7SUFDWCxDQUFDO0lBRUQsT0FBTztRQUNMLGFBQWE7S0FDZCxDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0=
|
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
import { type Rpc } from "@effect/rpc";
|
|
2
2
|
import { type SuccessValue, type TypeId } from "@effect/rpc/RpcMiddleware";
|
|
3
|
-
import { type Context, type Effect, type NonEmptyReadonlyArray, type
|
|
4
|
-
import type {
|
|
3
|
+
import { type Context, type Effect, type NonEmptyReadonlyArray, type S, type Schema, type Scope } from "effect-app";
|
|
4
|
+
import type { ContextTagArray, RPCContextMap } from "effect-app/client/req";
|
|
5
5
|
import { type HttpHeaders } from "effect-app/http";
|
|
6
|
-
export interface RpcMiddleware<Provides, E, Requires> {
|
|
7
|
-
(options: {
|
|
8
|
-
readonly clientId: number;
|
|
9
|
-
readonly rpc: Rpc.AnyWithProps;
|
|
10
|
-
readonly payload: unknown;
|
|
11
|
-
readonly headers: HttpHeaders.Headers;
|
|
12
|
-
}): Effect.Effect<Provides, E, Scope.Scope | Requires>;
|
|
13
|
-
}
|
|
14
6
|
export interface RpcMiddlewareWrap<Provides, E, Requires> {
|
|
15
|
-
(options: {
|
|
7
|
+
(effect: Effect.Effect<SuccessValue, E, Provides | Scope.Scope | Requires>, options: {
|
|
16
8
|
readonly clientId: number;
|
|
17
9
|
readonly rpc: Rpc.AnyWithProps;
|
|
18
10
|
readonly payload: unknown;
|
|
19
11
|
readonly headers: HttpHeaders.Headers;
|
|
20
|
-
readonly next: Effect.Effect<SuccessValue, E, Provides | Scope.Scope | Requires>;
|
|
21
12
|
}): Effect.Effect<SuccessValue, E, Scope.Scope | Requires>;
|
|
22
13
|
}
|
|
23
14
|
export type RpcOptionsOriginal = {
|
|
24
|
-
readonly wrap?: boolean;
|
|
25
15
|
readonly optional?: boolean;
|
|
26
16
|
readonly failure?: Schema.Schema.All;
|
|
27
|
-
readonly provides?: AnyService;
|
|
28
17
|
readonly requiredForClient?: boolean;
|
|
29
18
|
};
|
|
30
19
|
export type RpcDynamic<Key extends string, A extends RPCContextMap.Any> = {
|
|
@@ -43,30 +32,21 @@ export interface RpcOptionsDynamic<Key extends string, A extends RPCContextMap.A
|
|
|
43
32
|
}
|
|
44
33
|
export type Dynamic<Options> = Options extends RpcOptionsDynamic<any, any> ? true : false;
|
|
45
34
|
export interface RpcMiddlewareDynamicWrap<E, R, _Config> {
|
|
46
|
-
(options: {
|
|
47
|
-
readonly next: Effect.Effect<SuccessValue, E, Scope.Scope | R>;
|
|
35
|
+
(effect: Effect.Effect<SuccessValue, E, Scope.Scope | R>, options: {
|
|
48
36
|
readonly clientId: number;
|
|
49
37
|
readonly rpc: Rpc.AnyWithProps;
|
|
50
38
|
readonly payload: unknown;
|
|
51
39
|
readonly headers: HttpHeaders.Headers;
|
|
52
40
|
}): Effect.Effect<SuccessValue, E, Scope.Scope | R>;
|
|
53
41
|
}
|
|
54
|
-
export interface RpcMiddlewareDynamicNormal<A, E, R, _Config> {
|
|
55
|
-
(options: {
|
|
56
|
-
readonly clientId: number;
|
|
57
|
-
readonly rpc: Rpc.AnyWithProps;
|
|
58
|
-
readonly payload: unknown;
|
|
59
|
-
readonly headers: HttpHeaders.Headers;
|
|
60
|
-
}): Effect.Effect<Option.Option<A>, E, Scope.Scope | R>;
|
|
61
|
-
}
|
|
62
42
|
export interface TagClassAny extends Context.Tag<any, any> {
|
|
63
43
|
readonly [TypeId]: TypeId;
|
|
64
44
|
readonly optional: boolean;
|
|
65
|
-
readonly provides
|
|
66
|
-
readonly requires
|
|
45
|
+
readonly provides: any;
|
|
46
|
+
readonly requires: any;
|
|
67
47
|
readonly failure: Schema.Schema.All;
|
|
68
48
|
readonly requiredForClient: boolean;
|
|
69
|
-
readonly wrap:
|
|
49
|
+
readonly wrap: true;
|
|
70
50
|
readonly dynamic?: RpcDynamic<any, any> | undefined;
|
|
71
51
|
readonly dependsOn?: NonEmptyReadonlyArray<AnyDynamic> | undefined;
|
|
72
52
|
}
|
|
@@ -91,19 +71,6 @@ export declare namespace TagClass {
|
|
|
91
71
|
} ? Context.Tag.Identifier<Options["requires"]> : Options extends {
|
|
92
72
|
readonly requires: ContextTagArray;
|
|
93
73
|
} ? ContextTagArray.Identifier<Options["requires"]> : never;
|
|
94
|
-
/**
|
|
95
|
-
* @since 1.0.0
|
|
96
|
-
* @category models
|
|
97
|
-
*/
|
|
98
|
-
type Service<Options> = Options extends {
|
|
99
|
-
readonly provides: Context.Tag<any, any>;
|
|
100
|
-
} ? Context.Tag.Service<Options["provides"]> : Options extends {
|
|
101
|
-
readonly dynamic: RpcDynamic<any, infer A>;
|
|
102
|
-
} ? Options extends {
|
|
103
|
-
wrap: true;
|
|
104
|
-
} ? void : AnyService.Bla<A["service"]> : Options extends {
|
|
105
|
-
readonly provides: ContextTagArray;
|
|
106
|
-
} ? Context.Context<ContextTagArray.Identifier<Options["provides"]>> : void;
|
|
107
74
|
/**
|
|
108
75
|
* @since 1.0.0
|
|
109
76
|
* @category models
|
|
@@ -157,32 +124,37 @@ export declare namespace TagClass {
|
|
|
157
124
|
* @since 1.0.0
|
|
158
125
|
* @category models
|
|
159
126
|
*/
|
|
160
|
-
interface Base<Self, Name extends string, Options, Service
|
|
127
|
+
interface Base<Self, Name extends string, Options, Service, Config extends {
|
|
128
|
+
requires?: any;
|
|
129
|
+
provides?: any;
|
|
130
|
+
}> extends Context.Tag<Self, Service> {
|
|
161
131
|
new (_: never): Context.TagClassShape<Name, Service>;
|
|
162
132
|
readonly [TypeId]: TypeId;
|
|
163
133
|
readonly optional: Optional<Options>;
|
|
164
134
|
readonly failure: FailureSchema<Options>;
|
|
165
|
-
readonly provides:
|
|
166
|
-
|
|
167
|
-
} ? Options["provides"] : Options extends {
|
|
168
|
-
readonly provides: ContextTagArray;
|
|
169
|
-
} ? Options["provides"] : undefined;
|
|
170
|
-
readonly requires: Options extends {
|
|
171
|
-
readonly requires: Context.Tag<any, any>;
|
|
172
|
-
} ? Options["requires"] : Options extends {
|
|
173
|
-
readonly requires: ContextTagArray;
|
|
174
|
-
} ? Options["requires"] : undefined;
|
|
135
|
+
readonly provides: "provides" extends keyof Config ? Config["provides"] : never;
|
|
136
|
+
readonly requires: "requires" extends keyof Config ? Config["requires"] : never;
|
|
175
137
|
readonly dynamic: Options extends RpcOptionsDynamic<any, any> ? Options["dynamic"] : undefined;
|
|
176
138
|
readonly dependsOn: Options extends DependsOn ? Options["dependsOn"] : undefined;
|
|
177
139
|
readonly requiredForClient: RequiredForClient<Options>;
|
|
178
|
-
readonly wrap:
|
|
140
|
+
readonly wrap: true;
|
|
179
141
|
}
|
|
180
142
|
}
|
|
181
|
-
export interface TagClass<Self, Name extends string, Options
|
|
182
|
-
|
|
183
|
-
|
|
143
|
+
export interface TagClass<Self, Name extends string, Options, Config extends {
|
|
144
|
+
requires?: any;
|
|
145
|
+
provides?: any;
|
|
146
|
+
} = {
|
|
147
|
+
requires: never;
|
|
148
|
+
provides: never;
|
|
149
|
+
}> extends TagClass.Base<Self, Name, Options, Options extends RpcOptionsDynamic<any, any> ? RpcMiddlewareDynamicWrap<TagClass.FailureService<Options>, "requires" extends keyof Config ? Config["requires"] : never, {
|
|
184
150
|
[K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"];
|
|
185
|
-
}> :
|
|
151
|
+
}> : RpcMiddlewareWrap<"provides" extends keyof Config ? Config["provides"] : never, TagClass.Failure<Options>, "requires" extends keyof Config ? Config["requires"] : never>, Config> {
|
|
186
152
|
}
|
|
187
|
-
export declare const Tag: <Self
|
|
153
|
+
export declare const Tag: <Self, Config extends {
|
|
154
|
+
requires?: any;
|
|
155
|
+
provides?: any;
|
|
156
|
+
} = {
|
|
157
|
+
requires: never;
|
|
158
|
+
provides: never;
|
|
159
|
+
}>() => <const Name extends string, const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>>(id: Name, options?: Options | undefined) => TagClass<Self, Name, Options, Config>;
|
|
188
160
|
//# sourceMappingURL=RpcMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcMiddleware.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,GAAG,EAAiB,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,qBAAqB,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"RpcMiddleware.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
import { RpcMiddleware } from "@effect/rpc";
|
|
5
5
|
import { Unify } from "effect-app";
|
|
6
6
|
export const Tag = () => (id, options) => class extends RpcMiddleware.Tag()(id, options) {
|
|
7
|
+
static requires;
|
|
8
|
+
static provides;
|
|
7
9
|
static dynamic = options && "dynamic" in options ? options.dynamic : undefined;
|
|
8
10
|
static dependsOn = options && "dependsOn" in options ? options.dependsOn : undefined;
|
|
9
11
|
static [Unify.typeSymbol];
|
|
10
12
|
static [Unify.unifySymbol];
|
|
11
13
|
static [Unify.ignoreSymbol];
|
|
12
14
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjTWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ycGMvUnBjTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUN2RCxPQUFPLEVBQVksYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXJELE9BQU8sRUFBMEYsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBb00xSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FNZixFQUFFLENBQ04sQ0FJRSxFQUFRLEVBQ1IsT0FBNkIsRUFDVSxFQUFFLENBQ3pDLEtBQU0sU0FBUSxhQUFhLENBQUMsR0FBRyxFQUFRLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQztJQUNsRCxNQUFNLENBQVUsUUFBUSxDQUE4RDtJQUN0RixNQUFNLENBQW1CLFFBQVEsQ0FBOEQ7SUFDL0YsTUFBTSxDQUFVLE9BQU8sR0FBRyxPQUFPLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ3ZGLE1BQU0sQ0FBVSxTQUFTLEdBQUcsT0FBTyxJQUFJLFdBQVcsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUM3RixNQUFNLENBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQVU7SUFDNUMsTUFBTSxDQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUF3QjtJQUMzRCxNQUFNLENBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQWlCO0NBQy9DLENBQUEifQ==
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { type Effect, Layer, type NonEmptyReadonlyArray } from "effect-app";
|
|
2
2
|
import { type Service } from "effect/Effect";
|
|
3
|
-
import { type
|
|
3
|
+
import { type RpcMiddlewareDynamicWrap, type RpcMiddlewareWrap, type RpcOptionsDynamic, type RpcOptionsOriginal, type TagClass } from "./RpcMiddleware.js";
|
|
4
4
|
/**
|
|
5
5
|
* @deprecated - RPC groups are defined centrally and re-used between server and client,
|
|
6
6
|
* so layer implementation details should not be mixed.
|
|
7
7
|
*/
|
|
8
|
-
export declare const TagService: <Self
|
|
9
|
-
|
|
8
|
+
export declare const TagService: <Self, Config extends {
|
|
9
|
+
requires?: any;
|
|
10
|
+
provides?: any;
|
|
11
|
+
} = {
|
|
12
|
+
requires: never;
|
|
13
|
+
provides: never;
|
|
14
|
+
}>() => <const Name extends string, const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>>(id: Name, options?: Options | undefined) => <LayerOpts extends {
|
|
15
|
+
effect: Effect.Effect<Options extends RpcOptionsDynamic<any, any> ? RpcMiddlewareDynamicWrap<TagClass.FailureService<Options>, "requires" extends keyof Config ? Config["requires"] : never, { [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"]; }> : RpcMiddlewareWrap<"provides" extends keyof Config ? Config["provides"] : never, TagClass.Failure<Options>, "requires" extends keyof Config ? Config["requires"] : never>, any, any>;
|
|
10
16
|
dependencies?: NonEmptyReadonlyArray<Layer.Layer.Any>;
|
|
11
|
-
}>(opts: LayerOpts) => TagClass<Self, Name, Options> & {
|
|
17
|
+
}>(opts: LayerOpts) => TagClass<Self, Name, Options, Config> & {
|
|
12
18
|
Default: Layer.Layer<Self, (LayerOpts extends {
|
|
13
19
|
effect: Effect<infer _A, infer _E, infer _R>;
|
|
14
20
|
} ? _E : never) | Service.MakeDepsE<LayerOpts>, Exclude<LayerOpts extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcMiddlewareX.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcMiddlewareX.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,qBAAqB,EAAS,MAAM,YAAY,CAAA;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"RpcMiddlewareX.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcMiddlewareX.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,qBAAqB,EAAS,MAAM,YAAY,CAAA;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAO,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE/J;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,IAAI,EACJ,MAAM,SAAS;IACb,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,QAGxC,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,KAAK,CAAC,OAAO,SAAS,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAEtE,IAAI,IAAI,EACR,UAAU,OAAO,GAAG,SAAS,MAG7B,SAAS,SAAS;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,CACnB,OAAO,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,wBAAwB,CAClE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAChC,UAAU,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,EAC5D,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,GAAE,CAC3F,GACC,iBAAiB,CACjB,UAAU,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,EAC5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EACzB,UAAU,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAC7D,EACH,GAAG,EACH,GAAG,CACJ,CAAA;IACD,YAAY,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;CACtD,EACD,MAAM,SAAS,KAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG;IAC1D,OAAO,EAAE,KAAK,CAAC,KAAK,CAClB,IAAI,EACF,CAAC,SAAS,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;KAAE,GAAG,EAAE,GACtE,KAAK,CAAC,GACR,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAC5B,OAAO,CACP,SAAS,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,IAAE,EAAE,MAAM,IAAE,CAAC,CAAA;KAAE,GAAG,IAAE,GAAG,KAAK,EAC/E,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAC/B,GACC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAChC,CAAA;CASO,CAAA"}
|
|
@@ -13,4 +13,4 @@ export const TagService = () => (id, options) => (opts) => class extends Tag()(i
|
|
|
13
13
|
static [Unify.unifySymbol];
|
|
14
14
|
static [Unify.ignoreSymbol];
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjTWlkZGxld2FyZVguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnBjL1JwY01pZGRsZXdhcmVYLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCx3REFBd0Q7QUFDeEQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBZSxLQUFLLEVBQThCLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUdsRixPQUFPLEVBQTBHLEdBQUcsRUFBaUIsTUFBTSxvQkFBb0IsQ0FBQTtBQUUvSjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FNdEIsRUFBRSxDQUNOLENBSUUsRUFBUSxFQUNSLE9BQTZCLEVBQzdCLEVBQUUsQ0FDSixDQWtCRSxJQUFlLEVBWWYsRUFBRSxDQUNGLEtBQU0sU0FBUSxHQUFHLEVBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBYyxDQUFDO0lBQzNDLE1BQU0sQ0FBVSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQWEsQ0FBQyxDQUFDLElBQUksQ0FDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3pELENBQUE7SUFDRCxNQUFNLENBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQVU7SUFDNUMsTUFBTSxDQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUF3QjtJQUMzRCxNQUFNLENBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQWlCO0NBQy9DLENBQUEifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type RpcMiddleware } from "@effect/rpc";
|
|
2
2
|
import { Context, Effect, type Layer, type NonEmptyReadonlyArray, type S } from "effect-app";
|
|
3
|
-
import { type
|
|
3
|
+
import { type GetContextConfig, type RPCContextMap } from "effect-app/client";
|
|
4
4
|
import { type Tag } from "effect/Context";
|
|
5
5
|
import { type Simplify } from "effect/Types";
|
|
6
6
|
import { type MakeTags, type MiddlewareMakerId } from "./middleware-api.js";
|
|
@@ -38,18 +38,14 @@ export declare namespace MiddlewareMaker {
|
|
|
38
38
|
[K in keyof A]: Errors<A[K]>;
|
|
39
39
|
}[number] : Errors<A[number]>;
|
|
40
40
|
type Provided<T> = T extends TagClassAny ? T extends {
|
|
41
|
-
provides:
|
|
42
|
-
} ?
|
|
43
|
-
provides: ContextTagArray;
|
|
44
|
-
} ? ContextTagArray.Identifier<T["provides"]> : never : never;
|
|
41
|
+
provides: infer _P;
|
|
42
|
+
} ? _P : never : never;
|
|
45
43
|
type Errors<T> = T extends TagClassAny ? T extends {
|
|
46
44
|
failure: S.Schema.Any;
|
|
47
45
|
} ? S.Schema.Type<T["failure"]> : never : never;
|
|
48
46
|
type Required<T> = T extends TagClassAny ? T extends {
|
|
49
|
-
requires:
|
|
50
|
-
} ?
|
|
51
|
-
requires: ContextTagArray;
|
|
52
|
-
} ? ContextTagArray.Identifier<T["requires"]> : never : never;
|
|
47
|
+
requires: infer _R;
|
|
48
|
+
} ? _R : never : never;
|
|
53
49
|
}
|
|
54
50
|
export declare const middlewareMaker: <MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>>(middlewares: MiddlewareProviders) => Effect.Effect<RpcMiddlewareWrap<MiddlewareMaker.ManyProvided<MiddlewareProviders>, MiddlewareMaker.ManyErrors<MiddlewareProviders>, Exclude<MiddlewareMaker.ManyRequired<MiddlewareProviders>, MiddlewareMaker.ManyProvided<MiddlewareProviders>> extends never ? never : Exclude<MiddlewareMaker.ManyRequired<MiddlewareProviders>, MiddlewareMaker.ManyProvided<MiddlewareProviders>>>>;
|
|
55
51
|
//# sourceMappingURL=generic-middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-middleware.d.ts","sourceRoot":"","sources":["../../src/rpc/generic-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"generic-middleware.d.ts","sourceRoot":"","sources":["../../src/rpc/generic-middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Context, Effect
|
|
1
|
+
import { Context, Effect } from "effect-app";
|
|
2
2
|
import { PreludeLogger } from "../logger.js";
|
|
3
3
|
export const middlewareMaker = (middlewares) => {
|
|
4
4
|
// we want to run them in reverse order because latter middlewares will provide context to former ones
|
|
@@ -6,62 +6,19 @@ export const middlewareMaker = (middlewares) => {
|
|
|
6
6
|
return Effect.gen(function* () {
|
|
7
7
|
const context = yield* Effect.context();
|
|
8
8
|
// returns a Effect/RpcMiddlewareWrap with Scope in requirements
|
|
9
|
-
return (
|
|
9
|
+
return (_options) => {
|
|
10
|
+
const { next, ...options } = _options;
|
|
10
11
|
// we start with the actual handler
|
|
11
|
-
let handler =
|
|
12
|
+
let handler = next;
|
|
12
13
|
// inspired from Effect/RpcMiddleware
|
|
13
14
|
for (const tag of middlewares) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
handler = PreludeLogger.logDebug("Applying middleware wrap " + tag.key).pipe(Effect.zipRight(middleware({ ...options, next: handler })));
|
|
19
|
-
}
|
|
20
|
-
else if (tag.optional) {
|
|
21
|
-
// use the tag to get the middleware from context
|
|
22
|
-
// if the middleware fails to run, we will ignore the error
|
|
23
|
-
const middleware = Context.unsafeGet(context, tag);
|
|
24
|
-
const previous = handler;
|
|
25
|
-
// set the previous handler to run after the middleware
|
|
26
|
-
// if the middleware is not present, we just return the previous handler
|
|
27
|
-
// otherwise the middleware will provide some context to be provided to the previous handler
|
|
28
|
-
handler = PreludeLogger.logDebug("Applying middleware optional " + tag.key).pipe(Effect.zipRight(Effect.matchEffect(middleware(options), {
|
|
29
|
-
onFailure: () => previous,
|
|
30
|
-
onSuccess: tag.provides !== undefined
|
|
31
|
-
? (value) => Context.isContext(value)
|
|
32
|
-
? Effect.provide(previous, value)
|
|
33
|
-
: Effect.provideService(previous, tag.provides, value)
|
|
34
|
-
: (_) => previous
|
|
35
|
-
})));
|
|
36
|
-
}
|
|
37
|
-
else if (tag.dynamic) {
|
|
38
|
-
// use the tag to get the middleware from context
|
|
39
|
-
const middleware = Context.unsafeGet(context, tag);
|
|
40
|
-
const previous = handler;
|
|
41
|
-
// set the previous handler to run after the middleware
|
|
42
|
-
// we do expect the middleware to be present, but the context might not be available
|
|
43
|
-
// if it is, we provide it to the previous handler
|
|
44
|
-
handler = PreludeLogger.logDebug("Applying middleware dynamic " + tag.key, tag.dynamic).pipe(Effect.zipRight(middleware(options).pipe(Effect.flatMap((o) => Option.isSome(o)
|
|
45
|
-
? Context.isContext(o.value)
|
|
46
|
-
? Effect.provide(previous, o.value)
|
|
47
|
-
: Effect.provideService(previous, tag.dynamic.settings.service, /* TODO */ o.value)
|
|
48
|
-
: previous))));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
// use the tag to get the middleware from context
|
|
52
|
-
const middleware = Context.unsafeGet(context, tag);
|
|
53
|
-
const previous = handler;
|
|
54
|
-
// set the previous handler to run after the middleware
|
|
55
|
-
// we do expect both the middleware and the context to be present
|
|
56
|
-
handler = PreludeLogger.logDebug("Applying middleware " + tag.key).pipe(Effect.zipRight(tag.provides !== undefined
|
|
57
|
-
? middleware(options).pipe(Effect.flatMap((value) => Context.isContext(value)
|
|
58
|
-
? Effect.provide(previous, value)
|
|
59
|
-
: Effect.provideService(previous, tag.provides, value)))
|
|
60
|
-
: Effect.zipRight(middleware(options), previous)));
|
|
61
|
-
}
|
|
15
|
+
// use the tag to get the middleware from context
|
|
16
|
+
const middleware = Context.unsafeGet(context, tag);
|
|
17
|
+
// wrap the current handler, allowing the middleware to run before and after it
|
|
18
|
+
handler = PreludeLogger.logDebug("Applying middleware wrap " + tag.key).pipe(Effect.zipRight(middleware(handler, options)));
|
|
62
19
|
}
|
|
63
20
|
return handler;
|
|
64
21
|
};
|
|
65
22
|
});
|
|
66
23
|
};
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9nZW5lcmljLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQWtELE1BQU0sWUFBWSxDQUFBO0FBSTVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUE0RTVDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUU3QixXQUFnQyxFQVVoQyxFQUFFO0lBQ0Ysc0dBQXNHO0lBQ3RHLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFTLENBQUE7SUFFN0MsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFdkMsZ0VBQWdFO1FBQ2hFLE9BQU8sQ0FDTCxRQUtJLEVBQ0osRUFBRTtZQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUE7WUFDckMsbUNBQW1DO1lBQ25DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQTtZQUVsQixxQ0FBcUM7WUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsaURBQWlEO2dCQUNqRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFFbEQsK0VBQStFO2dCQUMvRSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDdkMsQ0FBQTtZQUNWLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUE7SUFDSCxDQUFDLENBQVEsQ0FBQTtBQUNYLENBQUMsQ0FBQSJ9
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import { RpcMiddleware } from "@effect/rpc";
|
|
2
1
|
import { Context } from "effect-app";
|
|
3
2
|
declare const DevMode_base: Context.ReferenceClass<DevMode, "DevMode", boolean>;
|
|
4
3
|
export declare class DevMode extends DevMode_base {
|
|
5
4
|
}
|
|
6
|
-
declare const RequestCacheMiddleware_base: RpcMiddleware.TagClass<RequestCacheMiddleware, "RequestCacheMiddleware", {
|
|
7
|
-
|
|
5
|
+
declare const RequestCacheMiddleware_base: import("./RpcMiddleware.js").TagClass<RequestCacheMiddleware, "RequestCacheMiddleware", {}, {
|
|
6
|
+
requires: never;
|
|
7
|
+
provides: never;
|
|
8
8
|
}>;
|
|
9
9
|
export declare class RequestCacheMiddleware extends RequestCacheMiddleware_base {
|
|
10
10
|
}
|
|
11
|
-
declare const ConfigureInterruptibilityMiddleware_base: RpcMiddleware.TagClass<ConfigureInterruptibilityMiddleware, "ConfigureInterruptibilityMiddleware", {
|
|
12
|
-
|
|
11
|
+
declare const ConfigureInterruptibilityMiddleware_base: import("./RpcMiddleware.js").TagClass<ConfigureInterruptibilityMiddleware, "ConfigureInterruptibilityMiddleware", {}, {
|
|
12
|
+
requires: never;
|
|
13
|
+
provides: never;
|
|
13
14
|
}>;
|
|
14
15
|
export declare class ConfigureInterruptibilityMiddleware extends ConfigureInterruptibilityMiddleware_base {
|
|
15
16
|
}
|
|
16
|
-
declare const LoggerMiddleware_base: RpcMiddleware.TagClass<LoggerMiddleware, "LoggerMiddleware", {
|
|
17
|
-
|
|
17
|
+
declare const LoggerMiddleware_base: import("./RpcMiddleware.js").TagClass<LoggerMiddleware, "LoggerMiddleware", {}, {
|
|
18
|
+
requires: never;
|
|
19
|
+
provides: never;
|
|
18
20
|
}>;
|
|
19
21
|
export declare class LoggerMiddleware extends LoggerMiddleware_base {
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-native.d.ts","sourceRoot":"","sources":["../../src/rpc/middleware-native.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"middleware-native.d.ts","sourceRoot":"","sources":["../../src/rpc/middleware-native.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;;AAGpC,qBAAa,OAAQ,SAAQ,YAAsE;CAAG;;;;;AAEtG,qBAAa,sBAAuB,SAAQ,2BAA2D;CAAG;;;;;AAE1G,qBAAa,mCACX,SAAQ,wCAAqF;CAC7F;;;;;AAEF,qBAAa,gBAAiB,SAAQ,qBAA+C;CAAG;AAExF,eAAO,MAAM,yBAAyB,+GAI5B,CAAA"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { RpcMiddleware } from "@effect/rpc";
|
|
3
2
|
import { Context } from "effect-app";
|
|
3
|
+
import { Tag } from "./RpcMiddleware.js";
|
|
4
4
|
export class DevMode extends Context.Reference()("DevMode", { defaultValue: () => false }) {
|
|
5
5
|
}
|
|
6
|
-
export class RequestCacheMiddleware extends
|
|
6
|
+
export class RequestCacheMiddleware extends Tag()("RequestCacheMiddleware", {}) {
|
|
7
7
|
}
|
|
8
|
-
export class ConfigureInterruptibilityMiddleware extends
|
|
9
|
-
wrap: true
|
|
10
|
-
}) {
|
|
8
|
+
export class ConfigureInterruptibilityMiddleware extends Tag()("ConfigureInterruptibilityMiddleware", {}) {
|
|
11
9
|
}
|
|
12
|
-
export class LoggerMiddleware extends
|
|
10
|
+
export class LoggerMiddleware extends Tag()("LoggerMiddleware", {}) {
|
|
13
11
|
}
|
|
14
12
|
export const DefaultGenericMiddlewares = [
|
|
15
13
|
RequestCacheMiddleware,
|
|
16
14
|
ConfigureInterruptibilityMiddleware,
|
|
17
15
|
LoggerMiddleware
|
|
18
16
|
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS1uYXRpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnBjL21pZGRsZXdhcmUtbmF0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV4QyxNQUFNLE9BQU8sT0FBUSxTQUFRLE9BQU8sQ0FBQyxTQUFTLEVBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Q0FBRztBQUV0RyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsR0FBRyxFQUEwQixDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztDQUFHO0FBRTFHLE1BQU0sT0FBTyxtQ0FDWCxTQUFRLEdBQUcsRUFBdUMsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLENBQUM7Q0FDN0Y7QUFFRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsR0FBRyxFQUFvQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztDQUFHO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLHNCQUFzQjtJQUN0QixtQ0FBbUM7SUFDbkMsZ0JBQWdCO0NBQ1IsQ0FBQSJ9
|
package/package.json
CHANGED
package/src/client/req.ts
CHANGED
|
@@ -6,12 +6,18 @@ import { type Tag } from "../Context.js"
|
|
|
6
6
|
import { type Context, type NonEmptyReadonlyArray, S } from "../internal/lib.js"
|
|
7
7
|
import { type Values } from "../utils.js"
|
|
8
8
|
|
|
9
|
+
/** @deprecated just use Service Identifier Union */
|
|
9
10
|
export type ContextTagArray = NonEmptyReadonlyArray<Context.Tag<any, any>>
|
|
11
|
+
|
|
12
|
+
/** @deprecated just use Service Identifier Union */
|
|
10
13
|
export namespace ContextTagArray {
|
|
11
14
|
export type Identifier<A> = A extends ContextTagArray ? Tag.Identifier<A[number]> : never
|
|
12
15
|
export type Service<A> = A extends ContextTagArray ? Tag.Service<A[number]> : never
|
|
13
16
|
}
|
|
17
|
+
|
|
18
|
+
/** @deprecated just use Service Identifier Union */
|
|
14
19
|
export type AnyService = Context.Tag<any, any> | ContextTagArray
|
|
20
|
+
/** @deprecated just use Service Identifier Union */
|
|
15
21
|
export namespace AnyService {
|
|
16
22
|
export type Bla<A> = A extends ContextTagArray ? Context.Context<ContextTagArray.Identifier<A>>
|
|
17
23
|
: A extends Context.Tag<any, any> ? Tag.Service<A>
|
package/src/rpc/RpcMiddleware.ts
CHANGED
|
@@ -3,35 +3,24 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
4
|
import { type Rpc, RpcMiddleware } from "@effect/rpc"
|
|
5
5
|
import { type SuccessValue, type TypeId } from "@effect/rpc/RpcMiddleware"
|
|
6
|
-
import { type Context, type Effect, type NonEmptyReadonlyArray, type
|
|
7
|
-
import type {
|
|
6
|
+
import { type Context, type Effect, type NonEmptyReadonlyArray, type S, type Schema, type Scope, Unify } from "effect-app"
|
|
7
|
+
import type { ContextTagArray, RPCContextMap } from "effect-app/client/req"
|
|
8
8
|
import { type HttpHeaders } from "effect-app/http"
|
|
9
9
|
import { type TagUnify, type TagUnifyIgnore } from "effect/Context"
|
|
10
10
|
|
|
11
|
-
// updated to support Scope.Scope and Requires
|
|
12
|
-
export interface RpcMiddleware<Provides, E, Requires> {
|
|
13
|
-
(options: {
|
|
14
|
-
readonly clientId: number
|
|
15
|
-
readonly rpc: Rpc.AnyWithProps
|
|
16
|
-
readonly payload: unknown
|
|
17
|
-
readonly headers: HttpHeaders.Headers
|
|
18
|
-
}): Effect.Effect<Provides, E, Scope.Scope | Requires>
|
|
19
|
-
}
|
|
11
|
+
// updated to support Scope.Scope and Requires, and `options.next` is now just effect
|
|
20
12
|
export interface RpcMiddlewareWrap<Provides, E, Requires> {
|
|
21
|
-
(options: {
|
|
13
|
+
(effect: Effect.Effect<SuccessValue, E, Provides | Scope.Scope | Requires>, options: {
|
|
22
14
|
readonly clientId: number
|
|
23
15
|
readonly rpc: Rpc.AnyWithProps
|
|
24
16
|
readonly payload: unknown
|
|
25
17
|
readonly headers: HttpHeaders.Headers
|
|
26
|
-
readonly next: Effect.Effect<SuccessValue, E, Provides | Scope.Scope | Requires>
|
|
27
18
|
}): Effect.Effect<SuccessValue, E, Scope.Scope | Requires>
|
|
28
19
|
}
|
|
29
20
|
|
|
30
21
|
export type RpcOptionsOriginal = {
|
|
31
|
-
readonly wrap?: boolean
|
|
32
22
|
readonly optional?: boolean
|
|
33
23
|
readonly failure?: Schema.Schema.All
|
|
34
|
-
readonly provides?: AnyService
|
|
35
24
|
readonly requiredForClient?: boolean
|
|
36
25
|
}
|
|
37
26
|
|
|
@@ -54,8 +43,7 @@ export interface RpcOptionsDynamic<Key extends string, A extends RPCContextMap.A
|
|
|
54
43
|
export type Dynamic<Options> = Options extends RpcOptionsDynamic<any, any> ? true : false
|
|
55
44
|
|
|
56
45
|
export interface RpcMiddlewareDynamicWrap<E, R, _Config> {
|
|
57
|
-
(options: {
|
|
58
|
-
readonly next: Effect.Effect<SuccessValue, E, Scope.Scope | R>
|
|
46
|
+
(effect: Effect.Effect<SuccessValue, E, Scope.Scope | R>, options: {
|
|
59
47
|
readonly clientId: number
|
|
60
48
|
readonly rpc: Rpc.AnyWithProps // TODO & { annotations: Context.Context<RequestContextMap<Config>> }
|
|
61
49
|
readonly payload: unknown
|
|
@@ -67,27 +55,14 @@ export interface RpcMiddlewareDynamicWrap<E, R, _Config> {
|
|
|
67
55
|
>
|
|
68
56
|
}
|
|
69
57
|
|
|
70
|
-
export interface RpcMiddlewareDynamicNormal<A, E, R, _Config> {
|
|
71
|
-
(options: {
|
|
72
|
-
readonly clientId: number
|
|
73
|
-
readonly rpc: Rpc.AnyWithProps // TODO & { annotations: Context.Context<RequestContextMap<Config>> }
|
|
74
|
-
readonly payload: unknown
|
|
75
|
-
readonly headers: HttpHeaders.Headers
|
|
76
|
-
}): Effect.Effect<
|
|
77
|
-
Option.Option<A>,
|
|
78
|
-
E,
|
|
79
|
-
Scope.Scope | R
|
|
80
|
-
>
|
|
81
|
-
}
|
|
82
|
-
|
|
83
58
|
export interface TagClassAny extends Context.Tag<any, any> {
|
|
84
59
|
readonly [TypeId]: TypeId
|
|
85
60
|
readonly optional: boolean
|
|
86
|
-
readonly provides
|
|
87
|
-
readonly requires
|
|
61
|
+
readonly provides: any
|
|
62
|
+
readonly requires: any
|
|
88
63
|
readonly failure: Schema.Schema.All
|
|
89
64
|
readonly requiredForClient: boolean
|
|
90
|
-
readonly wrap:
|
|
65
|
+
readonly wrap: true
|
|
91
66
|
readonly dynamic?: RpcDynamic<any, any> | undefined
|
|
92
67
|
readonly dependsOn?: NonEmptyReadonlyArray<AnyDynamic> | undefined
|
|
93
68
|
}
|
|
@@ -119,18 +94,6 @@ export declare namespace TagClass {
|
|
|
119
94
|
} ? ContextTagArray.Identifier<Options["requires"]>
|
|
120
95
|
: never
|
|
121
96
|
|
|
122
|
-
/**
|
|
123
|
-
* @since 1.0.0
|
|
124
|
-
* @category models
|
|
125
|
-
*/
|
|
126
|
-
export type Service<Options> = Options extends { readonly provides: Context.Tag<any, any> }
|
|
127
|
-
? Context.Tag.Service<Options["provides"]>
|
|
128
|
-
: Options extends { readonly dynamic: RpcDynamic<any, infer A> }
|
|
129
|
-
? Options extends { wrap: true } ? void : AnyService.Bla<A["service"]>
|
|
130
|
-
: Options extends { readonly provides: ContextTagArray }
|
|
131
|
-
? Context.Context<ContextTagArray.Identifier<Options["provides"]>>
|
|
132
|
-
: void
|
|
133
|
-
|
|
134
97
|
/**
|
|
135
98
|
* @since 1.0.0
|
|
136
99
|
* @category models
|
|
@@ -185,67 +148,74 @@ export declare namespace TagClass {
|
|
|
185
148
|
* @since 1.0.0
|
|
186
149
|
* @category models
|
|
187
150
|
*/
|
|
188
|
-
export interface Base<
|
|
151
|
+
export interface Base<
|
|
152
|
+
Self,
|
|
153
|
+
Name extends string,
|
|
154
|
+
Options,
|
|
155
|
+
Service,
|
|
156
|
+
Config extends {
|
|
157
|
+
requires?: any
|
|
158
|
+
provides?: any
|
|
159
|
+
}
|
|
160
|
+
> extends Context.Tag<Self, Service> {
|
|
189
161
|
new(_: never): Context.TagClassShape<Name, Service>
|
|
190
162
|
readonly [TypeId]: TypeId
|
|
191
163
|
readonly optional: Optional<Options>
|
|
192
164
|
readonly failure: FailureSchema<Options>
|
|
193
|
-
readonly provides:
|
|
194
|
-
|
|
195
|
-
: undefined
|
|
196
|
-
readonly requires: Options extends { readonly requires: Context.Tag<any, any> } ? Options["requires"]
|
|
197
|
-
: Options extends { readonly requires: ContextTagArray } ? Options["requires"]
|
|
198
|
-
: undefined
|
|
165
|
+
readonly provides: "provides" extends keyof Config ? Config["provides"] : never
|
|
166
|
+
readonly requires: "requires" extends keyof Config ? Config["requires"] : never
|
|
199
167
|
readonly dynamic: Options extends RpcOptionsDynamic<any, any> ? Options["dynamic"]
|
|
200
168
|
: undefined
|
|
201
169
|
readonly dependsOn: Options extends DependsOn ? Options["dependsOn"] : undefined
|
|
202
170
|
readonly requiredForClient: RequiredForClient<Options>
|
|
203
|
-
readonly wrap:
|
|
171
|
+
readonly wrap: true
|
|
204
172
|
}
|
|
205
173
|
}
|
|
206
174
|
|
|
207
175
|
export interface TagClass<
|
|
208
176
|
Self,
|
|
209
177
|
Name extends string,
|
|
210
|
-
Options
|
|
178
|
+
Options,
|
|
179
|
+
Config extends {
|
|
180
|
+
requires?: any
|
|
181
|
+
provides?: any
|
|
182
|
+
} = { requires: never; provides: never }
|
|
211
183
|
> extends
|
|
212
184
|
TagClass.Base<
|
|
213
185
|
Self,
|
|
214
186
|
Name,
|
|
215
187
|
Options,
|
|
216
|
-
Options extends RpcOptionsDynamic<any, any> ?
|
|
217
|
-
TagClass.FailureService<Options>,
|
|
218
|
-
TagClass.Requires<Options>,
|
|
219
|
-
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
220
|
-
>
|
|
221
|
-
: RpcMiddlewareDynamicNormal<
|
|
222
|
-
TagClass.Service<Options>,
|
|
188
|
+
Options extends RpcOptionsDynamic<any, any> ? RpcMiddlewareDynamicWrap<
|
|
223
189
|
TagClass.FailureService<Options>,
|
|
224
|
-
|
|
190
|
+
"requires" extends keyof Config ? Config["requires"] : never,
|
|
225
191
|
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
226
192
|
>
|
|
227
|
-
:
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
TagClass.Service<Options>,
|
|
234
|
-
TagClass.FailureService<Options>,
|
|
235
|
-
TagClass.Requires<Options>
|
|
236
|
-
>
|
|
193
|
+
: RpcMiddlewareWrap<
|
|
194
|
+
"provides" extends keyof Config ? Config["provides"] : never,
|
|
195
|
+
TagClass.Failure<Options>,
|
|
196
|
+
"requires" extends keyof Config ? Config["requires"] : never
|
|
197
|
+
>,
|
|
198
|
+
Config
|
|
237
199
|
>
|
|
238
200
|
{}
|
|
239
201
|
|
|
240
|
-
export const Tag = <
|
|
202
|
+
export const Tag = <
|
|
203
|
+
Self,
|
|
204
|
+
Config extends {
|
|
205
|
+
requires?: any
|
|
206
|
+
provides?: any
|
|
207
|
+
} = { requires: never; provides: never }
|
|
208
|
+
>() =>
|
|
241
209
|
<
|
|
242
210
|
const Name extends string,
|
|
243
211
|
const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>
|
|
244
212
|
>(
|
|
245
213
|
id: Name,
|
|
246
214
|
options?: Options | undefined
|
|
247
|
-
): TagClass<Self, Name, Options> =>
|
|
248
|
-
class extends RpcMiddleware.Tag<Self>()(id, options
|
|
215
|
+
): TagClass<Self, Name, Options, Config> =>
|
|
216
|
+
class extends RpcMiddleware.Tag<Self>()(id, options) {
|
|
217
|
+
static readonly requires: "requires" extends keyof Config ? Config["requires"] : never
|
|
218
|
+
static override readonly provides: "provides" extends keyof Config ? Config["provides"] : never
|
|
249
219
|
static readonly dynamic = options && "dynamic" in options ? options.dynamic : undefined
|
|
250
220
|
static readonly dependsOn = options && "dependsOn" in options ? options.dependsOn : undefined
|
|
251
221
|
static override [Unify.typeSymbol]?: unknown
|
|
@@ -4,13 +4,19 @@
|
|
|
4
4
|
import { type Effect, Layer, type NonEmptyReadonlyArray, Unify } from "effect-app"
|
|
5
5
|
import { type TagUnify, type TagUnifyIgnore } from "effect/Context"
|
|
6
6
|
import { type Service } from "effect/Effect"
|
|
7
|
-
import { type
|
|
7
|
+
import { type RpcMiddlewareDynamicWrap, type RpcMiddlewareWrap, type RpcOptionsDynamic, type RpcOptionsOriginal, Tag, type TagClass } from "./RpcMiddleware.js"
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @deprecated - RPC groups are defined centrally and re-used between server and client,
|
|
11
11
|
* so layer implementation details should not be mixed.
|
|
12
12
|
*/
|
|
13
|
-
export const TagService = <
|
|
13
|
+
export const TagService = <
|
|
14
|
+
Self,
|
|
15
|
+
Config extends {
|
|
16
|
+
requires?: any
|
|
17
|
+
provides?: any
|
|
18
|
+
} = { requires: never; provides: never }
|
|
19
|
+
>() =>
|
|
14
20
|
<
|
|
15
21
|
const Name extends string,
|
|
16
22
|
const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>
|
|
@@ -21,33 +27,22 @@ export const TagService = <Self>() =>
|
|
|
21
27
|
<
|
|
22
28
|
LayerOpts extends {
|
|
23
29
|
effect: Effect.Effect<
|
|
24
|
-
Options extends RpcOptionsDynamic<any, any> ?
|
|
25
|
-
TagClass.FailureService<Options>,
|
|
26
|
-
TagClass.Requires<Options>,
|
|
27
|
-
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
28
|
-
>
|
|
29
|
-
: RpcMiddlewareDynamicNormal<
|
|
30
|
-
TagClass.Service<Options>,
|
|
30
|
+
Options extends RpcOptionsDynamic<any, any> ? RpcMiddlewareDynamicWrap<
|
|
31
31
|
TagClass.FailureService<Options>,
|
|
32
|
-
|
|
32
|
+
"requires" extends keyof Config ? Config["requires"] : never,
|
|
33
33
|
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
34
34
|
>
|
|
35
|
-
:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
>
|
|
40
|
-
: RpcMiddleware<
|
|
41
|
-
TagClass.Service<Options>,
|
|
42
|
-
TagClass.FailureService<Options>,
|
|
43
|
-
TagClass.Requires<Options>
|
|
35
|
+
: RpcMiddlewareWrap<
|
|
36
|
+
"provides" extends keyof Config ? Config["provides"] : never,
|
|
37
|
+
TagClass.Failure<Options>,
|
|
38
|
+
"requires" extends keyof Config ? Config["requires"] : never
|
|
44
39
|
>,
|
|
45
40
|
any,
|
|
46
41
|
any
|
|
47
42
|
>
|
|
48
43
|
dependencies?: NonEmptyReadonlyArray<Layer.Layer.Any>
|
|
49
44
|
}
|
|
50
|
-
>(opts: LayerOpts): TagClass<Self, Name, Options> & {
|
|
45
|
+
>(opts: LayerOpts): TagClass<Self, Name, Options, Config> & {
|
|
51
46
|
Default: Layer.Layer<
|
|
52
47
|
Self,
|
|
53
48
|
| (LayerOpts extends { effect: Effect<infer _A, infer _E, infer _R> } ? _E
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { type RpcMiddleware } from "@effect/rpc"
|
|
3
|
-
import { Context, Effect, type Layer, type NonEmptyReadonlyArray,
|
|
4
|
-
import { type
|
|
3
|
+
import { Context, Effect, type Layer, type NonEmptyReadonlyArray, type S } from "effect-app"
|
|
4
|
+
import { type GetContextConfig, type RPCContextMap } from "effect-app/client"
|
|
5
5
|
import { type Tag } from "effect/Context"
|
|
6
6
|
import { type Simplify } from "effect/Types"
|
|
7
7
|
import { PreludeLogger } from "../logger.js"
|
|
@@ -67,9 +67,7 @@ export namespace MiddlewareMaker {
|
|
|
67
67
|
? { [K in keyof A]: Errors<A[K]> }[number]
|
|
68
68
|
: Errors<A[number]>
|
|
69
69
|
|
|
70
|
-
export type Provided<T> = T extends TagClassAny
|
|
71
|
-
? T extends { provides: Context.Tag<any, any> } ? Context.Tag.Identifier<T["provides"]>
|
|
72
|
-
: T extends { provides: ContextTagArray } ? ContextTagArray.Identifier<T["provides"]>
|
|
70
|
+
export type Provided<T> = T extends TagClassAny ? T extends { provides: infer _P } ? _P
|
|
73
71
|
: never
|
|
74
72
|
: never
|
|
75
73
|
|
|
@@ -77,9 +75,7 @@ export namespace MiddlewareMaker {
|
|
|
77
75
|
: never
|
|
78
76
|
: never
|
|
79
77
|
|
|
80
|
-
export type Required<T> = T extends TagClassAny
|
|
81
|
-
? T extends { requires: Context.Tag<any, any> } ? Context.Tag.Identifier<T["requires"]>
|
|
82
|
-
: T extends { requires: ContextTagArray } ? ContextTagArray.Identifier<T["requires"]>
|
|
78
|
+
export type Required<T> = T extends TagClassAny ? T extends { requires: infer _R } ? _R
|
|
83
79
|
: never
|
|
84
80
|
: never
|
|
85
81
|
}
|
|
@@ -105,92 +101,26 @@ export const middlewareMaker = <
|
|
|
105
101
|
|
|
106
102
|
// returns a Effect/RpcMiddlewareWrap with Scope in requirements
|
|
107
103
|
return (
|
|
108
|
-
|
|
109
|
-
RpcMiddlewareWrap<
|
|
104
|
+
_options: Parameters<
|
|
105
|
+
RpcMiddleware.RpcMiddlewareWrap<
|
|
110
106
|
MiddlewareMaker.ManyProvided<MiddlewareProviders>,
|
|
111
|
-
never
|
|
112
|
-
Scope.Scope
|
|
107
|
+
never
|
|
113
108
|
>
|
|
114
109
|
>[0]
|
|
115
110
|
) => {
|
|
111
|
+
const { next, ...options } = _options
|
|
116
112
|
// we start with the actual handler
|
|
117
|
-
let handler =
|
|
113
|
+
let handler = next
|
|
118
114
|
|
|
119
115
|
// inspired from Effect/RpcMiddleware
|
|
120
116
|
for (const tag of middlewares) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const middleware = Context.unsafeGet(context, tag)
|
|
117
|
+
// use the tag to get the middleware from context
|
|
118
|
+
const middleware = Context.unsafeGet(context, tag)
|
|
124
119
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
} else if (tag.optional) {
|
|
130
|
-
// use the tag to get the middleware from context
|
|
131
|
-
// if the middleware fails to run, we will ignore the error
|
|
132
|
-
const middleware = Context.unsafeGet(context, tag) as RpcMiddleware.RpcMiddleware<any, any>
|
|
133
|
-
|
|
134
|
-
const previous = handler
|
|
135
|
-
|
|
136
|
-
// set the previous handler to run after the middleware
|
|
137
|
-
// if the middleware is not present, we just return the previous handler
|
|
138
|
-
// otherwise the middleware will provide some context to be provided to the previous handler
|
|
139
|
-
handler = PreludeLogger.logDebug("Applying middleware optional " + tag.key).pipe(
|
|
140
|
-
Effect.zipRight(Effect.matchEffect(middleware(options), {
|
|
141
|
-
onFailure: () => previous,
|
|
142
|
-
onSuccess: tag.provides !== undefined
|
|
143
|
-
? (value) =>
|
|
144
|
-
Context.isContext(value)
|
|
145
|
-
? Effect.provide(previous, value)
|
|
146
|
-
: Effect.provideService(previous, tag.provides as any, value)
|
|
147
|
-
: (_) => previous
|
|
148
|
-
}))
|
|
149
|
-
)
|
|
150
|
-
} else if (tag.dynamic) {
|
|
151
|
-
// use the tag to get the middleware from context
|
|
152
|
-
const middleware = Context.unsafeGet(context, tag) as RpcMiddleware.RpcMiddleware<any, any>
|
|
153
|
-
|
|
154
|
-
const previous = handler
|
|
155
|
-
|
|
156
|
-
// set the previous handler to run after the middleware
|
|
157
|
-
// we do expect the middleware to be present, but the context might not be available
|
|
158
|
-
// if it is, we provide it to the previous handler
|
|
159
|
-
handler = PreludeLogger.logDebug("Applying middleware dynamic " + tag.key, tag.dynamic).pipe(
|
|
160
|
-
Effect.zipRight(
|
|
161
|
-
middleware(options).pipe(
|
|
162
|
-
Effect.flatMap((o) =>
|
|
163
|
-
Option.isSome(o)
|
|
164
|
-
? Context.isContext(o.value)
|
|
165
|
-
? Effect.provide(previous, o.value)
|
|
166
|
-
: Effect.provideService(previous, tag.dynamic!.settings.service!, /* TODO */ o.value)
|
|
167
|
-
: previous
|
|
168
|
-
)
|
|
169
|
-
)
|
|
170
|
-
)
|
|
171
|
-
) as any
|
|
172
|
-
} else {
|
|
173
|
-
// use the tag to get the middleware from context
|
|
174
|
-
const middleware = Context.unsafeGet(context, tag) as RpcMiddleware.RpcMiddleware<any, any>
|
|
175
|
-
|
|
176
|
-
const previous = handler
|
|
177
|
-
|
|
178
|
-
// set the previous handler to run after the middleware
|
|
179
|
-
// we do expect both the middleware and the context to be present
|
|
180
|
-
handler = PreludeLogger.logDebug("Applying middleware " + tag.key).pipe(
|
|
181
|
-
Effect.zipRight(
|
|
182
|
-
tag.provides !== undefined
|
|
183
|
-
? middleware(options).pipe(
|
|
184
|
-
Effect.flatMap((value) =>
|
|
185
|
-
Context.isContext(value)
|
|
186
|
-
? Effect.provide(previous, value)
|
|
187
|
-
: Effect.provideService(previous, tag.provides as any, value)
|
|
188
|
-
)
|
|
189
|
-
)
|
|
190
|
-
: Effect.zipRight(middleware(options), previous)
|
|
191
|
-
)
|
|
192
|
-
) as any
|
|
193
|
-
}
|
|
120
|
+
// wrap the current handler, allowing the middleware to run before and after it
|
|
121
|
+
handler = PreludeLogger.logDebug("Applying middleware wrap " + tag.key).pipe(
|
|
122
|
+
Effect.zipRight(middleware(handler, options))
|
|
123
|
+
) as any
|
|
194
124
|
}
|
|
195
125
|
return handler
|
|
196
126
|
}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { RpcMiddleware } from "@effect/rpc"
|
|
3
2
|
import { Context } from "effect-app"
|
|
3
|
+
import { Tag } from "./RpcMiddleware.js"
|
|
4
4
|
|
|
5
5
|
export class DevMode extends Context.Reference<DevMode>()("DevMode", { defaultValue: () => false }) {}
|
|
6
6
|
|
|
7
|
-
export class RequestCacheMiddleware
|
|
8
|
-
extends RpcMiddleware.Tag<RequestCacheMiddleware>()("RequestCacheMiddleware", { wrap: true })
|
|
9
|
-
{}
|
|
7
|
+
export class RequestCacheMiddleware extends Tag<RequestCacheMiddleware>()("RequestCacheMiddleware", {}) {}
|
|
10
8
|
|
|
11
9
|
export class ConfigureInterruptibilityMiddleware
|
|
12
|
-
extends
|
|
13
|
-
wrap: true
|
|
14
|
-
})
|
|
10
|
+
extends Tag<ConfigureInterruptibilityMiddleware>()("ConfigureInterruptibilityMiddleware", {})
|
|
15
11
|
{}
|
|
16
12
|
|
|
17
|
-
export class LoggerMiddleware extends
|
|
13
|
+
export class LoggerMiddleware extends Tag<LoggerMiddleware>()("LoggerMiddleware", {}) {}
|
|
18
14
|
|
|
19
15
|
export const DefaultGenericMiddlewares = [
|
|
20
16
|
RequestCacheMiddleware,
|