2024-10-16 05:02:31 +00:00
# Grip
Simplified result/error handling for JavaScript.
Grip always returns a consistent call result ready to be handled.
It makes the control flow similar to that of Golang, but doesn't force you to make additional null checks or create transitional variables to hold error results.
## Install
```bash
2024-10-16 05:21:20 +00:00
bun add github:nesterow/grip # or pnpm
2024-10-16 05:02:31 +00:00
```
## Usage
The `grip` function accepts a function or a promise and returns a result with return value and status.
The result can be hadled as either an object or a tuple.
```javascript
import { grip } from '@nesterow/grip';
```
## Handle result as an object:
The result can be handled as an object: `{value, status, Ok(), Fail(), Of(type)}`
```javascript
2024-10-16 05:21:20 +00:00
const res = await grip(
2024-10-16 05:02:31 +00:00
fetch('https://api.example.com')
);
2024-10-16 05:21:20 +00:00
if (res.Fail()) {
2024-10-16 05:02:31 +00:00
handleErrorProperly();
return;
}
2024-10-16 05:21:20 +00:00
const json = await grip(
2024-10-16 05:02:31 +00:00
res.value.json()
);
2024-10-16 05:21:20 +00:00
if (json.Of(SyntaxError)) {
2024-10-16 05:02:31 +00:00
handleJsonParseError();
return;
}
```
## Handle result as a tuple:
The result can also be received as a tuple if you want to handle errors in Go'ish style:
```javascript
2024-10-16 05:21:20 +00:00
const [res, fetchStatus] = await grip(
2024-10-16 05:02:31 +00:00
fetch('https://api.example.com')
);
if (fetchStatus.Fail()) {
handleErrorProperly();
return;
}
const [json, parseStatus] = await grip(
2024-10-16 05:21:20 +00:00
res.json()
2024-10-16 05:02:31 +00:00
);
if (parseStatus.Of(SyntaxError)) {
handleJsonParseError();
return;
}
```
## License
MIT