effect-app 3.0.4 → 3.0.5
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 +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 +13 -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 +82 -68
- package/src/rpc.ts +3 -7
package/CHANGELOG.md
CHANGED
|
@@ -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, RequestContextMap extends Record<string, RpcContextMap.Any>, MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>> extends RpcMiddleware.TagClass<Self, "MiddlewareMaker", 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,14 @@ 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
69
|
rcm: Record<string, RpcContextMap.Any>;
|
|
70
70
|
provided: keyof R["rcm"];
|
|
71
71
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>;
|
|
72
72
|
dmp: any;
|
|
73
73
|
middlewareR: any;
|
|
74
74
|
}> = MWs extends [] ? R : MWs extends [infer F, ...infer Rest extends ReadonlyArray<any>] ? F extends MiddlewareMaker.Any ? RecursiveHandleMWsSideways<Rest, {
|
|
75
|
+
self: R["self"];
|
|
75
76
|
rcm: R["rcm"];
|
|
76
77
|
provided: Exclude<R["provided"] | FilterInDynamicMiddlewares<[F], R["rcm"]>[number]["dynamic"]["key"], GetDependsOnKeys<F>>;
|
|
77
78
|
middlewares: [...R["middlewares"], F];
|
|
@@ -80,7 +81,7 @@ type RecursiveHandleMWsSideways<MWs, R extends {
|
|
|
80
81
|
};
|
|
81
82
|
middlewareR: MiddlewareMaker.ApplyManyServices<[F], R["middlewareR"]>;
|
|
82
83
|
}> : `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 {
|
|
84
|
+
export interface BuildingMiddleware<Self, RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap, Middlewares extends ReadonlyArray<MiddlewareMaker.Any>, DynamicMiddlewareProviders, out MiddlewareR extends {
|
|
84
85
|
_tag: string;
|
|
85
86
|
} = never> {
|
|
86
87
|
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 +95,31 @@ export interface BuildingMiddleware<RequestContextMap extends Record<string, Rpc
|
|
|
94
95
|
readonly config: Config;
|
|
95
96
|
};
|
|
96
97
|
middleware<MWs extends NonEmptyArray<MiddlewareMaker.Any>>(...mw: MWs): RecursiveHandleMWsSideways<MWs, {
|
|
98
|
+
self: Self;
|
|
97
99
|
rcm: RequestContextMap;
|
|
98
100
|
provided: Provided;
|
|
99
101
|
middlewares: Middlewares;
|
|
100
102
|
dmp: DynamicMiddlewareProviders;
|
|
101
103
|
middlewareR: MiddlewareR;
|
|
102
104
|
}> extends infer Res extends {
|
|
105
|
+
self: any;
|
|
103
106
|
rcm: RequestContextMap;
|
|
104
107
|
provided: keyof RequestContextMap;
|
|
105
108
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>;
|
|
106
109
|
dmp: any;
|
|
107
110
|
middlewareR: any;
|
|
108
|
-
} ? MiddlewaresBuilder<Res["rcm"], Res["provided"], Res["middlewares"], Res["dmp"], Res["middlewareR"]> : never;
|
|
111
|
+
} ? MiddlewaresBuilder<Res["self"], Res["rcm"], Res["provided"], Res["middlewares"], Res["dmp"], Res["middlewareR"]> : never;
|
|
109
112
|
readonly [TypeTestId]: {
|
|
110
113
|
missingDynamicMiddlewares: Exclude<keyof RequestContextMap, Provided>;
|
|
111
114
|
missingContext: MiddlewareR;
|
|
112
115
|
};
|
|
113
116
|
}
|
|
114
|
-
export type MiddlewaresBuilder<RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap = never, Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [], DynamicMiddlewareProviders = unknown, MiddlewareR extends {
|
|
117
|
+
export type MiddlewaresBuilder<Self, RequestContextMap extends Record<string, RpcContextMap.Any>, Provided extends keyof RequestContextMap = never, Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [], DynamicMiddlewareProviders = unknown, MiddlewareR extends {
|
|
115
118
|
_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
|
|
119
|
+
} = never> = BuildingMiddleware<Self, RequestContextMap, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> & // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
120
|
+
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<Self, RequestContextMap, Middlewares> : {} : {});
|
|
121
|
+
export declare const Tag: <Self>() => <const Id extends string, RequestContextMap extends Record<string, RpcContextMap.Any>>(id: Id, rcm: RequestContextMap) => MiddlewaresBuilder<Self, RequestContextMap>;
|
|
122
|
+
export declare const middlewareGroup: <RequestContextMap extends Record<string, RpcContextMap.Any>, Middleware extends RpcMiddleware.TagClassAny & {
|
|
120
123
|
readonly requestContext: RequestContextTag<RequestContextMap>;
|
|
121
124
|
readonly requestContextMap: RequestContextMap;
|
|
122
125
|
}>(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZU1ha2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9NaWRkbGV3YXJlTWFrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQXFELE1BQU0sYUFBYSxDQUFBO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBSXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUczQyxPQUFPLEtBQUssY0FBYyxNQUFNLG9CQUFvQixDQUFBO0FBa09wRCxNQUFNLGVBQWUsR0FBRyxDQUV0QixXQUFnQyxFQVVoQyxFQUFFO0lBQ0Ysc0dBQXNHO0lBQ3RHLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFTLENBQUE7SUFFN0MsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFdkMsOERBQThEO1FBQzlELE9BQU8sQ0FDTCxRQUtJLEVBQ0osRUFBRTtZQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUE7WUFDckMsbUNBQW1DO1lBQ25DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQTtZQUVsQixxQ0FBcUM7WUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsaURBQWlEO2dCQUNqRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFFbEQsK0VBQStFO2dCQUMvRSxPQUFPLEdBQUcsYUFBYSxDQUFD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
|
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,11 +20,12 @@ export interface MiddlewareMakerId {
|
|
|
21
20
|
type MakeTags<A> = Context.Tag<A, A>
|
|
22
21
|
|
|
23
22
|
export interface MiddlewareMaker<
|
|
23
|
+
Self,
|
|
24
24
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
25
25
|
MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
|
|
26
26
|
> extends
|
|
27
27
|
RpcMiddleware.TagClass<
|
|
28
|
-
|
|
28
|
+
Self,
|
|
29
29
|
"MiddlewareMaker",
|
|
30
30
|
Simplify<
|
|
31
31
|
& { readonly wrap: true }
|
|
@@ -49,7 +49,7 @@ export interface MiddlewareMaker<
|
|
|
49
49
|
>
|
|
50
50
|
>
|
|
51
51
|
{
|
|
52
|
-
readonly layer: Layer.Layer<
|
|
52
|
+
readonly layer: Layer.Layer<Self, never, Context.Tag.Identifier<MiddlewareProviders[number]>>
|
|
53
53
|
readonly requestContext: RequestContextTag<RequestContextMap>
|
|
54
54
|
readonly requestContextMap: RequestContextMap
|
|
55
55
|
}
|
|
@@ -111,6 +111,7 @@ type FilterInDynamicMiddlewares<
|
|
|
111
111
|
type RecursiveHandleMWsSideways<
|
|
112
112
|
MWs,
|
|
113
113
|
R extends {
|
|
114
|
+
self: any
|
|
114
115
|
rcm: Record<string, RpcContextMap.Any>
|
|
115
116
|
provided: keyof R["rcm"] // that's fine
|
|
116
117
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>
|
|
@@ -120,6 +121,7 @@ type RecursiveHandleMWsSideways<
|
|
|
120
121
|
> = MWs extends [] ? R
|
|
121
122
|
: MWs extends [infer F, ...infer Rest extends ReadonlyArray<any>]
|
|
122
123
|
? F extends MiddlewareMaker.Any ? RecursiveHandleMWsSideways<Rest, {
|
|
124
|
+
self: R["self"]
|
|
123
125
|
rcm: R["rcm"]
|
|
124
126
|
// when one dynamic middleware depends on another, subtract the key to enforce the dependency to be provided after
|
|
125
127
|
// (if already provided, it would have to be re-provided anyway, so better to provide it after)
|
|
@@ -143,6 +145,7 @@ type RecursiveHandleMWsSideways<
|
|
|
143
145
|
: never
|
|
144
146
|
|
|
145
147
|
export interface BuildingMiddleware<
|
|
148
|
+
Self,
|
|
146
149
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
147
150
|
Provided extends keyof RequestContextMap,
|
|
148
151
|
Middlewares extends ReadonlyArray<MiddlewareMaker.Any>,
|
|
@@ -177,18 +180,21 @@ export interface BuildingMiddleware<
|
|
|
177
180
|
middleware<MWs extends NonEmptyArray<MiddlewareMaker.Any>>(
|
|
178
181
|
...mw: MWs
|
|
179
182
|
): RecursiveHandleMWsSideways<MWs, {
|
|
183
|
+
self: Self
|
|
180
184
|
rcm: RequestContextMap
|
|
181
185
|
provided: Provided
|
|
182
186
|
middlewares: Middlewares
|
|
183
187
|
dmp: DynamicMiddlewareProviders
|
|
184
188
|
middlewareR: MiddlewareR
|
|
185
189
|
}> extends infer Res extends {
|
|
190
|
+
self: any
|
|
186
191
|
rcm: RequestContextMap
|
|
187
192
|
provided: keyof RequestContextMap
|
|
188
193
|
middlewares: ReadonlyArray<MiddlewareMaker.Any>
|
|
189
194
|
dmp: any
|
|
190
195
|
middlewareR: any
|
|
191
196
|
} ? MiddlewaresBuilder<
|
|
197
|
+
Res["self"],
|
|
192
198
|
Res["rcm"],
|
|
193
199
|
Res["provided"],
|
|
194
200
|
Res["middlewares"],
|
|
@@ -205,6 +211,7 @@ export interface BuildingMiddleware<
|
|
|
205
211
|
}
|
|
206
212
|
|
|
207
213
|
export type MiddlewaresBuilder<
|
|
214
|
+
Self,
|
|
208
215
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
209
216
|
Provided extends keyof RequestContextMap = never,
|
|
210
217
|
Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [],
|
|
@@ -212,6 +219,7 @@ export type MiddlewaresBuilder<
|
|
|
212
219
|
MiddlewareR extends { _tag: string } = never
|
|
213
220
|
> =
|
|
214
221
|
& BuildingMiddleware<
|
|
222
|
+
Self,
|
|
215
223
|
RequestContextMap,
|
|
216
224
|
Provided,
|
|
217
225
|
Middlewares,
|
|
@@ -221,6 +229,7 @@ export type MiddlewaresBuilder<
|
|
|
221
229
|
& // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
222
230
|
// MiddlewareR is never when all the required services from generic & dynamic middlewares are provided
|
|
223
231
|
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<
|
|
232
|
+
Self,
|
|
224
233
|
RequestContextMap,
|
|
225
234
|
Middlewares
|
|
226
235
|
>
|
|
@@ -274,78 +283,83 @@ const middlewareMaker = <
|
|
|
274
283
|
}) as any
|
|
275
284
|
}
|
|
276
285
|
|
|
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
|
-
|
|
286
|
+
const makeMiddlewareBasic = <Self>() =>
|
|
287
|
+
// by setting RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
288
|
+
<
|
|
289
|
+
const Id extends string,
|
|
290
|
+
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
291
|
+
MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
|
|
292
|
+
>(
|
|
293
|
+
id: Id,
|
|
294
|
+
rcm: RequestContextMap,
|
|
295
|
+
...make: MiddlewareProviders
|
|
296
|
+
) => {
|
|
297
|
+
// reverse middlewares and wrap one after the other
|
|
298
|
+
const middleware = middlewareMaker(make)
|
|
299
|
+
|
|
300
|
+
const failures = make.map((_) => _.failure).filter(Boolean)
|
|
301
|
+
const provides = make.flatMap((_) => !_.provides ? [] : Array.isArray(_.provides) ? _.provides : [_.provides])
|
|
302
|
+
const requires = make
|
|
303
|
+
.flatMap((_) => !_.requires ? [] : Array.isArray(_.requires) ? _.requires : [_.requires])
|
|
304
|
+
.filter((_) => !provides.includes(_))
|
|
305
|
+
|
|
306
|
+
const MiddlewareMaker = RpcMiddlewareX.Tag<Self>()(id, {
|
|
307
|
+
failure: (failures.length > 0
|
|
308
|
+
? S.Union(...failures)
|
|
309
|
+
: S.Never) as unknown as MiddlewareMaker.ManyErrors<MiddlewareProviders> extends never ? never
|
|
310
|
+
: S.Schema<MiddlewareMaker.ManyErrors<MiddlewareProviders>>,
|
|
311
|
+
requires: (requires.length > 0
|
|
312
|
+
? requires
|
|
313
|
+
: undefined) as unknown as Exclude<
|
|
314
|
+
MiddlewareMaker.ManyRequired<MiddlewareProviders>,
|
|
315
|
+
MiddlewareMaker.ManyProvided<MiddlewareProviders>
|
|
316
|
+
> extends never ? never : [
|
|
317
|
+
MakeTags<
|
|
318
|
+
Exclude<
|
|
319
|
+
MiddlewareMaker.ManyRequired<MiddlewareProviders>,
|
|
320
|
+
MiddlewareMaker.ManyProvided<MiddlewareProviders>
|
|
311
321
|
>
|
|
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
322
|
>
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
323
|
+
],
|
|
324
|
+
provides: (provides.length > 0
|
|
325
|
+
? provides
|
|
326
|
+
: undefined) as unknown as MiddlewareMaker.ManyProvided<MiddlewareProviders> extends never ? never
|
|
327
|
+
: MakeTags<MiddlewareMaker.ManyProvided<MiddlewareProviders>>,
|
|
328
|
+
wrap: true
|
|
329
|
+
})
|
|
330
|
+
|
|
331
|
+
const layer = Layer
|
|
332
|
+
.scoped(
|
|
333
|
+
MiddlewareMaker,
|
|
334
|
+
middleware as Effect.Effect<
|
|
335
|
+
any, // TODO: why ?
|
|
336
|
+
Effect.Effect.Error<typeof middleware>,
|
|
337
|
+
Effect.Effect.Context<typeof middleware>
|
|
338
|
+
>
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
// add to the tag a default implementation
|
|
342
|
+
return Object.assign(MiddlewareMaker, {
|
|
343
|
+
layer,
|
|
344
|
+
// tag to be used to retrieve the RequestContextConfig from Rpc annotations
|
|
345
|
+
requestContext: Context.GenericTag<"RequestContextConfig", GetContextConfig<RequestContextMap>>(
|
|
346
|
+
"RequestContextConfig"
|
|
347
|
+
),
|
|
348
|
+
requestContextMap: rcm
|
|
349
|
+
})
|
|
350
|
+
}
|
|
340
351
|
|
|
341
|
-
export const
|
|
352
|
+
export const Tag = <Self>() =>
|
|
353
|
+
<
|
|
354
|
+
const Id extends string,
|
|
342
355
|
RequestContextMap extends Record<string, RpcContextMap.Any>
|
|
343
|
-
>(rcm: RequestContextMap): MiddlewaresBuilder<RequestContextMap> => {
|
|
356
|
+
>(id: Id, rcm: RequestContextMap): MiddlewaresBuilder<Self, RequestContextMap> => {
|
|
344
357
|
let allMiddleware: MiddlewareMaker.Any[] = []
|
|
345
358
|
const requestContext = Context.GenericTag<"RequestContextConfig", GetContextConfig<RequestContextMap>>(
|
|
346
359
|
"RequestContextConfig"
|
|
347
360
|
)
|
|
348
361
|
const it = {
|
|
362
|
+
id,
|
|
349
363
|
// rpc with config
|
|
350
364
|
rpc: <
|
|
351
365
|
const Tag extends string,
|
|
@@ -394,7 +408,7 @@ export const makeMiddleware = <
|
|
|
394
408
|
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
395
409
|
? it
|
|
396
410
|
// 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)
|
|
411
|
+
: Object.assign(makeMiddlewareBasic<Self>()<any, any, any>(id, rcm, ...allMiddleware), it)
|
|
398
412
|
}
|
|
399
413
|
}
|
|
400
414
|
return it as any
|
|
@@ -403,7 +417,7 @@ export const makeMiddleware = <
|
|
|
403
417
|
// alternatively consider group.serverMiddleware? hmmm
|
|
404
418
|
export const middlewareGroup = <
|
|
405
419
|
RequestContextMap extends Record<string, RpcContextMap.Any>,
|
|
406
|
-
Middleware extends
|
|
420
|
+
Middleware extends RpcMiddleware.TagClassAny & {
|
|
407
421
|
readonly requestContext: RequestContextTag<RequestContextMap>
|
|
408
422
|
readonly requestContextMap: RequestContextMap
|
|
409
423
|
}
|
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"
|