@formatjs/intl-datetimeformat 7.1.0 → 7.1.2

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.
Files changed (60) hide show
  1. package/add-all-tz.js +319 -318
  2. package/add-golden-tz.js +1 -1
  3. package/index.d.ts +1 -1
  4. package/index.js +1 -1
  5. package/package.json +5 -5
  6. package/polyfill-force.js +28 -44
  7. package/polyfill.iife.js +2803 -3046
  8. package/polyfill.js +29 -45
  9. package/should-polyfill.js +38 -50
  10. package/src/abstract/BasicFormatMatcher.d.ts +5 -5
  11. package/src/abstract/BasicFormatMatcher.js +87 -103
  12. package/src/abstract/BestFitFormatMatcher.d.ts +12 -12
  13. package/src/abstract/BestFitFormatMatcher.js +102 -108
  14. package/src/abstract/DateTimeStyleFormat.d.ts +2 -2
  15. package/src/abstract/DateTimeStyleFormat.js +47 -62
  16. package/src/abstract/FormatDateTime.d.ts +7 -7
  17. package/src/abstract/FormatDateTime.js +12 -12
  18. package/src/abstract/FormatDateTimePattern.d.ts +11 -11
  19. package/src/abstract/FormatDateTimePattern.js +185 -198
  20. package/src/abstract/FormatDateTimeRange.d.ts +3 -3
  21. package/src/abstract/FormatDateTimeRange.js +9 -8
  22. package/src/abstract/FormatDateTimeRangeToParts.d.ts +4 -4
  23. package/src/abstract/FormatDateTimeRangeToParts.js +14 -12
  24. package/src/abstract/FormatDateTimeToParts.d.ts +9 -9
  25. package/src/abstract/FormatDateTimeToParts.js +17 -18
  26. package/src/abstract/InitializeDateTimeFormat.d.ts +15 -15
  27. package/src/abstract/InitializeDateTimeFormat.js +206 -184
  28. package/src/abstract/PartitionDateTimePattern.d.ts +8 -8
  29. package/src/abstract/PartitionDateTimePattern.js +15 -14
  30. package/src/abstract/PartitionDateTimeRangePattern.d.ts +4 -4
  31. package/src/abstract/PartitionDateTimeRangePattern.js +168 -161
  32. package/src/abstract/ToDateTimeOptions.d.ts +5 -5
  33. package/src/abstract/ToDateTimeOptions.js +68 -60
  34. package/src/abstract/ToLocalTime.d.ts +21 -21
  35. package/src/abstract/ToLocalTime.js +116 -45
  36. package/src/abstract/skeleton.d.ts +8 -8
  37. package/src/abstract/skeleton.js +231 -280
  38. package/src/abstract/utils.d.ts +1 -1
  39. package/src/abstract/utils.js +21 -20
  40. package/src/core.d.ts +17 -17
  41. package/src/core.js +250 -286
  42. package/src/data/all-tz.generated.d.ts +8 -0
  43. package/src/data/all-tz.generated.js +462 -0
  44. package/src/data/links.generated.d.ts +261 -0
  45. package/src/data/links.generated.js +260 -0
  46. package/src/get_internal_slots.d.ts +3 -1
  47. package/src/get_internal_slots.js +8 -7
  48. package/src/packer.d.ts +2 -2
  49. package/src/packer.js +23 -35
  50. package/src/to_locale_string.d.ts +3 -3
  51. package/src/to_locale_string.js +11 -11
  52. package/src/types.d.ts +34 -39
  53. package/src/types.js +1 -1
  54. package/supported-locales.generated.js +573 -1
  55. package/test262-main.d.ts +4 -1
  56. package/test262-main.js +24600 -44193
  57. package/src/data/all-tz.d.ts +0 -6
  58. package/src/data/all-tz.js +0 -461
  59. package/src/data/links.d.ts +0 -259
  60. package/src/data/links.js +0 -260
@@ -1,294 +1,245 @@
1
- import { __assign } from "tslib";
2
- import { RangePatternType, } from '@formatjs/ecma402-abstract';
1
+ import { RangePatternType } from "@formatjs/ecma402-abstract";
3
2
  /**
4
- * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
5
- * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js
6
- * with some tweaks
7
- */
8
- var DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
3
+ * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
4
+ * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js
5
+ * with some tweaks
6
+ */
7
+ const DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
9
8
  // trim patterns after transformations
10
- var expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
9
+ const expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
11
10
  function matchSkeletonPattern(match, result) {
12
- var len = match.length;
13
- switch (match[0]) {
14
- // Era
15
- case 'G':
16
- result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';
17
- return '{era}';
18
- // Year
19
- case 'y':
20
- case 'Y':
21
- case 'u':
22
- case 'U':
23
- case 'r':
24
- result.year = len === 2 ? '2-digit' : 'numeric';
25
- return '{year}';
26
- // Quarter
27
- case 'q':
28
- case 'Q':
29
- throw new RangeError('`w/Q` (quarter) patterns are not supported');
30
- // Month
31
- case 'M':
32
- case 'L':
33
- result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];
34
- return '{month}';
35
- // Week
36
- case 'w':
37
- case 'W':
38
- throw new RangeError('`w/W` (week of year) patterns are not supported');
39
- case 'd':
40
- result.day = ['numeric', '2-digit'][len - 1];
41
- return '{day}';
42
- case 'D':
43
- case 'F':
44
- case 'g':
45
- result.day = 'numeric';
46
- return '{day}';
47
- // Weekday
48
- case 'E':
49
- result.weekday = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';
50
- return '{weekday}';
51
- case 'e':
52
- result.weekday = [
53
- undefined,
54
- undefined,
55
- 'short',
56
- 'long',
57
- 'narrow',
58
- 'short',
59
- ][len - 1];
60
- return '{weekday}';
61
- case 'c':
62
- result.weekday = [
63
- undefined,
64
- undefined,
65
- 'short',
66
- 'long',
67
- 'narrow',
68
- 'short',
69
- ][len - 1];
70
- return '{weekday}';
71
- // Period
72
- case 'a': // AM, PM
73
- case 'b': // am, pm, noon, midnight
74
- case 'B': // flexible day periods
75
- result.hour12 = true;
76
- return '{ampm}';
77
- // Hour
78
- case 'h':
79
- result.hour = ['numeric', '2-digit'][len - 1];
80
- result.hour12 = true;
81
- return '{hour}';
82
- case 'H':
83
- result.hour = ['numeric', '2-digit'][len - 1];
84
- return '{hour}';
85
- case 'K':
86
- result.hour = ['numeric', '2-digit'][len - 1];
87
- result.hour12 = true;
88
- return '{hour}';
89
- case 'k':
90
- result.hour = ['numeric', '2-digit'][len - 1];
91
- return '{hour}';
92
- case 'j':
93
- case 'J':
94
- case 'C':
95
- throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');
96
- // Minute
97
- case 'm':
98
- result.minute = ['numeric', '2-digit'][len - 1];
99
- return '{minute}';
100
- // Second
101
- case 's':
102
- result.second = ['numeric', '2-digit'][len - 1];
103
- return '{second}';
104
- case 'S':
105
- case 'A':
106
- result.second = 'numeric';
107
- return '{second}';
108
- // Zone
109
- case 'z': // 1..3, 4: specific non-location format
110
- case 'Z': // 1..3, 4, 5: The ISO8601 varios formats
111
- case 'O': // 1, 4: milliseconds in day short, long
112
- case 'v': // 1, 4: generic non-location format
113
- case 'V': // 1, 2, 3, 4: time zone ID or city
114
- case 'X': // 1, 2, 3, 4: The ISO8601 varios formats
115
- case 'x': // 1, 2, 3, 4: The ISO8601 varios formats
116
- result.timeZoneName = len < 4 ? 'short' : 'long';
117
- return '{timeZoneName}';
118
- }
119
- return '';
11
+ const len = match.length;
12
+ switch (match[0]) {
13
+ case "G":
14
+ result.era = len === 4 ? "long" : len === 5 ? "narrow" : "short";
15
+ return "{era}";
16
+ case "y":
17
+ case "Y":
18
+ case "u":
19
+ case "U":
20
+ case "r":
21
+ result.year = len === 2 ? "2-digit" : "numeric";
22
+ return "{year}";
23
+ case "q":
24
+ case "Q": throw new RangeError("`w/Q` (quarter) patterns are not supported");
25
+ case "M":
26
+ case "L":
27
+ result.month = [
28
+ "numeric",
29
+ "2-digit",
30
+ "short",
31
+ "long",
32
+ "narrow"
33
+ ][len - 1];
34
+ return "{month}";
35
+ case "w":
36
+ case "W": throw new RangeError("`w/W` (week of year) patterns are not supported");
37
+ case "d":
38
+ result.day = ["numeric", "2-digit"][len - 1];
39
+ return "{day}";
40
+ case "D":
41
+ case "F":
42
+ case "g":
43
+ result.day = "numeric";
44
+ return "{day}";
45
+ case "E":
46
+ result.weekday = len === 4 ? "long" : len === 5 ? "narrow" : "short";
47
+ return "{weekday}";
48
+ case "e":
49
+ result.weekday = [
50
+ undefined,
51
+ undefined,
52
+ "short",
53
+ "long",
54
+ "narrow",
55
+ "short"
56
+ ][len - 1];
57
+ return "{weekday}";
58
+ case "c":
59
+ result.weekday = [
60
+ undefined,
61
+ undefined,
62
+ "short",
63
+ "long",
64
+ "narrow",
65
+ "short"
66
+ ][len - 1];
67
+ return "{weekday}";
68
+ case "a":
69
+ case "b":
70
+ case "B":
71
+ result.hour12 = true;
72
+ return "{ampm}";
73
+ case "h":
74
+ result.hour = ["numeric", "2-digit"][len - 1];
75
+ result.hour12 = true;
76
+ return "{hour}";
77
+ case "H":
78
+ result.hour = ["numeric", "2-digit"][len - 1];
79
+ return "{hour}";
80
+ case "K":
81
+ result.hour = ["numeric", "2-digit"][len - 1];
82
+ result.hour12 = true;
83
+ return "{hour}";
84
+ case "k":
85
+ result.hour = ["numeric", "2-digit"][len - 1];
86
+ return "{hour}";
87
+ case "j":
88
+ case "J":
89
+ case "C": throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");
90
+ case "m":
91
+ result.minute = ["numeric", "2-digit"][len - 1];
92
+ return "{minute}";
93
+ case "s":
94
+ result.second = ["numeric", "2-digit"][len - 1];
95
+ return "{second}";
96
+ case "S":
97
+ case "A":
98
+ result.second = "numeric";
99
+ return "{second}";
100
+ case "z":
101
+ case "Z":
102
+ case "O":
103
+ case "v":
104
+ case "V":
105
+ case "X":
106
+ case "x":
107
+ result.timeZoneName = len < 4 ? "short" : "long";
108
+ return "{timeZoneName}";
109
+ }
110
+ return "";
120
111
  }
121
112
  function skeletonTokenToTable2(c) {
122
- switch (c) {
123
- // Era
124
- case 'G':
125
- return 'era';
126
- // Year
127
- case 'y':
128
- case 'Y':
129
- case 'u':
130
- case 'U':
131
- case 'r':
132
- return 'year';
133
- // Month
134
- case 'M':
135
- case 'L':
136
- return 'month';
137
- // Day
138
- case 'd':
139
- case 'D':
140
- case 'F':
141
- case 'g':
142
- return 'day';
143
- // Period
144
- case 'a': // AM, PM
145
- case 'b': // am, pm, noon, midnight
146
- case 'B': // flexible day periods
147
- return 'ampm';
148
- // Hour
149
- case 'h':
150
- case 'H':
151
- case 'K':
152
- case 'k':
153
- return 'hour';
154
- // Minute
155
- case 'm':
156
- return 'minute';
157
- // Second
158
- case 's':
159
- case 'S':
160
- case 'A':
161
- return 'second';
162
- default:
163
- throw new RangeError('Invalid range pattern token');
164
- }
113
+ switch (c) {
114
+ case "G": return "era";
115
+ case "y":
116
+ case "Y":
117
+ case "u":
118
+ case "U":
119
+ case "r": return "year";
120
+ case "M":
121
+ case "L": return "month";
122
+ case "d":
123
+ case "D":
124
+ case "F":
125
+ case "g": return "day";
126
+ case "a":
127
+ case "b":
128
+ case "B": return "ampm";
129
+ case "h":
130
+ case "H":
131
+ case "K":
132
+ case "k": return "hour";
133
+ case "m": return "minute";
134
+ case "s":
135
+ case "S":
136
+ case "A": return "second";
137
+ default: throw new RangeError("Invalid range pattern token");
138
+ }
165
139
  }
166
140
  export function processDateTimePattern(pattern, result) {
167
- var literals = [];
168
- // Use skeleton to populate result, but use mapped pattern to populate pattern
169
- var pattern12 = pattern
170
- // Double apostrophe
171
- .replace(/'{2}/g, '{apostrophe}')
172
- // Apostrophe-escaped
173
- .replace(/'(.*?)'/g, function (_, literal) {
174
- literals.push(literal);
175
- return "$$".concat(literals.length - 1, "$$");
176
- })
177
- .replace(DATE_TIME_REGEX, function (m) { return matchSkeletonPattern(m, result || {}); });
178
- //Restore literals
179
- if (literals.length) {
180
- pattern12 = pattern12
181
- .replace(/\$\$(\d+)\$\$/g, function (_, i) {
182
- return literals[+i];
183
- })
184
- .replace(/\{apostrophe\}/g, "'");
185
- }
186
- // Handle apostrophe-escaped things
187
- return [
188
- pattern12
189
- .replace(/([\s\uFEFF\xA0])\{ampm\}([\s\uFEFF\xA0])/, '$1')
190
- .replace('{ampm}', '')
191
- .replace(expPatternTrimmer, ''),
192
- pattern12,
193
- ];
141
+ const literals = [];
142
+ // Use skeleton to populate result, but use mapped pattern to populate pattern
143
+ let pattern12 = pattern.replace(/'{2}/g, "{apostrophe}").replace(/'(.*?)'/g, (_, literal) => {
144
+ literals.push(literal);
145
+ return `$$${literals.length - 1}$$`;
146
+ }).replace(DATE_TIME_REGEX, (m) => matchSkeletonPattern(m, result || {}));
147
+ //Restore literals
148
+ if (literals.length) {
149
+ pattern12 = pattern12.replace(/\$\$(\d+)\$\$/g, (_, i) => {
150
+ return literals[+i];
151
+ }).replace(/\{apostrophe\}/g, "'");
152
+ }
153
+ // Handle apostrophe-escaped things
154
+ return [pattern12.replace(/([\s\uFEFF\xA0])\{ampm\}([\s\uFEFF\xA0])/, "$1").replace("{ampm}", "").replace(expPatternTrimmer, ""), pattern12];
194
155
  }
195
156
  /**
196
- * Parse Date time skeleton into Intl.DateTimeFormatOptions
197
- * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
198
- * @public
199
- * @param skeleton skeleton string
200
- */
201
- export function parseDateTimeSkeleton(skeleton, rawPattern, rangePatterns, intervalFormatFallback) {
202
- if (rawPattern === void 0) { rawPattern = skeleton; }
203
- var result = {
204
- pattern: '',
205
- pattern12: '',
206
- skeleton: skeleton,
207
- rawPattern: rawPattern,
208
- rangePatterns: {},
209
- rangePatterns12: {},
210
- };
211
- if (rangePatterns) {
212
- for (var k in rangePatterns) {
213
- var key = skeletonTokenToTable2(k);
214
- var rawPattern_1 = rangePatterns[k];
215
- var intervalResult = {
216
- patternParts: [],
217
- };
218
- var _a = processDateTimePattern(rawPattern_1, intervalResult), pattern_1 = _a[0], pattern12_1 = _a[1];
219
- result.rangePatterns[key] = __assign(__assign({}, intervalResult), { patternParts: splitRangePattern(pattern_1) });
220
- result.rangePatterns12[key] = __assign(__assign({}, intervalResult), { patternParts: splitRangePattern(pattern12_1) });
221
- }
222
- }
223
- if (intervalFormatFallback) {
224
- var patternParts = splitFallbackRangePattern(intervalFormatFallback);
225
- result.rangePatterns.default = {
226
- patternParts: patternParts,
227
- };
228
- result.rangePatterns12.default = {
229
- patternParts: patternParts,
230
- };
231
- }
232
- // Process skeleton
233
- skeleton.replace(DATE_TIME_REGEX, function (m) { return matchSkeletonPattern(m, result); });
234
- var _b = processDateTimePattern(rawPattern), pattern = _b[0], pattern12 = _b[1];
235
- result.pattern = pattern;
236
- result.pattern12 = pattern12;
237
- return result;
157
+ * Parse Date time skeleton into Intl.DateTimeFormatOptions
158
+ * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
159
+ * @public
160
+ * @param skeleton skeleton string
161
+ */
162
+ export function parseDateTimeSkeleton(skeleton, rawPattern = skeleton, rangePatterns, intervalFormatFallback) {
163
+ const result = {
164
+ pattern: "",
165
+ pattern12: "",
166
+ skeleton,
167
+ rawPattern,
168
+ rangePatterns: {},
169
+ rangePatterns12: {}
170
+ };
171
+ if (rangePatterns) {
172
+ for (const k in rangePatterns) {
173
+ const key = skeletonTokenToTable2(k);
174
+ const rawPattern = rangePatterns[k];
175
+ const intervalResult = { patternParts: [] };
176
+ const [pattern, pattern12] = processDateTimePattern(rawPattern, intervalResult);
177
+ result.rangePatterns[key] = {
178
+ ...intervalResult,
179
+ patternParts: splitRangePattern(pattern)
180
+ };
181
+ result.rangePatterns12[key] = {
182
+ ...intervalResult,
183
+ patternParts: splitRangePattern(pattern12)
184
+ };
185
+ }
186
+ }
187
+ if (intervalFormatFallback) {
188
+ const patternParts = splitFallbackRangePattern(intervalFormatFallback);
189
+ result.rangePatterns.default = { patternParts };
190
+ result.rangePatterns12.default = { patternParts };
191
+ }
192
+ // Process skeleton
193
+ skeleton.replace(DATE_TIME_REGEX, (m) => matchSkeletonPattern(m, result));
194
+ const [pattern, pattern12] = processDateTimePattern(rawPattern);
195
+ result.pattern = pattern;
196
+ result.pattern12 = pattern12;
197
+ return result;
238
198
  }
239
199
  export function splitFallbackRangePattern(pattern) {
240
- var parts = pattern.split(/(\{[0|1]\})/g).filter(Boolean);
241
- return parts.map(function (pattern) {
242
- switch (pattern) {
243
- case '{0}':
244
- return {
245
- source: RangePatternType.startRange,
246
- pattern: pattern,
247
- };
248
- case '{1}':
249
- return {
250
- source: RangePatternType.endRange,
251
- pattern: pattern,
252
- };
253
- default:
254
- return {
255
- source: RangePatternType.shared,
256
- pattern: pattern,
257
- };
258
- }
259
- });
200
+ const parts = pattern.split(/(\{[0|1]\})/g).filter(Boolean);
201
+ return parts.map((pattern) => {
202
+ switch (pattern) {
203
+ case "{0}": return {
204
+ source: RangePatternType.startRange,
205
+ pattern
206
+ };
207
+ case "{1}": return {
208
+ source: RangePatternType.endRange,
209
+ pattern
210
+ };
211
+ default: return {
212
+ source: RangePatternType.shared,
213
+ pattern
214
+ };
215
+ }
216
+ });
260
217
  }
261
218
  export function splitRangePattern(pattern) {
262
- var PART_REGEX = /\{(.*?)\}/g;
263
- // Map of part and index within the string
264
- var parts = {};
265
- var match;
266
- var splitIndex = 0;
267
- while ((match = PART_REGEX.exec(pattern))) {
268
- if (!(match[0] in parts)) {
269
- parts[match[0]] = match.index;
270
- }
271
- else {
272
- splitIndex = match.index;
273
- break;
274
- }
275
- }
276
- if (!splitIndex) {
277
- return [
278
- {
279
- source: RangePatternType.startRange,
280
- pattern: pattern,
281
- },
282
- ];
283
- }
284
- return [
285
- {
286
- source: RangePatternType.startRange,
287
- pattern: pattern.slice(0, splitIndex),
288
- },
289
- {
290
- source: RangePatternType.endRange,
291
- pattern: pattern.slice(splitIndex),
292
- },
293
- ];
219
+ const PART_REGEX = /\{(.*?)\}/g;
220
+ // Map of part and index within the string
221
+ const parts = {};
222
+ let match;
223
+ let splitIndex = 0;
224
+ while (match = PART_REGEX.exec(pattern)) {
225
+ if (!(match[0] in parts)) {
226
+ parts[match[0]] = match.index;
227
+ } else {
228
+ splitIndex = match.index;
229
+ break;
230
+ }
231
+ }
232
+ if (!splitIndex) {
233
+ return [{
234
+ source: RangePatternType.startRange,
235
+ pattern
236
+ }];
237
+ }
238
+ return [{
239
+ source: RangePatternType.startRange,
240
+ pattern: pattern.slice(0, splitIndex)
241
+ }, {
242
+ source: RangePatternType.endRange,
243
+ pattern: pattern.slice(splitIndex)
244
+ }];
294
245
  }
@@ -1,4 +1,4 @@
1
- import { IntlDateTimeFormatInternal, TABLE_6 } from '@formatjs/ecma402-abstract';
1
+ import { type IntlDateTimeFormatInternal, type TABLE_6 } from "@formatjs/ecma402-abstract";
2
2
  export declare const DATE_TIME_PROPS: Array<keyof Pick<IntlDateTimeFormatInternal, TABLE_6>>;
3
3
  export declare const removalPenalty = 120;
4
4
  export declare const additionPenalty = 20;
@@ -1,21 +1,22 @@
1
- export var DATE_TIME_PROPS = [
2
- 'weekday',
3
- 'era',
4
- 'year',
5
- 'month',
6
- 'day',
7
- 'dayPeriod',
8
- 'hour',
9
- 'minute',
10
- 'second',
11
- 'fractionalSecondDigits',
12
- 'timeZoneName',
1
+ import "@formatjs/ecma402-abstract";
2
+ export const DATE_TIME_PROPS = [
3
+ "weekday",
4
+ "era",
5
+ "year",
6
+ "month",
7
+ "day",
8
+ "dayPeriod",
9
+ "hour",
10
+ "minute",
11
+ "second",
12
+ "fractionalSecondDigits",
13
+ "timeZoneName"
13
14
  ];
14
- export var removalPenalty = 120;
15
- export var additionPenalty = 20;
16
- export var differentNumericTypePenalty = 15;
17
- export var longLessPenalty = 8;
18
- export var longMorePenalty = 6;
19
- export var shortLessPenalty = 6;
20
- export var shortMorePenalty = 3;
21
- export var offsetPenalty = 1;
15
+ export const removalPenalty = 120;
16
+ export const additionPenalty = 20;
17
+ export const differentNumericTypePenalty = 15;
18
+ export const longLessPenalty = 8;
19
+ export const longMorePenalty = 6;
20
+ export const shortLessPenalty = 6;
21
+ export const shortMorePenalty = 3;
22
+ export const offsetPenalty = 1;
package/src/core.d.ts CHANGED
@@ -1,20 +1,20 @@
1
- import { DateTimeFormatLocaleInternalData, DateTimeFormat as IDateTimeFormat, UnpackedZoneData } from '@formatjs/ecma402-abstract';
2
- import { PackedData, RawDateTimeLocaleData } from './types.js';
1
+ import { type DateTimeFormatLocaleInternalData, type DateTimeFormat as IDateTimeFormat, type UnpackedZoneData } from "@formatjs/ecma402-abstract";
2
+ import { type PackedData, type RawDateTimeLocaleData } from "./types.js";
3
3
  export interface DateTimeFormatConstructor {
4
- new (locales?: string | string[], options?: Intl.DateTimeFormatOptions): IDateTimeFormat;
5
- (locales?: string | string[], options?: Intl.DateTimeFormatOptions): IDateTimeFormat;
6
- __addLocaleData(...data: RawDateTimeLocaleData[]): void;
7
- supportedLocalesOf(locales: string | string[], options?: Pick<Intl.DateTimeFormatOptions, 'localeMatcher'>): string[];
8
- getDefaultLocale(): string;
9
- relevantExtensionKeys: string[];
10
- __defaultLocale: string;
11
- __defaultTimeZone: string;
12
- __setDefaultTimeZone(tz: string): void;
13
- getDefaultTimeZone(): string;
14
- localeData: Record<string, DateTimeFormatLocaleInternalData>;
15
- availableLocales: Set<string>;
16
- polyfilled: boolean;
17
- tzData: Record<string, UnpackedZoneData[]>;
18
- __addTZData(d: PackedData): void;
4
+ new (locales?: string | string[], options?: Intl.DateTimeFormatOptions): IDateTimeFormat;
5
+ (locales?: string | string[], options?: Intl.DateTimeFormatOptions): IDateTimeFormat;
6
+ __addLocaleData(...data: RawDateTimeLocaleData[]): void;
7
+ supportedLocalesOf(locales: string | string[], options?: Pick<Intl.DateTimeFormatOptions, "localeMatcher">): string[];
8
+ getDefaultLocale(): string;
9
+ relevantExtensionKeys: string[];
10
+ __defaultLocale: string;
11
+ __defaultTimeZone: string;
12
+ __setDefaultTimeZone(tz: string): void;
13
+ getDefaultTimeZone(): string;
14
+ localeData: Record<string, DateTimeFormatLocaleInternalData>;
15
+ availableLocales: Set<string>;
16
+ polyfilled: boolean;
17
+ tzData: Record<string, UnpackedZoneData[]>;
18
+ __addTZData(d: PackedData): void;
19
19
  }
20
20
  export declare const DateTimeFormat: DateTimeFormatConstructor;