hermes-swap 0.0.14 → 0.0.16
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 +101 -12
- package/dist/cjs/abis/aggregator.js +427 -427
- package/dist/cjs/abis/quoter.js +305 -305
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +92 -2
- package/dist/esm/abis/aggregator.js +436 -436
- package/dist/esm/abis/quoter.js +296 -296
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +147 -6
- package/package.json +3 -3
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { IExpectParams, ISwapParams, IBridgeParams, ISwapAndBridgeParams, IReceipt, IConfig } from './types';
|
|
1
|
+
import { IExpectParams, ISwapParams, IBridgeParams, ISwapAndBridgeParams, IReceipt, IConfig, ChainNameEnum, AddressConst, IExpectPayload, DexType, IRouterPath } from './types';
|
|
2
|
+
export { IExpectParams, ISwapParams, IBridgeParams, ISwapAndBridgeParams, IReceipt, IConfig, ChainNameEnum, AddressConst, IExpectPayload, DexType, IRouterPath };
|
|
2
3
|
declare class Hermes {
|
|
3
4
|
private config;
|
|
4
5
|
private providerMap;
|
|
@@ -16,3 +17,4 @@ declare class Hermes {
|
|
|
16
17
|
private getAggregatorAddress;
|
|
17
18
|
}
|
|
18
19
|
export default Hermes;
|
|
20
|
+
export { Hermes };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
2
3
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
4
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
5
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
@@ -14,9 +15,14 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
14
15
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
16
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
17
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
18
|
+
import { IExpectParams, ISwapParams, IBridgeParams, ISwapAndBridgeParams, IReceipt, IConfig, ChainNameEnum, AddressConst, IExpectPayload, DexType, IRouterPath } from "./types";
|
|
17
19
|
import { ethers } from 'ethers';
|
|
18
20
|
import { Contract } from 'ethers';
|
|
19
21
|
import QuoterAbi from "./abis/quoter";
|
|
22
|
+
import AggregatorAbi from "./abis/aggregator";
|
|
23
|
+
|
|
24
|
+
// 导出所有类型定义,方便用户使用
|
|
25
|
+
export { IExpectParams, ISwapParams, IBridgeParams, ISwapAndBridgeParams, IReceipt, IConfig, ChainNameEnum, AddressConst, IExpectPayload, DexType, IRouterPath };
|
|
20
26
|
var Hermes = /*#__PURE__*/function () {
|
|
21
27
|
function Hermes(config) {
|
|
22
28
|
_classCallCheck(this, Hermes);
|
|
@@ -113,18 +119,150 @@ var Hermes = /*#__PURE__*/function () {
|
|
|
113
119
|
key: "swap",
|
|
114
120
|
value: function () {
|
|
115
121
|
var _swap = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(params) {
|
|
116
|
-
var receipt;
|
|
122
|
+
var fromTokenAddress, toTokenAddress, aggregatorAddress, executorWallet, aggregator, swapParams, erc20, userBalance, currentAllowance, gas, txResponse, receipt, iface, amountOut, _iterator, _step, log, parsed;
|
|
117
123
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
118
124
|
while (1) switch (_context2.prev = _context2.next) {
|
|
119
125
|
case 0:
|
|
120
126
|
this.validateParams(params);
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
if (params.path.length) {
|
|
128
|
+
_context2.next = 3;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
throw new Error('Swap path not provided');
|
|
123
132
|
case 3:
|
|
133
|
+
fromTokenAddress = params.path[0].fromCoinAddress;
|
|
134
|
+
toTokenAddress = params.path[params.path.length - 1].toCoinAddress;
|
|
135
|
+
aggregatorAddress = this.getAggregatorAddress(params.chain);
|
|
136
|
+
executorWallet = this.executorMap.get(params.chain);
|
|
137
|
+
if (executorWallet) {
|
|
138
|
+
_context2.next = 9;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
throw new Error("Executor wallet not configured for chain: ".concat(params.chain));
|
|
142
|
+
case 9:
|
|
143
|
+
aggregator = new Contract(aggregatorAddress, AggregatorAbi, executorWallet);
|
|
144
|
+
swapParams = params.path.map(function (pathItem) {
|
|
145
|
+
var _pathItem$extra;
|
|
146
|
+
return {
|
|
147
|
+
dexType: pathItem.dexType,
|
|
148
|
+
pool: pathItem.poolAddress,
|
|
149
|
+
fromCoin: pathItem.fromCoinAddress,
|
|
150
|
+
toCoin: pathItem.toCoinAddress,
|
|
151
|
+
extra: (_pathItem$extra = pathItem.extra) !== null && _pathItem$extra !== void 0 ? _pathItem$extra : '0x'
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
erc20 = new Contract(fromTokenAddress, ['function balanceOf(address) view returns (uint256)', 'function allowance(address, address) view returns (uint256)'], executorWallet);
|
|
155
|
+
_context2.next = 14;
|
|
156
|
+
return erc20.balanceOf(params.user);
|
|
157
|
+
case 14:
|
|
158
|
+
userBalance = _context2.sent;
|
|
159
|
+
if (!(userBalance < params.amountInWei)) {
|
|
160
|
+
_context2.next = 17;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
throw new Error('Insufficient balance for swap');
|
|
164
|
+
case 17:
|
|
165
|
+
_context2.next = 19;
|
|
166
|
+
return erc20.allowance(params.user, aggregatorAddress);
|
|
167
|
+
case 19:
|
|
168
|
+
currentAllowance = _context2.sent;
|
|
169
|
+
console.log(currentAllowance);
|
|
170
|
+
if (!(currentAllowance < params.amountInWei)) {
|
|
171
|
+
_context2.next = 23;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
throw new Error('Insufficient allowance token amount for swap');
|
|
175
|
+
case 23:
|
|
176
|
+
_context2.prev = 23;
|
|
177
|
+
_context2.next = 26;
|
|
178
|
+
return aggregator.getFunction('swap').estimateGas(params.user, params.amountInWei, swapParams, params.minAmountOutList, {
|
|
179
|
+
from: executorWallet.address
|
|
180
|
+
});
|
|
181
|
+
case 26:
|
|
182
|
+
gas = _context2.sent;
|
|
183
|
+
console.log("Estimated gas for swap: ".concat(BigInt(gas).toString()));
|
|
184
|
+
_context2.next = 34;
|
|
185
|
+
break;
|
|
186
|
+
case 30:
|
|
187
|
+
_context2.prev = 30;
|
|
188
|
+
_context2.t0 = _context2["catch"](23);
|
|
189
|
+
console.warn('Aggregator estimateGas.swap failed', _context2.t0);
|
|
190
|
+
throw _context2.t0;
|
|
191
|
+
case 34:
|
|
192
|
+
_context2.prev = 34;
|
|
193
|
+
_context2.next = 37;
|
|
194
|
+
return aggregator.getFunction('swap')(params.user, params.amountInWei, swapParams, params.minAmountOutList, {
|
|
195
|
+
from: executorWallet.address
|
|
196
|
+
});
|
|
197
|
+
case 37:
|
|
198
|
+
txResponse = _context2.sent;
|
|
199
|
+
_context2.next = 44;
|
|
200
|
+
break;
|
|
201
|
+
case 40:
|
|
202
|
+
_context2.prev = 40;
|
|
203
|
+
_context2.t1 = _context2["catch"](34);
|
|
204
|
+
console.error('Aggregator swap transaction failed', _context2.t1);
|
|
205
|
+
throw _context2.t1;
|
|
206
|
+
case 44:
|
|
207
|
+
_context2.next = 46;
|
|
208
|
+
return txResponse.wait();
|
|
209
|
+
case 46:
|
|
210
|
+
receipt = _context2.sent;
|
|
211
|
+
console.log("Swap transaction mined in block ".concat(receipt.blockNumber, " (tx: ").concat(receipt.hash, ")"));
|
|
212
|
+
iface = new ethers.Interface(AggregatorAbi);
|
|
213
|
+
amountOut = params.amountInWei;
|
|
214
|
+
_iterator = _createForOfIteratorHelper(receipt.logs);
|
|
215
|
+
_context2.prev = 51;
|
|
216
|
+
_iterator.s();
|
|
217
|
+
case 53:
|
|
218
|
+
if ((_step = _iterator.n()).done) {
|
|
219
|
+
_context2.next = 67;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
log = _step.value;
|
|
223
|
+
if (!(log.address.toLowerCase() === aggregatorAddress.toLowerCase())) {
|
|
224
|
+
_context2.next = 65;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
_context2.prev = 56;
|
|
228
|
+
parsed = iface.parseLog(log);
|
|
229
|
+
if (!(parsed && parsed.name === 'Swapped' && parsed.args && parsed.args.amountOut !== undefined)) {
|
|
230
|
+
_context2.next = 61;
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
amountOut = parsed.args.amountOut;
|
|
234
|
+
return _context2.abrupt("break", 67);
|
|
235
|
+
case 61:
|
|
236
|
+
_context2.next = 65;
|
|
237
|
+
break;
|
|
238
|
+
case 63:
|
|
239
|
+
_context2.prev = 63;
|
|
240
|
+
_context2.t2 = _context2["catch"](56);
|
|
241
|
+
case 65:
|
|
242
|
+
_context2.next = 53;
|
|
243
|
+
break;
|
|
244
|
+
case 67:
|
|
245
|
+
_context2.next = 72;
|
|
246
|
+
break;
|
|
247
|
+
case 69:
|
|
248
|
+
_context2.prev = 69;
|
|
249
|
+
_context2.t3 = _context2["catch"](51);
|
|
250
|
+
_iterator.e(_context2.t3);
|
|
251
|
+
case 72:
|
|
252
|
+
_context2.prev = 72;
|
|
253
|
+
_iterator.f();
|
|
254
|
+
return _context2.finish(72);
|
|
255
|
+
case 75:
|
|
256
|
+
return _context2.abrupt("return", {
|
|
257
|
+
fromToken: fromTokenAddress,
|
|
258
|
+
toToken: toTokenAddress,
|
|
259
|
+
amountOut: amountOut
|
|
260
|
+
});
|
|
261
|
+
case 76:
|
|
124
262
|
case "end":
|
|
125
263
|
return _context2.stop();
|
|
126
264
|
}
|
|
127
|
-
}, _callee2, this);
|
|
265
|
+
}, _callee2, this, [[23, 30], [34, 40], [51, 69, 72, 75], [56, 63]]);
|
|
128
266
|
}));
|
|
129
267
|
function swap(_x2) {
|
|
130
268
|
return _swap.apply(this, arguments);
|
|
@@ -204,5 +342,8 @@ var Hermes = /*#__PURE__*/function () {
|
|
|
204
342
|
}
|
|
205
343
|
}]);
|
|
206
344
|
return Hermes;
|
|
207
|
-
}();
|
|
208
|
-
export default Hermes;
|
|
345
|
+
}(); // 默认导出 Hermes 类
|
|
346
|
+
export default Hermes;
|
|
347
|
+
|
|
348
|
+
// 同时提供命名导出,方便不同使用场景
|
|
349
|
+
export { Hermes };
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hermes-swap",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"description": "A TypeScript utility library for swap and bridge",
|
|
5
|
-
"main": "dist/
|
|
6
|
-
"types": "dist/
|
|
5
|
+
"main": "dist/esm/index.js",
|
|
6
|
+
"types": "dist/esm/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"dev": "father dev",
|
|
9
9
|
"build": "father build",
|