import { type NonEmptyArray, type NonEmptyReadonlyArray } from "effect/Array"; import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import * as S from "effect/Schema"; import type * as Scope from "effect/Scope"; import { type Simplify } from "effect/Types"; import { Rpc, type RpcGroup, type RpcSchema } from "effect/unstable/rpc"; import { type HandlersFrom } from "effect/unstable/rpc/RpcGroup"; import * as Context from "../Context.js"; import { type TypeTestId } from "../TypeTest.js"; import { type GetContextConfig, type RequestContextMapTagAny, type RpcContextMap } from "./RpcContextMap.js"; import { type AddMiddleware, type AnyDynamic, type RpcDynamic, type TagClassAny } from "./RpcMiddleware.js"; import * as RpcMiddlewareX from "./RpcMiddleware.js"; type MakeTags = A; export interface MiddlewareMaker, MiddlewareProviders extends ReadonlyArray> extends RpcMiddlewareX.TagClass, MiddlewareMaker.ManyProvided> extends never ? {} : { readonly requires: MakeTags, MiddlewareMaker.ManyProvided>>; }) & (MiddlewareMaker.ManyErrors extends never ? {} : { readonly error: S.Codec>; }) & (MiddlewareMaker.ManyProvided extends never ? {} : { readonly provides: MakeTags>; })>, { provides: MiddlewareMaker.ManyProvided extends never ? never : MakeTags>; requires: Exclude, MiddlewareMaker.ManyProvided> extends never ? never : MakeTags, MiddlewareMaker.ManyProvided>>; }> { readonly layer: Layer.Layer>; readonly requestContext: RequestContextTag; readonly requestContextMap: RequestContextMap; } export interface RequestContextTag> extends Context.Service<"RequestContextConfig", GetContextConfig> { } export declare namespace MiddlewareMaker { type Any = TagClassAny; type ApplyServices = Exclude> | Required; type ApplyManyServices, R> = Exclude; }[number]> | { [K in keyof A]: Required; }[number]; type ManyProvided> = A extends NonEmptyReadonlyArray ? { [K in keyof A]: Provided; }[number] : Provided; type ManyRequired> = A extends NonEmptyReadonlyArray ? { [K in keyof A]: Required; }[number] : Required; type ManyErrors> = A extends NonEmptyReadonlyArray ? { [K in keyof A]: Errors; }[number] : Errors; type Provided = T extends TagClassAny ? T extends { provides: infer _P; } ? _P : never : never; type Errors = T extends TagClassAny ? T extends { error: S.Top; } ? S.Schema.Type : never : never; type Required = T extends TagClassAny ? T extends { requires: infer _R; } ? _R : never : never; } type GetDependsOnKeys = MW extends { dependsOn: NonEmptyReadonlyArray; } ? { [K in keyof MW["dependsOn"]]: MW["dependsOn"][K] extends AnyDynamic ? MW["dependsOn"][K]["dynamic"]["key"] : never; }[keyof MW["dependsOn"]] : never; type FilterInDynamicMiddlewares, RequestContextMap extends Record> = { [K in keyof MWs]: MWs[K] extends { dynamic: RpcDynamic; } ? MWs[K] : never; }; type RecursiveHandleMWsSideways; provided: keyof R["rcm"]; middlewares: ReadonlyArray; dmp: any; middlewareR: any; }> = MWs extends [] ? R : MWs extends [infer F, ...infer Rest extends ReadonlyArray] ? F extends MiddlewareMaker.Any ? RecursiveHandleMWsSideways[number]["dynamic"]["key"], GetDependsOnKeys>; middlewares: [...R["middlewares"], F]; dmp: [FilterInDynamicMiddlewares<[F], R["rcm"]>[number]] extends [never] ? R["dmp"] : R["dmp"] & { [U in FilterInDynamicMiddlewares<[F], R["rcm"]>[number] as U["dynamic"]["key"]]: U; }; middlewareR: MiddlewareMaker.ApplyManyServices<[F], R["middlewareR"]>; }> : `Absurd: F must extend MiddlewareMaker.Any` : never; export interface BuildingMiddleware, Provided extends keyof RequestContextMap, Middlewares extends ReadonlyArray, DynamicMiddlewareProviders, out MiddlewareR extends { _tag: string; } = never> { rpc: = {}>(tag: Tag, options?: { readonly payload?: Payload; readonly success?: Success; readonly error?: Error; readonly stream?: Stream; readonly config?: Config; readonly primaryKey?: [Payload] extends [S.Struct.Fields] ? ((payload: Payload extends S.Struct.Fields ? Simplify["Type"]> : Payload["Type"]) => string) : never; }) => Rpc.Rpc : Payload, Stream extends true ? RpcSchema.Stream : Success, Stream extends true ? typeof S.Never : Error> & { readonly config: Config; }; middleware>(...mw: MWs): RecursiveHandleMWsSideways extends infer Res extends { self: any; id: string; rcm: RequestContextMap; provided: keyof RequestContextMap; middlewares: ReadonlyArray; dmp: any; middlewareR: any; } ? MiddlewaresBuilder : never; readonly [TypeTestId]: { missingDynamicMiddlewares: Exclude; missingContext: MiddlewareR; }; } export type MiddlewaresBuilder, Provided extends keyof RequestContextMap = never, Middlewares extends ReadonlyArray = [], DynamicMiddlewareProviders = unknown, MiddlewareR extends { _tag: string; } = never> = BuildingMiddleware & // keyof Omit extends never is true when all the dynamic middlewares are provided (keyof Omit extends never ? [MiddlewareR] extends [never] ? MiddlewareMaker : { new (_: never): {}; } : { new (_: never): {}; }); export declare const Tag: () => (id: Id, rcm: RequestContextMap) => MiddlewaresBuilder; export declare const middlewareGroup: , Middleware extends RpcMiddlewareX.TagClassAny & { readonly requestContext: RequestContextTag; readonly requestContextMap: RequestContextMap; }>(middleware: Middleware) => (group: RpcGroup.RpcGroup) => RpcGroup.RpcGroup> & { toLayerDynamic: >, EX = never, RX = never>(build: Handlers | Effect.Effect) => Layer.Layer>, EX, Exclude | RpcMiddlewareX.HandlersContext, Handlers>>; }; export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZU1ha2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnBjL01pZGRsZXdhcmVNYWtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3RSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUNsQyxPQUFPLEtBQUssS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDeEUsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUE7QUFFeEMsT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDaEQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyx1QkFBdUIsRUFBRSxLQUFLLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzVHLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLFVBQVUsRUFBd0IsS0FBSyxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqSSxPQUFPLEtBQUssY0FBYyxNQUFNLG9CQUFvQixDQUFBO0FBSXBELEtBQUssUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7QUFFcEIsTUFBTSxXQUFXLGVBQWUsQ0FDOUIsSUFBSSxFQUNKLEVBQUUsU0FBUyxNQUFNLEVB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LElBQUksTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FDdEQ7U0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFOUMsS0FBWSxZQUFZLENBQUMsQ0FBQyxTQUFTLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMscUJBQXFCLENBQUMsV0FBVyxDQUFDLEdBQ3pHO1NBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FBRSxDQUFDLE1BQU0sQ0FBQyxHQUMxQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDdkIsS0FBWSxZQUFZLENBQUMsQ0FBQyxTQUFTLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMscUJBQXFCLENBQUMsV0FBVyxDQUFDLEdBQ3pHO1NBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FBRSxDQUFDLE1BQU0sQ0FBQyxHQUMxQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDdkIsS0FBWSxVQUFVLENBQUMsQ0FBQyxTQUFTLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMscUJBQXFCLENBQUMsV0FBVyxDQUFDLEdBQ3ZHO1NBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FBRSxDQUFDLE1BQU0sQ0FBQyxHQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFckIsS0FBWSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxXQUFXLEdB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