@humanode-hyperlane/rebalancer 27.2.2 → 1029.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridges/LiFiBridge.d.ts +3 -3
- package/dist/bridges/LiFiBridge.d.ts.map +1 -1
- package/dist/bridges/LiFiBridge.js +66 -55
- package/dist/bridges/LiFiBridge.js.map +1 -1
- package/dist/bridges/LiFiBridge.test.js +213 -0
- package/dist/bridges/LiFiBridge.test.js.map +1 -1
- package/dist/config/RebalancerConfig.d.ts +4 -3
- package/dist/config/RebalancerConfig.d.ts.map +1 -1
- package/dist/config/RebalancerConfig.js +7 -5
- package/dist/config/RebalancerConfig.js.map +1 -1
- package/dist/config/RebalancerConfig.test.js +278 -2
- package/dist/config/RebalancerConfig.test.js.map +1 -1
- package/dist/config/types.d.ts +707 -2664
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +62 -7
- package/dist/config/types.js.map +1 -1
- package/dist/core/InventoryRebalancer.d.ts +13 -19
- package/dist/core/InventoryRebalancer.d.ts.map +1 -1
- package/dist/core/InventoryRebalancer.js +404 -276
- package/dist/core/InventoryRebalancer.js.map +1 -1
- package/dist/core/InventoryRebalancer.test.js +814 -25
- package/dist/core/InventoryRebalancer.test.js.map +1 -1
- package/dist/core/Rebalancer.d.ts.map +1 -1
- package/dist/core/Rebalancer.js +12 -6
- package/dist/core/Rebalancer.js.map +1 -1
- package/dist/core/Rebalancer.test.js +51 -0
- package/dist/core/Rebalancer.test.js.map +1 -1
- package/dist/core/RebalancerOrchestrator.d.ts.map +1 -1
- package/dist/core/RebalancerOrchestrator.test.js +0 -1
- package/dist/core/RebalancerOrchestrator.test.js.map +1 -1
- package/dist/core/RebalancerService.d.ts.map +1 -1
- package/dist/core/RebalancerService.js +3 -2
- package/dist/core/RebalancerService.js.map +1 -1
- package/dist/core/RebalancerService.test.js +24 -0
- package/dist/core/RebalancerService.test.js.map +1 -1
- package/dist/e2e/fixtures/routes.d.ts +3 -3
- package/dist/e2e/fixtures/routes.d.ts.map +1 -1
- package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/BaseLocalDeploymentManager.js +3 -2
- package/dist/e2e/harness/BaseLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.js.map +1 -1
- package/dist/e2e/harness/LocalProvider.d.ts +3 -0
- package/dist/e2e/harness/LocalProvider.d.ts.map +1 -0
- package/dist/e2e/harness/LocalProvider.js +9 -0
- package/dist/e2e/harness/LocalProvider.js.map +1 -0
- package/dist/e2e/harness/LocalProvider.test.d.ts +2 -0
- package/dist/e2e/harness/LocalProvider.test.d.ts.map +1 -0
- package/dist/e2e/harness/LocalProvider.test.js +14 -0
- package/dist/e2e/harness/LocalProvider.test.js.map +1 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/MixedLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/MockExplorerClient.d.ts.map +1 -1
- package/dist/e2e/harness/MockExplorerClient.js.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.js.map +1 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.js +2 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.d.ts.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.js +3 -5
- package/dist/e2e/harness/SnapshotHelper.js.map +1 -1
- package/dist/e2e/harness/TestHelpers.js +1 -2
- package/dist/e2e/harness/TestHelpers.js.map +1 -1
- package/dist/e2e/harness/TestRebalancer.d.ts +5 -1
- package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
- package/dist/e2e/harness/TestRebalancer.js +14 -4
- package/dist/e2e/harness/TestRebalancer.js.map +1 -1
- package/dist/e2e/relayer-denylist.e2e-test.d.ts +2 -0
- package/dist/e2e/relayer-denylist.e2e-test.d.ts.map +1 -0
- package/dist/e2e/relayer-denylist.e2e-test.js +388 -0
- package/dist/e2e/relayer-denylist.e2e-test.js.map +1 -0
- package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
- package/dist/factories/RebalancerContextFactory.js +61 -31
- package/dist/factories/RebalancerContextFactory.js.map +1 -1
- package/dist/factories/RebalancerContextFactory.test.js +336 -5
- package/dist/factories/RebalancerContextFactory.test.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IRebalancer.d.ts +4 -2
- package/dist/interfaces/IRebalancer.d.ts.map +1 -1
- package/dist/metrics/Metrics.d.ts.map +1 -1
- package/dist/metrics/Metrics.js +1 -1
- package/dist/metrics/Metrics.js.map +1 -1
- package/dist/metrics/PriceGetter.d.ts +1 -0
- package/dist/metrics/PriceGetter.d.ts.map +1 -1
- package/dist/metrics/PriceGetter.js +14 -4
- package/dist/metrics/PriceGetter.js.map +1 -1
- package/dist/metrics/PriceGetter.test.d.ts +2 -0
- package/dist/metrics/PriceGetter.test.d.ts.map +1 -0
- package/dist/metrics/PriceGetter.test.js +84 -0
- package/dist/metrics/PriceGetter.test.js.map +1 -0
- package/dist/metrics/scripts/metrics.d.ts +4 -4
- package/dist/monitor/Monitor.d.ts +1 -0
- package/dist/monitor/Monitor.d.ts.map +1 -1
- package/dist/monitor/Monitor.js +55 -46
- package/dist/monitor/Monitor.js.map +1 -1
- package/dist/monitor/Monitor.test.d.ts +2 -0
- package/dist/monitor/Monitor.test.d.ts.map +1 -0
- package/dist/monitor/Monitor.test.js +346 -0
- package/dist/monitor/Monitor.test.js.map +1 -0
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +9 -5
- package/dist/service.js.map +1 -1
- package/dist/strategy/BaseStrategy.d.ts.map +1 -1
- package/dist/strategy/BaseStrategy.js +13 -11
- package/dist/strategy/BaseStrategy.js.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.js +2 -2
- package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
- package/dist/strategy/CompositeStrategy.d.ts.map +1 -1
- package/dist/strategy/CompositeStrategy.js.map +1 -1
- package/dist/strategy/CompositeStrategy.test.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.d.ts +1 -0
- package/dist/strategy/MinAmountStrategy.d.ts.map +1 -1
- package/dist/strategy/MinAmountStrategy.js +12 -8
- package/dist/strategy/MinAmountStrategy.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.test.js +189 -2
- package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
- package/dist/strategy/StrategyFactory.d.ts.map +1 -1
- package/dist/strategy/StrategyFactory.js.map +1 -1
- package/dist/strategy/WeightedStrategy.d.ts.map +1 -1
- package/dist/test/helpers.d.ts +11 -3
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js +9 -11
- package/dist/test/helpers.js.map +1 -1
- package/dist/test/lifiMocks.d.ts +6 -6
- package/dist/test/lifiMocks.d.ts.map +1 -1
- package/dist/test/lifiMocks.js +5 -2
- package/dist/test/lifiMocks.js.map +1 -1
- package/dist/test/pendingTransferMiddlewareMocks.d.ts +17 -0
- package/dist/test/pendingTransferMiddlewareMocks.d.ts.map +1 -0
- package/dist/test/pendingTransferMiddlewareMocks.js +43 -0
- package/dist/test/pendingTransferMiddlewareMocks.js.map +1 -0
- package/dist/tracking/ActionTracker.d.ts +4 -0
- package/dist/tracking/ActionTracker.d.ts.map +1 -1
- package/dist/tracking/ActionTracker.js +76 -9
- package/dist/tracking/ActionTracker.js.map +1 -1
- package/dist/tracking/ActionTracker.test.js +418 -1
- package/dist/tracking/ActionTracker.test.js.map +1 -1
- package/dist/tracking/IActionTracker.d.ts +4 -2
- package/dist/tracking/IActionTracker.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.js.map +1 -1
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.d.ts +64 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.js +474 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.js +1168 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.d.ts +61 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.js +160 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.js +369 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.d.ts +60 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.js +288 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.js +606 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.d.ts +25 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.js +41 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.js +141 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.d.ts +12 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.js +29 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.d.ts +59 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.js +661 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.js +1093 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/types.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/types.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/types.js +4 -0
- package/dist/tracking/pendingTransferMiddlewares/types.js.map +1 -0
- package/dist/tracking/store/InMemoryStore.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.d.ts +1 -0
- package/dist/utils/ExplorerClient.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.js +8 -3
- package/dist/utils/ExplorerClient.js.map +1 -1
- package/dist/utils/ExplorerClient.test.js +25 -0
- package/dist/utils/ExplorerClient.test.js.map +1 -1
- package/dist/utils/balanceUtils.d.ts +7 -1
- package/dist/utils/balanceUtils.d.ts.map +1 -1
- package/dist/utils/balanceUtils.js +39 -1
- package/dist/utils/balanceUtils.js.map +1 -1
- package/dist/utils/balanceUtils.test.js +55 -1
- package/dist/utils/balanceUtils.test.js.map +1 -1
- package/dist/utils/blockTag.d.ts +5 -4
- package/dist/utils/blockTag.d.ts.map +1 -1
- package/dist/utils/blockTag.js +26 -10
- package/dist/utils/blockTag.js.map +1 -1
- package/dist/utils/blockTag.test.d.ts +2 -0
- package/dist/utils/blockTag.test.d.ts.map +1 -0
- package/dist/utils/blockTag.test.js +132 -0
- package/dist/utils/blockTag.test.js.map +1 -0
- package/dist/utils/bridgeUtils.js.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/gasEstimation.d.ts +2 -1
- package/dist/utils/gasEstimation.d.ts.map +1 -1
- package/dist/utils/gasEstimation.js +16 -13
- package/dist/utils/gasEstimation.js.map +1 -1
- package/dist/utils/gasEstimation.test.d.ts +2 -0
- package/dist/utils/gasEstimation.test.d.ts.map +1 -0
- package/dist/utils/gasEstimation.test.js +104 -0
- package/dist/utils/gasEstimation.test.js.map +1 -0
- package/dist/utils/tokenUtils.d.ts.map +1 -1
- package/dist/utils/tokenUtils.js +5 -2
- package/dist/utils/tokenUtils.js.map +1 -1
- package/package.json +23 -22
- package/src/bridges/LiFiBridge.test.ts +270 -0
- package/src/bridges/LiFiBridge.ts +90 -71
- package/src/config/RebalancerConfig.test.ts +315 -1
- package/src/config/RebalancerConfig.ts +6 -3
- package/src/config/types.ts +98 -8
- package/src/core/InventoryRebalancer.test.ts +1092 -38
- package/src/core/InventoryRebalancer.ts +584 -351
- package/src/core/Rebalancer.test.ts +84 -0
- package/src/core/Rebalancer.ts +22 -6
- package/src/core/RebalancerOrchestrator.test.ts +0 -1
- package/src/core/RebalancerService.test.ts +35 -0
- package/src/core/RebalancerService.ts +3 -2
- package/src/e2e/harness/BaseLocalDeploymentManager.ts +3 -1
- package/src/e2e/harness/LocalProvider.test.ts +16 -0
- package/src/e2e/harness/LocalProvider.ts +10 -0
- package/src/e2e/harness/NativeLocalDeploymentManager.ts +2 -1
- package/src/e2e/harness/SnapshotHelper.ts +2 -5
- package/src/e2e/harness/TestHelpers.ts +3 -3
- package/src/e2e/harness/TestRebalancer.ts +21 -1
- package/src/e2e/relayer-denylist.e2e-test.ts +558 -0
- package/src/factories/RebalancerContextFactory.test.ts +489 -8
- package/src/factories/RebalancerContextFactory.ts +86 -36
- package/src/index.ts +2 -0
- package/src/interfaces/IRebalancer.ts +4 -1
- package/src/metrics/Metrics.ts +1 -0
- package/src/metrics/PriceGetter.test.ts +113 -0
- package/src/metrics/PriceGetter.ts +18 -3
- package/src/monitor/Monitor.test.ts +408 -0
- package/src/monitor/Monitor.ts +123 -97
- package/src/service.ts +14 -8
- package/src/strategy/BaseStrategy.ts +18 -15
- package/src/strategy/CollateralDeficitStrategy.ts +4 -3
- package/src/strategy/MinAmountStrategy.test.ts +238 -2
- package/src/strategy/MinAmountStrategy.ts +29 -17
- package/src/test/helpers.ts +13 -12
- package/src/test/lifiMocks.ts +5 -2
- package/src/test/pendingTransferMiddlewareMocks.ts +65 -0
- package/src/tracking/ActionTracker.test.ts +635 -3
- package/src/tracking/ActionTracker.ts +92 -12
- package/src/tracking/IActionTracker.ts +4 -2
- package/src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.ts +1693 -0
- package/src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.ts +784 -0
- package/src/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.ts +554 -0
- package/src/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.ts +233 -0
- package/src/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.ts +894 -0
- package/src/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.ts +404 -0
- package/src/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.ts +205 -0
- package/src/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.ts +89 -0
- package/src/tracking/pendingTransferMiddlewares/fixtures/mainnet-denylist.json +3556 -0
- package/src/tracking/pendingTransferMiddlewares/matchBody.ts +43 -0
- package/src/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.ts +1220 -0
- package/src/tracking/pendingTransferMiddlewares/relayerDenylistRules.ts +934 -0
- package/src/tracking/pendingTransferMiddlewares/types.ts +3 -0
- package/src/utils/ExplorerClient.test.ts +42 -0
- package/src/utils/ExplorerClient.ts +14 -3
- package/src/utils/balanceUtils.test.ts +87 -1
- package/src/utils/balanceUtils.ts +73 -2
- package/src/utils/blockTag.test.ts +173 -0
- package/src/utils/blockTag.ts +35 -15
- package/src/utils/gasEstimation.test.ts +192 -0
- package/src/utils/gasEstimation.ts +17 -11
- package/src/utils/tokenUtils.ts +5 -2
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { DomainRoutingIsm__factory, IInterchainSecurityModule__factory, MailboxClient__factory, Mailbox__factory, StaticAggregationIsm__factory, } from '@humanode-hyperlane/core';
|
|
3
|
+
import { EthJsonRpcBlockParameterTag, EvmIsmReader, IsmType, ModuleType, } from '@humanode-hyperlane/sdk';
|
|
4
|
+
import { readBlacklistedIds } from '@humanode-hyperlane/sdk/ism/blacklist';
|
|
5
|
+
import { isMissingSelectorCallException, isRevertData, } from '@humanode-hyperlane/sdk/utils/contract';
|
|
6
|
+
import { assert, concurrentMap, LogLevel, ProtocolType, } from '@humanode-hyperlane/utils';
|
|
7
|
+
import { PendingTransferMiddlewareType } from '../../config/types.js';
|
|
8
|
+
import { PendingTransferMiddleware } from './PendingTransferMiddleware.js';
|
|
9
|
+
import { normalizeMessageId } from './types.js';
|
|
10
|
+
const REFRESH_CONCURRENCY = 3;
|
|
11
|
+
export const BLACKLIST_ISM_REFRESH_FAILED_MESSAGE = "BlacklistIsm refresh failed, keeping the destination's last known BlacklistIsms and ids";
|
|
12
|
+
export const BLACKLIST_ISM_NO_BLOCKING_ROUTES_MESSAGE = 'No route pair has a BlacklistIsm that can block a message after refresh, ignoring no pending transfers';
|
|
13
|
+
function addressOf(config) {
|
|
14
|
+
if (typeof config === 'string')
|
|
15
|
+
return config;
|
|
16
|
+
return 'address' in config && typeof config.address === 'string'
|
|
17
|
+
? config.address
|
|
18
|
+
: undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The ISMs on `origin`'s path through `config` that defer to their mailbox's
|
|
22
|
+
* default ISM: mailbox default ISM wrappers, and fallback routing ISMs without
|
|
23
|
+
* a module for the origin.
|
|
24
|
+
*/
|
|
25
|
+
function defaultingIsms(config, origin) {
|
|
26
|
+
if (typeof config === 'string')
|
|
27
|
+
return [];
|
|
28
|
+
switch (config.type) {
|
|
29
|
+
case IsmType.AGGREGATION:
|
|
30
|
+
case IsmType.STORAGE_AGGREGATION:
|
|
31
|
+
return config.modules.flatMap((module) => defaultingIsms(module, origin));
|
|
32
|
+
case IsmType.FALLBACK_ROUTING:
|
|
33
|
+
case IsmType.MAILBOX_DEFAULT: {
|
|
34
|
+
if ('domains' in config && origin in config.domains) {
|
|
35
|
+
return defaultingIsms(config.domains[origin], origin);
|
|
36
|
+
}
|
|
37
|
+
const address = addressOf(config);
|
|
38
|
+
assert(address, `Derived ${config.type} config has no address`);
|
|
39
|
+
return [address];
|
|
40
|
+
}
|
|
41
|
+
case IsmType.ROUTING:
|
|
42
|
+
case IsmType.INCREMENTAL_ROUTING:
|
|
43
|
+
return origin in config.domains
|
|
44
|
+
? defaultingIsms(config.domains[origin], origin)
|
|
45
|
+
: [];
|
|
46
|
+
default:
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Combines an aggregation's children: copies of one BlacklistIsm reject
|
|
52
|
+
* together, so children are counted by address, and children that always
|
|
53
|
+
* reject count against the threshold.
|
|
54
|
+
*/
|
|
55
|
+
function combineAggregation(children, threshold) {
|
|
56
|
+
const resolved = [];
|
|
57
|
+
let alwaysRejecting;
|
|
58
|
+
for (const child of children) {
|
|
59
|
+
if (child instanceof Set)
|
|
60
|
+
resolved.push(child);
|
|
61
|
+
else
|
|
62
|
+
alwaysRejecting ??= child;
|
|
63
|
+
}
|
|
64
|
+
const passable = resolved.length;
|
|
65
|
+
if (alwaysRejecting && passable < threshold)
|
|
66
|
+
return alwaysRejecting;
|
|
67
|
+
const sufficient = new Set();
|
|
68
|
+
for (const child of resolved) {
|
|
69
|
+
for (const address of child) {
|
|
70
|
+
const rejecting = resolved.filter((other) => other.has(address));
|
|
71
|
+
if (passable - rejecting.length < threshold) {
|
|
72
|
+
sufficient.add(address);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return sufficient;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Finds the BlacklistIsms that make `config` reject a message from `origin`
|
|
80
|
+
* on their own: with only that BlacklistIsm rejecting and every other module
|
|
81
|
+
* passing, the ISM still rejects. Domain routing ISMs are resolved for the
|
|
82
|
+
* origin; a fallback routing ISM without a module for it and a mailbox
|
|
83
|
+
* default ISM wrapper use their entry in `mailboxDefaults`, the already
|
|
84
|
+
* resolved default ISM of their own mailbox, keyed by their lowercase address.
|
|
85
|
+
* A routing ISM without a module for the origin always rejects.
|
|
86
|
+
* Any other ISM never blocks, including amount routing ISMs, whose module
|
|
87
|
+
* depends on the transfer amount.
|
|
88
|
+
*/
|
|
89
|
+
function findSufficientBlacklists(config, origin, mailboxDefaults) {
|
|
90
|
+
if (typeof config === 'string')
|
|
91
|
+
return new Set();
|
|
92
|
+
switch (config.type) {
|
|
93
|
+
case IsmType.BLACKLIST: {
|
|
94
|
+
const address = addressOf(config);
|
|
95
|
+
assert(address, 'Derived BlacklistIsm config has no address');
|
|
96
|
+
return new Set([address.toLowerCase()]);
|
|
97
|
+
}
|
|
98
|
+
case IsmType.AGGREGATION:
|
|
99
|
+
case IsmType.STORAGE_AGGREGATION:
|
|
100
|
+
return combineAggregation(config.modules.map((module) => findSufficientBlacklists(module, origin, mailboxDefaults)), config.threshold);
|
|
101
|
+
case IsmType.ROUTING:
|
|
102
|
+
case IsmType.INCREMENTAL_ROUTING:
|
|
103
|
+
if (!(origin in config.domains)) {
|
|
104
|
+
return { unroutedRoutingIsm: addressOf(config) };
|
|
105
|
+
}
|
|
106
|
+
return findSufficientBlacklists(config.domains[origin], origin, mailboxDefaults);
|
|
107
|
+
case IsmType.FALLBACK_ROUTING:
|
|
108
|
+
if (origin in config.domains) {
|
|
109
|
+
return findSufficientBlacklists(config.domains[origin], origin, mailboxDefaults);
|
|
110
|
+
}
|
|
111
|
+
return mailboxDefaultFor(config, mailboxDefaults);
|
|
112
|
+
case IsmType.MAILBOX_DEFAULT:
|
|
113
|
+
// DefaultIsm routes every message to its mailbox's default ISM.
|
|
114
|
+
return mailboxDefaultFor(config, mailboxDefaults);
|
|
115
|
+
default:
|
|
116
|
+
return new Set();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function mailboxDefaultFor(config, mailboxDefaults) {
|
|
120
|
+
const address = addressOf(config);
|
|
121
|
+
assert(address, `Derived ${config.type} config has no address`);
|
|
122
|
+
const resolved = mailboxDefaults.get(address.toLowerCase());
|
|
123
|
+
assert(resolved, `ISM ${address} defers to a mailbox default ISM that was not resolved`);
|
|
124
|
+
return resolved;
|
|
125
|
+
}
|
|
126
|
+
function routeKey(origin, destination) {
|
|
127
|
+
return `${origin}:${destination}`;
|
|
128
|
+
}
|
|
129
|
+
function deriveIsmConfig(multiProvider, destination, ismAddress) {
|
|
130
|
+
return new EvmIsmReader(multiProvider, multiProvider.getChainName(destination)).deriveIsmConfigFromAddress(ismAddress);
|
|
131
|
+
}
|
|
132
|
+
const errorStringInterface = new ethers.utils.Interface([
|
|
133
|
+
'function Error(string)',
|
|
134
|
+
]);
|
|
135
|
+
/** The revert data of `DomainRoutingIsm.module(origin)` for an unset origin. */
|
|
136
|
+
function missingOriginRevertData(origin) {
|
|
137
|
+
return errorStringInterface.encodeFunctionData('Error', [
|
|
138
|
+
`No ISM found for origin: ${origin}`,
|
|
139
|
+
]);
|
|
140
|
+
}
|
|
141
|
+
function memoize(cache, address, read) {
|
|
142
|
+
const key = address.toLowerCase();
|
|
143
|
+
const cached = cache.get(key);
|
|
144
|
+
if (cached)
|
|
145
|
+
return cached;
|
|
146
|
+
const pending = read();
|
|
147
|
+
cache.set(key, pending);
|
|
148
|
+
return pending;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Resolves the default ISMs of a destination's mailboxes one origin at a time,
|
|
152
|
+
* reading only the branch that origin's messages use: domain routing ISMs are
|
|
153
|
+
* followed through `module(origin)`, aggregations through their modules, and
|
|
154
|
+
* only NULL-type ISMs, the only ones that can be a BlacklistIsm, are derived.
|
|
155
|
+
* Other ISMs, including routing ISMs without `module(origin)`, never block and
|
|
156
|
+
* are not read further. Reads shared by several origins or mailboxes are made
|
|
157
|
+
* once.
|
|
158
|
+
*/
|
|
159
|
+
class MailboxDefaultIsmReader {
|
|
160
|
+
multiProvider;
|
|
161
|
+
destination;
|
|
162
|
+
provider;
|
|
163
|
+
defaultIsms = new Map();
|
|
164
|
+
mailboxes = new Map();
|
|
165
|
+
resolved = new Map();
|
|
166
|
+
moduleTypes = new Map();
|
|
167
|
+
aggregations = new Map();
|
|
168
|
+
derived = new Map();
|
|
169
|
+
constructor(multiProvider, destination) {
|
|
170
|
+
this.multiProvider = multiProvider;
|
|
171
|
+
this.destination = destination;
|
|
172
|
+
this.provider = multiProvider.getProvider(destination);
|
|
173
|
+
}
|
|
174
|
+
defaultIsm(mailbox) {
|
|
175
|
+
return memoize(this.defaultIsms, mailbox, () => Mailbox__factory.connect(mailbox, this.provider).defaultIsm());
|
|
176
|
+
}
|
|
177
|
+
/** The mailbox a mailbox default ISM wrapper or a mailbox client uses. */
|
|
178
|
+
mailboxOf(ism) {
|
|
179
|
+
return memoize(this.mailboxes, ism, () => MailboxClient__factory.connect(ism, this.provider).mailbox());
|
|
180
|
+
}
|
|
181
|
+
resolve(mailbox, origin, originName) {
|
|
182
|
+
return memoize(this.resolved, `${mailbox}:${origin}`, async () => this.resolveIsm(await this.defaultIsm(mailbox), origin, originName, new Set()));
|
|
183
|
+
}
|
|
184
|
+
async resolveIsm(address, origin, originName, visited) {
|
|
185
|
+
const key = address.toLowerCase();
|
|
186
|
+
assert(!visited.has(key), `Mailbox default ISM ${address} loops back to itself for ${originName}`);
|
|
187
|
+
const path = new Set(visited).add(key);
|
|
188
|
+
const moduleType = await memoize(this.moduleTypes, address, () => IInterchainSecurityModule__factory.connect(address, this.provider).moduleType());
|
|
189
|
+
switch (moduleType) {
|
|
190
|
+
case ModuleType.ROUTING: {
|
|
191
|
+
let routed;
|
|
192
|
+
try {
|
|
193
|
+
routed = await DomainRoutingIsm__factory.connect(address, this.provider).module(origin);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
if (isRevertData(error, missingOriginRevertData(origin))) {
|
|
197
|
+
return { unroutedRoutingIsm: address };
|
|
198
|
+
}
|
|
199
|
+
if (!isMissingSelectorCallException(error))
|
|
200
|
+
throw error;
|
|
201
|
+
return new Set();
|
|
202
|
+
}
|
|
203
|
+
return this.resolveIsm(routed, origin, originName, path);
|
|
204
|
+
}
|
|
205
|
+
case ModuleType.AGGREGATION: {
|
|
206
|
+
const [modules, threshold] = await memoize(this.aggregations, address, () => StaticAggregationIsm__factory.connect(address, this.provider).modulesAndThreshold('0x'));
|
|
207
|
+
const children = [];
|
|
208
|
+
for (const module of modules) {
|
|
209
|
+
children.push(await this.resolveIsm(module, origin, originName, path));
|
|
210
|
+
}
|
|
211
|
+
return combineAggregation(children, threshold);
|
|
212
|
+
}
|
|
213
|
+
case ModuleType.NULL:
|
|
214
|
+
return findSufficientBlacklists(await this.derive(address), originName, new Map());
|
|
215
|
+
default:
|
|
216
|
+
return new Set();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
derive(address) {
|
|
220
|
+
return memoize(this.derived, address, () => deriveIsmConfig(this.multiProvider, this.destination, address));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Reads the destination router's ISM and finds its sufficient BlacklistIsms
|
|
225
|
+
* for every origin. A custom router ISM is derived in full once; the mailbox
|
|
226
|
+
* default ISM, used by routers without one and reached through mailbox default
|
|
227
|
+
* ISM wrappers or fallback routing ISMs, is resolved per origin.
|
|
228
|
+
*/
|
|
229
|
+
async function readRecipientIsmBlacklists(options, destination, router, origins) {
|
|
230
|
+
const { multiProvider } = options;
|
|
231
|
+
const mailboxAddress = options.mailboxByDomain[destination];
|
|
232
|
+
assert(mailboxAddress, `Missing mailbox for destination domain ${destination}`);
|
|
233
|
+
const defaultIsmReader = new MailboxDefaultIsmReader(multiProvider, destination);
|
|
234
|
+
// Mailbox.recipientIsm falls back to the default ISM when the router's
|
|
235
|
+
// ISM is unset, exactly as delivery does.
|
|
236
|
+
const [recipientIsm, defaultIsm] = await Promise.all([
|
|
237
|
+
Mailbox__factory.connect(mailboxAddress, multiProvider.getProvider(destination)).recipientIsm(router),
|
|
238
|
+
defaultIsmReader.defaultIsm(mailboxAddress),
|
|
239
|
+
]);
|
|
240
|
+
const usesDefault = recipientIsm.toLowerCase() === defaultIsm.toLowerCase();
|
|
241
|
+
const customConfig = usesDefault
|
|
242
|
+
? undefined
|
|
243
|
+
: await deriveIsmConfig(multiProvider, destination, recipientIsm);
|
|
244
|
+
const resolved = [];
|
|
245
|
+
for (const origin of origins) {
|
|
246
|
+
const originName = multiProvider.getChainName(origin);
|
|
247
|
+
if (!customConfig) {
|
|
248
|
+
resolved.push([
|
|
249
|
+
origin,
|
|
250
|
+
await defaultIsmReader.resolve(mailboxAddress, origin, originName),
|
|
251
|
+
]);
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
// Each wrapper or fallback routing ISM defers to its own mailbox.
|
|
255
|
+
const mailboxDefaults = new Map();
|
|
256
|
+
for (const ism of defaultingIsms(customConfig, originName)) {
|
|
257
|
+
const ismMailbox = await defaultIsmReader.mailboxOf(ism);
|
|
258
|
+
mailboxDefaults.set(ism.toLowerCase(), await defaultIsmReader.resolve(ismMailbox, origin, originName));
|
|
259
|
+
}
|
|
260
|
+
resolved.push([
|
|
261
|
+
origin,
|
|
262
|
+
findSufficientBlacklists(customConfig, originName, mailboxDefaults),
|
|
263
|
+
]);
|
|
264
|
+
}
|
|
265
|
+
return resolved;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Resolves the pairs with one EVM destination to the BlacklistIsms that reject
|
|
269
|
+
* their messages on their own and reads their ids at the finalized block.
|
|
270
|
+
*/
|
|
271
|
+
async function resolveDestinationRoutes(options, destination, logger, resolvedLevel) {
|
|
272
|
+
const { multiProvider } = options;
|
|
273
|
+
const router = options.routersByDomain[destination];
|
|
274
|
+
const origins = Object.keys(options.routersByDomain)
|
|
275
|
+
.map(Number)
|
|
276
|
+
.filter((origin) => origin !== destination);
|
|
277
|
+
const routes = new Map();
|
|
278
|
+
let resolved;
|
|
279
|
+
try {
|
|
280
|
+
resolved = await readRecipientIsmBlacklists(options, destination, router, origins);
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
284
|
+
throw new Error(`Failed to resolve the ISM of router ${router} on domain ${destination}: ${message}`);
|
|
285
|
+
}
|
|
286
|
+
for (const [origin, sufficient] of resolved) {
|
|
287
|
+
if (!(sufficient instanceof Set)) {
|
|
288
|
+
logger.warn({
|
|
289
|
+
router,
|
|
290
|
+
destination,
|
|
291
|
+
origin,
|
|
292
|
+
routingIsm: sufficient.unroutedRoutingIsm,
|
|
293
|
+
}, 'Routing ISM has no module for origin, skipping BlacklistIsm check for this route pair');
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (sufficient.size === 0) {
|
|
297
|
+
logger.debug({ origin, destination, router }, 'No BlacklistIsm can block messages on this route pair, skipping');
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
const route = {
|
|
301
|
+
destination,
|
|
302
|
+
chainName: multiProvider.getChainName(destination),
|
|
303
|
+
blacklistIsms: [...sufficient],
|
|
304
|
+
ids: new Set(),
|
|
305
|
+
};
|
|
306
|
+
routes.set(routeKey(origin, destination), route);
|
|
307
|
+
logger[resolvedLevel]({ origin, destination, router, blacklistIsms: route.blacklistIsms }, 'Resolved BlacklistIsms for pending transfer middleware');
|
|
308
|
+
}
|
|
309
|
+
await seedRouteIds(routes, multiProvider);
|
|
310
|
+
return routes;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Resolves every pair with an EVM destination and reads its ids. With no
|
|
314
|
+
* `previous` routes, at startup, any destination's failure throws; on refresh,
|
|
315
|
+
* a destination that fails keeps its `previous` routes and ids.
|
|
316
|
+
*/
|
|
317
|
+
async function resolveRouteBlacklists(options, logger, previous) {
|
|
318
|
+
const routes = new Map();
|
|
319
|
+
for (const destination of Object.keys(options.routersByDomain).map(Number)) {
|
|
320
|
+
if (options.multiProvider.getProtocol(destination) !== ProtocolType.Ethereum) {
|
|
321
|
+
logger.debug({ destination }, 'Skipping BlacklistIsm resolution for non-EVM destination');
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
let resolved;
|
|
325
|
+
try {
|
|
326
|
+
resolved = await resolveDestinationRoutes(options, destination, logger, previous ? LogLevel.Debug : LogLevel.Info);
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
if (!previous)
|
|
330
|
+
throw error;
|
|
331
|
+
logger.warn({
|
|
332
|
+
destination,
|
|
333
|
+
error: error instanceof Error ? error.message : String(error),
|
|
334
|
+
}, BLACKLIST_ISM_REFRESH_FAILED_MESSAGE);
|
|
335
|
+
resolved = [...previous].filter(([, route]) => route.destination === destination);
|
|
336
|
+
}
|
|
337
|
+
for (const [key, route] of resolved)
|
|
338
|
+
routes.set(key, route);
|
|
339
|
+
}
|
|
340
|
+
return routes;
|
|
341
|
+
}
|
|
342
|
+
function readKey(destination, blacklistIsm) {
|
|
343
|
+
return `${destination}:${blacklistIsm}`;
|
|
344
|
+
}
|
|
345
|
+
/** Groups the BlacklistIsm reads of `routes`, one per destination and ISM. */
|
|
346
|
+
function groupReads(routes) {
|
|
347
|
+
const reads = new Map();
|
|
348
|
+
for (const route of routes) {
|
|
349
|
+
for (const blacklistIsm of route.blacklistIsms) {
|
|
350
|
+
const key = readKey(route.destination, blacklistIsm);
|
|
351
|
+
const read = reads.get(key) ?? {
|
|
352
|
+
destination: route.destination,
|
|
353
|
+
chainName: route.chainName,
|
|
354
|
+
blacklistIsm,
|
|
355
|
+
routes: [],
|
|
356
|
+
};
|
|
357
|
+
read.routes.push(route);
|
|
358
|
+
reads.set(key, read);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return [...reads.values()];
|
|
362
|
+
}
|
|
363
|
+
/** Adds `ids` to every pair using the BlacklistIsm. */
|
|
364
|
+
function addIds(read, ids) {
|
|
365
|
+
for (const route of read.routes) {
|
|
366
|
+
for (const id of ids)
|
|
367
|
+
route.ids.add(id.toLowerCase());
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/** Reads a BlacklistIsm's blacklisted ids at its destination's finalized block. */
|
|
371
|
+
function readFinalizedIds(multiProvider, read) {
|
|
372
|
+
return readBlacklistedIds(read.chainName, read.blacklistIsm, multiProvider, undefined, EthJsonRpcBlockParameterTag.Finalized);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Reads every pair's BlacklistIsms at their destination's finalized block and
|
|
376
|
+
* adds the ids to the pairs. Throws if any read fails.
|
|
377
|
+
*/
|
|
378
|
+
async function seedRouteIds(routes, multiProvider) {
|
|
379
|
+
await concurrentMap(REFRESH_CONCURRENCY, groupReads(routes.values()), async (read) => {
|
|
380
|
+
let ids;
|
|
381
|
+
try {
|
|
382
|
+
ids = await readFinalizedIds(multiProvider, read);
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
386
|
+
throw new Error(`Failed to read the blacklisted ids of BlacklistIsm ${read.blacklistIsm} on domain ${read.destination}: ${message}`, { cause: error });
|
|
387
|
+
}
|
|
388
|
+
addIds(read, ids);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Ignores messages to EVM destinations that a BlacklistIsm in the destination
|
|
393
|
+
* router's ISM rejects on its own: with that BlacklistIsm rejecting and every
|
|
394
|
+
* other module passing, the ISM still rejects the message. ISMs that only
|
|
395
|
+
* reject when several BlacklistIsms reject together are treated as never
|
|
396
|
+
* blocking, so those transfers stay reserved.
|
|
397
|
+
*
|
|
398
|
+
* `create()` resolves each destination router's ISM for every origin of the
|
|
399
|
+
* route and keeps, per (origin, destination) pair, only those BlacklistIsms
|
|
400
|
+
* and the union of their blacklisted ids. A custom router ISM is derived in
|
|
401
|
+
* full with `EvmIsmReader`; the mailbox default ISM, which routers without one
|
|
402
|
+
* use and which mailbox default ISM wrappers and fallback routing ISMs defer
|
|
403
|
+
* to through their own mailbox, is read only along each origin's branch,
|
|
404
|
+
* deriving only the ISMs that can be a BlacklistIsm. Amount routing ISMs are
|
|
405
|
+
* treated as never blocking, since their module depends on the transfer
|
|
406
|
+
* amount.
|
|
407
|
+
*
|
|
408
|
+
* Once `refreshIntervalMs` has passed since the last attempt, the next query
|
|
409
|
+
* repeats this resolution and replaces the pairs, so a changed router ISM,
|
|
410
|
+
* mailbox default ISM or routing ISM takes effect without a restart. The ISM
|
|
411
|
+
* graph is resolved at the latest block. Each destination is refreshed on its
|
|
412
|
+
* own: one whose resolution or id read fails keeps its previous pairs and ids,
|
|
413
|
+
* and a refresh that finds no pair that can block ignores nothing.
|
|
414
|
+
*
|
|
415
|
+
* Blacklisted ids are read at the destination's finalized block, once per
|
|
416
|
+
* BlacklistIsm however many pairs use it, so an id whose blacklisting is
|
|
417
|
+
* reorged out is never ignored and a new blacklist entry takes effect once it
|
|
418
|
+
* is finalized; the ids derived with the graph are not used. An RPC without
|
|
419
|
+
* `finalized` block tag support makes every read on its destination fail,
|
|
420
|
+
* whether the BlacklistIsm enumerates its ids or they are replayed from its
|
|
421
|
+
* logs.
|
|
422
|
+
*/
|
|
423
|
+
export class BlacklistIsmMiddleware extends PendingTransferMiddleware {
|
|
424
|
+
options;
|
|
425
|
+
routes;
|
|
426
|
+
lastAttemptAt = Date.now();
|
|
427
|
+
constructor(inner, options,
|
|
428
|
+
/** Pairs with at least one BlacklistIsm that rejects on its own. */
|
|
429
|
+
routes) {
|
|
430
|
+
super(inner, PendingTransferMiddlewareType.BlacklistIsm);
|
|
431
|
+
this.options = options;
|
|
432
|
+
this.routes = routes;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Resolves the BlacklistIsms of every route pair and reads their ids at the
|
|
436
|
+
* destination's finalized block. Throws if any EVM destination's ISM cannot
|
|
437
|
+
* be derived, if no route pair has a BlacklistIsm that can block a message,
|
|
438
|
+
* or if a BlacklistIsm's ids cannot be read at the finalized block, which
|
|
439
|
+
* includes a destination RPC without `finalized` block tag support. A pair
|
|
440
|
+
* whose domain routing ISM has no module for the origin is skipped with a
|
|
441
|
+
* warning. Later refreshes repeat this per destination but never throw.
|
|
442
|
+
*/
|
|
443
|
+
static async create(inner, options, logger) {
|
|
444
|
+
const routes = await resolveRouteBlacklists(options, logger);
|
|
445
|
+
if (routes.size === 0) {
|
|
446
|
+
throw new Error('No route pair has a BlacklistIsm that can block a message; remove the blacklistIsm pending transfer middleware');
|
|
447
|
+
}
|
|
448
|
+
return new BlacklistIsmMiddleware(inner, options, routes);
|
|
449
|
+
}
|
|
450
|
+
async findIgnored(messages, logger) {
|
|
451
|
+
await this.refreshIfStale(logger);
|
|
452
|
+
const ignored = new Map();
|
|
453
|
+
for (const msg of messages) {
|
|
454
|
+
const destination = msg.destination_domain_id;
|
|
455
|
+
const route = this.routes.get(routeKey(msg.origin_domain_id, destination));
|
|
456
|
+
const messageId = normalizeMessageId(msg.msg_id);
|
|
457
|
+
if (!route?.ids.has(messageId))
|
|
458
|
+
continue;
|
|
459
|
+
ignored.set(messageId, `Blacklisted by a BlacklistIsm (${route.blacklistIsms.join(', ')}) in the ISM of router ${this.options.routersByDomain[destination]} on domain ${destination}`);
|
|
460
|
+
}
|
|
461
|
+
return ignored;
|
|
462
|
+
}
|
|
463
|
+
async refreshIfStale(logger) {
|
|
464
|
+
const now = Date.now();
|
|
465
|
+
if (now - this.lastAttemptAt < this.options.refreshIntervalMs)
|
|
466
|
+
return;
|
|
467
|
+
this.lastAttemptAt = now;
|
|
468
|
+
this.routes = await resolveRouteBlacklists(this.options, logger, this.routes);
|
|
469
|
+
if (this.routes.size === 0) {
|
|
470
|
+
logger.warn(BLACKLIST_ISM_NO_BLOCKING_ROUTES_MESSAGE);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
//# sourceMappingURL=BlacklistIsmMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlacklistIsmMiddleware.js","sourceRoot":"","sources":["../../../src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAEhD,OAAO,EACL,yBAAyB,EACzB,kCAAkC,EAClC,sBAAsB,EACtB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,2BAA2B,EAC3B,YAAY,EAEZ,OAAO,EACP,UAAU,GAEX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EACL,8BAA8B,EAC9B,YAAY,GACb,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,MAAM,EACN,aAAa,EACb,QAAQ,EACR,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAMtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,oCAAoC,GAC/C,yFAAyF,CAAC;AAE5F,MAAM,CAAC,MAAM,wCAAwC,GACnD,wGAAwG,CAAC;AA4C3G,SAAS,SAAS,CAAC,MAAiB;IAClC,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAE9C,OAAO,SAAS,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAC9D,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAiB,EAAE,MAAc;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAE1C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,WAAW,CAAC;QACzB,KAAK,OAAO,CAAC,mBAAmB;YAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5E,KAAK,OAAO,CAAC,gBAAgB,CAAC;QAC9B,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpD,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,wBAAwB,CAAC,CAAC;YAChE,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,OAAO,CAAC,OAAO,CAAC;QACrB,KAAK,OAAO,CAAC,mBAAmB;YAC9B,OAAO,MAAM,IAAI,MAAM,CAAC,OAAO;gBAC7B,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC;QACT;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CACzB,QAAuC,EACvC,SAAiB;IAEjB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,IAAI,eAA2C,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,YAAY,GAAG;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAC1C,eAAe,KAAK,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjC,IAAI,eAAe,IAAI,QAAQ,GAAG,SAAS;QAAE,OAAO,eAAe,CAAC;IAEpE,MAAM,UAAU,GAAyB,IAAI,GAAG,EAAE,CAAC;IACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC5C,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB,CAC/B,MAAiB,EACjB,MAAc,EACd,eAAwD;IAExD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAEjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,OAAO,EAAE,4CAA4C,CAAC,CAAC;YAE9D,OAAO,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,OAAO,CAAC,WAAW,CAAC;QACzB,KAAK,OAAO,CAAC,mBAAmB;YAC9B,OAAO,kBAAkB,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5B,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAC1D,EACD,MAAM,CAAC,SAAS,CACjB,CAAC;QACJ,KAAK,OAAO,CAAC,OAAO,CAAC;QACrB,KAAK,OAAO,CAAC,mBAAmB;YAC9B,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,CAAC;YAED,OAAO,wBAAwB,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,MAAM,EACN,eAAe,CAChB,CAAC;QACJ,KAAK,OAAO,CAAC,gBAAgB;YAC3B,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7B,OAAO,wBAAwB,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,MAAM,EACN,eAAe,CAChB,CAAC;YACJ,CAAC;YAED,OAAO,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpD,KAAK,OAAO,CAAC,eAAe;YAC1B,gEAAgE;YAChE,OAAO,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpD;YACE,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAkC,EAClC,eAAwD;IAExD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,wBAAwB,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,MAAM,CACJ,QAAQ,EACR,OAAO,OAAO,wDAAwD,CACvE,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,WAAmB;IACnD,OAAO,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CACtB,aAA4B,EAC5B,WAAmB,EACnB,UAAkB;IAElB,OAAO,IAAI,YAAY,CACrB,aAAa,EACb,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CACxC,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IACtD,wBAAwB;CACzB,CAAC,CAAC;AAEH,gFAAgF;AAChF,SAAS,uBAAuB,CAAC,MAAc;IAC7C,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACtD,4BAA4B,MAAM,EAAE;KACrC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CACd,KAA8B,EAC9B,OAAe,EACf,IAAsB;IAEtB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC;IACvB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,uBAAuB;IAaR,aAAa;IACb,WAAW;IAbb,QAAQ,CAAqB;IAC7B,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC/C,QAAQ,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC1D,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,YAAY,GAAG,IAAI,GAAG,EAGpC,CAAC;IACa,OAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;IAExE,YACmB,aAA4B,EAC5B,WAAmB;6BADnB,aAAa;2BACb,WAAW;QAE5B,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAC7C,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAC9D,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,SAAS,CAAC,GAAW;QACnB,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CACvC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO,CACL,OAAe,EACf,MAAc,EACd,UAAkB;QAElB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,IAAI,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE,CAC/D,IAAI,CAAC,UAAU,CACb,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,IAAI,GAAG,EAAE,CACV,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,OAAe,EACf,MAAc,EACd,UAAkB,EAClB,OAA4B;QAE5B,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CACJ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EACjB,uBAAuB,OAAO,6BAA6B,UAAU,EAAE,CACxE,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAC/D,kCAAkC,CAAC,OAAO,CACxC,OAAO,EACP,IAAI,CAAC,QAAQ,CACd,CAAC,UAAU,EAAE,CACf,CAAC;QAEF,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,MAAc,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAC9C,OAAO,EACP,IAAI,CAAC,QAAQ,CACd,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,IAAI,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;wBACzD,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;oBACzC,CAAC;oBACD,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;wBAAE,MAAM,KAAK,CAAC;oBAExD,OAAO,IAAI,GAAG,EAAE,CAAC;gBACnB,CAAC;gBAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;YACD,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC5B,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CACxC,IAAI,CAAC,YAAY,EACjB,OAAO,EACP,GAAG,EAAE,CACH,6BAA6B,CAAC,OAAO,CACnC,OAAO,EACP,IAAI,CAAC,QAAQ,CACd,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAC9B,CAAC;gBAEF,MAAM,QAAQ,GAAyB,EAAE,CAAC;gBAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CACX,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CACxD,CAAC;gBACJ,CAAC;gBAED,OAAO,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YACD,KAAK,UAAU,CAAC,IAAI;gBAClB,OAAO,wBAAwB,CAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC1B,UAAU,EACV,IAAI,GAAG,EAAE,CACV,CAAC;YACJ;gBACE,OAAO,IAAI,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,OAAe;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CACzC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAC/D,CAAC;IACJ,CAAC;CACF;AAED;;;;;GAKG;AACH,KAAK,UAAU,0BAA0B,CACvC,OAAsC,EACtC,WAAmB,EACnB,MAAc,EACd,OAAiB;IAEjB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,CACJ,cAAc,EACd,0CAA0C,WAAW,EAAE,CACxD,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,CAClD,aAAa,EACb,WAAW,CACZ,CAAC;IACF,uEAAuE;IACvE,0CAA0C;IAC1C,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,gBAAgB,CAAC,OAAO,CACtB,cAAc,EACd,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CACvC,CAAC,YAAY,CAAC,MAAM,CAAC;QACtB,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5E,MAAM,YAAY,GAAG,WAAW;QAC9B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAwC,EAAE,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM;gBACN,MAAM,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC;aACnE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,kEAAkE;QAClE,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;QAC9D,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzD,eAAe,CAAC,GAAG,CACjB,GAAG,CAAC,WAAW,EAAE,EACjB,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAC/D,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,MAAM;YACN,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAAsC,EACtC,WAAmB,EACnB,MAAc,EACd,aAA6C;IAE7C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACjD,GAAG,CAAC,MAAM,CAAC;SACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEjD,IAAI,QAA6C,CAAC;IAClD,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,0BAA0B,CACzC,OAAO,EACP,WAAW,EACX,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,cAAc,WAAW,KAAK,OAAO,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,UAAU,YAAY,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CACT;gBACE,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,UAAU,EAAE,UAAU,CAAC,kBAAkB;aAC1C,EACD,uFAAuF,CACxF,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CACV,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAC/B,iEAAiE,CAClE,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAmB;YAC5B,WAAW;YACX,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC;YAClD,aAAa,EAAE,CAAC,GAAG,UAAU,CAAC;YAC9B,GAAG,EAAE,IAAI,GAAG,EAAE;SACf,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,aAAa,CAAC,CACnB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,EACnE,wDAAwD,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,OAAsC,EACtC,MAAc,EACd,QAA8C;IAE9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEjD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,IACE,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,YAAY,CAAC,QAAQ,EACxE,CAAC;YACD,MAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,EACf,0DAA0D,CAC3D,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,QAA4C,CAAC;QACjD,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,wBAAwB,CACvC,OAAO,EACP,WAAW,EACX,MAAM,EACN,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ;gBAAE,MAAM,KAAK,CAAC;YAE3B,MAAM,CAAC,IAAI,CACT;gBACE,WAAW;gBACX,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,EACD,oCAAoC,CACrC,CAAC;YACF,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,WAAW,CACjD,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,OAAO,CAAC,WAAmB,EAAE,YAAoB;IACxD,OAAO,GAAG,WAAW,IAAI,YAAY,EAAE,CAAC;AAC1C,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,MAAgC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;gBAC7B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,uDAAuD;AACvD,SAAS,MAAM,CAAC,IAAmB,EAAE,GAAsB;IACzD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,gBAAgB,CACvB,aAA4B,EAC5B,IAAmB;IAEnB,OAAO,kBAAkB,CACvB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,EACjB,aAAa,EACb,SAAS,EACT,2BAA2B,CAAC,SAAS,CACtC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CACzB,MAA2C,EAC3C,aAA4B;IAE5B,MAAM,aAAa,CACjB,mBAAmB,EACnB,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAC3B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,YAAY,cAAc,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,EACnH,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,OAAO,sBAAuB,SAAQ,yBAAyB;IAKhD,OAAO;IAEhB,MAAM;IANR,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEnC,YACE,KAAsB,EACL,OAAsC;IACvD,oEAAoE;IAC5D,MAA2C;QAEnD,KAAK,CAAC,KAAK,EAAE,6BAA6B,CAAC,YAAY,CAAC,CAAC;uBAJxC,OAAO;sBAEhB,MAAM;IAGhB,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,KAAsB,EACtB,OAAsC,EACtC,MAAc;QAEd,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,QAA2B,EAC3B,MAAc;QAEd,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,GAAG,CAAC,qBAAqB,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAC3B,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAC5C,CAAC;YACF,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,SAAS;YAEzC,OAAO,CAAC,GAAG,CACT,SAAS,EACT,kCAAkC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,WAAW,EAAE,CAC/J,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAc;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAAE,OAAO;QAEtE,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,sBAAsB,CACxC,IAAI,CAAC,OAAO,EACZ,MAAM,EACN,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlacklistIsmMiddleware.test.d.ts","sourceRoot":"","sources":["../../../src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.ts"],"names":[],"mappings":""}
|