@eternl/formats 0.9.15 → 0.9.16
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/LICENSE +177 -0
- package/README.md +3 -3
- package/dist/index.cjs +810 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +112 -0
- package/dist/index.d.mts +112 -0
- package/dist/index.mjs +759 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +23 -35
- package/dist/cjs/constants.js +0 -22
- package/dist/cjs/csv.js +0 -98
- package/dist/cjs/date.js +0 -70
- package/dist/cjs/display.js +0 -556
- package/dist/cjs/errors.js +0 -48
- package/dist/cjs/index.js +0 -31
- package/dist/cjs/internal/intl-cache.js +0 -92
- package/dist/cjs/internal/locale.js +0 -9
- package/dist/cjs/internal/numeric.js +0 -167
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/types.js +0 -16
- package/dist/esm/constants.js +0 -20
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/csv.js +0 -92
- package/dist/esm/csv.js.map +0 -1
- package/dist/esm/date.js +0 -66
- package/dist/esm/date.js.map +0 -1
- package/dist/esm/display.js +0 -545
- package/dist/esm/display.js.map +0 -1
- package/dist/esm/errors.js +0 -42
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/index.js +0 -6
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internal/intl-cache.js +0 -87
- package/dist/esm/internal/intl-cache.js.map +0 -1
- package/dist/esm/internal/locale.js +0 -6
- package/dist/esm/internal/locale.js.map +0 -1
- package/dist/esm/internal/numeric.js +0 -157
- package/dist/esm/internal/numeric.js.map +0 -1
- package/dist/esm/package.json +0 -3
- package/dist/esm/types.js +0 -14
- package/dist/esm/types.js.map +0 -1
- package/dist/types/constants.d.ts +0 -20
- package/dist/types/csv.d.ts +0 -5
- package/dist/types/date.d.ts +0 -3
- package/dist/types/display.d.ts +0 -7
- package/dist/types/errors.d.ts +0 -21
- package/dist/types/index.d.ts +0 -6
- package/dist/types/internal/intl-cache.d.ts +0 -17
- package/dist/types/internal/locale.d.ts +0 -1
- package/dist/types/internal/numeric.d.ts +0 -19
- package/dist/types/types.d.ts +0 -59
package/dist/esm/display.js
DELETED
|
@@ -1,545 +0,0 @@
|
|
|
1
|
-
import Big from 'big.js';
|
|
2
|
-
import { COMPACT_ORDER, DEFAULT_SIGN_MINUS, DEFAULT_SIGN_PLUS, DISPLAY_SIGN_MINUS, DISPLAY_SIGN_NONE, DISPLAY_SIGN_PLUS, STYLE_CURRENCY, STYLE_DECIMAL, STYLE_PERCENT } from './constants';
|
|
3
|
-
import { FormatError, toError } from './errors';
|
|
4
|
-
import { applyGrouping, computeNumericParts, normalizeNumeric } from './internal/numeric';
|
|
5
|
-
import { resolveLocale } from './internal/locale';
|
|
6
|
-
import { getNumberFormatPattern } from './internal/intl-cache';
|
|
7
|
-
import { SIGN_DISPLAYS } from './types';
|
|
8
|
-
const defaultCompactThresholds = {
|
|
9
|
-
K: new Big(1000),
|
|
10
|
-
M: new Big(1000000),
|
|
11
|
-
B: new Big(1000000000),
|
|
12
|
-
T: new Big(1000000000000)
|
|
13
|
-
};
|
|
14
|
-
const defaultCompactSuffixes = {
|
|
15
|
-
K: 'K',
|
|
16
|
-
M: 'M',
|
|
17
|
-
B: 'B',
|
|
18
|
-
T: 'T'
|
|
19
|
-
};
|
|
20
|
-
const compactThresholdCache = new WeakMap();
|
|
21
|
-
const COMPACT_DECIMAL_BUFFER = 12;
|
|
22
|
-
const SUBSCRIPT_DIGITS = [
|
|
23
|
-
'₀',
|
|
24
|
-
'₁',
|
|
25
|
-
'₂',
|
|
26
|
-
'₃',
|
|
27
|
-
'₄',
|
|
28
|
-
'₅',
|
|
29
|
-
'₆',
|
|
30
|
-
'₇',
|
|
31
|
-
'₈',
|
|
32
|
-
'₉'
|
|
33
|
-
];
|
|
34
|
-
const SUBSCRIPT_TO_DIGIT = SUBSCRIPT_DIGITS.reduce((acc, digit, index) => {
|
|
35
|
-
acc[digit] = index.toString();
|
|
36
|
-
return acc;
|
|
37
|
-
}, {});
|
|
38
|
-
const toSubscriptNumber = (value) => value
|
|
39
|
-
.toString()
|
|
40
|
-
.split('')
|
|
41
|
-
.map((digit) => SUBSCRIPT_DIGITS[digit.charCodeAt(0) - 48])
|
|
42
|
-
.join('');
|
|
43
|
-
const expandSubscriptDigits = (value) => {
|
|
44
|
-
let result = '';
|
|
45
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
46
|
-
const char = value[index];
|
|
47
|
-
const mapped = SUBSCRIPT_TO_DIGIT[char];
|
|
48
|
-
if (mapped === undefined) {
|
|
49
|
-
result += char;
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
let subscriptBuffer = mapped;
|
|
53
|
-
while (index + 1 < value.length) {
|
|
54
|
-
const nextChar = value[index + 1];
|
|
55
|
-
const nextMapped = SUBSCRIPT_TO_DIGIT[nextChar];
|
|
56
|
-
if (nextMapped === undefined) {
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
subscriptBuffer += nextMapped;
|
|
60
|
-
index += 1;
|
|
61
|
-
}
|
|
62
|
-
const zeroCount = Number(subscriptBuffer);
|
|
63
|
-
if (Number.isNaN(zeroCount) || zeroCount <= 0) {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
result += '0'.repeat(zeroCount);
|
|
67
|
-
}
|
|
68
|
-
return result;
|
|
69
|
-
};
|
|
70
|
-
const compactFractionLeadingZeros = (fraction) => {
|
|
71
|
-
const match = /^(0{2,})(.+)$/.exec(fraction);
|
|
72
|
-
if (!match) {
|
|
73
|
-
return fraction;
|
|
74
|
-
}
|
|
75
|
-
const [, zeros, remainder] = match;
|
|
76
|
-
if (!remainder || /^0+$/.test(remainder)) {
|
|
77
|
-
return fraction;
|
|
78
|
-
}
|
|
79
|
-
const annotation = toSubscriptNumber(zeros.length - 1);
|
|
80
|
-
return `${zeros[0]}${annotation}${remainder}`;
|
|
81
|
-
};
|
|
82
|
-
const resolveSignKind = (isNegative, isZero, signDisplay, forceSign) => {
|
|
83
|
-
const mode = signDisplay ?? (forceSign ? SIGN_DISPLAYS.always : SIGN_DISPLAYS.auto);
|
|
84
|
-
switch (mode) {
|
|
85
|
-
case SIGN_DISPLAYS.always: return isNegative ? DISPLAY_SIGN_MINUS : DISPLAY_SIGN_PLUS;
|
|
86
|
-
case SIGN_DISPLAYS.exceptZero: return isNegative ? DISPLAY_SIGN_MINUS : (isZero ? DISPLAY_SIGN_NONE : DISPLAY_SIGN_PLUS);
|
|
87
|
-
case SIGN_DISPLAYS.never: return DISPLAY_SIGN_NONE;
|
|
88
|
-
case SIGN_DISPLAYS.negative: return isNegative ? DISPLAY_SIGN_MINUS : DISPLAY_SIGN_NONE;
|
|
89
|
-
case SIGN_DISPLAYS.auto:
|
|
90
|
-
default: return isNegative ? DISPLAY_SIGN_MINUS : DISPLAY_SIGN_NONE;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
const resolveCurrencyToken = (template, options) => {
|
|
94
|
-
const code = options.currencyCode?.toUpperCase() ?? '';
|
|
95
|
-
if (options.useSymbol === false) {
|
|
96
|
-
return { value: code, fromCustom: false };
|
|
97
|
-
}
|
|
98
|
-
const custom = code ? options.customSymbols?.[code] : undefined;
|
|
99
|
-
if (custom) {
|
|
100
|
-
return { value: custom, fromCustom: true };
|
|
101
|
-
}
|
|
102
|
-
if (template && template !== code) {
|
|
103
|
-
return { value: template, fromCustom: false };
|
|
104
|
-
}
|
|
105
|
-
return { value: code, fromCustom: false };
|
|
106
|
-
};
|
|
107
|
-
const getNormalizedThreshold = (options, unit) => {
|
|
108
|
-
const overrides = options.compactThresholds;
|
|
109
|
-
if (!overrides || overrides[unit] === undefined) {
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
let cache = compactThresholdCache.get(options);
|
|
113
|
-
if (!cache) {
|
|
114
|
-
cache = new Map();
|
|
115
|
-
compactThresholdCache.set(options, cache);
|
|
116
|
-
}
|
|
117
|
-
let normalized = cache.get(unit);
|
|
118
|
-
if (!normalized) {
|
|
119
|
-
normalized = normalizeNumeric(overrides[unit], true);
|
|
120
|
-
cache.set(unit, normalized);
|
|
121
|
-
}
|
|
122
|
-
return normalized;
|
|
123
|
-
};
|
|
124
|
-
const resolveCompact = (value, options, enabled) => {
|
|
125
|
-
if (!enabled) {
|
|
126
|
-
return { value };
|
|
127
|
-
}
|
|
128
|
-
const abs = value.abs();
|
|
129
|
-
for (const unit of COMPACT_ORDER) {
|
|
130
|
-
const overrideThreshold = getNormalizedThreshold(options, unit);
|
|
131
|
-
const threshold = overrideThreshold ?? getDefaultCompactThreshold(unit);
|
|
132
|
-
if (abs.gte(threshold)) {
|
|
133
|
-
const suffix = options.compactSuffixes?.[unit] ?? getDefaultCompactSuffix(unit);
|
|
134
|
-
const scaled = threshold.eq(0) ? value : value.div(threshold);
|
|
135
|
-
return { value: scaled, suffix };
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return { value };
|
|
139
|
-
};
|
|
140
|
-
const getDefaultCompactThreshold = (unit) => {
|
|
141
|
-
return defaultCompactThresholds[unit];
|
|
142
|
-
};
|
|
143
|
-
const getDefaultCompactSuffix = (unit) => {
|
|
144
|
-
return defaultCompactSuffixes[unit];
|
|
145
|
-
};
|
|
146
|
-
const buildNumberFormatOptions = (options, style) => {
|
|
147
|
-
const nfOptions = {
|
|
148
|
-
style,
|
|
149
|
-
useGrouping: options.useGrouping !== false
|
|
150
|
-
};
|
|
151
|
-
if (options.signDisplay && options.signDisplay !== SIGN_DISPLAYS.negative) {
|
|
152
|
-
nfOptions.signDisplay = options.signDisplay;
|
|
153
|
-
}
|
|
154
|
-
else if (!options.signDisplay && options.forceSign) {
|
|
155
|
-
nfOptions.signDisplay = SIGN_DISPLAYS.always;
|
|
156
|
-
}
|
|
157
|
-
if (options.minDecimals !== undefined) {
|
|
158
|
-
nfOptions.minimumFractionDigits = options.minDecimals;
|
|
159
|
-
}
|
|
160
|
-
if (options.maxDecimals !== undefined) {
|
|
161
|
-
nfOptions.maximumFractionDigits = options.maxDecimals;
|
|
162
|
-
}
|
|
163
|
-
if (style === STYLE_CURRENCY && options.currencyCode) {
|
|
164
|
-
nfOptions.currency = options.currencyCode;
|
|
165
|
-
nfOptions.currencyDisplay = options.useSymbol === false ? 'code' : 'symbol';
|
|
166
|
-
}
|
|
167
|
-
return nfOptions;
|
|
168
|
-
};
|
|
169
|
-
const formatFromPattern = (options, style, integerPart, fractionPart, sign, pattern, suffix, currencyOverride, currencyOverrideIsCustom) => {
|
|
170
|
-
const parts = sign === DISPLAY_SIGN_MINUS ? pattern.negative : pattern.positive;
|
|
171
|
-
const useGrouping = options.useGrouping !== false;
|
|
172
|
-
const groupedInteger = applyGrouping(integerPart, {
|
|
173
|
-
separator: pattern.groupSeparator,
|
|
174
|
-
primary: pattern.grouping.primary,
|
|
175
|
-
secondary: pattern.grouping.secondary
|
|
176
|
-
}, useGrouping);
|
|
177
|
-
const hasFraction = fractionPart.length > 0;
|
|
178
|
-
let result = '';
|
|
179
|
-
let integerInjected = false;
|
|
180
|
-
let currencyMeta;
|
|
181
|
-
let previousType;
|
|
182
|
-
let suffixInjected = false;
|
|
183
|
-
const appendSuffix = () => {
|
|
184
|
-
if (!suffix || suffixInjected) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
result += suffix;
|
|
188
|
-
suffixInjected = true;
|
|
189
|
-
};
|
|
190
|
-
const stripTrailingWhitespace = () => {
|
|
191
|
-
if (!result) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
const trimmed = result.replace(/\s+$/gu, '');
|
|
195
|
-
if (trimmed !== result) {
|
|
196
|
-
result = trimmed;
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
for (const part of parts) {
|
|
200
|
-
switch (part.type) {
|
|
201
|
-
case 'integer': {
|
|
202
|
-
if (!integerInjected) {
|
|
203
|
-
result += groupedInteger;
|
|
204
|
-
integerInjected = true;
|
|
205
|
-
if (!hasFraction) {
|
|
206
|
-
appendSuffix();
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
case 'group':
|
|
212
|
-
break;
|
|
213
|
-
case 'decimal': {
|
|
214
|
-
if (hasFraction) {
|
|
215
|
-
result += pattern.decimalSeparator;
|
|
216
|
-
}
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
case 'fraction': {
|
|
220
|
-
if (hasFraction) {
|
|
221
|
-
result += fractionPart;
|
|
222
|
-
appendSuffix();
|
|
223
|
-
}
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
case 'minusSign': {
|
|
227
|
-
if (sign === DISPLAY_SIGN_MINUS) {
|
|
228
|
-
result += pattern.minusSign ?? part.value ?? DEFAULT_SIGN_MINUS;
|
|
229
|
-
}
|
|
230
|
-
break;
|
|
231
|
-
}
|
|
232
|
-
case 'plusSign': {
|
|
233
|
-
if (sign === DISPLAY_SIGN_PLUS) {
|
|
234
|
-
result += pattern.plusSign ?? part.value ?? DEFAULT_SIGN_PLUS;
|
|
235
|
-
}
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
case 'currency': {
|
|
239
|
-
if (integerInjected) {
|
|
240
|
-
appendSuffix();
|
|
241
|
-
}
|
|
242
|
-
if (currencyOverride !== undefined) {
|
|
243
|
-
currencyMeta = {
|
|
244
|
-
value: currencyOverride,
|
|
245
|
-
fromCustom: currencyOverrideIsCustom ?? false
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
currencyMeta = currencyMeta ?? resolveCurrencyToken(part.value, options);
|
|
250
|
-
}
|
|
251
|
-
result += currencyMeta.value;
|
|
252
|
-
break;
|
|
253
|
-
}
|
|
254
|
-
case 'percentSign': {
|
|
255
|
-
stripTrailingWhitespace();
|
|
256
|
-
result += part.value;
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
case 'literal': {
|
|
260
|
-
if (previousType === 'currency' && currencyMeta?.fromCustom && /^\s+$/.test(part.value)) {
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
result += part.value;
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
default: {
|
|
267
|
-
result += part.value;
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
previousType = part.type;
|
|
272
|
-
}
|
|
273
|
-
appendSuffix();
|
|
274
|
-
return result;
|
|
275
|
-
};
|
|
276
|
-
const resolveDisplayStyle = (options, overrideStyle) => {
|
|
277
|
-
const style = overrideStyle ?? options.style ?? STYLE_DECIMAL;
|
|
278
|
-
if (style === STYLE_CURRENCY && !options.currencyCode) {
|
|
279
|
-
throw toError(FormatError.MissingCurrencyCode);
|
|
280
|
-
}
|
|
281
|
-
return style;
|
|
282
|
-
};
|
|
283
|
-
const formatDisplayInternal = (value, options, styleOverride, forceCompact) => {
|
|
284
|
-
const style = resolveDisplayStyle(options, styleOverride);
|
|
285
|
-
const base = normalizeNumeric(value);
|
|
286
|
-
const percentAdjusted = style === STYLE_PERCENT ? base.times(100) : base;
|
|
287
|
-
const { value: scaled, suffix } = resolveCompact(percentAdjusted, options, forceCompact ?? options.compact === true);
|
|
288
|
-
const numericParts = computeNumericParts(scaled, options);
|
|
289
|
-
const sign = resolveSignKind(numericParts.isNegative, numericParts.isZero, options.signDisplay, options.forceSign);
|
|
290
|
-
let integerPart = numericParts.integer;
|
|
291
|
-
let fractionPart = numericParts.fraction;
|
|
292
|
-
const locale = resolveLocale(options.locale);
|
|
293
|
-
let pattern;
|
|
294
|
-
let currencyOverride;
|
|
295
|
-
let currencyOverrideIsCustom = false;
|
|
296
|
-
if (options.compactDecimalZeros && !options.isHidden) {
|
|
297
|
-
const baseMatch = /^(0{2,})(.+)$/.exec(fractionPart);
|
|
298
|
-
const baseRemainder = baseMatch?.[2];
|
|
299
|
-
const hasBaseDigits = baseMatch && baseRemainder && !/^0+$/.test(baseRemainder);
|
|
300
|
-
if (hasBaseDigits) {
|
|
301
|
-
fractionPart = compactFractionLeadingZeros(fractionPart);
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
const extendedMax = options.maxDecimals !== undefined ? options.maxDecimals + COMPACT_DECIMAL_BUFFER : undefined;
|
|
305
|
-
const extendedOptions = {
|
|
306
|
-
...options,
|
|
307
|
-
maxDecimals: extendedMax,
|
|
308
|
-
trimTrailingZeros: false
|
|
309
|
-
};
|
|
310
|
-
const extendedParts = computeNumericParts(scaled, extendedOptions);
|
|
311
|
-
const extendedFraction = extendedParts.fraction;
|
|
312
|
-
const match = /^(0{2,})(.+)$/.exec(extendedFraction);
|
|
313
|
-
if (match) {
|
|
314
|
-
const zerosPortion = match[1];
|
|
315
|
-
let remainder = match[2];
|
|
316
|
-
if (!/^0+$/.test(remainder)) {
|
|
317
|
-
const targetMax = options.maxDecimals;
|
|
318
|
-
const targetMin = options.minDecimals ?? 0;
|
|
319
|
-
if (targetMax === 0) {
|
|
320
|
-
fractionPart = '';
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
let digits = zerosPortion;
|
|
324
|
-
const remainderNeeded = targetMax !== undefined ? Math.max(targetMax - 1, 0) : remainder.length;
|
|
325
|
-
if (remainderNeeded > 0) {
|
|
326
|
-
if (remainder.length < remainderNeeded) {
|
|
327
|
-
remainder = remainder.padEnd(remainderNeeded, '0');
|
|
328
|
-
}
|
|
329
|
-
digits += remainder.slice(0, remainderNeeded);
|
|
330
|
-
}
|
|
331
|
-
if (targetMax === undefined && digits.length < targetMin) {
|
|
332
|
-
const extraNeeded = targetMin - digits.length;
|
|
333
|
-
let extraSource = remainder.slice(remainderNeeded);
|
|
334
|
-
if (extraSource.length < extraNeeded) {
|
|
335
|
-
extraSource = extraSource.padEnd(extraNeeded, '0');
|
|
336
|
-
}
|
|
337
|
-
digits += extraSource.slice(0, extraNeeded);
|
|
338
|
-
}
|
|
339
|
-
if (targetMax !== undefined && digits.length < targetMin) {
|
|
340
|
-
digits = digits.padEnd(targetMin, '0');
|
|
341
|
-
}
|
|
342
|
-
if (options.trimTrailingZeros) {
|
|
343
|
-
const minKeep = Math.max(targetMin, zerosPortion ? 1 : 0);
|
|
344
|
-
while (digits.length > Math.max(minKeep, zerosPortion.length) && digits.endsWith('0')) {
|
|
345
|
-
digits = digits.slice(0, -1);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
fractionPart = compactFractionLeadingZeros(digits);
|
|
349
|
-
integerPart = extendedParts.integer;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
if (options.isHidden) {
|
|
356
|
-
const maskChar = options.hiddenCharacter && options.hiddenCharacter.length > 0
|
|
357
|
-
? options.hiddenCharacter[0]
|
|
358
|
-
: '*';
|
|
359
|
-
integerPart = maskChar;
|
|
360
|
-
fractionPart = fractionPart.length > 0 ? maskChar.repeat(fractionPart.length) : fractionPart;
|
|
361
|
-
}
|
|
362
|
-
try {
|
|
363
|
-
const nfOptions = buildNumberFormatOptions(options, style);
|
|
364
|
-
pattern = getNumberFormatPattern(locale, nfOptions);
|
|
365
|
-
}
|
|
366
|
-
catch (error) {
|
|
367
|
-
if (!(error instanceof RangeError) || style !== STYLE_CURRENCY || !options.currencyCode) {
|
|
368
|
-
throw error;
|
|
369
|
-
}
|
|
370
|
-
const placeholderOptions = {
|
|
371
|
-
...options,
|
|
372
|
-
currencyCode: 'USD'
|
|
373
|
-
};
|
|
374
|
-
const nfOptionsFallback = buildNumberFormatOptions(placeholderOptions, STYLE_CURRENCY);
|
|
375
|
-
pattern = getNumberFormatPattern(locale, nfOptionsFallback);
|
|
376
|
-
const rawCode = options.currencyCode;
|
|
377
|
-
const code = rawCode.toUpperCase();
|
|
378
|
-
if (options.useSymbol === false) {
|
|
379
|
-
currencyOverride = rawCode;
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
const customSymbol = options.customSymbols?.[code] ?? options.customSymbols?.[rawCode];
|
|
383
|
-
if (customSymbol) {
|
|
384
|
-
currencyOverride = customSymbol;
|
|
385
|
-
currencyOverrideIsCustom = true;
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
currencyOverride = rawCode;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
return formatFromPattern(options, style, integerPart, fractionPart, sign, pattern, suffix, currencyOverride, currencyOverrideIsCustom);
|
|
393
|
-
};
|
|
394
|
-
export const formatDisplayNumber = (value, options) => formatDisplayInternal(value, options);
|
|
395
|
-
export const formatDisplayCurrency = (value, options) => formatDisplayInternal(value, options, STYLE_CURRENCY);
|
|
396
|
-
export const formatDisplayPercent = (value, options) => formatDisplayInternal(value, options, STYLE_PERCENT);
|
|
397
|
-
export const formatDisplayCompact = (value, options) => formatDisplayInternal(value, options, undefined, true);
|
|
398
|
-
const stripGroupSeparators = (value, separator) => {
|
|
399
|
-
if (!separator) {
|
|
400
|
-
return value;
|
|
401
|
-
}
|
|
402
|
-
return value.split(separator).join('');
|
|
403
|
-
};
|
|
404
|
-
const normalizeNumericCore = (core, pattern) => {
|
|
405
|
-
let normalized = expandSubscriptDigits(core);
|
|
406
|
-
if (pattern.groupSeparator) {
|
|
407
|
-
normalized = stripGroupSeparators(normalized, pattern.groupSeparator);
|
|
408
|
-
}
|
|
409
|
-
normalized = normalized.replace(/\s+/gu, '');
|
|
410
|
-
if (pattern.decimalSeparator && pattern.decimalSeparator !== '.') {
|
|
411
|
-
normalized = normalized.replace(pattern.decimalSeparator, '.');
|
|
412
|
-
}
|
|
413
|
-
if (pattern.minusSign && pattern.minusSign !== DEFAULT_SIGN_MINUS) {
|
|
414
|
-
normalized = normalized.split(pattern.minusSign).join(DEFAULT_SIGN_MINUS);
|
|
415
|
-
}
|
|
416
|
-
if (pattern.plusSign && pattern.plusSign !== DEFAULT_SIGN_PLUS) {
|
|
417
|
-
normalized = normalized.split(pattern.plusSign).join(DEFAULT_SIGN_PLUS);
|
|
418
|
-
}
|
|
419
|
-
return normalized;
|
|
420
|
-
};
|
|
421
|
-
const parseDisplayInternal = (formatted, options) => {
|
|
422
|
-
const numericCore = extractNumberCore(formatted);
|
|
423
|
-
if (!numericCore) {
|
|
424
|
-
return Number.NaN;
|
|
425
|
-
}
|
|
426
|
-
const locale = options?.locale;
|
|
427
|
-
if (locale) {
|
|
428
|
-
const resolvedLocale = resolveLocale(locale);
|
|
429
|
-
const nfOptions = buildNumberFormatOptions(options ?? {}, STYLE_DECIMAL);
|
|
430
|
-
const pattern = getNumberFormatPattern(resolvedLocale, nfOptions);
|
|
431
|
-
const normalizedCore = normalizeNumericCore(numericCore, pattern);
|
|
432
|
-
if (!normalizedCore || normalizedCore === DEFAULT_SIGN_MINUS || normalizedCore === DEFAULT_SIGN_PLUS) {
|
|
433
|
-
return Number.NaN;
|
|
434
|
-
}
|
|
435
|
-
try {
|
|
436
|
-
return Big(normalizedCore).toNumber();
|
|
437
|
-
}
|
|
438
|
-
catch (error) {
|
|
439
|
-
// fall back to locale-agnostic heuristics below when locale pattern parsing fails
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
let normalized = expandSubscriptDigits(numericCore);
|
|
443
|
-
normalized = normalized.replace(/['’`_\s\u00A0]/gu, '');
|
|
444
|
-
const lastDot = normalized.lastIndexOf('.');
|
|
445
|
-
const lastComma = normalized.lastIndexOf(',');
|
|
446
|
-
if (lastDot !== -1 || lastComma !== -1) {
|
|
447
|
-
let decimalIndex = Math.max(lastDot, lastComma);
|
|
448
|
-
let decimalChar = decimalIndex === lastDot ? '.' : ',';
|
|
449
|
-
if (lastDot !== -1 && lastComma !== -1) {
|
|
450
|
-
decimalChar = decimalIndex === lastDot ? '.' : ',';
|
|
451
|
-
const thousandsChar = decimalChar === '.' ? ',' : '.';
|
|
452
|
-
normalized = normalized.split(thousandsChar).join('');
|
|
453
|
-
}
|
|
454
|
-
else if (lastComma !== -1) {
|
|
455
|
-
const fractionalPart = normalized.slice(lastComma + 1);
|
|
456
|
-
if (fractionalPart.length === 3 && normalized.slice(0, lastComma).replace(/[^0-9]/g, '').length > 3) {
|
|
457
|
-
normalized = normalized.replace(/,/g, '');
|
|
458
|
-
decimalChar = '.';
|
|
459
|
-
}
|
|
460
|
-
else {
|
|
461
|
-
decimalChar = ',';
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
else if (lastDot !== -1) {
|
|
465
|
-
const fractionalPart = normalized.slice(lastDot + 1);
|
|
466
|
-
if (fractionalPart.length === 3 && normalized.slice(0, lastDot).replace(/[^0-9]/g, '').length > 3) {
|
|
467
|
-
decimalChar = ',';
|
|
468
|
-
normalized = normalized.replace(/\./g, '');
|
|
469
|
-
}
|
|
470
|
-
else {
|
|
471
|
-
decimalChar = '.';
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
if (decimalChar !== '.') {
|
|
475
|
-
normalized = normalized.split(decimalChar).join('.');
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
normalized = normalized.replace(/,/g, '');
|
|
479
|
-
if (!normalized || normalized === DEFAULT_SIGN_MINUS || normalized === DEFAULT_SIGN_PLUS) {
|
|
480
|
-
return Number.NaN;
|
|
481
|
-
}
|
|
482
|
-
try {
|
|
483
|
-
return Big(normalized).toNumber();
|
|
484
|
-
}
|
|
485
|
-
catch (error) {
|
|
486
|
-
return Number.NaN;
|
|
487
|
-
}
|
|
488
|
-
};
|
|
489
|
-
export const parseDisplayValue = (formatted, options) => parseDisplayInternal(formatted, options);
|
|
490
|
-
const NUMERIC_OR_SUBSCRIPT = /[0-9₀-₉]/;
|
|
491
|
-
const MINUS_SIGNS = new Set(['-', '−', '﹣', '-']);
|
|
492
|
-
const isWhitespace = (char) => /\s/.test(char);
|
|
493
|
-
export const extractNumberCore = (formatted) => {
|
|
494
|
-
let startIndex = -1;
|
|
495
|
-
let endIndex = -1;
|
|
496
|
-
for (let i = 0; i < formatted.length; i += 1) {
|
|
497
|
-
if (NUMERIC_OR_SUBSCRIPT.test(formatted[i])) {
|
|
498
|
-
startIndex = i;
|
|
499
|
-
break;
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
if (startIndex === -1) {
|
|
503
|
-
return '';
|
|
504
|
-
}
|
|
505
|
-
for (let i = formatted.length - 1; i >= startIndex; i -= 1) {
|
|
506
|
-
if (NUMERIC_OR_SUBSCRIPT.test(formatted[i])) {
|
|
507
|
-
endIndex = i;
|
|
508
|
-
break;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
if (endIndex === -1) {
|
|
512
|
-
return '';
|
|
513
|
-
}
|
|
514
|
-
let signPrefix = '';
|
|
515
|
-
for (let idx = startIndex - 1; idx >= 0; idx -= 1) {
|
|
516
|
-
const candidate = formatted[idx];
|
|
517
|
-
if (isWhitespace(candidate)) {
|
|
518
|
-
continue;
|
|
519
|
-
}
|
|
520
|
-
if (MINUS_SIGNS.has(candidate)) {
|
|
521
|
-
signPrefix = candidate;
|
|
522
|
-
break;
|
|
523
|
-
}
|
|
524
|
-
if (NUMERIC_OR_SUBSCRIPT.test(candidate)) {
|
|
525
|
-
break;
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
if (!signPrefix) {
|
|
529
|
-
for (let idx = endIndex + 1; idx < formatted.length; idx += 1) {
|
|
530
|
-
const candidate = formatted[idx];
|
|
531
|
-
if (isWhitespace(candidate)) {
|
|
532
|
-
continue;
|
|
533
|
-
}
|
|
534
|
-
if (MINUS_SIGNS.has(candidate)) {
|
|
535
|
-
signPrefix = candidate;
|
|
536
|
-
break;
|
|
537
|
-
}
|
|
538
|
-
if (NUMERIC_OR_SUBSCRIPT.test(candidate)) {
|
|
539
|
-
break;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
return `${signPrefix}${formatted.slice(startIndex, endIndex + 1)}`;
|
|
544
|
-
};
|
|
545
|
-
//# sourceMappingURL=display.js.map
|
package/dist/esm/display.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/display.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/errors.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export var FormatError;
|
|
2
|
-
(function (FormatError) {
|
|
3
|
-
FormatError["NonNegativeIntegerRequired"] = "nonNegativeIntegerRequired";
|
|
4
|
-
FormatError["PositiveIntegerRequired"] = "positiveIntegerRequired";
|
|
5
|
-
FormatError["NumericValueNonFinite"] = "numericValueNonFinite";
|
|
6
|
-
FormatError["NumericStringEmpty"] = "numericStringEmpty";
|
|
7
|
-
FormatError["UnsupportedNumericInput"] = "unsupportedNumericInput";
|
|
8
|
-
FormatError["MaxDecimalsLessThanMinimum"] = "maxDecimalsLessThanMinimum";
|
|
9
|
-
FormatError["MissingLocale"] = "missingLocale";
|
|
10
|
-
FormatError["MissingCurrencyCode"] = "missingCurrencyCode";
|
|
11
|
-
FormatError["DateValueInvalid"] = "dateValueInvalid";
|
|
12
|
-
FormatError["DateStringEmpty"] = "dateStringEmpty";
|
|
13
|
-
FormatError["DateNumberNonFinite"] = "dateNumberNonFinite";
|
|
14
|
-
FormatError["InvalidDateString"] = "invalidDateString";
|
|
15
|
-
FormatError["UnsupportedDateInput"] = "unsupportedDateInput";
|
|
16
|
-
})(FormatError || (FormatError = {}));
|
|
17
|
-
const FORMAT_ERROR_MESSAGES = {
|
|
18
|
-
[FormatError.NonNegativeIntegerRequired]: '%label% must be a non-negative integer',
|
|
19
|
-
[FormatError.PositiveIntegerRequired]: '%label% must be a positive integer',
|
|
20
|
-
[FormatError.NumericValueNonFinite]: 'Numeric value must be a finite number',
|
|
21
|
-
[FormatError.NumericStringEmpty]: 'Numeric string cannot be empty',
|
|
22
|
-
[FormatError.UnsupportedNumericInput]: 'Unsupported numeric input type',
|
|
23
|
-
[FormatError.MaxDecimalsLessThanMinimum]: 'maxDecimals cannot be less than minDecimals',
|
|
24
|
-
[FormatError.MissingLocale]: 'Display formatting requires a locale',
|
|
25
|
-
[FormatError.MissingCurrencyCode]: 'Currency formatting requires a currencyCode',
|
|
26
|
-
[FormatError.DateValueInvalid]: 'Invalid date value',
|
|
27
|
-
[FormatError.DateStringEmpty]: 'Date string cannot be empty',
|
|
28
|
-
[FormatError.DateNumberNonFinite]: 'Date number must be finite',
|
|
29
|
-
[FormatError.InvalidDateString]: 'Invalid date string',
|
|
30
|
-
[FormatError.UnsupportedDateInput]: 'Unsupported date input type'
|
|
31
|
-
};
|
|
32
|
-
const applyDetails = (template, details) => {
|
|
33
|
-
if (!details) {
|
|
34
|
-
return template;
|
|
35
|
-
}
|
|
36
|
-
return Object.keys(details).reduce((message, key) => message.replace(new RegExp(`%${key}%`, 'g'), details[key]), template);
|
|
37
|
-
};
|
|
38
|
-
export const getFormatErrorMessage = (code, details) => applyDetails(FORMAT_ERROR_MESSAGES[code], details);
|
|
39
|
-
export const toRangeError = (code, details) => new RangeError(getFormatErrorMessage(code, details));
|
|
40
|
-
export const toTypeError = (code, details) => new TypeError(getFormatErrorMessage(code, details));
|
|
41
|
-
export const toError = (code, details) => new Error(getFormatErrorMessage(code, details));
|
|
42
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/esm/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAeX;AAfD,WAAY,WAAW;IAErB,wEAA0D,CAAA;IAC1D,kEAAuD,CAAA;IACvD,8DAAqD,CAAA;IACrD,wDAAkD,CAAA;IAClD,kEAAuD,CAAA;IACvD,wEAA0D,CAAA;IAC1D,8CAA6C,CAAA;IAC7C,0DAAmD,CAAA;IACnD,oDAAgD,CAAA;IAChD,kDAA+C,CAAA;IAC/C,0DAAmD,CAAA;IACnD,sDAAiD,CAAA;IACjD,4DAAoD,CAAA;AACtD,CAAC,EAfW,WAAW,KAAX,WAAW,QAetB;AAMD,MAAM,qBAAqB,GAAK;IAE9B,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAQ,wCAAwC;IACxF,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAW,oCAAoC;IACpF,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAa,uCAAuC;IACvF,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAgB,gCAAgC;IAChF,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAW,gCAAgC;IAChF,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAQ,6CAA6C;IAC7F,CAAC,WAAW,CAAC,aAAa,CAAC,EAAqB,sCAAsC;IACtF,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAe,6CAA6C;IAC7F,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAkB,oBAAoB;IACpE,CAAC,WAAW,CAAC,eAAe,CAAC,EAAmB,6BAA6B;IAC7E,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAe,4BAA4B;IAC5E,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAiB,qBAAqB;IACrE,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAc,6BAA6B;CAEpD,CAAA;AAE3B,MAAM,YAAY,GAAc,CAAC,QAAuB,EACvB,OAA6B,EAAU,EAAE;IAExE,IAAI,CAAC,OAAO,EAAqB,CAAC;QAAC,OAAO,QAAQ,CAAA;IAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC5H,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAuB,EACvB,OAAwB,EAAU,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;AAE7H,MAAM,CAAC,MAAM,YAAY,GAAO,CAAC,IAAiB,EAAE,OAAsB,EAAc,EAAE,CAAC,IAAI,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;AAC/I,MAAM,CAAC,MAAM,WAAW,GAAQ,CAAC,IAAiB,EAAE,OAAsB,EAAc,EAAE,CAAC,IAAK,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;AAC/I,MAAM,CAAC,MAAM,OAAO,GAAY,CAAC,IAAiB,EAAE,OAAsB,EAAc,EAAE,CAAC,IAAS,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA"}
|
package/dist/esm/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { formatDisplayNumber, formatDisplayCurrency, formatDisplayPercent, formatDisplayCompact, parseDisplayValue, extractNumberCore } from './display';
|
|
2
|
-
export { formatCsvNumber, formatCsvPercent, csvCurrencyCode, buildCsv } from './csv';
|
|
3
|
-
export { formatDisplayDate, formatCsvDate } from './date';
|
|
4
|
-
export { FormatError, getFormatErrorMessage, toError, toRangeError, toTypeError } from './errors';
|
|
5
|
-
export { DISPLAY_SIGNS, DEFAULT_SIGN_MINUS, DEFAULT_SIGN_PLUS, DECIMAL_ZERO, DECIMAL_EMPTY, DECIMAL_DOT } from './constants';
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAClB,MAAkC,WAAW,CAAA;AAE9C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACT,MAAkC,OAAO,CAAA;AAE1C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAkC,QAAQ,CAAA;AAE3C,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,WAAW,EACZ,MAAkC,UAAU,CAAA;AAgB7C,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAkC,aAAa,CAAA"}
|