Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/toreda/fate
https://github.com/toreda/fate
javascript toreda typed typescript yarn
Last synced: 28 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/toreda/fate
- Owner: toreda
- License: mit
- Created: 2020-04-06T17:40:39.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-02-08T07:25:09.000Z (11 months ago)
- Last Synced: 2024-11-08T16:49:25.743Z (about 2 months ago)
- Topics: javascript, toreda, typed, typescript, yarn
- Language: TypeScript
- Size: 536 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![Toreda](https://content.toreda.com/logo/toreda-logo.png)
![CI](https://img.shields.io/github/workflow/status/toreda/fate/CI?style=for-the-badge) [![Coverage](https://img.shields.io/sonar/coverage/toreda_fate?server=https%3A%2F%2Fsonarcloud.io&style=for-the-badge)](https://sonarcloud.io/dashboard?id=toreda_fate) ![Sonar Quality Gate](https://img.shields.io/sonar/quality_gate/toreda_fate?server=https%3A%2F%2Fsonarcloud.io&style=for-the-badge) ![GitHub issues](https://img.shields.io/github/issues/toreda/fate?style=for-the-badge)
![GitHub package.json version (branch)](https://img.shields.io/github/package-json/v/toreda/fate/master?style=for-the-badge)
![GitHub Release Date](https://img.shields.io/github/release-date/toreda/fate?style=for-the-badge)![license](https://img.shields.io/github/license/toreda/fate?style=for-the-badge)
# `@toreda/fate`
Return function results, errors, status, and logs with one object.
# Install
**_With yarn (preferred):_**
```bash
yarn add @toreda/fate
```With NPM:
```bash
npm install @toreda/fate
```
# Usage
## Library Usage
### Typescript
```typescript
import {Fate} from '@toreda/fate';function request(): Fate {
// Can set the type of payload by calling Fate with a type arg.
// Payload type defaults to unknown.
const fate = new Fate();const result = someAction();
if (thereIsAProblem()) {
return fate.error('whatever is passed will get converted to an Error obj if it isnt one');
}fate.state.payload = result;
}const fate = request();
if (fate.isFailure()) {
// fate.state.errorLog holds all the errors that were attached to the fate
}if (fate.isSuccess()) {
// fate.state.payload
}// Returns Error[] if fate fails, the payload if fate succeeds, or Error[] with a single error if payload is null/undefined
console.log(fate.getData());// Converts all the state data into a string
const serialized = fate.serialize();// Uses serialized state data to rebuild a fate
const fromSerial = new Fate({serialized});
```## TypeScript
```typescript
import {Fate} from '@toreda/fate';const fate = new Fate();
if (fate.success()) {
console.info(`Success`);
} else {
console.info(`Failed`);
}
``````typescript
import {Fate} from '@toreda/fate';function isPositive(value: number): Fate {
// Fate instance containing a boolean with an initial value `false`.
const fate = new Fate({
data: false
});// Sets success to false & sets an error code.
if (typeof value !== 'number') {
return fate.setErrorCode('non_number_value');
}fate.data = value >= 0;
return fate.setSuccess(true);
}const result = isPositive(1);
if (result.success()) {
// Function succeeded.
if (fate.data === true) {
console.info(`${value} is positive`);
} else {
console.info(`${value} is negative`);
}
} else {
console.error(`isPositive failed with error code: ${result.errorCode()});
}
```
# Build
Build (or rebuild) the config package:
**_With Yarn (preferred):_**
```bash
yarn install
yarn build
```With NPM:
```bash
npm install
npm run-script build
```
# Testing
Config implements unit tests using jest. Run the following commands from the directory where config has been installed.
**_With yarn (preferred):_**
```
yarn install
yarn test
```With NPM:
```
npm install
npm run-script test
```
# Legal
## License
[MIT](LICENSE) © Toreda, Inc.
## Copyright
Copyright © 2019 - 2022 Toreda, Inc. All Rights Reserved.
https://www.toreda.com