@adriangalilea/utils 2.25.1 → 2.27.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 +17 -12
- package/dist/bot/text.d.ts +23 -0
- package/dist/bot/text.d.ts.map +1 -0
- package/dist/bot/text.js +40 -0
- package/dist/bot/text.js.map +1 -0
- package/dist/bot/update-identity.d.ts +19 -0
- package/dist/bot/update-identity.d.ts.map +1 -0
- package/dist/bot/update-identity.js +92 -0
- package/dist/bot/update-identity.js.map +1 -0
- package/dist/bot/worker.d.ts +62 -0
- package/dist/bot/worker.d.ts.map +1 -1
- package/dist/bot/worker.js +181 -0
- package/dist/bot/worker.js.map +1 -1
- 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 -57
- package/dist/universal/currency/index.d.ts.map +1 -1
- package/dist/universal/currency/index.js +27 -317
- 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 +17 -29
- package/dist/universal/format.d.ts.map +1 -1
- package/dist/universal/format.js +28 -54
- package/dist/universal/format.js.map +1 -1
- package/package.json +11 -1
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Ticker classification + normalization. This is the ONLY module that
|
|
2
|
+
// imports the crypto-symbol dataset (133KB, 13k tickers) — keeping the
|
|
3
|
+
// import here is what lets a bundler drop the dataset for consumers that
|
|
4
|
+
// only format money (./usd.ts, ./money.ts via the majors' switch cases).
|
|
5
|
+
import { isCryptoSymbol } from "./crypto-symbols.js";
|
|
6
|
+
// Alternative ticker mappings (some exchanges use different symbols)
|
|
7
|
+
const cryptoAlternatives = {
|
|
8
|
+
XBT: "BTC", // BitMEX and some others use XBT for Bitcoin
|
|
9
|
+
IOTA: "MIOTA", // IOTA vs MIOTA
|
|
10
|
+
STR: "XLM", // Stellar old ticker
|
|
11
|
+
BCHABC: "BCH", // Bitcoin Cash ABC
|
|
12
|
+
BCHSV: "BSV", // Bitcoin SV
|
|
13
|
+
DRK: "DASH", // Darkcoin old name
|
|
14
|
+
XRB: "NANO", // RaiBlocks old name
|
|
15
|
+
ANT: "ANT", // Could be Aragon
|
|
16
|
+
BCC: "BCH", // Bittrex used BCC for Bitcoin Cash
|
|
17
|
+
MIOTA: "IOTA", // Some use MIOTA
|
|
18
|
+
YOYOW: "YOYOW", // Various formats
|
|
19
|
+
IOTX: "IOTX", // IoTeX
|
|
20
|
+
QSH: "QASH", // QASH variations
|
|
21
|
+
YOYO: "YOYOW", // YOYOW variations
|
|
22
|
+
ETHOS: "BQX", // Ethos old ticker
|
|
23
|
+
REP: "REP", // Augur variations
|
|
24
|
+
REPV2: "REP", // Augur v2
|
|
25
|
+
USDt: "USDT", // Case variations
|
|
26
|
+
"USDT.e": "USDT", // Avalanche USDT
|
|
27
|
+
"USDC.e": "USDC", // Avalanche USDC
|
|
28
|
+
"WBTC.e": "WBTC", // Avalanche WBTC
|
|
29
|
+
"DAI.e": "DAI", // Avalanche DAI
|
|
30
|
+
"BTC.b": "BTC", // Avalanche BTC
|
|
31
|
+
BETH: "WBETH", // Binance ETH
|
|
32
|
+
STETH: "STETH", // Lido staked ETH
|
|
33
|
+
WSTETH: "WSTETH", // Wrapped stETH
|
|
34
|
+
};
|
|
35
|
+
// Build reverse mapping for normalization (alternative -> normalized)
|
|
36
|
+
const symbolReverseMap = new Map();
|
|
37
|
+
for (const [alternative, normalized] of Object.entries(cryptoAlternatives)) {
|
|
38
|
+
// Only map if it's actually an alternative, not the same
|
|
39
|
+
if (alternative !== normalized) {
|
|
40
|
+
symbolReverseMap.set(alternative.toUpperCase(), normalized);
|
|
41
|
+
symbolReverseMap.set(alternative.toLowerCase(), normalized);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function normalize(symbol) {
|
|
45
|
+
const upperSymbol = symbol.toUpperCase();
|
|
46
|
+
// Check if it's a known alternative
|
|
47
|
+
if (cryptoAlternatives[upperSymbol]) {
|
|
48
|
+
return cryptoAlternatives[upperSymbol];
|
|
49
|
+
}
|
|
50
|
+
// Check reverse mapping
|
|
51
|
+
const normalized = symbolReverseMap.get(upperSymbol) ||
|
|
52
|
+
symbolReverseMap.get(symbol.toLowerCase());
|
|
53
|
+
if (normalized) {
|
|
54
|
+
return normalized;
|
|
55
|
+
}
|
|
56
|
+
// Handle wrapped/bridged tokens
|
|
57
|
+
const unwrapped = upperSymbol
|
|
58
|
+
.replace(/^W/, "") // Remove W prefix (WBTC -> BTC)
|
|
59
|
+
.replace(/\.E$/, "") // Remove .e suffix (USDT.e -> USDT)
|
|
60
|
+
.replace(/\.B$/, ""); // Remove .b suffix (BTC.b -> BTC)
|
|
61
|
+
if (unwrapped !== upperSymbol && cryptoAlternatives[unwrapped]) {
|
|
62
|
+
return cryptoAlternatives[unwrapped];
|
|
63
|
+
}
|
|
64
|
+
return upperSymbol;
|
|
65
|
+
}
|
|
66
|
+
export function areEquivalent(symbol1, symbol2) {
|
|
67
|
+
return normalize(symbol1) === normalize(symbol2);
|
|
68
|
+
}
|
|
69
|
+
export function getVariations(symbol) {
|
|
70
|
+
const normalized = normalize(symbol);
|
|
71
|
+
const variations = new Set([normalized]);
|
|
72
|
+
// Add all known alternatives
|
|
73
|
+
for (const [key, value] of Object.entries(cryptoAlternatives)) {
|
|
74
|
+
if (value === normalized || key === normalized) {
|
|
75
|
+
variations.add(key);
|
|
76
|
+
variations.add(value);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return Array.from(variations);
|
|
80
|
+
}
|
|
81
|
+
export function isCrypto(code) {
|
|
82
|
+
const upperCode = code.toUpperCase();
|
|
83
|
+
// Check if it's a known alternative
|
|
84
|
+
if (cryptoAlternatives[upperCode]) {
|
|
85
|
+
return isCryptoSymbol(cryptoAlternatives[upperCode]);
|
|
86
|
+
}
|
|
87
|
+
// Check if it's a wrapped or bridged token (common patterns)
|
|
88
|
+
const unwrappedCode = upperCode
|
|
89
|
+
.replace(/^W/, "") // Remove W prefix (WBTC -> BTC)
|
|
90
|
+
.replace(/\.E$/, "") // Remove .e suffix (USDT.e -> USDT)
|
|
91
|
+
.replace(/\.B$/, ""); // Remove .b suffix (BTC.b -> BTC)
|
|
92
|
+
if (unwrappedCode !== upperCode) {
|
|
93
|
+
return isCryptoSymbol(unwrappedCode);
|
|
94
|
+
}
|
|
95
|
+
return isCryptoSymbol(upperCode);
|
|
96
|
+
}
|
|
97
|
+
export function isStablecoin(code) {
|
|
98
|
+
const stablecoins = new Set([
|
|
99
|
+
"USDT",
|
|
100
|
+
"USDC",
|
|
101
|
+
"DAI",
|
|
102
|
+
"BUSD",
|
|
103
|
+
"UST",
|
|
104
|
+
"TUSD",
|
|
105
|
+
"USDP",
|
|
106
|
+
"GUSD",
|
|
107
|
+
"FRAX",
|
|
108
|
+
"LUSD",
|
|
109
|
+
]);
|
|
110
|
+
return stablecoins.has(code);
|
|
111
|
+
}
|
|
112
|
+
export function isFiat(code) {
|
|
113
|
+
const fiats = new Set([
|
|
114
|
+
"USD",
|
|
115
|
+
"EUR",
|
|
116
|
+
"GBP",
|
|
117
|
+
"JPY",
|
|
118
|
+
"CNY",
|
|
119
|
+
"CAD",
|
|
120
|
+
"AUD",
|
|
121
|
+
"CHF",
|
|
122
|
+
"HKD",
|
|
123
|
+
"SGD",
|
|
124
|
+
"NZD",
|
|
125
|
+
"KRW",
|
|
126
|
+
"SEK",
|
|
127
|
+
"NOK",
|
|
128
|
+
"DKK",
|
|
129
|
+
"PLN",
|
|
130
|
+
"THB",
|
|
131
|
+
"INR",
|
|
132
|
+
"RUB",
|
|
133
|
+
"TRY",
|
|
134
|
+
"BRL",
|
|
135
|
+
"MXN",
|
|
136
|
+
"ARS",
|
|
137
|
+
"CLP",
|
|
138
|
+
"COP",
|
|
139
|
+
"PEN",
|
|
140
|
+
"UYU",
|
|
141
|
+
"ZAR",
|
|
142
|
+
"NGN",
|
|
143
|
+
"KES",
|
|
144
|
+
]);
|
|
145
|
+
return fiats.has(code);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/universal/currency/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimals.d.ts","sourceRoot":"","sources":["../../../src/universal/currency/decimals.ts"],"names":[],"mappings":"AAUA,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GAClB,MAAM,CA6DR"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// Per-currency optimal-decimals policy. Depends on ./classify.ts (the
|
|
2
|
+
// dataset) ONLY for the unknown-ticker fallback — the majors resolve in the
|
|
3
|
+
// switch. Consumers that call this with arbitrary codes accept the dataset;
|
|
4
|
+
// USD-only consumers should use usdDecimals/usd from ./usd.ts, which never
|
|
5
|
+
// touch it.
|
|
6
|
+
import { sigDecimals } from "../format.js";
|
|
7
|
+
import { isCrypto } from "./classify.js";
|
|
8
|
+
import { usdDecimals } from "./usd.js";
|
|
9
|
+
export function getOptimalDecimals(value, currencyCode) {
|
|
10
|
+
if (value === 0) {
|
|
11
|
+
return isCrypto(currencyCode) ? 8 : 2;
|
|
12
|
+
}
|
|
13
|
+
const absValue = Math.abs(value);
|
|
14
|
+
switch (currencyCode) {
|
|
15
|
+
case "BTC":
|
|
16
|
+
case "XBT":
|
|
17
|
+
if (absValue < 0.00001)
|
|
18
|
+
return 10;
|
|
19
|
+
else if (absValue < 0.0001)
|
|
20
|
+
return 9;
|
|
21
|
+
else if (absValue < 0.001)
|
|
22
|
+
return 8;
|
|
23
|
+
else if (absValue < 0.01)
|
|
24
|
+
return 7;
|
|
25
|
+
else if (absValue < 0.1)
|
|
26
|
+
return 6;
|
|
27
|
+
else if (absValue < 1)
|
|
28
|
+
return 5;
|
|
29
|
+
else
|
|
30
|
+
return 4;
|
|
31
|
+
case "ETH":
|
|
32
|
+
if (absValue < 0.001)
|
|
33
|
+
return 8;
|
|
34
|
+
else if (absValue < 0.01)
|
|
35
|
+
return 7;
|
|
36
|
+
else if (absValue < 0.1)
|
|
37
|
+
return 6;
|
|
38
|
+
else if (absValue < 1)
|
|
39
|
+
return 5;
|
|
40
|
+
else
|
|
41
|
+
return 4;
|
|
42
|
+
case "USD":
|
|
43
|
+
case "USDT":
|
|
44
|
+
case "USDC":
|
|
45
|
+
case "DAI":
|
|
46
|
+
case "BUSD":
|
|
47
|
+
return usdDecimals(value);
|
|
48
|
+
case "EUR":
|
|
49
|
+
case "GBP":
|
|
50
|
+
case "CAD":
|
|
51
|
+
case "AUD":
|
|
52
|
+
case "CHF":
|
|
53
|
+
if (absValue < 0.01)
|
|
54
|
+
return 4;
|
|
55
|
+
else if (absValue < 1000)
|
|
56
|
+
return 2;
|
|
57
|
+
else
|
|
58
|
+
return 0;
|
|
59
|
+
case "JPY":
|
|
60
|
+
case "KRW":
|
|
61
|
+
if (absValue < 1)
|
|
62
|
+
return 2;
|
|
63
|
+
else
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
if (isCrypto(currencyCode)) {
|
|
67
|
+
if (absValue < 0.00001)
|
|
68
|
+
return sigDecimals(absValue);
|
|
69
|
+
else if (absValue < 0.0001)
|
|
70
|
+
return 6;
|
|
71
|
+
else if (absValue < 0.001)
|
|
72
|
+
return 5;
|
|
73
|
+
else if (absValue < 0.01)
|
|
74
|
+
return 4;
|
|
75
|
+
else if (absValue < 0.1)
|
|
76
|
+
return 3;
|
|
77
|
+
else if (absValue < 1)
|
|
78
|
+
return 3;
|
|
79
|
+
else
|
|
80
|
+
return 2;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
if (absValue < 0.01)
|
|
84
|
+
return sigDecimals(absValue);
|
|
85
|
+
else if (absValue < 0.1)
|
|
86
|
+
return 3;
|
|
87
|
+
else if (absValue < 1000)
|
|
88
|
+
return 2;
|
|
89
|
+
else
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=decimals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimals.js","sourceRoot":"","sources":["../../../src/universal/currency/decimals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +1,15 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
readonly TRY: "₺";
|
|
14
|
-
readonly AUD: "A$";
|
|
15
|
-
readonly CAD: "C$";
|
|
16
|
-
readonly CHF: "Fr";
|
|
17
|
-
readonly HKD: "HK$";
|
|
18
|
-
readonly SGD: "S$";
|
|
19
|
-
readonly NZD: "NZ$";
|
|
20
|
-
readonly SEK: "kr";
|
|
21
|
-
readonly NOK: "kr";
|
|
22
|
-
readonly DKK: "kr";
|
|
23
|
-
readonly PLN: "zł";
|
|
24
|
-
readonly THB: "฿";
|
|
25
|
-
readonly USDT: "₮";
|
|
26
|
-
readonly USDC: "$";
|
|
27
|
-
readonly DAI: "$";
|
|
28
|
-
readonly BUSD: "$";
|
|
29
|
-
};
|
|
30
|
-
export type CurrencyCode = keyof typeof CurrencySymbols | string;
|
|
31
|
-
export declare function getSymbol(code: string): string;
|
|
32
|
-
export declare function getOptimalDecimals(value: number, currencyCode: string): number;
|
|
33
|
-
import { usd, usdIntlOptions } from "../format.js";
|
|
34
|
-
export declare function normalize(symbol: string): string;
|
|
35
|
-
export declare function areEquivalent(symbol1: string, symbol2: string): boolean;
|
|
36
|
-
export declare function getVariations(symbol: string): string[];
|
|
37
|
-
export declare function isCrypto(code: string): boolean;
|
|
38
|
-
export declare function isStablecoin(code: string): boolean;
|
|
39
|
-
export declare function isFiat(code: string): boolean;
|
|
40
|
-
export declare function percentageOf(value: number, total: number): number;
|
|
41
|
-
export declare function percentageChange(oldValue: number, newValue: number): number;
|
|
42
|
-
export declare function percentageDiff(a: number, b: number): number;
|
|
43
|
-
export declare function basisPointsToPercent(bps: number): number;
|
|
44
|
-
export declare function percentToBasisPoints(percent: number): number;
|
|
45
|
-
export declare function formatBasisPoints(bps: number): string;
|
|
46
|
-
export type { UsdOptions } from "../format.js";
|
|
47
|
-
export { usd, usdIntlOptions };
|
|
48
|
-
/** Bitcoin with optimal decimals: 0.00001234 ₿ */
|
|
49
|
-
export declare function btc(value: number): string;
|
|
50
|
-
/** Ethereum with optimal decimals: 0.123 Ξ */
|
|
51
|
-
export declare function eth(value: number): string;
|
|
52
|
-
/**
|
|
53
|
-
* Format a value in any currency: symbol before for fiat/stablecoins
|
|
54
|
-
* (`$12.34`), after for crypto (`0.5 ₿`), optimal decimals + thousands
|
|
55
|
-
* grouping either way (en-pinned — SSR-hydration-safe).
|
|
56
|
-
*/
|
|
57
|
-
export declare function money(value: number, currencyCode: string): string;
|
|
1
|
+
export * from "./classify.js";
|
|
2
|
+
export * from "./decimals.js";
|
|
3
|
+
export * from "./money.js";
|
|
4
|
+
export * from "./percent.js";
|
|
5
|
+
export * from "./symbols.js";
|
|
6
|
+
export * from "./usd.js";
|
|
7
|
+
import { areEquivalent, getVariations, isCrypto, isFiat, isStablecoin, normalize } from "./classify.js";
|
|
8
|
+
import { getOptimalDecimals } from "./decimals.js";
|
|
9
|
+
import { btc, eth, money } from "./money.js";
|
|
10
|
+
import { basisPointsToPercent, formatBasisPoints, percentageChange, percentageDiff, percentageOf, percentToBasisPoints } from "./percent.js";
|
|
11
|
+
import { getSymbol } from "./symbols.js";
|
|
12
|
+
import { usd, usdIntlOptions } from "./usd.js";
|
|
58
13
|
export declare const currency: {
|
|
59
14
|
getSymbol: typeof getSymbol;
|
|
60
15
|
getOptimalDecimals: typeof getOptimalDecimals;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/currency/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/currency/index.ts"],"names":[],"mappings":"AAcA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AAEzB,OAAO,EACN,aAAa,EACb,aAAa,EACb,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,SAAS,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBpB,CAAC"}
|