diff --git a/.changeset/soft-students-smash.md b/.changeset/hip-parrots-buy.md similarity index 100% rename from .changeset/soft-students-smash.md rename to .changeset/hip-parrots-buy.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f1a404a..8aa3763a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # @rosen-bridge/watcher +## 3.2.2 + +### Patch Changes + +- Fix ogmios parallel connections issue +- Fix issue in health check health history cleanup threshold value + ## 3.2.1 ### Patch Changes diff --git a/package-lock.json b/package-lock.json index 96a1018e..3dc134a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,33 +1,33 @@ { "name": "@rosen-bridge/watcher", - "version": "3.2.1", + "version": "3.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@rosen-bridge/watcher", - "version": "3.2.1", + "version": "3.2.2", "hasInstallScript": true, "license": "ISC", "dependencies": { "@emurgo/cip14-js": "^3.0.1", "@rosen-bridge/address-extractor": "^5.0.7", - "@rosen-bridge/asset-check": "^1.0.2", + "@rosen-bridge/asset-check": "^1.0.4", "@rosen-bridge/bitcoin-esplora-scanner": "^0.1.14", "@rosen-bridge/bitcoin-observation-extractor": "^4.0.7", "@rosen-bridge/bitcoin-rpc-scanner": "^0.2.8", - "@rosen-bridge/discord-notification": "^0.1.2", - "@rosen-bridge/health-check": "6.0.1", - "@rosen-bridge/log-level-check": "^1.0.1", + "@rosen-bridge/discord-notification": "^0.1.3", + "@rosen-bridge/health-check": "6.0.3", + "@rosen-bridge/log-level-check": "^1.0.3", "@rosen-bridge/minimum-fee": "^2.1.0", - "@rosen-bridge/node-sync-check": "^1.0.1", + "@rosen-bridge/node-sync-check": "^1.0.3", "@rosen-bridge/observation-extractor": "^5.0.7", - "@rosen-bridge/permit-check": "^1.0.1", + "@rosen-bridge/permit-check": "^1.0.3", "@rosen-bridge/scanner": "^4.1.3", - "@rosen-bridge/scanner-sync-check": "^1.0.1", + "@rosen-bridge/scanner-sync-check": "^1.0.3", "@rosen-bridge/tokens": "^1.2.1", "@rosen-bridge/watcher-data-extractor": "^8.0.2", - "@rosen-bridge/wid-check": "^1.0.1", + "@rosen-bridge/wid-check": "^1.0.3", "@rosen-bridge/winston-logger": "0.2.1", "@rosen-clients/cardano-koios": "^2.0.3", "axios": "^0.26.1", @@ -415,12 +415,11 @@ "license": "MIT" }, "node_modules/@cardano-ogmios/client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@cardano-ogmios/client/-/client-6.6.1.tgz", - "integrity": "sha512-kOPcaFUmgS5XtA+wBN0/SIBLCbvNc3D6g3cfWO7Lr3xBtcOWEVEgqAsQy1kQGXe45TJ07tInNfV/Kx3IMMlmKA==", - "license": "MPL-2.0", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@cardano-ogmios/client/-/client-6.7.0.tgz", + "integrity": "sha512-rSwLlbz2fXTaUumNjZc7k/18pBaYFj+HvpjB5GOoWbbyt62LRQWXHPAeEoCWvYDL+LPIDwsfdQ8PYJ3zkITUHw==", "dependencies": { - "@cardano-ogmios/schema": "6.6.1", + "@cardano-ogmios/schema": "6.7.0", "@cardanosolutions/json-bigint": "^1.0.1", "@types/json-bigint": "^1.0.1", "bech32": "^2.0.0", @@ -436,10 +435,9 @@ } }, "node_modules/@cardano-ogmios/schema": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@cardano-ogmios/schema/-/schema-6.6.1.tgz", - "integrity": "sha512-xyTPpD5g20U44kVnU8QAil77/OOOZvU/AveUSmEjXJmDtZV/+4/pufshkfk7Dwui1P3wg12+vHMw+UjRciuX4g==", - "license": "MPL-2.0", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@cardano-ogmios/schema/-/schema-6.7.0.tgz", + "integrity": "sha512-M6mYVMh0+Vt3fQ2ychJi1/KDgYYjX+y4lXLcxQyLd3VCC4Nl8BbENRreFwt1/HNjwrlX240bg1jM49wUxj7vog==", "engines": { "node": ">=14" } @@ -2059,13 +2057,13 @@ } }, "node_modules/@rosen-bridge/asset-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rosen-bridge/asset-check/-/asset-check-1.0.2.tgz", - "integrity": "sha512-6gejbfdwKtE9EF0ieAYssQ2/EgaTsO2TLkWd0kmAfFqrZzes4I94LvafGD5kYeih0O0wApPUuh02jxwQuF5QPw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@rosen-bridge/asset-check/-/asset-check-1.0.4.tgz", + "integrity": "sha512-OLvCMCxfWScILNSRXcv0Iwx/3igXcwSo6nhiM7EgEWC8QDPGvv/61SdEVzCsxcWD7egf6x851j8/Bxx5i8+eaw==", "dependencies": { "@apollo/client": "^3.9.11", "@blockfrost/blockfrost-js": "^5.5.0", - "@rosen-bridge/health-check": "^6.0.1", + "@rosen-bridge/health-check": "^6.0.3", "@rosen-clients/cardano-koios": "^2.0.1", "@rosen-clients/ergo-explorer": "^1.1.1", "@rosen-clients/ergo-node": "^1.1.1", @@ -2186,9 +2184,9 @@ } }, "node_modules/@rosen-bridge/discord-notification": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@rosen-bridge/discord-notification/-/discord-notification-0.1.2.tgz", - "integrity": "sha512-J1U98dx0+4GYKipObandwHGIUPWR5SzG3yxpZbRKDgSWpdYoGAlbDMNTTwrVu4fRZdA6SXqztKv/4fkgwKZhIA==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/discord-notification/-/discord-notification-0.1.3.tgz", + "integrity": "sha512-ygIRnK1AY8/XrelMzQc6991e8nMyLVRd9nwO/hgMXh7SrumiYLoWRU5elSj9zw+3LT/tgkaqeYeWhMXCskTHtg==", "dependencies": { "@rosen-bridge/abstract-notification": "^0.2.1", "discord.js": "^14.15.3" @@ -2209,9 +2207,9 @@ } }, "node_modules/@rosen-bridge/health-check": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@rosen-bridge/health-check/-/health-check-6.0.1.tgz", - "integrity": "sha512-34iirTofXQKWkJgn0nFkxoweY/cYIl6+I86aW3W7FO6lOYuHa9cMO6vP+szh+2+lK1Rtcjg+bva87k2EU+dZDw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/health-check/-/health-check-6.0.3.tgz", + "integrity": "sha512-ApUVEmra1XL4kP3JGGLF56zz2P50M00t2TNPx2anGYkqPoWbJtwC8UNLGiHHHkW2vzdpteWgFz4egbUjYs9i7A==", "dependencies": { "@rosen-bridge/abstract-notification": "^0.2.1" }, @@ -2230,12 +2228,12 @@ } }, "node_modules/@rosen-bridge/log-level-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rosen-bridge/log-level-check/-/log-level-check-1.0.1.tgz", - "integrity": "sha512-IQz3TqwcX7Cu+xWKhDP3ixr1JdFXjhNnAZD8TBhqHLdnOycFfjK3rJzR5HBFgSLwWqbQ7jxw9xiWolqAlAOM4A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/log-level-check/-/log-level-check-1.0.3.tgz", + "integrity": "sha512-ZbV8Zp4hV1nCDzgZnKZnEAkXEvmv9vpvchEnYHmhZ330JD4Yhf81vbaY8L4NMptA2YdqG59zFRcc/NsisoT30w==", "dependencies": { "@rosen-bridge/abstract-logger": "^1.0.0", - "@rosen-bridge/health-check": "^6.0.1", + "@rosen-bridge/health-check": "^6.0.3", "lodash-es": "^4.17.21" }, "engines": { @@ -2257,11 +2255,11 @@ } }, "node_modules/@rosen-bridge/node-sync-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rosen-bridge/node-sync-check/-/node-sync-check-1.0.1.tgz", - "integrity": "sha512-HHH1++mExRWpvTiWBs3T/voGC2MzmBGt3cY5AzJ0hKs2Ky2ZAqgxINDZWYziAtlQVGYaKaJBWwbKSKhq7refYw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/node-sync-check/-/node-sync-check-1.0.3.tgz", + "integrity": "sha512-HtEiGvXLoQsgsTi+neM3Nsn0hcw/6Sk0dJGAaoyVr1zjUICXQnAb5FxsO4ydp07uvYMkhjAlDqFTRLc8bvh8rQ==", "dependencies": { - "@rosen-bridge/health-check": "^6.0.1", + "@rosen-bridge/health-check": "^6.0.3", "@rosen-clients/ergo-node": "^1.1.1" }, "engines": { @@ -2289,11 +2287,11 @@ } }, "node_modules/@rosen-bridge/permit-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rosen-bridge/permit-check/-/permit-check-1.0.1.tgz", - "integrity": "sha512-rsyu9oYtePAr4XWXYT/KYJzLV87MdM8OYvupZYXel2b97bjzGBXZymOFDUvZZ5Ipi9MtfDoSKz/ZSHpH4EnaXA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/permit-check/-/permit-check-1.0.3.tgz", + "integrity": "sha512-3K6b6j5W9hSTAQ/vNsjavg2lRhmVZzrcRcuJ5em6r9oE2jHKGCS8e4UBaQexTEWQBjCz4QqwCBNN+x/9/Lq2RQ==", "dependencies": { - "@rosen-bridge/health-check": "^6.0.1", + "@rosen-bridge/health-check": "^6.0.3", "@rosen-clients/ergo-explorer": "^1.1.1", "@rosen-clients/ergo-node": "^1.1.1", "ergo-lib-wasm-nodejs": "^0.24.1" @@ -2370,14 +2368,14 @@ } }, "node_modules/@rosen-bridge/scanner-sync-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rosen-bridge/scanner-sync-check/-/scanner-sync-check-1.0.1.tgz", - "integrity": "sha512-cF06Nz/vVhcjy5GBZ22bmegLGI3VLidAmQMwhSjAtO+yAX5tjV2BtV4/QvrC89HWlDyRE5isE+Mtyc7BI9238Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/scanner-sync-check/-/scanner-sync-check-1.0.3.tgz", + "integrity": "sha512-cFt2pMzOSExUdYD0bMZKDafPn3H7rH8AGj7ih5cdvwQZggivoYhVC6AQWffgkZRNxmMuLkO7fmUFr71AInYyIw==", "dependencies": { "@apollo/client": "^3.9.11", "@blockfrost/blockfrost-js": "^5.5.0", "@cardano-ogmios/client": "^6.3.0", - "@rosen-bridge/health-check": "^6.0.1", + "@rosen-bridge/health-check": "^6.0.3", "@rosen-clients/ergo-explorer": "^1.1.1", "@rosen-clients/ergo-node": "^1.1.1", "axios": "^1.6.8", @@ -2511,11 +2509,11 @@ } }, "node_modules/@rosen-bridge/wid-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rosen-bridge/wid-check/-/wid-check-1.0.1.tgz", - "integrity": "sha512-+NBtjFoshkUtcM3MOK3vOvX4dts8h7+hH25KfLmGUAmYscdTvjDjxbJFTklxJeaqoiKTrTs1ELehRyjG97HkuA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rosen-bridge/wid-check/-/wid-check-1.0.3.tgz", + "integrity": "sha512-lJGxv1GEZ1PKWdxhFdisx031vviLceU9KF7dUO8ucj6GNls2CTHw91Qf7n6A2clbxvNYXf+JrzLX9za1IvKNYw==", "dependencies": { - "@rosen-bridge/health-check": "^6.0.1", + "@rosen-bridge/health-check": "^6.0.3", "@rosen-clients/ergo-explorer": "^1.1.1", "@rosen-clients/ergo-node": "^1.1.1", "ergo-lib-wasm-nodejs": "^0.24.1", diff --git a/package.json b/package.json index e5b242ab..f686c150 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rosen-bridge/watcher", - "version": "3.2.1", + "version": "3.2.2", "description": "Rosen bridge Watcher service", "main": "index.js", "type": "module", @@ -76,22 +76,22 @@ "dependencies": { "@emurgo/cip14-js": "^3.0.1", "@rosen-bridge/address-extractor": "^5.0.7", - "@rosen-bridge/asset-check": "^1.0.2", + "@rosen-bridge/asset-check": "^1.0.4", "@rosen-bridge/bitcoin-esplora-scanner": "^0.1.14", "@rosen-bridge/bitcoin-observation-extractor": "^4.0.7", "@rosen-bridge/bitcoin-rpc-scanner": "^0.2.8", - "@rosen-bridge/discord-notification": "^0.1.2", - "@rosen-bridge/health-check": "6.0.1", - "@rosen-bridge/log-level-check": "^1.0.1", + "@rosen-bridge/discord-notification": "^0.1.3", + "@rosen-bridge/health-check": "6.0.3", + "@rosen-bridge/log-level-check": "^1.0.3", "@rosen-bridge/minimum-fee": "^2.1.0", - "@rosen-bridge/node-sync-check": "^1.0.1", + "@rosen-bridge/node-sync-check": "^1.0.3", "@rosen-bridge/observation-extractor": "^5.0.7", - "@rosen-bridge/permit-check": "^1.0.1", + "@rosen-bridge/permit-check": "^1.0.3", "@rosen-bridge/scanner": "^4.1.3", - "@rosen-bridge/scanner-sync-check": "^1.0.1", + "@rosen-bridge/scanner-sync-check": "^1.0.3", "@rosen-bridge/tokens": "^1.2.1", "@rosen-bridge/watcher-data-extractor": "^8.0.2", - "@rosen-bridge/wid-check": "^1.0.1", + "@rosen-bridge/wid-check": "^1.0.3", "@rosen-bridge/winston-logger": "0.2.1", "@rosen-clients/cardano-koios": "^2.0.3", "axios": "^0.26.1", diff --git a/patches/@rosen-bridge+discord-notification+0.1.2.patch b/patches/@rosen-bridge+discord-notification+0.1.2.patch deleted file mode 100644 index c1b6a9eb..00000000 --- a/patches/@rosen-bridge+discord-notification+0.1.2.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/node_modules/@rosen-bridge/discord-notification/dist/DiscordNotification.js b/node_modules/@rosen-bridge/discord-notification/dist/DiscordNotification.js -index 85c6321..95b36d6 100644 ---- a/node_modules/@rosen-bridge/discord-notification/dist/DiscordNotification.js -+++ b/node_modules/@rosen-bridge/discord-notification/dist/DiscordNotification.js -@@ -13,7 +13,7 @@ class DiscordNotification extends AbstractNotification { - * @param message - */ - sendMessage = (message) => { -- this.client.send({ -+ return this.client.send({ - content: message.replace(/^ +| +$/gm, ''), // trim all lines - }); - }; -@@ -23,7 +23,7 @@ class DiscordNotification extends AbstractNotification { - * @param message - */ - error = async (title, message) => { -- this.sendMessage(` -+ return this.sendMessage(` - ## ❌ ${title} - ${message} - `); -@@ -34,7 +34,7 @@ class DiscordNotification extends AbstractNotification { - * @param message - */ - warning = async (title, message) => { -- this.sendMessage(` -+ return this.sendMessage(` - ## ⚠️ ${title} - ${message} - `); -@@ -45,7 +45,7 @@ class DiscordNotification extends AbstractNotification { - * @param message - */ - info = async (title, message) => { -- this.sendMessage(` -+ return this.sendMessage(` - ## ℹ️ ${title} - ${message} - `); -@@ -56,7 +56,7 @@ class DiscordNotification extends AbstractNotification { - * @param message - */ - success = async (title, message) => { -- this.sendMessage(` -+ return this.sendMessage(` - ## ✅ ${title} - ${message} - `); -@@ -67,7 +67,7 @@ class DiscordNotification extends AbstractNotification { - * @param message - */ - raw = async (title, message) => { -- this.sendMessage(` -+ return this.sendMessage(` - ## ${title} - ${message} - `); diff --git a/patches/@rosen-bridge+health-check+6.0.1.patch b/patches/@rosen-bridge+health-check+6.0.1.patch deleted file mode 100644 index e2724150..00000000 --- a/patches/@rosen-bridge+health-check+6.0.1.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff --git a/node_modules/@rosen-bridge/health-check/dist/healthCheck.js b/node_modules/@rosen-bridge/health-check/dist/healthCheck.js -index 40903d0..389e287 100644 ---- a/node_modules/@rosen-bridge/health-check/dist/healthCheck.js -+++ b/node_modules/@rosen-bridge/health-check/dist/healthCheck.js -@@ -68,13 +68,13 @@ export class HealthCheck { - const lastTrialErrorTime = await param.getLastTrialErrorTime(); - if (this.healthHistory) - if (lastTrialErrorTime) { -- this.healthHistory.updateHistoryForParam(paramId, { -+ await this.healthHistory.updateHistoryForParam(paramId, { - result: 'unknown', - timestamp: lastTrialErrorTime.valueOf(), - }); - } - else { -- this.healthHistory.updateHistoryForParam(paramId, { -+ await this.healthHistory.updateHistoryForParam(paramId, { - result: await param.getHealthStatus(), - timestamp: param.getLastUpdatedTime().valueOf(), - }); -@@ -92,9 +92,16 @@ export class HealthCheck { - * check all params health status and cleanup history - */ - update = async () => { -- if (this.healthHistory) -- this.healthHistory.cleanupHistory(); -- await Promise.all(this.params.map(this.updateParamAndItsHistory)); -+ if (this.healthHistory) -+ this.healthHistory.cleanupHistory(); -+ const results = await Promise.allSettled(this.params.map(this.updateParamAndItsHistory)); -+ const rejectedResults = results.filter(result => result.status == 'rejected') -+ if(rejectedResults.length){ -+ throw AggregateError(rejectedResults.flatMap(result => { -+ if(result.reason instanceof AggregateError) return result.reason.errors -+ return result.reason -+ })) -+ } - }; - /** - * check health status for one param -diff --git a/node_modules/@rosen-bridge/health-check/dist/notification/notificationManager.js b/node_modules/@rosen-bridge/health-check/dist/notification/notificationManager.js -index 6578b8e..404a0a6 100644 ---- a/node_modules/@rosen-bridge/health-check/dist/notification/notificationManager.js -+++ b/node_modules/@rosen-bridge/health-check/dist/notification/notificationManager.js -@@ -49,15 +49,23 @@ class NotificationManager { - return; - const notificationCheckResults = this.notificationChecks.map((notificationCheck) => notificationCheck(param, paramHistory)); - const eligibleNotificationChecks = notificationCheckResults.filter((notificationCheck) => notificationCheck.check()); -- await Promise.all(eligibleNotificationChecks.map(async (notificationCheck) => { -+ const notifyResults = await Promise.allSettled(eligibleNotificationChecks.map(async (notificationCheck) => { - const notifyArgs = [ - notificationCheck.getSeverity(), - await notificationCheck.getTitle(), - await notificationCheck.getDescription(), - ]; -- await this.notify(...notifyArgs); -+ try { -+ await this.notify(...notifyArgs) -+ } catch(e) { -+ throw new Error(`sending notification "${await notificationCheck.getTitle()}" failed with error: ${e}`) -+ } - await this.notifiedHandler(paramId, notifyArgs); - })); -+ const rejectedResults = notifyResults.filter(result => result.status == 'rejected') -+ if(rejectedResults.length){ -+ throw AggregateError(rejectedResults.map(result => result.reason)) -+ } - }; - } - export default NotificationManager;