https://github.com/sammwyy/safetry
Safe and structured error handling for JavaScript.
https://github.com/sammwyy/safetry
error error-handling javascript try-catch typescript
Last synced: about 1 year ago
JSON representation
Safe and structured error handling for JavaScript.
- Host: GitHub
- URL: https://github.com/sammwyy/safetry
- Owner: sammwyy
- License: mit
- Created: 2024-08-19T20:00:42.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-19T20:16:37.000Z (almost 2 years ago)
- Last Synced: 2025-03-29T13:22:04.695Z (about 1 year ago)
- Topics: error, error-handling, javascript, try-catch, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/safe-try-catch
- Size: 57.6 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# π Safe Try Catch
Safe and structured error handling for JavaScript.
## β‘ Features
- π Safe error handling for synchronous and asynchronous functions
- π Supports `try/catch` for both sync and async operations
- π― Clear separation between success and failure using `Result`
- π Compatible with Promises
- π¦ Easy integration with existing codebases
- π‘ Inspired by Rustβs error-handling model
## π¦ Install
```bash
# Using npm
npm install safe-try-catch
# Using yarn
yarn add safe-try-catch
# Using pnpm
pnpm add safe-try-catch
# Using bun
bun add safe-try-catch
```
## π Usage
### Basic Example
Wraps synchronous or asynchronous functions with safe error handling.
```ts
import { safeTry } from 'safe-try-catch';
const [result, error] = safeTry(() => {
throw new Error("This is an error");
});
```
### Wrapping a function
Wraps a function to handle errors safely, and can be used with both synchronous and asynchronous functions.
```ts
import { wrapTry } from 'safe-try-catch';
// Unsafe synchronous function
function unsafeSyncAction(value: string): string {
if (value === "") throw new Error("Value is empty");
return value.trim();
}
const safeAction = wrapTry(unsafeSyncAction);
const [result, error] = safeAction(" Hello World ");
if (error) {
console.error(error.message);
} else {
console.log(result); // "Hello World"
}
```
## π API
### `safeTry(fn: () => T): Result`
- **Description**: Directly executes a function or block of code inside error handling. Ideal for quick, inline code execution.
- **Parameters**:
- `fn`: A synchronous function to be executed.
- **Returns**: A tuple `[result, error]`.
### `wrapTry(fn: (...args: any[]) => T | Promise): (...args: any[]) => Promise>`
- **Description**: Wraps a given function (synchronous or asynchronous) in safe error handling. Returns a function that handles errors and returns a Promise.
- **Parameters**:
- `fn`: A function to be wrapped that returns a value or a Promise.
- **Returns**: A function that returns a Promise containing a tuple `[result, error]`.
## π€ Contributing
Contributions, issues and feature requests are welcome! Feel free to check [issues page](https://github.com/sammwyy/safetry/issues).
## β€οΈ Show your support
Give a βοΈ if this project helped you! Or buy me a coffeelatte π on [Ko-fi](https://ko-fi.com/sammwy)
## π License
Copyright Β© 2024 [Sammwy](https://github.com/sammwyy). This project is [MIT](LICENSE) licensed.