UNPKG

@sildeswj/common-libraries

Version:

This is common libraries used for all refeed projects

167 lines 7.51 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getYearMonthByTimezone = exports.getDateByTimezone = exports.parsePickupDateWithCountry = exports.getDateFormat = exports.getTodayByCountry = exports.getTomorrow = exports.getThisMonth = exports.getThisYear = exports.getToday = exports.getDayjsDate = exports.getStartAndEndDateFromYearAndMonth = exports.getYearMonth = exports.getEndDate = exports.getStartDate = exports.userLocale = void 0; const dayjs_1 = __importDefault(require("dayjs")); const utc_1 = __importDefault(require("dayjs/plugin/utc")); const timezone_1 = __importDefault(require("dayjs/plugin/timezone")); const constants_1 = require("./constants"); dayjs_1.default.extend(utc_1.default); dayjs_1.default.extend(timezone_1.default); exports.userLocale = Intl.DateTimeFormat().resolvedOptions().locale; // Helper function to get timezone from country code const getTimezoneFromCountryCode = (countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const countryCodeUpper = countryCode.toUpperCase(); return constants_1.COUNTRY_TIME_ZONES[countryCodeUpper] || constants_1.DEFAULT_TIMEZONE; }; const getStartDate = (date, countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)(date).tz(tz).locale(exports.userLocale).startOf('day').utc().format(); }; exports.getStartDate = getStartDate; const getEndDate = (date, countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)(date).tz(tz).locale(exports.userLocale).endOf('day').utc().format(); }; exports.getEndDate = getEndDate; const getYearMonth = (date, countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return { year: (0, dayjs_1.default)(date).tz(tz).locale(exports.userLocale).year(), month: (0, dayjs_1.default)(date).tz(tz).locale(exports.userLocale).month() + 1, }; }; exports.getYearMonth = getYearMonth; const getStartAndEndDateFromYearAndMonth = (year, month, countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); const startDate = (0, dayjs_1.default)() .tz(tz) .locale(exports.userLocale) .year(year) .month(month - 1) .startOf('month') .utc() .format(); const endDate = (0, dayjs_1.default)() .tz(tz) .locale(exports.userLocale) .year(year) .month(month - 1) .endOf('month') .utc() .format(); return { startDate, endDate }; }; exports.getStartAndEndDateFromYearAndMonth = getStartAndEndDateFromYearAndMonth; const getDayjsDate = (date, countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)(date).tz(tz).locale(exports.userLocale); }; exports.getDayjsDate = getDayjsDate; const getToday = (countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)().tz(tz).locale(exports.userLocale).utc().format(); }; exports.getToday = getToday; const getThisYear = (countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)().tz(tz).locale(exports.userLocale).year(); }; exports.getThisYear = getThisYear; const getThisMonth = (countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)().tz(tz).locale(exports.userLocale).month() + 1; }; exports.getThisMonth = getThisMonth; const getTomorrow = (countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); return (0, dayjs_1.default)().tz(tz).locale(exports.userLocale).add(1, 'day').utc().format(); }; exports.getTomorrow = getTomorrow; const getTodayByCountry = (countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); const now = (0, dayjs_1.default)().tz(tz); return now; }; exports.getTodayByCountry = getTodayByCountry; const getDateFormat = (locale, isTimeFormat = false) => { const timeFormat = 'HH:mm'; const localeMap = { ko: `YYYY.MM.DD`, en: 'MM/DD/YYYY', vn: 'DD/MM/YYYY', jp: 'YYYY/MM/DD', }; const dateFormat = localeMap[locale] || localeMap.en; if (isTimeFormat) { return `${dateFormat} ${timeFormat}`; } return dateFormat; }; exports.getDateFormat = getDateFormat; const parsePickupDateWithCountry = (pickupDate, countryCode = constants_1.COUNTRY_TIME_ZONES.KR) => { const tz = getTimezoneFromCountryCode(countryCode); let parsed; try { if (typeof pickupDate === 'number') { const excelEpoch = (0, dayjs_1.default)('1899-12-30'); parsed = excelEpoch.add(pickupDate, 'day'); } else if (typeof pickupDate === 'string') { const dateStr = pickupDate.trim(); const formats = [ 'YYYY-MM-DD', // 2025-08-20 'MM/DD/YYYY', // 08/20/2025 (US format) 'DD/MM/YYYY', // 20/08/2025 (EU format) 'YYYY/MM/DD', // 2025/08/20 (ISO-like) 'DD-MM-YYYY', // 20-08-2025 'MM-DD-YYYY', // 08-20-2025 'YYYY.MM.DD', // 2025.08.20 'DD.MM.YYYY', // 20.08.2025 'MMMM DD, YYYY', // August 20, 2025 'MMM DD, YYYY', // Aug 20, 2025 'DD MMMM YYYY', // 20 August 2025 'DD MMM YYYY', // 20 Aug 2025 ]; for (const format of formats) { parsed = (0, dayjs_1.default)(dateStr, format, true); if (parsed.isValid()) break; } if (!parsed || !parsed.isValid()) { parsed = (0, dayjs_1.default)(dateStr); } } else if (pickupDate instanceof Date) { parsed = (0, dayjs_1.default)(pickupDate); } else { parsed = (0, dayjs_1.default)(pickupDate); } if (!parsed.isValid()) { throw new Error(`Unable to parse date: ${pickupDate}`); } parsed = parsed.tz(tz).hour(12).minute(0).second(0).millisecond(0); return parsed.utc().toDate(); } catch (error) { throw new Error(`Invalid pickupDate format: ${pickupDate}. Expected formats: YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY, etc.`); } }; exports.parsePickupDateWithCountry = parsePickupDateWithCountry; // All functions below are used with timezone const getDateByTimezone = (date, timezone = constants_1.DEFAULT_TIMEZONE) => { return (0, dayjs_1.default)(date).tz(timezone).startOf('day').toDate(); }; exports.getDateByTimezone = getDateByTimezone; const getYearMonthByTimezone = (date, timezone = constants_1.DEFAULT_TIMEZONE) => { const localDate = (0, dayjs_1.default)(date).tz(timezone); return { year: localDate.year(), month: localDate.month() + 1, // dayjs months are 0-indexed }; }; exports.getYearMonthByTimezone = getYearMonthByTimezone; //# sourceMappingURL=dateFormat.js.map