Hyperlinkv0.9.0-beta.0

Daemon

Daemon.layerfunctionsrc/Daemon.ts:2593
<Self, S extends Spec, A = void, E = never, R = never>(
  tag: HyperlinkTag<Self, S>,
  config: DaemonLayerConfig<A, E, R>
): Layer.Layer<Self | Local<Self> | Store.Storage, never, R>

The local layer for a daemon: build its driver (auto-started) and provide its service.

Soft-defaults an in-memory Store.Storage (R fulfilled). Override with your app store:

Daemon.layer(Tag, config).pipe(Layer.provideMerge(AppStore.layer({ filename })))

layerMemory is an alias for the same soft-default.

layers & servingStore.StoragelayerMemory
Source src/Daemon.ts:259321 lines
export function layer<Self, S extends Spec, A = void, E = never, R = never>(
  tag: HyperlinkTag<Self, S>,
  config: DaemonLayerConfig<A, E, R>,
): Layer.Layer<Self | Local<Self> | Store.Storage, never, R>;
export function layer(
  tag: HyperlinkTag<any, any, any>,
  config: DaemonLayerConfig<any, any, any>,
): Layer.Any {
  // Pin the composed tag to the concrete base spec so HandlerContext/Impl walks stay shallow
  // (see overload note above). Close the loose overload's `any` R before Effect.map so
  // anyUnknownInErrorContext never sees a requirements `any`.
  const baseTag: HyperlinkTag<unknown, DaemonSpec> = tag;
  const closedConfig = retype<DaemonLayerConfig<unknown, never, never>>(config as never);
  return withDefaultMemory(
    Layer.unwrap(
      Effect.map(buildDaemonImpl(tag, closedConfig), (built) =>
        Hyperlink.layer(baseTag, Hyperlink.grantLocal(baseTag, built)),
      ),
    ),
  );
}
Referenced by 1 symbols