Hyperlinkv0.8.0-beta.28

Node

Node.clientsfunctionsrc/internal/node.ts:145
<
  Node extends AddressedNode<unknown> & {
    readonly [catalogSym]?: unknown
  },
  const Tags extends TagList
>(
  node: Node,
  tags: TagsForCatalog<Node, Tags>
): Layer.Layer<ServicesOfTags<Tags>>
<
  Node extends AddressedNode<unknown> & {
    readonly [catalogSym]?: unknown
  },
  const Tags extends TagList
>(
  node: Node,
  ...tags: TagsForCatalog<Node, Tags>
): Layer.Layer<ServicesOfTags<Tags>>
<const Tags extends TagList>(tags: Tags): Layer.Layer<
  ServicesOfTags<Tags>,
  UnaddressedNode | ClientsNodeMismatch
>
<const Tags extends TagList>(...tags: Tags): Layer.Layer<
  ServicesOfTags<Tags>,
  UnaddressedNode | ClientsNodeMismatch
>

Client layers for a catalog node's ROut (C2) — one shared connect, no repeated node on each client line.

Node.clients(Worker, [Jobs, Emails])
Node.clients(Worker, Jobs, Emails)
Node.clients([Jobs, Emails]) // each tag carries Worker via andNode / { node }
Node.clients(Jobs, Emails)
connectconnect
export function clients<
  Node extends AddressedNode<unknown> & {
    readonly [catalogSym]?: unknown;
  },
  const Tags extends TagList,
>(
  node: Node,
  tags: TagsForCatalog<Node, Tags>,
): Layer.Layer<ServicesOfTags<Tags>>;
export function clients<
  Node extends AddressedNode<unknown> & {
    readonly [catalogSym]?: unknown;
  },
  const Tags extends TagList,
>(
  node: Node,
  ...tags: TagsForCatalog<Node, Tags>
): Layer.Layer<ServicesOfTags<Tags>>;
/** Bound tags — node from each tag's `andNode` / `{ node }` (array form). */
export function clients<const Tags extends TagList>(
  tags: Tags,
): Layer.Layer<ServicesOfTags<Tags>, UnaddressedNode | ClientsNodeMismatch>;
/** Bound tags — rest form. */
export function clients<const Tags extends TagList>(
  ...tags: Tags
): Layer.Layer<ServicesOfTags<Tags>, UnaddressedNode | ClientsNodeMismatch>;
export function clients(
  first: unknown,
  second?: unknown,
  ...rest: ReadonlyArray<unknown>
): Layer.Layer<never, UnaddressedNode | ClientsNodeMismatch> {
  const addressed = asAddressed(first);
  if (addressed !== undefined) {
    const tags: ReadonlyArray<Hyperlink.PipeableTag> = isTagList(second)
      ? second
      : second !== undefined
        ? ([second, ...rest] as unknown as TagList)
        : [];
    return mergeClientLayers(addressed, tags);
  }
  const tags: ReadonlyArray<Hyperlink.PipeableTag> = isTagList(first)
    ? first
    : second !== undefined
      ? ([first, second, ...rest] as unknown as TagList)
      : ([first] as unknown as TagList);
  return clientsFromBoundTags(tags);
}