@praha/byethrow
    Preparing search index...

    @praha/byethrow

    @praha/byethrow

    npm version npm download license Github

    A lightweight, tree-shakable Result type package with a simple, consistent API designed.

    • 🌲 Tree-shakable: Only include what you use.
    • 🧱 Lightweight & object-based: No classes, no magicβ€”just plain objects.
    • πŸ”„ Consistent API: Designed for readability and predictability.
    • πŸ”€ Unified sync/async handling: Works seamlessly with both Result<T, E> and Promise<Result<T, E>>.
    • 🎯 Focused functionality: Result-centric utilities without unnecessary aliases or confusing variants.

    Handling errors in JavaScript and TypeScript often leads to unstructured code. The typical try/catch approach doesn’t scale well and mixes error handling with business logic. @praha/byethrow addresses this by introducing a simple Result type, empowering you to model computation outcomes clearlyβ€”while keeping control flow explicit and maintainable.

    If you're a fan of libraries like neverthrow or effect-ts, this tool will feel familiar. While neverthrow may occasionally lack certain features, and effect-ts or fp-ts can introduce unnecessary complexity or overhead for many use cases, @praha/byethrow strikes a thoughtful balanceβ€”remaining lightweight and focused, while still offering everything you need to handle both synchronous and asynchronous fallible operations.

    npm install @praha/byethrow
    

    Detailed API docs are available at: πŸ‘‰ https://praha-inc.github.io/byethrow

    Here's a simple example showing how it is used:

    import { Result } from '@praha/byethrow';

    const validateId = (id: string) => {
    if (!id.startsWith('u')) {
    return Result.fail(new Error('Invalid ID format'));
    }
    return Result.succeed();
    };

    const findUser = Result.try({
    try: (id: string) => {
    return { id, name: 'John Doe' };
    },
    catch: (error) => new Error('Failed to find user', { cause: error }),
    });

    const result = Result.pipe(
    Result.succeed('u123'),
    Result.andThrough(validateId),
    Result.andThen(findUser),
    );

    if (Result.isSuccess(result)) {
    console.log(result.value); // User found: John Doe
    }

    Contributions, issues and feature requests are welcome.

    Feel free to check issues page if you want to contribute.

    Copyright Β© PrAha, Inc.

    This project is MIT licensed.