@sap/ams-dev
Version:
NodesJS AMS development environment
43 lines (39 loc) • 918 B
JavaScript
const fs = require('node:fs');
function debouncePromise(fn, ms = 0) {
let timeoutId;
const pending = [];
return (...args) =>
new Promise((res, rej) => {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => {
const currentPending = [...pending];
pending.length = 0;
Promise.resolve(fn.call(null, ...args)).then(
data => {
currentPending.forEach(({ resolve }) => resolve(data));
},
error => {
currentPending.forEach(({ reject }) => reject(error));
}
);
}, ms);
pending.push({ resolve: res, reject: rej });
});
}
/**
* Creates the given folders if they do not exist.
* @param {Array<string>} folders array of folder paths
*/
function prepareFolders(folders) {
return Promise.all(
folders.map(f => {
if (!fs.existsSync(f)) {
return fs.mkdirSync(f, { recursive: true });
}
})
);
}
module.exports = {
debouncePromise,
prepareFolders
}