Binds injection token to eager dependency.
import { bindEagerlyTo } from '@marblejs/core';
bindEagerlyTo :: ContextToken -> ContextReader -> BoundDependency
The function is responsible for binding context token to ContextReader which can be a fp-ts Reader instance or plain sync/async () => T. The function is producing a eager binding, which means that, the dependency will be evaluated on startup.
ContextReader
Reader
() => T
import { reader, bindEagerlyTo, createContextToken } from '@marblejs/core'; import { createServer } from '@marblejs/http'; import { pipe } from 'fp-ts/lib/function'; import * as R from 'fp-ts/lib/Reader'; // create sync reader const FooSyncToken = createContextToken<ReturnType<typeof fooSync>>('FooSyncToken'); const fooSync = pipe(reader, R.map(ask => { const otherDependency = ask(OtherToken); return { ... }; }); // create async reader const FooAsyncToken = createContextToken<ReturnType<typeof fooSync>>('FooSyncToken'); const fooAsync = pipe(reader, R.map(async ask => { const otherDependency = ask(OtherToken); return { ... }; }); // bind readers to tokens const boundSyncDependency = bindEagerlyTo(FooSyncToken)(fooSync); const boundAsyncDependency = bindEagerlyTo(FooAsyncToken)(fooAsync);
Last updated 3 years ago