# deep-aplus

> Resolve a whole structure of promises

Latest version **2.0.1** (published 2024-07-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install deep-aplus
pnpm add deep-aplus
yarn add deep-aplus
bun add deep-aplus
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2024-07-16 |
| First published | 2016-01-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18 |
| Dependencies | 0 |
| Unpacked size | 7.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Nils Knappmeier |
| Maintainers | knappi |
| Keywords | promise, a+, deep, resolve, recursive |

## Links

- npm: https://www.npmjs.com/package/deep-aplus
- Repository: https://github.com/nknapp/deep-aplus
- Homepage: https://github.com/nknapp/deep-aplus#readme
- Issues: https://github.com/nknapp/deep-aplus/issues
- Funding: https://www.paypal.com/donate/?hosted_button_id=GB656ZSAEQEXN
- npm.io page: https://npm.io/package/deep-aplus

## Alternatives

- [base64url](https://npm.io/package/base64url.md) — 6.1M weekly downloads
- [get-installed-path](https://npm.io/package/get-installed-path.md) — 502.9K weekly downloads
- [@uppy/url](https://npm.io/package/@uppy/url.md) — 185.8K weekly downloads
- [@d3fc/d3fc-shape](https://npm.io/package/@d3fc/d3fc-shape.md) — 16.2K weekly downloads
- [localizer](https://npm.io/package/localizer.md) — 226 weekly downloads

## Recent versions

- 2.0.1 (latest) — 2024-07-16
- 2.0.0 — 2024-07-16
- 1.0.4 — 2016-12-19
- 1.0.3 — 2016-12-19
- 1.0.2 — 2016-01-12
- 1.0.1 — 2016-01-10
- 1.0.0 — 2016-01-10

## 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)));
// 2

console.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 { <pending> } })
```

# 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).

---
_Source: https://npm.io/package/deep-aplus · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
