Detalhes do pacote

deep-aplus

nknapp64.7kMIT2.0.1

Resolve a whole structure of promises

promise, a+, deep, resolve

readme (leia-me)

deep-aplus

NPM version Github Actions Status

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, resolve-deep and 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:

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 for details.

Release-Notes

For release notes, see CHANGELOG.md

Contributing guidelines

See CONTRIBUTING.md.

changelog (log de mudanças)

Change Log

This project adheres to Semantic Versioning.

Version 2.0.1 (Tue, 16 Jul 2024 23:37:18 GMT)

  • fa2c87e docs: fix docs - Nils Knappmeier

Version 2.0.0 (Tue, 16 Jul 2024 23:28:49 GMT)

  • fe76de5 feat!: export esm modules and types, drop Node < 18, drop custom promise constructor - Nils Knappmeier

Version 1.0.4 (Mon, 19 Dec 2016 14:29:28 GMT)

  • 74bd71b Use thoughtful-release for changelogs - Nils Knappmeier

Version 1.0.3 (Mon, 19 Dec 2016 14:29:28 GMT)

  • 30dd3cc Do not dive into objects of classes (like streams) in order to preserve their functionality. - Nils Knappmeier

Version 1.0.2 (Tue, 12 Jan 2016 21:03:08 GMT)

  • d453d75 Fix for empy arrays and objects. - Nils Knappmeier

Version 1.0.1 (Sun, 10 Jan 2016 22:47:09 GMT)

  • 93c7325 Add "files" and "keywords" to package.json - Nils Knappmeier
  • 62cdd82 Add testcase for rejected promise - Nils Knappmeier
  • 396a4dd [Thought] Added scripts to run thought on version-bumps - Nils Knappmeier

v1.0.0 - 2016-01-10

Initial version