Hyperlinkv0.8.0-beta.28

Store

Store.withDefaultStorageconstsrc/Store.ts:509
<A, E, R>(engine: Layer.Layer<A, E, R | Storage>): Layer.Layer<
  A | Storage,
  E,
  R
>

Soft-default Storage for toolkit engines.

  • No ambient Storage → merge layerDefaultMemory (R fulfilled).
  • Ambient Storage already present (app Store.Service via Layer.provide / provideMerge into this layer) → build the engine against that store (override, including SQLite).

Prefer composing override into the toolkit layer so Soft unwrap sees it: Process.layer(…).pipe(Layer.provideMerge(AppStore.layer…)) or httpServer([…]).pipe(Layer.provide(AppStore.layer…)).

Source src/Store.ts:50912 lines
export const withDefaultStorage = <A, E, R>(
  engine: Layer.Layer<A, E, R | Storage>,
): Layer.Layer<A | Storage, E, R> =>
  Layer.unwrap(
    Effect.gen(function* () {
      const existing = yield* Effect.serviceOption(Storage);
      if (Option.isSome(existing)) {
        return Layer.provide(engine, Layer.succeed(Storage, existing.value));
      }
      return Layer.provideMerge(engine, layerDefaultMemory);
    }),
  ) as Layer.Layer<A | Storage, E, R>;