effect-io-ai

Package: effect
Module: Stream

Stream.service

Accesses a service from the context and emits it as a single element.

Example (Accessing a service as a stream)

import { Context, Effect, Stream } from "effect"

class Greeter extends Context.Service<Greeter, {
  readonly greet: (name: string) => string
}>()("Greeter") {}

const stream = Stream.service(Greeter).pipe(
  Stream.map((greeter) => greeter.greet("World"))
)

const program = Effect.gen(function*() {
  return yield* stream.pipe(
    Stream.provideService(Greeter, {
      greet: (name) => `Hello, ${name}!`
    }),
    Stream.runCollect
  )
})

Effect.runPromise(program)
// Output: [ "Hello, World!" ]

Signature

declare const service: <I, S>(service: Context.Key<I, S>) => Stream<S, never, I>

Source

Since v4.0.0