@centurion_project/smart-order-router 4.31.15 → 4.31.17

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 (41) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/build/main/providers/caching-subgraph-provider.js +6 -1
  4. package/build/main/providers/token-provider.js +15 -10
  5. package/build/main/providers/v2/static-subgraph-provider.js +7 -5
  6. package/build/main/providers/v3/static-subgraph-provider.js +7 -5
  7. package/build/main/routers/alpha-router/gas-models/gas-costs.d.ts +1 -1
  8. package/build/main/routers/alpha-router/gas-models/gas-costs.js +8 -2
  9. package/build/main/routers/legacy-router/bases.d.ts +24 -0
  10. package/build/main/routers/legacy-router/bases.js +6 -1
  11. package/build/main/tsconfig.tsbuildinfo +1 -1
  12. package/build/main/util/addresses.d.ts +9 -2
  13. package/build/main/util/addresses.js +23 -10
  14. package/build/main/util/chains.d.ts +38 -1
  15. package/build/main/util/chains.js +9 -5
  16. package/build/main/util/defaultBlocksToLive.d.ts +38 -2
  17. package/build/main/util/defaultBlocksToLive.js +4 -1
  18. package/build/main/util/pool.d.ts +38 -2
  19. package/build/main/util/pool.js +3 -1
  20. package/build/main/util/security.d.ts +3 -0
  21. package/build/main/util/security.js +120 -0
  22. package/build/module/providers/caching-subgraph-provider.js +6 -1
  23. package/build/module/providers/token-provider.js +10 -5
  24. package/build/module/providers/v2/static-subgraph-provider.js +7 -5
  25. package/build/module/providers/v3/static-subgraph-provider.js +7 -5
  26. package/build/module/routers/alpha-router/gas-models/gas-costs.d.ts +1 -1
  27. package/build/module/routers/alpha-router/gas-models/gas-costs.js +8 -2
  28. package/build/module/routers/legacy-router/bases.d.ts +24 -0
  29. package/build/module/routers/legacy-router/bases.js +6 -1
  30. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  31. package/build/module/util/addresses.d.ts +9 -2
  32. package/build/module/util/addresses.js +23 -10
  33. package/build/module/util/chains.d.ts +38 -1
  34. package/build/module/util/chains.js +10 -6
  35. package/build/module/util/defaultBlocksToLive.d.ts +38 -2
  36. package/build/module/util/defaultBlocksToLive.js +4 -1
  37. package/build/module/util/pool.d.ts +38 -2
  38. package/build/module/util/pool.js +3 -1
  39. package/build/module/util/security.d.ts +3 -0
  40. package/build/module/util/security.js +111 -0
  41. package/package.json +16 -15
@@ -0,0 +1,3 @@
1
+ export declare const isLocalOrPrivateHostname: (hostname: string) => boolean;
2
+ export declare const assertPublicHttpsUrl: (rawUrl: string, contextLabel: string) => string;
3
+ export declare const formatErrorForLog: (err: unknown) => Record<string, unknown>;
@@ -0,0 +1,111 @@
1
+ import axios from 'axios';
2
+ import net from 'net';
3
+ const LOOPBACK_HOSTNAMES = new Set([
4
+ 'localhost',
5
+ 'localhost.localdomain',
6
+ 'ip6-localhost',
7
+ 'ip6-loopback',
8
+ ]);
9
+ const normalizeHostname = (hostname) => {
10
+ return hostname.trim().toLowerCase().replace(/\.$/, '').replace(/^\[|\]$/g, '');
11
+ };
12
+ const isPrivateIpv4 = (ipAddress) => {
13
+ var _a, _b;
14
+ const octets = ipAddress
15
+ .split('.')
16
+ .map((octet) => Number.parseInt(octet, 10));
17
+ if (octets.length !== 4 || octets.some((octet) => Number.isNaN(octet))) {
18
+ return false;
19
+ }
20
+ const first = (_a = octets[0]) !== null && _a !== void 0 ? _a : -1;
21
+ const second = (_b = octets[1]) !== null && _b !== void 0 ? _b : -1;
22
+ return (first === 0 ||
23
+ first === 10 ||
24
+ first === 127 ||
25
+ (first === 169 && second === 254) ||
26
+ (first === 172 && second >= 16 && second <= 31) ||
27
+ (first === 192 && second === 168));
28
+ };
29
+ const isPrivateIpv6 = (ipAddress) => {
30
+ const normalized = ipAddress.toLowerCase();
31
+ if (normalized === '::1') {
32
+ return true;
33
+ }
34
+ if (normalized.startsWith('::ffff:')) {
35
+ return isPrivateIpv4(normalized.substring('::ffff:'.length));
36
+ }
37
+ return (normalized.startsWith('fc') ||
38
+ normalized.startsWith('fd') ||
39
+ normalized.startsWith('fe80:'));
40
+ };
41
+ export const isLocalOrPrivateHostname = (hostname) => {
42
+ const normalized = normalizeHostname(hostname);
43
+ if (!normalized) {
44
+ return true;
45
+ }
46
+ if (LOOPBACK_HOSTNAMES.has(normalized) ||
47
+ normalized.endsWith('.localhost')) {
48
+ return true;
49
+ }
50
+ const ipVersion = net.isIP(normalized);
51
+ if (ipVersion === 4) {
52
+ return isPrivateIpv4(normalized);
53
+ }
54
+ if (ipVersion === 6) {
55
+ return isPrivateIpv6(normalized);
56
+ }
57
+ return false;
58
+ };
59
+ export const assertPublicHttpsUrl = (rawUrl, contextLabel) => {
60
+ let parsedUrl;
61
+ try {
62
+ parsedUrl = new URL(rawUrl);
63
+ }
64
+ catch (_err) {
65
+ throw new Error(`Invalid ${contextLabel}`);
66
+ }
67
+ if (parsedUrl.protocol !== 'https:') {
68
+ throw new Error(`${contextLabel} must use https`);
69
+ }
70
+ if (parsedUrl.username || parsedUrl.password) {
71
+ throw new Error(`${contextLabel} must not include URL credentials`);
72
+ }
73
+ if (isLocalOrPrivateHostname(parsedUrl.hostname)) {
74
+ throw new Error(`${contextLabel} must not target localhost or private network ranges`);
75
+ }
76
+ return parsedUrl.toString();
77
+ };
78
+ const getUrlOrigin = (rawUrl) => {
79
+ if (!rawUrl) {
80
+ return undefined;
81
+ }
82
+ try {
83
+ return new URL(rawUrl).origin;
84
+ }
85
+ catch (_err) {
86
+ return undefined;
87
+ }
88
+ };
89
+ export const formatErrorForLog = (err) => {
90
+ var _a, _b, _c, _d;
91
+ if (axios.isAxiosError(err)) {
92
+ return {
93
+ name: err.name,
94
+ message: err.message,
95
+ code: err.code,
96
+ method: (_b = (_a = err.config) === null || _a === void 0 ? void 0 : _a.method) === null || _b === void 0 ? void 0 : _b.toUpperCase(),
97
+ origin: getUrlOrigin((_c = err.config) === null || _c === void 0 ? void 0 : _c.url),
98
+ status: (_d = err.response) === null || _d === void 0 ? void 0 : _d.status,
99
+ };
100
+ }
101
+ if (err instanceof Error) {
102
+ return {
103
+ name: err.name,
104
+ message: err.message,
105
+ };
106
+ }
107
+ return {
108
+ message: String(err),
109
+ };
110
+ };
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9zZWN1cml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBRXRCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDakMsV0FBVztJQUNYLHVCQUF1QjtJQUN2QixlQUFlO0lBQ2YsY0FBYztDQUNmLENBQUMsQ0FBQztBQUVILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUU7SUFDckQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBaUIsRUFBVyxFQUFFOztJQUNuRCxNQUFNLE1BQU0sR0FBRyxTQUFTO1NBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDdEUsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sS0FBSyxHQUFHLE1BQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQ0FBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFBLE1BQU0sQ0FBQyxDQUFDLENB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
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@centurion_project/smart-order-router",
3
- "version": "4.31.15",
4
- "description": "Uniswap Smart Order Router",
3
+ "version": "4.31.17",
4
+ "description": "CenturionDEX Smart Order Router derived from the Uniswap Smart Order Router",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",
7
7
  "module": "build/module/index.js",
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "https://github.com/Uniswap/smart-order-router.git"
10
+ "url": "https://github.com/CenturionDEX/centurion-dex-smart-order-router.git"
11
11
  },
12
12
  "license": "GPL",
13
13
  "keywords": [],
@@ -35,12 +35,12 @@
35
35
  "dependencies": {
36
36
  "@eth-optimism/sdk": "^3.2.2",
37
37
  "@types/brotli": "^1.3.4",
38
- "@centurion_project/permit2-sdk": "1.4.0",
39
- "@centurion_project/router-sdk": "2.9.0",
40
- "@centurion_project/sdk-core": "7.13.0",
41
- "@centurion_project/universal-router-sdk": "5.1.0",
42
- "@centurion_project/v2-sdk": "4.20.2",
43
- "@centurion_project/v3-sdk": "3.30.2",
38
+ "@centurion_project/permit2-sdk": "1.4.5",
39
+ "@centurion_project/router-sdk": "2.11.3",
40
+ "@centurion_project/sdk-core": "7.18.4",
41
+ "@centurion_project/universal-router-sdk": "5.9.3",
42
+ "@centurion_project/v2-sdk": "4.21.4",
43
+ "@centurion_project/v3-sdk": "3.31.4",
44
44
  "@centurion_project/v4-sdk": "2.0.0",
45
45
  "@uniswap/default-token-list": "^11.13.0",
46
46
  "@uniswap/swap-router-contracts": "^1.3.1",
@@ -77,6 +77,7 @@
77
77
  "@types/node": "^15.0.2",
78
78
  "@types/sinon": "^10.0.2",
79
79
  "@types/stats-lite": "^2.2.0",
80
+ "@uniswap/sdk-core": "npm:@centurion_project/sdk-core@7.18.4",
80
81
  "@typescript-eslint/eslint-plugin": "^4.0.1",
81
82
  "@typescript-eslint/parser": "^4.0.1",
82
83
  "@uniswap/v2-core": "^1.0.1",
@@ -111,13 +112,13 @@
111
112
  "jsbi": "^3.2.0"
112
113
  },
113
114
  "overrides": {
114
- "@uniswap/sdk-core": "npm:@centurion_project/sdk-core@7.13.0",
115
- "@uniswap/v2-sdk": "npm:@centurion_project/v2-sdk@4.20.2",
116
- "@uniswap/v3-sdk": "npm:@centurion_project/v3-sdk@3.30.2",
115
+ "@uniswap/sdk-core": "npm:@centurion_project/sdk-core@7.18.4",
116
+ "@uniswap/v2-sdk": "npm:@centurion_project/v2-sdk@4.21.4",
117
+ "@uniswap/v3-sdk": "npm:@centurion_project/v3-sdk@3.31.4",
117
118
  "@uniswap/v4-sdk": "npm:@centurion_project/v4-sdk@2.0.0",
118
- "@uniswap/router-sdk": "npm:@centurion_project/router-sdk@2.9.0",
119
- "@uniswap/universal-router-sdk": "npm:@centurion_project/universal-router-sdk@5.1.0",
120
- "@uniswap/permit2-sdk": "npm:@centurion_project/permit2-sdk@1.4.0"
119
+ "@uniswap/router-sdk": "npm:@centurion_project/router-sdk@2.11.3",
120
+ "@uniswap/universal-router-sdk": "npm:@centurion_project/universal-router-sdk@5.9.3",
121
+ "@uniswap/permit2-sdk": "npm:@centurion_project/permit2-sdk@1.4.5"
121
122
  },
122
123
  "files": [
123
124
  "build/main",