@across-protocol/sdk 4.1.21 → 4.1.22

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.
Files changed (82) hide show
  1. package/dist/cjs/addressAggregator/adapters/bybit.d.ts +10 -0
  2. package/dist/cjs/addressAggregator/adapters/bybit.js +42 -0
  3. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -0
  4. package/dist/cjs/addressAggregator/adapters/env.d.ts +8 -0
  5. package/dist/cjs/addressAggregator/adapters/env.js +33 -0
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -0
  7. package/dist/cjs/addressAggregator/adapters/file.d.ts +8 -0
  8. package/dist/cjs/addressAggregator/adapters/file.js +50 -0
  9. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -0
  10. package/dist/cjs/addressAggregator/adapters/index.d.ts +3 -0
  11. package/dist/cjs/addressAggregator/adapters/index.js +8 -0
  12. package/dist/cjs/addressAggregator/adapters/index.js.map +1 -0
  13. package/dist/cjs/addressAggregator/adapters/util.d.ts +4 -0
  14. package/dist/cjs/addressAggregator/adapters/util.js +66 -0
  15. package/dist/cjs/addressAggregator/adapters/util.js.map +1 -0
  16. package/dist/cjs/addressAggregator/index.d.ts +10 -0
  17. package/dist/cjs/addressAggregator/index.js +109 -0
  18. package/dist/cjs/addressAggregator/index.js.map +1 -0
  19. package/dist/cjs/addressAggregator/types.d.ts +6 -0
  20. package/dist/cjs/addressAggregator/types.js +5 -0
  21. package/dist/cjs/addressAggregator/types.js.map +1 -0
  22. package/dist/cjs/index.d.ts +1 -0
  23. package/dist/cjs/index.js +2 -1
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/utils/LogUtils.d.ts +4 -2
  26. package/dist/cjs/utils/LogUtils.js +10 -1
  27. package/dist/cjs/utils/LogUtils.js.map +1 -1
  28. package/dist/esm/addressAggregator/adapters/bybit.d.ts +10 -0
  29. package/dist/esm/addressAggregator/adapters/bybit.js +41 -0
  30. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -0
  31. package/dist/esm/addressAggregator/adapters/env.d.ts +8 -0
  32. package/dist/esm/addressAggregator/adapters/env.js +30 -0
  33. package/dist/esm/addressAggregator/adapters/env.js.map +1 -0
  34. package/dist/esm/addressAggregator/adapters/file.d.ts +8 -0
  35. package/dist/esm/addressAggregator/adapters/file.js +47 -0
  36. package/dist/esm/addressAggregator/adapters/file.js.map +1 -0
  37. package/dist/esm/addressAggregator/adapters/index.d.ts +3 -0
  38. package/dist/esm/addressAggregator/adapters/index.js +7 -0
  39. package/dist/esm/addressAggregator/adapters/index.js.map +1 -0
  40. package/dist/esm/addressAggregator/adapters/util.d.ts +4 -0
  41. package/dist/esm/addressAggregator/adapters/util.js +60 -0
  42. package/dist/esm/addressAggregator/adapters/util.js.map +1 -0
  43. package/dist/esm/addressAggregator/index.d.ts +10 -0
  44. package/dist/esm/addressAggregator/index.js +107 -0
  45. package/dist/esm/addressAggregator/index.js.map +1 -0
  46. package/dist/esm/addressAggregator/types.d.ts +6 -0
  47. package/dist/esm/addressAggregator/types.js +2 -0
  48. package/dist/esm/addressAggregator/types.js.map +1 -0
  49. package/dist/esm/index.d.ts +1 -0
  50. package/dist/esm/index.js +2 -0
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/utils/LogUtils.d.ts +4 -2
  53. package/dist/esm/utils/LogUtils.js +10 -1
  54. package/dist/esm/utils/LogUtils.js.map +1 -1
  55. package/dist/types/addressAggregator/adapters/bybit.d.ts +11 -0
  56. package/dist/types/addressAggregator/adapters/bybit.d.ts.map +1 -0
  57. package/dist/types/addressAggregator/adapters/env.d.ts +9 -0
  58. package/dist/types/addressAggregator/adapters/env.d.ts.map +1 -0
  59. package/dist/types/addressAggregator/adapters/file.d.ts +9 -0
  60. package/dist/types/addressAggregator/adapters/file.d.ts.map +1 -0
  61. package/dist/types/addressAggregator/adapters/index.d.ts +4 -0
  62. package/dist/types/addressAggregator/adapters/index.d.ts.map +1 -0
  63. package/dist/types/addressAggregator/adapters/util.d.ts +5 -0
  64. package/dist/types/addressAggregator/adapters/util.d.ts.map +1 -0
  65. package/dist/types/addressAggregator/index.d.ts +11 -0
  66. package/dist/types/addressAggregator/index.d.ts.map +1 -0
  67. package/dist/types/addressAggregator/types.d.ts +7 -0
  68. package/dist/types/addressAggregator/types.d.ts.map +1 -0
  69. package/dist/types/index.d.ts +1 -0
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/utils/LogUtils.d.ts +4 -2
  72. package/dist/types/utils/LogUtils.d.ts.map +1 -1
  73. package/package.json +2 -2
  74. package/src/addressAggregator/adapters/bybit.ts +32 -0
  75. package/src/addressAggregator/adapters/env.ts +30 -0
  76. package/src/addressAggregator/adapters/file.ts +39 -0
  77. package/src/addressAggregator/adapters/index.ts +3 -0
  78. package/src/addressAggregator/adapters/util.ts +47 -0
  79. package/src/addressAggregator/index.ts +86 -0
  80. package/src/addressAggregator/types.ts +8 -0
  81. package/src/index.ts +1 -0
  82. package/src/utils/LogUtils.ts +3 -2
@@ -0,0 +1,47 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { readFile } from "node:fs/promises";
3
+ import { array, defaulted, string } from "superstruct";
4
+ import { logError } from "./util";
5
+ var fileConfig = defaulted(array(string()), []);
6
+ var AddressList = /** @class */ (function () {
7
+ function AddressList(path) {
8
+ if (path === void 0) { path = "./addresses.json"; }
9
+ this.path = path;
10
+ this.name = "fs:".concat(path);
11
+ }
12
+ AddressList.prototype.update = function (logger) {
13
+ return __awaiter(this, void 0, void 0, function () {
14
+ var data, err_1, addresses;
15
+ return __generator(this, function (_a) {
16
+ switch (_a.label) {
17
+ case 0:
18
+ _a.trys.push([0, 2, , 3]);
19
+ return [4 /*yield*/, readFile(this.path, { encoding: "utf8" })];
20
+ case 1:
21
+ data = _a.sent();
22
+ return [3 /*break*/, 3];
23
+ case 2:
24
+ err_1 = _a.sent();
25
+ return [2 /*return*/, logError(this.name, err_1, logger)];
26
+ case 3:
27
+ if (!data) {
28
+ return [2 /*return*/, logError(this.name, "No addresses found in \"".concat(this.path, "\""), logger)];
29
+ }
30
+ try {
31
+ addresses = JSON.parse(data);
32
+ if (!fileConfig.is(addresses)) {
33
+ return [2 /*return*/, logError(this.name, "Address format validation failure.", logger)];
34
+ }
35
+ }
36
+ catch (err) {
37
+ return [2 /*return*/, logError(this.name, err, logger)];
38
+ }
39
+ return [2 /*return*/, Promise.resolve(addresses)];
40
+ }
41
+ });
42
+ });
43
+ };
44
+ return AddressList;
45
+ }());
46
+ export { AddressList };
47
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/file.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAU,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE1C,IAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAElD;IAGE,qBAAqB,IAAyB;QAAzB,qBAAA,EAAA,yBAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;QAC5C,IAAI,CAAC,IAAI,GAAG,aAAM,IAAI,CAAE,CAAC;IAC3B,CAAC;IAEK,4BAAM,GAAZ,UAAa,MAAe;;;;;;;wBAGjB,qBAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAA;;wBAAtD,IAAI,GAAG,SAA+C,CAAC;;;;wBAEvD,sBAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAG,EAAE,MAAM,CAAC,EAAC;;wBAG1C,IAAI,CAAC,IAAI,EAAE;4BACT,sBAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,kCAA0B,IAAI,CAAC,IAAI,OAAG,EAAE,MAAM,CAAC,EAAC;yBAC5E;wBAGD,IAAI;4BACF,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC7B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;gCAC7B,sBAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,oCAAoC,EAAE,MAAM,CAAC,EAAC;6BAC1E;yBACF;wBAAC,OAAO,GAAG,EAAE;4BACZ,sBAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAC;yBACzC;wBAED,sBAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAC;;;;KACnC;IACH,kBAAC;AAAD,CAAC,AA/BD,IA+BC"}
@@ -0,0 +1,3 @@
1
+ export * as bybit from "./bybit";
2
+ export * as processEnv from "./env";
3
+ export * as fs from "./file";
@@ -0,0 +1,7 @@
1
+ import * as bybit_1 from "./bybit";
2
+ export { bybit_1 as bybit };
3
+ import * as processEnv_1 from "./env";
4
+ export { processEnv_1 as processEnv };
5
+ import * as fs_1 from "./file";
6
+ export { fs_1 as fs };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/index.ts"],"names":[],"mappings":"yBAAuB,SAAS;oBAApB,KAAK;8BACW,OAAO;yBAAvB,UAAU;sBACF,QAAQ;iBAAhB,EAAE"}
@@ -0,0 +1,4 @@
1
+ import { Logger } from "../../utils";
2
+ export { Logger } from "../../utils";
3
+ export declare function logError(name: string, error: unknown, logger?: Logger): Promise<string[]>;
4
+ export declare function fetch(name: string, url: string, timeout?: number, retries?: number): Promise<unknown>;
@@ -0,0 +1,60 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import axios from "axios";
3
+ export { Logger } from "../../utils";
4
+ var _a = process.env.ACROSS_USER_AGENT, ACROSS_USER_AGENT = _a === void 0 ? "across-protocol" : _a;
5
+ function sleep(ms) {
6
+ return new Promise(function (r) { return setTimeout(r, ms); });
7
+ }
8
+ export function logError(name, error, logger) {
9
+ var reason;
10
+ if (error instanceof Error) {
11
+ reason = error.message;
12
+ }
13
+ else {
14
+ reason = typeof error === "string" ? error : "unknown error";
15
+ }
16
+ logger === null || logger === void 0 ? void 0 : logger.warn({
17
+ at: "".concat(name, "::update"),
18
+ message: "Failed to read addresses from ".concat(name, "."),
19
+ reason: reason,
20
+ });
21
+ return Promise.resolve([]);
22
+ }
23
+ export function fetch(name, url, timeout, retries) {
24
+ if (timeout === void 0) { timeout = 2000; }
25
+ if (retries === void 0) { retries = 1; }
26
+ return __awaiter(this, void 0, void 0, function () {
27
+ var args, errs, tries, err_1, errMsg;
28
+ return __generator(this, function (_a) {
29
+ switch (_a.label) {
30
+ case 0:
31
+ args = {
32
+ headers: { "User-Agent": ACROSS_USER_AGENT },
33
+ timeout: timeout,
34
+ };
35
+ errs = [];
36
+ tries = 0;
37
+ _a.label = 1;
38
+ case 1:
39
+ _a.trys.push([1, 3, , 6]);
40
+ return [4 /*yield*/, axios(url, args)];
41
+ case 2: return [2 /*return*/, (_a.sent()).data];
42
+ case 3:
43
+ err_1 = _a.sent();
44
+ errMsg = axios.isAxiosError(err_1) || err_1 instanceof Error ? err_1.message : "unknown error";
45
+ errs.push(errMsg);
46
+ if (!(++tries <= retries)) return [3 /*break*/, 5];
47
+ return [4 /*yield*/, sleep(Math.pow(1.5, tries) * 1000)];
48
+ case 4:
49
+ _a.sent(); // simple backoff
50
+ _a.label = 5;
51
+ case 5: return [3 /*break*/, 6];
52
+ case 6:
53
+ if (tries <= retries) return [3 /*break*/, 1];
54
+ _a.label = 7;
55
+ case 7: throw new Error("".concat(name, " retrieval failure (").concat(errs.join(", "), ")"));
56
+ }
57
+ });
58
+ });
59
+ }
60
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/util.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE7B,IAAA,KAA0C,OAAO,CAAC,GAAG,kBAAhB,EAArC,iBAAiB,mBAAG,iBAAiB,KAAA,CAAiB;AAE9D,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAjB,CAAiB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAc,EAAE,MAAe;IACpE,IAAI,MAAc,CAAC;IACnB,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;KACxB;SAAM;QACL,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;KAC9D;IAED,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC;QACX,EAAE,EAAE,UAAG,IAAI,aAAU;QACrB,OAAO,EAAE,wCAAiC,IAAI,MAAG;QACjD,MAAM,QAAA;KACP,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAgB,KAAK,CAAC,IAAY,EAAE,GAAW,EAAE,OAAc,EAAE,OAAW;IAA3B,wBAAA,EAAA,cAAc;IAAE,wBAAA,EAAA,WAAW;;;;;;oBAC1E,IAAI,GAAG;wBACX,OAAO,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE;wBAC5C,OAAO,SAAA;qBACR,CAAC;oBAEI,IAAI,GAAa,EAAE,CAAC;oBACtB,KAAK,GAAG,CAAC,CAAC;;;;oBAGF,qBAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAA;wBAA9B,sBAAO,CAAC,SAAsB,CAAC,CAAC,IAAI,EAAC;;;oBAE/B,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,KAAG,CAAC,IAAI,KAAG,YAAY,KAAK,CAAC,CAAC,CAAC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAC/F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;yBACd,CAAA,EAAE,KAAK,IAAI,OAAO,CAAA,EAAlB,wBAAkB;oBAAE,qBAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,EAAA;;oBAAxC,SAAwC,CAAC,CAAC,iBAAiB;;;;wBAE9E,KAAK,IAAI,OAAO;;wBAEzB,MAAM,IAAI,KAAK,CAAC,UAAG,IAAI,iCAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,CAAC,CAAC;;;;CACnE"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from "../utils";
2
+ import { AddressListAdapter } from "./types";
3
+ export * as adapters from "./adapters";
4
+ export declare class AddressAggregator {
5
+ readonly adapters: AddressListAdapter[];
6
+ protected readonly logger?: Logger | undefined;
7
+ constructor(adapters: AddressListAdapter[], logger?: Logger | undefined);
8
+ static sources(): string[];
9
+ update(): Promise<Set<string>>;
10
+ }
@@ -0,0 +1,107 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { utils as ethersUtils } from "ethers";
3
+ import { mapAsync } from "../utils";
4
+ import { INVALID_ADDRESS } from "./types";
5
+ import * as adapters from "./adapters";
6
+ import * as adapters_1 from "./adapters";
7
+ export { adapters_1 as adapters };
8
+ var AddressAggregator = /** @class */ (function () {
9
+ function AddressAggregator(adapters, logger) {
10
+ this.adapters = adapters;
11
+ this.logger = logger;
12
+ }
13
+ AddressAggregator.sources = function () {
14
+ return Object.keys(adapters);
15
+ };
16
+ AddressAggregator.prototype.update = function () {
17
+ var _a, _b;
18
+ return __awaiter(this, void 0, void 0, function () {
19
+ var allAddresses, addresses;
20
+ var _this = this;
21
+ return __generator(this, function (_c) {
22
+ switch (_c.label) {
23
+ case 0:
24
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug({
25
+ at: "AddressAggregator::update",
26
+ message: "Updating addresses.",
27
+ sources: this.adapters.map(function (adapter) { return adapter.name; }),
28
+ supportedSources: AddressAggregator.sources(),
29
+ });
30
+ return [4 /*yield*/, mapAsync(this.adapters, function (adapter) { return __awaiter(_this, void 0, void 0, function () {
31
+ var invalidAddresses, addresses;
32
+ var _a, _b;
33
+ return __generator(this, function (_c) {
34
+ switch (_c.label) {
35
+ case 0:
36
+ invalidAddresses = [];
37
+ return [4 /*yield*/, adapter.update(this.logger)];
38
+ case 1:
39
+ addresses = (_c.sent())
40
+ .map(function (address) {
41
+ try {
42
+ return ethersUtils.getAddress(address.toLowerCase());
43
+ }
44
+ catch (_a) {
45
+ invalidAddresses.push(address);
46
+ return INVALID_ADDRESS;
47
+ }
48
+ })
49
+ .filter(function (address) { return address !== INVALID_ADDRESS; });
50
+ if (invalidAddresses.length > 0) {
51
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn({
52
+ at: "AddressAggregator::update()",
53
+ message: "Read ".concat(invalidAddresses.length, " malformed addresses on ").concat(adapter.name, "."),
54
+ invalidAddresses: invalidAddresses,
55
+ });
56
+ }
57
+ (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug({
58
+ at: "AddressAggregator::update",
59
+ message: "Loaded ".concat(addresses.length, " addresses from ").concat(adapter.name, "."),
60
+ });
61
+ return [2 /*return*/, addresses];
62
+ }
63
+ });
64
+ }); })];
65
+ case 1:
66
+ allAddresses = _c.sent();
67
+ addresses = new Set(allAddresses.flat());
68
+ (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug({
69
+ at: "AddressAggregator::update",
70
+ message: "Loaded ".concat(addresses.size, " addresses."),
71
+ sources: this.adapters.map(function (adapter) { return adapter.name; }),
72
+ });
73
+ return [2 /*return*/, addresses];
74
+ }
75
+ });
76
+ });
77
+ };
78
+ return AddressAggregator;
79
+ }());
80
+ export { AddressAggregator };
81
+ function run() {
82
+ return __awaiter(this, void 0, void 0, function () {
83
+ var addressList, addresses;
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0:
87
+ addressList = new AddressAggregator([new adapters.bybit.AddressList(), new adapters.processEnv.AddressList()]);
88
+ return [4 /*yield*/, addressList.update()];
89
+ case 1:
90
+ addresses = _a.sent();
91
+ console.log("Retrieved ".concat(addresses.size, " addresses: ").concat(JSON.stringify(Array.from(addresses), null, 2)));
92
+ return [2 /*return*/, 0];
93
+ }
94
+ });
95
+ });
96
+ }
97
+ if (require.main === module) {
98
+ run()
99
+ .then(function (result) {
100
+ process.exitCode = result;
101
+ })
102
+ .catch(function (error) {
103
+ console.error("Process exited with", error);
104
+ process.exitCode = 127;
105
+ });
106
+ }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/addressAggregator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Logger } from "../utils";
2
+ export interface AddressListAdapter {
3
+ readonly name: string;
4
+ update(logger?: Logger): Promise<string[]>;
5
+ }
6
+ export declare const INVALID_ADDRESS = "";
@@ -0,0 +1,2 @@
1
+ export var INVALID_ADDRESS = "";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/addressAggregator/types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,IAAM,eAAe,GAAG,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * as addressAggregator from "./addressAggregator";
1
2
  export * as lpFeeCalculator from "./lpFeeCalculator";
2
3
  export * as pool from "./pool";
3
4
  export * as relayFeeCalculator from "./relayFeeCalculator";
package/dist/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ import * as addressAggregator_1 from "./addressAggregator";
2
+ export { addressAggregator_1 as addressAggregator };
1
3
  import * as lpFeeCalculator_1 from "./lpFeeCalculator";
2
4
  export { lpFeeCalculator_1 as lpFeeCalculator };
3
5
  import * as pool_1 from "./pool";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"mCAAiC,mBAAmB;8BAAxC,eAAe;wBACL,QAAQ;mBAAlB,IAAI;sCACoB,sBAAsB;iCAA9C,kBAAkB;yBACP,SAAS;oBAApB,KAAK;6BACU,aAAa;wBAA5B,SAAS;6BACM,aAAa;wBAA5B,SAAS;kCACW,kBAAkB;6BAAtC,cAAc;+BACG,eAAe;0BAAhC,WAAW;qCACY,qBAAqB;gCAA5C,iBAAiB;6BACF,aAAa;wBAA5B,SAAS;8BACO,cAAc;yBAA9B,UAAU;8BACM,cAAc;yBAA9B,UAAU;2BACG,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS;2BACI,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS;uBACA,OAAO;kBAAhB,GAAG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"qCAAmC,qBAAqB;gCAA5C,iBAAiB;mCACI,mBAAmB;8BAAxC,eAAe;wBACL,QAAQ;mBAAlB,IAAI;sCACoB,sBAAsB;iCAA9C,kBAAkB;yBACP,SAAS;oBAApB,KAAK;6BACU,aAAa;wBAA5B,SAAS;6BACM,aAAa;wBAA5B,SAAS;kCACW,kBAAkB;6BAAtC,cAAc;+BACG,eAAe;0BAAhC,WAAW;qCACY,qBAAqB;gCAA5C,iBAAiB;6BACF,aAAa;wBAA5B,SAAS;8BACO,cAAc;yBAA9B,UAAU;8BACM,cAAc;yBAA9B,UAAU;2BACG,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS;2BACI,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS;uBACA,OAAO;kBAAhB,GAAG"}
@@ -1,4 +1,6 @@
1
- import { Logger } from "winston";
1
+ import winston from "winston";
2
+ export declare class Logger extends winston.Logger {
3
+ }
2
4
  export type DefaultLogLevels = "debug" | "info" | "warn" | "error";
3
5
  type LogParamType = {
4
6
  level: DefaultLogLevels;
@@ -9,5 +11,5 @@ type LogParamType = {
9
11
  };
10
12
  data?: Record<string | number, unknown>;
11
13
  };
12
- export declare function formattedLog(logger: Logger | undefined, { level, message, at: { location, function: fnName }, data }: LogParamType): void;
14
+ export declare function formattedLog(logger: winston.Logger | undefined, { level, message, at: { location, function: fnName }, data }: LogParamType): void;
13
15
  export {};
@@ -1,4 +1,13 @@
1
- import { __assign } from "tslib";
1
+ import { __assign, __extends } from "tslib";
2
+ import winston from "winston";
3
+ var Logger = /** @class */ (function (_super) {
4
+ __extends(Logger, _super);
5
+ function Logger() {
6
+ return _super !== null && _super.apply(this, arguments) || this;
7
+ }
8
+ return Logger;
9
+ }(winston.Logger));
10
+ export { Logger };
2
11
  export function formattedLog(logger, _a) {
3
12
  var level = _a.level, message = _a.message, _b = _a.at, location = _b.location, fnName = _b.function, data = _a.data;
4
13
  if (logger) {
@@ -1 +1 @@
1
- {"version":3,"file":"LogUtils.js","sourceRoot":"","sources":["../../../src/utils/LogUtils.ts"],"names":[],"mappings":";AAcA,MAAM,UAAU,YAAY,CAC1B,MAA0B,EAC1B,EAA0E;QAAxE,KAAK,WAAA,EAAE,OAAO,aAAA,EAAE,UAAkC,EAA5B,QAAQ,cAAA,EAAY,MAAM,cAAA,EAAI,IAAI,UAAA;IAE1D,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,YACX,EAAE,EAAE,UAAG,QAAQ,cAAI,MAAM,CAAE,EAC3B,OAAO,SAAA,IACJ,IAAI,EACP,CAAC;KACJ;AACH,CAAC"}
1
+ {"version":3,"file":"LogUtils.js","sourceRoot":"","sources":["../../../src/utils/LogUtils.ts"],"names":[],"mappings":";AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B;IAA4B,0BAAc;IAA1C;;IAA4C,CAAC;IAAD,aAAC;AAAD,CAAC,AAA7C,CAA4B,OAAO,CAAC,MAAM,GAAG;;AAa7C,MAAM,UAAU,YAAY,CAC1B,MAAkC,EAClC,EAA0E;QAAxE,KAAK,WAAA,EAAE,OAAO,aAAA,EAAE,UAAkC,EAA5B,QAAQ,cAAA,EAAY,MAAM,cAAA,EAAI,IAAI,UAAA;IAE1D,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,YACX,EAAE,EAAE,UAAG,QAAQ,cAAI,MAAM,CAAE,EAC3B,OAAO,SAAA,IACJ,IAAI,EACP,CAAC;KACJ;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { AddressListAdapter } from "../types";
2
+ import { Logger } from "./util";
3
+ export declare class AddressList implements AddressListAdapter {
4
+ readonly url: string;
5
+ readonly timeout = 2000;
6
+ readonly retries = 1;
7
+ readonly name = "bybit";
8
+ constructor(url?: string);
9
+ update(logger?: Logger): Promise<string[]>;
10
+ }
11
+ //# sourceMappingURL=bybit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bybit.d.ts","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/bybit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAY,MAAM,EAAS,MAAM,QAAQ,CAAC;AAajD,qBAAa,WAAY,YAAW,kBAAkB;IAKxC,QAAQ,CAAC,GAAG;IAJxB,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,OAAO,KAAK;IACrB,QAAQ,CAAC,IAAI,WAAW;gBAEH,GAAG,SAAc;IAEhC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CASjD"}
@@ -0,0 +1,9 @@
1
+ import { AddressListAdapter } from "../types";
2
+ import { Logger } from "./util";
3
+ export declare class AddressList implements AddressListAdapter {
4
+ readonly envVar: string;
5
+ readonly name = "process.env";
6
+ constructor(envVar?: string);
7
+ update(logger?: Logger): Promise<string[]>;
8
+ }
9
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAI1C,qBAAa,WAAY,YAAW,kBAAkB;IAGxC,QAAQ,CAAC,MAAM;IAF3B,QAAQ,CAAC,IAAI,iBAAiB;gBAET,MAAM,SAA6B;IAExD,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAkB3C"}
@@ -0,0 +1,9 @@
1
+ import { AddressListAdapter } from "../types";
2
+ import { Logger } from "./util";
3
+ export declare class AddressList implements AddressListAdapter {
4
+ readonly path: string;
5
+ readonly name: string;
6
+ constructor(path?: string);
7
+ update(logger?: Logger): Promise<string[]>;
8
+ }
9
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAI1C,qBAAa,WAAY,YAAW,kBAAkB;IAGxC,QAAQ,CAAC,IAAI;IAFzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,SAAqB;IAIxC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAwBjD"}
@@ -0,0 +1,4 @@
1
+ export * as bybit from "./bybit";
2
+ export * as processEnv from "./env";
3
+ export * as fs from "./file";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Logger } from "../../utils";
2
+ export { Logger } from "../../utils";
3
+ export declare function logError(name: string, error: unknown, logger?: Logger): Promise<string[]>;
4
+ export declare function fetch(name: string, url: string, timeout?: number, retries?: number): Promise<unknown>;
5
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/addressAggregator/adapters/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAczF;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,SAAO,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBpG"}
@@ -0,0 +1,11 @@
1
+ import { Logger } from "../utils";
2
+ import { AddressListAdapter } from "./types";
3
+ export * as adapters from "./adapters";
4
+ export declare class AddressAggregator {
5
+ readonly adapters: AddressListAdapter[];
6
+ protected readonly logger?: Logger | undefined;
7
+ constructor(adapters: AddressListAdapter[], logger?: Logger | undefined);
8
+ static sources(): string[];
9
+ update(): Promise<Set<string>>;
10
+ }
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/addressAggregator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAmB,MAAM,SAAS,CAAC;AAG9D,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAEvC,qBAAa,iBAAiB;IAE1B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE;IACvC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;gBADjB,QAAQ,EAAE,kBAAkB,EAAE,EACpB,MAAM,CAAC,oBAAQ;IAGpC,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE;IAIpB,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAgDrC"}
@@ -0,0 +1,7 @@
1
+ import { Logger } from "../utils";
2
+ export interface AddressListAdapter {
3
+ readonly name: string;
4
+ update(logger?: Logger): Promise<string[]>;
5
+ }
6
+ export declare const INVALID_ADDRESS = "";
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/addressAggregator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,eAAe,KAAK,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * as addressAggregator from "./addressAggregator";
1
2
  export * as lpFeeCalculator from "./lpFeeCalculator";
2
3
  export * as pool from "./pool";
3
4
  export * as relayFeeCalculator from "./relayFeeCalculator";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
@@ -1,4 +1,6 @@
1
- import { Logger } from "winston";
1
+ import winston from "winston";
2
+ export declare class Logger extends winston.Logger {
3
+ }
2
4
  export type DefaultLogLevels = "debug" | "info" | "warn" | "error";
3
5
  type LogParamType = {
4
6
  level: DefaultLogLevels;
@@ -9,6 +11,6 @@ type LogParamType = {
9
11
  };
10
12
  data?: Record<string | number, unknown>;
11
13
  };
12
- export declare function formattedLog(logger: Logger | undefined, { level, message, at: { location, function: fnName }, data }: LogParamType): void;
14
+ export declare function formattedLog(logger: winston.Logger | undefined, { level, message, at: { location, function: fnName }, data }: LogParamType): void;
13
15
  export {};
14
16
  //# sourceMappingURL=LogUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/LogUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,GACzE,IAAI,CAQN"}
1
+ {"version":3,"file":"LogUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/LogUtils.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,qBAAa,MAAO,SAAQ,OAAO,CAAC,MAAM;CAAG;AAC7C,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,EAClC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,GACzE,IAAI,CAQN"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "4.1.21",
4
+ "version": "4.1.22",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -166,4 +166,4 @@
166
166
  "secp256k1@4.0.3": "4.0.4",
167
167
  "secp256k1@5.0.0": "5.0.1"
168
168
  }
169
- }
169
+ }
@@ -0,0 +1,32 @@
1
+ import { array, defaulted, string, type } from "superstruct";
2
+ import { AddressListAdapter } from "../types";
3
+ import { logError, Logger, fetch } from "./util";
4
+
5
+ const DEFAULT_URL = "https://hackscan.hackbounty.io/public/hack-address.json";
6
+
7
+ // This type is a bit message and unweildy. Additional fields representing new chains may be added without notification.
8
+ const bybitResponse = type({
9
+ "0221": type({
10
+ eth: defaulted(array(string()), []),
11
+ bsc: defaulted(array(string()), []),
12
+ arbi: defaulted(array(string()), []),
13
+ }),
14
+ });
15
+
16
+ export class AddressList implements AddressListAdapter {
17
+ readonly timeout = 2000; // ms
18
+ readonly retries = 1;
19
+ readonly name = "bybit";
20
+
21
+ constructor(readonly url = DEFAULT_URL) {}
22
+
23
+ async update(logger?: Logger): Promise<string[]> {
24
+ const response = await fetch(this.name, this.url, this.timeout, this.retries);
25
+ if (!bybitResponse.is(response)) {
26
+ // nb. don't log the response because it might be very large.
27
+ return logError(this.name, "Failed to validate response", logger);
28
+ }
29
+
30
+ return [...response["0221"].eth, ...response["0221"].bsc, ...response["0221"].arbi];
31
+ }
32
+ }
@@ -0,0 +1,30 @@
1
+ import { array, defaulted, string } from "superstruct";
2
+ import { AddressListAdapter } from "../types";
3
+ import { Logger, logError } from "./util";
4
+
5
+ const envConfig = defaulted(array(string()), []);
6
+
7
+ export class AddressList implements AddressListAdapter {
8
+ readonly name = "process.env";
9
+
10
+ constructor(readonly envVar = "ACROSS_IGNORED_ADDRESSES") {}
11
+
12
+ update(logger?: Logger): Promise<string[]> {
13
+ const config = process.env[this.envVar];
14
+ if (!config) {
15
+ return Promise.resolve([]);
16
+ }
17
+
18
+ let addresses: unknown;
19
+ try {
20
+ addresses = JSON.parse(config);
21
+ if (!envConfig.is(addresses)) {
22
+ return logError(this.name, "Address format validation failure.", logger);
23
+ }
24
+ } catch (err) {
25
+ return logError(this.name, err, logger);
26
+ }
27
+
28
+ return Promise.resolve(addresses);
29
+ }
30
+ }
@@ -0,0 +1,39 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { array, defaulted, string } from "superstruct";
3
+ import { AddressListAdapter } from "../types";
4
+ import { Logger, logError } from "./util";
5
+
6
+ const fileConfig = defaulted(array(string()), []);
7
+
8
+ export class AddressList implements AddressListAdapter {
9
+ readonly name: string;
10
+
11
+ constructor(readonly path = "./addresses.json") {
12
+ this.name = `fs:${path}`;
13
+ }
14
+
15
+ async update(logger?: Logger): Promise<string[]> {
16
+ let data: string;
17
+ try {
18
+ data = await readFile(this.path, { encoding: "utf8" });
19
+ } catch (err) {
20
+ return logError(this.name, err, logger);
21
+ }
22
+
23
+ if (!data) {
24
+ return logError(this.name, `No addresses found in "${this.path}"`, logger);
25
+ }
26
+
27
+ let addresses: unknown;
28
+ try {
29
+ addresses = JSON.parse(data);
30
+ if (!fileConfig.is(addresses)) {
31
+ return logError(this.name, "Address format validation failure.", logger);
32
+ }
33
+ } catch (err) {
34
+ return logError(this.name, err, logger);
35
+ }
36
+
37
+ return Promise.resolve(addresses);
38
+ }
39
+ }
@@ -0,0 +1,3 @@
1
+ export * as bybit from "./bybit";
2
+ export * as processEnv from "./env";
3
+ export * as fs from "./file";