@eternl/formats 0.5.0 → 0.7.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/constants.js +2 -1
- package/dist/cjs/date.js +3 -4
- package/dist/cjs/display.js +35 -4
- package/dist/cjs/internal/locale.js +9 -0
- package/dist/esm/constants.js +1 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/date.js +4 -5
- package/dist/esm/date.js.map +1 -1
- package/dist/esm/display.js +35 -4
- package/dist/esm/display.js.map +1 -1
- package/dist/esm/internal/locale.js +6 -0
- package/dist/esm/internal/locale.js.map +1 -0
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/date.d.ts +1 -1
- package/dist/types/internal/locale.d.ts +1 -0
- package/dist/types/types.d.ts +3 -2
- package/package.json +2 -2
package/dist/cjs/constants.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DECIMAL_DOT = exports.DECIMAL_EMPTY = exports.DECIMAL_ZERO = exports.DEFAULT_SIGN_PLUS = exports.DEFAULT_SIGN_MINUS = exports.COMPACT_ORDER = exports.DISPLAY_SIGN_NONE = exports.DISPLAY_SIGN_PLUS = exports.DISPLAY_SIGN_MINUS = exports.DISPLAY_SIGNS = exports.STYLE_PERCENT = exports.STYLE_CURRENCY = exports.STYLE_DECIMAL = void 0;
|
|
3
|
+
exports.DECIMAL_DOT = exports.DECIMAL_EMPTY = exports.DECIMAL_ZERO = exports.DEFAULT_SIGN_PLUS = exports.DEFAULT_SIGN_MINUS = exports.COMPACT_ORDER = exports.DISPLAY_SIGN_NONE = exports.DISPLAY_SIGN_PLUS = exports.DISPLAY_SIGN_MINUS = exports.DISPLAY_SIGNS = exports.DEFAULT_LOCALE = exports.STYLE_PERCENT = exports.STYLE_CURRENCY = exports.STYLE_DECIMAL = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
exports.STYLE_DECIMAL = types_1.NUMBER_STYLES.decimal;
|
|
6
6
|
exports.STYLE_CURRENCY = types_1.NUMBER_STYLES.currency;
|
|
7
7
|
exports.STYLE_PERCENT = types_1.NUMBER_STYLES.percent;
|
|
8
|
+
exports.DEFAULT_LOCALE = 'en-US';
|
|
8
9
|
exports.DISPLAY_SIGNS = {
|
|
9
10
|
minus: 'minus',
|
|
10
11
|
plus: 'plus',
|
package/dist/cjs/date.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.formatCsvDate = exports.formatDisplayDate = void 0;
|
|
4
4
|
const errors_1 = require("./errors");
|
|
5
5
|
const intl_cache_1 = require("./internal/intl-cache");
|
|
6
|
+
const locale_1 = require("./internal/locale");
|
|
6
7
|
const toDate = (value) => {
|
|
7
8
|
if (value instanceof Date) {
|
|
8
9
|
const timestamp = value.getTime();
|
|
@@ -35,11 +36,9 @@ const toDate = (value) => {
|
|
|
35
36
|
throw (0, errors_1.toTypeError)(errors_1.FormatError.UnsupportedDateInput);
|
|
36
37
|
};
|
|
37
38
|
const formatDisplayDate = (date, locale, options) => {
|
|
38
|
-
|
|
39
|
-
throw (0, errors_1.toError)(errors_1.FormatError.MissingLocale);
|
|
40
|
-
}
|
|
39
|
+
const resolvedLocale = (0, locale_1.resolveLocale)(locale);
|
|
41
40
|
const parsed = toDate(date);
|
|
42
|
-
const formatter = (0, intl_cache_1.getDateFormat)(
|
|
41
|
+
const formatter = (0, intl_cache_1.getDateFormat)(resolvedLocale, options);
|
|
43
42
|
return formatter.format(parsed);
|
|
44
43
|
};
|
|
45
44
|
exports.formatDisplayDate = formatDisplayDate;
|
package/dist/cjs/display.js
CHANGED
|
@@ -8,6 +8,7 @@ const big_js_1 = __importDefault(require("big.js"));
|
|
|
8
8
|
const constants_1 = require("./constants");
|
|
9
9
|
const errors_1 = require("./errors");
|
|
10
10
|
const numeric_1 = require("./internal/numeric");
|
|
11
|
+
const locale_1 = require("./internal/locale");
|
|
11
12
|
const intl_cache_1 = require("./internal/intl-cache");
|
|
12
13
|
const types_1 = require("./types");
|
|
13
14
|
const defaultCompactThresholds = {
|
|
@@ -23,6 +24,35 @@ const defaultCompactSuffixes = {
|
|
|
23
24
|
T: 'T'
|
|
24
25
|
};
|
|
25
26
|
const compactThresholdCache = new WeakMap();
|
|
27
|
+
const SUBSCRIPT_DIGITS = [
|
|
28
|
+
'₀',
|
|
29
|
+
'₁',
|
|
30
|
+
'₂',
|
|
31
|
+
'₃',
|
|
32
|
+
'₄',
|
|
33
|
+
'₅',
|
|
34
|
+
'₆',
|
|
35
|
+
'₇',
|
|
36
|
+
'₈',
|
|
37
|
+
'₉'
|
|
38
|
+
];
|
|
39
|
+
const toSubscriptNumber = (value) => value
|
|
40
|
+
.toString()
|
|
41
|
+
.split('')
|
|
42
|
+
.map((digit) => SUBSCRIPT_DIGITS[digit.charCodeAt(0) - 48])
|
|
43
|
+
.join('');
|
|
44
|
+
const compactFractionLeadingZeros = (fraction) => {
|
|
45
|
+
const match = /^(0{2,})(.+)$/.exec(fraction);
|
|
46
|
+
if (!match) {
|
|
47
|
+
return fraction;
|
|
48
|
+
}
|
|
49
|
+
const [, zeros, remainder] = match;
|
|
50
|
+
if (!remainder || /^0+$/.test(remainder)) {
|
|
51
|
+
return fraction;
|
|
52
|
+
}
|
|
53
|
+
const annotation = toSubscriptNumber(zeros.length - 1);
|
|
54
|
+
return `${zeros[0]}${annotation}${remainder}`;
|
|
55
|
+
};
|
|
26
56
|
const resolveSignKind = (isNegative, isZero, signDisplay) => {
|
|
27
57
|
const mode = signDisplay ?? types_1.SIGN_DISPLAYS.auto;
|
|
28
58
|
switch (mode) {
|
|
@@ -109,7 +139,8 @@ const buildNumberFormatOptions = (options, style) => {
|
|
|
109
139
|
};
|
|
110
140
|
const formatFromPattern = (options, style, integerPart, fractionPart, sign, suffix) => {
|
|
111
141
|
const nfOptions = buildNumberFormatOptions(options, style);
|
|
112
|
-
const
|
|
142
|
+
const locale = (0, locale_1.resolveLocale)(options.locale);
|
|
143
|
+
const pattern = (0, intl_cache_1.getNumberFormatPattern)(locale, nfOptions);
|
|
113
144
|
const parts = sign === constants_1.DISPLAY_SIGN_MINUS ? pattern.negative : pattern.positive;
|
|
114
145
|
const useGrouping = options.useGrouping !== false;
|
|
115
146
|
const groupedInteger = (0, numeric_1.applyGrouping)(integerPart, {
|
|
@@ -186,9 +217,6 @@ const formatFromPattern = (options, style, integerPart, fractionPart, sign, suff
|
|
|
186
217
|
return result;
|
|
187
218
|
};
|
|
188
219
|
const resolveDisplayStyle = (options, overrideStyle) => {
|
|
189
|
-
if (!options.locale) {
|
|
190
|
-
throw (0, errors_1.toError)(errors_1.FormatError.MissingLocale);
|
|
191
|
-
}
|
|
192
220
|
const style = overrideStyle ?? options.style ?? constants_1.STYLE_DECIMAL;
|
|
193
221
|
if (style === constants_1.STYLE_CURRENCY && !options.currencyCode) {
|
|
194
222
|
throw (0, errors_1.toError)(errors_1.FormatError.MissingCurrencyCode);
|
|
@@ -204,6 +232,9 @@ const formatDisplayInternal = (value, options, styleOverride, forceCompact) => {
|
|
|
204
232
|
const sign = resolveSignKind(numericParts.isNegative, numericParts.isZero, options.signDisplay);
|
|
205
233
|
let integerPart = numericParts.integer;
|
|
206
234
|
let fractionPart = numericParts.fraction;
|
|
235
|
+
if (options.compactDecimalZeros && !options.isHidden && integerPart === '0' && fractionPart.length > 0) {
|
|
236
|
+
fractionPart = compactFractionLeadingZeros(fractionPart);
|
|
237
|
+
}
|
|
207
238
|
if (options.isHidden) {
|
|
208
239
|
const maskChar = options.hiddenCharacter && options.hiddenCharacter.length > 0
|
|
209
240
|
? options.hiddenCharacter[0]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveLocale = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const resolveLocale = (value) => {
|
|
6
|
+
const candidate = value?.trim();
|
|
7
|
+
return candidate && candidate.length > 0 ? candidate : constants_1.DEFAULT_LOCALE;
|
|
8
|
+
};
|
|
9
|
+
exports.resolveLocale = resolveLocale;
|
package/dist/esm/constants.js
CHANGED
|
@@ -2,6 +2,7 @@ import { COMPACT_UNITS, NUMBER_STYLES } from './types';
|
|
|
2
2
|
export const STYLE_DECIMAL = NUMBER_STYLES.decimal;
|
|
3
3
|
export const STYLE_CURRENCY = NUMBER_STYLES.currency;
|
|
4
4
|
export const STYLE_PERCENT = NUMBER_STYLES.percent;
|
|
5
|
+
export const DEFAULT_LOCALE = 'en-US';
|
|
5
6
|
export const DISPLAY_SIGNS = {
|
|
6
7
|
minus: 'minus',
|
|
7
8
|
plus: 'plus',
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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,cAAc,GAAK,OAAO,CAAA;AAEvC,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/date.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { FormatError,
|
|
1
|
+
import { FormatError, toRangeError, toTypeError } from './errors';
|
|
2
2
|
import { getDateFormat } from './internal/intl-cache';
|
|
3
|
+
import { resolveLocale } from './internal/locale';
|
|
3
4
|
const toDate = (value) => {
|
|
4
5
|
if (value instanceof Date) {
|
|
5
6
|
const timestamp = value.getTime();
|
|
@@ -32,11 +33,9 @@ const toDate = (value) => {
|
|
|
32
33
|
throw toTypeError(FormatError.UnsupportedDateInput);
|
|
33
34
|
};
|
|
34
35
|
export const formatDisplayDate = (date, locale, options) => {
|
|
35
|
-
|
|
36
|
-
throw toError(FormatError.MissingLocale);
|
|
37
|
-
}
|
|
36
|
+
const resolvedLocale = resolveLocale(locale);
|
|
38
37
|
const parsed = toDate(date);
|
|
39
|
-
const formatter = getDateFormat(
|
|
38
|
+
const formatter = getDateFormat(resolvedLocale, options);
|
|
40
39
|
return formatter.format(parsed);
|
|
41
40
|
};
|
|
42
41
|
export const formatCsvDate = (date) => {
|
package/dist/esm/date.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/date.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/date.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/display.js
CHANGED
|
@@ -2,6 +2,7 @@ import Big from 'big.js';
|
|
|
2
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
3
|
import { FormatError, toError } from './errors';
|
|
4
4
|
import { applyGrouping, computeNumericParts, normalizeNumeric } from './internal/numeric';
|
|
5
|
+
import { resolveLocale } from './internal/locale';
|
|
5
6
|
import { getNumberFormatPattern } from './internal/intl-cache';
|
|
6
7
|
import { SIGN_DISPLAYS } from './types';
|
|
7
8
|
const defaultCompactThresholds = {
|
|
@@ -17,6 +18,35 @@ const defaultCompactSuffixes = {
|
|
|
17
18
|
T: 'T'
|
|
18
19
|
};
|
|
19
20
|
const compactThresholdCache = new WeakMap();
|
|
21
|
+
const SUBSCRIPT_DIGITS = [
|
|
22
|
+
'₀',
|
|
23
|
+
'₁',
|
|
24
|
+
'₂',
|
|
25
|
+
'₃',
|
|
26
|
+
'₄',
|
|
27
|
+
'₅',
|
|
28
|
+
'₆',
|
|
29
|
+
'₇',
|
|
30
|
+
'₈',
|
|
31
|
+
'₉'
|
|
32
|
+
];
|
|
33
|
+
const toSubscriptNumber = (value) => value
|
|
34
|
+
.toString()
|
|
35
|
+
.split('')
|
|
36
|
+
.map((digit) => SUBSCRIPT_DIGITS[digit.charCodeAt(0) - 48])
|
|
37
|
+
.join('');
|
|
38
|
+
const compactFractionLeadingZeros = (fraction) => {
|
|
39
|
+
const match = /^(0{2,})(.+)$/.exec(fraction);
|
|
40
|
+
if (!match) {
|
|
41
|
+
return fraction;
|
|
42
|
+
}
|
|
43
|
+
const [, zeros, remainder] = match;
|
|
44
|
+
if (!remainder || /^0+$/.test(remainder)) {
|
|
45
|
+
return fraction;
|
|
46
|
+
}
|
|
47
|
+
const annotation = toSubscriptNumber(zeros.length - 1);
|
|
48
|
+
return `${zeros[0]}${annotation}${remainder}`;
|
|
49
|
+
};
|
|
20
50
|
const resolveSignKind = (isNegative, isZero, signDisplay) => {
|
|
21
51
|
const mode = signDisplay ?? SIGN_DISPLAYS.auto;
|
|
22
52
|
switch (mode) {
|
|
@@ -103,7 +133,8 @@ const buildNumberFormatOptions = (options, style) => {
|
|
|
103
133
|
};
|
|
104
134
|
const formatFromPattern = (options, style, integerPart, fractionPart, sign, suffix) => {
|
|
105
135
|
const nfOptions = buildNumberFormatOptions(options, style);
|
|
106
|
-
const
|
|
136
|
+
const locale = resolveLocale(options.locale);
|
|
137
|
+
const pattern = getNumberFormatPattern(locale, nfOptions);
|
|
107
138
|
const parts = sign === DISPLAY_SIGN_MINUS ? pattern.negative : pattern.positive;
|
|
108
139
|
const useGrouping = options.useGrouping !== false;
|
|
109
140
|
const groupedInteger = applyGrouping(integerPart, {
|
|
@@ -180,9 +211,6 @@ const formatFromPattern = (options, style, integerPart, fractionPart, sign, suff
|
|
|
180
211
|
return result;
|
|
181
212
|
};
|
|
182
213
|
const resolveDisplayStyle = (options, overrideStyle) => {
|
|
183
|
-
if (!options.locale) {
|
|
184
|
-
throw toError(FormatError.MissingLocale);
|
|
185
|
-
}
|
|
186
214
|
const style = overrideStyle ?? options.style ?? STYLE_DECIMAL;
|
|
187
215
|
if (style === STYLE_CURRENCY && !options.currencyCode) {
|
|
188
216
|
throw toError(FormatError.MissingCurrencyCode);
|
|
@@ -198,6 +226,9 @@ const formatDisplayInternal = (value, options, styleOverride, forceCompact) => {
|
|
|
198
226
|
const sign = resolveSignKind(numericParts.isNegative, numericParts.isZero, options.signDisplay);
|
|
199
227
|
let integerPart = numericParts.integer;
|
|
200
228
|
let fractionPart = numericParts.fraction;
|
|
229
|
+
if (options.compactDecimalZeros && !options.isHidden && integerPart === '0' && fractionPart.length > 0) {
|
|
230
|
+
fractionPart = compactFractionLeadingZeros(fractionPart);
|
|
231
|
+
}
|
|
201
232
|
if (options.isHidden) {
|
|
202
233
|
const maskChar = options.hiddenCharacter && options.hiddenCharacter.length > 0
|
|
203
234
|
? options.hiddenCharacter[0]
|
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;AAC3C,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACd,MAAkC,aAAa,CAAA;AAChD,OAAO,EACL,WAAW,EACX,OAAO,EACR,MAAkC,UAAU,CAAA;AAC7C,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EACjB,MAAkC,oBAAoB,CAAA;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/display.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/internal/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAU,cAAc,CAAA;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAM,CAAC,KAAc,EAAU,EAAE;IAEzD,MAAM,SAAS,GAAe,KAAK,EAAE,IAAI,EAAE,CAAA;IAE3C,OAAO,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAA;AACvE,CAAC,CAAA"}
|
|
@@ -2,6 +2,7 @@ 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;
|
|
5
|
+
export declare const DEFAULT_LOCALE = "en-US";
|
|
5
6
|
export declare const DISPLAY_SIGNS: {
|
|
6
7
|
readonly minus: "minus";
|
|
7
8
|
readonly plus: "plus";
|
package/dist/types/date.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const formatDisplayDate: (date: Date | number | string, locale
|
|
1
|
+
export declare const formatDisplayDate: (date: Date | number | string, locale?: string, options?: Intl.DateTimeFormatOptions) => string;
|
|
2
2
|
export declare const formatCsvDate: (date: Date | number | string) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const resolveLocale: (value?: string) => string;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface CommonNumberOptions {
|
|
|
25
25
|
trimTrailingZeros?: boolean;
|
|
26
26
|
}
|
|
27
27
|
export interface DisplayNumberOptions extends CommonNumberOptions {
|
|
28
|
-
locale
|
|
28
|
+
locale?: string;
|
|
29
29
|
style?: NumberStyle;
|
|
30
30
|
currencyCode?: string;
|
|
31
31
|
useSymbol?: boolean;
|
|
@@ -37,6 +37,7 @@ export interface DisplayNumberOptions extends CommonNumberOptions {
|
|
|
37
37
|
useGrouping?: boolean;
|
|
38
38
|
isHidden?: boolean;
|
|
39
39
|
hiddenCharacter?: string;
|
|
40
|
+
compactDecimalZeros?: boolean;
|
|
40
41
|
}
|
|
41
42
|
export interface CsvNumberOptions extends CommonNumberOptions {
|
|
42
43
|
}
|
|
@@ -47,6 +48,6 @@ export interface CsvColumnSpec<T = any> {
|
|
|
47
48
|
formatter?: (value: unknown) => string;
|
|
48
49
|
}
|
|
49
50
|
export interface FormatDisplayParams {
|
|
50
|
-
locale
|
|
51
|
+
locale?: string;
|
|
51
52
|
options: Intl.NumberFormatOptions;
|
|
52
53
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eternl/formats",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.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",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"license": "MIT",
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/big.js": "6.2.2",
|
|
41
|
-
"@types/node": "22.18.
|
|
41
|
+
"@types/node": "22.18.9",
|
|
42
42
|
"@typescript-eslint/parser": "8.46.0",
|
|
43
43
|
"@typescript-eslint/utils": "8.46.0",
|
|
44
44
|
"eslint": "9.37.0",
|