aveazul
Version:
Bluebird drop-in replacement built on native Promise
47 lines • 1.69 kB
JavaScript
/* eslint-disable @typescript-eslint/no-explicit-any */
import { toArray, isPromise } from "./util.js";
import { AggregateError } from "@jchip/error";
export function addStaticAny(AveAzul, force = false) {
if (force || !AveAzul.any) {
AveAzul.any = function (args) {
let argsArray;
try {
argsArray = toArray(args);
}
catch (error) {
return AveAzul.reject(error);
}
if (argsArray.length === 0) {
return AveAzul.reject(new RangeError("Input array must contain at least 1 items but contains only 0 items"));
}
return new AveAzul((resolve, reject) => {
const len = argsArray.length;
let settled = false;
const errors = [];
const doFinish = (value) => {
if (settled)
return;
settled = true;
resolve(value);
};
const addError = (err) => {
errors.push(err);
if (!settled && errors.length >= len) {
settled = true;
reject(new AggregateError(errors));
}
};
for (let i = 0; i < len; i++) {
const arg = argsArray[i];
if (isPromise(arg)) {
arg.then(doFinish, addError);
}
else {
doFinish(arg);
}
}
});
};
}
}
//# sourceMappingURL=any.js.map