effect-app 3.0.4 → 3.0.6
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 +12 -0
- package/dist/client/makeClient.d.ts +1 -1
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/middleware.d.ts +4 -4
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +5 -5
- package/dist/rpc/MiddlewareMaker.d.ts +17 -10
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +7 -6
- package/dist/rpc.d.ts +3 -4
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +4 -7
- package/package.json +1 -1
- package/src/client/makeClient.ts +1 -1
- package/src/middleware.ts +6 -4
- package/src/rpc/MiddlewareMaker.ts +93 -69
- package/src/rpc.ts +3 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 3.0.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 868eab6: cleanup
|
|
8
|
+
|
|
9
|
+
## 3.0.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 182ca78: improve: MiddlewareMaker is a Tag with Self so we can extend it from class.
|
|
14
|
+
|
|
3
15
|
## 3.0.4
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { S } from "../internal/lib.js";
|
|
2
|
-
import { type GetEffectError, type RpcContextMap } from "../rpc.js";
|
|
2
|
+
import { type GetEffectError, type RpcContextMap } 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.
|
|
@@ -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,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"makeClient.d.ts","sourceRoot":"","sources":["../../src/client/makeClient.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Context } from "effect-app";
|
|
2
|
-
import {
|
|
2
|
+
import { RpcX } from "./rpc.js";
|
|
3
3
|
declare const DevMode_base: Context.ReferenceClass<DevMode, "DevMode", boolean>;
|
|
4
4
|
export declare class DevMode extends DevMode_base {
|
|
5
5
|
}
|
|
6
|
-
declare const RequestCacheMiddleware_base:
|
|
6
|
+
declare const RequestCacheMiddleware_base: RpcX.RpcMiddleware.TagClass<RequestCacheMiddleware, "RequestCacheMiddleware", {}, {
|
|
7
7
|
requires: never;
|
|
8
8
|
provides: never;
|
|
9
9
|
}>;
|
|
10
10
|
export declare class RequestCacheMiddleware extends RequestCacheMiddleware_base {
|
|
11
11
|
}
|
|
12
|
-
declare const ConfigureInterruptibilityMiddleware_base:
|
|
12
|
+
declare const ConfigureInterruptibilityMiddleware_base: RpcX.RpcMiddleware.TagClass<ConfigureInterruptibilityMiddleware, "ConfigureInterruptibilityMiddleware", {}, {
|
|
13
13
|
requires: never;
|
|
14
14
|
provides: never;
|
|
15
15
|
}>;
|
|
16
16
|
export declare class ConfigureInterruptibilityMiddleware extends ConfigureInterruptibilityMiddleware_base {
|
|
17
17
|
}
|
|
18
|
-
declare const LoggerMiddleware_base:
|
|
18
|
+
declare const LoggerMiddleware_base: RpcX.RpcMiddleware.TagClass<LoggerMiddleware, "LoggerMiddleware", {}, {
|
|
19
19
|
requires: never;
|
|
20
20
|
provides: never;
|
|
21
21
|
}>;
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;;AAE/B,qBAAa,OAAQ,SAAQ,YAAsE;CAAG;;;;;AAEtG,qBAAa,sBACX,SAAQ,2BAA0E;CAClF;;;;;AAEF,qBAAa,mCACX,SAAQ,wCAAoG;CAC5G;;;;;AAEF,qBAAa,gBAAiB,SAAQ,qBAA8D;CAAG;AAEvG,eAAO,MAAM,yBAAyB,+GAI5B,CAAA"}
|
package/dist/middleware.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Context } from "effect-app";
|
|
3
|
-
import {
|
|
3
|
+
import { RpcX } from "./rpc.js";
|
|
4
4
|
export class DevMode extends Context.Reference()("DevMode", { defaultValue: () => false }) {
|
|
5
5
|
}
|
|
6
|
-
export class RequestCacheMiddleware extends
|
|
6
|
+
export class RequestCacheMiddleware extends RpcX.RpcMiddleware.Tag()("RequestCacheMiddleware") {
|
|
7
7
|
}
|
|
8
|
-
export class ConfigureInterruptibilityMiddleware extends
|
|
8
|
+
export class ConfigureInterruptibilityMiddleware extends RpcX.RpcMiddleware.Tag()("ConfigureInterruptibilityMiddleware") {
|
|
9
9
|
}
|
|
10
|
-
export class LoggerMiddleware extends
|
|
10
|
+
export class LoggerMiddleware extends RpcX.RpcMiddleware.Tag()("LoggerMiddleware") {
|
|
11
11
|
}
|
|
12
12
|
export const DefaultGenericMiddlewares = [
|
|
13
13
|
RequestCacheMiddleware,
|
|
14
14
|
ConfigureInterruptibilityMiddleware,
|
|
15
15
|
LoggerMiddleware
|
|
16
16
|
];
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFL0IsTUFBTSxPQUFPLE9BQVEsU0FBUSxPQUFPLENBQUMsU0FBUyxFQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0NBQUc7QUFFdEcsTUFBTSxPQUFPLHNCQUNYLFNBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQTBCLENBQUMsd0JBQXdCLENBQUM7Q0FDbEY7QUFFRixNQUFNLE9BQU8sbUNBQ1gsU0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBdUMsQ0FBQyxxQ0FBcUMsQ0FBQztDQUM1RztBQUVGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBb0IsQ0FBQyxrQkFBa0IsQ0FBQztDQUFHO0FBRXZHLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLHNCQUFzQjtJQUN0QixtQ0FBbUM7SUFDbkMsZ0JBQWdCO0NBQ1IsQ0FBQSJ9
|
|
@@ -2,7 +2,6 @@ import { Rpc, type RpcGroup, type RpcMiddleware, type RpcSchema } from "@effect/
|
|
|
2
2
|
import { type HandlersFrom } from "@effect/rpc/RpcGroup";
|
|
3
3
|
import { Context, Effect, Layer, type Schema, Schema as S } from "effect";
|
|
4
4
|
import { type NonEmptyArray, type NonEmptyReadonlyArray } from "effect/Array";
|
|
5
|
-
import { type Tag } from "effect/Context";
|
|
6
5
|
import { type Scope } from "effect/Scope";
|
|
7
6
|
import { type Simplify } from "effect/Types";
|
|
8
7
|
import { type TypeTestId } from "../TypeTest.js";
|
|
@@ -13,7 +12,7 @@ export interface MiddlewareMakerId {
|
|
|
13
12
|
readonly _id: unique symbol;
|
|
14
13
|
}
|
|
15
14
|
type MakeTags<A> = Context.Tag<A, A>;
|
|
16
|
-
export interface MiddlewareMaker<RequestContextMap extends Record<string, RpcContextMap.Any>, MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>> extends RpcMiddleware.TagClass<
|
|
15
|
+
export interface MiddlewareMaker<Self, Id extends string, RequestContextMap extends Record<string, RpcContextMap.Any>, MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>> extends RpcMiddleware.TagClass<Self, Id, Simplify<{
|
|
17
16
|
readonly wrap: true;
|
|
18
17
|
} & (Exclude<MiddlewareMaker.ManyRequired<MiddlewareProviders>, MiddlewareMaker.ManyProvided<MiddlewareProviders>> extends never ? {} : {
|
|
19
18
|
readonly requires: MakeTags<Exclude<MiddlewareMaker.ManyRequired<MiddlewareProviders>, MiddlewareMaker.ManyProvided<MiddlewareProviders>>>;
|
|
@@ -22,7 +21,7 @@ export interface MiddlewareMaker<RequestContextMap extends Record<string, RpcCon
|
|
|
22
21
|
}) & (MiddlewareMaker.ManyProvided<MiddlewareProviders> extends never ? {} : {
|
|
23
22
|
readonly provides: MakeTags<MiddlewareMaker.ManyProvided<MiddlewareProviders>>;
|
|
24
23
|
})>> {
|
|
25
|
-
readonly layer: Layer.Layer<
|
|
24
|
+
readonly layer: Layer.Layer<Self, never, Context.Tag.Identifier<MiddlewareProviders[number]>>;
|
|
26
25
|
readonly requestContext: RequestContextTag<RequestContextMap>;
|
|
27
26
|
readonly requestContextMap: RequestContextMap;
|
|
28
27
|
}
|
|
@@ -66,12 +65,16 @@ type FilterInDynamicMiddlewares<MWs extends ReadonlyArray<MiddlewareMaker.Any>,
|
|
|
66
65
|
} ? MWs[K] : never;
|
|
67
66
|
};
|
|
68
67
|
type RecursiveHandleMWsSideways<MWs, R extends {
|
|
68
|
+
self: any;
|
|
69
|
+
id: string;
|
|
69
70
|
rcm: Record<string, RpcContextMap.Any>;
|
|
70
71
|
provided: keyof R["rcm"];
|
|
71
72
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>;
|
|
72
73
|
dmp: any;
|
|
73
74
|
middlewareR: any;
|
|
74
75
|
}> = MWs extends [] ? R : MWs extends [infer F, ...infer Rest extends ReadonlyArray<any>] ? F extends MiddlewareMaker.Any ? RecursiveHandleMWsSideways<Rest, {
|
|
76
|
+
self: R["self"];
|
|
77
|
+
id: R["id"];
|
|
75
78
|
rcm: R["rcm"];
|
|
76
79
|
provided: Exclude<R["provided"] | FilterInDynamicMiddlewares<[F], R["rcm"]>[number]["dynamic"]["key"], GetDependsOnKeys<F>>;
|
|
77
80
|
middlewares: [...R["middlewares"], F];
|
|
@@ -80,7 +83,7 @@ type RecursiveHandleMWsSideways<MWs, R extends {
|
|
|
80
83
|
};
|
|
81
84
|
middlewareR: MiddlewareMaker.ApplyManyServices<[F], R["middlewareR"]>;
|
|
82
85
|
}> : `Absurd: F must extend MiddlewareMaker.Any` : never;
|
|
83
|
-
export interface BuildingMiddleware<RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap, Middlewares extends ReadonlyArray<MiddlewareMaker.Any>, DynamicMiddlewareProviders, out MiddlewareR extends {
|
|
86
|
+
export interface BuildingMiddleware<Self, Id extends string, RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap, Middlewares extends ReadonlyArray<MiddlewareMaker.Any>, DynamicMiddlewareProviders, out MiddlewareR extends {
|
|
84
87
|
_tag: string;
|
|
85
88
|
} = never> {
|
|
86
89
|
rpc: <const Tag extends string, Payload extends Schema.Schema.Any | Schema.Struct.Fields = typeof Schema.Void, Success extends Schema.Schema.Any = typeof Schema.Void, Error extends Schema.Schema.All = typeof Schema.Never, const Stream extends boolean = false, Config extends GetContextConfig<RequestContextMap> = {}>(tag: Tag, options?: {
|
|
@@ -94,29 +97,33 @@ export interface BuildingMiddleware<RequestContextMap extends Record<string, Rpc
|
|
|
94
97
|
readonly config: Config;
|
|
95
98
|
};
|
|
96
99
|
middleware<MWs extends NonEmptyArray<MiddlewareMaker.Any>>(...mw: MWs): RecursiveHandleMWsSideways<MWs, {
|
|
100
|
+
self: Self;
|
|
101
|
+
id: Id;
|
|
97
102
|
rcm: RequestContextMap;
|
|
98
103
|
provided: Provided;
|
|
99
104
|
middlewares: Middlewares;
|
|
100
105
|
dmp: DynamicMiddlewareProviders;
|
|
101
106
|
middlewareR: MiddlewareR;
|
|
102
107
|
}> extends infer Res extends {
|
|
108
|
+
self: any;
|
|
109
|
+
id: string;
|
|
103
110
|
rcm: RequestContextMap;
|
|
104
111
|
provided: keyof RequestContextMap;
|
|
105
112
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>;
|
|
106
113
|
dmp: any;
|
|
107
114
|
middlewareR: any;
|
|
108
|
-
} ? MiddlewaresBuilder<Res["rcm"], Res["provided"], Res["middlewares"], Res["dmp"], Res["middlewareR"]> : never;
|
|
115
|
+
} ? MiddlewaresBuilder<Res["self"], Res["id"], Res["rcm"], Res["provided"], Res["middlewares"], Res["dmp"], Res["middlewareR"]> : never;
|
|
109
116
|
readonly [TypeTestId]: {
|
|
110
117
|
missingDynamicMiddlewares: Exclude<keyof RequestContextMap, Provided>;
|
|
111
118
|
missingContext: MiddlewareR;
|
|
112
119
|
};
|
|
113
120
|
}
|
|
114
|
-
export type MiddlewaresBuilder<RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap = never, Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [], DynamicMiddlewareProviders = unknown, MiddlewareR extends {
|
|
121
|
+
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 {
|
|
115
122
|
_tag: string;
|
|
116
|
-
} = never> = BuildingMiddleware<RequestContextMap, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> & // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
117
|
-
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<RequestContextMap, Middlewares> : {} : {});
|
|
118
|
-
export declare const
|
|
119
|
-
export declare const middlewareGroup: <RequestContextMap extends Record<string, RpcContextMap.Any>, Middleware extends
|
|
123
|
+
} = never> = BuildingMiddleware<Self, Id, RequestContextMap, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> & // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
124
|
+
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<Self, Id, RequestContextMap, Middlewares> : {} : {});
|
|
125
|
+
export declare const Tag: <Self>() => <const Id extends string, RequestContextMap extends Record<string, RpcContextMap.Any>>(id: Id, rcm: RequestContextMap) => MiddlewaresBuilder<Self, Id, RequestContextMap>;
|
|
126
|
+
export declare const middlewareGroup: <RequestContextMap extends Record<string, RpcContextMap.Any>, Middleware extends RpcMiddleware.TagClassAny & {
|
|
120
127
|
readonly requestContext: RequestContextTag<RequestContextMap>;
|
|
121
128
|
readonly requestContextMap: RequestContextMap;
|
|
122
129
|
}>(middleware: Middleware) => <R extends Rpc.Any>(group: RpcGroup.RpcGroup<R>) => RpcGroup.RpcGroup<AddMiddleware<R, Middleware>> & {
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"MiddlewareMaker.d.ts","sourceRoot":"","sources":["../../src/rpc/MiddlewareMaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,9 @@ const middlewareMaker = (middlewares) => {
|
|
|
25
25
|
};
|
|
26
26
|
});
|
|
27
27
|
};
|
|
28
|
-
const makeMiddlewareBasic =
|
|
28
|
+
const makeMiddlewareBasic = () =>
|
|
29
29
|
// by setting RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
30
|
-
(rcm, ...make) => {
|
|
30
|
+
(id, rcm, ...make) => {
|
|
31
31
|
// reverse middlewares and wrap one after the other
|
|
32
32
|
const middleware = middlewareMaker(make);
|
|
33
33
|
const failures = make.map((_) => _.failure).filter(Boolean);
|
|
@@ -35,7 +35,7 @@ const makeMiddlewareBasic =
|
|
|
35
35
|
const requires = make
|
|
36
36
|
.flatMap((_) => !_.requires ? [] : Array.isArray(_.requires) ? _.requires : [_.requires])
|
|
37
37
|
.filter((_) => !provides.includes(_));
|
|
38
|
-
const MiddlewareMaker = RpcMiddlewareX.Tag()(
|
|
38
|
+
const MiddlewareMaker = RpcMiddlewareX.Tag()(id, {
|
|
39
39
|
failure: (failures.length > 0
|
|
40
40
|
? S.Union(...failures)
|
|
41
41
|
: S.Never),
|
|
@@ -57,10 +57,11 @@ const makeMiddlewareBasic =
|
|
|
57
57
|
requestContextMap: rcm
|
|
58
58
|
});
|
|
59
59
|
};
|
|
60
|
-
export const
|
|
60
|
+
export const Tag = () => (id, rcm) => {
|
|
61
61
|
let allMiddleware = [];
|
|
62
62
|
const requestContext = Context.GenericTag("RequestContextConfig");
|
|
63
63
|
const it = {
|
|
64
|
+
id,
|
|
64
65
|
// rpc with config
|
|
65
66
|
rpc: (tag, options) => {
|
|
66
67
|
const config = options?.config ?? {};
|
|
@@ -81,7 +82,7 @@ export const makeMiddleware = (rcm) => {
|
|
|
81
82
|
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
82
83
|
? it
|
|
83
84
|
// actually, we don't know yet if MiddlewareR is never, but we can't easily check it at runtime
|
|
84
|
-
: Object.assign(makeMiddlewareBasic(rcm, ...allMiddleware), it);
|
|
85
|
+
: Object.assign(makeMiddlewareBasic()(id, rcm, ...allMiddleware), it);
|
|
85
86
|
}
|
|
86
87
|
};
|
|
87
88
|
return it;
|
|
@@ -96,4 +97,4 @@ export const middlewareGroup = (middleware) => (group) => {
|
|
|
96
97
|
}
|
|
97
98
|
});
|
|
98
99
|
};
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZU1ha2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9NaWRkbGV3YXJlTWFrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQXFELE1BQU0sYUFBYSxDQUFBO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBSXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUczQyxPQUFPLEtBQUssY0FBYyxNQUFNLG9CQUFvQixDQUFBO0FBNE9wRCxNQUFNLGVBQWUsR0FBRyxDQUV0QixXQUFnQyxFQVVoQyxFQUFFO0lBQ0Ysc0dBQXNHO0lBQ3RHLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFTLENBQUE7SUFFN0MsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFdkMsOERBQThEO1FBQzlELE9BQU8sQ0FDTCxRQUtJLEVBQ0osRUFBRTtZQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUE7WUFDckMsbUNBQW1DO1lBQ25DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQTtZQUVsQixxQ0FBcUM7WUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsaURBQWlEO2dCQUNqRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFFbEQsK0VBQStFO2dCQUMvRSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDdkMsQ0FBQTtZQUNWLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUE7SUFDSCxDQUFDLENBQVEsQ0FBQTtBQUNYLENBQUMsQ0FBQTtBQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBUyxFQUFFO0FBQ3ZDLHFHQUFxRztBQUNyRyxDQUtFLEVBQU0sRUFDTixHQUFzQixFQUN0QixHQUFHLElBQXlCLEVBQzVCLEVBQUU7SUFDRixtREFBbUQ7SUFDbkQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXhDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQzlHLE1BQU0sUUFBUSxHQUFHLElBQUk7U0FDbEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hGLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFdkMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLEdBQUcsRUFBUSxDQUFDLEVBQUUsRUFBRTtRQUNyRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQ29EO1FBQy9ELFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM1QixDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxTQUFTLENBVVY7UUFDSCxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDNUIsQ0FBQyxDQUFDLFFBQVE7WUFDVixDQUFDLENBQUMsU0FBUyxDQUNvRDtRQUNqRSxJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUMsQ0FBQTtJQUVGLE1BQU0sS0FBSyxHQUFHLEtBQUs7U0FDaEIsTUFBTSxDQUNMLGVBQWUsRUFDZixVQUlDLENBQ0YsQ0FBQTtJQUVILDBDQUEwQztJQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1FBQ3BDLEtBQUs7UUFDTCwyRUFBMkU7UUFDM0UsY0FBYyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQ2hDLHNCQUFzQixDQUN2QjtRQUNELGlCQUFpQixFQUFFLEdBQUc7S0FDdkIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQVMsRUFBRSxDQUM5QixDQUdFLEVBQU0sRUFBRSxHQUFzQixFQUFtRCxFQUFFO0lBQ25GLElBQUksYUFBYSxHQUEwQixFQUFFLENBQUE7SUFDN0MsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FDdkMsc0JBQXNCLENBQ3ZCLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRztRQUNULEVBQUU7UUFDRixrQkFBa0I7UUFDbEIsR0FBRyxFQUFFLENBT0gsR0FBUSxFQUFFLE9BU1gsRUFRc0IsRUFBRTtZQUV2QixNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQVksQ0FBQTtZQUU5QyxnRUFBZ0U7WUFDaEUsMEZBQTBGO1lBQzFGLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUE7WUFDNUIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxpREFBaUQ7WUFDekksTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUE7WUFFdkUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQVEsQ0FBQTtZQUVqRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7UUFDRCxVQUFVLEVBQUUsQ0FBQyxHQUFHLFdBQWtCLEVBQUUsRUFBRTtZQUNwQyxLQUFLLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUM3QixrREFBa0Q7Z0JBQ2xELGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFBO1lBQ3hDLENBQUM7WUFDRCxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTTtnQkFDaEYseUdBQXlHO2dCQUN6RyxDQUFDLENBQUMsRUFBRTtnQkFDSiwrRkFBK0Y7Z0JBQy9GLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFRLENBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzdGLENBQUM7S0FDRixDQUFBO0lBQ0QsT0FBTyxFQUFTLENBQUE7QUFDbEIsQ0FBQyxDQUFBO0FBRUQsc0RBQXNEO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQU83QixVQUFzQixFQUN0QixFQUFFLENBQ0osQ0FBb0IsS0FBMkIsRUFBRSxFQUFFO0lBRWpELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQXFDLENBQUE7SUFDekYsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3ZFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtRQUNyQyxjQUFjLEVBQUUsQ0FLZCxLQUVtQyxFQU1uQyxFQUFFO1lBQ0YsT0FBTyxlQUFlLENBQUMsS0FBWSxDQUFRLENBQUEsQ0FBQyxLQUFLO1FBQ25ELENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUEifQ==
|
package/dist/rpc.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export * from "./rpc
|
|
2
|
-
export * from "./rpc/
|
|
3
|
-
export * from "./rpc/RpcMiddleware.js";
|
|
4
|
-
export * as Middleware from "./rpc.js";
|
|
1
|
+
export * as RpcX from "./rpc.js";
|
|
2
|
+
export * as MiddlewareMaker from "./rpc/MiddlewareMaker.js";
|
|
3
|
+
export * as RpcMiddleware from "./rpc/RpcMiddleware.js";
|
|
5
4
|
//# sourceMappingURL=rpc.d.ts.map
|
package/dist/rpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/rpc.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./rpc/MiddlewareMaker.js";
|
|
3
|
-
export * from "./rpc/
|
|
4
|
-
|
|
5
|
-
// codegen:end
|
|
6
|
-
export * as Middleware from "./rpc.js";
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7QUFDckUsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYztBQUVkLE9BQU8sS0FBSyxVQUFVLE1BQU0sVUFBVSxDQUFBIn0=
|
|
1
|
+
export * as RpcX from "./rpc.js";
|
|
2
|
+
export * as MiddlewareMaker from "./rpc/MiddlewareMaker.js";
|
|
3
|
+
export * as RpcMiddleware from "./rpc/RpcMiddleware.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFVBQVUsQ0FBQTtBQUNoQyxPQUFPLEtBQUssZUFBZSxNQUFNLDBCQUEwQixDQUFBO0FBQzNELE9BQU8sS0FBSyxhQUFhLE1BQU0sd0JBQXdCLENBQUEifQ==
|
package/package.json
CHANGED
package/src/client/makeClient.ts
CHANGED
package/src/middleware.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Context } from "effect-app"
|
|
3
|
-
import {
|
|
3
|
+
import { RpcX } from "./rpc.js"
|
|
4
4
|
|
|
5
5
|
export class DevMode extends Context.Reference<DevMode>()("DevMode", { defaultValue: () => false }) {}
|
|
6
6
|
|
|
7
|
-
export class RequestCacheMiddleware
|
|
7
|
+
export class RequestCacheMiddleware
|
|
8
|
+
extends RpcX.RpcMiddleware.Tag<RequestCacheMiddleware>()("RequestCacheMiddleware")
|
|
9
|
+
{}
|
|
8
10
|
|
|
9
11
|
export class ConfigureInterruptibilityMiddleware
|
|
10
|
-
extends
|
|
12
|
+
extends RpcX.RpcMiddleware.Tag<ConfigureInterruptibilityMiddleware>()("ConfigureInterruptibilityMiddleware")
|
|
11
13
|
{}
|
|
12
14
|
|
|
13
|
-
export class LoggerMiddleware extends
|
|
15
|
+
export class LoggerMiddleware extends RpcX.RpcMiddleware.Tag<LoggerMiddleware>()("LoggerMiddleware") {}
|
|
14
16
|
|
|
15
17
|
export const DefaultGenericMiddlewares = [
|
|
16
18
|
RequestCacheMiddleware,
|
|
@@ -3,7 +3,6 @@ import { Rpc, type RpcGroup, type RpcMiddleware, type RpcSchema } from "@effect/
|
|
|
3
3
|
import { type HandlersFrom } from "@effect/rpc/RpcGroup"
|
|
4
4
|
import { Context, Effect, Layer, type Schema, Schema as S } from "effect"
|
|
5
5
|
import { type NonEmptyArray, type NonEmptyReadonlyArray } from "effect/Array"
|
|
6
|
-
import { type Tag } from "effect/Context"
|
|
7
6
|
import { type Scope } from "effect/Scope"
|
|
8
7
|
import { type Simplify } from "effect/Types"
|
|
9
8
|
import { PreludeLogger } from "../logger.js"
|
|
@@ -21,12 +20,14 @@ export interface MiddlewareMakerId {
|
|
|
21
20
|
type MakeTags<A> = Context.Tag<A, A>
|
|
22
21
|
|
|
23
22
|
export interface MiddlewareMaker<
|
|
23
|
+
Self,
|
|
24
|
+
Id extends string,
|
|
24
25
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
25
26
|
MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
|
|
26
27
|
> extends
|
|
27
28
|
RpcMiddleware.TagClass<
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
Self,
|
|
30
|
+
Id,
|
|
30
31
|
Simplify<
|
|
31
32
|
& { readonly wrap: true }
|
|
32
33
|
& (Exclude<
|
|
@@ -49,7 +50,7 @@ export interface MiddlewareMaker<
|
|
|
49
50
|
>
|
|
50
51
|
>
|
|
51
52
|
{
|
|
52
|
-
readonly layer: Layer.Layer<
|
|
53
|
+
readonly layer: Layer.Layer<Self, never, Context.Tag.Identifier<MiddlewareProviders[number]>>
|
|
53
54
|
readonly requestContext: RequestContextTag<RequestContextMap>
|
|
54
55
|
readonly requestContextMap: RequestContextMap
|
|
55
56
|
}
|
|
@@ -111,6 +112,8 @@ type FilterInDynamicMiddlewares<
|
|
|
111
112
|
type RecursiveHandleMWsSideways<
|
|
112
113
|
MWs,
|
|
113
114
|
R extends {
|
|
115
|
+
self: any
|
|
116
|
+
id: string
|
|
114
117
|
rcm: Record<string, RpcContextMap.Any>
|
|
115
118
|
provided: keyof R["rcm"] // that's fine
|
|
116
119
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>
|
|
@@ -120,6 +123,8 @@ type RecursiveHandleMWsSideways<
|
|
|
120
123
|
> = MWs extends [] ? R
|
|
121
124
|
: MWs extends [infer F, ...infer Rest extends ReadonlyArray<any>]
|
|
122
125
|
? F extends MiddlewareMaker.Any ? RecursiveHandleMWsSideways<Rest, {
|
|
126
|
+
self: R["self"]
|
|
127
|
+
id: R["id"]
|
|
123
128
|
rcm: R["rcm"]
|
|
124
129
|
// when one dynamic middleware depends on another, subtract the key to enforce the dependency to be provided after
|
|
125
130
|
// (if already provided, it would have to be re-provided anyway, so better to provide it after)
|
|
@@ -143,6 +148,8 @@ type RecursiveHandleMWsSideways<
|
|
|
143
148
|
: never
|
|
144
149
|
|
|
145
150
|
export interface BuildingMiddleware<
|
|
151
|
+
Self,
|
|
152
|
+
Id extends string,
|
|
146
153
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
147
154
|
Provided extends keyof RequestContextMap,
|
|
148
155
|
Middlewares extends ReadonlyArray<MiddlewareMaker.Any>,
|
|
@@ -177,18 +184,24 @@ export interface BuildingMiddleware<
|
|
|
177
184
|
middleware<MWs extends NonEmptyArray<MiddlewareMaker.Any>>(
|
|
178
185
|
...mw: MWs
|
|
179
186
|
): RecursiveHandleMWsSideways<MWs, {
|
|
187
|
+
self: Self
|
|
188
|
+
id: Id
|
|
180
189
|
rcm: RequestContextMap
|
|
181
190
|
provided: Provided
|
|
182
191
|
middlewares: Middlewares
|
|
183
192
|
dmp: DynamicMiddlewareProviders
|
|
184
193
|
middlewareR: MiddlewareR
|
|
185
194
|
}> extends infer Res extends {
|
|
195
|
+
self: any
|
|
196
|
+
id: string
|
|
186
197
|
rcm: RequestContextMap
|
|
187
198
|
provided: keyof RequestContextMap
|
|
188
199
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>
|
|
189
200
|
dmp: any
|
|
190
201
|
middlewareR: any
|
|
191
202
|
} ? MiddlewaresBuilder<
|
|
203
|
+
Res["self"],
|
|
204
|
+
Res["id"],
|
|
192
205
|
Res["rcm"],
|
|
193
206
|
Res["provided"],
|
|
194
207
|
Res["middlewares"],
|
|
@@ -205,6 +218,8 @@ export interface BuildingMiddleware<
|
|
|
205
218
|
}
|
|
206
219
|
|
|
207
220
|
export type MiddlewaresBuilder<
|
|
221
|
+
Self,
|
|
222
|
+
Id extends string,
|
|
208
223
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
209
224
|
Provided extends keyof RequestContextMap = never,
|
|
210
225
|
Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [],
|
|
@@ -212,6 +227,8 @@ export type MiddlewaresBuilder<
|
|
|
212
227
|
MiddlewareR extends { _tag: string } = never
|
|
213
228
|
> =
|
|
214
229
|
& BuildingMiddleware<
|
|
230
|
+
Self,
|
|
231
|
+
Id,
|
|
215
232
|
RequestContextMap,
|
|
216
233
|
Provided,
|
|
217
234
|
Middlewares,
|
|
@@ -221,6 +238,8 @@ export type MiddlewaresBuilder<
|
|
|
221
238
|
& // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
222
239
|
// MiddlewareR is never when all the required services from generic & dynamic middlewares are provided
|
|
223
240
|
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<
|
|
241
|
+
Self,
|
|
242
|
+
Id,
|
|
224
243
|
RequestContextMap,
|
|
225
244
|
Middlewares
|
|
226
245
|
>
|
|
@@ -274,78 +293,83 @@ const middlewareMaker = <
|
|
|
274
293
|
}) as any
|
|
275
294
|
}
|
|
276
295
|
|
|
277
|
-
const makeMiddlewareBasic =
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
>
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
296
|
+
const makeMiddlewareBasic = <Self>() =>
|
|
297
|
+
// by setting RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
298
|
+
<
|
|
299
|
+
const Id extends string,
|
|
300
|
+
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
301
|
+
MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
|
|
302
|
+
>(
|
|
303
|
+
id: Id,
|
|
304
|
+
rcm: RequestContextMap,
|
|
305
|
+
...make: MiddlewareProviders
|
|
306
|
+
) => {
|
|
307
|
+
// reverse middlewares and wrap one after the other
|
|
308
|
+
const middleware = middlewareMaker(make)
|
|
309
|
+
|
|
310
|
+
const failures = make.map((_) => _.failure).filter(Boolean)
|
|
311
|
+
const provides = make.flatMap((_) => !_.provides ? [] : Array.isArray(_.provides) ? _.provides : [_.provides])
|
|
312
|
+
const requires = make
|
|
313
|
+
.flatMap((_) => !_.requires ? [] : Array.isArray(_.requires) ? _.requires : [_.requires])
|
|
314
|
+
.filter((_) => !provides.includes(_))
|
|
315
|
+
|
|
316
|
+
const MiddlewareMaker = RpcMiddlewareX.Tag<Self>()(id, {
|
|
317
|
+
failure: (failures.length > 0
|
|
318
|
+
? S.Union(...failures)
|
|
319
|
+
: S.Never) as unknown as MiddlewareMaker.ManyErrors<MiddlewareProviders> extends never ? never
|
|
320
|
+
: S.Schema<MiddlewareMaker.ManyErrors<MiddlewareProviders>>,
|
|
321
|
+
requires: (requires.length > 0
|
|
322
|
+
? requires
|
|
323
|
+
: undefined) as unknown as Exclude<
|
|
324
|
+
MiddlewareMaker.ManyRequired<MiddlewareProviders>,
|
|
325
|
+
MiddlewareMaker.ManyProvided<MiddlewareProviders>
|
|
326
|
+
> extends never ? never : [
|
|
327
|
+
MakeTags<
|
|
328
|
+
Exclude<
|
|
329
|
+
MiddlewareMaker.ManyRequired<MiddlewareProviders>,
|
|
330
|
+
MiddlewareMaker.ManyProvided<MiddlewareProviders>
|
|
311
331
|
>
|
|
312
|
-
],
|
|
313
|
-
provides: (provides.length > 0
|
|
314
|
-
? provides
|
|
315
|
-
: undefined) as unknown as MiddlewareMaker.ManyProvided<MiddlewareProviders> extends never ? never
|
|
316
|
-
: MakeTags<MiddlewareMaker.ManyProvided<MiddlewareProviders>>,
|
|
317
|
-
wrap: true
|
|
318
|
-
})
|
|
319
|
-
|
|
320
|
-
const layer = Layer
|
|
321
|
-
.scoped(
|
|
322
|
-
MiddlewareMaker,
|
|
323
|
-
middleware as Effect.Effect<
|
|
324
|
-
any, // TODO: why ?
|
|
325
|
-
Effect.Effect.Error<typeof middleware>,
|
|
326
|
-
Effect.Effect.Context<typeof middleware>
|
|
327
332
|
>
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
333
|
+
],
|
|
334
|
+
provides: (provides.length > 0
|
|
335
|
+
? provides
|
|
336
|
+
: undefined) as unknown as MiddlewareMaker.ManyProvided<MiddlewareProviders> extends never ? never
|
|
337
|
+
: MakeTags<MiddlewareMaker.ManyProvided<MiddlewareProviders>>,
|
|
338
|
+
wrap: true
|
|
339
|
+
})
|
|
340
|
+
|
|
341
|
+
const layer = Layer
|
|
342
|
+
.scoped(
|
|
343
|
+
MiddlewareMaker,
|
|
344
|
+
middleware as Effect.Effect<
|
|
345
|
+
any, // TODO: why ?
|
|
346
|
+
Effect.Effect.Error<typeof middleware>,
|
|
347
|
+
Effect.Effect.Context<typeof middleware>
|
|
348
|
+
>
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
// add to the tag a default implementation
|
|
352
|
+
return Object.assign(MiddlewareMaker, {
|
|
353
|
+
layer,
|
|
354
|
+
// tag to be used to retrieve the RequestContextConfig from Rpc annotations
|
|
355
|
+
requestContext: Context.GenericTag<"RequestContextConfig", GetContextConfig<RequestContextMap>>(
|
|
356
|
+
"RequestContextConfig"
|
|
357
|
+
),
|
|
358
|
+
requestContextMap: rcm
|
|
359
|
+
})
|
|
360
|
+
}
|
|
340
361
|
|
|
341
|
-
export const
|
|
362
|
+
export const Tag = <Self>() =>
|
|
363
|
+
<
|
|
364
|
+
const Id extends string,
|
|
342
365
|
RequestContextMap extends Record<string, RpcContextMap.Any>
|
|
343
|
-
>(rcm: RequestContextMap): MiddlewaresBuilder<RequestContextMap> => {
|
|
366
|
+
>(id: Id, rcm: RequestContextMap): MiddlewaresBuilder<Self, Id, RequestContextMap> => {
|
|
344
367
|
let allMiddleware: MiddlewareMaker.Any[] = []
|
|
345
368
|
const requestContext = Context.GenericTag<"RequestContextConfig", GetContextConfig<RequestContextMap>>(
|
|
346
369
|
"RequestContextConfig"
|
|
347
370
|
)
|
|
348
371
|
const it = {
|
|
372
|
+
id,
|
|
349
373
|
// rpc with config
|
|
350
374
|
rpc: <
|
|
351
375
|
const Tag extends string,
|
|
@@ -394,7 +418,7 @@ export const makeMiddleware = <
|
|
|
394
418
|
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
395
419
|
? it
|
|
396
420
|
// actually, we don't know yet if MiddlewareR is never, but we can't easily check it at runtime
|
|
397
|
-
: Object.assign(makeMiddlewareBasic<any, any>(rcm, ...allMiddleware), it)
|
|
421
|
+
: Object.assign(makeMiddlewareBasic<Self>()<Id, any, any>(id, rcm, ...allMiddleware), it)
|
|
398
422
|
}
|
|
399
423
|
}
|
|
400
424
|
return it as any
|
|
@@ -403,7 +427,7 @@ export const makeMiddleware = <
|
|
|
403
427
|
// alternatively consider group.serverMiddleware? hmmm
|
|
404
428
|
export const middlewareGroup = <
|
|
405
429
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
406
|
-
Middleware extends
|
|
430
|
+
Middleware extends RpcMiddleware.TagClassAny & {
|
|
407
431
|
readonly requestContext: RequestContextTag<RequestContextMap>
|
|
408
432
|
readonly requestContextMap: RequestContextMap
|
|
409
433
|
}
|
package/src/rpc.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./rpc/MiddlewareMaker.js"
|
|
3
|
-
export * from "./rpc/
|
|
4
|
-
export * from "./rpc/RpcMiddleware.js"
|
|
5
|
-
// codegen:end
|
|
6
|
-
|
|
7
|
-
export * as Middleware from "./rpc.js"
|
|
1
|
+
export * as RpcX from "./rpc.js"
|
|
2
|
+
export * as MiddlewareMaker from "./rpc/MiddlewareMaker.js"
|
|
3
|
+
export * as RpcMiddleware from "./rpc/RpcMiddleware.js"
|