@keplr-wallet/unit 0.12.235 → 0.12.236-rc.1
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/build/coin-pretty.d.ts +8 -0
- package/build/coin-pretty.js +56 -0
- package/build/coin-pretty.js.map +1 -1
- package/package.json +3 -3
- package/src/coin-pretty.ts +79 -0
package/build/coin-pretty.d.ts
CHANGED
@@ -8,10 +8,14 @@ export type CoinPrettyOptions = {
|
|
8
8
|
upperCase: boolean;
|
9
9
|
lowerCase: boolean;
|
10
10
|
hideDenom: boolean;
|
11
|
+
hideAmount: boolean;
|
11
12
|
hideIBCMetadata: boolean;
|
13
|
+
showRawCoinDenom: boolean;
|
14
|
+
maxCoinDenomLength: number;
|
12
15
|
};
|
13
16
|
export declare class CoinPretty {
|
14
17
|
protected _currency: AppCurrency;
|
18
|
+
static makeCoinDenomPretty(coinDenom: string): string;
|
15
19
|
protected intPretty: IntPretty;
|
16
20
|
protected _options: CoinPrettyOptions;
|
17
21
|
constructor(_currency: AppCurrency, amount: Dec | {
|
@@ -25,7 +29,9 @@ export declare class CoinPretty {
|
|
25
29
|
upperCase(bool: boolean): CoinPretty;
|
26
30
|
lowerCase(bool: boolean): CoinPretty;
|
27
31
|
hideDenom(bool: boolean): CoinPretty;
|
32
|
+
hideAmount(bool: boolean): CoinPretty;
|
28
33
|
hideIBCMetadata(bool: boolean): CoinPretty;
|
34
|
+
showRawCoinDenom(bool: boolean): CoinPretty;
|
29
35
|
moveDecimalPointLeft(delta: number): CoinPretty;
|
30
36
|
moveDecimalPointRight(delta: number): CoinPretty;
|
31
37
|
/**
|
@@ -55,6 +61,7 @@ export declare class CoinPretty {
|
|
55
61
|
add(target: Dec | {
|
56
62
|
toDec(): Dec;
|
57
63
|
} | CoinPretty): CoinPretty;
|
64
|
+
addDifferentDenoms(target: CoinPretty): CoinPretty;
|
58
65
|
sub(target: Dec | {
|
59
66
|
toDec(): Dec;
|
60
67
|
} | CoinPretty): CoinPretty;
|
@@ -69,6 +76,7 @@ export declare class CoinPretty {
|
|
69
76
|
denom: string;
|
70
77
|
amount: string;
|
71
78
|
};
|
79
|
+
maxCoinDenomLength(maxLength: number): CoinPretty;
|
72
80
|
toString(): string;
|
73
81
|
clone(): CoinPretty;
|
74
82
|
}
|
package/build/coin-pretty.js
CHANGED
@@ -5,6 +5,19 @@ const int_pretty_1 = require("./int-pretty");
|
|
5
5
|
const decimal_1 = require("./decimal");
|
6
6
|
const dec_utils_1 = require("./dec-utils");
|
7
7
|
class CoinPretty {
|
8
|
+
static makeCoinDenomPretty(coinDenom) {
|
9
|
+
const isHexString = /^(?:0[xX][0-9a-fA-F]+|[0-9][0-9a-fA-F]*)$/.test(coinDenom);
|
10
|
+
if (isHexString) {
|
11
|
+
const buf = Buffer.from(coinDenom.replace(/^0x/, ""), "hex");
|
12
|
+
const nullIndex = buf.indexOf(0);
|
13
|
+
const end = nullIndex === -1 ? buf.length : nullIndex;
|
14
|
+
return buf
|
15
|
+
.toString("utf8", 0, end)
|
16
|
+
.replace(/\u0000+/g, "")
|
17
|
+
.trim();
|
18
|
+
}
|
19
|
+
return coinDenom.replace(/\u0000+/g, "").trim();
|
20
|
+
}
|
8
21
|
constructor(_currency, amount) {
|
9
22
|
this._currency = _currency;
|
10
23
|
this._options = {
|
@@ -12,7 +25,11 @@ class CoinPretty {
|
|
12
25
|
upperCase: false,
|
13
26
|
lowerCase: false,
|
14
27
|
hideDenom: false,
|
28
|
+
hideAmount: false,
|
29
|
+
showRawCoinDenom: false,
|
15
30
|
hideIBCMetadata: false,
|
31
|
+
// default max length is 20
|
32
|
+
maxCoinDenomLength: 20,
|
16
33
|
};
|
17
34
|
if (typeof amount === "object" && "toDec" in amount) {
|
18
35
|
amount = amount.toDec();
|
@@ -59,11 +76,21 @@ class CoinPretty {
|
|
59
76
|
pretty._options.hideDenom = bool;
|
60
77
|
return pretty;
|
61
78
|
}
|
79
|
+
hideAmount(bool) {
|
80
|
+
const pretty = this.clone();
|
81
|
+
pretty._options.hideAmount = bool;
|
82
|
+
return pretty;
|
83
|
+
}
|
62
84
|
hideIBCMetadata(bool) {
|
63
85
|
const pretty = this.clone();
|
64
86
|
pretty._options.hideIBCMetadata = bool;
|
65
87
|
return pretty;
|
66
88
|
}
|
89
|
+
showRawCoinDenom(bool) {
|
90
|
+
const pretty = this.clone();
|
91
|
+
pretty._options.showRawCoinDenom = bool;
|
92
|
+
return pretty;
|
93
|
+
}
|
67
94
|
moveDecimalPointLeft(delta) {
|
68
95
|
const pretty = this.clone();
|
69
96
|
pretty.intPretty = pretty.intPretty.moveDecimalPointLeft(delta);
|
@@ -154,6 +181,11 @@ class CoinPretty {
|
|
154
181
|
: target.mul(dec_utils_1.DecUtils.getTenExponentNInPrecisionRange(-this._currency.coinDecimals)));
|
155
182
|
return pretty;
|
156
183
|
}
|
184
|
+
addDifferentDenoms(target) {
|
185
|
+
const pretty = this.clone();
|
186
|
+
pretty.intPretty = pretty.intPretty.add(target);
|
187
|
+
return pretty;
|
188
|
+
}
|
157
189
|
sub(target) {
|
158
190
|
const isCoinPretty = target instanceof CoinPretty;
|
159
191
|
if (isCoinPretty) {
|
@@ -194,6 +226,11 @@ class CoinPretty {
|
|
194
226
|
amount: amount.toString(),
|
195
227
|
};
|
196
228
|
}
|
229
|
+
maxCoinDenomLength(maxLength) {
|
230
|
+
const pretty = this.clone();
|
231
|
+
pretty._options.maxCoinDenomLength = maxLength;
|
232
|
+
return pretty;
|
233
|
+
}
|
197
234
|
toString() {
|
198
235
|
let denom = this.denom;
|
199
236
|
if (this._options.hideIBCMetadata &&
|
@@ -207,11 +244,30 @@ class CoinPretty {
|
|
207
244
|
if (this._options.lowerCase) {
|
208
245
|
denom = denom.toLowerCase();
|
209
246
|
}
|
247
|
+
if (!this._options.showRawCoinDenom) {
|
248
|
+
denom = CoinPretty.makeCoinDenomPretty(denom);
|
249
|
+
}
|
250
|
+
if (!this._options.hideIBCMetadata) {
|
251
|
+
if ("originCurrency" in this.currency &&
|
252
|
+
this.currency.originCurrency &&
|
253
|
+
this.currency.originCurrency.coinDenom.length >
|
254
|
+
this._options.maxCoinDenomLength) {
|
255
|
+
denom = denom.replace(this.currency.originCurrency.coinDenom, `${this.currency.originCurrency.coinDenom.slice(0, this._options.maxCoinDenomLength)}...`);
|
256
|
+
}
|
257
|
+
}
|
258
|
+
else {
|
259
|
+
if (denom.length > this._options.maxCoinDenomLength) {
|
260
|
+
denom = `${denom.slice(0, this._options.maxCoinDenomLength)}...`;
|
261
|
+
}
|
262
|
+
}
|
210
263
|
let separator = this._options.separator;
|
211
264
|
if (this._options.hideDenom) {
|
212
265
|
denom = "";
|
213
266
|
separator = "";
|
214
267
|
}
|
268
|
+
if (this._options.hideAmount) {
|
269
|
+
return denom;
|
270
|
+
}
|
215
271
|
return this.intPretty.toStringWithSymbols("", `${separator}${denom}`);
|
216
272
|
}
|
217
273
|
clone() {
|
package/build/coin-pretty.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coin-pretty.js","sourceRoot":"","sources":["../src/coin-pretty.ts"],"names":[],"mappings":";;;AAAA,6CAA2D;AAC3D,uCAAgC;AAGhC,2CAAuC;
|
1
|
+
{"version":3,"file":"coin-pretty.js","sourceRoot":"","sources":["../src/coin-pretty.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@keplr-wallet/unit",
|
3
|
-
"version": "0.12.
|
3
|
+
"version": "0.12.236-rc.1",
|
4
4
|
"main": "build/index.js",
|
5
5
|
"author": "chainapsis",
|
6
6
|
"license": "Apache-2.0",
|
@@ -16,9 +16,9 @@
|
|
16
16
|
"lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\""
|
17
17
|
},
|
18
18
|
"dependencies": {
|
19
|
-
"@keplr-wallet/types": "0.12.
|
19
|
+
"@keplr-wallet/types": "0.12.236-rc.1",
|
20
20
|
"big-integer": "^1.6.48",
|
21
21
|
"utility-types": "^3.10.0"
|
22
22
|
},
|
23
|
-
"gitHead": "
|
23
|
+
"gitHead": "67c01e24ebb27ded8bd0f1549380c5e40573aeb1"
|
24
24
|
}
|
package/src/coin-pretty.ts
CHANGED
@@ -10,10 +10,32 @@ export type CoinPrettyOptions = {
|
|
10
10
|
upperCase: boolean;
|
11
11
|
lowerCase: boolean;
|
12
12
|
hideDenom: boolean;
|
13
|
+
hideAmount: boolean;
|
13
14
|
hideIBCMetadata: boolean;
|
15
|
+
showRawCoinDenom: boolean;
|
16
|
+
maxCoinDenomLength: number;
|
14
17
|
};
|
15
18
|
|
16
19
|
export class CoinPretty {
|
20
|
+
static makeCoinDenomPretty(coinDenom: string) {
|
21
|
+
const isHexString = /^(?:0[xX][0-9a-fA-F]+|[0-9][0-9a-fA-F]*)$/.test(
|
22
|
+
coinDenom
|
23
|
+
);
|
24
|
+
if (isHexString) {
|
25
|
+
const buf = Buffer.from(coinDenom.replace(/^0x/, ""), "hex");
|
26
|
+
|
27
|
+
const nullIndex = buf.indexOf(0);
|
28
|
+
const end = nullIndex === -1 ? buf.length : nullIndex;
|
29
|
+
|
30
|
+
return buf
|
31
|
+
.toString("utf8", 0, end)
|
32
|
+
.replace(/\u0000+/g, "")
|
33
|
+
.trim();
|
34
|
+
}
|
35
|
+
|
36
|
+
return coinDenom.replace(/\u0000+/g, "").trim();
|
37
|
+
}
|
38
|
+
|
17
39
|
protected intPretty: IntPretty;
|
18
40
|
|
19
41
|
protected _options: CoinPrettyOptions = {
|
@@ -21,7 +43,11 @@ export class CoinPretty {
|
|
21
43
|
upperCase: false,
|
22
44
|
lowerCase: false,
|
23
45
|
hideDenom: false,
|
46
|
+
hideAmount: false,
|
47
|
+
showRawCoinDenom: false,
|
24
48
|
hideIBCMetadata: false,
|
49
|
+
// default max length is 20
|
50
|
+
maxCoinDenomLength: 20,
|
25
51
|
};
|
26
52
|
|
27
53
|
constructor(
|
@@ -91,12 +117,24 @@ export class CoinPretty {
|
|
91
117
|
return pretty;
|
92
118
|
}
|
93
119
|
|
120
|
+
hideAmount(bool: boolean): CoinPretty {
|
121
|
+
const pretty = this.clone();
|
122
|
+
pretty._options.hideAmount = bool;
|
123
|
+
return pretty;
|
124
|
+
}
|
125
|
+
|
94
126
|
hideIBCMetadata(bool: boolean): CoinPretty {
|
95
127
|
const pretty = this.clone();
|
96
128
|
pretty._options.hideIBCMetadata = bool;
|
97
129
|
return pretty;
|
98
130
|
}
|
99
131
|
|
132
|
+
showRawCoinDenom(bool: boolean): CoinPretty {
|
133
|
+
const pretty = this.clone();
|
134
|
+
pretty._options.showRawCoinDenom = bool;
|
135
|
+
return pretty;
|
136
|
+
}
|
137
|
+
|
100
138
|
moveDecimalPointLeft(delta: number): CoinPretty {
|
101
139
|
const pretty = this.clone();
|
102
140
|
pretty.intPretty = pretty.intPretty.moveDecimalPointLeft(delta);
|
@@ -211,6 +249,12 @@ export class CoinPretty {
|
|
211
249
|
return pretty;
|
212
250
|
}
|
213
251
|
|
252
|
+
addDifferentDenoms(target: CoinPretty): CoinPretty {
|
253
|
+
const pretty = this.clone();
|
254
|
+
pretty.intPretty = pretty.intPretty.add(target);
|
255
|
+
return pretty;
|
256
|
+
}
|
257
|
+
|
214
258
|
sub(target: Dec | { toDec(): Dec } | CoinPretty): CoinPretty {
|
215
259
|
const isCoinPretty = target instanceof CoinPretty;
|
216
260
|
if (isCoinPretty) {
|
@@ -272,6 +316,12 @@ export class CoinPretty {
|
|
272
316
|
};
|
273
317
|
}
|
274
318
|
|
319
|
+
maxCoinDenomLength(maxLength: number): CoinPretty {
|
320
|
+
const pretty = this.clone();
|
321
|
+
pretty._options.maxCoinDenomLength = maxLength;
|
322
|
+
return pretty;
|
323
|
+
}
|
324
|
+
|
275
325
|
toString(): string {
|
276
326
|
let denom = this.denom;
|
277
327
|
if (
|
@@ -288,6 +338,31 @@ export class CoinPretty {
|
|
288
338
|
denom = denom.toLowerCase();
|
289
339
|
}
|
290
340
|
|
341
|
+
if (!this._options.showRawCoinDenom) {
|
342
|
+
denom = CoinPretty.makeCoinDenomPretty(denom);
|
343
|
+
}
|
344
|
+
|
345
|
+
if (!this._options.hideIBCMetadata) {
|
346
|
+
if (
|
347
|
+
"originCurrency" in this.currency &&
|
348
|
+
this.currency.originCurrency &&
|
349
|
+
this.currency.originCurrency.coinDenom.length >
|
350
|
+
this._options.maxCoinDenomLength
|
351
|
+
) {
|
352
|
+
denom = denom.replace(
|
353
|
+
this.currency.originCurrency.coinDenom,
|
354
|
+
`${this.currency.originCurrency.coinDenom.slice(
|
355
|
+
0,
|
356
|
+
this._options.maxCoinDenomLength
|
357
|
+
)}...`
|
358
|
+
);
|
359
|
+
}
|
360
|
+
} else {
|
361
|
+
if (denom.length > this._options.maxCoinDenomLength) {
|
362
|
+
denom = `${denom.slice(0, this._options.maxCoinDenomLength)}...`;
|
363
|
+
}
|
364
|
+
}
|
365
|
+
|
291
366
|
let separator = this._options.separator;
|
292
367
|
|
293
368
|
if (this._options.hideDenom) {
|
@@ -295,6 +370,10 @@ export class CoinPretty {
|
|
295
370
|
separator = "";
|
296
371
|
}
|
297
372
|
|
373
|
+
if (this._options.hideAmount) {
|
374
|
+
return denom;
|
375
|
+
}
|
376
|
+
|
298
377
|
return this.intPretty.toStringWithSymbols("", `${separator}${denom}`);
|
299
378
|
}
|
300
379
|
|