@eternl/formats 0.1.0 → 0.2.0
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/dist/cjs/display.js +56 -55
- package/dist/cjs/internal/numeric.js +13 -10
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/display.js +56 -55
- package/dist/esm/display.js.map +1 -1
- package/dist/esm/internal/numeric.js +13 -10
- package/dist/esm/internal/numeric.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/display.d.ts +3 -7
- package/dist/types/internal/numeric.d.ts +1 -1
- package/dist/types/types.d.ts +3 -3
- package/package.json +2 -2
package/dist/cjs/display.js
CHANGED
|
@@ -5,23 +5,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.formatDisplayCompact = exports.formatDisplayPercent = exports.formatDisplayCurrency = exports.formatDisplayNumber = void 0;
|
|
7
7
|
const big_js_1 = __importDefault(require("big.js"));
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const errors_1 = require("./errors");
|
|
8
10
|
const numeric_1 = require("./internal/numeric");
|
|
9
11
|
const intl_cache_1 = require("./internal/intl-cache");
|
|
10
|
-
const errors_1 = require("./errors");
|
|
11
|
-
const constants_1 = require("./constants");
|
|
12
12
|
const types_1 = require("./types");
|
|
13
|
-
const
|
|
13
|
+
const defaultCompactThresholds = {
|
|
14
14
|
K: new big_js_1.default(1000),
|
|
15
15
|
M: new big_js_1.default(1000000),
|
|
16
16
|
B: new big_js_1.default(1000000000),
|
|
17
17
|
T: new big_js_1.default(1000000000000)
|
|
18
18
|
};
|
|
19
|
-
const
|
|
19
|
+
const defaultCompactSuffixes = {
|
|
20
20
|
K: 'K',
|
|
21
21
|
M: 'M',
|
|
22
22
|
B: 'B',
|
|
23
23
|
T: 'T'
|
|
24
24
|
};
|
|
25
|
+
const compactThresholdCache = new WeakMap();
|
|
25
26
|
const resolveSignKind = (isNegative, isZero, signDisplay) => {
|
|
26
27
|
const mode = signDisplay ?? types_1.SIGN_DISPLAYS.auto;
|
|
27
28
|
switch (mode) {
|
|
@@ -47,35 +48,48 @@ const resolveCurrencyToken = (template, options) => {
|
|
|
47
48
|
}
|
|
48
49
|
return { value: code, fromCustom: false };
|
|
49
50
|
};
|
|
50
|
-
const
|
|
51
|
-
|
|
51
|
+
const getNormalizedThreshold = (options, unit) => {
|
|
52
|
+
const overrides = options.compactThresholds;
|
|
53
|
+
if (!overrides || overrides[unit] === undefined) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
let cache = compactThresholdCache.get(options);
|
|
57
|
+
if (!cache) {
|
|
58
|
+
cache = new Map();
|
|
59
|
+
compactThresholdCache.set(options, cache);
|
|
60
|
+
}
|
|
61
|
+
let normalized = cache.get(unit);
|
|
62
|
+
if (!normalized) {
|
|
63
|
+
normalized = (0, numeric_1.normalizeNumeric)(overrides[unit], true);
|
|
64
|
+
cache.set(unit, normalized);
|
|
65
|
+
}
|
|
66
|
+
return normalized;
|
|
67
|
+
};
|
|
68
|
+
const resolveCompact = (value, options, enabled) => {
|
|
69
|
+
if (!enabled) {
|
|
52
70
|
return { value };
|
|
53
71
|
}
|
|
54
72
|
const abs = value.abs();
|
|
55
|
-
let chosen;
|
|
56
73
|
for (const unit of constants_1.COMPACT_ORDER) {
|
|
57
|
-
const overrideThreshold = options
|
|
58
|
-
const threshold = overrideThreshold
|
|
59
|
-
? (0, numeric_1.normalizeNumeric)(overrideThreshold)
|
|
60
|
-
: DEFAULT_COMPACT_THRESHOLDS[unit];
|
|
74
|
+
const overrideThreshold = getNormalizedThreshold(options, unit);
|
|
75
|
+
const threshold = overrideThreshold ?? getDefaultCompactThreshold(unit);
|
|
61
76
|
if (abs.gte(threshold)) {
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
const suffix = options.compactSuffixes?.[unit] ?? getDefaultCompactSuffix(unit);
|
|
78
|
+
const scaled = threshold.eq(0) ? value : value.div(threshold);
|
|
79
|
+
return { value: scaled, suffix };
|
|
64
80
|
}
|
|
65
81
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
? (0, numeric_1.normalizeNumeric)(options.compactThresholds[chosen])
|
|
71
|
-
: DEFAULT_COMPACT_THRESHOLDS[chosen];
|
|
72
|
-
const suffix = options.compactSuffixes?.[chosen] ?? DEFAULT_COMPACT_SUFFIXES[chosen];
|
|
73
|
-
const scaled = threshold.eq(0) ? value : value.div(threshold);
|
|
74
|
-
return { value: scaled, suffix };
|
|
82
|
+
return { value };
|
|
83
|
+
};
|
|
84
|
+
const getDefaultCompactThreshold = (unit) => {
|
|
85
|
+
return defaultCompactThresholds[unit];
|
|
75
86
|
};
|
|
76
|
-
const
|
|
87
|
+
const getDefaultCompactSuffix = (unit) => {
|
|
88
|
+
return defaultCompactSuffixes[unit];
|
|
89
|
+
};
|
|
90
|
+
const buildNumberFormatOptions = (options, style) => {
|
|
77
91
|
const nfOptions = {
|
|
78
|
-
style
|
|
92
|
+
style,
|
|
79
93
|
useGrouping: options.useGrouping !== false
|
|
80
94
|
};
|
|
81
95
|
if (options.signDisplay && options.signDisplay !== types_1.SIGN_DISPLAYS.negative) {
|
|
@@ -87,14 +101,14 @@ const buildNumberFormatOptions = (options) => {
|
|
|
87
101
|
if (options.maxDecimals !== undefined) {
|
|
88
102
|
nfOptions.maximumFractionDigits = options.maxDecimals;
|
|
89
103
|
}
|
|
90
|
-
if (
|
|
104
|
+
if (style === constants_1.STYLE_CURRENCY && options.currencyCode) {
|
|
91
105
|
nfOptions.currency = options.currencyCode;
|
|
92
106
|
nfOptions.currencyDisplay = options.useSymbol === false ? 'code' : 'symbol';
|
|
93
107
|
}
|
|
94
108
|
return nfOptions;
|
|
95
109
|
};
|
|
96
|
-
const formatFromPattern = (options, integerPart, fractionPart, sign, suffix) => {
|
|
97
|
-
const nfOptions = buildNumberFormatOptions(options);
|
|
110
|
+
const formatFromPattern = (options, style, integerPart, fractionPart, sign, suffix) => {
|
|
111
|
+
const nfOptions = buildNumberFormatOptions(options, style);
|
|
98
112
|
const pattern = (0, intl_cache_1.getNumberFormatPattern)(options.locale, nfOptions);
|
|
99
113
|
const parts = sign === constants_1.DISPLAY_SIGN_MINUS ? pattern.negative : pattern.positive;
|
|
100
114
|
const useGrouping = options.useGrouping !== false;
|
|
@@ -171,43 +185,30 @@ const formatFromPattern = (options, integerPart, fractionPart, sign, suffix) =>
|
|
|
171
185
|
}
|
|
172
186
|
return result;
|
|
173
187
|
};
|
|
174
|
-
const
|
|
188
|
+
const resolveDisplayStyle = (options, overrideStyle) => {
|
|
175
189
|
if (!options.locale) {
|
|
176
190
|
throw (0, errors_1.toError)(errors_1.FormatError.MissingLocale);
|
|
177
191
|
}
|
|
192
|
+
const style = overrideStyle ?? options.style ?? constants_1.STYLE_DECIMAL;
|
|
178
193
|
if (style === constants_1.STYLE_CURRENCY && !options.currencyCode) {
|
|
179
194
|
throw (0, errors_1.toError)(errors_1.FormatError.MissingCurrencyCode);
|
|
180
195
|
}
|
|
181
|
-
return
|
|
182
|
-
...options,
|
|
183
|
-
style
|
|
184
|
-
};
|
|
196
|
+
return style;
|
|
185
197
|
};
|
|
186
|
-
const formatDisplayInternal = (value, options,
|
|
187
|
-
const
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
return formatFromPattern(resolved, numericParts.integer, numericParts.fraction, sign, suffix);
|
|
195
|
-
};
|
|
196
|
-
const formatDisplayNumber = (value, options) => {
|
|
197
|
-
const style = options.style ?? constants_1.STYLE_DECIMAL;
|
|
198
|
-
return formatDisplayInternal(value, { ...options, style }, style);
|
|
198
|
+
const formatDisplayInternal = (value, options, styleOverride, forceCompact) => {
|
|
199
|
+
const style = resolveDisplayStyle(options, styleOverride);
|
|
200
|
+
const base = (0, numeric_1.normalizeNumeric)(value);
|
|
201
|
+
const percentAdjusted = style === constants_1.STYLE_PERCENT ? base.times(100) : base;
|
|
202
|
+
const { value: scaled, suffix } = resolveCompact(percentAdjusted, options, forceCompact ?? options.compact === true);
|
|
203
|
+
const numericParts = (0, numeric_1.computeNumericParts)(scaled, options);
|
|
204
|
+
const sign = resolveSignKind(numericParts.isNegative, numericParts.isZero, options.signDisplay);
|
|
205
|
+
return formatFromPattern(options, style, numericParts.integer, numericParts.fraction, sign, suffix);
|
|
199
206
|
};
|
|
207
|
+
const formatDisplayNumber = (value, options) => formatDisplayInternal(value, options);
|
|
200
208
|
exports.formatDisplayNumber = formatDisplayNumber;
|
|
201
|
-
const formatDisplayCurrency = (value, options) =>
|
|
202
|
-
return formatDisplayInternal(value, { ...options, style: constants_1.STYLE_CURRENCY }, constants_1.STYLE_CURRENCY);
|
|
203
|
-
};
|
|
209
|
+
const formatDisplayCurrency = (value, options) => formatDisplayInternal(value, options, constants_1.STYLE_CURRENCY);
|
|
204
210
|
exports.formatDisplayCurrency = formatDisplayCurrency;
|
|
205
|
-
const formatDisplayPercent = (value, options) =>
|
|
206
|
-
return formatDisplayInternal(value, { ...options, style: constants_1.STYLE_PERCENT }, constants_1.STYLE_PERCENT);
|
|
207
|
-
};
|
|
211
|
+
const formatDisplayPercent = (value, options) => formatDisplayInternal(value, options, constants_1.STYLE_PERCENT);
|
|
208
212
|
exports.formatDisplayPercent = formatDisplayPercent;
|
|
209
|
-
const formatDisplayCompact = (value, options) =>
|
|
210
|
-
const style = options.style ?? constants_1.STYLE_DECIMAL;
|
|
211
|
-
return formatDisplayInternal(value, { ...options, compact: true, style }, style);
|
|
212
|
-
};
|
|
213
|
+
const formatDisplayCompact = (value, options) => formatDisplayInternal(value, options, undefined, true);
|
|
213
214
|
exports.formatDisplayCompact = formatDisplayCompact;
|
|
@@ -7,6 +7,7 @@ exports.applyGrouping = exports.bigToDecimalString = exports.computeNumericParts
|
|
|
7
7
|
const big_js_1 = __importDefault(require("big.js"));
|
|
8
8
|
const constants_1 = require("../constants");
|
|
9
9
|
const errors_1 = require("../errors");
|
|
10
|
+
const BIG_ZERO = new big_js_1.default(0);
|
|
10
11
|
const ROUNDING_MODE_MAP = {
|
|
11
12
|
roundDown: big_js_1.default.roundDown,
|
|
12
13
|
roundHalfUp: big_js_1.default.roundHalfUp,
|
|
@@ -31,24 +32,27 @@ const assertPositiveInteger = (value, label) => {
|
|
|
31
32
|
}
|
|
32
33
|
return value;
|
|
33
34
|
};
|
|
34
|
-
const
|
|
35
|
+
const isZeroString = (input) => {
|
|
36
|
+
return /^[-+]?0+(?:\.0+)?$/.test(input);
|
|
37
|
+
};
|
|
38
|
+
const normalizeNumeric = (value, clone = false) => {
|
|
35
39
|
if (value instanceof big_js_1.default) {
|
|
36
|
-
|
|
37
|
-
return new big_js_1.default(constants_1.DECIMAL_ZERO);
|
|
38
|
-
}
|
|
39
|
-
return new big_js_1.default(value.toString());
|
|
40
|
+
return clone ? new big_js_1.default(value) : value;
|
|
40
41
|
}
|
|
41
42
|
if (typeof value === 'number') {
|
|
42
43
|
if (!Number.isFinite(value)) {
|
|
43
44
|
throw (0, errors_1.toRangeError)(errors_1.FormatError.NumericValueNonFinite);
|
|
44
45
|
}
|
|
45
|
-
return new big_js_1.default(value);
|
|
46
|
+
return value === 0 ? BIG_ZERO : new big_js_1.default(value);
|
|
46
47
|
}
|
|
47
48
|
if (typeof value === 'string') {
|
|
48
49
|
const trimmed = value.trim();
|
|
49
50
|
if (!trimmed) {
|
|
50
51
|
throw (0, errors_1.toRangeError)(errors_1.FormatError.NumericStringEmpty);
|
|
51
52
|
}
|
|
53
|
+
if (isZeroString(trimmed)) {
|
|
54
|
+
return BIG_ZERO;
|
|
55
|
+
}
|
|
52
56
|
return new big_js_1.default(trimmed);
|
|
53
57
|
}
|
|
54
58
|
throw (0, errors_1.toTypeError)(errors_1.FormatError.UnsupportedNumericInput);
|
|
@@ -79,8 +83,7 @@ const computeNumericParts = (value, options = {}) => {
|
|
|
79
83
|
}
|
|
80
84
|
let bigValue = (0, exports.normalizeNumeric)(value);
|
|
81
85
|
if (precision !== undefined) {
|
|
82
|
-
|
|
83
|
-
bigValue = new big_js_1.default(precise);
|
|
86
|
+
bigValue = bigValue.prec(precision, roundingMode);
|
|
84
87
|
}
|
|
85
88
|
if (maxDecimals !== undefined) {
|
|
86
89
|
bigValue = bigValue.round(maxDecimals, roundingMode);
|
|
@@ -117,7 +120,7 @@ exports.computeNumericParts = computeNumericParts;
|
|
|
117
120
|
const bigToDecimalString = (value) => {
|
|
118
121
|
const coefficient = (value.c ?? [0]);
|
|
119
122
|
const exponent = value.e ?? 0;
|
|
120
|
-
const sign = value.s < 0 ? constants_1.DEFAULT_SIGN_MINUS :
|
|
123
|
+
const sign = value.s < 0 ? constants_1.DEFAULT_SIGN_MINUS : constants_1.DECIMAL_EMPTY;
|
|
121
124
|
if (coefficient.every((digit) => digit === 0)) {
|
|
122
125
|
return constants_1.DECIMAL_ZERO;
|
|
123
126
|
}
|
|
@@ -125,7 +128,7 @@ const bigToDecimalString = (value) => {
|
|
|
125
128
|
const decimalIndex = exponent + 1;
|
|
126
129
|
if (decimalIndex <= 0) {
|
|
127
130
|
const zeros = constants_1.DECIMAL_ZERO.repeat(Math.abs(decimalIndex));
|
|
128
|
-
return `${sign}${constants_1.DECIMAL_ZERO}${constants_1.DECIMAL_DOT}${zeros}${digits}`.replace(/\.$/,
|
|
131
|
+
return `${sign}${constants_1.DECIMAL_ZERO}${constants_1.DECIMAL_DOT}${zeros}${digits}`.replace(/\.$/, constants_1.DECIMAL_EMPTY);
|
|
129
132
|
}
|
|
130
133
|
if (decimalIndex >= digits.length) {
|
|
131
134
|
const zeros = constants_1.DECIMAL_ZERO.repeat(decimalIndex - digits.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,aAAa,EACd,MAAkC,SAAS,CAAA;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAkB,aAAa,CAAC,OAAO,CAAA;AACjE,MAAM,CAAC,MAAM,cAAc,GAAiB,aAAa,CAAC,QAAQ,CAAA;AAClE,MAAM,CAAC,MAAM,aAAa,GAAkB,aAAa,CAAC,OAAO,CAAA;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAM;IAE9B,KAAK,EAAuB,OAAO;IACnC,IAAI,EAAwB,MAAM;IAClC,IAAI,EAAwB,MAAM;CAE1B,CAAA;AAIV,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAA;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAI,aAAa,CAAC,IAAI,CAAA;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAI,aAAa,CAAC,IAAI,CAAA;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAkB,CAAC,GAAG,aAAa,CAAC,CAAC,OAAO,EAAmB,CAAA;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAI,GAAG,CAAA;AAErC,MAAM,CAAC,MAAM,YAAY,GAAS,GAAG,CAAA;AACrC,MAAM,CAAC,MAAM,aAAa,GAAQ,EAAE,CAAA;AACpC,MAAM,CAAC,MAAM,WAAW,GAAU,GAAG,CAAA"}
|
package/dist/esm/display.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
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';
|
|
2
4
|
import { applyGrouping, computeNumericParts, normalizeNumeric } from './internal/numeric';
|
|
3
5
|
import { getNumberFormatPattern } from './internal/intl-cache';
|
|
4
|
-
import { FormatError, toError } from './errors';
|
|
5
|
-
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';
|
|
6
6
|
import { SIGN_DISPLAYS } from './types';
|
|
7
|
-
const
|
|
7
|
+
const defaultCompactThresholds = {
|
|
8
8
|
K: new Big(1000),
|
|
9
9
|
M: new Big(1000000),
|
|
10
10
|
B: new Big(1000000000),
|
|
11
11
|
T: new Big(1000000000000)
|
|
12
12
|
};
|
|
13
|
-
const
|
|
13
|
+
const defaultCompactSuffixes = {
|
|
14
14
|
K: 'K',
|
|
15
15
|
M: 'M',
|
|
16
16
|
B: 'B',
|
|
17
17
|
T: 'T'
|
|
18
18
|
};
|
|
19
|
+
const compactThresholdCache = new WeakMap();
|
|
19
20
|
const resolveSignKind = (isNegative, isZero, signDisplay) => {
|
|
20
21
|
const mode = signDisplay ?? SIGN_DISPLAYS.auto;
|
|
21
22
|
switch (mode) {
|
|
@@ -41,35 +42,48 @@ const resolveCurrencyToken = (template, options) => {
|
|
|
41
42
|
}
|
|
42
43
|
return { value: code, fromCustom: false };
|
|
43
44
|
};
|
|
44
|
-
const
|
|
45
|
-
|
|
45
|
+
const getNormalizedThreshold = (options, unit) => {
|
|
46
|
+
const overrides = options.compactThresholds;
|
|
47
|
+
if (!overrides || overrides[unit] === undefined) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
let cache = compactThresholdCache.get(options);
|
|
51
|
+
if (!cache) {
|
|
52
|
+
cache = new Map();
|
|
53
|
+
compactThresholdCache.set(options, cache);
|
|
54
|
+
}
|
|
55
|
+
let normalized = cache.get(unit);
|
|
56
|
+
if (!normalized) {
|
|
57
|
+
normalized = normalizeNumeric(overrides[unit], true);
|
|
58
|
+
cache.set(unit, normalized);
|
|
59
|
+
}
|
|
60
|
+
return normalized;
|
|
61
|
+
};
|
|
62
|
+
const resolveCompact = (value, options, enabled) => {
|
|
63
|
+
if (!enabled) {
|
|
46
64
|
return { value };
|
|
47
65
|
}
|
|
48
66
|
const abs = value.abs();
|
|
49
|
-
let chosen;
|
|
50
67
|
for (const unit of COMPACT_ORDER) {
|
|
51
|
-
const overrideThreshold = options
|
|
52
|
-
const threshold = overrideThreshold
|
|
53
|
-
? normalizeNumeric(overrideThreshold)
|
|
54
|
-
: DEFAULT_COMPACT_THRESHOLDS[unit];
|
|
68
|
+
const overrideThreshold = getNormalizedThreshold(options, unit);
|
|
69
|
+
const threshold = overrideThreshold ?? getDefaultCompactThreshold(unit);
|
|
55
70
|
if (abs.gte(threshold)) {
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
const suffix = options.compactSuffixes?.[unit] ?? getDefaultCompactSuffix(unit);
|
|
72
|
+
const scaled = threshold.eq(0) ? value : value.div(threshold);
|
|
73
|
+
return { value: scaled, suffix };
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
? normalizeNumeric(options.compactThresholds[chosen])
|
|
65
|
-
: DEFAULT_COMPACT_THRESHOLDS[chosen];
|
|
66
|
-
const suffix = options.compactSuffixes?.[chosen] ?? DEFAULT_COMPACT_SUFFIXES[chosen];
|
|
67
|
-
const scaled = threshold.eq(0) ? value : value.div(threshold);
|
|
68
|
-
return { value: scaled, suffix };
|
|
76
|
+
return { value };
|
|
77
|
+
};
|
|
78
|
+
const getDefaultCompactThreshold = (unit) => {
|
|
79
|
+
return defaultCompactThresholds[unit];
|
|
69
80
|
};
|
|
70
|
-
const
|
|
81
|
+
const getDefaultCompactSuffix = (unit) => {
|
|
82
|
+
return defaultCompactSuffixes[unit];
|
|
83
|
+
};
|
|
84
|
+
const buildNumberFormatOptions = (options, style) => {
|
|
71
85
|
const nfOptions = {
|
|
72
|
-
style
|
|
86
|
+
style,
|
|
73
87
|
useGrouping: options.useGrouping !== false
|
|
74
88
|
};
|
|
75
89
|
if (options.signDisplay && options.signDisplay !== SIGN_DISPLAYS.negative) {
|
|
@@ -81,14 +95,14 @@ const buildNumberFormatOptions = (options) => {
|
|
|
81
95
|
if (options.maxDecimals !== undefined) {
|
|
82
96
|
nfOptions.maximumFractionDigits = options.maxDecimals;
|
|
83
97
|
}
|
|
84
|
-
if (
|
|
98
|
+
if (style === STYLE_CURRENCY && options.currencyCode) {
|
|
85
99
|
nfOptions.currency = options.currencyCode;
|
|
86
100
|
nfOptions.currencyDisplay = options.useSymbol === false ? 'code' : 'symbol';
|
|
87
101
|
}
|
|
88
102
|
return nfOptions;
|
|
89
103
|
};
|
|
90
|
-
const formatFromPattern = (options, integerPart, fractionPart, sign, suffix) => {
|
|
91
|
-
const nfOptions = buildNumberFormatOptions(options);
|
|
104
|
+
const formatFromPattern = (options, style, integerPart, fractionPart, sign, suffix) => {
|
|
105
|
+
const nfOptions = buildNumberFormatOptions(options, style);
|
|
92
106
|
const pattern = getNumberFormatPattern(options.locale, nfOptions);
|
|
93
107
|
const parts = sign === DISPLAY_SIGN_MINUS ? pattern.negative : pattern.positive;
|
|
94
108
|
const useGrouping = options.useGrouping !== false;
|
|
@@ -165,40 +179,27 @@ const formatFromPattern = (options, integerPart, fractionPart, sign, suffix) =>
|
|
|
165
179
|
}
|
|
166
180
|
return result;
|
|
167
181
|
};
|
|
168
|
-
const
|
|
182
|
+
const resolveDisplayStyle = (options, overrideStyle) => {
|
|
169
183
|
if (!options.locale) {
|
|
170
184
|
throw toError(FormatError.MissingLocale);
|
|
171
185
|
}
|
|
186
|
+
const style = overrideStyle ?? options.style ?? STYLE_DECIMAL;
|
|
172
187
|
if (style === STYLE_CURRENCY && !options.currencyCode) {
|
|
173
188
|
throw toError(FormatError.MissingCurrencyCode);
|
|
174
189
|
}
|
|
175
|
-
return
|
|
176
|
-
...options,
|
|
177
|
-
style
|
|
178
|
-
};
|
|
179
|
-
};
|
|
180
|
-
const formatDisplayInternal = (value, options, style) => {
|
|
181
|
-
const resolved = resolveDisplayOptions(options, style);
|
|
182
|
-
const baseValue = style === STYLE_PERCENT
|
|
183
|
-
? normalizeNumeric(value).times(100)
|
|
184
|
-
: normalizeNumeric(value);
|
|
185
|
-
const { value: compactValue, suffix } = resolveCompact(baseValue, resolved);
|
|
186
|
-
const numericParts = computeNumericParts(compactValue, resolved);
|
|
187
|
-
const sign = resolveSignKind(numericParts.isNegative, numericParts.isZero, resolved.signDisplay);
|
|
188
|
-
return formatFromPattern(resolved, numericParts.integer, numericParts.fraction, sign, suffix);
|
|
189
|
-
};
|
|
190
|
-
export const formatDisplayNumber = (value, options) => {
|
|
191
|
-
const style = options.style ?? STYLE_DECIMAL;
|
|
192
|
-
return formatDisplayInternal(value, { ...options, style }, style);
|
|
193
|
-
};
|
|
194
|
-
export const formatDisplayCurrency = (value, options) => {
|
|
195
|
-
return formatDisplayInternal(value, { ...options, style: STYLE_CURRENCY }, STYLE_CURRENCY);
|
|
196
|
-
};
|
|
197
|
-
export const formatDisplayPercent = (value, options) => {
|
|
198
|
-
return formatDisplayInternal(value, { ...options, style: STYLE_PERCENT }, STYLE_PERCENT);
|
|
190
|
+
return style;
|
|
199
191
|
};
|
|
200
|
-
|
|
201
|
-
const style = options
|
|
202
|
-
|
|
192
|
+
const formatDisplayInternal = (value, options, styleOverride, forceCompact) => {
|
|
193
|
+
const style = resolveDisplayStyle(options, styleOverride);
|
|
194
|
+
const base = normalizeNumeric(value);
|
|
195
|
+
const percentAdjusted = style === STYLE_PERCENT ? base.times(100) : base;
|
|
196
|
+
const { value: scaled, suffix } = resolveCompact(percentAdjusted, options, forceCompact ?? options.compact === true);
|
|
197
|
+
const numericParts = computeNumericParts(scaled, options);
|
|
198
|
+
const sign = resolveSignKind(numericParts.isNegative, numericParts.isZero, options.signDisplay);
|
|
199
|
+
return formatFromPattern(options, style, numericParts.integer, numericParts.fraction, sign, suffix);
|
|
203
200
|
};
|
|
201
|
+
export const formatDisplayNumber = (value, options) => formatDisplayInternal(value, options);
|
|
202
|
+
export const formatDisplayCurrency = (value, options) => formatDisplayInternal(value, options, STYLE_CURRENCY);
|
|
203
|
+
export const formatDisplayPercent = (value, options) => formatDisplayInternal(value, options, STYLE_PERCENT);
|
|
204
|
+
export const formatDisplayCompact = (value, options) => formatDisplayInternal(value, options, undefined, true);
|
|
204
205
|
//# sourceMappingURL=display.js.map
|
package/dist/esm/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/display.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAyB,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/display.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Big from 'big.js';
|
|
2
2
|
import { DECIMAL_DOT, DECIMAL_EMPTY, DECIMAL_ZERO, DEFAULT_SIGN_MINUS } from '../constants';
|
|
3
3
|
import { FormatError, toRangeError, toTypeError } from '../errors';
|
|
4
|
+
const BIG_ZERO = new Big(0);
|
|
4
5
|
const ROUNDING_MODE_MAP = {
|
|
5
6
|
roundDown: Big.roundDown,
|
|
6
7
|
roundHalfUp: Big.roundHalfUp,
|
|
@@ -25,24 +26,27 @@ const assertPositiveInteger = (value, label) => {
|
|
|
25
26
|
}
|
|
26
27
|
return value;
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
+
const isZeroString = (input) => {
|
|
30
|
+
return /^[-+]?0+(?:\.0+)?$/.test(input);
|
|
31
|
+
};
|
|
32
|
+
export const normalizeNumeric = (value, clone = false) => {
|
|
29
33
|
if (value instanceof Big) {
|
|
30
|
-
|
|
31
|
-
return new Big(DECIMAL_ZERO);
|
|
32
|
-
}
|
|
33
|
-
return new Big(value.toString());
|
|
34
|
+
return clone ? new Big(value) : value;
|
|
34
35
|
}
|
|
35
36
|
if (typeof value === 'number') {
|
|
36
37
|
if (!Number.isFinite(value)) {
|
|
37
38
|
throw toRangeError(FormatError.NumericValueNonFinite);
|
|
38
39
|
}
|
|
39
|
-
return new Big(value);
|
|
40
|
+
return value === 0 ? BIG_ZERO : new Big(value);
|
|
40
41
|
}
|
|
41
42
|
if (typeof value === 'string') {
|
|
42
43
|
const trimmed = value.trim();
|
|
43
44
|
if (!trimmed) {
|
|
44
45
|
throw toRangeError(FormatError.NumericStringEmpty);
|
|
45
46
|
}
|
|
47
|
+
if (isZeroString(trimmed)) {
|
|
48
|
+
return BIG_ZERO;
|
|
49
|
+
}
|
|
46
50
|
return new Big(trimmed);
|
|
47
51
|
}
|
|
48
52
|
throw toTypeError(FormatError.UnsupportedNumericInput);
|
|
@@ -71,8 +75,7 @@ export const computeNumericParts = (value, options = {}) => {
|
|
|
71
75
|
}
|
|
72
76
|
let bigValue = normalizeNumeric(value);
|
|
73
77
|
if (precision !== undefined) {
|
|
74
|
-
|
|
75
|
-
bigValue = new Big(precise);
|
|
78
|
+
bigValue = bigValue.prec(precision, roundingMode);
|
|
76
79
|
}
|
|
77
80
|
if (maxDecimals !== undefined) {
|
|
78
81
|
bigValue = bigValue.round(maxDecimals, roundingMode);
|
|
@@ -108,7 +111,7 @@ export const computeNumericParts = (value, options = {}) => {
|
|
|
108
111
|
export const bigToDecimalString = (value) => {
|
|
109
112
|
const coefficient = (value.c ?? [0]);
|
|
110
113
|
const exponent = value.e ?? 0;
|
|
111
|
-
const sign = value.s < 0 ? DEFAULT_SIGN_MINUS :
|
|
114
|
+
const sign = value.s < 0 ? DEFAULT_SIGN_MINUS : DECIMAL_EMPTY;
|
|
112
115
|
if (coefficient.every((digit) => digit === 0)) {
|
|
113
116
|
return DECIMAL_ZERO;
|
|
114
117
|
}
|
|
@@ -116,7 +119,7 @@ export const bigToDecimalString = (value) => {
|
|
|
116
119
|
const decimalIndex = exponent + 1;
|
|
117
120
|
if (decimalIndex <= 0) {
|
|
118
121
|
const zeros = DECIMAL_ZERO.repeat(Math.abs(decimalIndex));
|
|
119
|
-
return `${sign}${DECIMAL_ZERO}${DECIMAL_DOT}${zeros}${digits}`.replace(/\.$/,
|
|
122
|
+
return `${sign}${DECIMAL_ZERO}${DECIMAL_DOT}${zeros}${digits}`.replace(/\.$/, DECIMAL_EMPTY);
|
|
120
123
|
}
|
|
121
124
|
if (decimalIndex >= digits.length) {
|
|
122
125
|
const zeros = DECIMAL_ZERO.repeat(decimalIndex - digits.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../src/internal/numeric.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAyB,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../src/internal/numeric.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,aAAa,GAAM;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,aAAa,GAAM;IAE9B,OAAO,EAAqB,SAAS;IACrC,QAAQ,EAAoB,UAAU;IACtC,OAAO,EAAqB,SAAS;CAE7B,CAAA;AAIV,MAAM,CAAC,MAAM,aAAa,GAAM;IAE9B,IAAI,EAAwB,MAAM;IAClC,MAAM,EAAsB,QAAQ;IACpC,UAAU,EAAkB,YAAY;IACxC,KAAK,EAAuB,OAAO;IACnC,QAAQ,EAAoB,UAAU;CAE9B,CAAA;AAIV,MAAM,CAAC,MAAM,aAAa,GAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CompactUnit, type NumberStyle } from './types';
|
|
2
2
|
export declare const STYLE_DECIMAL: NumberStyle;
|
|
3
3
|
export declare const STYLE_CURRENCY: NumberStyle;
|
|
4
4
|
export declare const STYLE_PERCENT: NumberStyle;
|
package/dist/types/display.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DisplayNumberOptions, type NumericLike } from './types';
|
|
2
2
|
export declare const formatDisplayNumber: (value: NumericLike, options: DisplayNumberOptions) => string;
|
|
3
|
-
export declare const formatDisplayCurrency: (value: NumericLike, options: DisplayNumberOptions
|
|
4
|
-
currencyCode: string;
|
|
5
|
-
}) => string;
|
|
3
|
+
export declare const formatDisplayCurrency: (value: NumericLike, options: DisplayNumberOptions) => string;
|
|
6
4
|
export declare const formatDisplayPercent: (value: NumericLike, options: DisplayNumberOptions) => string;
|
|
7
|
-
export declare const formatDisplayCompact: (value: NumericLike, options: DisplayNumberOptions
|
|
8
|
-
compact: true;
|
|
9
|
-
}) => string;
|
|
5
|
+
export declare const formatDisplayCompact: (value: NumericLike, options: DisplayNumberOptions) => string;
|
|
@@ -12,7 +12,7 @@ export interface GroupingConfig {
|
|
|
12
12
|
primary: number;
|
|
13
13
|
secondary?: number;
|
|
14
14
|
}
|
|
15
|
-
export declare const normalizeNumeric: (value: NumericLike) => Big;
|
|
15
|
+
export declare const normalizeNumeric: (value: NumericLike, clone?: boolean) => Big;
|
|
16
16
|
export declare const toFixedNoSci: (value: Big, fractionDigits?: number, roundingMode?: RoundingMode) => string;
|
|
17
17
|
export declare const computeNumericParts: (value: NumericLike, options?: CommonNumberOptions) => NumericParts;
|
|
18
18
|
export declare const bigToDecimalString: (value: Big) => string;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
export type NumericLike =
|
|
1
|
+
import { BigSource } from 'big.js';
|
|
2
|
+
export type NumericLike = BigSource;
|
|
3
3
|
export type RoundingMode = 'roundDown' | 'roundHalfUp' | 'roundHalfEven' | 'roundUp';
|
|
4
4
|
export declare const NUMBER_STYLES: {
|
|
5
5
|
readonly decimal: "decimal";
|
|
@@ -31,7 +31,7 @@ export interface DisplayNumberOptions extends CommonNumberOptions {
|
|
|
31
31
|
useSymbol?: boolean;
|
|
32
32
|
customSymbols?: Record<string, string>;
|
|
33
33
|
compact?: boolean;
|
|
34
|
-
compactThresholds?: Partial<Record<CompactUnit,
|
|
34
|
+
compactThresholds?: Partial<Record<CompactUnit, BigSource>>;
|
|
35
35
|
compactSuffixes?: Partial<Record<CompactUnit, string>>;
|
|
36
36
|
signDisplay?: SignDisplay;
|
|
37
37
|
useGrouping?: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eternl/formats",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Locale-aware display and CSV formatting helpers for numeric data.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "npm run clean && tsc -p tsconfig.build.json && tsc -p tsconfig.cjs.json",
|
|
21
21
|
"clean": "rimraf dist",
|
|
22
|
-
"lint": "eslint .
|
|
22
|
+
"lint": "eslint .",
|
|
23
23
|
"typecheck": "tsc --noEmit",
|
|
24
24
|
"build:eslint-plugin": "tsc -p tools/eslint-plugin-padding/tsconfig.json",
|
|
25
25
|
"test": "vitest run",
|