Hyperlinkv0.8.0-beta.28

Layer

Layer.succeedContextconsteffect/Layer.ts:828
<A>(context: Context.Context<A>): Layer<A>

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)
constructorssucceed
Source effect/Layer.ts:8282 lines
export const succeedContext = <A>(context: Context.Context<A>): Layer<A> =>
  fromBuildUnsafe(constant(internalEffect.succeed(context)))
Referenced by 4 symbols