effect-app 3.0.8 → 3.0.9
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/makeClient.d.ts +10 -10
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +3 -3
- package/dist/rpc/MiddlewareMaker.d.ts +7 -3
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +4 -4
- package/dist/rpc/RpcContextMap.d.ts +31 -39
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcContextMap.js +34 -27
- package/dist/rpc.d.ts +1 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -1
- package/package.json +1 -1
- package/src/client/makeClient.ts +10 -12
- package/src/rpc/MiddlewareMaker.ts +11 -11
- package/src/rpc/RpcContextMap.ts +69 -86
- package/src/rpc.ts +1 -0
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/rpc.test.ts +9 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { S } from "../internal/lib.js";
|
|
2
|
-
import { type GetEffectError, type
|
|
2
|
+
import { type GetContextConfig, type GetEffectError, type RequestContextMapTagAny } from "../rpc/RpcContextMap.js";
|
|
3
3
|
type JoinSchema<T> = T extends ReadonlyArray<S.Schema.All> ? S.Union<T> : typeof S.Never;
|
|
4
4
|
/**
|
|
5
5
|
* Converts struct fields to TypeLiteral schema, or returns existing schema.
|
|
@@ -16,35 +16,35 @@ type JoinSchema<T> = T extends ReadonlyArray<S.Schema.All> ? S.Union<T> : typeof
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
type SchemaOrFields<T> = T extends S.Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never;
|
|
19
|
-
export declare const makeRpcClient: <
|
|
19
|
+
export declare const makeRpcClient: <RequestContextMap extends RequestContextMapTagAny, GeneralErrors extends S.Schema.All = never>(rcs: RequestContextMap, generalErrors?: GeneralErrors) => {
|
|
20
20
|
TaggedRequest: <Self>() => {
|
|
21
21
|
<Tag extends string, Payload extends S.Struct.Fields, C extends {
|
|
22
22
|
success: S.Schema.Any | S.Struct.Fields;
|
|
23
23
|
failure: S.Schema.Any | S.Struct.Fields;
|
|
24
|
-
}>(tag: Tag, fields: Payload, config:
|
|
24
|
+
}>(tag: Tag, fields: Payload, config: GetContextConfig<RequestContextMap["config"]> & C): S.TaggedRequestClass<Self, Tag, {
|
|
25
25
|
readonly _tag: S.tag<Tag>;
|
|
26
|
-
} & Payload, SchemaOrFields<(typeof config)["success"]>, JoinSchema<[SchemaOrFields<(typeof config)["failure"]> | GetEffectError<RequestContextMap, C> | GeneralErrors]>> & {
|
|
26
|
+
} & Payload, SchemaOrFields<(typeof config)["success"]>, JoinSchema<[SchemaOrFields<(typeof config)["failure"]> | GetEffectError<RequestContextMap["config"], C> | GeneralErrors]>> & {
|
|
27
27
|
config: Omit<C, "success" | "failure">;
|
|
28
28
|
};
|
|
29
29
|
<Tag extends string, Payload_1 extends S.Struct.Fields, C_1 extends Pick<{
|
|
30
30
|
success: S.Schema.Any | S.Struct.Fields;
|
|
31
31
|
failure: S.Schema.Any | S.Struct.Fields;
|
|
32
|
-
}, "success">>(tag: Tag, fields: Payload_1, config:
|
|
32
|
+
}, "success">>(tag: Tag, fields: Payload_1, config: GetContextConfig<RequestContextMap["config"]> & C_1): S.TaggedRequestClass<Self, Tag, {
|
|
33
33
|
readonly _tag: S.tag<Tag>;
|
|
34
|
-
} & Payload_1, SchemaOrFields<(typeof config)["success"]>, JoinSchema<[GetEffectError<RequestContextMap, C_1> | GeneralErrors]>> & {
|
|
34
|
+
} & Payload_1, SchemaOrFields<(typeof config)["success"]>, JoinSchema<[GetEffectError<RequestContextMap["config"], C_1> | GeneralErrors]>> & {
|
|
35
35
|
config: Omit<C_1, "success" | "failure">;
|
|
36
36
|
};
|
|
37
37
|
<Tag extends string, Payload_2 extends S.Struct.Fields, C_2 extends Pick<{
|
|
38
38
|
success: S.Schema.Any | S.Struct.Fields;
|
|
39
39
|
failure: S.Schema.Any | S.Struct.Fields;
|
|
40
|
-
}, "failure">>(tag: Tag, fields: Payload_2, config:
|
|
40
|
+
}, "failure">>(tag: Tag, fields: Payload_2, config: GetContextConfig<RequestContextMap["config"]> & C_2): S.TaggedRequestClass<Self, Tag, {
|
|
41
41
|
readonly _tag: S.tag<Tag>;
|
|
42
|
-
} & Payload_2, typeof S.Void, JoinSchema<[SchemaOrFields<(typeof config)["failure"]> | GetEffectError<RequestContextMap, C_2> | GeneralErrors]>> & {
|
|
42
|
+
} & Payload_2, typeof S.Void, JoinSchema<[SchemaOrFields<(typeof config)["failure"]> | GetEffectError<RequestContextMap["config"], C_2> | GeneralErrors]>> & {
|
|
43
43
|
config: Omit<C_2, "success" | "failure">;
|
|
44
44
|
};
|
|
45
|
-
<Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 &
|
|
45
|
+
<Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 & GetContextConfig<RequestContextMap["config"]>): S.TaggedRequestClass<Self, Tag, {
|
|
46
46
|
readonly _tag: S.tag<Tag>;
|
|
47
|
-
} & Payload_3, typeof S.Void, JoinSchema<[GetEffectError<RequestContextMap, C_3> | GeneralErrors]>> & {
|
|
47
|
+
} & Payload_3, typeof S.Void, JoinSchema<[GetEffectError<RequestContextMap["config"], C_3> | GeneralErrors]>> & {
|
|
48
48
|
config: Omit<C_3, "success" | "failure">;
|
|
49
49
|
};
|
|
50
50
|
<Tag extends string, Payload_4 extends S.Struct.Fields>(tag: Tag, fields: Payload_4): S.TaggedRequestClass<Self, Tag, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeClient.d.ts","sourceRoot":"","sources":["../../src/client/makeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AACtC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"makeClient.d.ts","sourceRoot":"","sources":["../../src/client/makeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,10 @@ const merge = (a, b) => a !== undefined && b.length ? S.Union(a, ...b) : a !== u
|
|
|
5
5
|
* Whatever the input, we will only decode or encode to void
|
|
6
6
|
*/
|
|
7
7
|
const ForceVoid = S.transform(S.Any, S.Void, { decode: () => void 0, encode: () => void 0 });
|
|
8
|
-
export const makeRpcClient = (
|
|
8
|
+
export const makeRpcClient = (rcs, generalErrors) => {
|
|
9
9
|
function TaggedRequest() {
|
|
10
10
|
// TODO: filter errors based on config + take care of inversion
|
|
11
|
-
const errorSchemas = Object.values(
|
|
11
|
+
const errorSchemas = Object.values(rcs.config).map((_) => _.error);
|
|
12
12
|
return ((tag, fields, config) => {
|
|
13
13
|
// S.TaggedRequest is a factory function that creates a TaggedRequest class
|
|
14
14
|
const req = S.TaggedRequest()(tag, {
|
|
@@ -33,4 +33,4 @@ export const makeRpcClient = (errors, generalErrors) => {
|
|
|
33
33
|
TaggedRequest
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvbWFrZUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUtsQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBRSxDQUFhLEVBQUUsRUFBRSxDQUN0QyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0FBa0IzRzs7R0FFRztBQUNILE1BQU0sU0FBUyxHQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBRTVHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUczQixHQUFzQixFQUFFLGFBQTZCLEVBQUUsRUFBRTtJQVN6RCxTQUFTLGFBQWE7UUF1RXBCLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsRSxPQUFPLENBQUMsQ0FDTixHQUFRLEVBQ1IsTUFBYyxFQUNkLE1BQVUsRUFDVixFQUFFO1lBQ0YsMkVBQTJFO1lBQzNFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZDLE9BQU8sRUFBRSxNQUFNO2dCQUNmLDhDQUE4QztnQkFDOUMsT0FBTyxFQUFFLEtBQUssQ0FDWixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDcEcsQ0FBQyxHQUFHLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2pEO2dCQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTztvQkFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQzt3QkFDMUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTzt3QkFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLFNBQVM7YUFDZCxDQUFDLENBQUE7WUFDRixPQUFPLEtBQU0sU0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFTO2dCQUMxRCxZQUFZLE9BQVksRUFBRSxvQkFBeUIsSUFBSTtvQkFDckQsNkRBQTZEO29CQUM3RCxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7Z0JBQ25DLENBQUM7YUFDRixDQUFBO1FBQ0gsQ0FBQyxDQUFRLENBQUE7SUFDWCxDQUFDO0lBRUQsT0FBTztRQUNMLGFBQWE7S0FDZCxDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0=
|
|
@@ -5,7 +5,7 @@ import { type NonEmptyArray, type NonEmptyReadonlyArray } from "effect/Array";
|
|
|
5
5
|
import { type Scope } from "effect/Scope";
|
|
6
6
|
import { type Simplify } from "effect/Types";
|
|
7
7
|
import { type TypeTestId } from "../TypeTest.js";
|
|
8
|
-
import { type GetContextConfig, type RpcContextMap } from "./RpcContextMap.js";
|
|
8
|
+
import { type GetContextConfig, type RequestContextMapTagAny, type RpcContextMap } from "./RpcContextMap.js";
|
|
9
9
|
import { type AddMiddleware, type AnyDynamic, type RpcDynamic, type TagClassAny } from "./RpcMiddleware.js";
|
|
10
10
|
import * as RpcMiddlewareX from "./RpcMiddleware.js";
|
|
11
11
|
type MakeTags<A> = Context.Tag<A, A>;
|
|
@@ -118,8 +118,12 @@ export interface BuildingMiddleware<Self, Id extends string, RequestContextMap e
|
|
|
118
118
|
export type MiddlewaresBuilder<Self, Id extends string, RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap = never, Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [], DynamicMiddlewareProviders = unknown, MiddlewareR extends {
|
|
119
119
|
_tag: string;
|
|
120
120
|
} = never> = BuildingMiddleware<Self, Id, RequestContextMap, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> & // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
121
|
-
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<Self, Id, RequestContextMap, Middlewares> : {
|
|
122
|
-
|
|
121
|
+
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<Self, Id, RequestContextMap, Middlewares> : {
|
|
122
|
+
new (_: never): {};
|
|
123
|
+
} : {
|
|
124
|
+
new (_: never): {};
|
|
125
|
+
});
|
|
126
|
+
export declare const Tag: <Self>() => <const Id extends string, RequestContextMap extends RequestContextMapTagAny>(id: Id, rcm: RequestContextMap) => MiddlewaresBuilder<Self, Id, RequestContextMap["config"]>;
|
|
123
127
|
export declare const middlewareGroup: <RequestContextMap extends Record<string, RpcContextMap.Any>, Middleware extends RpcMiddleware.TagClassAny & {
|
|
124
128
|
readonly requestContext: RequestContextTag<RequestContextMap>;
|
|
125
129
|
readonly requestContextMap: RequestContextMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlewareMaker.d.ts","sourceRoot":"","sources":["../../src/rpc/MiddlewareMaker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AACzE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAC7E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"MiddlewareMaker.d.ts","sourceRoot":"","sources":["../../src/rpc/MiddlewareMaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ export const Tag = () => (id, rcm) => {
|
|
|
68
68
|
// based on the config, we must enhance (union) or set failures.
|
|
69
69
|
// TODO: we should only include errors that are relevant based on the middleware config.ks
|
|
70
70
|
const error = options?.error;
|
|
71
|
-
const errors = typedValuesOf(rcm).map((_) => _.error).filter((_) => _ && _ !== S.Never); // TODO: only the errors relevant based on config
|
|
71
|
+
const errors = typedValuesOf(rcm.config).map((_) => _.error).filter((_) => _ && _ !== S.Never); // TODO: only the errors relevant based on config
|
|
72
72
|
const newError = error ? S.Union(error, ...errors) : S.Union(...errors);
|
|
73
73
|
const rpc = Rpc.make(tag, { ...options, error: newError });
|
|
74
74
|
return Object.assign(rpc.annotate(requestContext, config), { config });
|
|
@@ -78,11 +78,11 @@ export const Tag = () => (id, rcm) => {
|
|
|
78
78
|
// recall that we run middlewares in reverse order
|
|
79
79
|
allMiddleware = [mw, ...allMiddleware];
|
|
80
80
|
}
|
|
81
|
-
return allMiddleware.filter((m) => !!m.dynamic).length !== Object.keys(rcm).length
|
|
81
|
+
return allMiddleware.filter((m) => !!m.dynamic).length !== Object.keys(rcm.config).length
|
|
82
82
|
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
83
83
|
? it
|
|
84
84
|
// actually, we don't know yet if MiddlewareR is never, but we can't easily check it at runtime
|
|
85
|
-
: Object.assign(makeMiddlewareBasic()(id, rcm, ...allMiddleware), it);
|
|
85
|
+
: Object.assign(makeMiddlewareBasic()(id, rcm.config, ...allMiddleware), it);
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
return it;
|
|
@@ -97,4 +97,4 @@ export const middlewareGroup = (middleware) => (group) => {
|
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZU1ha2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9NaWRkbGV3YXJlTWFrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQXFELE1BQU0sYUFBYSxDQUFBO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBSXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUczQyxPQUFPLEtBQUssY0FBYyxNQUFNLG9CQUFvQixDQUFBO0FBd09wRCxNQUFNLGVBQWUsR0FBRyxDQUV0QixXQUFnQyxFQVVoQyxFQUFFO0lBQ0Ysc0dBQXNHO0lBQ3RHLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFTLENBQUE7SUFFN0MsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFdkMsOERBQThEO1FBQzlELE9BQU8sQ0FDTCxRQUtJLEVBQ0osRUFBRTtZQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUE7WUFDckMsbUNBQW1DO1lBQ25DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQTtZQUVsQixxQ0FBcUM7WUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsaURBQWlEO2dCQUNqRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFFbEQsK0VBQStFO2dCQUMvRSxPQUFPLEdBQUcsYUFBYSxDQUFD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
|
|
@@ -1,73 +1,65 @@
|
|
|
1
1
|
import { type AnyWithProps } from "@effect/rpc/Rpc";
|
|
2
|
-
import {
|
|
3
|
-
import { type NonEmptyReadonlyArray } from "effect/Array";
|
|
4
|
-
import { type Tag } from "effect/Context";
|
|
2
|
+
import { type Schema as S } from "effect";
|
|
5
3
|
import { type RpcDynamic } from "./RpcMiddleware.js";
|
|
6
|
-
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
7
|
-
export declare const contextMap: <RequestContextMap extends Record<string, RpcContextMap.Any>, Key extends (keyof RequestContextMap) & string>(rcm: RequestContextMap, key: Key) => RpcDynamic<Key, RequestContextMap[Key]>;
|
|
8
|
-
/** Retrieves RequestContextConfig out of the Rpc annotations */
|
|
9
|
-
export declare const getConfig: <RequestContextMap extends Record<string, RpcContextMap.Any>>() => (rpc: AnyWithProps) => GetContextConfig<RequestContextMap>;
|
|
10
4
|
type Values<T extends Record<any, any>> = T[keyof T];
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/** @deprecated just use Service Identifier Union */
|
|
21
|
-
export declare namespace AnyService {
|
|
22
|
-
type Bla<A> = A extends ContextTagArray ? Context.Context<ContextTagArray.Identifier<A>> : A extends Context.Tag<any, any> ? Tag.Service<A> : never;
|
|
23
|
-
type Identifier<A> = A extends ContextTagArray ? ContextTagArray.Identifier<A> : A extends Context.Tag<any, any> ? Tag.Identifier<A> : never;
|
|
24
|
-
type Service<A> = A extends ContextTagArray ? ContextTagArray.Service<A> : A extends Context.Tag<any, any> ? Tag.Service<A> : never;
|
|
25
|
-
}
|
|
5
|
+
/**
|
|
6
|
+
* Middleware is inactivate by default, the Key is optional in route context, and the service is optionally provided as Effect Context.
|
|
7
|
+
* Unless explicitly configured as `true`.
|
|
8
|
+
*/
|
|
9
|
+
export type RpcContextMap<Service, E> = {
|
|
10
|
+
service: Service;
|
|
11
|
+
error: E;
|
|
12
|
+
contextActivation: true;
|
|
13
|
+
};
|
|
26
14
|
export declare namespace RpcContextMap {
|
|
27
|
-
/**
|
|
28
|
-
* Middleware is inactivate by default, the Key is optional in route context, and the service is optionally provided as Effect Context.
|
|
29
|
-
* Unless explicitly configured as `true`.
|
|
30
|
-
*/
|
|
31
|
-
type RpcContextMap<Service, E> = {
|
|
32
|
-
service: Service;
|
|
33
|
-
error: E;
|
|
34
|
-
contextActivation: true;
|
|
35
|
-
};
|
|
36
15
|
/**
|
|
37
16
|
* Middleware is active by default, and provides the Service at Key in route context, and the Service is provided as Effect Context.
|
|
38
17
|
* Unless explicitly omitted.
|
|
39
18
|
*/
|
|
40
|
-
type Inverted<Service
|
|
19
|
+
type Inverted<Service, E> = {
|
|
41
20
|
service: Service;
|
|
42
21
|
error: E;
|
|
43
22
|
contextActivation: false;
|
|
44
23
|
};
|
|
45
|
-
type Custom<Service
|
|
24
|
+
type Custom<Service, E, C> = {
|
|
46
25
|
service: Service;
|
|
47
26
|
error: E;
|
|
48
27
|
contextActivation: C;
|
|
49
28
|
};
|
|
50
29
|
type Any = {
|
|
51
|
-
service:
|
|
30
|
+
service: any;
|
|
52
31
|
error: S.Schema.All;
|
|
53
32
|
contextActivation: any;
|
|
54
33
|
};
|
|
55
|
-
const make: <Service extends AnyService, E>(service: Service, error: E) => RpcContextMap<Service, E>;
|
|
56
|
-
const makeInverted: <Service extends AnyService, E>(service: Service, error: E) => Inverted<Service, E>;
|
|
57
|
-
const makeCustom: <Service extends AnyService, E, C>(service: Service, error: E, contextActivation: C) => Custom<Service, E, C>;
|
|
58
34
|
}
|
|
59
35
|
export type GetContextConfig<RequestContextMap extends Record<string, RpcContextMap.Any>> = {
|
|
60
36
|
[K in keyof RequestContextMap]?: RequestContextMap[K]["contextActivation"] extends true ? false : RequestContextMap[K]["contextActivation"] extends false ? true : RequestContextMap[K]["contextActivation"];
|
|
61
37
|
};
|
|
62
38
|
export type GetEffectContext<RequestContextMap extends Record<string, RpcContextMap.Any>, T> = Values<{
|
|
63
|
-
[key in keyof RequestContextMap as RequestContextMap[key]["contextActivation"] extends true ? never : key extends keyof T ? T[key] extends true ? never : key : key]:
|
|
39
|
+
[key in keyof RequestContextMap as RequestContextMap[key]["contextActivation"] extends true ? never : key extends keyof T ? T[key] extends true ? never : key : key]: RequestContextMap[key]["service"];
|
|
64
40
|
} & {
|
|
65
|
-
[key in keyof RequestContextMap as RequestContextMap[key]["contextActivation"] extends false ? never : key extends keyof T ? T[key] extends true ? key : never : never]:
|
|
41
|
+
[key in keyof RequestContextMap as RequestContextMap[key]["contextActivation"] extends false ? never : key extends keyof T ? T[key] extends true ? key : never : never]: RequestContextMap[key]["service"];
|
|
66
42
|
}>;
|
|
67
43
|
export type GetEffectError<RequestContextMap extends Record<string, RpcContextMap.Any>, T> = Values<{
|
|
68
44
|
[key in keyof RequestContextMap as RequestContextMap[key]["contextActivation"] extends true ? never : key extends keyof T ? T[key] extends true ? never : key : key]: RequestContextMap[key]["error"];
|
|
69
45
|
} & {
|
|
70
46
|
[key in keyof RequestContextMap as RequestContextMap[key]["contextActivation"] extends false ? never : key extends keyof T ? T[key] extends true ? key : never : never]: RequestContextMap[key]["error"];
|
|
71
47
|
}>;
|
|
48
|
+
export declare const makeMap: <const Config extends Record<string, RpcContextMap.Any>>(config: Config) => {
|
|
49
|
+
new (): {
|
|
50
|
+
readonly config: Config;
|
|
51
|
+
};
|
|
52
|
+
} & {
|
|
53
|
+
config: Config;
|
|
54
|
+
getConfig: (rpc: AnyWithProps) => GetContextConfig<Config>;
|
|
55
|
+
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
56
|
+
get: <Key extends (keyof Config) & string>(key: Key) => RpcDynamic<Key, Config[Key]>;
|
|
57
|
+
};
|
|
58
|
+
export declare const make: <Service = never>() => <E>(error: E) => RpcContextMap<Service, E>;
|
|
59
|
+
export declare const makeInverted: <Service = never>() => <E>(error: E) => RpcContextMap.Inverted<Service, E>;
|
|
60
|
+
export declare const makeCustom: <Service = never>() => <E, C>(error: E, contextActivation: C) => RpcContextMap.Custom<Service, E, C>;
|
|
61
|
+
export type RequestContextMapTagAny = {
|
|
62
|
+
readonly config: Record<string, RpcContextMap.Any>;
|
|
63
|
+
};
|
|
72
64
|
export {};
|
|
73
65
|
//# sourceMappingURL=RpcContextMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcContextMap.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcContextMap.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"RpcContextMap.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcContextMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,32 +2,39 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
4
|
import { Context } from "effect";
|
|
5
|
-
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
6
|
-
export const contextMap = (rcm, key) => ({
|
|
7
|
-
key,
|
|
8
|
-
settings: { service: rcm[key]["service"] }
|
|
9
|
-
});
|
|
10
5
|
const tag = Context.GenericTag("RequestContextConfig");
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
service,
|
|
29
|
-
error,
|
|
30
|
-
contextActivation
|
|
6
|
+
export const makeMap = (config) => {
|
|
7
|
+
const cls = class {
|
|
8
|
+
config;
|
|
9
|
+
constructor() {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
return Object.assign(cls, {
|
|
14
|
+
config, /** Retrieves RequestContextConfig out of the Rpc annotations */
|
|
15
|
+
getConfig: (rpc) => {
|
|
16
|
+
return Context.getOrElse(rpc.annotations, tag, () => ({}));
|
|
17
|
+
},
|
|
18
|
+
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
19
|
+
get: (key) => ({
|
|
20
|
+
key,
|
|
21
|
+
settings: { service: config[key]["service"] }
|
|
22
|
+
})
|
|
31
23
|
});
|
|
32
|
-
}
|
|
33
|
-
|
|
24
|
+
};
|
|
25
|
+
export const make = () => (error) => ({
|
|
26
|
+
service: null,
|
|
27
|
+
error,
|
|
28
|
+
contextActivation: true
|
|
29
|
+
});
|
|
30
|
+
export const makeInverted = () => (error) => ({
|
|
31
|
+
service: null,
|
|
32
|
+
error,
|
|
33
|
+
contextActivation: false
|
|
34
|
+
});
|
|
35
|
+
export const makeCustom = () => (error, contextActivation) => ({
|
|
36
|
+
service: null,
|
|
37
|
+
error,
|
|
38
|
+
contextActivation
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjQ29udGV4dE1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ycGMvUnBjQ29udGV4dE1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUd2RCxPQUFPLEVBQUUsT0FBTyxFQUFvQixNQUFNLFFBQVEsQ0FBQTtBQXdGbEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBRXRELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUF5RCxNQUFjLEVBQUUsRUFBRTtJQUNoRyxNQUFNLEdBQUcsR0FBRztRQUNELE1BQU0sQ0FBUTtRQUN2QjtZQUNFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3RCLENBQUM7S0FDRixDQUFBO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixNQUFNLEVBQUUsZ0VBQWdFO1FBQ3hFLFNBQVMsRUFBRSxDQUFDLEdBQWlCLEVBQTRCLEVBQUU7WUFDekQsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNuRSxDQUFDO1FBQ0QsZ0ZBQWdGO1FBQ2hGLEdBQUcsRUFBRSxDQUVILEdBQVEsRUFBZ0MsRUFBRSxDQUFDLENBQUM7WUFDNUMsR0FBRztZQUNILFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFFLENBQUMsU0FBUyxDQUFDLEVBQWlCO1NBQzlELENBQUM7S0FDSCxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsR0FBb0IsRUFBRSxDQUMxQyxDQUNFLEtBQVEsRUFDbUIsRUFBRSxDQUFDLENBQUM7SUFDL0IsT0FBTyxFQUFFLElBQWU7SUFDeEIsS0FBSztJQUNMLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFBO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQW9CLEVBQUUsQ0FDbEQsQ0FDRSxLQUFRLEVBQzRCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sRUFBRSxJQUFlO0lBQ3hCLEtBQUs7SUFDTCxpQkFBaUIsRUFBRSxLQUFLO0NBQ3pCLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFvQixFQUFFLENBQ2hELENBQ0UsS0FBUSxFQUNSLGlCQUFvQixFQUNpQixFQUFFLENBQUMsQ0FBQztJQUN6QyxPQUFPLEVBQUUsSUFBZTtJQUN4QixLQUFLO0lBQ0wsaUJBQWlCO0NBQ2xCLENBQUMsQ0FBQSJ9
|
package/dist/rpc.d.ts
CHANGED
package/dist/rpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,UAAU,CAAA;AAChC,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,UAAU,CAAA;AAChC,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA"}
|
package/dist/rpc.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * as RpcX from "./rpc.js";
|
|
2
2
|
export * as MiddlewareMaker from "./rpc/MiddlewareMaker.js";
|
|
3
|
+
export * as RpcContextMap from "./rpc/RpcContextMap.js";
|
|
3
4
|
export * as RpcMiddleware from "./rpc/RpcMiddleware.js";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFVBQVUsQ0FBQTtBQUNoQyxPQUFPLEtBQUssZUFBZSxNQUFNLDBCQUEwQixDQUFBO0FBQzNELE9BQU8sS0FBSyxhQUFhLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQSJ9
|
package/package.json
CHANGED
package/src/client/makeClient.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { S } from "../internal/lib.js"
|
|
2
|
-
import { type GetEffectError, type
|
|
2
|
+
import { type GetContextConfig, type GetEffectError, type RequestContextMapTagAny } from "../rpc/RpcContextMap.js"
|
|
3
3
|
import { AST } from "../Schema.js"
|
|
4
4
|
|
|
5
5
|
// TODO: Fix error types... (?)
|
|
@@ -30,19 +30,17 @@ type SchemaOrFields<T> = T extends S.Struct.Fields ? S.TypeLiteral<T, []> : T ex
|
|
|
30
30
|
const ForceVoid: S.Schema<void> = S.transform(S.Any, S.Void, { decode: () => void 0, encode: () => void 0 })
|
|
31
31
|
|
|
32
32
|
export const makeRpcClient = <
|
|
33
|
-
|
|
34
|
-
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
33
|
+
RequestContextMap extends RequestContextMapTagAny,
|
|
35
34
|
GeneralErrors extends S.Schema.All = never
|
|
36
|
-
>(
|
|
37
|
-
errors: { [K in keyof RequestContextMap]: RequestContextMap[K]["error"] },
|
|
38
|
-
generalErrors?: GeneralErrors
|
|
39
|
-
) => {
|
|
35
|
+
>(rcs: RequestContextMap, generalErrors?: GeneralErrors) => {
|
|
40
36
|
// Long way around Context/C extends etc to support actual jsdoc from passed in RequestConfig etc... (??)
|
|
41
37
|
type Context = {
|
|
42
38
|
success: S.Schema.Any | S.Struct.Fields // SchemaOrFields will make a Schema type out of Struct.Fields
|
|
43
39
|
failure: S.Schema.Any | S.Struct.Fields // SchemaOrFields will make a Schema type out of Struct.Fields
|
|
44
40
|
}
|
|
45
41
|
|
|
42
|
+
type RequestConfig = GetContextConfig<RequestContextMap["config"]>
|
|
43
|
+
|
|
46
44
|
function TaggedRequest<Self>(): {
|
|
47
45
|
<Tag extends string, Payload extends S.Struct.Fields, C extends Context>(
|
|
48
46
|
tag: Tag,
|
|
@@ -55,7 +53,7 @@ export const makeRpcClient = <
|
|
|
55
53
|
{ readonly _tag: S.tag<Tag> } & Payload,
|
|
56
54
|
SchemaOrFields<typeof config["success"]>,
|
|
57
55
|
JoinSchema<
|
|
58
|
-
[SchemaOrFields<typeof config["failure"]> | GetEffectError<RequestContextMap, C> | GeneralErrors]
|
|
56
|
+
[SchemaOrFields<typeof config["failure"]> | GetEffectError<RequestContextMap["config"], C> | GeneralErrors]
|
|
59
57
|
>
|
|
60
58
|
>
|
|
61
59
|
& { config: Omit<C, "success" | "failure"> }
|
|
@@ -69,7 +67,7 @@ export const makeRpcClient = <
|
|
|
69
67
|
Tag,
|
|
70
68
|
{ readonly _tag: S.tag<Tag> } & Payload,
|
|
71
69
|
SchemaOrFields<typeof config["success"]>,
|
|
72
|
-
JoinSchema<[GetEffectError<RequestContextMap, C> | GeneralErrors]>
|
|
70
|
+
JoinSchema<[GetEffectError<RequestContextMap["config"], C> | GeneralErrors]>
|
|
73
71
|
>
|
|
74
72
|
& { config: Omit<C, "success" | "failure"> }
|
|
75
73
|
<Tag extends string, Payload extends S.Struct.Fields, C extends Pick<Context, "failure">>(
|
|
@@ -83,7 +81,7 @@ export const makeRpcClient = <
|
|
|
83
81
|
{ readonly _tag: S.tag<Tag> } & Payload,
|
|
84
82
|
typeof S.Void,
|
|
85
83
|
JoinSchema<
|
|
86
|
-
[SchemaOrFields<typeof config["failure"]> | GetEffectError<RequestContextMap, C> | GeneralErrors]
|
|
84
|
+
[SchemaOrFields<typeof config["failure"]> | GetEffectError<RequestContextMap["config"], C> | GeneralErrors]
|
|
87
85
|
>
|
|
88
86
|
>
|
|
89
87
|
& { config: Omit<C, "success" | "failure"> }
|
|
@@ -97,7 +95,7 @@ export const makeRpcClient = <
|
|
|
97
95
|
Tag,
|
|
98
96
|
{ readonly _tag: S.tag<Tag> } & Payload,
|
|
99
97
|
typeof S.Void,
|
|
100
|
-
JoinSchema<[GetEffectError<RequestContextMap, C> | GeneralErrors]>
|
|
98
|
+
JoinSchema<[GetEffectError<RequestContextMap["config"], C> | GeneralErrors]>
|
|
101
99
|
>
|
|
102
100
|
& { config: Omit<C, "success" | "failure"> }
|
|
103
101
|
<Tag extends string, Payload extends S.Struct.Fields>(
|
|
@@ -115,7 +113,7 @@ export const makeRpcClient = <
|
|
|
115
113
|
& { config: {} }
|
|
116
114
|
} {
|
|
117
115
|
// TODO: filter errors based on config + take care of inversion
|
|
118
|
-
const errorSchemas = Object.values(
|
|
116
|
+
const errorSchemas = Object.values(rcs.config).map((_) => _.error)
|
|
119
117
|
return (<Tag extends string, Fields extends S.Struct.Fields, C extends Context>(
|
|
120
118
|
tag: Tag,
|
|
121
119
|
fields: Fields,
|
|
@@ -8,11 +8,11 @@ import { type Simplify } from "effect/Types"
|
|
|
8
8
|
import { PreludeLogger } from "../logger.js"
|
|
9
9
|
import { type TypeTestId } from "../TypeTest.js"
|
|
10
10
|
import { typedValuesOf } from "../utils.js"
|
|
11
|
-
import { type GetContextConfig, type RpcContextMap } from "./RpcContextMap.js"
|
|
11
|
+
import { type GetContextConfig, type RequestContextMapTagAny, type RpcContextMap } from "./RpcContextMap.js"
|
|
12
12
|
import { type AddMiddleware, type AnyDynamic, type RpcDynamic, type RpcMiddlewareV4, type TagClassAny } from "./RpcMiddleware.js"
|
|
13
13
|
import * as RpcMiddlewareX from "./RpcMiddleware.js"
|
|
14
14
|
|
|
15
|
-
// adapter for v3
|
|
15
|
+
// adapter for effect/rpc v3 middleware provides. (in effect-smol (v4), it's wrap only, and just a Service Identifier, no tags.)
|
|
16
16
|
type MakeTags<A> = Context.Tag<A, A>
|
|
17
17
|
|
|
18
18
|
export interface MiddlewareMaker<
|
|
@@ -239,8 +239,8 @@ export type MiddlewaresBuilder<
|
|
|
239
239
|
RequestContextMap,
|
|
240
240
|
Middlewares
|
|
241
241
|
>
|
|
242
|
-
: {}
|
|
243
|
-
: {})
|
|
242
|
+
: { new(_: never): {} }
|
|
243
|
+
: { new(_: never): {} })
|
|
244
244
|
|
|
245
245
|
const middlewareMaker = <
|
|
246
246
|
MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
|
|
@@ -358,10 +358,10 @@ const makeMiddlewareBasic = <Self>() =>
|
|
|
358
358
|
export const Tag = <Self>() =>
|
|
359
359
|
<
|
|
360
360
|
const Id extends string,
|
|
361
|
-
RequestContextMap extends
|
|
362
|
-
>(id: Id, rcm: RequestContextMap): MiddlewaresBuilder<Self, Id, RequestContextMap> => {
|
|
361
|
+
RequestContextMap extends RequestContextMapTagAny
|
|
362
|
+
>(id: Id, rcm: RequestContextMap): MiddlewaresBuilder<Self, Id, RequestContextMap["config"]> => {
|
|
363
363
|
let allMiddleware: MiddlewareMaker.Any[] = []
|
|
364
|
-
const requestContext = Context.GenericTag<"RequestContextConfig", GetContextConfig<RequestContextMap>>(
|
|
364
|
+
const requestContext = Context.GenericTag<"RequestContextConfig", GetContextConfig<RequestContextMap["config"]>>(
|
|
365
365
|
"RequestContextConfig"
|
|
366
366
|
)
|
|
367
367
|
const it = {
|
|
@@ -373,7 +373,7 @@ export const Tag = <Self>() =>
|
|
|
373
373
|
Success extends Schema.Schema.Any = typeof Schema.Void,
|
|
374
374
|
Error extends Schema.Schema.All = typeof Schema.Never,
|
|
375
375
|
const Stream extends boolean = false,
|
|
376
|
-
Config extends GetContextConfig<RequestContextMap> = {}
|
|
376
|
+
Config extends GetContextConfig<RequestContextMap["config"]> = {}
|
|
377
377
|
>(tag: Tag, options?: {
|
|
378
378
|
readonly payload?: Payload
|
|
379
379
|
readonly success?: Success
|
|
@@ -398,7 +398,7 @@ export const Tag = <Self>() =>
|
|
|
398
398
|
// based on the config, we must enhance (union) or set failures.
|
|
399
399
|
// TODO: we should only include errors that are relevant based on the middleware config.ks
|
|
400
400
|
const error = options?.error
|
|
401
|
-
const errors = typedValuesOf(rcm).map((_) => _.error).filter((_) => _ && _ !== S.Never) // TODO: only the errors relevant based on config
|
|
401
|
+
const errors = typedValuesOf(rcm.config).map((_) => _.error).filter((_) => _ && _ !== S.Never) // TODO: only the errors relevant based on config
|
|
402
402
|
const newError = error ? S.Union(error, ...errors) : S.Union(...errors)
|
|
403
403
|
|
|
404
404
|
const rpc = Rpc.make(tag, { ...options, error: newError }) as any
|
|
@@ -410,11 +410,11 @@ export const Tag = <Self>() =>
|
|
|
410
410
|
// recall that we run middlewares in reverse order
|
|
411
411
|
allMiddleware = [mw, ...allMiddleware]
|
|
412
412
|
}
|
|
413
|
-
return allMiddleware.filter((m) => !!m.dynamic).length !== Object.keys(rcm).length
|
|
413
|
+
return allMiddleware.filter((m) => !!m.dynamic).length !== Object.keys(rcm.config).length
|
|
414
414
|
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
415
415
|
? it
|
|
416
416
|
// actually, we don't know yet if MiddlewareR is never, but we can't easily check it at runtime
|
|
417
|
-
: Object.assign(makeMiddlewareBasic<Self>()<Id, any, any>(id, rcm, ...allMiddleware), it)
|
|
417
|
+
: Object.assign(makeMiddlewareBasic<Self>()<Id, any, any>(id, rcm.config, ...allMiddleware), it)
|
|
418
418
|
}
|
|
419
419
|
}
|
|
420
420
|
return it as any
|
package/src/rpc/RpcContextMap.ts
CHANGED
|
@@ -4,114 +4,43 @@
|
|
|
4
4
|
|
|
5
5
|
import { type AnyWithProps } from "@effect/rpc/Rpc"
|
|
6
6
|
import { Context, type Schema as S } from "effect"
|
|
7
|
-
import { type NonEmptyReadonlyArray } from "effect/Array"
|
|
8
|
-
import { type Tag } from "effect/Context"
|
|
9
7
|
import { type RpcDynamic } from "./RpcMiddleware.js"
|
|
10
8
|
|
|
11
|
-
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
12
|
-
export const contextMap = <
|
|
13
|
-
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
14
|
-
Key extends (keyof RequestContextMap) & string
|
|
15
|
-
>(rcm: RequestContextMap, key: Key): RpcDynamic<Key, RequestContextMap[Key]> => ({
|
|
16
|
-
key,
|
|
17
|
-
settings: { service: rcm[key]!["service"] } as RequestContextMap[Key]
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
const tag = Context.GenericTag("RequestContextConfig")
|
|
21
|
-
/** Retrieves RequestContextConfig out of the Rpc annotations */
|
|
22
|
-
export const getConfig = <
|
|
23
|
-
RequestContextMap extends Record<string, RpcContextMap.Any>
|
|
24
|
-
>() =>
|
|
25
|
-
(rpc: AnyWithProps): GetContextConfig<RequestContextMap> => {
|
|
26
|
-
return Context.getOrElse(rpc.annotations, tag as any, () => ({}))
|
|
27
|
-
}
|
|
28
|
-
|
|
29
9
|
type Values<T extends Record<any, any>> = T[keyof T]
|
|
30
10
|
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/** @deprecated just use Service Identifier Union */
|
|
41
|
-
export type AnyService = Context.Tag<any, any> | ContextTagArray
|
|
42
|
-
/** @deprecated just use Service Identifier Union */
|
|
43
|
-
export namespace AnyService {
|
|
44
|
-
export type Bla<A> = A extends ContextTagArray ? Context.Context<ContextTagArray.Identifier<A>>
|
|
45
|
-
: A extends Context.Tag<any, any> ? Tag.Service<A>
|
|
46
|
-
: never
|
|
47
|
-
export type Identifier<A> = A extends ContextTagArray ? ContextTagArray.Identifier<A>
|
|
48
|
-
: A extends Context.Tag<any, any> ? Tag.Identifier<A>
|
|
49
|
-
: never
|
|
50
|
-
export type Service<A> = A extends ContextTagArray ? ContextTagArray.Service<A>
|
|
51
|
-
: A extends Context.Tag<any, any> ? Tag.Service<A>
|
|
52
|
-
: never
|
|
11
|
+
/**
|
|
12
|
+
* Middleware is inactivate by default, the Key is optional in route context, and the service is optionally provided as Effect Context.
|
|
13
|
+
* Unless explicitly configured as `true`.
|
|
14
|
+
*/
|
|
15
|
+
export type RpcContextMap<Service, E> = {
|
|
16
|
+
// todo; rename Provides
|
|
17
|
+
service: Service
|
|
18
|
+
error: E
|
|
19
|
+
contextActivation: true
|
|
53
20
|
}
|
|
54
21
|
|
|
55
|
-
export namespace RpcContextMap {
|
|
56
|
-
/**
|
|
57
|
-
* Middleware is inactivate by default, the Key is optional in route context, and the service is optionally provided as Effect Context.
|
|
58
|
-
* Unless explicitly configured as `true`.
|
|
59
|
-
*/
|
|
60
|
-
export type RpcContextMap<Service, E> = {
|
|
61
|
-
service: Service
|
|
62
|
-
error: E
|
|
63
|
-
contextActivation: true
|
|
64
|
-
}
|
|
65
|
-
|
|
22
|
+
export declare namespace RpcContextMap {
|
|
66
23
|
/**
|
|
67
24
|
* Middleware is active by default, and provides the Service at Key in route context, and the Service is provided as Effect Context.
|
|
68
25
|
* Unless explicitly omitted.
|
|
69
26
|
*/
|
|
70
|
-
export type Inverted<Service
|
|
27
|
+
export type Inverted<Service, E> = {
|
|
71
28
|
service: Service
|
|
72
29
|
error: E
|
|
73
30
|
contextActivation: false
|
|
74
31
|
}
|
|
75
32
|
|
|
76
|
-
export type Custom<Service
|
|
33
|
+
export type Custom<Service, E, C> = {
|
|
77
34
|
service: Service
|
|
78
35
|
error: E
|
|
79
36
|
contextActivation: C
|
|
80
37
|
}
|
|
81
38
|
|
|
82
39
|
export type Any = {
|
|
83
|
-
service:
|
|
40
|
+
service: any
|
|
84
41
|
error: S.Schema.All
|
|
85
42
|
contextActivation: any
|
|
86
43
|
}
|
|
87
|
-
|
|
88
|
-
export const make = <Service extends AnyService, E>(
|
|
89
|
-
service: Service,
|
|
90
|
-
error: E
|
|
91
|
-
): RpcContextMap<Service, E> => ({
|
|
92
|
-
service,
|
|
93
|
-
error,
|
|
94
|
-
contextActivation: true
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
export const makeInverted = <Service extends AnyService, E>(
|
|
98
|
-
service: Service,
|
|
99
|
-
error: E
|
|
100
|
-
): Inverted<Service, E> => ({
|
|
101
|
-
service,
|
|
102
|
-
error,
|
|
103
|
-
contextActivation: false
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
export const makeCustom = <Service extends AnyService, E, C>(
|
|
107
|
-
service: Service,
|
|
108
|
-
error: E,
|
|
109
|
-
contextActivation: C
|
|
110
|
-
): Custom<Service, E, C> => ({
|
|
111
|
-
service,
|
|
112
|
-
error,
|
|
113
|
-
contextActivation
|
|
114
|
-
})
|
|
115
44
|
}
|
|
116
45
|
|
|
117
46
|
export type GetContextConfig<RequestContextMap extends Record<string, RpcContextMap.Any>> = {
|
|
@@ -128,7 +57,7 @@ export type GetEffectContext<RequestContextMap extends Record<string, RpcContext
|
|
|
128
57
|
: key extends keyof T ? T[key] extends true ? never : key
|
|
129
58
|
: key
|
|
130
59
|
]: // TODO: or as an Optional available?
|
|
131
|
-
|
|
60
|
+
RequestContextMap[key]["service"]
|
|
132
61
|
}
|
|
133
62
|
// normal: contextActivation is true => add if explicitly set to true
|
|
134
63
|
& {
|
|
@@ -137,7 +66,7 @@ export type GetEffectContext<RequestContextMap extends Record<string, RpcContext
|
|
|
137
66
|
: key extends keyof T ? T[key] extends true ? key : never
|
|
138
67
|
: never
|
|
139
68
|
]: // TODO: or as an Optional available?
|
|
140
|
-
|
|
69
|
+
RequestContextMap[key]["service"]
|
|
141
70
|
}
|
|
142
71
|
>
|
|
143
72
|
|
|
@@ -161,3 +90,57 @@ export type GetEffectError<RequestContextMap extends Record<string, RpcContextMa
|
|
|
161
90
|
RequestContextMap[key]["error"]
|
|
162
91
|
}
|
|
163
92
|
>
|
|
93
|
+
|
|
94
|
+
const tag = Context.GenericTag("RequestContextConfig")
|
|
95
|
+
|
|
96
|
+
export const makeMap = <const Config extends Record<string, RpcContextMap.Any>>(config: Config) => {
|
|
97
|
+
const cls = class {
|
|
98
|
+
readonly config: Config
|
|
99
|
+
constructor() {
|
|
100
|
+
this.config = config
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return Object.assign(cls, {
|
|
104
|
+
config, /** Retrieves RequestContextConfig out of the Rpc annotations */
|
|
105
|
+
getConfig: (rpc: AnyWithProps): GetContextConfig<Config> => {
|
|
106
|
+
return Context.getOrElse(rpc.annotations, tag as any, () => ({}))
|
|
107
|
+
},
|
|
108
|
+
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
109
|
+
get: <
|
|
110
|
+
Key extends (keyof Config) & string
|
|
111
|
+
>(key: Key): RpcDynamic<Key, Config[Key]> => ({
|
|
112
|
+
key,
|
|
113
|
+
settings: { service: config[key]!["service"] } as Config[Key]
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export const make = <Service = never>() =>
|
|
119
|
+
<E>(
|
|
120
|
+
error: E
|
|
121
|
+
): RpcContextMap<Service, E> => ({
|
|
122
|
+
service: null as Service,
|
|
123
|
+
error,
|
|
124
|
+
contextActivation: true
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
export const makeInverted = <Service = never>() =>
|
|
128
|
+
<E>(
|
|
129
|
+
error: E
|
|
130
|
+
): RpcContextMap.Inverted<Service, E> => ({
|
|
131
|
+
service: null as Service,
|
|
132
|
+
error,
|
|
133
|
+
contextActivation: false
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
export const makeCustom = <Service = never>() =>
|
|
137
|
+
<E, C>(
|
|
138
|
+
error: E,
|
|
139
|
+
contextActivation: C
|
|
140
|
+
): RpcContextMap.Custom<Service, E, C> => ({
|
|
141
|
+
service: null as Service,
|
|
142
|
+
error,
|
|
143
|
+
contextActivation
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
export type RequestContextMapTagAny = { readonly config: Record<string, RpcContextMap.Any> }
|
package/src/rpc.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.test.d.ts","sourceRoot":"","sources":["../rpc.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.test.d.ts","sourceRoot":"","sources":["../rpc.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACrF,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIL,qBAAa,KAAM,SAAQ,UAQzB;CAAG"}
|
package/test/rpc.test.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { makeRpcClient } from "../src/client.js"
|
|
1
|
+
import { makeRpcClient, NotLoggedInError, UnauthorizedError } from "../src/client.js"
|
|
2
2
|
import { S } from "../src/index.js"
|
|
3
|
+
import { RpcContextMap } from "../src/rpc.js"
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
export class RequestContextMap extends RpcContextMap.makeMap({
|
|
6
|
+
allowAnonymous: RpcContextMap.makeInverted()(NotLoggedInError),
|
|
7
|
+
requireRoles: RpcContextMap.makeCustom()(UnauthorizedError, Array<string>()),
|
|
8
|
+
test: RpcContextMap.make()(S.Never)
|
|
9
|
+
}) {}
|
|
10
|
+
|
|
11
|
+
const { TaggedRequest } = makeRpcClient(RequestContextMap)
|
|
5
12
|
|
|
6
13
|
export class Stats extends TaggedRequest<Stats>()("Stats", {}, {
|
|
7
14
|
allowedRoles: ["manager"],
|