@metamask-previews/perps-controller 10.0.0-preview-ec4680201 → 10.0.0-preview-0dfe3b334
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/PerpsController-method-action-types.cjs.map +1 -1
- package/dist/PerpsController-method-action-types.d.cts.map +1 -1
- package/dist/PerpsController-method-action-types.d.mts.map +1 -1
- package/dist/PerpsController-method-action-types.mjs.map +1 -1
- package/dist/PerpsController.cjs +163 -163
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.cjs +12 -12
- package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -1
- package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -1
- package/dist/aggregation/index.cjs +2 -2
- package/dist/aggregation/index.cjs.map +1 -1
- package/dist/aggregation/index.d.cts.map +1 -1
- package/dist/aggregation/index.d.mts.map +1 -1
- package/dist/aggregation/index.mjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.cjs +73 -73
- package/dist/constants/hyperLiquidConfig.cjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.cts.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.mts.map +1 -1
- package/dist/constants/hyperLiquidConfig.mjs.map +1 -1
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts.map +1 -1
- package/dist/constants/index.d.mts.map +1 -1
- package/dist/constants/index.mjs.map +1 -1
- package/dist/constants/myxConfig.cjs.map +1 -1
- package/dist/constants/myxConfig.d.cts.map +1 -1
- package/dist/constants/myxConfig.d.mts.map +1 -1
- package/dist/constants/myxConfig.mjs.map +1 -1
- package/dist/index.cjs +268 -268
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.cjs +7 -7
- package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.cjs +312 -312
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
- package/dist/providers/HyperLiquidProvider.mjs +1 -1
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
- package/dist/routing/ProviderRouter.cjs.map +1 -1
- package/dist/routing/ProviderRouter.d.cts.map +1 -1
- package/dist/routing/ProviderRouter.d.mts.map +1 -1
- package/dist/routing/ProviderRouter.mjs.map +1 -1
- package/dist/routing/index.cjs +2 -2
- package/dist/routing/index.cjs.map +1 -1
- package/dist/routing/index.d.cts.map +1 -1
- package/dist/routing/index.d.mts.map +1 -1
- package/dist/routing/index.mjs.map +1 -1
- package/dist/selectors.cjs +8 -8
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +12 -12
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts +12 -12
- package/dist/selectors.d.mts.map +1 -1
- package/dist/selectors.mjs.map +1 -1
- package/dist/services/AccountService.cjs +39 -39
- package/dist/services/AccountService.cjs.map +1 -1
- package/dist/services/AccountService.d.cts.map +1 -1
- package/dist/services/AccountService.d.mts.map +1 -1
- package/dist/services/AccountService.mjs.map +1 -1
- package/dist/services/AggregatedOrderBookConnection.cjs +3 -3
- package/dist/services/AggregatedOrderBookConnection.cjs.map +1 -1
- package/dist/services/AggregatedOrderBookConnection.d.cts.map +1 -1
- package/dist/services/AggregatedOrderBookConnection.d.mts.map +1 -1
- package/dist/services/AggregatedOrderBookConnection.mjs.map +1 -1
- package/dist/services/DataLakeService.cjs +18 -18
- package/dist/services/DataLakeService.cjs.map +1 -1
- package/dist/services/DataLakeService.d.cts.map +1 -1
- package/dist/services/DataLakeService.d.mts.map +1 -1
- package/dist/services/DataLakeService.mjs.map +1 -1
- package/dist/services/DepositService.cjs +8 -8
- package/dist/services/DepositService.cjs.map +1 -1
- package/dist/services/DepositService.d.cts.map +1 -1
- package/dist/services/DepositService.d.mts.map +1 -1
- package/dist/services/DepositService.mjs.map +1 -1
- package/dist/services/DexDiscoveryCacheManager.cjs +3 -3
- package/dist/services/DexDiscoveryCacheManager.cjs.map +1 -1
- package/dist/services/DexDiscoveryCacheManager.d.cts.map +1 -1
- package/dist/services/DexDiscoveryCacheManager.d.mts.map +1 -1
- package/dist/services/DexDiscoveryCacheManager.mjs.map +1 -1
- package/dist/services/EligibilityService.cjs +4 -4
- package/dist/services/EligibilityService.cjs.map +1 -1
- package/dist/services/EligibilityService.d.cts.map +1 -1
- package/dist/services/EligibilityService.d.mts.map +1 -1
- package/dist/services/EligibilityService.mjs.map +1 -1
- package/dist/services/FeatureFlagConfigurationService.cjs +13 -13
- package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -1
- package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -1
- package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -1
- package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -1
- package/dist/services/HyperLiquidClientService.cjs +69 -69
- package/dist/services/HyperLiquidClientService.cjs.map +1 -1
- package/dist/services/HyperLiquidClientService.d.cts +1 -1
- package/dist/services/HyperLiquidClientService.d.cts.map +1 -1
- package/dist/services/HyperLiquidClientService.d.mts +1 -1
- package/dist/services/HyperLiquidClientService.d.mts.map +1 -1
- package/dist/services/HyperLiquidClientService.mjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.cjs +86 -86
- package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.cts +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.mts +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.mjs +1 -1
- package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -1
- package/dist/services/HyperLiquidWalletService.cjs +14 -14
- package/dist/services/HyperLiquidWalletService.cjs.map +1 -1
- package/dist/services/HyperLiquidWalletService.d.cts.map +1 -1
- package/dist/services/HyperLiquidWalletService.d.mts.map +1 -1
- package/dist/services/HyperLiquidWalletService.mjs.map +1 -1
- package/dist/services/MarketDataService.cjs +71 -71
- package/dist/services/MarketDataService.cjs.map +1 -1
- package/dist/services/MarketDataService.d.cts.map +1 -1
- package/dist/services/MarketDataService.d.mts.map +1 -1
- package/dist/services/MarketDataService.mjs.map +1 -1
- package/dist/services/RewardsIntegrationService.cjs +12 -12
- package/dist/services/RewardsIntegrationService.cjs.map +1 -1
- package/dist/services/RewardsIntegrationService.d.cts.map +1 -1
- package/dist/services/RewardsIntegrationService.d.mts.map +1 -1
- package/dist/services/RewardsIntegrationService.mjs.map +1 -1
- package/dist/services/ServiceContext.cjs.map +1 -1
- package/dist/services/ServiceContext.d.cts.map +1 -1
- package/dist/services/ServiceContext.d.mts.map +1 -1
- package/dist/services/ServiceContext.mjs.map +1 -1
- package/dist/services/TerminalMarketService.cjs +10 -10
- package/dist/services/TerminalMarketService.cjs.map +1 -1
- package/dist/services/TerminalMarketService.d.cts.map +1 -1
- package/dist/services/TerminalMarketService.d.mts.map +1 -1
- package/dist/services/TerminalMarketService.mjs.map +1 -1
- package/dist/services/TradingService.cjs +327 -327
- package/dist/services/TradingService.cjs.map +1 -1
- package/dist/services/TradingService.d.cts.map +1 -1
- package/dist/services/TradingService.d.mts.map +1 -1
- package/dist/services/TradingService.mjs.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/types/perps-types.cjs +1 -1
- package/dist/types/perps-types.cjs.map +1 -1
- package/dist/types/perps-types.d.cts.map +1 -1
- package/dist/types/perps-types.d.mts.map +1 -1
- package/dist/types/perps-types.mjs.map +1 -1
- package/dist/utils/accountUtils.cjs +7 -7
- package/dist/utils/accountUtils.cjs.map +1 -1
- package/dist/utils/accountUtils.d.cts +1 -1
- package/dist/utils/accountUtils.d.cts.map +1 -1
- package/dist/utils/accountUtils.d.mts +1 -1
- package/dist/utils/accountUtils.d.mts.map +1 -1
- package/dist/utils/accountUtils.mjs.map +1 -1
- package/dist/utils/coalescePerpsRestRequest.cjs +2 -2
- package/dist/utils/coalescePerpsRestRequest.cjs.map +1 -1
- package/dist/utils/coalescePerpsRestRequest.mjs.map +1 -1
- package/dist/utils/errorUtils.cjs +2 -2
- package/dist/utils/errorUtils.cjs.map +1 -1
- package/dist/utils/errorUtils.mjs.map +1 -1
- package/dist/utils/hyperLiquidAbstraction.cjs.map +1 -1
- package/dist/utils/hyperLiquidAbstraction.d.cts.map +1 -1
- package/dist/utils/hyperLiquidAbstraction.d.mts.map +1 -1
- package/dist/utils/hyperLiquidAbstraction.mjs.map +1 -1
- package/dist/utils/hyperLiquidAdapter.cjs +9 -9
- package/dist/utils/hyperLiquidAdapter.cjs.map +1 -1
- package/dist/utils/hyperLiquidAdapter.d.cts +1 -1
- package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -1
- package/dist/utils/hyperLiquidAdapter.d.mts +1 -1
- package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -1
- package/dist/utils/hyperLiquidAdapter.mjs.map +1 -1
- package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -1
- package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -1
- package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -1
- package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +1 -1
- package/dist/utils/hyperLiquidValidation.cjs +38 -38
- package/dist/utils/hyperLiquidValidation.cjs.map +1 -1
- package/dist/utils/hyperLiquidValidation.d.cts.map +1 -1
- package/dist/utils/hyperLiquidValidation.d.mts.map +1 -1
- package/dist/utils/hyperLiquidValidation.mjs.map +1 -1
- package/dist/utils/index.cjs +12 -12
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.mts.map +1 -1
- package/dist/utils/index.mjs.map +1 -1
- package/dist/utils/marketDataTransform.cjs +11 -11
- package/dist/utils/marketDataTransform.cjs.map +1 -1
- package/dist/utils/marketDataTransform.d.cts +1 -1
- package/dist/utils/marketDataTransform.d.cts.map +1 -1
- package/dist/utils/marketDataTransform.d.mts +1 -1
- package/dist/utils/marketDataTransform.d.mts.map +1 -1
- package/dist/utils/marketDataTransform.mjs.map +1 -1
- package/dist/utils/marketSearch.cjs.map +1 -1
- package/dist/utils/marketSearch.d.cts.map +1 -1
- package/dist/utils/marketSearch.d.mts.map +1 -1
- package/dist/utils/marketSearch.mjs.map +1 -1
- package/dist/utils/marketUtils.cjs +2 -2
- package/dist/utils/marketUtils.cjs.map +1 -1
- package/dist/utils/marketUtils.d.cts.map +1 -1
- package/dist/utils/marketUtils.d.mts.map +1 -1
- package/dist/utils/marketUtils.mjs.map +1 -1
- package/dist/utils/myxAdapter.cjs +44 -44
- package/dist/utils/myxAdapter.cjs.map +1 -1
- package/dist/utils/myxAdapter.d.cts.map +1 -1
- package/dist/utils/myxAdapter.d.mts.map +1 -1
- package/dist/utils/myxAdapter.mjs.map +1 -1
- package/dist/utils/orderCalculations.cjs +17 -17
- package/dist/utils/orderCalculations.cjs.map +1 -1
- package/dist/utils/orderCalculations.d.cts +1 -1
- package/dist/utils/orderCalculations.d.cts.map +1 -1
- package/dist/utils/orderCalculations.d.mts +1 -1
- package/dist/utils/orderCalculations.d.mts.map +1 -1
- package/dist/utils/orderCalculations.mjs.map +1 -1
- package/dist/utils/perpsDiskPersistence.cjs +16 -16
- package/dist/utils/perpsDiskPersistence.cjs.map +1 -1
- package/dist/utils/perpsDiskPersistence.d.cts.map +1 -1
- package/dist/utils/perpsDiskPersistence.d.mts.map +1 -1
- package/dist/utils/perpsDiskPersistence.mjs.map +1 -1
- package/dist/utils/perpsFormatters.cjs +9 -9
- package/dist/utils/perpsFormatters.cjs.map +1 -1
- package/dist/utils/perpsFormatters.mjs.map +1 -1
- package/dist/utils/rewardsUtils.cjs +3 -3
- package/dist/utils/rewardsUtils.cjs.map +1 -1
- package/dist/utils/rewardsUtils.d.cts.map +1 -1
- package/dist/utils/rewardsUtils.d.mts.map +1 -1
- package/dist/utils/rewardsUtils.mjs.map +1 -1
- package/dist/utils/significantFigures.cjs +3 -3
- package/dist/utils/significantFigures.cjs.map +1 -1
- package/dist/utils/significantFigures.mjs.map +1 -1
- package/dist/utils/sortMarkets.cjs +8 -8
- package/dist/utils/sortMarkets.cjs.map +1 -1
- package/dist/utils/sortMarkets.d.cts.map +1 -1
- package/dist/utils/sortMarkets.d.mts.map +1 -1
- package/dist/utils/sortMarkets.mjs.map +1 -1
- package/dist/utils/standaloneInfoClient.cjs +2 -2
- package/dist/utils/standaloneInfoClient.cjs.map +1 -1
- package/dist/utils/standaloneInfoClient.d.cts.map +1 -1
- package/dist/utils/standaloneInfoClient.d.mts.map +1 -1
- package/dist/utils/standaloneInfoClient.mjs.map +1 -1
- package/package.json +3 -3
package/dist/PerpsController.cjs
CHANGED
|
@@ -16,31 +16,31 @@ exports.PerpsController = exports.getDefaultPerpsControllerState = exports.DEFAU
|
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
17
17
|
const controller_utils_1 = require("@metamask/controller-utils");
|
|
18
18
|
const uuid_1 = require("uuid");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
19
|
+
const chartConfig_js_1 = require("./constants/chartConfig.cjs");
|
|
20
|
+
const eventNames_js_1 = require("./constants/eventNames.cjs");
|
|
21
|
+
const hyperLiquidConfig_js_1 = require("./constants/hyperLiquidConfig.cjs");
|
|
22
|
+
const performanceMetrics_js_1 = require("./constants/performanceMetrics.cjs");
|
|
23
|
+
const perpsConfig_js_1 = require("./constants/perpsConfig.cjs");
|
|
24
|
+
const perpsErrorCodes_js_1 = require("./perpsErrorCodes.cjs");
|
|
25
|
+
const AggregatedPerpsProvider_js_1 = require("./providers/AggregatedPerpsProvider.cjs");
|
|
26
|
+
const HyperLiquidProvider_js_1 = require("./providers/HyperLiquidProvider.cjs");
|
|
27
|
+
const AccountService_js_1 = require("./services/AccountService.cjs");
|
|
28
|
+
const DataLakeService_js_1 = require("./services/DataLakeService.cjs");
|
|
29
|
+
const DepositService_js_1 = require("./services/DepositService.cjs");
|
|
30
|
+
const EligibilityService_js_1 = require("./services/EligibilityService.cjs");
|
|
31
|
+
const FeatureFlagConfigurationService_js_1 = require("./services/FeatureFlagConfigurationService.cjs");
|
|
32
|
+
const MarketDataService_js_1 = require("./services/MarketDataService.cjs");
|
|
33
|
+
const RewardsIntegrationService_js_1 = require("./services/RewardsIntegrationService.cjs");
|
|
34
|
+
const TerminalMarketService_js_1 = require("./services/TerminalMarketService.cjs");
|
|
35
|
+
const TradingService_js_1 = require("./services/TradingService.cjs");
|
|
36
36
|
// PerpsStreamChannelKey removed: using string for channel keys (PerpsStreamManager.pauseChannel takes string)
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const
|
|
37
|
+
const index_js_1 = require("./types/index.cjs");
|
|
38
|
+
const accountUtils_js_1 = require("./utils/accountUtils.cjs");
|
|
39
|
+
const errorUtils_js_1 = require("./utils/errorUtils.cjs");
|
|
40
|
+
const hyperLiquidAdapter_js_1 = require("./utils/hyperLiquidAdapter.cjs");
|
|
41
|
+
const marketUtils_js_1 = require("./utils/marketUtils.cjs");
|
|
42
|
+
const perpsDiskPersistence_js_1 = require("./utils/perpsDiskPersistence.cjs");
|
|
43
|
+
const wait_js_1 = require("./utils/wait.cjs");
|
|
44
44
|
/**
|
|
45
45
|
* Returns the first non-empty string from the given values.
|
|
46
46
|
* Env vars default to '' (not null/undefined), so ?? wouldn't fall through.
|
|
@@ -95,8 +95,8 @@ function resolveMyxAuthConfig(myx, isTestnet) {
|
|
|
95
95
|
}
|
|
96
96
|
exports.resolveMyxAuthConfig = resolveMyxAuthConfig;
|
|
97
97
|
// Re-export error codes from separate file to avoid circular dependencies
|
|
98
|
-
var
|
|
99
|
-
Object.defineProperty(exports, "PERPS_ERROR_CODES", { enumerable: true, get: function () { return
|
|
98
|
+
var perpsErrorCodes_js_2 = require("./perpsErrorCodes.cjs");
|
|
99
|
+
Object.defineProperty(exports, "PERPS_ERROR_CODES", { enumerable: true, get: function () { return perpsErrorCodes_js_2.PERPS_ERROR_CODES; } });
|
|
100
100
|
/**
|
|
101
101
|
* Initialization state enum for state machine tracking
|
|
102
102
|
*/
|
|
@@ -109,10 +109,10 @@ var InitializationState;
|
|
|
109
109
|
})(InitializationState || (exports.InitializationState = InitializationState = {}));
|
|
110
110
|
// Re-exported so consumers can keep importing these from the controller entry
|
|
111
111
|
// point; the canonical definitions live in the dependency-free constants module.
|
|
112
|
-
var
|
|
113
|
-
Object.defineProperty(exports, "PerpsMode", { enumerable: true, get: function () { return
|
|
114
|
-
Object.defineProperty(exports, "DEFAULT_PERPS_MODE", { enumerable: true, get: function () { return
|
|
115
|
-
Object.defineProperty(exports, "DEFAULT_PRO_LAYOUT_PREFERENCES", { enumerable: true, get: function () { return
|
|
112
|
+
var perpsConfig_js_2 = require("./constants/perpsConfig.cjs");
|
|
113
|
+
Object.defineProperty(exports, "PerpsMode", { enumerable: true, get: function () { return perpsConfig_js_2.PerpsMode; } });
|
|
114
|
+
Object.defineProperty(exports, "DEFAULT_PERPS_MODE", { enumerable: true, get: function () { return perpsConfig_js_2.DEFAULT_PERPS_MODE; } });
|
|
115
|
+
Object.defineProperty(exports, "DEFAULT_PRO_LAYOUT_PREFERENCES", { enumerable: true, get: function () { return perpsConfig_js_2.DEFAULT_PRO_LAYOUT_PREFERENCES; } });
|
|
116
116
|
/**
|
|
117
117
|
* Get default PerpsController state
|
|
118
118
|
*
|
|
@@ -169,11 +169,11 @@ const getDefaultPerpsControllerState = () => ({
|
|
|
169
169
|
mainnet: {},
|
|
170
170
|
},
|
|
171
171
|
marketFilterPreferences: {
|
|
172
|
-
optionId:
|
|
173
|
-
direction:
|
|
172
|
+
optionId: perpsConfig_js_1.MARKET_SORTING_CONFIG.DefaultSortOptionId,
|
|
173
|
+
direction: perpsConfig_js_1.MARKET_SORTING_CONFIG.DefaultDirection,
|
|
174
174
|
},
|
|
175
|
-
proLayoutPreferences: { ...
|
|
176
|
-
mode:
|
|
175
|
+
proLayoutPreferences: { ...perpsConfig_js_1.DEFAULT_PRO_LAYOUT_PREFERENCES },
|
|
176
|
+
mode: perpsConfig_js_1.DEFAULT_PERPS_MODE,
|
|
177
177
|
hip3ConfigVersion: 0,
|
|
178
178
|
selectedPaymentToken: null,
|
|
179
179
|
cachedMarketDataByProvider: {},
|
|
@@ -586,20 +586,20 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
586
586
|
}, "f");
|
|
587
587
|
// Instantiate services with platform dependencies
|
|
588
588
|
// Services that need cross-controller access receive the messenger
|
|
589
|
-
__classPrivateFieldSet(this, _PerpsController_tradingService, new
|
|
590
|
-
__classPrivateFieldSet(this, _PerpsController_marketDataService, new
|
|
589
|
+
__classPrivateFieldSet(this, _PerpsController_tradingService, new TradingService_js_1.TradingService(infrastructure), "f");
|
|
590
|
+
__classPrivateFieldSet(this, _PerpsController_marketDataService, new MarketDataService_js_1.MarketDataService({
|
|
591
591
|
...infrastructure,
|
|
592
592
|
terminalMarketService: infrastructure.terminalMarketService ??
|
|
593
593
|
(infrastructure.terminalApiUrl
|
|
594
|
-
? new
|
|
594
|
+
? new TerminalMarketService_js_1.TerminalMarketService(infrastructure)
|
|
595
595
|
: undefined),
|
|
596
596
|
}), "f");
|
|
597
|
-
__classPrivateFieldSet(this, _PerpsController_accountService, new
|
|
598
|
-
__classPrivateFieldSet(this, _PerpsController_eligibilityService, new
|
|
599
|
-
__classPrivateFieldSet(this, _PerpsController_dataLakeService, new
|
|
600
|
-
__classPrivateFieldSet(this, _PerpsController_depositService, new
|
|
601
|
-
__classPrivateFieldSet(this, _PerpsController_featureFlagConfigurationService, new
|
|
602
|
-
__classPrivateFieldSet(this, _PerpsController_rewardsIntegrationService, new
|
|
597
|
+
__classPrivateFieldSet(this, _PerpsController_accountService, new AccountService_js_1.AccountService(infrastructure, messenger), "f");
|
|
598
|
+
__classPrivateFieldSet(this, _PerpsController_eligibilityService, new EligibilityService_js_1.EligibilityService(infrastructure), "f");
|
|
599
|
+
__classPrivateFieldSet(this, _PerpsController_dataLakeService, new DataLakeService_js_1.DataLakeService(infrastructure, messenger), "f");
|
|
600
|
+
__classPrivateFieldSet(this, _PerpsController_depositService, new DepositService_js_1.DepositService(infrastructure, messenger), "f");
|
|
601
|
+
__classPrivateFieldSet(this, _PerpsController_featureFlagConfigurationService, new FeatureFlagConfigurationService_js_1.FeatureFlagConfigurationService(infrastructure), "f");
|
|
602
|
+
__classPrivateFieldSet(this, _PerpsController_rewardsIntegrationService, new RewardsIntegrationService_js_1.RewardsIntegrationService(infrastructure, messenger), "f");
|
|
603
603
|
// Set HIP-3 fallback configuration from client (will be updated if remote flags available)
|
|
604
604
|
__classPrivateFieldSet(this, _PerpsController_hip3Enabled, clientConfig.fallbackHip3Enabled ?? false, "f");
|
|
605
605
|
__classPrivateFieldSet(this, _PerpsController_hip3AllowlistMarkets, [
|
|
@@ -626,7 +626,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
626
626
|
// If we can't read the remote feature flags at construction time, we'll rely on:
|
|
627
627
|
// 1. The fallback blocked regions already set above
|
|
628
628
|
// 2. The subscription to catch updates when RemoteFeatureFlagController is ready
|
|
629
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
629
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.constructor'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'constructor', {
|
|
630
630
|
operation: 'readRemoteFeatureFlags',
|
|
631
631
|
}));
|
|
632
632
|
}
|
|
@@ -659,7 +659,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
659
659
|
const assembled = [];
|
|
660
660
|
let oldestTimestamp = Infinity;
|
|
661
661
|
for (const providerId of __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getAggregatedCacheProviderIds).call(this, Object.keys(cache))) {
|
|
662
|
-
const key = (0,
|
|
662
|
+
const key = (0, perpsConfig_js_1.buildProviderCacheKey)(providerId, this.state.isTestnet);
|
|
663
663
|
const entry = cache[key];
|
|
664
664
|
if (!entry || entry.data.length === 0) {
|
|
665
665
|
continue;
|
|
@@ -678,7 +678,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
678
678
|
return assembled;
|
|
679
679
|
}
|
|
680
680
|
// Single provider mode
|
|
681
|
-
const key = (0,
|
|
681
|
+
const key = (0, perpsConfig_js_1.buildProviderCacheKey)(activeProvider, this.state.isTestnet);
|
|
682
682
|
const entry = cache[key];
|
|
683
683
|
if (!entry || entry.data.length === 0) {
|
|
684
684
|
return null;
|
|
@@ -707,7 +707,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
707
707
|
// Get current user address for validation
|
|
708
708
|
let currentAddress = null;
|
|
709
709
|
try {
|
|
710
|
-
const evmAccount = (0,
|
|
710
|
+
const evmAccount = (0, accountUtils_js_1.getSelectedEvmAccountFromMessenger)(this.messenger);
|
|
711
711
|
currentAddress = evmAccount?.address ?? null;
|
|
712
712
|
}
|
|
713
713
|
catch {
|
|
@@ -734,7 +734,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
734
734
|
let defaultAccountState = null;
|
|
735
735
|
let hasValidEntry = false;
|
|
736
736
|
for (const providerId of __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getAggregatedCacheProviderIds).call(this, Object.keys(cache))) {
|
|
737
|
-
const key = (0,
|
|
737
|
+
const key = (0, perpsConfig_js_1.buildProviderCacheKey)(providerId, this.state.isTestnet);
|
|
738
738
|
const entry = cache[key];
|
|
739
739
|
if (!isValidEntry(entry)) {
|
|
740
740
|
continue;
|
|
@@ -757,7 +757,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
757
757
|
};
|
|
758
758
|
}
|
|
759
759
|
// Single provider mode
|
|
760
|
-
const key = (0,
|
|
760
|
+
const key = (0, perpsConfig_js_1.buildProviderCacheKey)(activeProvider, this.state.isTestnet);
|
|
761
761
|
const entry = cache[key];
|
|
762
762
|
if (!entry || !isValidEntry(entry)) {
|
|
763
763
|
return null;
|
|
@@ -868,7 +868,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
868
868
|
* @param MYXProvider - Constructor class for the MYX provider.
|
|
869
869
|
*/
|
|
870
870
|
registerMYXProvider(MYXProvider) {
|
|
871
|
-
const myxIsTestnet =
|
|
871
|
+
const myxIsTestnet = perpsConfig_js_1.PROVIDER_CONFIG.MYX_TESTNET_ONLY || this.state.isTestnet;
|
|
872
872
|
const myx = __classPrivateFieldGet(this, _PerpsController_options, "f").clientConfig?.providerCredentials?.myx ?? {};
|
|
873
873
|
const myxAuthConfig = resolveMyxAuthConfig(myx, myxIsTestnet);
|
|
874
874
|
const myxProvider = new MYXProvider({
|
|
@@ -911,17 +911,17 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
911
911
|
// Check if we're in the middle of reinitializing
|
|
912
912
|
if (this.isCurrentlyReinitializing()) {
|
|
913
913
|
this.update((state) => {
|
|
914
|
-
state.lastError =
|
|
914
|
+
state.lastError = perpsErrorCodes_js_1.PERPS_ERROR_CODES.CLIENT_REINITIALIZING;
|
|
915
915
|
state.lastUpdateTimestamp = Date.now();
|
|
916
916
|
});
|
|
917
|
-
throw new Error(
|
|
917
|
+
throw new Error(perpsErrorCodes_js_1.PERPS_ERROR_CODES.CLIENT_REINITIALIZING);
|
|
918
918
|
}
|
|
919
919
|
// Check if not initialized
|
|
920
920
|
if (this.state.initializationState !== InitializationState.Initialized ||
|
|
921
921
|
!this.isInitialized) {
|
|
922
922
|
const errorMessage = this.state.initializationState === InitializationState.Failed
|
|
923
|
-
? `${
|
|
924
|
-
:
|
|
923
|
+
? `${perpsErrorCodes_js_1.PERPS_ERROR_CODES.CLIENT_NOT_INITIALIZED}: ${this.state.initializationError ?? 'Initialization failed'}`
|
|
924
|
+
: perpsErrorCodes_js_1.PERPS_ERROR_CODES.CLIENT_NOT_INITIALIZED;
|
|
925
925
|
this.update((state) => {
|
|
926
926
|
state.lastError = errorMessage;
|
|
927
927
|
state.lastUpdateTimestamp = Date.now();
|
|
@@ -931,10 +931,10 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
931
931
|
// Return the active provider instance (set during initialization based on providerMode)
|
|
932
932
|
if (!this.activeProviderInstance) {
|
|
933
933
|
this.update((state) => {
|
|
934
|
-
state.lastError =
|
|
934
|
+
state.lastError = perpsErrorCodes_js_1.PERPS_ERROR_CODES.PROVIDER_NOT_AVAILABLE;
|
|
935
935
|
state.lastUpdateTimestamp = Date.now();
|
|
936
936
|
});
|
|
937
|
-
throw new Error(
|
|
937
|
+
throw new Error(perpsErrorCodes_js_1.PERPS_ERROR_CODES.PROVIDER_NOT_AVAILABLE);
|
|
938
938
|
}
|
|
939
939
|
return this.activeProviderInstance;
|
|
940
940
|
}
|
|
@@ -1129,7 +1129,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1129
1129
|
const { transaction, assetChainId, currentDepositId: depositId, } = await __classPrivateFieldGet(this, _PerpsController_depositService, "f").prepareTransaction({ provider });
|
|
1130
1130
|
currentDepositId = depositId;
|
|
1131
1131
|
// Get current account address via messenger (outside of update() for proper typing)
|
|
1132
|
-
const evmAccount = (0,
|
|
1132
|
+
const evmAccount = (0, accountUtils_js_1.getSelectedEvmAccountFromMessenger)(this.messenger);
|
|
1133
1133
|
const accountAddress = evmAccount?.address ?? 'unknown';
|
|
1134
1134
|
this.update((state) => {
|
|
1135
1135
|
state.lastDepositResult = null;
|
|
@@ -1138,7 +1138,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1138
1138
|
id: currentDepositId ?? (0, uuid_1.v4)(),
|
|
1139
1139
|
timestamp: Date.now(),
|
|
1140
1140
|
amount: amount ?? '0', // Use provided amount or default to '0'
|
|
1141
|
-
asset:
|
|
1141
|
+
asset: hyperLiquidConfig_js_1.USDC_SYMBOL,
|
|
1142
1142
|
accountAddress, // Track which account initiated deposit
|
|
1143
1143
|
success: false, // Will be updated when transaction completes
|
|
1144
1144
|
txHash: undefined,
|
|
@@ -1214,7 +1214,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1214
1214
|
success: true,
|
|
1215
1215
|
txHash: actualTxHash,
|
|
1216
1216
|
amount: amount ?? '0',
|
|
1217
|
-
asset:
|
|
1217
|
+
asset: hyperLiquidConfig_js_1.USDC_SYMBOL, // Default asset for deposits
|
|
1218
1218
|
timestamp: Date.now(),
|
|
1219
1219
|
error: '',
|
|
1220
1220
|
};
|
|
@@ -1241,7 +1241,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1241
1241
|
})
|
|
1242
1242
|
.catch((error) => {
|
|
1243
1243
|
// Check if user denied/cancelled the transaction
|
|
1244
|
-
const errorMessage = (0,
|
|
1244
|
+
const errorMessage = (0, errorUtils_js_1.ensureError)(error, 'PerpsController.initiateDeposit').message;
|
|
1245
1245
|
const userCancelled = errorMessage.includes('User denied') ||
|
|
1246
1246
|
errorMessage.includes('User rejected') ||
|
|
1247
1247
|
errorMessage.includes('User cancelled') ||
|
|
@@ -1269,7 +1269,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1269
1269
|
success: false,
|
|
1270
1270
|
error: errorMessage,
|
|
1271
1271
|
amount: amount ?? '0',
|
|
1272
|
-
asset:
|
|
1272
|
+
asset: hyperLiquidConfig_js_1.USDC_SYMBOL, // Default asset for deposits
|
|
1273
1273
|
timestamp: Date.now(),
|
|
1274
1274
|
txHash: '',
|
|
1275
1275
|
};
|
|
@@ -1300,7 +1300,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1300
1300
|
return undefined;
|
|
1301
1301
|
})
|
|
1302
1302
|
.catch((error) => {
|
|
1303
|
-
const errorMessage = (0,
|
|
1303
|
+
const errorMessage = (0, errorUtils_js_1.ensureError)(error, 'PerpsController.depositWithOrder').message;
|
|
1304
1304
|
const isCancellation = errorMessage.includes('User denied') ||
|
|
1305
1305
|
errorMessage.includes('User rejected') ||
|
|
1306
1306
|
errorMessage.includes('User cancelled') ||
|
|
@@ -1320,7 +1320,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1320
1320
|
}
|
|
1321
1321
|
catch (error) {
|
|
1322
1322
|
// Check if user denied/cancelled the transaction
|
|
1323
|
-
const errorMessage = (0,
|
|
1323
|
+
const errorMessage = (0, errorUtils_js_1.ensureError)(error, 'PerpsController.initiateDeposit').message;
|
|
1324
1324
|
const userCancelled = errorMessage.includes('User denied') ||
|
|
1325
1325
|
errorMessage.includes('User rejected') ||
|
|
1326
1326
|
errorMessage.includes('User cancelled') ||
|
|
@@ -1410,11 +1410,11 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1410
1410
|
}
|
|
1411
1411
|
});
|
|
1412
1412
|
if (shouldTrack && withdrawalAmount !== undefined) {
|
|
1413
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(
|
|
1414
|
-
[
|
|
1415
|
-
?
|
|
1416
|
-
:
|
|
1417
|
-
[
|
|
1413
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(index_js_1.PerpsAnalyticsEvent.WithdrawalTransaction, {
|
|
1414
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.STATUS]: status === 'completed'
|
|
1415
|
+
? eventNames_js_1.PERPS_EVENT_VALUE.STATUS.COMPLETED
|
|
1416
|
+
: eventNames_js_1.PERPS_EVENT_VALUE.STATUS.FAILED,
|
|
1417
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.WITHDRAWAL_AMOUNT]: Number.parseFloat(withdrawalAmount),
|
|
1418
1418
|
});
|
|
1419
1419
|
}
|
|
1420
1420
|
if (found) {
|
|
@@ -1473,9 +1473,9 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1473
1473
|
txHash: completedWithdrawal.txHash,
|
|
1474
1474
|
amount: completedWithdrawal.amount,
|
|
1475
1475
|
});
|
|
1476
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(
|
|
1477
|
-
[
|
|
1478
|
-
[
|
|
1476
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(index_js_1.PerpsAnalyticsEvent.WithdrawalTransaction, {
|
|
1477
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.STATUS]: eventNames_js_1.PERPS_EVENT_VALUE.STATUS.COMPLETED,
|
|
1478
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.WITHDRAWAL_AMOUNT]: Number.parseFloat(completedWithdrawal.amount),
|
|
1479
1479
|
});
|
|
1480
1480
|
}
|
|
1481
1481
|
/**
|
|
@@ -1792,7 +1792,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1792
1792
|
}, "f");
|
|
1793
1793
|
// Watch for selected account changes and selected account group changes.
|
|
1794
1794
|
const accountChangeHandler = () => {
|
|
1795
|
-
const evmAccount = (0,
|
|
1795
|
+
const evmAccount = (0, accountUtils_js_1.getSelectedEvmAccountFromMessenger)(this.messenger);
|
|
1796
1796
|
const currentAddress = evmAccount?.address ?? null;
|
|
1797
1797
|
// If any cached entry belongs to a different account, clear all entries.
|
|
1798
1798
|
// Max 4 entries (2 providers × 2 networks) — clearing all is simple and safe.
|
|
@@ -1804,7 +1804,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1804
1804
|
});
|
|
1805
1805
|
// Invalidate disk-cached user data for the old account
|
|
1806
1806
|
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.diskCache
|
|
1807
|
-
.removeItem(
|
|
1807
|
+
.removeItem(perpsConfig_js_1.PERPS_DISK_CACHE_USER_DATA)
|
|
1808
1808
|
.catch(() => {
|
|
1809
1809
|
/* fire-and-forget */
|
|
1810
1810
|
});
|
|
@@ -1974,7 +1974,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1974
1974
|
return __classPrivateFieldGet(this, _PerpsController_marketDataService, "f").getWithdrawalRoutes({ provider });
|
|
1975
1975
|
}
|
|
1976
1976
|
catch (error) {
|
|
1977
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
1977
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.getWithdrawalRoutes'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'getWithdrawalRoutes'));
|
|
1978
1978
|
// Return empty array if provider is not available
|
|
1979
1979
|
return [];
|
|
1980
1980
|
}
|
|
@@ -2015,19 +2015,19 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2015
2015
|
const utm = {};
|
|
2016
2016
|
const context = __classPrivateFieldGet(this, _PerpsController_attributionContext, "f");
|
|
2017
2017
|
if (context.utmSource !== undefined) {
|
|
2018
|
-
utm[
|
|
2018
|
+
utm[eventNames_js_1.PERPS_EVENT_PROPERTY.UTM_SOURCE] = context.utmSource;
|
|
2019
2019
|
}
|
|
2020
2020
|
if (context.utmMedium !== undefined) {
|
|
2021
|
-
utm[
|
|
2021
|
+
utm[eventNames_js_1.PERPS_EVENT_PROPERTY.UTM_MEDIUM] = context.utmMedium;
|
|
2022
2022
|
}
|
|
2023
2023
|
if (context.utmCampaign !== undefined) {
|
|
2024
|
-
utm[
|
|
2024
|
+
utm[eventNames_js_1.PERPS_EVENT_PROPERTY.UTM_CAMPAIGN] = context.utmCampaign;
|
|
2025
2025
|
}
|
|
2026
2026
|
if (context.utmContent !== undefined) {
|
|
2027
|
-
utm[
|
|
2027
|
+
utm[eventNames_js_1.PERPS_EVENT_PROPERTY.UTM_CONTENT] = context.utmContent;
|
|
2028
2028
|
}
|
|
2029
2029
|
if (context.utmTerm !== undefined) {
|
|
2030
|
-
utm[
|
|
2030
|
+
utm[eventNames_js_1.PERPS_EVENT_PROPERTY.UTM_TERM] = context.utmTerm;
|
|
2031
2031
|
}
|
|
2032
2032
|
// Provided properties win over attribution context.
|
|
2033
2033
|
return { ...utm, ...properties };
|
|
@@ -2046,7 +2046,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2046
2046
|
return {
|
|
2047
2047
|
success: false,
|
|
2048
2048
|
isTestnet: this.state.isTestnet,
|
|
2049
|
-
error:
|
|
2049
|
+
error: perpsErrorCodes_js_1.PERPS_ERROR_CODES.CLIENT_REINITIALIZING,
|
|
2050
2050
|
};
|
|
2051
2051
|
}
|
|
2052
2052
|
__classPrivateFieldSet(this, _PerpsController_isReinitializing, true, "f");
|
|
@@ -2089,7 +2089,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2089
2089
|
return {
|
|
2090
2090
|
success: false,
|
|
2091
2091
|
isTestnet: this.state.isTestnet,
|
|
2092
|
-
error: (0,
|
|
2092
|
+
error: (0, errorUtils_js_1.ensureError)(error, 'PerpsController.toggleTestnet').message,
|
|
2093
2093
|
};
|
|
2094
2094
|
}
|
|
2095
2095
|
finally {
|
|
@@ -2133,7 +2133,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2133
2133
|
return {
|
|
2134
2134
|
success: false,
|
|
2135
2135
|
providerId: this.state.activeProvider,
|
|
2136
|
-
error:
|
|
2136
|
+
error: perpsErrorCodes_js_1.PERPS_ERROR_CODES.CLIENT_REINITIALIZING,
|
|
2137
2137
|
};
|
|
2138
2138
|
}
|
|
2139
2139
|
__classPrivateFieldSet(this, _PerpsController_isReinitializing, true, "f");
|
|
@@ -2175,7 +2175,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2175
2175
|
this.update((state) => {
|
|
2176
2176
|
state.activeProvider = previousProvider;
|
|
2177
2177
|
});
|
|
2178
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2178
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.switchProvider'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'switchProvider', { providerId }));
|
|
2179
2179
|
// Attempt to reinitialize the previous provider via init(),
|
|
2180
2180
|
// which handles all provider modes including 'aggregated'.
|
|
2181
2181
|
try {
|
|
@@ -2192,7 +2192,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2192
2192
|
this.update((state) => {
|
|
2193
2193
|
state.initializationState = InitializationState.Failed;
|
|
2194
2194
|
});
|
|
2195
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2195
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(reinitError, 'PerpsController.switchProvider.rollback'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'switchProvider.rollback', {
|
|
2196
2196
|
previousProvider,
|
|
2197
2197
|
}));
|
|
2198
2198
|
}
|
|
@@ -2201,7 +2201,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2201
2201
|
providerId: previousProvider,
|
|
2202
2202
|
error: error instanceof Error
|
|
2203
2203
|
? error.message
|
|
2204
|
-
:
|
|
2204
|
+
: perpsErrorCodes_js_1.PERPS_ERROR_CODES.UNKNOWN_ERROR,
|
|
2205
2205
|
};
|
|
2206
2206
|
}
|
|
2207
2207
|
finally {
|
|
@@ -2230,7 +2230,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2230
2230
|
* @returns Ordered array of {@link MarketTypeFilter} values. Does not include the 'all' or 'new' sentinels — those are separate UI controls.
|
|
2231
2231
|
*/
|
|
2232
2232
|
getMarketCategories() {
|
|
2233
|
-
return
|
|
2233
|
+
return index_js_1.MARKET_CATEGORIES;
|
|
2234
2234
|
}
|
|
2235
2235
|
/**
|
|
2236
2236
|
* Get the current WebSocket connection state from the active provider.
|
|
@@ -2245,11 +2245,11 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2245
2245
|
return provider.getWebSocketConnectionState();
|
|
2246
2246
|
}
|
|
2247
2247
|
// Fallback for providers that don't support this method
|
|
2248
|
-
return
|
|
2248
|
+
return index_js_1.WebSocketConnectionState.Disconnected;
|
|
2249
2249
|
}
|
|
2250
2250
|
catch {
|
|
2251
2251
|
// If no provider is active, return disconnected
|
|
2252
|
-
return
|
|
2252
|
+
return index_js_1.WebSocketConnectionState.Disconnected;
|
|
2253
2253
|
}
|
|
2254
2254
|
}
|
|
2255
2255
|
/**
|
|
@@ -2273,7 +2273,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2273
2273
|
}
|
|
2274
2274
|
catch {
|
|
2275
2275
|
// If no provider is active, call with disconnected and return no-op
|
|
2276
|
-
listener(
|
|
2276
|
+
listener(index_js_1.WebSocketConnectionState.Disconnected, 0);
|
|
2277
2277
|
return () => {
|
|
2278
2278
|
// No-op
|
|
2279
2279
|
};
|
|
@@ -2297,7 +2297,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2297
2297
|
}
|
|
2298
2298
|
}
|
|
2299
2299
|
catch (error) {
|
|
2300
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2300
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.reconnect'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'reconnect', {
|
|
2301
2301
|
operation: 'websocket_reconnect',
|
|
2302
2302
|
}));
|
|
2303
2303
|
}
|
|
@@ -2320,7 +2320,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2320
2320
|
return provider.subscribeToPrices(params);
|
|
2321
2321
|
}
|
|
2322
2322
|
catch (error) {
|
|
2323
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2323
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToPrices'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToPrices', {
|
|
2324
2324
|
symbols: params.symbols?.join(','),
|
|
2325
2325
|
}));
|
|
2326
2326
|
return () => {
|
|
@@ -2345,7 +2345,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2345
2345
|
return provider.subscribeToPositions(params);
|
|
2346
2346
|
}
|
|
2347
2347
|
catch (error) {
|
|
2348
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2348
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToPositions'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToPositions', {
|
|
2349
2349
|
accountId: params.accountId,
|
|
2350
2350
|
}));
|
|
2351
2351
|
return () => {
|
|
@@ -2370,7 +2370,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2370
2370
|
return provider.subscribeToOrderFills(params);
|
|
2371
2371
|
}
|
|
2372
2372
|
catch (error) {
|
|
2373
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2373
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToOrderFills'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToOrderFills', {
|
|
2374
2374
|
accountId: params.accountId,
|
|
2375
2375
|
}));
|
|
2376
2376
|
return () => {
|
|
@@ -2395,7 +2395,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2395
2395
|
return provider.subscribeToOrders(params);
|
|
2396
2396
|
}
|
|
2397
2397
|
catch (error) {
|
|
2398
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2398
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToOrders'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToOrders', {
|
|
2399
2399
|
accountId: params.accountId,
|
|
2400
2400
|
}));
|
|
2401
2401
|
return () => {
|
|
@@ -2435,7 +2435,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2435
2435
|
});
|
|
2436
2436
|
}
|
|
2437
2437
|
catch (error) {
|
|
2438
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2438
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToAccount'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToAccount', {
|
|
2439
2439
|
accountId: params.accountId,
|
|
2440
2440
|
}));
|
|
2441
2441
|
return () => {
|
|
@@ -2461,7 +2461,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2461
2461
|
return provider.subscribeToOrderBook(params);
|
|
2462
2462
|
}
|
|
2463
2463
|
catch (error) {
|
|
2464
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2464
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToOrderBook'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToOrderBook', {
|
|
2465
2465
|
symbol: params.symbol,
|
|
2466
2466
|
levels: params.levels,
|
|
2467
2467
|
}));
|
|
@@ -2487,7 +2487,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2487
2487
|
return provider.subscribeToCandles(params);
|
|
2488
2488
|
}
|
|
2489
2489
|
catch (error) {
|
|
2490
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2490
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToCandles'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToCandles', {
|
|
2491
2491
|
symbol: params.symbol,
|
|
2492
2492
|
interval: params.interval,
|
|
2493
2493
|
duration: params.duration,
|
|
@@ -2515,7 +2515,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2515
2515
|
return provider.subscribeToOICaps(params);
|
|
2516
2516
|
}
|
|
2517
2517
|
catch (error) {
|
|
2518
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2518
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.subscribeToOICaps'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'subscribeToOICaps', {
|
|
2519
2519
|
accountId: params.accountId,
|
|
2520
2520
|
}));
|
|
2521
2521
|
return () => {
|
|
@@ -2534,7 +2534,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2534
2534
|
provider.setLiveDataConfig(config);
|
|
2535
2535
|
}
|
|
2536
2536
|
catch (error) {
|
|
2537
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2537
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.setLiveDataConfig'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'setLiveDataConfig'));
|
|
2538
2538
|
}
|
|
2539
2539
|
}
|
|
2540
2540
|
/**
|
|
@@ -2580,7 +2580,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2580
2580
|
await provider.disconnect();
|
|
2581
2581
|
}
|
|
2582
2582
|
catch (error) {
|
|
2583
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2583
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.disconnect'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'disconnect'));
|
|
2584
2584
|
}
|
|
2585
2585
|
}
|
|
2586
2586
|
// Clear stale reference so standalone reads don't route through old provider
|
|
@@ -2619,7 +2619,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2619
2619
|
this.refreshEligibilityOnFeatureFlagChange(currentState);
|
|
2620
2620
|
}
|
|
2621
2621
|
catch (error) {
|
|
2622
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2622
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.startEligibilityMonitoring'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'startEligibilityMonitoring', {
|
|
2623
2623
|
operation: 'readRemoteFeatureFlags',
|
|
2624
2624
|
}));
|
|
2625
2625
|
}
|
|
@@ -2659,7 +2659,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2659
2659
|
});
|
|
2660
2660
|
}
|
|
2661
2661
|
catch (error) {
|
|
2662
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
2662
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.refreshEligibility'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'refreshEligibility'));
|
|
2663
2663
|
// Only update on error if version is still current
|
|
2664
2664
|
if (__classPrivateFieldGet(this, _PerpsController_blockedRegionListVersion, "f") === versionAtStart) {
|
|
2665
2665
|
// Default to eligible on error
|
|
@@ -2927,13 +2927,13 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2927
2927
|
// Handle other simple legacy strings (e.g., 'volume', 'openInterest', etc.)
|
|
2928
2928
|
return {
|
|
2929
2929
|
optionId: pref,
|
|
2930
|
-
direction:
|
|
2930
|
+
direction: perpsConfig_js_1.MARKET_SORTING_CONFIG.DefaultDirection,
|
|
2931
2931
|
};
|
|
2932
2932
|
}
|
|
2933
2933
|
// Return new object format or default
|
|
2934
2934
|
return (pref ?? {
|
|
2935
|
-
optionId:
|
|
2936
|
-
direction:
|
|
2935
|
+
optionId: perpsConfig_js_1.MARKET_SORTING_CONFIG.DefaultSortOptionId,
|
|
2936
|
+
direction: perpsConfig_js_1.MARKET_SORTING_CONFIG.DefaultDirection,
|
|
2937
2937
|
});
|
|
2938
2938
|
}
|
|
2939
2939
|
/**
|
|
@@ -2972,9 +2972,9 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2972
2972
|
if (!Number.isFinite(bps)) {
|
|
2973
2973
|
return;
|
|
2974
2974
|
}
|
|
2975
|
-
const clamped = Math.min(
|
|
2976
|
-
const snapped = Math.round(clamped /
|
|
2977
|
-
|
|
2975
|
+
const clamped = Math.min(perpsConfig_js_1.MAX_SLIPPAGE_BOUNDS.MaxBps, Math.max(perpsConfig_js_1.MAX_SLIPPAGE_BOUNDS.MinBps, bps));
|
|
2976
|
+
const snapped = Math.round(clamped / perpsConfig_js_1.MAX_SLIPPAGE_BOUNDS.StepBps) *
|
|
2977
|
+
perpsConfig_js_1.MAX_SLIPPAGE_BOUNDS.StepBps;
|
|
2978
2978
|
this.update((state) => {
|
|
2979
2979
|
state.maxSlippageBps = snapped;
|
|
2980
2980
|
});
|
|
@@ -2988,7 +2988,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2988
2988
|
// Merge over defaults so callers always receive a fully-populated object,
|
|
2989
2989
|
// even if the persisted state predates one of the fields.
|
|
2990
2990
|
return {
|
|
2991
|
-
...
|
|
2991
|
+
...perpsConfig_js_1.DEFAULT_PRO_LAYOUT_PREFERENCES,
|
|
2992
2992
|
...this.state.proLayoutPreferences,
|
|
2993
2993
|
};
|
|
2994
2994
|
}
|
|
@@ -3028,24 +3028,24 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
3028
3028
|
setSelectedPaymentToken(token) {
|
|
3029
3029
|
let normalized = null;
|
|
3030
3030
|
if (token !== null &&
|
|
3031
|
-
token.description !==
|
|
3031
|
+
token.description !== perpsConfig_js_1.PERPS_CONSTANTS.PerpsBalanceTokenDescription) {
|
|
3032
3032
|
normalized = token;
|
|
3033
3033
|
}
|
|
3034
3034
|
const current = this.state.selectedPaymentToken;
|
|
3035
3035
|
const initialPaymentMethod = current === null ||
|
|
3036
3036
|
current === undefined ||
|
|
3037
|
-
current?.description ===
|
|
3037
|
+
current?.description === perpsConfig_js_1.PERPS_CONSTANTS.PerpsBalanceTokenDescription
|
|
3038
3038
|
? 'perps_balance'
|
|
3039
3039
|
: (current?.symbol ?? 'unknown');
|
|
3040
3040
|
const newPaymentMethod = token === null ||
|
|
3041
|
-
token.description ===
|
|
3041
|
+
token.description === perpsConfig_js_1.PERPS_CONSTANTS.PerpsBalanceTokenDescription
|
|
3042
3042
|
? 'perps_balance'
|
|
3043
3043
|
: (token.symbol ?? 'unknown');
|
|
3044
3044
|
if (initialPaymentMethod !== newPaymentMethod) {
|
|
3045
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(
|
|
3046
|
-
[
|
|
3047
|
-
[
|
|
3048
|
-
[
|
|
3045
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(index_js_1.PerpsAnalyticsEvent.UiInteraction, {
|
|
3046
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.INTERACTION_TYPE]: eventNames_js_1.PERPS_EVENT_VALUE.INTERACTION_TYPE.PAYMENT_METHOD_CHANGED,
|
|
3047
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.INITIAL_PAYMENT_METHOD]: initialPaymentMethod,
|
|
3048
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.NEW_PAYMENT_METHOD]: newPaymentMethod,
|
|
3049
3049
|
});
|
|
3050
3050
|
}
|
|
3051
3051
|
let snapshot = null;
|
|
@@ -3149,13 +3149,13 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
3149
3149
|
state.watchlistMarkets[currentNetwork] = [...currentWatchlist, symbol];
|
|
3150
3150
|
}
|
|
3151
3151
|
});
|
|
3152
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(
|
|
3153
|
-
[
|
|
3154
|
-
[
|
|
3155
|
-
[
|
|
3156
|
-
?
|
|
3157
|
-
:
|
|
3158
|
-
[
|
|
3152
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getMetrics).call(this).trackPerpsEvent(index_js_1.PerpsAnalyticsEvent.UiInteraction, {
|
|
3153
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.INTERACTION_TYPE]: eventNames_js_1.PERPS_EVENT_VALUE.INTERACTION_TYPE.FAVORITE_TOGGLED,
|
|
3154
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.ASSET]: symbol,
|
|
3155
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.ACTION_TYPE]: isWatchlisted
|
|
3156
|
+
? eventNames_js_1.PERPS_EVENT_VALUE.ACTION_TYPE.UNFAVORITE_MARKET
|
|
3157
|
+
: eventNames_js_1.PERPS_EVENT_VALUE.ACTION_TYPE.FAVORITE_MARKET,
|
|
3158
|
+
[eventNames_js_1.PERPS_EVENT_PROPERTY.FAVORITES_COUNT]: this.state.watchlistMarkets[currentNetwork].length,
|
|
3159
3159
|
});
|
|
3160
3160
|
// Step 2: Persist to AUS; revert local state if the write fails.
|
|
3161
3161
|
// Enqueue behind #ausQueue so that:
|
|
@@ -3171,7 +3171,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
3171
3171
|
});
|
|
3172
3172
|
}
|
|
3173
3173
|
catch (error) {
|
|
3174
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
3174
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.toggleWatchlistMarket'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'toggleWatchlistMarket', {
|
|
3175
3175
|
symbol,
|
|
3176
3176
|
network: currentNetwork,
|
|
3177
3177
|
action: isWatchlisted ? 'remove' : 'add',
|
|
@@ -3218,7 +3218,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
3218
3218
|
state.recentlyViewedMarkets[currentNetwork] = [
|
|
3219
3219
|
{ symbol, viewedAt: now },
|
|
3220
3220
|
...current,
|
|
3221
|
-
].slice(0,
|
|
3221
|
+
].slice(0, perpsConfig_js_1.PERPS_CONSTANTS.RecentlyViewedMarketsLimit);
|
|
3222
3222
|
});
|
|
3223
3223
|
}
|
|
3224
3224
|
/**
|
|
@@ -3233,11 +3233,11 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
3233
3233
|
*/
|
|
3234
3234
|
getRecentlyViewedMarkets() {
|
|
3235
3235
|
const currentNetwork = this.state.isTestnet ? 'testnet' : 'mainnet';
|
|
3236
|
-
const cutoff = Date.now() -
|
|
3236
|
+
const cutoff = Date.now() - perpsConfig_js_1.PERPS_CONSTANTS.RecentlyViewedMarketsTtlMs;
|
|
3237
3237
|
return this.state.recentlyViewedMarkets[currentNetwork]
|
|
3238
3238
|
.filter((entry) => entry.viewedAt > cutoff)
|
|
3239
3239
|
.map((entry) => entry.symbol)
|
|
3240
|
-
.slice(0,
|
|
3240
|
+
.slice(0, perpsConfig_js_1.PERPS_CONSTANTS.RecentlyViewedMarketsLimit);
|
|
3241
3241
|
}
|
|
3242
3242
|
/**
|
|
3243
3243
|
* Report order events to data lake API with retry (non-blocking)
|
|
@@ -3294,7 +3294,7 @@ _a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _P
|
|
|
3294
3294
|
try {
|
|
3295
3295
|
const remoteState = this.messenger.call('RemoteFeatureFlagController:getState');
|
|
3296
3296
|
const remoteFlag = remoteState.remoteFeatureFlags?.perpsMyxProviderEnabled;
|
|
3297
|
-
if ((0,
|
|
3297
|
+
if ((0, index_js_1.isVersionGatedFeatureFlag)(remoteFlag)) {
|
|
3298
3298
|
const validated = __classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.featureFlags.validateVersionGated(remoteFlag);
|
|
3299
3299
|
return validated ?? false;
|
|
3300
3300
|
}
|
|
@@ -3342,7 +3342,7 @@ _a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _P
|
|
|
3342
3342
|
/* best-effort */
|
|
3343
3343
|
});
|
|
3344
3344
|
}
|
|
3345
|
-
__classPrivateFieldSet(this, _PerpsController_standaloneProvider, new
|
|
3345
|
+
__classPrivateFieldSet(this, _PerpsController_standaloneProvider, new HyperLiquidProvider_js_1.HyperLiquidProvider({
|
|
3346
3346
|
isTestnet: currentIsTestnet,
|
|
3347
3347
|
hip3Enabled: __classPrivateFieldGet(this, _PerpsController_hip3Enabled, "f"),
|
|
3348
3348
|
allowlistMarkets: __classPrivateFieldGet(this, _PerpsController_hip3AllowlistMarkets, "f"),
|
|
@@ -3450,7 +3450,7 @@ async function _PerpsController_withStreamPause(operation, channels) {
|
|
|
3450
3450
|
}
|
|
3451
3451
|
catch (error) {
|
|
3452
3452
|
// Log error to Sentry but continue pausing remaining channels
|
|
3453
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
3453
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.withStreamPause'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'withStreamPause', {
|
|
3454
3454
|
operation: 'pause',
|
|
3455
3455
|
channel: String(channel),
|
|
3456
3456
|
pausedChannels: pausedChannels.join(','),
|
|
@@ -3469,7 +3469,7 @@ async function _PerpsController_withStreamPause(operation, channels) {
|
|
|
3469
3469
|
}
|
|
3470
3470
|
catch (error) {
|
|
3471
3471
|
// Log error to Sentry but continue resuming remaining channels
|
|
3472
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
3472
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.withStreamPause'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'withStreamPause', {
|
|
3473
3473
|
operation: 'resume',
|
|
3474
3474
|
channel: String(channel),
|
|
3475
3475
|
pausedChannels: pausedChannels.join(','),
|
|
@@ -3516,7 +3516,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3516
3516
|
// map before we assign the active provider. Runs concurrently with
|
|
3517
3517
|
// the WebSocket readiness delay for zero additional latency.
|
|
3518
3518
|
await Promise.all([
|
|
3519
|
-
(0,
|
|
3519
|
+
(0, wait_js_1.wait)(perpsConfig_js_1.PERPS_CONSTANTS.ReconnectionCleanupDelayMs),
|
|
3520
3520
|
__classPrivateFieldGet(this, _PerpsController_myxRegistrationPromise, "f"),
|
|
3521
3521
|
]);
|
|
3522
3522
|
__classPrivateFieldSet(this, _PerpsController_myxRegistrationPromise, null, "f");
|
|
@@ -3542,7 +3542,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3542
3542
|
return; // Exit retry loop on success
|
|
3543
3543
|
}
|
|
3544
3544
|
catch (error) {
|
|
3545
|
-
lastError = (0,
|
|
3545
|
+
lastError = (0, errorUtils_js_1.ensureError)(error, 'PerpsController.performInitialization');
|
|
3546
3546
|
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, lastError, __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'performInitialization', {
|
|
3547
3547
|
attempt,
|
|
3548
3548
|
maxAttempts,
|
|
@@ -3555,7 +3555,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3555
3555
|
maxAttempts,
|
|
3556
3556
|
error: lastError.message,
|
|
3557
3557
|
});
|
|
3558
|
-
await (0,
|
|
3558
|
+
await (0, wait_js_1.wait)(delay);
|
|
3559
3559
|
}
|
|
3560
3560
|
}
|
|
3561
3561
|
}
|
|
@@ -3581,7 +3581,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3581
3581
|
activeProvider,
|
|
3582
3582
|
});
|
|
3583
3583
|
// Always create HyperLiquid provider as the base provider
|
|
3584
|
-
const hyperLiquidProvider = new
|
|
3584
|
+
const hyperLiquidProvider = new HyperLiquidProvider_js_1.HyperLiquidProvider({
|
|
3585
3585
|
isTestnet: this.state.isTestnet,
|
|
3586
3586
|
hip3Enabled: __classPrivateFieldGet(this, _PerpsController_hip3Enabled, "f"),
|
|
3587
3587
|
allowlistMarkets: __classPrivateFieldGet(this, _PerpsController_hip3AllowlistMarkets, "f"),
|
|
@@ -3625,7 +3625,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3625
3625
|
throw new Error('HyperLiquid provider not registered — cannot assign active provider');
|
|
3626
3626
|
}
|
|
3627
3627
|
if (activeProvider === 'aggregated') {
|
|
3628
|
-
this.activeProviderInstance = new
|
|
3628
|
+
this.activeProviderInstance = new AggregatedPerpsProvider_js_1.AggregatedPerpsProvider({
|
|
3629
3629
|
providers: this.providers,
|
|
3630
3630
|
defaultProvider: 'hyperliquid',
|
|
3631
3631
|
infrastructure: __classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure,
|
|
@@ -3656,7 +3656,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3656
3656
|
}, _PerpsController_getErrorContext = function _PerpsController_getErrorContext(method, extra) {
|
|
3657
3657
|
return {
|
|
3658
3658
|
tags: {
|
|
3659
|
-
feature:
|
|
3659
|
+
feature: perpsConfig_js_1.PERPS_CONSTANTS.FeatureName,
|
|
3660
3660
|
provider: this.state.activeProvider,
|
|
3661
3661
|
network: this.state.isTestnet ? 'testnet' : 'mainnet',
|
|
3662
3662
|
},
|
|
@@ -3675,14 +3675,14 @@ async function _PerpsController_performInitialization() {
|
|
|
3675
3675
|
const compiledAllowlist = __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_compilePatternsSafely).call(this, __classPrivateFieldGet(this, _PerpsController_hip3AllowlistMarkets, "f"));
|
|
3676
3676
|
const compiledBlocklist = __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_compilePatternsSafely).call(this, __classPrivateFieldGet(this, _PerpsController_hip3BlocklistMarkets, "f"));
|
|
3677
3677
|
return (symbol) => {
|
|
3678
|
-
const { dex } = (0,
|
|
3679
|
-
return (0,
|
|
3678
|
+
const { dex } = (0, hyperLiquidAdapter_js_1.parseAssetName)(symbol);
|
|
3679
|
+
return (0, marketUtils_js_1.shouldIncludeMarket)(symbol, dex, hip3Enabled, compiledAllowlist, compiledBlocklist);
|
|
3680
3680
|
};
|
|
3681
3681
|
}, _PerpsController_compilePatternsSafely = function _PerpsController_compilePatternsSafely(patterns) {
|
|
3682
3682
|
const compiled = [];
|
|
3683
3683
|
for (const pattern of patterns) {
|
|
3684
3684
|
try {
|
|
3685
|
-
compiled.push({ pattern, matcher: (0,
|
|
3685
|
+
compiled.push({ pattern, matcher: (0, marketUtils_js_1.compileMarketPattern)(pattern) });
|
|
3686
3686
|
}
|
|
3687
3687
|
catch {
|
|
3688
3688
|
// Invalid patterns silently skipped — logged at provider level.
|
|
@@ -3710,7 +3710,7 @@ async function _PerpsController_performInitialization() {
|
|
|
3710
3710
|
rewardsIntegrationService: __classPrivateFieldGet(this, _PerpsController_rewardsIntegrationService, "f"),
|
|
3711
3711
|
});
|
|
3712
3712
|
}, _PerpsController_hydrateCacheFromDiskSync = function _PerpsController_hydrateCacheFromDiskSync() {
|
|
3713
|
-
const { marketUpdates, userUpdates, stats } = (0,
|
|
3713
|
+
const { marketUpdates, userUpdates, stats } = (0, perpsDiskPersistence_js_1.hydrateFromDiskSync)(__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.diskCache, this.state.cachedMarketDataByProvider, this.state.cachedUserDataByProvider, __classPrivateFieldGet(_a, _a, "f", _PerpsController_preloadGuardMs));
|
|
3714
3714
|
const hasMarketUpdates = Object.keys(marketUpdates).length > 0;
|
|
3715
3715
|
const hasUserUpdates = Object.keys(userUpdates).length > 0;
|
|
3716
3716
|
if (hasMarketUpdates || hasUserUpdates) {
|
|
@@ -3748,7 +3748,7 @@ async function _PerpsController_performMarketDataPreload() {
|
|
|
3748
3748
|
const actualProviderId = this.activeProviderInstance
|
|
3749
3749
|
? this.state.activeProvider // includes 'aggregated'
|
|
3750
3750
|
: 'hyperliquid';
|
|
3751
|
-
const cacheKey = (0,
|
|
3751
|
+
const cacheKey = (0, perpsConfig_js_1.buildProviderCacheKey)(actualProviderId, this.state.isTestnet);
|
|
3752
3752
|
const now = Date.now();
|
|
3753
3753
|
const existingEntry = this.state.cachedMarketDataByProvider[cacheKey];
|
|
3754
3754
|
if (existingEntry &&
|
|
@@ -3761,9 +3761,9 @@ async function _PerpsController_performMarketDataPreload() {
|
|
|
3761
3761
|
let traceData;
|
|
3762
3762
|
try {
|
|
3763
3763
|
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.trace({
|
|
3764
|
-
name:
|
|
3764
|
+
name: index_js_1.PerpsTraceNames.MarketDataPreload,
|
|
3765
3765
|
id: traceId,
|
|
3766
|
-
op:
|
|
3766
|
+
op: index_js_1.PerpsTraceOperations.Operation,
|
|
3767
3767
|
tags: {
|
|
3768
3768
|
provider: this.state.activeProvider,
|
|
3769
3769
|
isTestnet: this.state.isTestnet,
|
|
@@ -3796,7 +3796,7 @@ async function _PerpsController_performMarketDataPreload() {
|
|
|
3796
3796
|
}
|
|
3797
3797
|
this.update((state) => {
|
|
3798
3798
|
for (const [pid, slice] of byProvider) {
|
|
3799
|
-
const key = (0,
|
|
3799
|
+
const key = (0, perpsConfig_js_1.buildProviderCacheKey)(pid, this.state.isTestnet);
|
|
3800
3800
|
marketDiskEntries.push({
|
|
3801
3801
|
providerNetworkKey: key,
|
|
3802
3802
|
data: slice,
|
|
@@ -3827,12 +3827,12 @@ async function _PerpsController_performMarketDataPreload() {
|
|
|
3827
3827
|
};
|
|
3828
3828
|
});
|
|
3829
3829
|
}
|
|
3830
|
-
(0,
|
|
3830
|
+
(0, perpsDiskPersistence_js_1.persistMarketEntriesToDisk)(__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.diskCache, marketDiskEntries);
|
|
3831
3831
|
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_debugLog).call(this, 'PerpsController: Market data preloaded', {
|
|
3832
3832
|
marketCount: data.length,
|
|
3833
3833
|
});
|
|
3834
3834
|
traceData = { success: true, marketCount: data.length };
|
|
3835
|
-
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.setMeasurement(
|
|
3835
|
+
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.setMeasurement(performanceMetrics_js_1.PerpsMeasurementName.PerpsMarketDataPreload, performance.now() - preloadStart, 'millisecond');
|
|
3836
3836
|
// Also preload user data (fire-and-forget, non-blocking)
|
|
3837
3837
|
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_performUserDataPreload).call(this).catch(() => {
|
|
3838
3838
|
/* fire-and-forget */
|
|
@@ -3841,16 +3841,16 @@ async function _PerpsController_performMarketDataPreload() {
|
|
|
3841
3841
|
catch (error) {
|
|
3842
3842
|
traceData = {
|
|
3843
3843
|
success: false,
|
|
3844
|
-
error: (0,
|
|
3844
|
+
error: (0, errorUtils_js_1.ensureError)(error, 'PerpsController.performMarketDataPreload')
|
|
3845
3845
|
.message,
|
|
3846
3846
|
};
|
|
3847
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
3847
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.performMarketDataPreload'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'performMarketDataPreload', {
|
|
3848
3848
|
message: 'Background preload failed',
|
|
3849
3849
|
}));
|
|
3850
3850
|
}
|
|
3851
3851
|
finally {
|
|
3852
3852
|
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.endTrace({
|
|
3853
|
-
name:
|
|
3853
|
+
name: index_js_1.PerpsTraceNames.MarketDataPreload,
|
|
3854
3854
|
id: traceId,
|
|
3855
3855
|
data: traceData,
|
|
3856
3856
|
});
|
|
@@ -3866,7 +3866,7 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3866
3866
|
return;
|
|
3867
3867
|
}
|
|
3868
3868
|
// Get current user address
|
|
3869
|
-
const evmAccount = (0,
|
|
3869
|
+
const evmAccount = (0, accountUtils_js_1.getSelectedEvmAccountFromMessenger)(this.messenger);
|
|
3870
3870
|
if (!evmAccount?.address) {
|
|
3871
3871
|
return;
|
|
3872
3872
|
}
|
|
@@ -3875,7 +3875,7 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3875
3875
|
const actualProviderId = this.activeProviderInstance
|
|
3876
3876
|
? this.state.activeProvider // includes 'aggregated'
|
|
3877
3877
|
: 'hyperliquid';
|
|
3878
|
-
const userCacheKey = (0,
|
|
3878
|
+
const userCacheKey = (0, perpsConfig_js_1.buildProviderCacheKey)(actualProviderId, this.state.isTestnet);
|
|
3879
3879
|
// Skip if cache is fresh and for same account
|
|
3880
3880
|
const now = Date.now();
|
|
3881
3881
|
const existingEntry = this.state.cachedUserDataByProvider[userCacheKey];
|
|
@@ -3884,7 +3884,7 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3884
3884
|
return;
|
|
3885
3885
|
}
|
|
3886
3886
|
// Skip standalone REST polling when WebSocket is connected — live data is streaming
|
|
3887
|
-
if (this.getWebSocketConnectionState() ===
|
|
3887
|
+
if (this.getWebSocketConnectionState() === index_js_1.WebSocketConnectionState.Connected) {
|
|
3888
3888
|
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_debugLog).call(this, 'PerpsController: Skipping user data preload — WebSocket connected');
|
|
3889
3889
|
return;
|
|
3890
3890
|
}
|
|
@@ -3894,9 +3894,9 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3894
3894
|
let traceData;
|
|
3895
3895
|
try {
|
|
3896
3896
|
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.trace({
|
|
3897
|
-
name:
|
|
3897
|
+
name: index_js_1.PerpsTraceNames.UserDataPreload,
|
|
3898
3898
|
id: traceId,
|
|
3899
|
-
op:
|
|
3899
|
+
op: index_js_1.PerpsTraceOperations.Operation,
|
|
3900
3900
|
tags: {
|
|
3901
3901
|
provider: this.state.activeProvider,
|
|
3902
3902
|
isTestnet: this.state.isTestnet,
|
|
@@ -3937,7 +3937,7 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3937
3937
|
const diskEntries = [];
|
|
3938
3938
|
this.update((state) => {
|
|
3939
3939
|
for (const [pid, data] of byProvider) {
|
|
3940
|
-
const key = (0,
|
|
3940
|
+
const key = (0, perpsConfig_js_1.buildProviderCacheKey)(pid, this.state.isTestnet);
|
|
3941
3941
|
diskEntries.push({
|
|
3942
3942
|
providerNetworkKey: key,
|
|
3943
3943
|
address: userAddress,
|
|
@@ -3961,7 +3961,7 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3961
3961
|
address: userAddress,
|
|
3962
3962
|
};
|
|
3963
3963
|
});
|
|
3964
|
-
(0,
|
|
3964
|
+
(0, perpsDiskPersistence_js_1.persistUserEntriesToDisk)(__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.diskCache, diskEntries);
|
|
3965
3965
|
}
|
|
3966
3966
|
else {
|
|
3967
3967
|
// Single provider — store directly under its key
|
|
@@ -3975,7 +3975,7 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3975
3975
|
address: userAddress,
|
|
3976
3976
|
};
|
|
3977
3977
|
});
|
|
3978
|
-
(0,
|
|
3978
|
+
(0, perpsDiskPersistence_js_1.persistUserEntriesToDisk)(__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.diskCache, [
|
|
3979
3979
|
{
|
|
3980
3980
|
providerNetworkKey: userCacheKey,
|
|
3981
3981
|
address: userAddress,
|
|
@@ -3996,21 +3996,21 @@ async function _PerpsController_performUserDataPreload() {
|
|
|
3996
3996
|
positionCount: positions.length,
|
|
3997
3997
|
orderCount: orders.length,
|
|
3998
3998
|
};
|
|
3999
|
-
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.setMeasurement(
|
|
3999
|
+
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.setMeasurement(performanceMetrics_js_1.PerpsMeasurementName.PerpsUserDataPreload, performance.now() - preloadStart, 'millisecond');
|
|
4000
4000
|
}
|
|
4001
4001
|
catch (error) {
|
|
4002
4002
|
traceData = {
|
|
4003
4003
|
success: false,
|
|
4004
|
-
error: (0,
|
|
4004
|
+
error: (0, errorUtils_js_1.ensureError)(error, 'PerpsController.performUserDataPreload')
|
|
4005
4005
|
.message,
|
|
4006
4006
|
};
|
|
4007
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
4007
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.performUserDataPreload'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'performUserDataPreload', {
|
|
4008
4008
|
message: 'Background user data preload failed',
|
|
4009
4009
|
}));
|
|
4010
4010
|
}
|
|
4011
4011
|
finally {
|
|
4012
4012
|
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.tracer.endTrace({
|
|
4013
|
-
name:
|
|
4013
|
+
name: index_js_1.PerpsTraceNames.UserDataPreload,
|
|
4014
4014
|
id: traceId,
|
|
4015
4015
|
data: traceData,
|
|
4016
4016
|
});
|
|
@@ -4146,7 +4146,7 @@ async function _PerpsController_syncWatchlistFromRemote() {
|
|
|
4146
4146
|
}
|
|
4147
4147
|
}
|
|
4148
4148
|
catch (error) {
|
|
4149
|
-
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0,
|
|
4149
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_js_1.ensureError)(error, 'PerpsController.syncWatchlistFromRemote'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'syncWatchlistFromRemote'));
|
|
4150
4150
|
}
|
|
4151
4151
|
};
|
|
4152
4152
|
// ============================================================================
|