UNPKG

@sap/ams-dev

Version:

NodesJS AMS development environment

43 lines (39 loc) 918 B
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 }