const fs = require('fs') const path = require('path') const sanitizeHtml = require('sanitize-html') module.exports = { filterEmptyFields(object) { Object.keys(object).forEach((key) => { if (this.empty(object[key])) { delete object[key] } }) return object }, empty(value) { return value === '' }, getMappingKey(mappingFunction, value) { return Object.keys(mappingFunction()).find( (key) => mappingFunction()[key].toLowerCase() === value.toLowerCase() ) }, checkFor(requiredFields) { for (const [key, value] of Object.entries(requiredFields)) { if (!value) { throw new Error(`Must provide ${key}`) } } return true }, convertToCents(amount) { return parseFloat(amount) * 100 }, convertFromCents(amount) { return parseFloat(amount) / 100 }, inject_substitute(text, normalKey, value) { text = text.replace(new RegExp('{{{' + normalKey + '}}}', 'g'), value) return text }, createDirectoriesRecursive(filePath) { let fileDirectoryPath = path.dirname(filePath) if (!fs.existsSync(fileDirectoryPath)) { fs.mkdirSync(fileDirectoryPath, { recursive: true }) } }, sanitizeInputs(body) { if (Array.isArray(body)) { body.forEach((item) => { item = sanitizeHtml(item) }) return body } if (this.isObject(body)) { Object.keys(body).forEach((key) => { body[key] = sanitizeHtml(body[key]) }) return body } return sanitizeHtml(body) }, isObject(obj) { return obj === Object(obj) }, ucFirst(string) { return string.charAt(0).toUpperCase() + string.slice(1) }, }