import { pesa } from 'pesa'; export function slug(str) { return str .replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) { return index == 0 ? letter.toLowerCase() : letter.toUpperCase(); }) .replace(/\s+/g, ''); } export function getRandomString() { return Math.random().toString(36).substr(3); } export async function sleep(seconds) { return new Promise((resolve) => { setTimeout(resolve, seconds * 1000); }); } export function getQueryString(params) { if (!params) return ''; let parts = []; for (let key in params) { if (key != null && params[key] != null) { parts.push( encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) ); } } return parts.join('&'); } export function asyncHandler(fn) { return (req, res, next) => Promise.resolve(fn(req, res, next)).catch((err) => { console.log(err); // handle error res.status(err.statusCode || 500).send({ error: err.message }); }); } /** * Returns array from 0 to n - 1 * @param {Number} n */ export function range(n) { return Array(n) .fill() .map((_, i) => i); } export function unique(list, key = (it) => it) { var seen = {}; return list.filter((item) => { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); } export function getDuplicates(array) { let duplicates = []; for (let i in array) { let previous = array[i - 1]; let current = array[i]; if (current === previous) { if (!duplicates.includes(current)) { duplicates.push(current); } } } return duplicates; } export function isPesa(value) { return value instanceof pesa().constructor; }