effect-io-ai

Package: effect
Module: Layer

Layer.succeedContext

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

Signature

declare const succeedContext: <A>(context: Context.Context<A>) => Layer<A>

Source

Since v2.0.0