import { Context, Effect, Layer, type NonEmptyReadonlyArray, type Scope } from "effect-app"; import { type HttpRouter } from "effect-app/http"; import { type EffectGenUtils } from "effect-app/utils/gen"; import { type Yieldable } from "effect/Effect"; import { type ContextTagWithDefault, type GetContext, type LayerUtils } from "./layerUtils.js"; export interface ContextProviderId { _tag: "ContextProvider"; } /** * TDeps is an array of services with Default implementation * each service is an effect which builds some context for each request */ type TDepsArr> = { [K in keyof TDeps]: TDeps[K] extends ContextTagWithDefault.Base, never, infer _R>> ? [_R] extends [HttpRouter.Provided] ? TDeps[K] : `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : TDeps[K] extends (ContextTagWithDefault.Base<(() => Generator)>) ? [_YW] extends [never] ? TDeps[K] : [_YW] extends [Yieldable] ? [_R] extends [HttpRouter.Provided] ? TDeps[K] : `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : "WTF are you yielding man?" : `You cannot throw errors from providers`; }; export declare const mergeContextProviders: >(...deps: TDepsArr) => { dependencies: { [K in keyof TDeps]: TDeps[K]["Default"]; }; effect: Effect.Effect>>>, never, EffectGenUtils.Context>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>; }; export declare const ContextProvider: >(input: { effect: Effect.Effect | (() => Generator, ContextProviderA, any>), MakeContextProviderE, MakeContextProviderR | Scope.Scope>; dependencies?: Dependencies; }) => Context.Service> & { Default: Layer.Layer, Exclude> | LayerUtils.GetLayersContext>; }; export declare const MergedContextProvider: >(...deps: TDepsArr) => ContextTagWithDefault>>>, never, EffectGenUtils.Context>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, Exclude, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>> | LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>; export declare const EmptyContextProvider: Context.Service, never, never>> & { Default: Layer.Layer; }; export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL0NvbnRleHRQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxxQkFBcUIsRUFBUSxLQUFLLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVqRyxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUMsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxVQUFVLEVBQWlCLE1BQU0saUJBQWlCLENBQUE7QUFFN0csTUFBTSxXQUFXLGlCQUFpQjtJQUNoQyxJQUFJLEVBQUUsaUJBQWlCLENBQUE7Q0FDeEI7QUFFRDs7O0dBR0c7QUFDSCxLQUFLLFFBQVEsQ0FBQyxLQUFLLFNBQVMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJO0tBSy9DLENBQUMsSUFBSSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBSTVCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUNqRixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FDN0Msb0RBQW9ELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDdkUsTUFBTSxDQUNQLDZCQUE2QixHQUM1QixLQUFLLENBQUMs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