FuncType - v0.45.0
    Preparing search index...

    Type Alias LayerType

    Layer companion object with construction methods

    type LayerType = {
        effect: <S extends unknown, E extends unknown>(
            tag: TagType<S>,
            f: () => Promise<S>,
        ) => LayerType<never, E, S>;
        empty: () => LayerType<never, never, never>;
        fromContext: <R extends unknown>(
            context: ContextType<R>,
        ) => LayerType<never, never, R>;
        fromService: <Dep extends unknown, S extends unknown>(
            tag: TagType<S>,
            depTag: TagType<Dep>,
            f: (dep: Dep) => S,
        ) => LayerType<Dep, never, S>;
        fromServiceEffect: <
            Dep extends unknown,
            E extends unknown,
            S extends unknown,
        >(
            tag: TagType<S>,
            depTag: TagType<Dep>,
            f: (dep: Dep) => Promise<S>,
        ) => LayerType<Dep, E, S>;
        mergeAll: <Layers extends LayerType<unknown, unknown, unknown>[]>(
            ...layers: Layers,
        ) => LayerType<
            Layers[number] extends LayerType<RIn, unknown, unknown> ? RIn : never,
            Layers[number] extends LayerType<unknown, E, unknown> ? E : never,
            Layers[number] extends LayerType<unknown, unknown, ROut> ? ROut : never,
        >;
        succeed: <S extends unknown>(
            tag: TagType<S>,
            service: S,
        ) => LayerType<never, never, S>;
        sync: <S extends unknown>(
            tag: TagType<S>,
            f: () => S,
        ) => LayerType<never, never, S>;
    }
    Index

    Properties

    effect: <S extends unknown, E extends unknown>(
        tag: TagType<S>,
        f: () => Promise<S>,
    ) => LayerType<never, E, S> = ...

    Creates a layer from an async function.

    Type Declaration

      • <S extends unknown, E extends unknown>(
            tag: TagType<S>,
            f: () => Promise<S>,
        ): LayerType<never, E, S>
      • Type Parameters

        • S extends unknown
        • E extends unknown

        Parameters

        • tag: TagType<S>

          The service tag

        • f: () => Promise<S>

          Async function to create the service

        Returns LayerType<never, E, S>

    empty: () => LayerType<never, never, never> = ...

    Creates an empty layer that provides nothing.

    fromContext: <R extends unknown>(
        context: ContextType<R>,
    ) => LayerType<never, never, R> = ...

    Creates a layer from a context.

    Type Declaration

    fromService: <Dep extends unknown, S extends unknown>(
        tag: TagType<S>,
        depTag: TagType<Dep>,
        f: (dep: Dep) => S,
    ) => LayerType<Dep, never, S> = ...

    Creates a layer that depends on another service.

    Type Declaration

      • <Dep extends unknown, S extends unknown>(
            tag: TagType<S>,
            depTag: TagType<Dep>,
            f: (dep: Dep) => S,
        ): LayerType<Dep, never, S>
      • Type Parameters

        • Dep extends unknown
        • S extends unknown

        Parameters

        • tag: TagType<S>

          The service tag to provide

        • depTag: TagType<Dep>

          The dependency tag

        • f: (dep: Dep) => S

          Function to create the service from the dependency

        Returns LayerType<Dep, never, S>

    fromServiceEffect: <Dep extends unknown, E extends unknown, S extends unknown>(
        tag: TagType<S>,
        depTag: TagType<Dep>,
        f: (dep: Dep) => Promise<S>,
    ) => LayerType<Dep, E, S> = ...

    Creates a layer that depends on another service (async).

    Type Declaration

      • <Dep extends unknown, E extends unknown, S extends unknown>(
            tag: TagType<S>,
            depTag: TagType<Dep>,
            f: (dep: Dep) => Promise<S>,
        ): LayerType<Dep, E, S>
      • Type Parameters

        • Dep extends unknown
        • E extends unknown
        • S extends unknown

        Parameters

        • tag: TagType<S>

          The service tag to provide

        • depTag: TagType<Dep>

          The dependency tag

        • f: (dep: Dep) => Promise<S>

          Async function to create the service from the dependency

        Returns LayerType<Dep, E, S>

    mergeAll: <Layers extends LayerType<unknown, unknown, unknown>[]>(
        ...layers: Layers,
    ) => LayerType<
        Layers[number] extends LayerType<RIn, unknown, unknown> ? RIn : never,
        Layers[number] extends LayerType<unknown, E, unknown> ? E : never,
        Layers[number] extends LayerType<unknown, unknown, ROut> ? ROut : never,
    > = ...

    Merges multiple layers into one.

    Type Declaration

      • <Layers extends LayerType<unknown, unknown, unknown>[]>(
            ...layers: Layers,
        ): LayerType<
            Layers[number] extends LayerType<RIn, unknown, unknown> ? RIn : never,
            Layers[number] extends LayerType<unknown, E, unknown> ? E : never,
            Layers[number] extends LayerType<unknown, unknown, ROut> ? ROut : never,
        >
      • Type Parameters

        • Layers extends LayerType<unknown, unknown, unknown>[]

        Parameters

        • ...layers: Layers

          Layers to merge

        Returns LayerType<
            Layers[number] extends LayerType<RIn, unknown, unknown> ? RIn : never,
            Layers[number] extends LayerType<unknown, E, unknown> ? E : never,
            Layers[number] extends LayerType<unknown, unknown, ROut> ? ROut : never,
        >

    succeed: <S extends unknown>(
        tag: TagType<S>,
        service: S,
    ) => LayerType<never, never, S> = ...

    Creates a layer that provides a service with a constant value.

    Type Declaration

      • <S extends unknown>(tag: TagType<S>, service: S): LayerType<never, never, S>
      • Type Parameters

        • S extends unknown

        Parameters

        • tag: TagType<S>

          The service tag

        • service: S

          The service implementation

        Returns LayerType<never, never, S>

    sync: <S extends unknown>(
        tag: TagType<S>,
        f: () => S,
    ) => LayerType<never, never, S> = ...

    Creates a layer from a sync function.

    Type Declaration

      • <S extends unknown>(tag: TagType<S>, f: () => S): LayerType<never, never, S>
      • Type Parameters

        • S extends unknown

        Parameters

        • tag: TagType<S>

          The service tag

        • f: () => S

          Function to create the service

        Returns LayerType<never, never, S>