@adriangalilea/utils 2.25.0 → 2.26.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/README.md +16 -6
- package/dist/universal/currency/classify.d.ts +7 -0
- package/dist/universal/currency/classify.d.ts.map +1 -0
- package/dist/universal/currency/classify.js +147 -0
- package/dist/universal/currency/classify.js.map +1 -0
- package/dist/universal/currency/decimals.d.ts +2 -0
- package/dist/universal/currency/decimals.d.ts.map +1 -0
- package/dist/universal/currency/decimals.js +93 -0
- package/dist/universal/currency/decimals.js.map +1 -0
- package/dist/universal/currency/index.d.ts +12 -73
- package/dist/universal/currency/index.d.ts.map +1 -1
- package/dist/universal/currency/index.js +27 -360
- package/dist/universal/currency/index.js.map +1 -1
- package/dist/universal/currency/money.d.ts +12 -0
- package/dist/universal/currency/money.d.ts.map +1 -0
- package/dist/universal/currency/money.js +40 -0
- package/dist/universal/currency/money.js.map +1 -0
- package/dist/universal/currency/percent.d.ts +7 -0
- package/dist/universal/currency/percent.d.ts.map +1 -0
- package/dist/universal/currency/percent.js +32 -0
- package/dist/universal/currency/percent.js.map +1 -0
- package/dist/universal/currency/symbols.d.ts +32 -0
- package/dist/universal/currency/symbols.d.ts.map +1 -0
- package/dist/universal/currency/symbols.js +36 -0
- package/dist/universal/currency/symbols.js.map +1 -0
- package/dist/universal/currency/usd.d.ts +23 -0
- package/dist/universal/currency/usd.d.ts.map +1 -0
- package/dist/universal/currency/usd.js +54 -0
- package/dist/universal/currency/usd.js.map +1 -0
- package/dist/universal/format.d.ts +24 -8
- package/dist/universal/format.d.ts.map +1 -1
- package/dist/universal/format.js +37 -4
- package/dist/universal/format.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// USD formatting — deliberately dataset-free. Printing dollars needs no
|
|
2
|
+
// symbol lookup and no crypto classification, so this module must never
|
|
3
|
+
// import ./classify.ts: it is the module a client bundle pulls to render a
|
|
4
|
+
// price, and the 133KB ticker dataset has no business riding along.
|
|
5
|
+
// getOptimalDecimals (./decimals.ts) delegates its USD/stables case to
|
|
6
|
+
// usdDecimals, so the policy has exactly one home.
|
|
7
|
+
import { NO_DATA, sigDecimals } from "../format.js";
|
|
8
|
+
/** The USD decimals policy: 2 for dollars, more as the value shrinks, significant-digit floor below a cent. */
|
|
9
|
+
export function usdDecimals(value) {
|
|
10
|
+
if (value === 0)
|
|
11
|
+
return 2;
|
|
12
|
+
const absValue = Math.abs(value);
|
|
13
|
+
if (absValue < 0.01)
|
|
14
|
+
return sigDecimals(absValue);
|
|
15
|
+
if (absValue < 0.1)
|
|
16
|
+
return 4;
|
|
17
|
+
if (absValue < 1)
|
|
18
|
+
return 3;
|
|
19
|
+
return 2;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The USD decimals POLICY as Intl.NumberFormatOptions, for consumers that
|
|
23
|
+
* format internally — animated numbers (NumberFlow), chart axes, table cell
|
|
24
|
+
* renderers. One policy serves strings and widgets alike; `usd()` below is
|
|
25
|
+
* just this policy applied. Value-dependent: recompute when the value moves.
|
|
26
|
+
*/
|
|
27
|
+
export function usdIntlOptions(value, opts = {}) {
|
|
28
|
+
if (opts.compact) {
|
|
29
|
+
return {
|
|
30
|
+
style: "currency",
|
|
31
|
+
currency: "USD",
|
|
32
|
+
notation: "compact",
|
|
33
|
+
maximumFractionDigits: 1,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const decimals = opts.decimals ?? usdDecimals(value);
|
|
37
|
+
return {
|
|
38
|
+
style: "currency",
|
|
39
|
+
currency: "USD",
|
|
40
|
+
minimumFractionDigits: decimals,
|
|
41
|
+
maximumFractionDigits: decimals,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* $1,234.56 with optimal decimals (grouped, en-pinned — SSR-hydration-safe);
|
|
46
|
+
* sub-cent values keep 2 significant digits ($0.00000043) instead of rounding
|
|
47
|
+
* to $0.000000. `{compact: true}` → $60.9M; `{decimals}` overrides the policy.
|
|
48
|
+
*/
|
|
49
|
+
export function usd(value, opts = {}) {
|
|
50
|
+
if (value == null)
|
|
51
|
+
return NO_DATA;
|
|
52
|
+
return new Intl.NumberFormat("en-US", usdIntlOptions(value, opts)).format(value);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=usd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usd.js","sourceRoot":"","sources":["../../../src/universal/currency/usd.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wEAAwE;AACxE,2EAA2E;AAC3E,oEAAoE;AACpE,uEAAuE;AACvE,mDAAmD;AAEnD,OAAO,EAAE,OAAO,EAAkB,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpE,+GAA+G;AAC/G,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,QAAQ,GAAG,IAAI;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAG,GAAG;QAAE,OAAO,CAAC,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC;AACV,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC7B,KAAa,EACb,OAAmB,EAAE;IAErB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO;YACN,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,SAAS;YACnB,qBAAqB,EAAE,CAAC;SACxB,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO;QACN,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,KAAK;QACf,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;KAC/B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAE,OAAmB,EAAE;IAC1D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CACxE,KAAK,CACL,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pure number formatting. No currency coupling — money formatting (usd, btc,
|
|
3
3
|
* money(value, code), …) lives in ./currency, which owns the symbol/decimals
|
|
4
|
-
* knowledge
|
|
5
|
-
*
|
|
4
|
+
* knowledge; its module split keeps the crypto-symbol dataset out of bundles
|
|
5
|
+
* that only print money.
|
|
6
|
+
*
|
|
7
|
+
* Every formatter accepts `null | undefined` and renders "—" (em dash) — the
|
|
8
|
+
* universal "no data" glyph. Callers pass DB fields and API values straight
|
|
9
|
+
* through instead of each app re-wrapping every formatter for null.
|
|
6
10
|
*
|
|
7
11
|
* Every Intl call pins "en" — never the runtime default locale. In an SSR app
|
|
8
12
|
* the server formats in en-US and the browser in the user's locale; a
|
|
@@ -12,8 +16,11 @@
|
|
|
12
16
|
* Named exports only (no namespace object): a namespace keeps every function
|
|
13
17
|
* — and its imports — alive in the bundle; named imports tree-shake.
|
|
14
18
|
*/
|
|
19
|
+
export type Numberish = number | null | undefined;
|
|
20
|
+
/** The "no data" glyph every formatter renders for null/undefined. */
|
|
21
|
+
export declare const NO_DATA = "\u2014";
|
|
15
22
|
/** Compact notation: 1.2K, 3.4M, … (Intl, en). */
|
|
16
|
-
export declare function compact(value:
|
|
23
|
+
export declare function compact(value: Numberish): string;
|
|
17
24
|
export interface PercentageOptions {
|
|
18
25
|
/** Fixed decimal places. Omit for smart decimals (2 below 0.1, 0 at ≥100, else 1). */
|
|
19
26
|
decimals?: number;
|
|
@@ -21,18 +28,27 @@ export interface PercentageOptions {
|
|
|
21
28
|
sign?: boolean;
|
|
22
29
|
}
|
|
23
30
|
/** Percentage: smart decimals by default, or fixed via opts; optional +sign. */
|
|
24
|
-
export declare function percentage(value:
|
|
25
|
-
/**
|
|
26
|
-
export declare function
|
|
31
|
+
export declare function percentage(value: Numberish, opts?: PercentageOptions): string;
|
|
32
|
+
/** Plain fixed-decimal number, no grouping: 1.23 (lag, ratios, small counts). */
|
|
33
|
+
export declare function fixed(value: Numberish, decimals?: number): string;
|
|
34
|
+
/** Thousands separators: 1,234,567.89 (optionally fixed decimals). bigint-safe. */
|
|
35
|
+
export declare function withCommas(value: number | bigint | null | undefined, decimals?: number): string;
|
|
27
36
|
/**
|
|
28
37
|
* Bytes → "12.7 TB", "2.0 TB", "850.0 GB", "500.0 MB". Decimal SI prefixes —
|
|
29
38
|
* how drive manufacturers and SMART tools quote capacities (`df -h` too).
|
|
30
39
|
* Below 1 MB the raw byte count is the honest answer.
|
|
31
40
|
*/
|
|
32
|
-
export declare function bytes(value:
|
|
41
|
+
export declare function bytes(value: Numberish): string;
|
|
33
42
|
/**
|
|
34
43
|
* Bits/sec → "10 Gbps", "2.5 Gbps", "100 Mbps". Network speeds use decimal SI
|
|
35
44
|
* (a "1 Gbps" link moves 10^9 bits/sec, not 2^30).
|
|
36
45
|
*/
|
|
37
|
-
export declare function bitsPerSec(value:
|
|
46
|
+
export declare function bitsPerSec(value: Numberish): string;
|
|
47
|
+
/**
|
|
48
|
+
* Decimals that keep 2 significant digits of a sub-cent value, capped at 10.
|
|
49
|
+
* The fix for fixed-decimal erasure: a micro-priced asset (~$4.3e-7) under a
|
|
50
|
+
* fixed 6-decimal floor renders "$0.000000" — the price vanishes.
|
|
51
|
+
* 4.3e-7 → 8 decimals → "$0.00000043".
|
|
52
|
+
*/
|
|
53
|
+
export declare function sigDecimals(absValue: number): number;
|
|
38
54
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAElD,sEAAsE;AACtE,eAAO,MAAM,OAAO,WAAM,CAAC;AAE3B,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAMhD;AAED,MAAM,WAAW,iBAAiB;IACjC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,iBAAsB,GAC1B,MAAM,CAaR;AAED,iFAAiF;AACjF,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,SAAI,GAAG,MAAM,CAG5D;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CACzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAO9C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAKnD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
package/dist/universal/format.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pure number formatting. No currency coupling — money formatting (usd, btc,
|
|
3
3
|
* money(value, code), …) lives in ./currency, which owns the symbol/decimals
|
|
4
|
-
* knowledge
|
|
5
|
-
*
|
|
4
|
+
* knowledge; its module split keeps the crypto-symbol dataset out of bundles
|
|
5
|
+
* that only print money.
|
|
6
|
+
*
|
|
7
|
+
* Every formatter accepts `null | undefined` and renders "—" (em dash) — the
|
|
8
|
+
* universal "no data" glyph. Callers pass DB fields and API values straight
|
|
9
|
+
* through instead of each app re-wrapping every formatter for null.
|
|
6
10
|
*
|
|
7
11
|
* Every Intl call pins "en" — never the runtime default locale. In an SSR app
|
|
8
12
|
* the server formats in en-US and the browser in the user's locale; a
|
|
@@ -12,8 +16,12 @@
|
|
|
12
16
|
* Named exports only (no namespace object): a namespace keeps every function
|
|
13
17
|
* — and its imports — alive in the bundle; named imports tree-shake.
|
|
14
18
|
*/
|
|
19
|
+
/** The "no data" glyph every formatter renders for null/undefined. */
|
|
20
|
+
export const NO_DATA = "—";
|
|
15
21
|
/** Compact notation: 1.2K, 3.4M, … (Intl, en). */
|
|
16
22
|
export function compact(value) {
|
|
23
|
+
if (value == null)
|
|
24
|
+
return NO_DATA;
|
|
17
25
|
return new Intl.NumberFormat("en", {
|
|
18
26
|
notation: "compact",
|
|
19
27
|
maximumFractionDigits: 1,
|
|
@@ -21,6 +29,8 @@ export function compact(value) {
|
|
|
21
29
|
}
|
|
22
30
|
/** Percentage: smart decimals by default, or fixed via opts; optional +sign. */
|
|
23
31
|
export function percentage(value, opts = {}) {
|
|
32
|
+
if (value == null)
|
|
33
|
+
return NO_DATA;
|
|
24
34
|
let decimals = opts.decimals;
|
|
25
35
|
if (decimals === undefined) {
|
|
26
36
|
decimals = 1;
|
|
@@ -34,9 +44,19 @@ export function percentage(value, opts = {}) {
|
|
|
34
44
|
const sign = opts.sign && value > 0 ? "+" : "";
|
|
35
45
|
return `${sign}${value.toFixed(decimals)}%`;
|
|
36
46
|
}
|
|
37
|
-
/**
|
|
47
|
+
/** Plain fixed-decimal number, no grouping: 1.23 (lag, ratios, small counts). */
|
|
48
|
+
export function fixed(value, decimals = 2) {
|
|
49
|
+
if (value == null)
|
|
50
|
+
return NO_DATA;
|
|
51
|
+
return value.toFixed(decimals);
|
|
52
|
+
}
|
|
53
|
+
/** Thousands separators: 1,234,567.89 (optionally fixed decimals). bigint-safe. */
|
|
38
54
|
export function withCommas(value, decimals) {
|
|
39
|
-
|
|
55
|
+
if (value == null)
|
|
56
|
+
return NO_DATA;
|
|
57
|
+
const fixed = decimals !== undefined && typeof value === "number"
|
|
58
|
+
? value.toFixed(decimals)
|
|
59
|
+
: value.toString();
|
|
40
60
|
const parts = fixed.split(".");
|
|
41
61
|
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
42
62
|
return parts.join(".");
|
|
@@ -47,6 +67,8 @@ export function withCommas(value, decimals) {
|
|
|
47
67
|
* Below 1 MB the raw byte count is the honest answer.
|
|
48
68
|
*/
|
|
49
69
|
export function bytes(value) {
|
|
70
|
+
if (value == null)
|
|
71
|
+
return NO_DATA;
|
|
50
72
|
if (value < 1e6)
|
|
51
73
|
return `${value} B`;
|
|
52
74
|
if (value < 1e9)
|
|
@@ -62,10 +84,21 @@ export function bytes(value) {
|
|
|
62
84
|
* (a "1 Gbps" link moves 10^9 bits/sec, not 2^30).
|
|
63
85
|
*/
|
|
64
86
|
export function bitsPerSec(value) {
|
|
87
|
+
if (value == null)
|
|
88
|
+
return NO_DATA;
|
|
65
89
|
if (value < 1e6)
|
|
66
90
|
return `${value} bps`;
|
|
67
91
|
if (value < 1e9)
|
|
68
92
|
return `${(value / 1e6).toFixed(0)} Mbps`;
|
|
69
93
|
return `${(value / 1e9).toFixed(1).replace(/\.0$/, "")} Gbps`;
|
|
70
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Decimals that keep 2 significant digits of a sub-cent value, capped at 10.
|
|
97
|
+
* The fix for fixed-decimal erasure: a micro-priced asset (~$4.3e-7) under a
|
|
98
|
+
* fixed 6-decimal floor renders "$0.000000" — the price vanishes.
|
|
99
|
+
* 4.3e-7 → 8 decimals → "$0.00000043".
|
|
100
|
+
*/
|
|
101
|
+
export function sigDecimals(absValue) {
|
|
102
|
+
return Math.min(10, 1 - Math.floor(Math.log10(absValue)));
|
|
103
|
+
}
|
|
71
104
|
//# sourceMappingURL=format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED