@coniface/trial
v2.0.0
Published
A promise helper tool to inline them and reduce indentation-complexity.
Downloads
1,702
Maintainers
Readme
Trial
"I promise before Almighty God that the evidence which I shall give shall be the truth, the whole truth, and nothing but the truth."
A great tool to ensure your code keeps its promise!
How to install it
Use your favorite packet manager:
pnpm i @coniface/trial
yarn add @coniface/trial
npm i @coniface/trial
How to use it?
It could not be simpler than that!
- Reduces promise declaration indentation
// Instead of
const promise = new Promise((resolve, reject) => {
console.log(`Let's get to work!`);
});
import { getTrial } from '@coniface/trial';
// Inline your promise
const [promise, resolve, reject] = getTrial<T>();
console.log(`Let's get to work!`);
ℹ Since early 2024, it became part of the Promise API
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers
- Encourages the use of strong typings instead of try/catch blocks
// Instead of
async function somewhereInYourCode<T>(promise: Promise<T>) {
try {
const result = await promise;
console.log(`Let's get to work!`);
} catch (error) {
console.error('An error occured', error);
}
}
import { trial } from '@coniface/trial';
// Use typings and inline your code
async function somewhereInYourCode<T>(promise: Promise<T>) {
const [data, error] = await trial(promise);
if (error) {
// error exists in this context
// data type is never
console.error('An error occured', error);
return;
}
// error does not exist in this context
// data type is T
console.log(`Let's get to work!`);
}
Why this naming?
trial
is a concise 5-letter word to use as a function.- The reference to the promise in tribunal.
- The result (guilty / not guilty) that matches with a promise state (resolved / rejected).