Package: effect
Module: Layer
Constructs a layer that provides all services in an already available
Context.
When to use
Use when you need a Layer built from an existing Context, including when
you need to provide multiple services at once.
Details
This is a more general version of succeed that allows you to provide
multiple services at once through a Context.
Example (Providing multiple services from a context)
import { Context, Effect, Layer } from "effect"
class Database extends Context.Service<Database, {
readonly query: (sql: string) => Effect.Effect<string>
}>()("Database") {}
class Logger extends Context.Service<Logger, {
readonly log: (msg: string) => Effect.Effect<void>
}>()("Logger") {}
const context = Context.make(Database, {
query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
}).pipe(
Context.add(Logger, {
log: (msg: string) => Effect.sync(() => console.log(msg))
})
)
const layer = Layer.succeedContext(context)
See
succeed for providing a single service from a valueSignature
declare const succeedContext: <A>(context: Context.Context<A>) => Layer<A>
Since v2.0.0