@voiceflow/common
Version:
Junk drawer of utility functions
76 lines (75 loc) • 2.63 kB
JavaScript
;
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;