mirror of
https://github.com/strapi/strapi.git
synced 2025-07-27 10:56:36 +00:00
39 lines
764 B
JavaScript
39 lines
764 B
JavaScript
'use strict';
|
|
|
|
const pMap = require('p-map');
|
|
const { curry } = require('lodash/fp');
|
|
|
|
function pipeAsync(...methods) {
|
|
return async (data) => {
|
|
let res = data;
|
|
|
|
for (const method of methods) {
|
|
res = await method(res);
|
|
}
|
|
|
|
return res;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @type { import('./async').MapAsync }
|
|
*/
|
|
const mapAsync = curry(pMap);
|
|
|
|
/**
|
|
* @type { import('./async').reduceAsync }
|
|
*/
|
|
function reduceAsync(promiseArray) {
|
|
return (iteratee, initialValue) =>
|
|
promiseArray.reduce(async (previousPromise, currentValue, index) => {
|
|
const previousValue = await previousPromise;
|
|
return iteratee(previousValue, await currentValue, index);
|
|
}, Promise.resolve(initialValue));
|
|
}
|
|
|
|
module.exports = {
|
|
mapAsync,
|
|
reduceAsync,
|
|
pipeAsync,
|
|
};
|