UNPKG

chronos-ts

Version:

A comprehensive TypeScript library for date and time manipulation, inspired by Carbon PHP. Features immutable API, intervals, periods, timezones, and i18n support.

848 lines (847 loc) 18.5 kB
"use strict"; /** * Locale configuration for Chronos * @module locales */ Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultLocale = exports.locales = exports.pt = exports.zh = exports.ja = exports.de = exports.ru = exports.ar = exports.it = exports.es = exports.fr = exports.en = void 0; exports.getLocale = getLocale; exports.registerLocale = registerLocale; exports.getAvailableLocales = getAvailableLocales; /** * English (US) locale configuration */ exports.en = { code: 'en', months: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ], monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', ], weekdays: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', ], weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], ordinal: (n) => { const s = ['th', 'st', 'nd', 'rd']; const v = n % 100; return n + (s[(v - 20) % 10] || s[v] || s[0]); }, formats: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'MM/DD/YYYY', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY h:mm A', LLLL: 'dddd, MMMM D, YYYY h:mm A', l: 'M/D/YYYY', ll: 'MMM D, YYYY', lll: 'MMM D, YYYY h:mm A', llll: 'ddd, MMM D, YYYY h:mm A', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', w: 'a week', ww: '%d weeks', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, meridiem: (hour, _minute, isLowercase) => { const m = hour < 12 ? 'AM' : 'PM'; return isLowercase ? m.toLowerCase() : m; }, week: { dow: 0, // Sunday is the first day of the week doy: 6, // The week that contains Jan 1st is the first week of the year }, }; /** * French locale configuration */ exports.fr = { code: 'fr', months: [ 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre', ], monthsShort: [ 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.', ], weekdays: [ 'dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', ], weekdaysShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], weekdaysMin: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], ordinal: (n) => n + (n === 1 ? 'er' : 'e'), formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', l: 'D/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd D MMM YYYY HH:mm', }, relativeTime: { future: 'dans %s', past: 'il y a %s', s: 'quelques secondes', ss: '%d secondes', m: 'une minute', mm: '%d minutes', h: 'une heure', hh: '%d heures', d: 'un jour', dd: '%d jours', w: 'une semaine', ww: '%d semaines', M: 'un mois', MM: '%d mois', y: 'un an', yy: '%d ans', }, week: { dow: 1, // Monday is the first day of the week doy: 4, // The week that contains Jan 4th is the first week of the year }, }; /** * Spanish locale configuration */ exports.es = { code: 'es', months: [ 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre', ], monthsShort: [ 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.', ], weekdays: [ 'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', ], weekdaysShort: ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], weekdaysMin: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'], ordinal: (n) => n + 'º', formats: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY H:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', l: 'D/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY H:mm', llll: 'ddd, D MMM YYYY H:mm', }, relativeTime: { future: 'en %s', past: 'hace %s', s: 'unos segundos', ss: '%d segundos', m: 'un minuto', mm: '%d minutos', h: 'una hora', hh: '%d horas', d: 'un día', dd: '%d días', w: 'una semana', ww: '%d semanas', M: 'un mes', MM: '%d meses', y: 'un año', yy: '%d años', }, week: { dow: 1, doy: 4, }, }; /** * Italian locale configuration */ exports.it = { code: 'it', months: [ 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre', ], monthsShort: [ 'gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic', ], weekdays: [ 'domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato', ], weekdaysShort: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], weekdaysMin: ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'], ordinal: (n) => n + 'º', formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', l: 'D/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd D MMM YYYY HH:mm', }, relativeTime: { future: 'in %s', past: '%s fa', s: 'alcuni secondi', ss: '%d secondi', m: 'un minuto', mm: '%d minuti', h: 'unora', hh: '%d ore', d: 'un giorno', dd: '%d giorni', w: 'una settimana', ww: '%d settimane', M: 'un mese', MM: '%d mesi', y: 'un anno', yy: '%d anni', }, week: { dow: 1, doy: 4 }, }; /** * Arabic locale configuration (Modern Standard Arabic) */ exports.ar = { code: 'ar', months: [ 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر', ], monthsShort: [ 'ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس', ], weekdays: [ 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت', ], weekdaysShort: ['أح', 'اث', 'ثل', 'أر', 'خم', 'جم', 'سب'], weekdaysMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], ordinal: (n) => String(n), formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', l: 'D/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd D MMM YYYY HH:mm', }, relativeTime: { future: 'بعد %s', past: 'منذ %s', s: 'ثوانٍ', ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', hh: '%d ساعات', d: 'يوم', dd: '%d أيام', w: 'أسبوع', ww: '%d أسابيع', M: 'شهر', MM: '%d أشهر', y: 'سنة', yy: '%d سنوات', }, week: { dow: 6, doy: 12 }, }; /** * Russian locale configuration */ exports.ru = { code: 'ru', months: [ 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря', ], monthsShort: [ 'янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек', ], weekdays: [ 'воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', ], weekdaysShort: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], weekdaysMin: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], ordinal: (n) => String(n), formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', l: 'D.M.YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd, D MMM YYYY HH:mm', }, relativeTime: { future: 'через %s', past: '%s назад', s: 'несколько секунд', ss: '%d секунд', m: 'минута', mm: '%d минут', h: 'час', hh: '%d часов', d: 'день', dd: '%d дней', w: 'неделя', ww: '%d недель', M: 'месяц', MM: '%d месяцев', y: 'год', yy: '%d лет', }, week: { dow: 1, doy: 4 }, }; /** * German locale configuration */ exports.de = { code: 'de', months: [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember', ], monthsShort: [ 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.', ], weekdays: [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', ], weekdaysShort: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], weekdaysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], ordinal: (n) => n + '.', formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY HH:mm', LLLL: 'dddd, D. MMMM YYYY HH:mm', l: 'D.M.YYYY', ll: 'D. MMM YYYY', lll: 'D. MMM YYYY HH:mm', llll: 'ddd, D. MMM YYYY HH:mm', }, relativeTime: { future: 'in %s', past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', m: 'einer Minute', mm: '%d Minuten', h: 'einer Stunde', hh: '%d Stunden', d: 'einem Tag', dd: '%d Tagen', w: 'einer Woche', ww: '%d Wochen', M: 'einem Monat', MM: '%d Monaten', y: 'einem Jahr', yy: '%d Jahren', }, week: { dow: 1, doy: 4, }, }; /** * Japanese locale configuration */ exports.ja = { code: 'ja', months: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', ], monthsShort: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', ], weekdays: [ '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', ], weekdaysShort: ['日', '月', '火', '水', '木', '金', '土'], weekdaysMin: ['日', '月', '火', '水', '木', '金', '土'], ordinal: (n) => n + '日', formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日 HH:mm', LLLL: 'YYYY年M月D日 dddd HH:mm', l: 'YYYY/M/D', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日(ddd) HH:mm', }, relativeTime: { future: '%s後', past: '%s前', s: '数秒', ss: '%d秒', m: '1分', mm: '%d分', h: '1時間', hh: '%d時間', d: '1日', dd: '%d日', w: '1週間', ww: '%d週間', M: '1ヶ月', MM: '%dヶ月', y: '1年', yy: '%d年', }, week: { dow: 0, doy: 6, }, }; /** * Chinese (Simplified) locale configuration */ exports.zh = { code: 'zh', months: [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', ], monthsShort: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', ], weekdays: [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', ], weekdaysShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], weekdaysMin: ['日', '一', '二', '三', '四', '五', '六'], ordinal: (n) => n + '日', formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日 HH:mm', LLLL: 'YYYY年M月D日dddd HH:mm', l: 'YYYY/M/D', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日dddd HH:mm', }, relativeTime: { future: '%s后', past: '%s前', s: '几秒', ss: '%d 秒', m: '1 分钟', mm: '%d 分钟', h: '1 小时', hh: '%d 小时', d: '1 天', dd: '%d 天', w: '1 周', ww: '%d 周', M: '1 个月', MM: '%d 个月', y: '1 年', yy: '%d 年', }, week: { dow: 1, doy: 4, }, }; /** * Portuguese (Brazil) locale configuration */ exports.pt = { code: 'pt', months: [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro', ], monthsShort: [ 'jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez', ], weekdays: [ 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado', ], weekdaysShort: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'], weekdaysMin: ['do', '2ª', '3ª', '4ª', '5ª', '6ª', 'sá'], ordinal: (n) => n + 'º', formats: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', l: 'D/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd, D MMM YYYY HH:mm', }, relativeTime: { future: 'em %s', past: 'há %s', s: 'poucos segundos', ss: '%d segundos', m: 'um minuto', mm: '%d minutos', h: 'uma hora', hh: '%d horas', d: 'um dia', dd: '%d dias', w: 'uma semana', ww: '%d semanas', M: 'um mês', MM: '%d meses', y: 'um ano', yy: '%d anos', }, week: { dow: 1, doy: 4, }, }; /** * All available locales */ exports.locales = { en: exports.en, fr: exports.fr, es: exports.es, de: exports.de, ja: exports.ja, zh: exports.zh, pt: exports.pt, it: exports.it, ar: exports.ar, ru: exports.ru, }; /** * Default locale */ exports.defaultLocale = exports.en; /** * Get a locale by code */ function getLocale(code) { var _a; return (_a = exports.locales[code]) !== null && _a !== void 0 ? _a : exports.defaultLocale; } /** * Register a new locale */ function registerLocale(config) { exports.locales[config.code] = config; } /** * Get available locale codes */ function getAvailableLocales() { return Object.keys(exports.locales); }