Hyperlinkv0.8.0-beta.28

Hyperlink

Hyperlink.streamfunctionsrc/Hyperlink.ts:1565
<Su extends Schema.Top>(success: Su): Method<
  undefined,
  Su,
  Schema.Never,
  true
>
<Su extends Schema.Top, const F extends Schema.Struct.Fields>(
  success: Su,
  options: { readonly payload: F }
): Method<F, Su, Schema.Never, true>
<Su extends Schema.Top, P extends Schema.Top>(
  success: Su,
  options: { readonly payload: P }
): Method<P, Su, Schema.Never, true>
<Su extends Schema.Top, E extends Schema.Top>(
  success: Su,
  options: { readonly error: E }
): Method<undefined, Su, E, true>
<
  Su extends Schema.Top,
  const F extends Schema.Struct.Fields,
  E extends Schema.Top
>(
  success: Su,
  options: { readonly payload: F; readonly error: E }
): Method<F, Su, E, true>
<Su extends Schema.Top, P extends Schema.Top, E extends Schema.Top>(
  success: Su,
  options: { readonly payload: P; readonly error: E }
): Method<P, Su, E, true>

Define a stream (a live, idempotent push source) whose elements are success. The service member surfaces as a Stream<Success, Error> (a property, or (payload) => Stream when a payload is declared) rather than an Effect — drive dashboard atoms, a CLI --watch, or a TUI from it. Conventionally named changes when it carries a resource's whole observable state (a snapshot stream); back it with a SubscriptionRef's .changes.

Counts as a query for tools (an idempotent read). success is the element schema and error (if any) is the stream error schema; both must be encodable (they cross RPC). payload is a single schema or struct fields — same as Effect's Rpc.make.

changes: Hyperlink.stream(QueueSnapshot).annotate({ description: "Live queue state." }),
tail: Hyperlink.stream(LogLine, { payload: Schema.Struct({ since: Schema.Number }) }),
spec fields
Source src/Hyperlink.ts:156548 lines
export function stream<Su extends Schema.Top>(
  success: Su,
): Method<undefined, Su, Schema.Never, true>;
export function stream<Su extends Schema.Top, const F extends Schema.Struct.Fields>(
  success: Su,
  options: { readonly payload: F },
): Method<F, Su, Schema.Never, true>;
// whole-schema payload — the value is passed/decoded directly (mirrors `Rpc.make`'s schema form).
export function stream<Su extends Schema.Top, P extends Schema.Top>(
  success: Su,
  options: { readonly payload: P },
): Method<P, Su, Schema.Never, true>;
export function stream<Su extends Schema.Top, E extends Schema.Top>(
  success: Su,
  options: { readonly error: E },
): Method<undefined, Su, E, true>;
export function stream<
  Su extends Schema.Top,
  const F extends Schema.Struct.Fields,
  E extends Schema.Top,
>(
  success: Su,
  options: { readonly payload: F; readonly error: E },
): Method<F, Su, E, true>;
export function stream<
  Su extends Schema.Top,
  P extends Schema.Top,
  E extends Schema.Top,
>(
  success: Su,
  options: { readonly payload: P; readonly error: E },
): Method<P, Su, E, true>;
export function stream(
  success: Schema.Top,
  options?: {
    readonly payload?: Schema.Struct.Fields | Schema.Top;
    readonly error?: Schema.Top;
  },
): AnyMethod {
  return makeMethod(
    "query",
    options?.payload,
    success,
    options?.error ?? Schema.Never,
    true,
    {},
  );
}
Referenced by 7 symbols