@effect-app/infra 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/QueueMaker/errors.d.ts +1 -1
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +1 -1
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.d.ts +1 -2
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +2 -3
- package/dist/api/routing/middleware.d.ts +0 -4
- package/dist/api/routing/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware.js +1 -5
- package/dist/api/routing.d.ts +5 -13
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +4 -13
- package/package.json +2 -22
- package/src/api/routing/middleware/RouterMiddleware.ts +1 -1
- package/src/api/routing/middleware/middleware.ts +1 -3
- package/src/api/routing/middleware.ts +0 -4
- package/src/api/routing.ts +20 -36
- package/test/controller.test.ts +13 -14
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/fixtures.d.ts +9 -9
- package/test/dist/fixtures.js +2 -2
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/fixtures.ts +1 -1
- package/test/requires.test.ts +2 -2
- package/test/rpc-multi-middleware.test.ts +2 -2
- package/dist/api/routing/middleware/RpcMiddleware.d.ts +0 -188
- package/dist/api/routing/middleware/RpcMiddleware.d.ts.map +0 -1
- package/dist/api/routing/middleware/RpcMiddleware.js +0 -13
- package/dist/api/routing/middleware/RpcMiddlewareX.d.ts +0 -18
- package/dist/api/routing/middleware/RpcMiddlewareX.d.ts.map +0 -1
- package/dist/api/routing/middleware/RpcMiddlewareX.js +0 -16
- package/dist/api/routing/middleware/generic-middleware.d.ts +0 -55
- package/dist/api/routing/middleware/generic-middleware.d.ts.map +0 -1
- package/dist/api/routing/middleware/generic-middleware.js +0 -67
- package/dist/api/routing/middleware/middleware-api.d.ts +0 -107
- package/dist/api/routing/middleware/middleware-api.d.ts.map +0 -1
- package/dist/api/routing/middleware/middleware-api.js +0 -88
- package/dist/api/routing/middleware/middleware-native.d.ts +0 -23
- package/dist/api/routing/middleware/middleware-native.d.ts.map +0 -1
- package/dist/api/routing/middleware/middleware-native.js +0 -19
- package/src/api/routing/middleware/RpcMiddleware.ts +0 -254
- package/src/api/routing/middleware/RpcMiddlewareX.ts +0 -70
- package/src/api/routing/middleware/generic-middleware.ts +0 -198
- package/src/api/routing/middleware/middleware-api.ts +0 -404
- package/src/api/routing/middleware/middleware-native.ts +0 -23
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { Rpc, type RpcGroup, type RpcMiddleware, type RpcSchema } from "@effect/rpc";
|
|
2
|
-
import { type AnyWithProps } from "@effect/rpc/Rpc";
|
|
3
|
-
import { type HandlersFrom } from "@effect/rpc/RpcGroup";
|
|
4
|
-
import { Context, type Effect, Layer, type NonEmptyArray, type NonEmptyReadonlyArray, type Schema, type Scope, type Stream } from "effect-app";
|
|
5
|
-
import { type GetContextConfig, type GetEffectContext, type RPCContextMap } from "effect-app/client";
|
|
6
|
-
import { type ReadonlyMailbox } from "effect/Mailbox";
|
|
7
|
-
import { type TypeTestId } from "../../routing.js";
|
|
8
|
-
import { type MiddlewareMaker, type RequestContextTag } from "./generic-middleware.js";
|
|
9
|
-
import { type AnyDynamic, type RpcDynamic, type TagClassAny } from "./RpcMiddleware.js";
|
|
10
|
-
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
11
|
-
export declare const contextMap: <RequestContextMap extends Record<string, RPCContextMap.Any>, Key extends (keyof RequestContextMap) & string>(rcm: RequestContextMap, key: Key) => RpcDynamic<Key, RequestContextMap[Key]>;
|
|
12
|
-
/** Retrieves RequestContextConfig out of the RPC annotations */
|
|
13
|
-
export declare const getConfig: <RequestContextMap extends Record<string, RPCContextMap.Any>>() => (rpc: AnyWithProps) => GetContextConfig<RequestContextMap>;
|
|
14
|
-
type GetDependsOnKeys<MW extends MiddlewareMaker.Any> = MW extends {
|
|
15
|
-
dependsOn: NonEmptyReadonlyArray<TagClassAny>;
|
|
16
|
-
} ? {
|
|
17
|
-
[K in keyof MW["dependsOn"]]: MW["dependsOn"][K] extends AnyDynamic ? MW["dependsOn"][K]["dynamic"]["key"] : never;
|
|
18
|
-
}[keyof MW["dependsOn"]] : never;
|
|
19
|
-
type FilterInDynamicMiddlewares<MWs extends ReadonlyArray<MiddlewareMaker.Any>, RequestContextMap extends Record<string, RPCContextMap.Any>> = {
|
|
20
|
-
[K in keyof MWs]: MWs[K] extends {
|
|
21
|
-
dynamic: RpcDynamic<any, RequestContextMap[keyof RequestContextMap]>;
|
|
22
|
-
} ? MWs[K] : never;
|
|
23
|
-
};
|
|
24
|
-
type RecursiveHandleMWsSideways<MWs, R extends {
|
|
25
|
-
rcm: Record<string, RPCContextMap.Any>;
|
|
26
|
-
provided: keyof R["rcm"];
|
|
27
|
-
middlewares: ReadonlyArray<MiddlewareMaker.Any>;
|
|
28
|
-
dmp: any;
|
|
29
|
-
middlewareR: any;
|
|
30
|
-
}> = MWs extends [
|
|
31
|
-
infer F extends MiddlewareMaker.Any,
|
|
32
|
-
...infer Rest extends ReadonlyArray<MiddlewareMaker.Any>
|
|
33
|
-
] ? RecursiveHandleMWsSideways<Rest, {
|
|
34
|
-
rcm: R["rcm"];
|
|
35
|
-
provided: Exclude<R["provided"] | FilterInDynamicMiddlewares<[F], R["rcm"]>[number]["dynamic"]["key"], GetDependsOnKeys<F>>;
|
|
36
|
-
middlewares: [...R["middlewares"], F];
|
|
37
|
-
dmp: [FilterInDynamicMiddlewares<[F], R["rcm"]>[number]] extends [never] ? R["dmp"] : R["dmp"] & {
|
|
38
|
-
[U in FilterInDynamicMiddlewares<[F], R["rcm"]>[number] as U["dynamic"]["key"]]: U;
|
|
39
|
-
};
|
|
40
|
-
middlewareR: MiddlewareMaker.ApplyManyServices<[F], R["middlewareR"]>;
|
|
41
|
-
}> : R;
|
|
42
|
-
export interface BuildingMiddleware<RequestContextMap extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContextMap, Middlewares extends ReadonlyArray<MiddlewareMaker.Any>, DynamicMiddlewareProviders, out MiddlewareR extends {
|
|
43
|
-
_tag: string;
|
|
44
|
-
} = never> {
|
|
45
|
-
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?: {
|
|
46
|
-
readonly payload?: Payload;
|
|
47
|
-
readonly success?: Success;
|
|
48
|
-
readonly error?: Error;
|
|
49
|
-
readonly stream?: Stream;
|
|
50
|
-
readonly config?: Config;
|
|
51
|
-
readonly primaryKey?: [Payload] extends [Schema.Struct.Fields] ? ((payload: Schema.Simplify<Schema.Struct.Type<NoInfer<Payload>>>) => string) : never;
|
|
52
|
-
}) => Rpc.Rpc<Tag, Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload, Stream extends true ? RpcSchema.Stream<Success, Error> : Success, Stream extends true ? typeof Schema.Never : Error> & {
|
|
53
|
-
readonly config: Config;
|
|
54
|
-
};
|
|
55
|
-
middleware<MWs extends NonEmptyArray<MiddlewareMaker.Any>>(...mw: MWs): RecursiveHandleMWsSideways<MWs, {
|
|
56
|
-
rcm: RequestContextMap;
|
|
57
|
-
provided: Provided;
|
|
58
|
-
middlewares: Middlewares;
|
|
59
|
-
dmp: DynamicMiddlewareProviders;
|
|
60
|
-
middlewareR: MiddlewareR;
|
|
61
|
-
}> extends infer Res extends {
|
|
62
|
-
rcm: RequestContextMap;
|
|
63
|
-
provided: keyof RequestContextMap;
|
|
64
|
-
middlewares: ReadonlyArray<MiddlewareMaker.Any>;
|
|
65
|
-
dmp: any;
|
|
66
|
-
middlewareR: any;
|
|
67
|
-
} ? MiddlewaresBuilder<Res["rcm"], Res["provided"], Res["middlewares"], Res["dmp"], Res["middlewareR"]> : never;
|
|
68
|
-
readonly [TypeTestId]: {
|
|
69
|
-
missingDynamicMiddlewares: Exclude<keyof RequestContextMap, Provided>;
|
|
70
|
-
missingContext: MiddlewareR;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
export type MiddlewaresBuilder<RequestContextMap extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContextMap = never, Middlewares extends ReadonlyArray<MiddlewareMaker.Any> = [], DynamicMiddlewareProviders = unknown, MiddlewareR extends {
|
|
74
|
-
_tag: string;
|
|
75
|
-
} = never> = BuildingMiddleware<RequestContextMap, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> & // keyof Omit<RequestContextMap, Provided> extends never is true when all the dynamic middlewares are provided
|
|
76
|
-
(keyof Omit<RequestContextMap, Provided> extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker<RequestContextMap, Middlewares> : {} : {});
|
|
77
|
-
export declare const makeMiddleware: <RequestContextMap extends Record<string, RPCContextMap.Any>>(rcm: RequestContextMap) => MiddlewaresBuilder<RequestContextMap>;
|
|
78
|
-
export type AddMiddleware<R extends Rpc.Any, Middleware extends RpcMiddleware.TagClassAny> = R extends Rpc.Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? Rpc.Rpc<_Tag, _Payload, _Success, _Error, _Middleware | Middleware> & {
|
|
79
|
-
readonly config: R extends {
|
|
80
|
-
readonly config: infer _C;
|
|
81
|
-
} ? _C : never;
|
|
82
|
-
} : never;
|
|
83
|
-
export declare const middlewareGroup: <RequestContextMap extends Record<string, RPCContextMap.Any>, Middleware extends Context.Tag<MiddlewareMakerId, any> & RpcMiddleware.TagClassAny & {
|
|
84
|
-
readonly requestContext: RequestContextTag<RequestContextMap>;
|
|
85
|
-
readonly requestContextMap: RequestContextMap;
|
|
86
|
-
}>(middleware: Middleware) => <R extends Rpc.Any>(group: RpcGroup.RpcGroup<R>) => RpcGroup.RpcGroup<AddMiddleware<R, Middleware>> & {
|
|
87
|
-
toLayerDynamic: <Handlers extends HandlersFrom<AddMiddleware<R, Middleware>>, EX = never, RX = never>(build: Handlers | Effect.Effect<Handlers, EX, RX>) => Layer.Layer<Rpc.ToHandler<AddMiddleware<R, Middleware>>, EX, Exclude<RX, Scope> | HandlersContext<AddMiddleware<R, Middleware>, Handlers>>;
|
|
88
|
-
};
|
|
89
|
-
export type HandlersContext<Rpcs extends Rpc.Any, Handlers> = keyof Handlers extends infer K ? K extends keyof Handlers & string ? HandlerContext<Rpcs, K, Handlers[K]> : never : never;
|
|
90
|
-
export type HandlerContext<Rpcs extends Rpc.Any, K extends Rpcs["_tag"], Handler> = [Rpc.IsStream<Rpcs, K>] extends [
|
|
91
|
-
true
|
|
92
|
-
] ? Handler extends (...args: any) => Stream.Stream<infer _A, infer _E, infer _R> | Rpc.Fork<Stream.Stream<infer _A, infer _E, infer _R>> | Effect.Effect<ReadonlyMailbox<infer _A, infer _E>, infer _EX, infer _R> | Rpc.Fork<Effect.Effect<ReadonlyMailbox<infer _A, infer _E>, infer _EX, infer _R>> ? Exclude<ExcludeProvides<_R, Rpcs, K>, Scope> : never : Handler extends (...args: any) => Effect.Effect<infer _A, infer _E, infer _R> | Rpc.Fork<Effect.Effect<infer _A, infer _E, infer _R>> ? ExcludeProvides<_R, Rpcs, K> : never;
|
|
93
|
-
export type ExtractDynamicallyProvides<R extends Rpc.Any, Tag extends string> = R extends Rpc.Rpc<Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Middleware extends {
|
|
94
|
-
readonly requestContextMap: infer _RC;
|
|
95
|
-
} ? _RC extends Record<string, RPCContextMap.Any> ? R extends {
|
|
96
|
-
readonly config: infer _C;
|
|
97
|
-
} ? GetEffectContext<_RC, _C> : GetEffectContext<_RC, {}> : never : never : never;
|
|
98
|
-
export type ExtractProvides<R extends Rpc.Any, Tag extends string> = R extends Rpc.Rpc<Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Middleware extends {
|
|
99
|
-
readonly provides: Context.Tag<infer _I, infer _S>;
|
|
100
|
-
} ? _I : never : never;
|
|
101
|
-
export type ExcludeProvides<Env, R extends Rpc.Any, Tag extends string> = Exclude<Env, ExtractProvides<R, Tag> | ExtractDynamicallyProvides<R, Tag>>;
|
|
102
|
-
export interface MiddlewareMakerId {
|
|
103
|
-
readonly _id: unique symbol;
|
|
104
|
-
}
|
|
105
|
-
export type MakeTags<A> = Context.Tag<A, A>;
|
|
106
|
-
export {};
|
|
107
|
-
//# sourceMappingURL=middleware-api.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-api.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/middleware-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Rpc } from "@effect/rpc";
|
|
3
|
-
import { Tag } from "@effect/rpc/RpcMiddleware";
|
|
4
|
-
import { Context, Layer, S } from "effect-app";
|
|
5
|
-
import { typedValuesOf } from "effect-app/utils";
|
|
6
|
-
import { middlewareMaker } from "./generic-middleware.js";
|
|
7
|
-
/** Adapter used when setting the dynamic prop on a middleware implementation */
|
|
8
|
-
export const contextMap = (rcm, key) => ({
|
|
9
|
-
key,
|
|
10
|
-
settings: { service: rcm[key]["service"] }
|
|
11
|
-
});
|
|
12
|
-
const tag = Context.GenericTag("RequestContextConfig");
|
|
13
|
-
/** Retrieves RequestContextConfig out of the RPC annotations */
|
|
14
|
-
export const getConfig = () => (rpc) => {
|
|
15
|
-
return Context.getOrElse(rpc.annotations, tag, () => ({}));
|
|
16
|
-
};
|
|
17
|
-
const makeMiddlewareBasic =
|
|
18
|
-
// by setting RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
|
|
19
|
-
(rcm, ...make) => {
|
|
20
|
-
// reverse middlewares and wrap one after the other
|
|
21
|
-
const middleware = middlewareMaker(make);
|
|
22
|
-
const failures = make.map((_) => _.failure).filter(Boolean);
|
|
23
|
-
const provides = make.flatMap((_) => !_.provides ? [] : Array.isArray(_.provides) ? _.provides : [_.provides]);
|
|
24
|
-
const requires = make
|
|
25
|
-
.flatMap((_) => !_.requires ? [] : Array.isArray(_.requires) ? _.requires : [_.requires])
|
|
26
|
-
.filter((_) => !provides.includes(_));
|
|
27
|
-
const MiddlewareMaker = Tag()("MiddlewareMaker", {
|
|
28
|
-
failure: (failures.length > 0
|
|
29
|
-
? S.Union(...failures)
|
|
30
|
-
: S.Never),
|
|
31
|
-
requires: (requires.length > 0
|
|
32
|
-
? requires
|
|
33
|
-
: undefined),
|
|
34
|
-
provides: (provides.length > 0
|
|
35
|
-
? provides
|
|
36
|
-
: undefined),
|
|
37
|
-
wrap: true
|
|
38
|
-
});
|
|
39
|
-
const layer = Layer
|
|
40
|
-
.scoped(MiddlewareMaker, middleware);
|
|
41
|
-
// add to the tag a default implementation
|
|
42
|
-
return Object.assign(MiddlewareMaker, {
|
|
43
|
-
layer,
|
|
44
|
-
// tag to be used to retrieve the RequestContextConfig from RPC annotations
|
|
45
|
-
requestContext: Context.GenericTag("RequestContextConfig"),
|
|
46
|
-
requestContextMap: rcm
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
export const makeMiddleware = (rcm) => {
|
|
50
|
-
let allMiddleware = [];
|
|
51
|
-
const requestContext = Context.GenericTag("RequestContextConfig");
|
|
52
|
-
const it = {
|
|
53
|
-
// rpc with config
|
|
54
|
-
rpc: (tag, options) => {
|
|
55
|
-
const config = options?.config ?? {};
|
|
56
|
-
// based on the config, we must enhance (union) or set failures.
|
|
57
|
-
// TODO: we should only include errors that are relevant based on the middleware config.ks
|
|
58
|
-
const error = options?.error;
|
|
59
|
-
const errors = typedValuesOf(rcm).map((_) => _.error).filter((_) => _ && _ !== S.Never); // TODO: only the errors relevant based on config
|
|
60
|
-
const newError = error ? S.Union(error, ...errors) : S.Union(...errors);
|
|
61
|
-
const rpc = Rpc.make(tag, { ...options, error: newError });
|
|
62
|
-
return Object.assign(rpc.annotate(requestContext, config), { config });
|
|
63
|
-
},
|
|
64
|
-
middleware: (...middlewares) => {
|
|
65
|
-
for (const mw of middlewares) {
|
|
66
|
-
// recall that we run middlewares in reverse order
|
|
67
|
-
allMiddleware = [mw, ...allMiddleware];
|
|
68
|
-
}
|
|
69
|
-
return allMiddleware.filter((m) => !!m.dynamic).length !== Object.keys(rcm).length
|
|
70
|
-
// for sure, until all the dynamic middlewares are provided it's non sensical to call makeMiddlewareBasic
|
|
71
|
-
? it
|
|
72
|
-
// actually, we don't know yet if MiddlewareR is never, but we can't easily check it at runtime
|
|
73
|
-
: Object.assign(makeMiddlewareBasic(rcm, ...allMiddleware), it);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
return it;
|
|
77
|
-
};
|
|
78
|
-
// alternatively consider group.serverMiddleware? hmmm
|
|
79
|
-
export const middlewareGroup = (middleware) => (group) => {
|
|
80
|
-
const middlewaredGroup = group.middleware(middleware);
|
|
81
|
-
const toLayerOriginal = middlewaredGroup.toLayer.bind(middlewaredGroup);
|
|
82
|
-
return Object.assign(middlewaredGroup, {
|
|
83
|
-
toLayerDynamic: (build) => {
|
|
84
|
-
return toLayerOriginal(build); // ??
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWlkZGxld2FyZS9taWRkbGV3YXJlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBcUQsTUFBTSxhQUFhLENBQUE7QUFHcEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQWUsS0FBSyxFQUFrRCxDQUFDLEVBQXdDLE1BQU0sWUFBWSxDQUFBO0FBRWpKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUdoRCxPQUFPLEVBQXdCLGVBQWUsRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQTtBQUd2RyxnRkFBZ0Y7QUFDaEYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBR3hCLEdBQXNCLEVBQUUsR0FBUSxFQUEyQyxFQUFFLENBQUMsQ0FBQztJQUMvRSxHQUFHO0lBQ0gsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxTQUFTLENBQUMsRUFBNEI7Q0FDdEUsQ0FBQyxDQUFBO0FBRUYsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3RELGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FFckIsRUFBRSxDQUNOLENBQUMsR0FBaUIsRUFBdUMsRUFBRTtJQUN6RCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ25FLENBQUMsQ0FBQTtBQXlJRCxNQUFNLG1CQUFtQjtBQUN2QixxR0FBcUc7QUFDckcsQ0FJRSxHQUFzQixFQUN0QixHQUFHLElB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
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { RpcMiddleware } from "@effect/rpc";
|
|
2
|
-
import { Context } from "effect-app";
|
|
3
|
-
declare const DevMode_base: Context.ReferenceClass<DevMode, "DevMode", boolean>;
|
|
4
|
-
export declare class DevMode extends DevMode_base {
|
|
5
|
-
}
|
|
6
|
-
declare const RequestCacheMiddleware_base: RpcMiddleware.TagClass<RequestCacheMiddleware, "RequestCacheMiddleware", {
|
|
7
|
-
readonly wrap: true;
|
|
8
|
-
}>;
|
|
9
|
-
export declare class RequestCacheMiddleware extends RequestCacheMiddleware_base {
|
|
10
|
-
}
|
|
11
|
-
declare const ConfigureInterruptibilityMiddleware_base: RpcMiddleware.TagClass<ConfigureInterruptibilityMiddleware, "ConfigureInterruptibilityMiddleware", {
|
|
12
|
-
readonly wrap: true;
|
|
13
|
-
}>;
|
|
14
|
-
export declare class ConfigureInterruptibilityMiddleware extends ConfigureInterruptibilityMiddleware_base {
|
|
15
|
-
}
|
|
16
|
-
declare const LoggerMiddleware_base: RpcMiddleware.TagClass<LoggerMiddleware, "LoggerMiddleware", {
|
|
17
|
-
readonly wrap: true;
|
|
18
|
-
}>;
|
|
19
|
-
export declare class LoggerMiddleware extends LoggerMiddleware_base {
|
|
20
|
-
}
|
|
21
|
-
export declare const DefaultGenericMiddlewares: readonly [typeof RequestCacheMiddleware, typeof ConfigureInterruptibilityMiddleware, typeof LoggerMiddleware];
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=middleware-native.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-native.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/middleware-native.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;;AAEpC,qBAAa,OAAQ,SAAQ,YAAsE;CAAG;;;;AAEtG,qBAAa,sBACX,SAAQ,2BAAqF;CAC7F;;;;AAEF,qBAAa,mCACX,SAAQ,wCAEN;CACF;;;;AAEF,qBAAa,gBAAiB,SAAQ,qBAAyE;CAAG;AAElH,eAAO,MAAM,yBAAyB,+GAI5B,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { RpcMiddleware } from "@effect/rpc";
|
|
3
|
-
import { Context } from "effect-app";
|
|
4
|
-
export class DevMode extends Context.Reference()("DevMode", { defaultValue: () => false }) {
|
|
5
|
-
}
|
|
6
|
-
export class RequestCacheMiddleware extends RpcMiddleware.Tag()("RequestCacheMiddleware", { wrap: true }) {
|
|
7
|
-
}
|
|
8
|
-
export class ConfigureInterruptibilityMiddleware extends RpcMiddleware.Tag()("ConfigureInterruptibilityMiddleware", {
|
|
9
|
-
wrap: true
|
|
10
|
-
}) {
|
|
11
|
-
}
|
|
12
|
-
export class LoggerMiddleware extends RpcMiddleware.Tag()("LoggerMiddleware", { wrap: true }) {
|
|
13
|
-
}
|
|
14
|
-
export const DefaultGenericMiddlewares = [
|
|
15
|
-
RequestCacheMiddleware,
|
|
16
|
-
ConfigureInterruptibilityMiddleware,
|
|
17
|
-
LoggerMiddleware
|
|
18
|
-
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS1uYXRpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWlkZGxld2FyZS9taWRkbGV3YXJlLW5hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXBDLE1BQU0sT0FBTyxPQUFRLFNBQVEsT0FBTyxDQUFDLFNBQVMsRUFBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUFHO0FBRXRHLE1BQU0sT0FBTyxzQkFDWCxTQUFRLGFBQWEsQ0FBQyxHQUFHLEVBQTBCLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDN0Y7QUFFRixNQUFNLE9BQU8sbUNBQ1gsU0FBUSxhQUFhLENBQUMsR0FBRyxFQUF1QyxDQUFDLHFDQUFxQyxFQUFFO0lBQ3RHLElBQUksRUFBRSxJQUFJO0NBQ1gsQ0FBQztDQUNGO0FBRUYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWEsQ0FBQyxHQUFHLEVBQW9CLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FBRztBQUVsSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxzQkFBc0I7SUFDdEIsbUNBQW1DO0lBQ25DLGdCQUFnQjtDQUNSLENBQUEifQ==
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
import { type Rpc, RpcMiddleware } from "@effect/rpc"
|
|
5
|
-
import { type SuccessValue, type TypeId } from "@effect/rpc/RpcMiddleware"
|
|
6
|
-
import { type Context, type Effect, type NonEmptyReadonlyArray, type Option, type S, type Schema, type Scope, Unify } from "effect-app"
|
|
7
|
-
import type { AnyService, ContextTagArray, RPCContextMap } from "effect-app/client/req"
|
|
8
|
-
import { type HttpHeaders } from "effect-app/http"
|
|
9
|
-
import { type TagUnify, type TagUnifyIgnore } from "effect/Context"
|
|
10
|
-
|
|
11
|
-
// updated to support Scope.Scope and Requires
|
|
12
|
-
export interface RpcMiddleware<Provides, E, Requires> {
|
|
13
|
-
(options: {
|
|
14
|
-
readonly clientId: number
|
|
15
|
-
readonly rpc: Rpc.AnyWithProps
|
|
16
|
-
readonly payload: unknown
|
|
17
|
-
readonly headers: HttpHeaders.Headers
|
|
18
|
-
}): Effect.Effect<Provides, E, Scope.Scope | Requires>
|
|
19
|
-
}
|
|
20
|
-
export interface RpcMiddlewareWrap<Provides, E, Requires> {
|
|
21
|
-
(options: {
|
|
22
|
-
readonly clientId: number
|
|
23
|
-
readonly rpc: Rpc.AnyWithProps
|
|
24
|
-
readonly payload: unknown
|
|
25
|
-
readonly headers: HttpHeaders.Headers
|
|
26
|
-
readonly next: Effect.Effect<SuccessValue, E, Provides | Scope.Scope | Requires>
|
|
27
|
-
}): Effect.Effect<SuccessValue, E, Scope.Scope | Requires>
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export type RpcOptionsOriginal = {
|
|
31
|
-
readonly wrap?: boolean
|
|
32
|
-
readonly optional?: boolean
|
|
33
|
-
readonly failure?: Schema.Schema.All
|
|
34
|
-
readonly provides?: AnyService
|
|
35
|
-
readonly requiredForClient?: boolean
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export type RpcDynamic<Key extends string, A extends RPCContextMap.Any> = {
|
|
39
|
-
key: Key
|
|
40
|
-
settings: A
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type AnyDynamic = { dynamic: RpcDynamic<any, any> }
|
|
44
|
-
|
|
45
|
-
export type DependsOn = {
|
|
46
|
-
readonly dependsOn: NonEmptyReadonlyArray<AnyDynamic> | undefined
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface RpcOptionsDynamic<Key extends string, A extends RPCContextMap.Any> extends RpcOptionsOriginal {
|
|
50
|
-
readonly dynamic: RpcDynamic<Key, A>
|
|
51
|
-
readonly dependsOn?: NonEmptyReadonlyArray<AnyDynamic> | undefined
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export type Dynamic<Options> = Options extends RpcOptionsDynamic<any, any> ? true : false
|
|
55
|
-
|
|
56
|
-
export interface RpcMiddlewareDynamicWrap<E, R, _Config> {
|
|
57
|
-
(options: {
|
|
58
|
-
readonly next: Effect.Effect<SuccessValue, E, Scope.Scope | R>
|
|
59
|
-
readonly clientId: number
|
|
60
|
-
readonly rpc: Rpc.AnyWithProps // TODO & { annotations: Context.Context<RequestContextMap<Config>> }
|
|
61
|
-
readonly payload: unknown
|
|
62
|
-
readonly headers: HttpHeaders.Headers
|
|
63
|
-
}): Effect.Effect<
|
|
64
|
-
SuccessValue,
|
|
65
|
-
E,
|
|
66
|
-
Scope.Scope | R
|
|
67
|
-
>
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export interface RpcMiddlewareDynamicNormal<A, E, R, _Config> {
|
|
71
|
-
(options: {
|
|
72
|
-
readonly clientId: number
|
|
73
|
-
readonly rpc: Rpc.AnyWithProps // TODO & { annotations: Context.Context<RequestContextMap<Config>> }
|
|
74
|
-
readonly payload: unknown
|
|
75
|
-
readonly headers: HttpHeaders.Headers
|
|
76
|
-
}): Effect.Effect<
|
|
77
|
-
Option.Option<A>,
|
|
78
|
-
E,
|
|
79
|
-
Scope.Scope | R
|
|
80
|
-
>
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface TagClassAny extends Context.Tag<any, any> {
|
|
84
|
-
readonly [TypeId]: TypeId
|
|
85
|
-
readonly optional: boolean
|
|
86
|
-
readonly provides?: Context.Tag<any, any> | ContextTagArray | undefined
|
|
87
|
-
readonly requires?: Context.Tag<any, any> | ContextTagArray | undefined
|
|
88
|
-
readonly failure: Schema.Schema.All
|
|
89
|
-
readonly requiredForClient: boolean
|
|
90
|
-
readonly wrap: boolean
|
|
91
|
-
readonly dynamic?: RpcDynamic<any, any> | undefined
|
|
92
|
-
readonly dependsOn?: NonEmptyReadonlyArray<AnyDynamic> | undefined
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export declare namespace TagClass {
|
|
96
|
-
/**
|
|
97
|
-
* @since 1.0.0
|
|
98
|
-
* @category models
|
|
99
|
-
*/
|
|
100
|
-
export type Provides<Options> = Options extends {
|
|
101
|
-
readonly provides: Context.Tag<any, any>
|
|
102
|
-
readonly optional?: false
|
|
103
|
-
} ? Context.Tag.Identifier<Options["provides"]>
|
|
104
|
-
: Options extends {
|
|
105
|
-
readonly provides: ContextTagArray
|
|
106
|
-
readonly optional?: false
|
|
107
|
-
} ? ContextTagArray.Identifier<Options["provides"]>
|
|
108
|
-
: never
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* @since 1.0.0
|
|
112
|
-
* @category models
|
|
113
|
-
*/
|
|
114
|
-
export type Requires<Options> = Options extends {
|
|
115
|
-
readonly requires: Context.Tag<any, any>
|
|
116
|
-
} ? Context.Tag.Identifier<Options["requires"]>
|
|
117
|
-
: Options extends {
|
|
118
|
-
readonly requires: ContextTagArray
|
|
119
|
-
} ? ContextTagArray.Identifier<Options["requires"]>
|
|
120
|
-
: never
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* @since 1.0.0
|
|
124
|
-
* @category models
|
|
125
|
-
*/
|
|
126
|
-
export type Service<Options> = Options extends { readonly provides: Context.Tag<any, any> }
|
|
127
|
-
? Context.Tag.Service<Options["provides"]>
|
|
128
|
-
: Options extends { readonly dynamic: RpcDynamic<any, infer A> }
|
|
129
|
-
? Options extends { wrap: true } ? void : AnyService.Bla<A["service"]>
|
|
130
|
-
: Options extends { readonly provides: ContextTagArray }
|
|
131
|
-
? Context.Context<ContextTagArray.Identifier<Options["provides"]>>
|
|
132
|
-
: void
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* @since 1.0.0
|
|
136
|
-
* @category models
|
|
137
|
-
*/
|
|
138
|
-
export type FailureSchema<Options> = Options extends
|
|
139
|
-
{ readonly failure: Schema.Schema.All; readonly optional?: false } ? Options["failure"]
|
|
140
|
-
// actually not, the Failure depends on Dynamic Middleware Configuration!
|
|
141
|
-
// : Options extends { readonly dynamic: RpcDynamic<any, infer A> } ? A["error"]
|
|
142
|
-
: typeof Schema.Never
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* @since 1.0.0
|
|
146
|
-
* @category models
|
|
147
|
-
*/
|
|
148
|
-
export type Failure<Options> = Options extends
|
|
149
|
-
{ readonly failure: Schema.Schema<infer _A, infer _I, infer _R>; readonly optional?: false } ? _A
|
|
150
|
-
// actually not, the Failure depends on Dynamic Middleware Configuration!
|
|
151
|
-
: Options extends { readonly dynamic: RpcDynamic<any, infer A> } ? S.Schema.Type<A["error"]>
|
|
152
|
-
: never
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* @since 1.0.0
|
|
156
|
-
* @category models
|
|
157
|
-
*/
|
|
158
|
-
export type FailureContext<Options> = Schema.Schema.Context<FailureSchema<Options>>
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* @since 1.0.0
|
|
162
|
-
* @category models
|
|
163
|
-
*/
|
|
164
|
-
export type FailureService<Options> = Optional<Options> extends true ? unknown : Failure<Options>
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* @since 1.0.0
|
|
168
|
-
* @category models
|
|
169
|
-
*/
|
|
170
|
-
export type Optional<Options> = Options extends { readonly optional: true } ? true : false
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* @since 1.0.0
|
|
174
|
-
* @category models
|
|
175
|
-
*/
|
|
176
|
-
export type RequiredForClient<Options> = Options extends { readonly requiredForClient: true } ? true : false
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* @since 1.0.0
|
|
180
|
-
* @category models
|
|
181
|
-
*/
|
|
182
|
-
export type Wrap<Options> = Options extends { readonly wrap: true } ? true : false
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* @since 1.0.0
|
|
186
|
-
* @category models
|
|
187
|
-
*/
|
|
188
|
-
export interface Base<Self, Name extends string, Options, Service> extends Context.Tag<Self, Service> {
|
|
189
|
-
new(_: never): Context.TagClassShape<Name, Service>
|
|
190
|
-
readonly [TypeId]: TypeId
|
|
191
|
-
readonly optional: Optional<Options>
|
|
192
|
-
readonly failure: FailureSchema<Options>
|
|
193
|
-
readonly provides: Options extends { readonly provides: Context.Tag<any, any> } ? Options["provides"]
|
|
194
|
-
: Options extends { readonly provides: ContextTagArray } ? Options["provides"]
|
|
195
|
-
: undefined
|
|
196
|
-
readonly requires: Options extends { readonly requires: Context.Tag<any, any> } ? Options["requires"]
|
|
197
|
-
: Options extends { readonly requires: ContextTagArray } ? Options["requires"]
|
|
198
|
-
: undefined
|
|
199
|
-
readonly dynamic: Options extends RpcOptionsDynamic<any, any> ? Options["dynamic"]
|
|
200
|
-
: undefined
|
|
201
|
-
readonly dependsOn: Options extends DependsOn ? Options["dependsOn"] : undefined
|
|
202
|
-
readonly requiredForClient: RequiredForClient<Options>
|
|
203
|
-
readonly wrap: Wrap<Options>
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
export interface TagClass<
|
|
208
|
-
Self,
|
|
209
|
-
Name extends string,
|
|
210
|
-
Options
|
|
211
|
-
> extends
|
|
212
|
-
TagClass.Base<
|
|
213
|
-
Self,
|
|
214
|
-
Name,
|
|
215
|
-
Options,
|
|
216
|
-
Options extends RpcOptionsDynamic<any, any> ? TagClass.Wrap<Options> extends true ? RpcMiddlewareDynamicWrap<
|
|
217
|
-
TagClass.FailureService<Options>,
|
|
218
|
-
TagClass.Requires<Options>,
|
|
219
|
-
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
220
|
-
>
|
|
221
|
-
: RpcMiddlewareDynamicNormal<
|
|
222
|
-
TagClass.Service<Options>,
|
|
223
|
-
TagClass.FailureService<Options>,
|
|
224
|
-
TagClass.Requires<Options>,
|
|
225
|
-
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
226
|
-
>
|
|
227
|
-
: TagClass.Wrap<Options> extends true ? RpcMiddlewareWrap<
|
|
228
|
-
TagClass.Provides<Options>,
|
|
229
|
-
TagClass.Failure<Options>,
|
|
230
|
-
TagClass.Requires<Options>
|
|
231
|
-
>
|
|
232
|
-
: RpcMiddleware<
|
|
233
|
-
TagClass.Service<Options>,
|
|
234
|
-
TagClass.FailureService<Options>,
|
|
235
|
-
TagClass.Requires<Options>
|
|
236
|
-
>
|
|
237
|
-
>
|
|
238
|
-
{}
|
|
239
|
-
|
|
240
|
-
export const Tag = <Self>() =>
|
|
241
|
-
<
|
|
242
|
-
const Name extends string,
|
|
243
|
-
const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>
|
|
244
|
-
>(
|
|
245
|
-
id: Name,
|
|
246
|
-
options?: Options | undefined
|
|
247
|
-
): TagClass<Self, Name, Options> =>
|
|
248
|
-
class extends RpcMiddleware.Tag<Self>()(id, options as any) {
|
|
249
|
-
static readonly dynamic = options && "dynamic" in options ? options.dynamic : undefined
|
|
250
|
-
static readonly dependsOn = options && "dependsOn" in options ? options.dependsOn : undefined
|
|
251
|
-
static override [Unify.typeSymbol]?: unknown
|
|
252
|
-
static override [Unify.unifySymbol]?: TagUnify<typeof this>
|
|
253
|
-
static override [Unify.ignoreSymbol]?: TagUnifyIgnore
|
|
254
|
-
} as any
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
import { type Effect, Layer, type NonEmptyReadonlyArray, Unify } from "effect-app"
|
|
5
|
-
import { type TagUnify, type TagUnifyIgnore } from "effect/Context"
|
|
6
|
-
import { type Service } from "effect/Effect"
|
|
7
|
-
import { type RpcMiddleware, type RpcMiddlewareDynamicNormal, type RpcMiddlewareDynamicWrap, type RpcMiddlewareWrap, type RpcOptionsDynamic, type RpcOptionsOriginal, Tag, type TagClass } from "./RpcMiddleware.js"
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated - RPC groups are defined centrally and re-used between server and client,
|
|
11
|
-
* so layer implementation details should not be mixed.
|
|
12
|
-
*/
|
|
13
|
-
export const TagService = <Self>() =>
|
|
14
|
-
<
|
|
15
|
-
const Name extends string,
|
|
16
|
-
const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>
|
|
17
|
-
>(
|
|
18
|
-
id: Name,
|
|
19
|
-
options?: Options | undefined
|
|
20
|
-
) =>
|
|
21
|
-
<
|
|
22
|
-
LayerOpts extends {
|
|
23
|
-
effect: Effect.Effect<
|
|
24
|
-
Options extends RpcOptionsDynamic<any, any> ? TagClass.Wrap<Options> extends true ? RpcMiddlewareDynamicWrap<
|
|
25
|
-
TagClass.FailureService<Options>,
|
|
26
|
-
TagClass.Requires<Options>,
|
|
27
|
-
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
28
|
-
>
|
|
29
|
-
: RpcMiddlewareDynamicNormal<
|
|
30
|
-
TagClass.Service<Options>,
|
|
31
|
-
TagClass.FailureService<Options>,
|
|
32
|
-
TagClass.Requires<Options>,
|
|
33
|
-
{ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"] }
|
|
34
|
-
>
|
|
35
|
-
: TagClass.Wrap<Options> extends true ? RpcMiddlewareWrap<
|
|
36
|
-
TagClass.Provides<Options>,
|
|
37
|
-
TagClass.Failure<Options>,
|
|
38
|
-
TagClass.Requires<Options>
|
|
39
|
-
>
|
|
40
|
-
: RpcMiddleware<
|
|
41
|
-
TagClass.Service<Options>,
|
|
42
|
-
TagClass.FailureService<Options>,
|
|
43
|
-
TagClass.Requires<Options>
|
|
44
|
-
>,
|
|
45
|
-
any,
|
|
46
|
-
any
|
|
47
|
-
>
|
|
48
|
-
dependencies?: NonEmptyReadonlyArray<Layer.Layer.Any>
|
|
49
|
-
}
|
|
50
|
-
>(opts: LayerOpts): TagClass<Self, Name, Options> & {
|
|
51
|
-
Default: Layer.Layer<
|
|
52
|
-
Self,
|
|
53
|
-
| (LayerOpts extends { effect: Effect<infer _A, infer _E, infer _R> } ? _E
|
|
54
|
-
: never)
|
|
55
|
-
| Service.MakeDepsE<LayerOpts>,
|
|
56
|
-
| Exclude<
|
|
57
|
-
LayerOpts extends { effect: Effect<infer _A, infer _E, infer _R> } ? _R : never,
|
|
58
|
-
Service.MakeDepsOut<LayerOpts>
|
|
59
|
-
>
|
|
60
|
-
| Service.MakeDepsIn<LayerOpts>
|
|
61
|
-
>
|
|
62
|
-
} =>
|
|
63
|
-
class extends Tag<Self>()(id, options as any) {
|
|
64
|
-
static readonly Default = Layer.scoped(this, opts.effect as any).pipe(
|
|
65
|
-
Layer.provide([Layer.empty, ...opts.dependencies ?? []])
|
|
66
|
-
)
|
|
67
|
-
static override [Unify.typeSymbol]?: unknown
|
|
68
|
-
static override [Unify.unifySymbol]?: TagUnify<typeof this>
|
|
69
|
-
static override [Unify.ignoreSymbol]?: TagUnifyIgnore
|
|
70
|
-
} as any
|