@hairy/ether-lib 1.1.1 → 1.6.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/{LICENSE → LICENSE.md} +1 -3
- package/README.md +36 -0
- package/dist/index.cjs +6 -6
- package/dist/index.d.ts +42 -42
- package/dist/index.global.js +205 -0
- package/dist/{index.mjs → index.js} +2 -2
- package/package.json +25 -11
package/{LICENSE → LICENSE.md}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025-PRESENT Hairyf <https://github.com/antfu>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -19,5 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
|
22
|
-
|
|
23
|
-
|
package/README.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# @hairy/ether-lib
|
|
2
|
+
|
|
3
|
+
[![npm version][npm-version-src]][npm-version-href]
|
|
4
|
+
[![npm downloads][npm-downloads-src]][npm-downloads-href]
|
|
5
|
+
[![bundle][bundle-src]][bundle-href]
|
|
6
|
+
[![JSDocs][jsdocs-src]][jsdocs-href]
|
|
7
|
+
[![License][license-src]][license-href]
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
ni @hairy/ether-lib
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## CDN
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<script src="https://unpkg.com/@hairy/ether-lib"></script>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## License
|
|
22
|
+
|
|
23
|
+
[MIT](./LICENSE) License © [Hairyf](https://github.com/hairyf)
|
|
24
|
+
|
|
25
|
+
<!-- Badges -->
|
|
26
|
+
|
|
27
|
+
[npm-version-src]: https://img.shields.io/npm/v/@hairy/ether-lib?style=flat&colorA=080f12&colorB=1fa669
|
|
28
|
+
[npm-version-href]: https://npmjs.com/package/@hairy/ether-lib
|
|
29
|
+
[npm-downloads-src]: https://img.shields.io/npm/dm/@hairy/ether-lib?style=flat&colorA=080f12&colorB=1fa669
|
|
30
|
+
[npm-downloads-href]: https://npmjs.com/package/@hairy/ether-lib
|
|
31
|
+
[bundle-src]: https://img.shields.io/bundlephobia/minzip/@hairy/ether-lib?style=flat&colorA=080f12&colorB=1fa669&label=minzip
|
|
32
|
+
[bundle-href]: https://bundlephobia.com/result?p=@hairy/ether-lib
|
|
33
|
+
[license-src]: https://img.shields.io/github/license/hairyf/hairylib.svg?style=flat&colorA=080f12&colorB=1fa669
|
|
34
|
+
[license-href]: https://github.com/hairyf/hairylib/blob/main/LICENSE
|
|
35
|
+
[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669
|
|
36
|
+
[jsdocs-href]: https://www.jsdocs.io/package/@hairy/ether-lib
|
package/dist/index.cjs
CHANGED
|
@@ -28,8 +28,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
30
|
// src/index.ts
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
33
|
Bignumber: () => import_utils.Bignumber,
|
|
34
34
|
Errors: () => Errors,
|
|
35
35
|
formatEther: () => formatEther,
|
|
@@ -37,7 +37,7 @@ __export(src_exports, {
|
|
|
37
37
|
subscribeForTransaction: () => subscribeForTransaction,
|
|
38
38
|
wait: () => wait
|
|
39
39
|
});
|
|
40
|
-
module.exports = __toCommonJS(
|
|
40
|
+
module.exports = __toCommonJS(index_exports);
|
|
41
41
|
|
|
42
42
|
// src/constants.ts
|
|
43
43
|
var Errors = /* @__PURE__ */ ((Errors2) => {
|
|
@@ -70,8 +70,8 @@ function idprefix(errorCallString) {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
// src/number.ts
|
|
73
|
-
var import_ethers2 = require("ethers");
|
|
74
73
|
var import_utils = require("@hairy/utils");
|
|
74
|
+
var import_ethers2 = require("ethers");
|
|
75
75
|
function formatEther(value = "0", options = {}) {
|
|
76
76
|
const { separator = false, decimals, delimiters = false, rounding, zeromove = true } = options;
|
|
77
77
|
const number = (0, import_ethers2.formatEther)((0, import_utils.unum)((0, import_utils.numerfix)(value)).toFixed(0));
|
|
@@ -87,7 +87,7 @@ function formatEther(value = "0", options = {}) {
|
|
|
87
87
|
|
|
88
88
|
// src/wait.ts
|
|
89
89
|
var import_ethers3 = require("ethers");
|
|
90
|
-
var import_mitt = __toESM(require("mitt"));
|
|
90
|
+
var import_mitt = __toESM(require("mitt"), 1);
|
|
91
91
|
var emitter = (0, import_mitt.default)();
|
|
92
92
|
for (const Response of [import_ethers3.TransactionResponse, import_ethers3.ContractTransactionResponse]) {
|
|
93
93
|
const waitForTransaction = Response.prototype.wait;
|
|
@@ -111,7 +111,7 @@ async function wait(transaction) {
|
|
|
111
111
|
transaction = await transaction();
|
|
112
112
|
if (transaction instanceof Promise)
|
|
113
113
|
transaction = await transaction;
|
|
114
|
-
const receipt = await transaction.getTransaction().then((transaction2) => transaction2
|
|
114
|
+
const receipt = await transaction.getTransaction().then((transaction2) => transaction2?._wait());
|
|
115
115
|
emitter.emit("after", receipt);
|
|
116
116
|
return receipt;
|
|
117
117
|
} catch (error) {
|
package/dist/index.d.ts
CHANGED
|
@@ -3,53 +3,53 @@ export { Bignumber } from '@hairy/utils';
|
|
|
3
3
|
import * as mitt from 'mitt';
|
|
4
4
|
import { TransactionResponse, ContractTransactionResponse, TransactionReceipt } from 'ethers';
|
|
5
5
|
|
|
6
|
-
declare enum Errors {
|
|
7
|
-
UNKNOWN_ERROR = "UNKNOWN_ERROR",
|
|
8
|
-
NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
|
|
9
|
-
UNSUPPORTED_OPERATION = "UNSUPPORTED_OPERATION",
|
|
10
|
-
NETWORK_ERROR = "NETWORK_ERROR",
|
|
11
|
-
SERVER_ERROR = "SERVER_ERROR",
|
|
12
|
-
TIMEOUT = "TIMEOUT",
|
|
13
|
-
BUFFER_OVERRUN = "BUFFER_OVERRUN",
|
|
14
|
-
NUMERIC_FAULT = "NUMERIC_FAULT",
|
|
15
|
-
MISSING_NEW = "MISSING_NEW",
|
|
16
|
-
INVALID_ARGUMENT = "INVALID_ARGUMENT",
|
|
17
|
-
MISSING_ARGUMENT = "MISSING_ARGUMENT",
|
|
18
|
-
UNEXPECTED_ARGUMENT = "UNEXPECTED_ARGUMENT",
|
|
19
|
-
CALL_EXCEPTION = "CALL_EXCEPTION",
|
|
20
|
-
INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
|
|
21
|
-
NONCE_EXPIRED = "NONCE_EXPIRED",
|
|
22
|
-
REPLACEMENT_UNDERPRICED = "REPLACEMENT_UNDERPRICED",
|
|
23
|
-
UNPREDICTABLE_GAS_LIMIT = "UNPREDICTABLE_GAS_LIMIT",
|
|
24
|
-
TRANSACTION_REPLACED = "TRANSACTION_REPLACED",
|
|
25
|
-
ACTION_REJECTED = "ACTION_REJECTED"
|
|
6
|
+
declare enum Errors {
|
|
7
|
+
UNKNOWN_ERROR = "UNKNOWN_ERROR",
|
|
8
|
+
NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
|
|
9
|
+
UNSUPPORTED_OPERATION = "UNSUPPORTED_OPERATION",
|
|
10
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
11
|
+
SERVER_ERROR = "SERVER_ERROR",
|
|
12
|
+
TIMEOUT = "TIMEOUT",
|
|
13
|
+
BUFFER_OVERRUN = "BUFFER_OVERRUN",
|
|
14
|
+
NUMERIC_FAULT = "NUMERIC_FAULT",
|
|
15
|
+
MISSING_NEW = "MISSING_NEW",
|
|
16
|
+
INVALID_ARGUMENT = "INVALID_ARGUMENT",
|
|
17
|
+
MISSING_ARGUMENT = "MISSING_ARGUMENT",
|
|
18
|
+
UNEXPECTED_ARGUMENT = "UNEXPECTED_ARGUMENT",
|
|
19
|
+
CALL_EXCEPTION = "CALL_EXCEPTION",
|
|
20
|
+
INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
|
|
21
|
+
NONCE_EXPIRED = "NONCE_EXPIRED",
|
|
22
|
+
REPLACEMENT_UNDERPRICED = "REPLACEMENT_UNDERPRICED",
|
|
23
|
+
UNPREDICTABLE_GAS_LIMIT = "UNPREDICTABLE_GAS_LIMIT",
|
|
24
|
+
TRANSACTION_REPLACED = "TRANSACTION_REPLACED",
|
|
25
|
+
ACTION_REJECTED = "ACTION_REJECTED"
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
declare function idprefix(errorCallString: string): string;
|
|
29
29
|
|
|
30
|
-
interface FormatEtherOptions {
|
|
31
|
-
delimiters?: Delimiter[] | boolean;
|
|
32
|
-
separator?: boolean;
|
|
33
|
-
rounding?: Bignumber.RoundingMode;
|
|
34
|
-
zeromove?: boolean;
|
|
35
|
-
decimals?: number;
|
|
36
|
-
format?: Bignumber.Format;
|
|
37
|
-
}
|
|
30
|
+
interface FormatEtherOptions {
|
|
31
|
+
delimiters?: Delimiter[] | boolean;
|
|
32
|
+
separator?: boolean;
|
|
33
|
+
rounding?: Bignumber.RoundingMode;
|
|
34
|
+
zeromove?: boolean;
|
|
35
|
+
decimals?: number;
|
|
36
|
+
format?: Bignumber.Format;
|
|
37
|
+
}
|
|
38
38
|
declare function formatEther(value?: Numberish, options?: FormatEtherOptions): string;
|
|
39
39
|
|
|
40
|
-
type GenericTransactionResponse = TransactionResponse | ContractTransactionResponse | Promise<TransactionResponse | ContractTransactionResponse> | (() => TransactionResponse | ContractTransactionResponse) | (() => Promise<TransactionResponse | ContractTransactionResponse>);
|
|
41
|
-
declare function wait(transaction: GenericTransactionResponse): Promise<any>;
|
|
42
|
-
declare const subscribeForTransaction: {
|
|
43
|
-
<Key extends "before" | "after" | "error">(type: Key, handler: mitt.Handler<{
|
|
44
|
-
before: void;
|
|
45
|
-
after: TransactionReceipt | null;
|
|
46
|
-
error: Error;
|
|
47
|
-
}[Key]>): void;
|
|
48
|
-
(type: "*", handler: mitt.WildcardHandler<{
|
|
49
|
-
before: void;
|
|
50
|
-
after: TransactionReceipt | null;
|
|
51
|
-
error: Error;
|
|
52
|
-
}>): void;
|
|
40
|
+
type GenericTransactionResponse = TransactionResponse | ContractTransactionResponse | Promise<TransactionResponse | ContractTransactionResponse> | (() => TransactionResponse | ContractTransactionResponse) | (() => Promise<TransactionResponse | ContractTransactionResponse>);
|
|
41
|
+
declare function wait(transaction: GenericTransactionResponse): Promise<any>;
|
|
42
|
+
declare const subscribeForTransaction: {
|
|
43
|
+
<Key extends "before" | "after" | "error">(type: Key, handler: mitt.Handler<{
|
|
44
|
+
before: void;
|
|
45
|
+
after: TransactionReceipt | null;
|
|
46
|
+
error: Error;
|
|
47
|
+
}[Key]>): void;
|
|
48
|
+
(type: "*", handler: mitt.WildcardHandler<{
|
|
49
|
+
before: void;
|
|
50
|
+
after: TransactionReceipt | null;
|
|
51
|
+
error: Error;
|
|
52
|
+
}>): void;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
export { Errors, FormatEtherOptions, GenericTransactionResponse, formatEther, idprefix, subscribeForTransaction, wait };
|
|
55
|
+
export { Errors, type FormatEtherOptions, type GenericTransactionResponse, formatEther, idprefix, subscribeForTransaction, wait };
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(() => {
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
10
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
|
|
29
|
+
// globals:ethers
|
|
30
|
+
var require_ethers = __commonJS({
|
|
31
|
+
"globals:ethers"(exports, module) {
|
|
32
|
+
"use strict";
|
|
33
|
+
module.exports = ethers;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// globals:bignumber.js
|
|
38
|
+
var require_bignumber = __commonJS({
|
|
39
|
+
"globals:bignumber.js"(exports, module) {
|
|
40
|
+
"use strict";
|
|
41
|
+
module.exports = BigNumber;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// src/constants.ts
|
|
46
|
+
var Errors = /* @__PURE__ */ ((Errors2) => {
|
|
47
|
+
Errors2["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
48
|
+
Errors2["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
|
|
49
|
+
Errors2["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
|
|
50
|
+
Errors2["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
51
|
+
Errors2["SERVER_ERROR"] = "SERVER_ERROR";
|
|
52
|
+
Errors2["TIMEOUT"] = "TIMEOUT";
|
|
53
|
+
Errors2["BUFFER_OVERRUN"] = "BUFFER_OVERRUN";
|
|
54
|
+
Errors2["NUMERIC_FAULT"] = "NUMERIC_FAULT";
|
|
55
|
+
Errors2["MISSING_NEW"] = "MISSING_NEW";
|
|
56
|
+
Errors2["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
|
|
57
|
+
Errors2["MISSING_ARGUMENT"] = "MISSING_ARGUMENT";
|
|
58
|
+
Errors2["UNEXPECTED_ARGUMENT"] = "UNEXPECTED_ARGUMENT";
|
|
59
|
+
Errors2["CALL_EXCEPTION"] = "CALL_EXCEPTION";
|
|
60
|
+
Errors2["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
|
|
61
|
+
Errors2["NONCE_EXPIRED"] = "NONCE_EXPIRED";
|
|
62
|
+
Errors2["REPLACEMENT_UNDERPRICED"] = "REPLACEMENT_UNDERPRICED";
|
|
63
|
+
Errors2["UNPREDICTABLE_GAS_LIMIT"] = "UNPREDICTABLE_GAS_LIMIT";
|
|
64
|
+
Errors2["TRANSACTION_REPLACED"] = "TRANSACTION_REPLACED";
|
|
65
|
+
Errors2["ACTION_REJECTED"] = "ACTION_REJECTED";
|
|
66
|
+
return Errors2;
|
|
67
|
+
})(Errors || {});
|
|
68
|
+
|
|
69
|
+
// src/hash.ts
|
|
70
|
+
var import_ethers = __toESM(require_ethers(), 1);
|
|
71
|
+
function idprefix(errorCallString) {
|
|
72
|
+
return (0, import_ethers.id)(errorCallString).slice(0, 10);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ../util-core/src/number/index.ts
|
|
76
|
+
var import_bignumber = __toESM(require_bignumber(), 1);
|
|
77
|
+
var BIG_INTS = {
|
|
78
|
+
t: { v: 10 ** 12, d: 13, n: "t" },
|
|
79
|
+
b: { v: 10 ** 9, d: 10, n: "b" },
|
|
80
|
+
m: { v: 10 ** 6, d: 7, n: "m" },
|
|
81
|
+
k: { v: 10 ** 3, d: 4, n: "k" }
|
|
82
|
+
};
|
|
83
|
+
function unum(num = "0") {
|
|
84
|
+
return new import_bignumber.default(numerfix(num));
|
|
85
|
+
}
|
|
86
|
+
function gte(num, n) {
|
|
87
|
+
return unum(num).gte(unum(n));
|
|
88
|
+
}
|
|
89
|
+
function lt(num, n) {
|
|
90
|
+
return unum(num).lt(unum(n));
|
|
91
|
+
}
|
|
92
|
+
function zeromove(value) {
|
|
93
|
+
return value.toString().replace(/\.?0+$/, "");
|
|
94
|
+
}
|
|
95
|
+
function numerfix(value) {
|
|
96
|
+
const _isNaN = Number.isNaN(Number(value)) || value.toString() === "NaN";
|
|
97
|
+
if (_isNaN)
|
|
98
|
+
console.warn(`numerfix(${value}): value is not the correct value. To ensure the normal operation of the program, it will be converted to zero`);
|
|
99
|
+
return _isNaN ? "0" : String(value);
|
|
100
|
+
}
|
|
101
|
+
function parseNumeric(num, delimiters = ["t", "b", "m"]) {
|
|
102
|
+
const mappings = [
|
|
103
|
+
delimiters.includes("t") && ((n) => gte(n, BIG_INTS.t.v) && BIG_INTS.t),
|
|
104
|
+
delimiters.includes("b") && ((n) => gte(n, BIG_INTS.b.v) && lt(n, BIG_INTS.t.v) && BIG_INTS.b),
|
|
105
|
+
delimiters.includes("m") && ((n) => gte(n, BIG_INTS.m.v) && lt(n, BIG_INTS.b.v) && BIG_INTS.m),
|
|
106
|
+
delimiters.includes("k") && ((n) => gte(n, BIG_INTS.k.v) && lt(n, BIG_INTS.m.v) && BIG_INTS.k)
|
|
107
|
+
];
|
|
108
|
+
let options;
|
|
109
|
+
for (const analy of mappings) {
|
|
110
|
+
const opts = analy && analy(unum(num).toFixed(0));
|
|
111
|
+
opts && (options = opts);
|
|
112
|
+
}
|
|
113
|
+
return options || { v: 1, d: 0, n: "" };
|
|
114
|
+
}
|
|
115
|
+
function formatNumeric(value = "0", options) {
|
|
116
|
+
const {
|
|
117
|
+
rounding = import_bignumber.default.ROUND_DOWN,
|
|
118
|
+
delimiters,
|
|
119
|
+
format,
|
|
120
|
+
decimals = 2
|
|
121
|
+
} = options || {};
|
|
122
|
+
const config = parseNumeric(value, delimiters || []);
|
|
123
|
+
let number = unum(value).div(config.v).toFormat(decimals, rounding, {
|
|
124
|
+
decimalSeparator: ".",
|
|
125
|
+
groupSeparator: ",",
|
|
126
|
+
groupSize: 3,
|
|
127
|
+
secondaryGroupSize: 0,
|
|
128
|
+
fractionGroupSeparator: " ",
|
|
129
|
+
fractionGroupSize: 0,
|
|
130
|
+
...format
|
|
131
|
+
});
|
|
132
|
+
number = options?.zeromove ? zeromove(number) : number;
|
|
133
|
+
return `${number}${config.n}`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// src/number.ts
|
|
137
|
+
var import_ethers2 = __toESM(require_ethers(), 1);
|
|
138
|
+
function formatEther(value = "0", options = {}) {
|
|
139
|
+
const { separator = false, decimals, delimiters = false, rounding, zeromove: zeromove2 = true } = options;
|
|
140
|
+
const number = (0, import_ethers2.formatEther)(unum(numerfix(value)).toFixed(0));
|
|
141
|
+
const groupSeparator = separator === false ? "" : ",";
|
|
142
|
+
return formatNumeric(number, {
|
|
143
|
+
format: { groupSeparator, ...options.format },
|
|
144
|
+
delimiters: typeof delimiters === "boolean" ? delimiters && ["m", "b", "t"] : delimiters,
|
|
145
|
+
decimals,
|
|
146
|
+
rounding,
|
|
147
|
+
zeromove: zeromove2
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/wait.ts
|
|
152
|
+
var import_ethers3 = __toESM(require_ethers(), 1);
|
|
153
|
+
|
|
154
|
+
// ../../node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs
|
|
155
|
+
function mitt_default(n) {
|
|
156
|
+
return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {
|
|
157
|
+
var i = n.get(t);
|
|
158
|
+
i ? i.push(e) : n.set(t, [e]);
|
|
159
|
+
}, off: function(t, e) {
|
|
160
|
+
var i = n.get(t);
|
|
161
|
+
i && (e ? i.splice(i.indexOf(e) >>> 0, 1) : n.set(t, []));
|
|
162
|
+
}, emit: function(t, e) {
|
|
163
|
+
var i = n.get(t);
|
|
164
|
+
i && i.slice().map(function(n2) {
|
|
165
|
+
n2(e);
|
|
166
|
+
}), (i = n.get("*")) && i.slice().map(function(n2) {
|
|
167
|
+
n2(t, e);
|
|
168
|
+
});
|
|
169
|
+
} };
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// src/wait.ts
|
|
173
|
+
var emitter = mitt_default();
|
|
174
|
+
for (const Response of [import_ethers3.TransactionResponse, import_ethers3.ContractTransactionResponse]) {
|
|
175
|
+
const waitForTransaction = Response.prototype.wait;
|
|
176
|
+
Response.prototype._wait = waitForTransaction;
|
|
177
|
+
Response.prototype.wait = async function(...args) {
|
|
178
|
+
try {
|
|
179
|
+
emitter.emit("before");
|
|
180
|
+
const receipt = await waitForTransaction.call(this, ...args);
|
|
181
|
+
emitter.emit("after", receipt);
|
|
182
|
+
return receipt;
|
|
183
|
+
} catch (error) {
|
|
184
|
+
emitter.emit("error", error);
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async function wait(transaction) {
|
|
190
|
+
try {
|
|
191
|
+
emitter.emit("before");
|
|
192
|
+
if (typeof transaction === "function")
|
|
193
|
+
transaction = await transaction();
|
|
194
|
+
if (transaction instanceof Promise)
|
|
195
|
+
transaction = await transaction;
|
|
196
|
+
const receipt = await transaction.getTransaction().then((transaction2) => transaction2?._wait());
|
|
197
|
+
emitter.emit("after", receipt);
|
|
198
|
+
return receipt;
|
|
199
|
+
} catch (error) {
|
|
200
|
+
emitter.emit("error", error);
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
var subscribeForTransaction = emitter.on.bind(emitter);
|
|
205
|
+
})();
|
|
@@ -29,8 +29,8 @@ function idprefix(errorCallString) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// src/number.ts
|
|
32
|
-
import { formatEther as _formatEther } from "ethers";
|
|
33
32
|
import { Bignumber, formatNumeric, numerfix, unum } from "@hairy/utils";
|
|
33
|
+
import { formatEther as _formatEther } from "ethers";
|
|
34
34
|
function formatEther(value = "0", options = {}) {
|
|
35
35
|
const { separator = false, decimals, delimiters = false, rounding, zeromove = true } = options;
|
|
36
36
|
const number = _formatEther(unum(numerfix(value)).toFixed(0));
|
|
@@ -70,7 +70,7 @@ async function wait(transaction) {
|
|
|
70
70
|
transaction = await transaction();
|
|
71
71
|
if (transaction instanceof Promise)
|
|
72
72
|
transaction = await transaction;
|
|
73
|
-
const receipt = await transaction.getTransaction().then((transaction2) => transaction2
|
|
73
|
+
const receipt = await transaction.getTransaction().then((transaction2) => transaction2?._wait());
|
|
74
74
|
emitter.emit("after", receipt);
|
|
75
75
|
return receipt;
|
|
76
76
|
} catch (error) {
|
package/package.json
CHANGED
|
@@ -1,33 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hairy/ether-lib",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "1.6.0",
|
|
5
|
+
"description": "Library for ether",
|
|
6
|
+
"author": "Hairyf <wwu710632@gmail.com>",
|
|
4
7
|
"license": "MIT",
|
|
5
|
-
"
|
|
8
|
+
"funding": "https://github.com/sponsors/hairyf",
|
|
9
|
+
"homepage": "https://github.com/hairyf/hairylib#readme",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/hairyf/hairylib.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": "https://github.com/hairyf/hairylib/issues",
|
|
15
|
+
"keywords": [],
|
|
16
|
+
"sideEffects": false,
|
|
17
|
+
"main": "./dist/index.js",
|
|
6
18
|
"publishConfig": {
|
|
7
|
-
"jsdelivr": "./dist/index.
|
|
19
|
+
"jsdelivr": "./dist/index.global.js"
|
|
8
20
|
},
|
|
9
21
|
"files": [
|
|
10
22
|
"dist"
|
|
11
23
|
],
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"ethers": ">=6"
|
|
26
|
+
},
|
|
12
27
|
"dependencies": {
|
|
13
28
|
"mitt": "^3.0.1",
|
|
14
|
-
"@hairy/utils": "
|
|
29
|
+
"@hairy/utils": "1.6.0"
|
|
15
30
|
},
|
|
16
31
|
"devDependencies": {
|
|
17
32
|
"ethers": "^6"
|
|
18
33
|
},
|
|
19
|
-
"peerDependencies": {
|
|
20
|
-
"ethers": ">=6"
|
|
21
|
-
},
|
|
22
34
|
"scripts": {
|
|
23
|
-
"build": "
|
|
35
|
+
"build": "tsup",
|
|
36
|
+
"dev": "tsup --watch",
|
|
37
|
+
"start": "tsx src/index.ts"
|
|
24
38
|
},
|
|
25
|
-
"module": "./dist/index.
|
|
39
|
+
"module": "./dist/index.js",
|
|
26
40
|
"types": "./dist/index.d.ts",
|
|
27
|
-
"unpkg": "./dist/index.
|
|
41
|
+
"unpkg": "./dist/index.global.js",
|
|
28
42
|
"exports": {
|
|
29
43
|
".": {
|
|
30
|
-
"import": "./dist/index.
|
|
44
|
+
"import": "./dist/index.js",
|
|
31
45
|
"require": "./dist/index.cjs",
|
|
32
46
|
"types": "./dist/index.d.ts"
|
|
33
47
|
},
|