diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..af289ee6 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + cooldown: + default-days: 7 + include: + - "*" + versioning-strategy: auto diff --git a/backend/renovate.json b/backend/renovate.json deleted file mode 100644 index 22a99432..00000000 --- a/backend/renovate.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:recommended"] -} diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index ae763c7a..408e2d78 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -6,7 +6,9 @@ const mochaPlugin = require('eslint-plugin-mocha') const typescriptEslint = require('typescript-eslint') const evmAddressPlugin = require('eslint-plugin-evm-address-to-checksummed') const jsonPlugin = require('eslint-plugin-json') +const jsonc = require("eslint-plugin-jsonc"); const sortKeysFix = require('eslint-plugin-sort-keys-fix') +const jsonParser = require("jsonc-eslint-parser"); /** @@ -76,10 +78,14 @@ module.exports = [ }, }, { - files: ['**/*.json'], - ...jsonPlugin.configs.recommended, + files: ["**/*.json"], + languageOptions: { + parser: jsonParser, + }, + plugins: { jsonc }, rules: { - 'json/json': ['error', { allowComments: true }], + ...jsonc.configs["recommended-with-json"].rules, + "jsonc/no-comments": "off", }, }, { @@ -97,4 +103,23 @@ module.exports = [ 'typechain-types', ], }, + { + files: ["**/package.json"], + languageOptions: { parser: jsonParser }, + plugins: { + "unevenlabs-policy": { + rules: { + "pinned-deps": require("./rules/pinned-deps.cjs"), + }, + }, + }, + rules: { + "unevenlabs-policy/pinned-deps": ["error", { + internalScopes: ["@relay-vaults/"], + allowProtocols: ["workspace:", "^workspace:"], + allowProtocolsOnlyForInternal: true, + allowExactPrerelease: true, + }], + }, + }, ] diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 3536f4ea..0655db3a 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -7,6 +7,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-evm-address-to-checksummed": "0.0.6", "eslint-plugin-json": "4.0.1", + "eslint-plugin-jsonc": "2.21.0", "eslint-plugin-mocha": "11.1.0", "eslint-plugin-prettier": "5.5.4", "typescript-eslint": "8.40.0" diff --git a/packages/eslint-config/rules/pinned-deps.cjs b/packages/eslint-config/rules/pinned-deps.cjs new file mode 100644 index 00000000..c0577754 --- /dev/null +++ b/packages/eslint-config/rules/pinned-deps.cjs @@ -0,0 +1,144 @@ +"use strict"; + +/** + * Enforce pinned deps in package.json: + * - allow protocols (workspace:, file:, link:, etc.) for internal packages + * - require exact x.y.z for everything else + * - no autofix + */ + +const DEFAULT_DEP_FIELDS = [ + "dependencies", + "devDependencies", + "peerDependencies", + "optionalDependencies", +]; + +function isObjectExpression(node) { + return node && (node.type === "ObjectExpression" || node.type === "JSONObjectExpression"); +} + +function getPropKeyString(prop) { + const k = prop.key; + if (!k) return null; + // JS parser: Literal + if (k.type === "Literal" && typeof k.value === "string") return k.value; + // jsonc-eslint-parser: JSONLiteral + if (k.type === "JSONLiteral" && typeof k.value === "string") return k.value; + return null; +} + +function getLiteralString(node) { + if (!node) return null; + if (node.type === "Literal" && typeof node.value === "string") return node.value; + if (node.type === "JSONLiteral" && typeof node.value === "string") return node.value; + return null; +} + +function getObjectPropertyValue(objExpr, keyName) { + if (!isObjectExpression(objExpr)) return null; + for (const p of objExpr.properties || []) { + if (!p || (p.type !== "Property" && p.type !== "JSONProperty")) continue; + const k = getPropKeyString(p); + if (k === keyName) return p.value; + } + return null; +} + +module.exports = { + meta: { + type: "problem", + docs: { description: "Require pinned dependency versions in package.json" }, + schema: [ + { + type: "object", + additionalProperties: false, + properties: { + depFields: { type: "array", items: { type: "string" } }, + excludeList: { type: "array", items: { type: "string" } }, + internalScopes: { type: "array", items: { type: "string" } }, + allowProtocols: { type: "array", items: { type: "string" } }, + allowProtocolsOnlyForInternal: { type: "boolean" }, + allowExactPrerelease: { type: "boolean" }, + }, + }, + ], + }, + + create(context) { + const opt = context.options[0] || {}; + const depFields = opt.depFields || DEFAULT_DEP_FIELDS; + const excludeList = opt.excludeList || []; + const internalScopes = opt.internalScopes || []; + const allowProtocols = opt.allowProtocols || ["workspace:", "file:", "link:"]; + const allowProtocolsOnlyForInternal = opt.allowProtocolsOnlyForInternal !== false; // default true + const allowExactPrerelease = !!opt.allowExactPrerelease; + + const exact = allowExactPrerelease + ? /^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/ + : /^[0-9]+\.[0-9]+\.[0-9]+$/; + + function shouldExclude(name) { + return excludeList.some((p) => name.startsWith(p)); + } + + function isInternal(name) { + return internalScopes.some((p) => name.startsWith(p)); + } + + function isAllowedProtocol(version) { + return allowProtocols.some((p) => version.startsWith(p)); + } + + function report(node, depName, field, version) { + context.report({ + node, + message: + `Dependency "${depName}" in "${field}" must be pinned to an exact version (x.y.z). ` + + `Got "${version}".` + + (internalScopes.length ? ` Internal scopes: ${internalScopes.join(", ")}.` : "") + + (allowProtocols.length + ? ` Allowed protocols: ${allowProtocols.join(", ")}.` + + (allowProtocolsOnlyForInternal ? " (internal only)" : "") + : ""), + }); + } + + return { + "Program:exit"(program) { + const expr = program.body?.[0]?.expression; + if (!isObjectExpression(expr)) return; + + for (const field of depFields) { + const depObj = getObjectPropertyValue(expr, field); + if (!isObjectExpression(depObj)) continue; + + for (const p of depObj.properties || []) { + if (!p || (p.type !== "Property" && p.type !== "JSONProperty")) continue; + + const depName = getPropKeyString(p); + const version = getLiteralString(p.value); + if (!depName || version == null) continue; + + if (shouldExclude(depName)) { + continue; + } + + // allow protocols + if (isAllowedProtocol(version)) { + if (allowProtocolsOnlyForInternal && !isInternal(depName)) { + report(p.value, depName, field, version); + } + continue; + } + + // require exact semver + if (!exact.test(version)) { + report(p.value, depName, field, version); + } + } + } + }, + }; + }, +}; diff --git a/packages/helpers/package.json b/packages/helpers/package.json index 545cbe94..34f08d1a 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -35,8 +35,8 @@ "devDependencies": { "@relay-vaults/networks": "workspace:^", "@relay-vaults/tsconfig": "workspace:^", - "@types/copyfiles": "2", - "@types/fs-extra": "11", + "@types/copyfiles": "2.4.4", + "@types/fs-extra": "11.0.4", "copyfiles": "2.4.1", "eslint": "9.33.0", "fs-extra": "11.3.1", diff --git a/renovate.json b/renovate.json deleted file mode 100644 index c586dcca..00000000 --- a/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:recommended"], - "timezone": "America/New_York", - "schedule": ["before 5am on monday"] -} diff --git a/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-1/deployed_addresses.json b/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-1/deployed_addresses.json index 71d34ff3..3a60f843 100644 --- a/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-1/deployed_addresses.json +++ b/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-1/deployed_addresses.json @@ -1,3 +1,3 @@ { "ArbitrumOrbitNativeDepositBridgeProxy#ArbitrumOrbitNativeDepositBridgeProxy": "0x42C580BA1001f47cf216558aeD8a6C28eb0211BF" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-42161/deployed_addresses.json b/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-42161/deployed_addresses.json index 4b134ff6..01fef430 100644 --- a/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-42161/deployed_addresses.json +++ b/smart-contracts/ignition/deployments/BridgeProxy-1-0xC7273772b87860097373D91b3880fd4CC61fBa2d-arbitrumDeposit-42161/deployed_addresses.json @@ -1,3 +1,3 @@ { "ArbitrumOrbitNativeDepositBridgeProxy#ArbitrumOrbitNativeDepositBridgeProxy": "0x52690873b22B0949A3A2c1AaD22653218460A002" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/RelayBridgeFactory-1/deployed_addresses.json b/smart-contracts/ignition/deployments/RelayBridgeFactory-1/deployed_addresses.json index bab67d59..0c255751 100644 --- a/smart-contracts/ignition/deployments/RelayBridgeFactory-1/deployed_addresses.json +++ b/smart-contracts/ignition/deployments/RelayBridgeFactory-1/deployed_addresses.json @@ -1,3 +1,3 @@ { "RelayBridgeFactory#RelayBridgeFactory": "0x3A691355348DDC549515A7b538f3e85bCCdFe0B5" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1/0x339680db3B90f2C5aa825C6296C14A4a231391dE/params.json b/smart-contracts/ignition/deployments/bridges/1/0x339680db3B90f2C5aa825C6296C14A4a231391dE/params.json index 55a37d23..edceff60 100644 --- a/smart-contracts/ignition/deployments/bridges/1/0x339680db3B90f2C5aa825C6296C14A4a231391dE/params.json +++ b/smart-contracts/ignition/deployments/bridges/1/0x339680db3B90f2C5aa825C6296C14A4a231391dE/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239", "proxyBridgeAddress": "0x42C580BA1001f47cf216558aeD8a6C28eb0211BF" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1135/0x9551c38fA964cd0c9f753AA6FbC9f6383DB1B718/params.json b/smart-contracts/ignition/deployments/bridges/1135/0x9551c38fA964cd0c9f753AA6FbC9f6383DB1B718/params.json index 5304b0bb..cf950ecf 100644 --- a/smart-contracts/ignition/deployments/bridges/1135/0x9551c38fA964cd0c9f753AA6FbC9f6383DB1B718/params.json +++ b/smart-contracts/ignition/deployments/bridges/1135/0x9551c38fA964cd0c9f753AA6FbC9f6383DB1B718/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "proxyBridgeAddress": "0x8F7592190a8335cf1A6E9Cd9Cf0FA73661e6B43a" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1135/0x9fB81934541E3f39d1fd8727E05dd9b05e17F2FA/params.json b/smart-contracts/ignition/deployments/bridges/1135/0x9fB81934541E3f39d1fd8727E05dd9b05e17F2FA/params.json index cf4f864c..4bbe9d1c 100644 --- a/smart-contracts/ignition/deployments/bridges/1135/0x9fB81934541E3f39d1fd8727E05dd9b05e17F2FA/params.json +++ b/smart-contracts/ignition/deployments/bridges/1135/0x9fB81934541E3f39d1fd8727E05dd9b05e17F2FA/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "proxyBridgeAddress": "0x6339F2AEbe65A1C23B77d6CF149965feeadeB29c" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1135/0xc5B6007B65522359Cf0F5f924559b789F6383a78/params.json b/smart-contracts/ignition/deployments/bridges/1135/0xc5B6007B65522359Cf0F5f924559b789F6383a78/params.json index 35b02800..a5516c36 100644 --- a/smart-contracts/ignition/deployments/bridges/1135/0xc5B6007B65522359Cf0F5f924559b789F6383a78/params.json +++ b/smart-contracts/ignition/deployments/bridges/1135/0xc5B6007B65522359Cf0F5f924559b789F6383a78/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "proxyBridgeAddress": "0xa59d3967653d7a5B7e4196a99D25329FBC10aD73" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1380012617/0x1C332aBA6d34661b086856f3F63C0f31715d6e6e/params.json b/smart-contracts/ignition/deployments/bridges/1380012617/0x1C332aBA6d34661b086856f3F63C0f31715d6e6e/params.json index a743125d..4e58193e 100644 --- a/smart-contracts/ignition/deployments/bridges/1380012617/0x1C332aBA6d34661b086856f3F63C0f31715d6e6e/params.json +++ b/smart-contracts/ignition/deployments/bridges/1380012617/0x1C332aBA6d34661b086856f3F63C0f31715d6e6e/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", "proxyBridgeAddress": "0xf98D7ADA874D53a75BbDfB05D2A96C1525d426A7" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1380012617/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json b/smart-contracts/ignition/deployments/bridges/1380012617/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json index 56eb3957..89b0ee25 100644 --- a/smart-contracts/ignition/deployments/bridges/1380012617/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json +++ b/smart-contracts/ignition/deployments/bridges/1380012617/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", "proxyBridgeAddress": "0x679436B2c2A71d9317a9aC652d06CA2b958B6Cd4" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1380012617/0xd1543E44d64B46944667E4465930A6B28EEA6F93/params.json b/smart-contracts/ignition/deployments/bridges/1380012617/0xd1543E44d64B46944667E4465930A6B28EEA6F93/params.json index 2b2729b5..ae74c8d5 100644 --- a/smart-contracts/ignition/deployments/bridges/1380012617/0xd1543E44d64B46944667E4465930A6B28EEA6F93/params.json +++ b/smart-contracts/ignition/deployments/bridges/1380012617/0xd1543E44d64B46944667E4465930A6B28EEA6F93/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x65dCf8F6b3f6a0ECEdf3d0bdCB036AEa47A1d615", "proxyBridgeAddress": "0x67DEfE8d90c8cD013fD527669e76e0bE420F1208" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/185/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json b/smart-contracts/ignition/deployments/bridges/185/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json index a1d9a9e2..5cbbc91a 100644 --- a/smart-contracts/ignition/deployments/bridges/185/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json +++ b/smart-contracts/ignition/deployments/bridges/185/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "proxyBridgeAddress": "0xfA52054db476c897efE3d066050cefCa92dFc583" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1868/0x4573e21aC8717B936c197755a46F984a7f2af9CF/params.json b/smart-contracts/ignition/deployments/bridges/1868/0x4573e21aC8717B936c197755a46F984a7f2af9CF/params.json index 2a16127f..c8061855 100644 --- a/smart-contracts/ignition/deployments/bridges/1868/0x4573e21aC8717B936c197755a46F984a7f2af9CF/params.json +++ b/smart-contracts/ignition/deployments/bridges/1868/0x4573e21aC8717B936c197755a46F984a7f2af9CF/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "proxyBridgeAddress": "0x5A48e2D885480aBdd16BC9FF03e88D996D2746DA" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/1923/0xea65940bb6C3691c83b86D3b7Fa7C8bbeABDA409/params.json b/smart-contracts/ignition/deployments/bridges/1923/0xea65940bb6C3691c83b86D3b7Fa7C8bbeABDA409/params.json index f0807205..4139af1c 100644 --- a/smart-contracts/ignition/deployments/bridges/1923/0xea65940bb6C3691c83b86D3b7Fa7C8bbeABDA409/params.json +++ b/smart-contracts/ignition/deployments/bridges/1923/0xea65940bb6C3691c83b86D3b7Fa7C8bbeABDA409/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "proxyBridgeAddress": "0x0E764Ff0a870bB65a0B8d4753475F9eAecB061A0" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/42170/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json b/smart-contracts/ignition/deployments/bridges/42170/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json index 1da4bcf2..dab5132e 100644 --- a/smart-contracts/ignition/deployments/bridges/42170/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json +++ b/smart-contracts/ignition/deployments/bridges/42170/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "proxyBridgeAddress": "0xfA52054db476c897efE3d066050cefCa92dFc583" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/43111/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json b/smart-contracts/ignition/deployments/bridges/43111/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json index f0807205..4139af1c 100644 --- a/smart-contracts/ignition/deployments/bridges/43111/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json +++ b/smart-contracts/ignition/deployments/bridges/43111/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "proxyBridgeAddress": "0x0E764Ff0a870bB65a0B8d4753475F9eAecB061A0" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/543210/0xb17F41bCb06Bf95805932a7881Bb37f1D43e3dAC/params.json b/smart-contracts/ignition/deployments/bridges/543210/0xb17F41bCb06Bf95805932a7881Bb37f1D43e3dAC/params.json index 3067218c..7814bed4 100644 --- a/smart-contracts/ignition/deployments/bridges/543210/0xb17F41bCb06Bf95805932a7881Bb37f1D43e3dAC/params.json +++ b/smart-contracts/ignition/deployments/bridges/543210/0xb17F41bCb06Bf95805932a7881Bb37f1D43e3dAC/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0xd7b351D2dE3495eA259DD10ab4b9300A378Afbf3", "proxyBridgeAddress": "0x6a0fcA19fb7A6929feef4cF665e82Da7E6fB9196" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/60808/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json b/smart-contracts/ignition/deployments/bridges/60808/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json index 11ad5ec0..d436da37 100644 --- a/smart-contracts/ignition/deployments/bridges/60808/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json +++ b/smart-contracts/ignition/deployments/bridges/60808/0x31bb91fFb28b7b849a7e08a3fa7d31f393E78eFD/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "proxyBridgeAddress": "0x8be9aBBd00C92eae366eD7DB10BD600c79F3C3ee" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/690/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json b/smart-contracts/ignition/deployments/bridges/690/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json index 30cad4c6..05d4be95 100644 --- a/smart-contracts/ignition/deployments/bridges/690/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json +++ b/smart-contracts/ignition/deployments/bridges/690/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "proxyBridgeAddress": "0xfA52054db476c897efE3d066050cefCa92dFc583" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/7560/0x992E1FFFC52B7A828762a6f361c9088E6F1A1505/params.json b/smart-contracts/ignition/deployments/bridges/7560/0x992E1FFFC52B7A828762a6f361c9088E6F1A1505/params.json index cf4f864c..4bbe9d1c 100644 --- a/smart-contracts/ignition/deployments/bridges/7560/0x992E1FFFC52B7A828762a6f361c9088E6F1A1505/params.json +++ b/smart-contracts/ignition/deployments/bridges/7560/0x992E1FFFC52B7A828762a6f361c9088E6F1A1505/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "proxyBridgeAddress": "0x6339F2AEbe65A1C23B77d6CF149965feeadeB29c" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/7777777/0x04719a2c2bF08fE755297035337616662fA8d392/params.json b/smart-contracts/ignition/deployments/bridges/7777777/0x04719a2c2bF08fE755297035337616662fA8d392/params.json index 0526c962..881487d1 100644 --- a/smart-contracts/ignition/deployments/bridges/7777777/0x04719a2c2bF08fE755297035337616662fA8d392/params.json +++ b/smart-contracts/ignition/deployments/bridges/7777777/0x04719a2c2bF08fE755297035337616662fA8d392/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "proxyBridgeAddress": "0x8F7592190a8335cf1A6E9Cd9Cf0FA73661e6B43a" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/7777777/0x19426e122E0988e1f6ad246Af9B6553492C6D446/params.json b/smart-contracts/ignition/deployments/bridges/7777777/0x19426e122E0988e1f6ad246Af9B6553492C6D446/params.json index a4779d5b..261cbf82 100644 --- a/smart-contracts/ignition/deployments/bridges/7777777/0x19426e122E0988e1f6ad246Af9B6553492C6D446/params.json +++ b/smart-contracts/ignition/deployments/bridges/7777777/0x19426e122E0988e1f6ad246Af9B6553492C6D446/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "proxyBridgeAddress": "0xfA52054db476c897efE3d066050cefCa92dFc583" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/7777777/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json b/smart-contracts/ignition/deployments/bridges/7777777/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json index 1b85d686..c0a5c936 100644 --- a/smart-contracts/ignition/deployments/bridges/7777777/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json +++ b/smart-contracts/ignition/deployments/bridges/7777777/0x1Ed47efb9252E6FE586C8bda9af7bc67e97D4f2D/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "proxyBridgeAddress": "0x0E764Ff0a870bB65a0B8d4753475F9eAecB061A0" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/81457/0x61847fb2Ff4725B8bfacb649dd9033fBc06b293E/params.json b/smart-contracts/ignition/deployments/bridges/81457/0x61847fb2Ff4725B8bfacb649dd9033fBc06b293E/params.json index 4c33a133..6db6aca5 100644 --- a/smart-contracts/ignition/deployments/bridges/81457/0x61847fb2Ff4725B8bfacb649dd9033fBc06b293E/params.json +++ b/smart-contracts/ignition/deployments/bridges/81457/0x61847fb2Ff4725B8bfacb649dd9033fBc06b293E/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "proxyBridgeAddress": "0x5F36eDb2f100bADa046eB1310175a675DE54aA42" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/bridges/888888888/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json b/smart-contracts/ignition/deployments/bridges/888888888/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json index a1d9a9e2..5cbbc91a 100644 --- a/smart-contracts/ignition/deployments/bridges/888888888/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json +++ b/smart-contracts/ignition/deployments/bridges/888888888/0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E/params.json @@ -2,4 +2,4 @@ "assetAddress": "0x0000000000000000000000000000000000000000", "hyperlaneMailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "proxyBridgeAddress": "0xfA52054db476c897efE3d066050cefCa92dFc583" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/pools/1/0x57B68c4EA221ee8Da6eb14ebdfcCEE5177567771/params.json b/smart-contracts/ignition/deployments/pools/1/0x57B68c4EA221ee8Da6eb14ebdfcCEE5177567771/params.json index f9e4dcda..edfcc363 100644 --- a/smart-contracts/ignition/deployments/pools/1/0x57B68c4EA221ee8Da6eb14ebdfcCEE5177567771/params.json +++ b/smart-contracts/ignition/deployments/pools/1/0x57B68c4EA221ee8Da6eb14ebdfcCEE5177567771/params.json @@ -6,4 +6,4 @@ "timelock": "0xf55A9f74e46A667E7CC56180D9669CAeCFB3A2Ce", "weth": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "yieldPool": "0x252231882FB38481497f3C767469106297c8d93b" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/pools/11155111/0x5D192668821b01B8F907d38A454de3B45c4CFcd4/params.json b/smart-contracts/ignition/deployments/pools/11155111/0x5D192668821b01B8F907d38A454de3B45c4CFcd4/params.json index 0d8022fd..b43c4dcb 100644 --- a/smart-contracts/ignition/deployments/pools/11155111/0x5D192668821b01B8F907d38A454de3B45c4CFcd4/params.json +++ b/smart-contracts/ignition/deployments/pools/11155111/0x5D192668821b01B8F907d38A454de3B45c4CFcd4/params.json @@ -6,4 +6,4 @@ "timelock": "0xf34a2bE56d69F30ECcd08128b545fEcF9A71A871", "weth": "0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9", "yieldPool": "0x6E9Eb6a552999891A341a3104924F47668Af5BDE" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/pools/42161/0xC7273772b87860097373D91b3880fd4CC61fBa2d/params.json b/smart-contracts/ignition/deployments/pools/42161/0xC7273772b87860097373D91b3880fd4CC61fBa2d/params.json index 69c99277..d8e8f0b9 100644 --- a/smart-contracts/ignition/deployments/pools/42161/0xC7273772b87860097373D91b3880fd4CC61fBa2d/params.json +++ b/smart-contracts/ignition/deployments/pools/42161/0xC7273772b87860097373D91b3880fd4CC61fBa2d/params.json @@ -6,4 +6,4 @@ "timelock": "0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E", "weth": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "yieldPool": "0x352F3475716261dCC991Bd5F2aF973eB3D0F5878" -} \ No newline at end of file +} diff --git a/smart-contracts/ignition/deployments/pools/42161/0xc7273772b87860097373d91b3880fd4cc61fba2d/params.json b/smart-contracts/ignition/deployments/pools/42161/0xc7273772b87860097373d91b3880fd4cc61fba2d/params.json index 69c99277..d8e8f0b9 100644 --- a/smart-contracts/ignition/deployments/pools/42161/0xc7273772b87860097373d91b3880fd4cc61fba2d/params.json +++ b/smart-contracts/ignition/deployments/pools/42161/0xc7273772b87860097373d91b3880fd4cc61fba2d/params.json @@ -6,4 +6,4 @@ "timelock": "0x0d6D00b4F379Fd6DB2Dff0C0BE7e2A602Aa65F9E", "weth": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "yieldPool": "0x352F3475716261dCC991Bd5F2aF973eB3D0F5878" -} \ No newline at end of file +} diff --git a/smart-contracts/package.json b/smart-contracts/package.json index 222059a8..27303c8b 100644 --- a/smart-contracts/package.json +++ b/smart-contracts/package.json @@ -53,7 +53,7 @@ "@types/fs-extra": "11.0.4", "@types/mocha": "10.0.10", "@types/node": "22.17.2", - "@types/semver": "7", + "@types/semver": "7.7.0", "@uniswap/v3-periphery": "1.4.4", "chai": "5.3.1", "enquirer": "2.4.1", diff --git a/yarn.lock b/yarn.lock index 0ebe3cfd..a231f4d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1987,6 +1987,17 @@ __metadata: languageName: node linkType: hard +"@eslint-community/eslint-utils@npm:^4.5.1": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10/89b1eb3137e14c379865e60573f524fcc0ee5c4b0c7cd21090673e75e5a720f14b92f05ab2d02704c2314b67e67b6f96f3bb209ded6b890ced7b667aa4bf1fa2 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" @@ -4692,6 +4703,13 @@ __metadata: languageName: node linkType: hard +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10/bb2fb86977d63f836f8f5b09015d74e6af6488f7a411dcd2bfdca79d76b5a681a9112f41c45bdf88a9069f049718efc6f3900d7f1de66a2ec966068308ae517f + languageName: node + linkType: hard + "@pnpm/config.env-replace@npm:^1.1.0": version: 1.1.0 resolution: "@pnpm/config.env-replace@npm:1.1.0" @@ -4924,6 +4942,7 @@ __metadata: eslint-config-prettier: "npm:10.1.8" eslint-plugin-evm-address-to-checksummed: "npm:0.0.6" eslint-plugin-json: "npm:4.0.1" + eslint-plugin-jsonc: "npm:2.21.0" eslint-plugin-mocha: "npm:11.1.0" eslint-plugin-prettier: "npm:5.5.4" typescript-eslint: "npm:8.40.0" @@ -4937,8 +4956,8 @@ __metadata: "@bgd-labs/aave-address-book": "npm:4.27.0" "@relay-vaults/networks": "workspace:^" "@relay-vaults/tsconfig": "workspace:^" - "@types/copyfiles": "npm:2" - "@types/fs-extra": "npm:11" + "@types/copyfiles": "npm:2.4.4" + "@types/fs-extra": "npm:11.0.4" copyfiles: "npm:2.4.1" eslint: "npm:9.33.0" ethers: "npm:6.15.0" @@ -5015,7 +5034,7 @@ __metadata: "@types/fs-extra": "npm:11.0.4" "@types/mocha": "npm:10.0.10" "@types/node": "npm:22.17.2" - "@types/semver": "npm:7" + "@types/semver": "npm:7.7.0" "@uniswap/v3-periphery": "npm:1.4.4" chai: "npm:5.3.1" enquirer: "npm:2.4.1" @@ -6621,7 +6640,7 @@ __metadata: languageName: node linkType: hard -"@types/copyfiles@npm:2": +"@types/copyfiles@npm:2.4.4": version: 2.4.4 resolution: "@types/copyfiles@npm:2.4.4" checksum: 10/0513199240828feda5f6ed04c69d6a642c47e6ab66b81214716807f948ed3e865e9b3d2b69f75cbcc6fbe2154630755c47ca473b3913f0a831179366c709a8cc @@ -6656,7 +6675,7 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:11, @types/fs-extra@npm:11.0.4": +"@types/fs-extra@npm:11.0.4": version: 11.0.4 resolution: "@types/fs-extra@npm:11.0.4" dependencies: @@ -6828,7 +6847,7 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:7": +"@types/semver@npm:7.7.0": version: 7.7.0 resolution: "@types/semver@npm:7.7.0" checksum: 10/ee4514c6c852b1c38f951239db02f9edeea39f5310fad9396a00b51efa2a2d96b3dfca1ae84c88181ea5b7157c57d32d7ef94edacee36fbf975546396b85ba5b @@ -9218,6 +9237,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^27.5.1": + version: 27.5.1 + resolution: "diff-sequences@npm:27.5.1" + checksum: 10/34d852a13eb82735c39944a050613f952038614ce324256e1c3544948fa090f1ca7f329a4f1f57c31fe7ac982c17068d8915b633e300f040b97708c81ceb26cd + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -9889,6 +9915,17 @@ __metadata: languageName: node linkType: hard +"eslint-compat-utils@npm:^0.6.4": + version: 0.6.5 + resolution: "eslint-compat-utils@npm:0.6.5" + dependencies: + semver: "npm:^7.5.4" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10/bb95e89ed11e9a29b2e9184967292b4b52be1e10fb36c84e89de95b4a5b23764a456b3818a867e232aec685186bd954e19f165cbe50b39659f729d97f1125820 + languageName: node + linkType: hard + "eslint-config-ponder@npm:0.12.12": version: 0.12.12 resolution: "eslint-config-ponder@npm:0.12.12" @@ -9911,6 +9948,21 @@ __metadata: languageName: node linkType: hard +"eslint-json-compat-utils@npm:^0.2.1": + version: 0.2.1 + resolution: "eslint-json-compat-utils@npm:0.2.1" + dependencies: + esquery: "npm:^1.6.0" + peerDependencies: + eslint: "*" + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + "@eslint/json": + optional: true + checksum: 10/083272c0cdbc6acd9fe9bfe939e0c76493a426400141203d7f0e76344d5874c5a88535c59300045e4c6f95baa5084eff512013f82bcd9e7426404c785e2ea55d + languageName: node + linkType: hard + "eslint-plugin-evm-address-to-checksummed@npm:0.0.6": version: 0.0.6 resolution: "eslint-plugin-evm-address-to-checksummed@npm:0.0.6" @@ -9934,6 +9986,25 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jsonc@npm:2.21.0": + version: 2.21.0 + resolution: "eslint-plugin-jsonc@npm:2.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.5.1" + diff-sequences: "npm:^27.5.1" + eslint-compat-utils: "npm:^0.6.4" + eslint-json-compat-utils: "npm:^0.2.1" + espree: "npm:^9.6.1 || ^10.3.0" + graphemer: "npm:^1.4.0" + jsonc-eslint-parser: "npm:^2.4.0" + natural-compare: "npm:^1.4.0" + synckit: "npm:^0.6.2 || ^0.7.3 || ^0.11.5" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10/3b0e15b33a918b1ffccbcb4c234deb7b6b68752e89cccd8e31d6d3e4647ec48ebc6b89998f1b3b585b4486f9d849eb618e15d0ffacd4b185d601a83de81b335a + languageName: node + linkType: hard + "eslint-plugin-mocha@npm:11.1.0": version: 11.1.0 resolution: "eslint-plugin-mocha@npm:11.1.0" @@ -10077,7 +10148,7 @@ __metadata: languageName: node linkType: hard -"espree@npm:^10.4.0": +"espree@npm:^10.4.0, espree@npm:^9.6.1 || ^10.3.0": version: 10.4.0 resolution: "espree@npm:10.4.0" dependencies: @@ -10130,7 +10201,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0": +"esquery@npm:^1.5.0, esquery@npm:^1.6.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -12369,6 +12440,18 @@ __metadata: languageName: node linkType: hard +"jsonc-eslint-parser@npm:^2.4.0": + version: 2.4.2 + resolution: "jsonc-eslint-parser@npm:2.4.2" + dependencies: + acorn: "npm:^8.5.0" + eslint-visitor-keys: "npm:^3.0.0" + espree: "npm:^9.0.0" + semver: "npm:^7.3.5" + checksum: 10/4010e0724c78b6ff9c6576cf3c96b6352c43b5e5cbb4e364c44ec1983fd111c0a1673622bfe225345eafbafca04e9151aade417e3e4d94c84cf0938189def974 + languageName: node + linkType: hard + "jsonc-parser@npm:^3.0.0": version: 3.3.1 resolution: "jsonc-parser@npm:3.3.1" @@ -16496,6 +16579,15 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.6.2 || ^0.7.3 || ^0.11.5": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" + dependencies: + "@pkgr/core": "npm:^0.2.9" + checksum: 10/6ecd88212b5be80004376b6ea74babcba284566ff59a50d8803afcaa78c165b5d268635c1dd84532ee3f690a979409e1eda225a8a35bed2d135ffdcea06ce7b0 + languageName: node + linkType: hard + "table-layout@npm:^1.0.2": version: 1.0.2 resolution: "table-layout@npm:1.0.2"