@formatjs/intl-datetimeformat 7.2.3 → 7.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/locale-data/ar-IL.js +2 -1
- package/locale-data/bm.js +2 -1
- package/locale-data/br.js +2 -1
- package/locale-data/ca-AD.js +2 -1
- package/locale-data/ca-FR.js +2 -1
- package/locale-data/ca-IT.js +2 -1
- package/locale-data/ce.js +2 -1
- package/locale-data/ckb-IR.js +2 -1
- package/locale-data/cs.js +2 -1
- package/locale-data/da.js +2 -1
- package/locale-data/de-AT.js +2 -1
- package/locale-data/de-BE.js +2 -1
- package/locale-data/de-IT.js +2 -1
- package/locale-data/de.js +2 -1
- package/locale-data/dje.js +2 -1
- package/locale-data/dsb.js +2 -1
- package/locale-data/ee-TG.js +2 -1
- package/locale-data/en-AT.js +2 -1
- package/locale-data/en-BE.js +2 -1
- package/locale-data/en-DE.js +2 -1
- package/locale-data/en-DK.js +2 -1
- package/locale-data/en-FI.js +2 -1
- package/locale-data/en-NL.js +2 -1
- package/locale-data/en-SE.js +2 -1
- package/locale-data/en-SI.js +2 -1
- package/locale-data/et.js +2 -1
- package/locale-data/fa.js +2 -1
- package/locale-data/ff-Adlm-BF.js +2 -1
- package/locale-data/ff-Adlm-GW.js +2 -1
- package/locale-data/ff-Adlm-NE.js +2 -1
- package/locale-data/ff-Adlm.js +2 -1
- package/locale-data/ff-Latn-BF.js +2 -1
- package/locale-data/ff-Latn-GN.js +2 -1
- package/locale-data/ff-Latn-GW.js +2 -1
- package/locale-data/ff-Latn-NE.js +2 -1
- package/locale-data/fi.js +2 -1
- package/locale-data/fo-DK.js +2 -1
- package/locale-data/fr-BE.js +2 -1
- package/locale-data/fr-BF.js +2 -1
- package/locale-data/fr-BJ.js +2 -1
- package/locale-data/fr-BL.js +2 -1
- package/locale-data/fr-CD.js +2 -1
- package/locale-data/fr-CG.js +2 -1
- package/locale-data/fr-CI.js +2 -1
- package/locale-data/fr-GA.js +2 -1
- package/locale-data/fr-GF.js +2 -1
- package/locale-data/fr-GN.js +2 -1
- package/locale-data/fr-GP.js +2 -1
- package/locale-data/fr-MC.js +2 -1
- package/locale-data/fr-MF.js +2 -1
- package/locale-data/fr-ML.js +2 -1
- package/locale-data/fr-MQ.js +2 -1
- package/locale-data/fr-NC.js +2 -1
- package/locale-data/fr-NE.js +2 -1
- package/locale-data/fr-PM.js +2 -1
- package/locale-data/fr-RE.js +2 -1
- package/locale-data/fr-TG.js +2 -1
- package/locale-data/fr-WF.js +2 -1
- package/locale-data/fr-YT.js +2 -1
- package/locale-data/fr.js +2 -1
- package/locale-data/fur.js +2 -1
- package/locale-data/fy.js +2 -1
- package/locale-data/gsw-FR.js +2 -1
- package/locale-data/ha-NE.js +2 -1
- package/locale-data/he.js +2 -1
- package/locale-data/hr.js +2 -1
- package/locale-data/hsb.js +2 -1
- package/locale-data/hy.js +2 -1
- package/locale-data/id.js +2 -1
- package/locale-data/is.js +2 -1
- package/locale-data/it.js +2 -1
- package/locale-data/jv.js +2 -1
- package/locale-data/kea.js +2 -1
- package/locale-data/kgp.js +2 -1
- package/locale-data/khq.js +2 -1
- package/locale-data/kk.js +2 -1
- package/locale-data/ksh.js +2 -1
- package/locale-data/ku.js +2 -1
- package/locale-data/ln-AO.js +2 -1
- package/locale-data/ln-CG.js +2 -1
- package/locale-data/ln.js +2 -1
- package/locale-data/lrc.js +2 -1
- package/locale-data/lu.js +2 -1
- package/locale-data/mgh.js +2 -1
- package/locale-data/ms-ID.js +2 -1
- package/locale-data/mzn.js +2 -1
- package/locale-data/nb-SJ.js +2 -1
- package/locale-data/nds-NL.js +2 -1
- package/locale-data/nds.js +2 -1
- package/locale-data/nl-AW.js +2 -1
- package/locale-data/nl-BE.js +2 -1
- package/locale-data/nl-BQ.js +2 -1
- package/locale-data/nl-CW.js +2 -1
- package/locale-data/nl-SR.js +2 -1
- package/locale-data/nl.js +2 -1
- package/locale-data/os-RU.js +2 -1
- package/locale-data/pt-AO.js +2 -1
- package/locale-data/pt-CV.js +2 -1
- package/locale-data/pt-GW.js +2 -1
- package/locale-data/pt-MZ.js +2 -1
- package/locale-data/pt-PT.js +2 -1
- package/locale-data/pt-ST.js +2 -1
- package/locale-data/pt.js +2 -1
- package/locale-data/ro-MD.js +2 -1
- package/locale-data/ro.js +2 -1
- package/locale-data/ru-KZ.js +2 -1
- package/locale-data/ru-MD.js +2 -1
- package/locale-data/ru.js +2 -1
- package/locale-data/sah.js +2 -1
- package/locale-data/sc.js +2 -1
- package/locale-data/se-FI.js +2 -1
- package/locale-data/se-SE.js +2 -1
- package/locale-data/seh.js +2 -1
- package/locale-data/ses.js +2 -1
- package/locale-data/sk.js +2 -1
- package/locale-data/sl.js +2 -1
- package/locale-data/smn.js +2 -1
- package/locale-data/su-Latn.js +2 -1
- package/locale-data/su.js +2 -1
- package/locale-data/sv-AX.js +2 -1
- package/locale-data/sv-FI.js +2 -1
- package/locale-data/sv.js +2 -1
- package/locale-data/sw-CD.js +2 -1
- package/locale-data/tr.js +2 -1
- package/locale-data/tt.js +2 -1
- package/locale-data/twq.js +2 -1
- package/locale-data/yo-BJ.js +2 -1
- package/locale-data/yrl.js +2 -1
- package/package.json +3 -3
- package/polyfill.iife.js +13 -1
- package/src/core.js +20 -1
- package/test262-main.js +5 -1
package/locale-data/smn.js
CHANGED
package/locale-data/su-Latn.js
CHANGED
package/locale-data/su.js
CHANGED
package/locale-data/sv-AX.js
CHANGED
package/locale-data/sv-FI.js
CHANGED
package/locale-data/sv.js
CHANGED
package/locale-data/sw-CD.js
CHANGED
package/locale-data/tr.js
CHANGED
package/locale-data/tt.js
CHANGED
package/locale-data/twq.js
CHANGED
package/locale-data/yo-BJ.js
CHANGED
package/locale-data/yrl.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formatjs/intl-datetimeformat",
|
|
3
3
|
"description": "Intl.DateTimeFormat polyfill",
|
|
4
|
-
"version": "7.2.
|
|
4
|
+
"version": "7.2.4",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Long Ho <holevietlong@gmail.com>",
|
|
7
7
|
"type": "module",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"decimal.js": "^10.6.0",
|
|
20
20
|
"tslib": "^2.8.1",
|
|
21
|
-
"@formatjs/
|
|
22
|
-
"@formatjs/
|
|
21
|
+
"@formatjs/ecma402-abstract": "3.1.1",
|
|
22
|
+
"@formatjs/intl-localematcher": "0.8.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@formatjs/intl-getcanonicallocales": "3.2.1",
|
package/polyfill.iife.js
CHANGED
|
@@ -8493,6 +8493,18 @@
|
|
|
8493
8493
|
DateTimeFormat.relevantExtensionKeys = ["nu", "ca", "hc"];
|
|
8494
8494
|
DateTimeFormat.__defaultTimeZone = DEFAULT_TIMEZONE;
|
|
8495
8495
|
DateTimeFormat.getDefaultTimeZone = () => DateTimeFormat.__defaultTimeZone;
|
|
8496
|
+
function findIntervalFormat(skeleton, intervalFormats) {
|
|
8497
|
+
const commaIdx = skeleton.indexOf(", ");
|
|
8498
|
+
if (commaIdx === -1)
|
|
8499
|
+
return void 0;
|
|
8500
|
+
const datePart = skeleton.slice(0, commaIdx);
|
|
8501
|
+
const timePart = skeleton.slice(commaIdx + 2);
|
|
8502
|
+
const canonical = timePart.replace(/[^a-zA-Z]/g, "").replace(/[abB]/g, "").replace(/(.)\1+/g, "$1");
|
|
8503
|
+
if (canonical === timePart)
|
|
8504
|
+
return void 0;
|
|
8505
|
+
const canonicalKey = `${datePart}, ${canonical}`;
|
|
8506
|
+
return intervalFormats[canonicalKey];
|
|
8507
|
+
}
|
|
8496
8508
|
DateTimeFormat.__addLocaleData = function __addLocaleData(...data2) {
|
|
8497
8509
|
for (const { data: d, locale } of data2) {
|
|
8498
8510
|
const _a = d, {
|
|
@@ -8535,7 +8547,7 @@
|
|
|
8535
8547
|
(skeleton) => parseDateTimeSkeleton(
|
|
8536
8548
|
skeleton,
|
|
8537
8549
|
formats[calendar][skeleton],
|
|
8538
|
-
intervalFormats[skeleton],
|
|
8550
|
+
intervalFormats[skeleton] || findIntervalFormat(skeleton, intervalFormats),
|
|
8539
8551
|
intervalFormats.intervalFormatFallback
|
|
8540
8552
|
)
|
|
8541
8553
|
);
|
package/src/core.js
CHANGED
|
@@ -198,6 +198,25 @@ DateTimeFormat.relevantExtensionKeys = [
|
|
|
198
198
|
];
|
|
199
199
|
DateTimeFormat.__defaultTimeZone = DEFAULT_TIMEZONE;
|
|
200
200
|
DateTimeFormat.getDefaultTimeZone = () => DateTimeFormat.__defaultTimeZone;
|
|
201
|
+
/**
|
|
202
|
+
* GH #4535: When a format skeleton uses raw pattern form (e.g., "MMMEd, h:mm a")
|
|
203
|
+
* instead of canonical form (e.g., "MMMEd, hm"), interval formats won't match
|
|
204
|
+
* by exact key. This function finds the matching canonical interval format by
|
|
205
|
+
* normalizing the time portion of the skeleton.
|
|
206
|
+
*/
|
|
207
|
+
function findIntervalFormat(skeleton, intervalFormats) {
|
|
208
|
+
const commaIdx = skeleton.indexOf(", ");
|
|
209
|
+
if (commaIdx === -1) return undefined;
|
|
210
|
+
const datePart = skeleton.slice(0, commaIdx);
|
|
211
|
+
const timePart = skeleton.slice(commaIdx + 2);
|
|
212
|
+
// Canonicalize the time part: strip non-skeleton chars (colons, spaces),
|
|
213
|
+
// remove AM/PM markers (a/b/B are implied by h/K hour symbols),
|
|
214
|
+
// and collapse repeated field chars (hh→h, mm→m, ss→s)
|
|
215
|
+
const canonical = timePart.replace(/[^a-zA-Z]/g, "").replace(/[abB]/g, "").replace(/(.)\1+/g, "$1");
|
|
216
|
+
if (canonical === timePart) return undefined;
|
|
217
|
+
const canonicalKey = `${datePart}, ${canonical}`;
|
|
218
|
+
return intervalFormats[canonicalKey];
|
|
219
|
+
}
|
|
201
220
|
DateTimeFormat.__addLocaleData = function __addLocaleData(...data) {
|
|
202
221
|
for (const { data: d, locale } of data) {
|
|
203
222
|
const { dateFormat, timeFormat, dateTimeFormat, formats, intervalFormats, ...rawData } = d;
|
|
@@ -225,7 +244,7 @@ DateTimeFormat.__addLocaleData = function __addLocaleData(...data) {
|
|
|
225
244
|
formats: {}
|
|
226
245
|
};
|
|
227
246
|
for (const calendar in formats) {
|
|
228
|
-
processedData.formats[calendar] = Object.keys(formats[calendar]).map((skeleton) => parseDateTimeSkeleton(skeleton, formats[calendar][skeleton], intervalFormats[skeleton], intervalFormats.intervalFormatFallback));
|
|
247
|
+
processedData.formats[calendar] = Object.keys(formats[calendar]).map((skeleton) => parseDateTimeSkeleton(skeleton, formats[calendar][skeleton], intervalFormats[skeleton] || findIntervalFormat(skeleton, intervalFormats), intervalFormats.intervalFormatFallback));
|
|
229
248
|
}
|
|
230
249
|
const minimizedLocale = new Intl.Locale(locale).minimize().toString();
|
|
231
250
|
DateTimeFormat.localeData[locale] = DateTimeFormat.localeData[minimizedLocale] = processedData;
|
package/test262-main.js
CHANGED