@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.
- package/add-all-tz.js +319 -318
- package/add-golden-tz.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +5 -5
- package/polyfill-force.js +28 -44
- package/polyfill.iife.js +2803 -3046
- package/polyfill.js +29 -45
- package/should-polyfill.js +38 -50
- package/src/abstract/BasicFormatMatcher.d.ts +5 -5
- package/src/abstract/BasicFormatMatcher.js +87 -103
- package/src/abstract/BestFitFormatMatcher.d.ts +12 -12
- package/src/abstract/BestFitFormatMatcher.js +102 -108
- package/src/abstract/DateTimeStyleFormat.d.ts +2 -2
- package/src/abstract/DateTimeStyleFormat.js +47 -62
- package/src/abstract/FormatDateTime.d.ts +7 -7
- package/src/abstract/FormatDateTime.js +12 -12
- package/src/abstract/FormatDateTimePattern.d.ts +11 -11
- package/src/abstract/FormatDateTimePattern.js +185 -198
- package/src/abstract/FormatDateTimeRange.d.ts +3 -3
- package/src/abstract/FormatDateTimeRange.js +9 -8
- package/src/abstract/FormatDateTimeRangeToParts.d.ts +4 -4
- package/src/abstract/FormatDateTimeRangeToParts.js +14 -12
- package/src/abstract/FormatDateTimeToParts.d.ts +9 -9
- package/src/abstract/FormatDateTimeToParts.js +17 -18
- package/src/abstract/InitializeDateTimeFormat.d.ts +15 -15
- package/src/abstract/InitializeDateTimeFormat.js +206 -184
- package/src/abstract/PartitionDateTimePattern.d.ts +8 -8
- package/src/abstract/PartitionDateTimePattern.js +15 -14
- package/src/abstract/PartitionDateTimeRangePattern.d.ts +4 -4
- package/src/abstract/PartitionDateTimeRangePattern.js +168 -161
- package/src/abstract/ToDateTimeOptions.d.ts +5 -5
- package/src/abstract/ToDateTimeOptions.js +68 -60
- package/src/abstract/ToLocalTime.d.ts +21 -21
- package/src/abstract/ToLocalTime.js +116 -45
- package/src/abstract/skeleton.d.ts +8 -8
- package/src/abstract/skeleton.js +231 -280
- package/src/abstract/utils.d.ts +1 -1
- package/src/abstract/utils.js +21 -20
- package/src/core.d.ts +17 -17
- package/src/core.js +250 -286
- package/src/data/all-tz.generated.d.ts +8 -0
- package/src/data/all-tz.generated.js +462 -0
- package/src/data/links.generated.d.ts +261 -0
- package/src/data/links.generated.js +260 -0
- package/src/get_internal_slots.d.ts +3 -1
- package/src/get_internal_slots.js +8 -7
- package/src/packer.d.ts +2 -2
- package/src/packer.js +23 -35
- package/src/to_locale_string.d.ts +3 -3
- package/src/to_locale_string.js +11 -11
- package/src/types.d.ts +34 -39
- package/src/types.js +1 -1
- package/supported-locales.generated.js +573 -1
- package/test262-main.d.ts +4 -1
- package/test262-main.js +24600 -44193
- package/src/data/all-tz.d.ts +0 -6
- package/src/data/all-tz.js +0 -461
- package/src/data/links.d.ts +0 -259
- package/src/data/links.js +0 -260
package/src/abstract/skeleton.js
CHANGED
|
@@ -1,294 +1,245 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RangePatternType, } from '@formatjs/ecma402-abstract';
|
|
1
|
+
import { RangePatternType } from "@formatjs/ecma402-abstract";
|
|
3
2
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
9
|
+
const expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
|
11
10
|
function matchSkeletonPattern(match, result) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
export function parseDateTimeSkeleton(skeleton, rawPattern, rangePatterns, intervalFormatFallback) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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
|
}
|
package/src/abstract/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IntlDateTimeFormatInternal, TABLE_6 } from
|
|
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;
|
package/src/abstract/utils.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export
|
|
20
|
-
export
|
|
21
|
-
export
|
|
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
|
|
2
|
-
import { PackedData, RawDateTimeLocaleData } from
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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;
|