20 generic functions

tsz is 1.6x faster 471 lines 14 KB

Timing

tsz
487.95ms
tsgo
789.45ms

Files

// Complex TypeScript with generics, unions, and conditional types
/// <reference lib="es2015.promise" />

type DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T;

interface Result<T, E = Error> {
  ok: boolean;
  value?: T;
  error?: E;
}

async function process0<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process1<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process2<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process3<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process4<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process5<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process6<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process7<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process8<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process9<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process10<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process11<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process12<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process13<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process14<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process15<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process16<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process17<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process18<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}

async function process19<T extends Record<string, unknown>>(
  input: T,
  options?: DeepPartial<{ timeout: number; retries: number }>
): Promise<Result<T>> {
  const timeout = options?.timeout ?? 1000;
  const retries = options?.retries ?? 3;
  for (let attempt = 0; attempt < retries; attempt++) {
    try {
      const result = await Promise.resolve(input);
      if (timeout < 0) throw new Error("timeout");
      return { ok: true, value: result };
    } catch (e) {
      if (attempt === retries - 1) return { ok: false, error: e as Error };
    }
  }
  return { ok: false, error: new Error("exhausted") };
}