promise-sos
v1.0.0
Published
Helpers for using promise
Maintainers
Readme
Promise S.O.S
A lightweight, fully typed library providing utilities for working with JavaScript promises.
✨ Features
- 📦 Tiny and dependency-free
- 🔒 Type-safe – written in TypeScript
- ⚡ Works with ESM and CommonJS
- 🛠 Provides helpers for combining and managing promises
📥 Installation
npm install promise-sos
# or
yarn add promise-sos🚀 Usage
promiseAllObject
A helper function that extends Promise.all by allowing you to pass an object of promises (instead of an array).
It returns a promise that resolves to an object with the same keys, but with the promises replaced by their resolved values.
✅ Example with mixed values
import { promiseAllObject } from 'promise-sos';
const promisesObject = {
promiseA: Promise.resolve('resolved promiseA'),
promiseB: Promise.resolve('resolved promiseB'),
someValue: 1234,
flag: true
};
const result = await promiseAllObject(promisesObject);
console.log(result);
// {
// promiseA: 'resolved promiseA',
// promiseB: 'resolved promiseB',
// someValue: 1234,
// flag: true
// }❌ Example with rejection
import { promiseAllObject } from 'promise-sos';
const promisesObject = {
promiseA: Promise.reject(new Error('rejected promiseA')),
promiseB: Promise.resolve('resolved promiseB')
};
try {
const result = await promiseAllObject(promisesObject);
} catch (error) {
console.error(error);
// Error: rejected promiseA
}📘 API
promiseAllObject<T>(promisesMap: T): Promise<PromisesMapResult<T>>
promisesMap: An object whose values may be promises or regular values.- Returns: A promise resolving to an object with the same keys, with all promises unwrapped.
- Throws:
TypeErrorif input is not a non-empty plain object.- Any error from a rejected promise.
📝 License
MIT © Inaki Arroyo
