UNPKG

daet

Version:

Minimal immutable date class that supports relative time, calendar time, and plus/minus of different units.

128 lines (127 loc) 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relativeSecondWeek = exports.relativeThisWeek = exports.earlierLastWeek = exports.earlierThisWeek = exports.earlierOrLater = exports.earlierOrLaterToday = exports.underMinute = exports.fewSeconds = exports.weekdayNextWeek = exports.weekdayThisWeek = exports.relativeDelta = exports.relativeHoursAndMinutes = exports.yesterdayOrTommorow = exports.hoursAndMinutes = exports.hours = exports.relativeMinutes = exports.minutes = exports.relativeSeconds = exports.seconds = exports.relativeTicks = exports.rightNow = void 0; var index_js_1 = require("./index.js"); function rightNow() { return 'right now'; } exports.rightNow = rightNow; function relativeTicks(_a) { var past = _a.past, ticks = _a.ticks; return past ? "".concat(ticks, " ago") : "in ".concat(ticks); } exports.relativeTicks = relativeTicks; function seconds(_a) { var seconds = _a.seconds; return "".concat(seconds, " ").concat(seconds > 1 ? 'seconds' : 'second'); } exports.seconds = seconds; function relativeSeconds(opts) { var ticks = seconds({ seconds: opts.seconds }); return relativeTicks({ past: opts.past, ticks: ticks }); } exports.relativeSeconds = relativeSeconds; function minutes(_a) { var minutes = _a.minutes; return "".concat(minutes, " ").concat(minutes > 1 ? 'minutes' : 'minute'); } exports.minutes = minutes; function relativeMinutes(opts) { var ticks = minutes({ minutes: opts.minutes }); return relativeTicks({ past: opts.past, ticks: ticks }); } exports.relativeMinutes = relativeMinutes; function hours(_a) { var hours = _a.hours; return "".concat(hours, " ").concat(hours > 1 ? 'hours' : 'hour'); } exports.hours = hours; function hoursAndMinutes(opts) { return hours(opts) + (opts.minutes ? ' ' + minutes(opts) : ''); } exports.hoursAndMinutes = hoursAndMinutes; function yesterdayOrTommorow(_a) { var past = _a.past; return past ? 'yesterday' : 'tomorrow'; } exports.yesterdayOrTommorow = yesterdayOrTommorow; function relativeHoursAndMinutes(opts) { var ticks = hoursAndMinutes({ hours: opts.hours, minutes: opts.minutes }); return relativeTicks({ past: opts.past, ticks: ticks }); } exports.relativeHoursAndMinutes = relativeHoursAndMinutes; function relativeDelta(opts) { if (opts.delta < index_js_1.Minute) { var seconds_1 = Math.floor(opts.delta / index_js_1.Second); if (seconds_1) return relativeSeconds({ past: opts.past, seconds: seconds_1 }); } var hours = Math.floor(opts.delta / index_js_1.Hour); var minutes = Math.floor((opts.delta - hours * index_js_1.Hour) / index_js_1.Minute); if (hours) return relativeHoursAndMinutes({ past: opts.past, hours: hours, minutes: minutes }); if (minutes) return relativeMinutes({ past: opts.past, minutes: minutes }); return rightNow(); } exports.relativeDelta = relativeDelta; function weekdayThisWeek(_a) { var weekday = _a.weekday; return "this ".concat(weekday); } exports.weekdayThisWeek = weekdayThisWeek; function weekdayNextWeek(_a) { var weekday = _a.weekday; return "next ".concat(weekday); } exports.weekdayNextWeek = weekdayNextWeek; function fewSeconds(_a) { var past = _a.past; return past ? 'a few seconds ago' : 'in a few seconds'; } exports.fewSeconds = fewSeconds; function underMinute(_a) { var past = _a.past; return past ? 'under a minute ago' : 'in under a minute'; } exports.underMinute = underMinute; function earlierOrLaterToday(_a) { var past = _a.past; return past ? 'earlier today' : 'later today'; } exports.earlierOrLaterToday = earlierOrLaterToday; function earlierOrLater(_a) { var past = _a.past; return past ? 'sometime earlier' : 'sometime later'; } exports.earlierOrLater = earlierOrLater; function earlierThisWeek() { return 'earlier this week'; } exports.earlierThisWeek = earlierThisWeek; function earlierLastWeek() { return 'earlier last week'; } exports.earlierLastWeek = earlierLastWeek; function relativeThisWeek(_a) { var past = _a.past, when = _a.when; return past ? earlierThisWeek() : weekdayThisWeek({ weekday: when.format('en', { weekday: 'long', }), }); } exports.relativeThisWeek = relativeThisWeek; function relativeSecondWeek(_a) { var past = _a.past, when = _a.when; return past ? earlierLastWeek() : weekdayNextWeek({ weekday: when.format('en', { weekday: 'long', }), }); } exports.relativeSecondWeek = relativeSecondWeek;