villa
Version:
Promise utilities for async/await-ready environment.
63 lines • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
class Chainable extends Promise {
each(handler) {
let chainable = this.then(values => _1.each(values, handler));
return Promise.resolve(chainable);
}
every(handler) {
let chainable = this.then(values => _1.every(values, handler));
return Promise.resolve(chainable);
}
filter(handler) {
return this.then(values => _1.filter(values, handler));
}
find(handler) {
let chainable = this.then(values => _1.find(values, handler));
return Promise.resolve(chainable);
}
findIndex(handler) {
let chainable = this.then(values => _1.findIndex(values, handler));
return Promise.resolve(chainable);
}
map(transformer, concurrency) {
return this.then(values => _1.map(values, transformer, concurrency));
}
parallel(handler, concurrency) {
let chainable = this.then(values => _1.map(values, handler, concurrency));
return Promise.resolve(chainable).then(() => undefined);
}
race(transformer) {
let chainable = this.then(values => Promise.race(values.map(transformer)));
return Promise.resolve(chainable);
}
reduce(transformer, ...args) {
let chainable = this.then(values => _1.reduce(values, transformer, ...args));
return Array.isArray(args[0])
? chainable
: Promise.resolve(chainable);
}
reduceRight(transformer, ...args) {
let chainable = this.then(values => _1.reduceRight(values, transformer, ...args));
return Array.isArray(args[0])
? chainable
: Promise.resolve(chainable);
}
some(handler) {
let chainable = this.then(values => _1.some(values, handler));
return Promise.resolve(chainable);
}
static resolve(resolvable) {
return new Chainable(resolve => resolve(resolvable));
}
}
exports.Chainable = Chainable;
/**
* Wrap given resolvable with a chainable derived of built-in promise.
*/
function chainable(resolvable) {
return Chainable.resolve(resolvable);
}
exports.chainable = chainable;
//# sourceMappingURL=chainable.js.map