Hyperlinkv0.8.0-beta.28

Hyperlink

Hyperlink.effectfunctionsrc/Hyperlink.ts:942
<Client = Derive>(): <Su extends Schema.Top>(
  success: NarrowedSuccess<Su, Client>
) => Method<
  undefined,
  Su,
  typeof Schema.Never,
  false,
  MethodAnnotations,
  Client
>
<Su extends Schema.Top>(success: Su): Method<undefined, Su, Schema.Never>
<Su extends Schema.Top, E extends Schema.Top>(
  success: Su,
  error: E
): Method<undefined, Su, E>
<const C extends EffectWireConfig>(config: C): Method<
  undefined,
  C["success"] extends Schema.Top ? C["success"] : typeof Schema.Void,
  C["error"] extends Schema.Top ? C["error"] : typeof Schema.Never
>

Two-stage effect — override the client-facing type with a Client (an Effect type; a read surfaces as Effect<Success>) that must narrow the schema-derived shape: effect<Client>()(success). Widening the success fails to compile. For a free override, see unsafeEffect.

Source src/Hyperlink.ts:94236 lines
export function effect<Client = Derive>(): <Su extends Schema.Top>(
  success: NarrowedSuccess<Su, Client>,
) => Method<undefined, Su, typeof Schema.Never, false, MethodAnnotations, Client>;
export function effect<Su extends Schema.Top>(success: Su): Method<undefined, Su, Schema.Never>;
export function effect<Su extends Schema.Top, E extends Schema.Top>(
  success: Su,
  error: E,
): Method<undefined, Su, E>;
export function effect<const C extends EffectWireConfig>(
  config: C,
): Method<
  undefined,
  C["success"] extends Schema.Top ? C["success"] : typeof Schema.Void,
  C["error"] extends Schema.Top ? C["error"] : typeof Schema.Never
>;
export function effect(
  successOrConfig?: Schema.Top | EffectWireConfig,
  error?: Schema.Top,
): AnyMethod | (<Su extends Schema.Top>(success: Su) => AnyMethod) {
  // two-stage form `effect<Client>()(success)` — 0 args on the first call; the client override is
  // type-only (phantom), so the returned builder is the ordinary schema-derived query builder.
  if (successOrConfig === undefined) {
    return <Su extends Schema.Top>(success: Su): AnyMethod =>
      makeMethod("query", undefined, success, Schema.Never, false, {});
  }
  let success: Schema.Top = Schema.Void;
  let errorSchema: Schema.Top = Schema.Never;
  if (isEffectWireConfig(successOrConfig)) {
    success = successOrConfig.success ?? Schema.Void;
    errorSchema = successOrConfig.error ?? Schema.Never;
  } else {
    success = successOrConfig;
    errorSchema = error ?? Schema.Never;
  }
  return makeMethod("query", undefined, success, errorSchema, false, {});
}
Referenced by 8 symbols