class Utils {
  static async mapSeries(iterable, action) {
    const resolved = [];

    for (const x of iterable) {
      resolved.push(await action(x));
    }
    return Promise.resolve(resolved);
  }

  static wait(duration) {
    return new Promise((resolve) => {
      setTimeout(resolve, duration);
    });
  }

  static parseTemplate(template, data) {
    return Object.keys(data).reduce((str, key) => {
      return str.replace(new RegExp(`{${key}}`, 'gi'), data[key]);
    }, template);
  }
}

module.exports = Utils;