20 generic functions

Generic signature checking and type-parameter environment setup.

tsz is 4.5x faster 471 lines 14 KB

Timing

tsz
79.87ms
tsgo
362.22ms

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') };
}