@talismn/util 0.1.7 → 0.1.9
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/CHANGELOG.md +15 -0
- package/dist/declarations/src/BigMath.d.ts +1 -1
- package/dist/declarations/src/deferred.d.ts +15 -0
- package/dist/declarations/src/index.d.ts +2 -0
- package/dist/declarations/src/isEthereumAddress.d.ts +1 -0
- package/dist/talismn-util.cjs.dev.js +48 -9
- package/dist/talismn-util.cjs.prod.js +48 -9
- package/dist/talismn-util.esm.js +50 -13
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# @talismn/util
|
2
2
|
|
3
|
+
## 0.1.9
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- f7aca48b: eslint rules
|
8
|
+
- 01bf239b: feat: crowdloan and nom pool balances
|
9
|
+
- 48f0222e: fix: removed some explicit `any`s
|
10
|
+
- 01bf239b: fix: packages publishing with incorrect interdependency versions
|
11
|
+
|
12
|
+
## 0.1.8
|
13
|
+
|
14
|
+
### Patch Changes
|
15
|
+
|
16
|
+
- 3068bd60: feat: stale balances and exponential rpc backoff
|
17
|
+
|
3
18
|
## 0.1.7
|
4
19
|
|
5
20
|
### Patch Changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/**
|
2
|
+
* In TypeScript, a deferred promise refers to a pattern that involves creating a promise that can be
|
3
|
+
* resolved or rejected at a later point in time, typically by code outside of the current function scope.
|
4
|
+
*
|
5
|
+
* This pattern is often used when dealing with asynchronous operations that involve multiple steps or when
|
6
|
+
* the result of an operation cannot be immediately determined.
|
7
|
+
*/
|
8
|
+
export declare function Deferred<T>(): {
|
9
|
+
promise: Promise<T>;
|
10
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
11
|
+
reject: (reason?: unknown) => void;
|
12
|
+
isPending: () => boolean;
|
13
|
+
isResolved: () => boolean;
|
14
|
+
isRejected: () => boolean;
|
15
|
+
};
|
@@ -3,11 +3,13 @@ export * from "./FunctionPropertyNames";
|
|
3
3
|
export * from "./blake2Concat";
|
4
4
|
export * from "./classNames";
|
5
5
|
export * from "./decodeAnyAddress";
|
6
|
+
export * from "./deferred";
|
6
7
|
export * from "./encodeAnyAddress";
|
7
8
|
export * from "./formatDecimals";
|
8
9
|
export * from "./getBase64ImageUrl";
|
9
10
|
export * from "./hasOwnProperty";
|
10
11
|
export * from "./isArrayOf";
|
12
|
+
export * from "./isEthereumAddress";
|
11
13
|
export * from "./planckToTokens";
|
12
14
|
export * from "./sleep";
|
13
15
|
export * from "./throwAfter";
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const isEthereumAddress: (address: string) => boolean;
|
@@ -17,11 +17,11 @@ var BigNumber__default = /*#__PURE__*/_interopDefault(BigNumber);
|
|
17
17
|
*/
|
18
18
|
const BigMath = {
|
19
19
|
abs(x) {
|
20
|
-
return x <
|
20
|
+
return x < 0n ? -x : x;
|
21
21
|
},
|
22
22
|
sign(x) {
|
23
|
-
if (x ===
|
24
|
-
return x <
|
23
|
+
if (x === 0n) return 0n;
|
24
|
+
return x < 0n ? -1n : 1n;
|
25
25
|
},
|
26
26
|
// TODO: Improve our babel/tsc config to let us use the `**` operator on bigint values.
|
27
27
|
// Error thrown: Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later. ts(2791)
|
@@ -57,6 +57,41 @@ function decodeAnyAddress(encoded, ignoreChecksum, ss58Format) {
|
|
57
57
|
}
|
58
58
|
}
|
59
59
|
|
60
|
+
/**
|
61
|
+
* In TypeScript, a deferred promise refers to a pattern that involves creating a promise that can be
|
62
|
+
* resolved or rejected at a later point in time, typically by code outside of the current function scope.
|
63
|
+
*
|
64
|
+
* This pattern is often used when dealing with asynchronous operations that involve multiple steps or when
|
65
|
+
* the result of an operation cannot be immediately determined.
|
66
|
+
*/
|
67
|
+
function Deferred() {
|
68
|
+
let resolve;
|
69
|
+
let reject;
|
70
|
+
let isPending = true;
|
71
|
+
let isResolved = false;
|
72
|
+
let isRejected = false;
|
73
|
+
const promise = new Promise((innerResolve, innerReject) => {
|
74
|
+
resolve = value => {
|
75
|
+
isPending = false;
|
76
|
+
isResolved = true;
|
77
|
+
innerResolve(value);
|
78
|
+
};
|
79
|
+
reject = reason => {
|
80
|
+
isPending = false;
|
81
|
+
isRejected = true;
|
82
|
+
innerReject(reason);
|
83
|
+
};
|
84
|
+
});
|
85
|
+
return {
|
86
|
+
promise,
|
87
|
+
resolve,
|
88
|
+
reject,
|
89
|
+
isPending: () => isPending,
|
90
|
+
isResolved: () => isResolved,
|
91
|
+
isRejected: () => isRejected
|
92
|
+
};
|
93
|
+
}
|
94
|
+
|
60
95
|
function encodeAnyAddress(key, ss58Format) {
|
61
96
|
try {
|
62
97
|
return keyring.encodeAddress(key, ss58Format);
|
@@ -134,11 +169,13 @@ function isArrayOf(array, func) {
|
|
134
169
|
return false;
|
135
170
|
}
|
136
171
|
|
172
|
+
const isEthereumAddress = address => address.startsWith("0x") && address.length === 42;
|
173
|
+
|
137
174
|
function planckToTokens(planck, tokenDecimals) {
|
138
175
|
if (typeof planck !== "string" || typeof tokenDecimals !== "number") return;
|
139
|
-
const base =
|
140
|
-
const exponent =
|
141
|
-
const multiplier = base
|
176
|
+
const base = 10;
|
177
|
+
const exponent = -1 * tokenDecimals;
|
178
|
+
const multiplier = base ** exponent;
|
142
179
|
return new BigNumber__default["default"](planck).multipliedBy(multiplier).toString(10);
|
143
180
|
}
|
144
181
|
|
@@ -148,9 +185,9 @@ const throwAfter = (ms, reason) => new Promise((_, reject) => setTimeout(() => r
|
|
148
185
|
|
149
186
|
function tokensToPlanck(tokens, tokenDecimals) {
|
150
187
|
if (typeof tokens !== "string" || typeof tokenDecimals !== "number") return;
|
151
|
-
const base =
|
152
|
-
const exponent =
|
153
|
-
const multiplier = base
|
188
|
+
const base = 10;
|
189
|
+
const exponent = tokenDecimals;
|
190
|
+
const multiplier = base ** exponent;
|
154
191
|
return new BigNumber__default["default"](tokens).multipliedBy(multiplier).toString(10);
|
155
192
|
}
|
156
193
|
|
@@ -160,6 +197,7 @@ function twox64Concat(input) {
|
|
160
197
|
}
|
161
198
|
|
162
199
|
exports.BigMath = BigMath;
|
200
|
+
exports.Deferred = Deferred;
|
163
201
|
exports.MAX_DECIMALS_FORMAT = MAX_DECIMALS_FORMAT;
|
164
202
|
exports.blake2Concat = blake2Concat;
|
165
203
|
exports.classNames = classNames;
|
@@ -169,6 +207,7 @@ exports.formatDecimals = formatDecimals;
|
|
169
207
|
exports.getBase64ImageUrl = getBase64ImageUrl;
|
170
208
|
exports.hasOwnProperty = hasOwnProperty;
|
171
209
|
exports.isArrayOf = isArrayOf;
|
210
|
+
exports.isEthereumAddress = isEthereumAddress;
|
172
211
|
exports.planckToTokens = planckToTokens;
|
173
212
|
exports.sleep = sleep;
|
174
213
|
exports.throwAfter = throwAfter;
|
@@ -17,11 +17,11 @@ var BigNumber__default = /*#__PURE__*/_interopDefault(BigNumber);
|
|
17
17
|
*/
|
18
18
|
const BigMath = {
|
19
19
|
abs(x) {
|
20
|
-
return x <
|
20
|
+
return x < 0n ? -x : x;
|
21
21
|
},
|
22
22
|
sign(x) {
|
23
|
-
if (x ===
|
24
|
-
return x <
|
23
|
+
if (x === 0n) return 0n;
|
24
|
+
return x < 0n ? -1n : 1n;
|
25
25
|
},
|
26
26
|
// TODO: Improve our babel/tsc config to let us use the `**` operator on bigint values.
|
27
27
|
// Error thrown: Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later. ts(2791)
|
@@ -57,6 +57,41 @@ function decodeAnyAddress(encoded, ignoreChecksum, ss58Format) {
|
|
57
57
|
}
|
58
58
|
}
|
59
59
|
|
60
|
+
/**
|
61
|
+
* In TypeScript, a deferred promise refers to a pattern that involves creating a promise that can be
|
62
|
+
* resolved or rejected at a later point in time, typically by code outside of the current function scope.
|
63
|
+
*
|
64
|
+
* This pattern is often used when dealing with asynchronous operations that involve multiple steps or when
|
65
|
+
* the result of an operation cannot be immediately determined.
|
66
|
+
*/
|
67
|
+
function Deferred() {
|
68
|
+
let resolve;
|
69
|
+
let reject;
|
70
|
+
let isPending = true;
|
71
|
+
let isResolved = false;
|
72
|
+
let isRejected = false;
|
73
|
+
const promise = new Promise((innerResolve, innerReject) => {
|
74
|
+
resolve = value => {
|
75
|
+
isPending = false;
|
76
|
+
isResolved = true;
|
77
|
+
innerResolve(value);
|
78
|
+
};
|
79
|
+
reject = reason => {
|
80
|
+
isPending = false;
|
81
|
+
isRejected = true;
|
82
|
+
innerReject(reason);
|
83
|
+
};
|
84
|
+
});
|
85
|
+
return {
|
86
|
+
promise,
|
87
|
+
resolve,
|
88
|
+
reject,
|
89
|
+
isPending: () => isPending,
|
90
|
+
isResolved: () => isResolved,
|
91
|
+
isRejected: () => isRejected
|
92
|
+
};
|
93
|
+
}
|
94
|
+
|
60
95
|
function encodeAnyAddress(key, ss58Format) {
|
61
96
|
try {
|
62
97
|
return keyring.encodeAddress(key, ss58Format);
|
@@ -134,11 +169,13 @@ function isArrayOf(array, func) {
|
|
134
169
|
return false;
|
135
170
|
}
|
136
171
|
|
172
|
+
const isEthereumAddress = address => address.startsWith("0x") && address.length === 42;
|
173
|
+
|
137
174
|
function planckToTokens(planck, tokenDecimals) {
|
138
175
|
if (typeof planck !== "string" || typeof tokenDecimals !== "number") return;
|
139
|
-
const base =
|
140
|
-
const exponent =
|
141
|
-
const multiplier = base
|
176
|
+
const base = 10;
|
177
|
+
const exponent = -1 * tokenDecimals;
|
178
|
+
const multiplier = base ** exponent;
|
142
179
|
return new BigNumber__default["default"](planck).multipliedBy(multiplier).toString(10);
|
143
180
|
}
|
144
181
|
|
@@ -148,9 +185,9 @@ const throwAfter = (ms, reason) => new Promise((_, reject) => setTimeout(() => r
|
|
148
185
|
|
149
186
|
function tokensToPlanck(tokens, tokenDecimals) {
|
150
187
|
if (typeof tokens !== "string" || typeof tokenDecimals !== "number") return;
|
151
|
-
const base =
|
152
|
-
const exponent =
|
153
|
-
const multiplier = base
|
188
|
+
const base = 10;
|
189
|
+
const exponent = tokenDecimals;
|
190
|
+
const multiplier = base ** exponent;
|
154
191
|
return new BigNumber__default["default"](tokens).multipliedBy(multiplier).toString(10);
|
155
192
|
}
|
156
193
|
|
@@ -160,6 +197,7 @@ function twox64Concat(input) {
|
|
160
197
|
}
|
161
198
|
|
162
199
|
exports.BigMath = BigMath;
|
200
|
+
exports.Deferred = Deferred;
|
163
201
|
exports.MAX_DECIMALS_FORMAT = MAX_DECIMALS_FORMAT;
|
164
202
|
exports.blake2Concat = blake2Concat;
|
165
203
|
exports.classNames = classNames;
|
@@ -169,6 +207,7 @@ exports.formatDecimals = formatDecimals;
|
|
169
207
|
exports.getBase64ImageUrl = getBase64ImageUrl;
|
170
208
|
exports.hasOwnProperty = hasOwnProperty;
|
171
209
|
exports.isArrayOf = isArrayOf;
|
210
|
+
exports.isEthereumAddress = isEthereumAddress;
|
172
211
|
exports.planckToTokens = planckToTokens;
|
173
212
|
exports.sleep = sleep;
|
174
213
|
exports.throwAfter = throwAfter;
|
package/dist/talismn-util.esm.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { u8aToHex, u8aConcat, u8aToU8a, hexToU8a } from '@polkadot/util';
|
2
|
-
import { blake2AsU8a, isEthereumAddress, ethereumEncode, xxhashAsU8a } from '@polkadot/util-crypto';
|
2
|
+
import { blake2AsU8a, isEthereumAddress as isEthereumAddress$1, ethereumEncode, xxhashAsU8a } from '@polkadot/util-crypto';
|
3
3
|
import { decodeAddress, encodeAddress } from '@polkadot/keyring';
|
4
4
|
import BigNumber from 'bignumber.js';
|
5
5
|
|
@@ -9,11 +9,11 @@ import BigNumber from 'bignumber.js';
|
|
9
9
|
*/
|
10
10
|
const BigMath = {
|
11
11
|
abs(x) {
|
12
|
-
return x <
|
12
|
+
return x < 0n ? -x : x;
|
13
13
|
},
|
14
14
|
sign(x) {
|
15
|
-
if (x ===
|
16
|
-
return x <
|
15
|
+
if (x === 0n) return 0n;
|
16
|
+
return x < 0n ? -1n : 1n;
|
17
17
|
},
|
18
18
|
// TODO: Improve our babel/tsc config to let us use the `**` operator on bigint values.
|
19
19
|
// Error thrown: Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later. ts(2791)
|
@@ -44,17 +44,52 @@ function decodeAnyAddress(encoded, ignoreChecksum, ss58Format) {
|
|
44
44
|
return decodeAddress(encoded, ignoreChecksum, ss58Format);
|
45
45
|
} catch (error) {
|
46
46
|
if (typeof encoded !== "string") throw error;
|
47
|
-
if (!isEthereumAddress(encoded)) throw error;
|
47
|
+
if (!isEthereumAddress$1(encoded)) throw error;
|
48
48
|
return hexToU8a(encoded.slice("0x".length));
|
49
49
|
}
|
50
50
|
}
|
51
51
|
|
52
|
+
/**
|
53
|
+
* In TypeScript, a deferred promise refers to a pattern that involves creating a promise that can be
|
54
|
+
* resolved or rejected at a later point in time, typically by code outside of the current function scope.
|
55
|
+
*
|
56
|
+
* This pattern is often used when dealing with asynchronous operations that involve multiple steps or when
|
57
|
+
* the result of an operation cannot be immediately determined.
|
58
|
+
*/
|
59
|
+
function Deferred() {
|
60
|
+
let resolve;
|
61
|
+
let reject;
|
62
|
+
let isPending = true;
|
63
|
+
let isResolved = false;
|
64
|
+
let isRejected = false;
|
65
|
+
const promise = new Promise((innerResolve, innerReject) => {
|
66
|
+
resolve = value => {
|
67
|
+
isPending = false;
|
68
|
+
isResolved = true;
|
69
|
+
innerResolve(value);
|
70
|
+
};
|
71
|
+
reject = reason => {
|
72
|
+
isPending = false;
|
73
|
+
isRejected = true;
|
74
|
+
innerReject(reason);
|
75
|
+
};
|
76
|
+
});
|
77
|
+
return {
|
78
|
+
promise,
|
79
|
+
resolve,
|
80
|
+
reject,
|
81
|
+
isPending: () => isPending,
|
82
|
+
isResolved: () => isResolved,
|
83
|
+
isRejected: () => isRejected
|
84
|
+
};
|
85
|
+
}
|
86
|
+
|
52
87
|
function encodeAnyAddress(key, ss58Format) {
|
53
88
|
try {
|
54
89
|
return encodeAddress(key, ss58Format);
|
55
90
|
} catch (error) {
|
56
91
|
if (typeof key !== "string") throw error;
|
57
|
-
if (!isEthereumAddress(key)) throw error;
|
92
|
+
if (!isEthereumAddress$1(key)) throw error;
|
58
93
|
return ethereumEncode(key);
|
59
94
|
}
|
60
95
|
}
|
@@ -126,11 +161,13 @@ function isArrayOf(array, func) {
|
|
126
161
|
return false;
|
127
162
|
}
|
128
163
|
|
164
|
+
const isEthereumAddress = address => address.startsWith("0x") && address.length === 42;
|
165
|
+
|
129
166
|
function planckToTokens(planck, tokenDecimals) {
|
130
167
|
if (typeof planck !== "string" || typeof tokenDecimals !== "number") return;
|
131
|
-
const base =
|
132
|
-
const exponent =
|
133
|
-
const multiplier = base
|
168
|
+
const base = 10;
|
169
|
+
const exponent = -1 * tokenDecimals;
|
170
|
+
const multiplier = base ** exponent;
|
134
171
|
return new BigNumber(planck).multipliedBy(multiplier).toString(10);
|
135
172
|
}
|
136
173
|
|
@@ -140,9 +177,9 @@ const throwAfter = (ms, reason) => new Promise((_, reject) => setTimeout(() => r
|
|
140
177
|
|
141
178
|
function tokensToPlanck(tokens, tokenDecimals) {
|
142
179
|
if (typeof tokens !== "string" || typeof tokenDecimals !== "number") return;
|
143
|
-
const base =
|
144
|
-
const exponent =
|
145
|
-
const multiplier = base
|
180
|
+
const base = 10;
|
181
|
+
const exponent = tokenDecimals;
|
182
|
+
const multiplier = base ** exponent;
|
146
183
|
return new BigNumber(tokens).multipliedBy(multiplier).toString(10);
|
147
184
|
}
|
148
185
|
|
@@ -151,4 +188,4 @@ function twox64Concat(input) {
|
|
151
188
|
return u8aToHex(u8aConcat(xxhashAsU8a(input, bitLength), u8aToU8a(input)));
|
152
189
|
}
|
153
190
|
|
154
|
-
export { BigMath, MAX_DECIMALS_FORMAT, blake2Concat, classNames, decodeAnyAddress, encodeAnyAddress, formatDecimals, getBase64ImageUrl, hasOwnProperty, isArrayOf, planckToTokens, sleep, throwAfter, tokensToPlanck, twox64Concat };
|
191
|
+
export { BigMath, Deferred, MAX_DECIMALS_FORMAT, blake2Concat, classNames, decodeAnyAddress, encodeAnyAddress, formatDecimals, getBase64ImageUrl, hasOwnProperty, isArrayOf, isEthereumAddress, planckToTokens, sleep, throwAfter, tokensToPlanck, twox64Concat };
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@talismn/util",
|
3
|
-
"version": "0.1.
|
3
|
+
"version": "0.1.9",
|
4
4
|
"author": "Talisman",
|
5
5
|
"homepage": "https://talisman.xyz",
|
6
6
|
"license": "UNLICENSED",
|
@@ -18,22 +18,22 @@
|
|
18
18
|
"/dist"
|
19
19
|
],
|
20
20
|
"engines": {
|
21
|
-
"node": ">=
|
21
|
+
"node": ">=18"
|
22
22
|
},
|
23
23
|
"scripts": {
|
24
24
|
"test": "jest",
|
25
|
-
"lint": "eslint
|
25
|
+
"lint": "eslint src --max-warnings 0",
|
26
26
|
"clean": "rm -rf dist && rm -rf .turbo rm -rf node_modules"
|
27
27
|
},
|
28
28
|
"dependencies": {
|
29
|
-
"bignumber.js": "^9.1.
|
29
|
+
"bignumber.js": "^9.1.1"
|
30
30
|
},
|
31
31
|
"devDependencies": {
|
32
|
-
"@polkadot/keyring": "^
|
33
|
-
"@polkadot/util": "^
|
34
|
-
"@polkadot/util-crypto": "^
|
35
|
-
"@talismn/eslint-config": "
|
36
|
-
"@talismn/tsconfig": "
|
32
|
+
"@polkadot/keyring": "^12.2.1",
|
33
|
+
"@polkadot/util": "^12.2.1",
|
34
|
+
"@polkadot/util-crypto": "^12.2.1",
|
35
|
+
"@talismn/eslint-config": "0.0.2",
|
36
|
+
"@talismn/tsconfig": "0.0.2",
|
37
37
|
"@types/jest": "^27.5.1",
|
38
38
|
"eslint": "^8.4.0",
|
39
39
|
"jest": "^28.1.0",
|
@@ -41,9 +41,9 @@
|
|
41
41
|
"typescript": "^4.6.4"
|
42
42
|
},
|
43
43
|
"peerDependencies": {
|
44
|
-
"@polkadot/keyring": "
|
45
|
-
"@polkadot/util": "
|
46
|
-
"@polkadot/util-crypto": "
|
44
|
+
"@polkadot/keyring": "12.x",
|
45
|
+
"@polkadot/util": "12.x",
|
46
|
+
"@polkadot/util-crypto": "12.x"
|
47
47
|
},
|
48
48
|
"eslintConfig": {
|
49
49
|
"root": true,
|