import type { NonEmptyReadonlyArray } from "effect-app/Array"; import * as Context from "effect-app/Context"; import * as Effect from "effect-app/Effect"; import * as Layer from "effect-app/Layer"; import type * as Scope from "effect/Scope"; 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>), 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL0NvbnRleHRQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzdELE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBRXpDLE9BQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFFMUMsT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDakQsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDMUQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFpQixNQUFNLGlCQUFpQixDQUFBO0FBRTdHLE1BQU0sV0FBVyxpQkFBaUI7SUFDaEMsSUFBSSxFQUFFLGlCQUFpQixDQUFBO0NBQ3hCO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxRQUFRLENBQUMsS0FBSyxTQUFTLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSTtLQUsvQyxDQUFDLElBQUksTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUk1QixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FDakYsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMs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