Hyperlinkv0.9.0-beta.0

Hyperlink

Hyperlink.Validatetypesrc/Hyperlink.ts:2198
Validate<C, I>

Validate a Tag<Self, I>() contract C against its service interface I: a bare local at a key absent from I (or with no I at all) becomes a LocalNeedsType error the user's value can't satisfy, so the contract argument is rejected at the call site. Every other entry (a wired method, an explicit local<T>(), a nested group) passes through.

Source src/Hyperlink.ts:219817 lines
export type Validate<C, I> = {
  readonly [K in keyof C]: C[K] extends BareLocal
    ? K extends keyof I
      ? C[K]
      : LocalNeedsType<K>
    : C[K] extends Spec
      ? K extends keyof I
        ? Validate<C[K], I[K]>
        : LocalNeedsType<K>
      : C[K] extends { readonly kind: MethodKind } // a wired method
        ? K extends keyof I
          ? WireHonors<SuccessOf<AsMethod<C[K]>>, IfaceSuccess<I[K]>> extends true
            ? C[K]
            : WireMismatch<K>
          : C[K] // wired member absent from the interface — allowed (interface may be a subset view)
        : C[K];
};