Hyperlinkv0.9.0-beta.0

Hyperlink

Hyperlink.promisefunctionsrc/Hyperlink.ts:1523
<S extends object>(service: S): PromiseOf<S>
<S extends object, R>(
  service: S,
  context: Context.Context<R>
): PromiseOf<S>

Adapt a Hyperlink service handle to Promise / async — the OS edge for non-Effect consumers (scripts, Next handlers, TanStack queryFn). Not a Spec builder: wrap the handle you already hold from layer / client (typically via ManagedRuntime.runPromise(Tag)).

const runtime = ManagedRuntime.make(Hyperlink.layer(Counter, impl))
const handle = await runtime.runPromise(Counter)
const api = Hyperlink.promise(handle)
await api.add(1)
console.log(await api.current)
for await (const n of api.count.changes) { … }

Optional context runs Effects / Streams that still need services (e.g. Local on a local-layer handle). Default is empty context — fine for wire clients whose methods are R = never. Failures reject the Promise / async iterator (no Result wrapper).

adapterslayerclientLocal
Source src/Hyperlink.ts:152314 lines
export function promise<S extends object>(service: S): PromiseOf<S>;
export function promise<S extends object, R>(
  service: S,
  context: Context.Context<R>,
): PromiseOf<S>;
export function promise<S extends object, R = never>(
  service: S,
  context?: Context.Context<R>,
): PromiseOf<S> {
  return adaptPromiseHandle(
    service,
    context ?? (Context.empty() as Context.Context<R>),
  ) as PromiseOf<S>;
}