Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nknapp/deep-aplus
Resolve a whole structure of promises, library agnostic
https://github.com/nknapp/deep-aplus
Last synced: 13 days ago
JSON representation
Resolve a whole structure of promises, library agnostic
- Host: GitHub
- URL: https://github.com/nknapp/deep-aplus
- Owner: nknapp
- License: mit
- Created: 2016-01-09T23:43:04.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-09-24T03:05:49.000Z (about 2 months ago)
- Last Synced: 2024-10-06T03:21:48.181Z (about 1 month ago)
- Language: TypeScript
- Size: 357 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# deep-aplus
[![NPM version](https://img.shields.io/npm/v/deep-aplus.svg)](https://npmjs.com/package/deep-aplus)
[![Github Actions Status](https://github.com/nknapp/deep-aplus/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/nknapp/deep-aplus/actions/workflows/ci.yml)> Resolve a whole structure of promises
This small library is a promise-library agnostic function that resolves a whole structure
or objects, arrays, promises and values to a single promise in which the whole structure is
resolved.Unlike other libraries like [q-deep](https://npmjs.com/package/q-deep), [resolve-deep](https://npmjs.com/package/resolve-deep) and
[swear](https://npmjs.com/package/swear), this library is designed to work without dependencies to any promise library
(and also without any other dependencies).**Note: There is no cycle check. You have to check for cycles yourself before passing the
structure to the function**# Installation
```
npm install deep-aplus
```## Usage
The following example demonstrates how to use this module:
```js
import { deepAplus } from "deep-aplus";// Create a promise that returns a value (for demonstration purposes)
function P(value) {
return new Promise((resolve) => setTimeout(() => resolve(value), 1));
}console.log(await deepAplus(2));
// 2
console.log(await deepAplus(P(2)));
// 2console.log(await deepAplus({ a: 1, b: P(2) }));
// { a: 1, b: 2 }console.log(await deepAplus({ a: 1, b: [2, P(3)] }));
// { a: 1, b: [ 2, 3 ] }console.log(await deepAplus({ a: 1, b: { c: 2, d: P(3) } }));
// { a: 1, b: { c: 2, d: 3 } }// Nesting promises
console.log(await deepAplus({ a: 1, b: P([2, P(3)]) }));
// { a: 1, b: [ 2, 3 ] }console.log(await deepAplus({ a: 1, b: P([2, P(3)]) }));
// { a: 1, b: [ 2, 3 ] }console.log(await deepAplus({ a: 1, b: P({ c: 2, d: P(3) }) }));
// { a: 1, b: { c: 2, d: 3 } }// does not dive into classes in order to preserve their functionality
class A {
a = 2;
b = P(3);
}console.log(await deepAplus(new A()));
// A { a: 2, b: Promise { } })
```# License
`deep-aplus` is published under the MIT-license.
See [LICENSE.md](LICENSE.md) for details.
# Release-Notes
For release notes, see [CHANGELOG.md](CHANGELOG.md)
# Contributing guidelines
See [CONTRIBUTING.md](CONTRIBUTING.md).