A lightweight, tree-shakable Result type package with a simple, consistent API designed
npm install @praha/byethrow



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
- 🎯 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.
``bash`
npm install @praha/byethrow
- Website: For detailed information and usage examples, visit the byethrow website.
- API Reference: For a complete API reference of the core package effect, see the byethrow API Reference.
Here's a simple example showing how it is used:
`ts
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.