UNPKG

@voiceflow/common

Version:

Junk drawer of utility functions

76 lines (75 loc) 2.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAbbrevatedFormat = exports.getTimeDuration = exports.getCurrentTimestamp = void 0; const dayjs_1 = __importDefault(require("dayjs")); const advancedFormat_js_1 = __importDefault(require("dayjs/plugin/advancedFormat.js")); const customParseFormat_js_1 = __importDefault(require("dayjs/plugin/customParseFormat.js")); const duration_js_1 = __importDefault(require("dayjs/plugin/duration.js")); const minMax_js_1 = __importDefault(require("dayjs/plugin/minMax.js")); const relativeTime_js_1 = __importDefault(require("dayjs/plugin/relativeTime.js")); const updateLocale_js_1 = __importDefault(require("dayjs/plugin/updateLocale.js")); const utc_js_1 = __importDefault(require("dayjs/plugin/utc.js")); dayjs_1.default.extend(utc_js_1.default); dayjs_1.default.extend(duration_js_1.default); dayjs_1.default.extend(relativeTime_js_1.default); dayjs_1.default.extend(customParseFormat_js_1.default); dayjs_1.default.extend(minMax_js_1.default); dayjs_1.default.extend(advancedFormat_js_1.default); dayjs_1.default.extend(updateLocale_js_1.default); // https://day.js.org/docs/en/customization/relative-time dayjs_1.default.updateLocale('en', { relativeTime: { future: 'in %s', past: '%s ago', s: 'seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, }); const getCurrentTimestamp = () => Math.floor(Date.now() / 1000); exports.getCurrentTimestamp = getCurrentTimestamp; const getTimeDuration = (pastTime) => { const diff = (0, dayjs_1.default)().utc().diff(pastTime); return dayjs_1.default.duration(diff).humanize(); }; exports.getTimeDuration = getTimeDuration; const getAbbrevatedFormat = (time) => time .split(' ') .map((str) => { if (str.includes('month')) { return 'mo'; } if (str.includes('day')) { return 'd'; } if (str.includes('hour')) { return 'hr'; } if (str.includes('minute')) { return 'm'; } if (str.includes('second')) { return 's'; } if (str.includes('a')) { return '1'; } if (str.includes('a') || str.includes('few')) { return null; } return str; }) .filter(Boolean) .join(''); exports.getAbbrevatedFormat = getAbbrevatedFormat;