Skip to content

local

local<R2, R>(f): <A>(data) => Reader<R2, A>

Defined in: Core/Reader.ts:159

Adapts a Reader to work with a different (typically wider) environment by transforming the environment before passing it to the Reader. This lets you compose Readers that expect different environments.

R2

R

(env) => R

<A>(data): Reader<R2, A>

A

Reader<R, A>

Reader<R2, A>

type AppEnv = { db: DbPool; config: Config; logger: Logger };

// buildUrl only needs Config
const buildUrl: Reader<Config, string> = Reader.asks(c => c.baseUrl);

// Zoom in from AppEnv to Config
const buildUrlFromApp: Reader<AppEnv, string> =
  pipe(buildUrl, Reader.local((env: AppEnv) => env.config));

buildUrlFromApp(appEnv); // works with the full AppEnv