@metamask-previews/perps-controller 8.1.0-preview-5588db68c → 8.1.0-preview-138a209ad
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/CHANGELOG.md +14 -0
- package/dist/PerpsController.cjs +17 -3
- 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 +17 -3
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/constants/perpsConfig.cjs +16 -1
- package/dist/constants/perpsConfig.cjs.map +1 -1
- package/dist/constants/perpsConfig.d.cts +15 -0
- package/dist/constants/perpsConfig.d.cts.map +1 -1
- package/dist/constants/perpsConfig.d.mts +15 -0
- package/dist/constants/perpsConfig.d.mts.map +1 -1
- package/dist/constants/perpsConfig.mjs +15 -0
- package/dist/constants/perpsConfig.mjs.map +1 -1
- package/dist/services/MarketDataService.cjs +77 -9
- package/dist/services/MarketDataService.cjs.map +1 -1
- package/dist/services/MarketDataService.d.cts +13 -2
- package/dist/services/MarketDataService.d.cts.map +1 -1
- package/dist/services/MarketDataService.d.mts +13 -2
- package/dist/services/MarketDataService.d.mts.map +1 -1
- package/dist/services/MarketDataService.mjs +77 -9
- package/dist/services/MarketDataService.mjs.map +1 -1
- package/dist/services/TerminalMarketService.cjs +175 -0
- package/dist/services/TerminalMarketService.cjs.map +1 -0
- package/dist/services/TerminalMarketService.d.cts +48 -0
- package/dist/services/TerminalMarketService.d.cts.map +1 -0
- package/dist/services/TerminalMarketService.d.mts +48 -0
- package/dist/services/TerminalMarketService.d.mts.map +1 -0
- package/dist/services/TerminalMarketService.mjs +171 -0
- package/dist/services/TerminalMarketService.mjs.map +1 -0
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +18 -0
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +18 -0
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils/marketDataTransform.cjs +14 -8
- package/dist/utils/marketDataTransform.cjs.map +1 -1
- package/dist/utils/marketDataTransform.d.cts +5 -1
- package/dist/utils/marketDataTransform.d.cts.map +1 -1
- package/dist/utils/marketDataTransform.d.mts +5 -1
- package/dist/utils/marketDataTransform.d.mts.map +1 -1
- package/dist/utils/marketDataTransform.mjs +14 -8
- package/dist/utils/marketDataTransform.mjs.map +1 -1
- package/dist/utils/marketSearch.cjs +28 -2
- package/dist/utils/marketSearch.cjs.map +1 -1
- package/dist/utils/marketSearch.d.cts +4 -3
- package/dist/utils/marketSearch.d.cts.map +1 -1
- package/dist/utils/marketSearch.d.mts +4 -3
- package/dist/utils/marketSearch.d.mts.map +1 -1
- package/dist/utils/marketSearch.mjs +28 -2
- package/dist/utils/marketSearch.mjs.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,8 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Add Terminal API integration for market data behind `perpsTerminalApiMarkets` feature flag ([#TBD](https://github.com/MetaMask/core/pull/TBD))
|
|
13
|
+
- `TerminalMarketService` fetches structured market metadata from `{terminalApiBaseUrl}/perpetuals` with a 5-minute cache TTL.
|
|
14
|
+
- When enabled, `getMarkets()` attempts the Terminal API first; on failure or empty response, falls back silently to HyperLiquid.
|
|
15
|
+
- `getMarketDataWithPrices()` enriches provider data with Terminal API metadata (name, keywords, tags, categories).
|
|
16
|
+
- `PerpsPlatformDependencies` gains a required `terminalApiBaseUrl: string` field; clients must inject the correct environment URL.
|
|
17
|
+
- `PerpsMarketData` gains optional `keywords`, `tags`, and `categories` fields.
|
|
18
|
+
- `transformMarketData()` accepts optional `terminalMetadata` parameter to override static name/category maps per symbol.
|
|
19
|
+
- Market search (`getMarketMatchRank`, `rankMarketsByQuery`) now indexes the `keywords` field for richer search results.
|
|
20
|
+
- `HYPERLIQUID_ASSET_NAMES` and `HIP3_ASSET_MARKET_TYPES` remain intact as fallback for assets absent from the Terminal API.
|
|
21
|
+
|
|
10
22
|
### Changed
|
|
11
23
|
|
|
24
|
+
- Replace unsafe `as` type cast with runtime schema validation (`@metamask/superstruct`) in `TerminalMarketService` ([#TBD](https://github.com/MetaMask/core/pull/TBD))
|
|
25
|
+
- Each item in the Terminal API response is now individually validated; items that fail validation are filtered out and logged instead of silently accepted.
|
|
12
26
|
- Bump `@metamask/utils` from `^11.9.0` to `^11.11.0` ([#9074](https://github.com/MetaMask/core/pull/9074))
|
|
13
27
|
|
|
14
28
|
## [8.1.0]
|
package/dist/PerpsController.cjs
CHANGED
|
@@ -10,7 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
11
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
12
|
};
|
|
13
|
-
var _PerpsController_instances, _a, _PerpsController_initializationPromise, _PerpsController_isReinitializing, _PerpsController_myxRegistrationPromise, _PerpsController_blockedRegionListVersion, _PerpsController_hip3Enabled, _PerpsController_hip3AllowlistMarkets, _PerpsController_hip3BlocklistMarkets, _PerpsController_hip3ConfigSource, _PerpsController_isMYXProviderEnabled, _PerpsController_standaloneProvider, _PerpsController_handlersRegistered, _PerpsController_standaloneProviderIsTestnet, _PerpsController_standaloneProviderHip3Version, _PerpsController_eligibilityCheckDeferred, _PerpsController_options, _PerpsController_tradingService, _PerpsController_marketDataService, _PerpsController_accountService, _PerpsController_eligibilityService, _PerpsController_dataLakeService, _PerpsController_depositService, _PerpsController_featureFlagConfigurationService, _PerpsController_rewardsIntegrationService, _PerpsController_logError, _PerpsController_debugLog, _PerpsController_getAggregatedCacheProviderIds, _PerpsController_getOrCreateStandaloneProvider, _PerpsController_cleanupStandaloneProvider, _PerpsController_getMetrics, _PerpsController_findNetworkClientIdForChain, _PerpsController_submitTransaction, _PerpsController_migrateRequestsIfNeeded, _PerpsController_withStreamPause, _PerpsController_performInitialization, _PerpsController_createProviders, _PerpsController_assignActiveProvider, _PerpsController_getErrorContext, _PerpsController_getControllerState, _PerpsController_createServiceContext, _PerpsController_ensureTradingServiceDeps, _PerpsController_preloadWatchedPaths, _PerpsController_preloadTimer, _PerpsController_isPreloading, _PerpsController_isPreloadingUserData, _PerpsController_preloadStateUnsubscribe, _PerpsController_accountChangeUnsubscribe, _PerpsController_previousIsTestnet, _PerpsController_previousHip3ConfigVersion, _PerpsController_preloadRefreshMs, _PerpsController_preloadGuardMs, _PerpsController_hydrateCacheFromDiskSync, _PerpsController_performMarketDataPreload, _PerpsController_performUserDataPreload;
|
|
13
|
+
var _PerpsController_instances, _a, _PerpsController_initializationPromise, _PerpsController_isReinitializing, _PerpsController_myxRegistrationPromise, _PerpsController_blockedRegionListVersion, _PerpsController_hip3Enabled, _PerpsController_hip3AllowlistMarkets, _PerpsController_hip3BlocklistMarkets, _PerpsController_hip3ConfigSource, _PerpsController_isMYXProviderEnabled, _PerpsController_isTerminalApiEnabled, _PerpsController_standaloneProvider, _PerpsController_handlersRegistered, _PerpsController_standaloneProviderIsTestnet, _PerpsController_standaloneProviderHip3Version, _PerpsController_eligibilityCheckDeferred, _PerpsController_options, _PerpsController_tradingService, _PerpsController_marketDataService, _PerpsController_terminalMarketService, _PerpsController_accountService, _PerpsController_eligibilityService, _PerpsController_dataLakeService, _PerpsController_depositService, _PerpsController_featureFlagConfigurationService, _PerpsController_rewardsIntegrationService, _PerpsController_logError, _PerpsController_debugLog, _PerpsController_getAggregatedCacheProviderIds, _PerpsController_getOrCreateStandaloneProvider, _PerpsController_cleanupStandaloneProvider, _PerpsController_getMetrics, _PerpsController_findNetworkClientIdForChain, _PerpsController_submitTransaction, _PerpsController_migrateRequestsIfNeeded, _PerpsController_withStreamPause, _PerpsController_performInitialization, _PerpsController_createProviders, _PerpsController_assignActiveProvider, _PerpsController_getErrorContext, _PerpsController_getControllerState, _PerpsController_createServiceContext, _PerpsController_ensureTradingServiceDeps, _PerpsController_preloadWatchedPaths, _PerpsController_preloadTimer, _PerpsController_isPreloading, _PerpsController_isPreloadingUserData, _PerpsController_preloadStateUnsubscribe, _PerpsController_accountChangeUnsubscribe, _PerpsController_previousIsTestnet, _PerpsController_previousHip3ConfigVersion, _PerpsController_preloadRefreshMs, _PerpsController_preloadGuardMs, _PerpsController_hydrateCacheFromDiskSync, _PerpsController_performMarketDataPreload, _PerpsController_performUserDataPreload;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.PerpsController = exports.getDefaultPerpsControllerState = exports.InitializationState = exports.PERPS_ERROR_CODES = exports.resolveMyxAuthConfig = exports.firstNonEmpty = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -31,6 +31,7 @@ const EligibilityService_1 = require("./services/EligibilityService.cjs");
|
|
|
31
31
|
const FeatureFlagConfigurationService_1 = require("./services/FeatureFlagConfigurationService.cjs");
|
|
32
32
|
const MarketDataService_1 = require("./services/MarketDataService.cjs");
|
|
33
33
|
const RewardsIntegrationService_1 = require("./services/RewardsIntegrationService.cjs");
|
|
34
|
+
const TerminalMarketService_1 = require("./services/TerminalMarketService.cjs");
|
|
34
35
|
const TradingService_1 = require("./services/TradingService.cjs");
|
|
35
36
|
// PerpsStreamChannelKey removed: using string for channel keys (PerpsStreamManager.pauseChannel takes string)
|
|
36
37
|
const types_1 = require("./types/index.cjs");
|
|
@@ -478,6 +479,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
478
479
|
// Service instances (instantiated with platform dependencies)
|
|
479
480
|
_PerpsController_tradingService.set(this, void 0);
|
|
480
481
|
_PerpsController_marketDataService.set(this, void 0);
|
|
482
|
+
_PerpsController_terminalMarketService.set(this, void 0);
|
|
481
483
|
_PerpsController_accountService.set(this, void 0);
|
|
482
484
|
_PerpsController_eligibilityService.set(this, void 0);
|
|
483
485
|
_PerpsController_dataLakeService.set(this, void 0);
|
|
@@ -502,7 +504,8 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
502
504
|
// Instantiate services with platform dependencies
|
|
503
505
|
// Services that need cross-controller access receive the messenger
|
|
504
506
|
__classPrivateFieldSet(this, _PerpsController_tradingService, new TradingService_1.TradingService(infrastructure), "f");
|
|
505
|
-
__classPrivateFieldSet(this,
|
|
507
|
+
__classPrivateFieldSet(this, _PerpsController_terminalMarketService, new TerminalMarketService_1.TerminalMarketService(infrastructure), "f");
|
|
508
|
+
__classPrivateFieldSet(this, _PerpsController_marketDataService, new MarketDataService_1.MarketDataService(infrastructure, __classPrivateFieldGet(this, _PerpsController_terminalMarketService, "f")), "f");
|
|
506
509
|
__classPrivateFieldSet(this, _PerpsController_accountService, new AccountService_1.AccountService(infrastructure, messenger), "f");
|
|
507
510
|
__classPrivateFieldSet(this, _PerpsController_eligibilityService, new EligibilityService_1.EligibilityService(infrastructure), "f");
|
|
508
511
|
__classPrivateFieldSet(this, _PerpsController_dataLakeService, new DataLakeService_1.DataLakeService(infrastructure, messenger), "f");
|
|
@@ -1605,6 +1608,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1605
1608
|
provider,
|
|
1606
1609
|
params,
|
|
1607
1610
|
context: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_createServiceContext).call(this, 'getMarkets'),
|
|
1611
|
+
useTerminalApi: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_isTerminalApiEnabled).call(this),
|
|
1608
1612
|
});
|
|
1609
1613
|
}
|
|
1610
1614
|
/**
|
|
@@ -1631,6 +1635,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1631
1635
|
provider,
|
|
1632
1636
|
params,
|
|
1633
1637
|
context: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_createServiceContext).call(this, 'getMarketDataWithPrices'),
|
|
1638
|
+
useTerminalApi: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_isTerminalApiEnabled).call(this),
|
|
1634
1639
|
});
|
|
1635
1640
|
}
|
|
1636
1641
|
const provider = this.getActiveProvider();
|
|
@@ -1638,6 +1643,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1638
1643
|
provider,
|
|
1639
1644
|
params,
|
|
1640
1645
|
context: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_createServiceContext).call(this, 'getMarketDataWithPrices'),
|
|
1646
|
+
useTerminalApi: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_isTerminalApiEnabled).call(this),
|
|
1641
1647
|
});
|
|
1642
1648
|
}
|
|
1643
1649
|
/**
|
|
@@ -3011,7 +3017,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
3011
3017
|
}
|
|
3012
3018
|
}
|
|
3013
3019
|
exports.PerpsController = PerpsController;
|
|
3014
|
-
_a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _PerpsController_isReinitializing = new WeakMap(), _PerpsController_myxRegistrationPromise = new WeakMap(), _PerpsController_blockedRegionListVersion = new WeakMap(), _PerpsController_hip3Enabled = new WeakMap(), _PerpsController_hip3AllowlistMarkets = new WeakMap(), _PerpsController_hip3BlocklistMarkets = new WeakMap(), _PerpsController_hip3ConfigSource = new WeakMap(), _PerpsController_standaloneProvider = new WeakMap(), _PerpsController_handlersRegistered = new WeakMap(), _PerpsController_standaloneProviderIsTestnet = new WeakMap(), _PerpsController_standaloneProviderHip3Version = new WeakMap(), _PerpsController_eligibilityCheckDeferred = new WeakMap(), _PerpsController_options = new WeakMap(), _PerpsController_tradingService = new WeakMap(), _PerpsController_marketDataService = new WeakMap(), _PerpsController_accountService = new WeakMap(), _PerpsController_eligibilityService = new WeakMap(), _PerpsController_dataLakeService = new WeakMap(), _PerpsController_depositService = new WeakMap(), _PerpsController_featureFlagConfigurationService = new WeakMap(), _PerpsController_rewardsIntegrationService = new WeakMap(), _PerpsController_preloadTimer = new WeakMap(), _PerpsController_isPreloading = new WeakMap(), _PerpsController_isPreloadingUserData = new WeakMap(), _PerpsController_preloadStateUnsubscribe = new WeakMap(), _PerpsController_accountChangeUnsubscribe = new WeakMap(), _PerpsController_previousIsTestnet = new WeakMap(), _PerpsController_previousHip3ConfigVersion = new WeakMap(), _PerpsController_instances = new WeakSet(), _PerpsController_isMYXProviderEnabled = function _PerpsController_isMYXProviderEnabled() {
|
|
3020
|
+
_a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _PerpsController_isReinitializing = new WeakMap(), _PerpsController_myxRegistrationPromise = new WeakMap(), _PerpsController_blockedRegionListVersion = new WeakMap(), _PerpsController_hip3Enabled = new WeakMap(), _PerpsController_hip3AllowlistMarkets = new WeakMap(), _PerpsController_hip3BlocklistMarkets = new WeakMap(), _PerpsController_hip3ConfigSource = new WeakMap(), _PerpsController_standaloneProvider = new WeakMap(), _PerpsController_handlersRegistered = new WeakMap(), _PerpsController_standaloneProviderIsTestnet = new WeakMap(), _PerpsController_standaloneProviderHip3Version = new WeakMap(), _PerpsController_eligibilityCheckDeferred = new WeakMap(), _PerpsController_options = new WeakMap(), _PerpsController_tradingService = new WeakMap(), _PerpsController_marketDataService = new WeakMap(), _PerpsController_terminalMarketService = new WeakMap(), _PerpsController_accountService = new WeakMap(), _PerpsController_eligibilityService = new WeakMap(), _PerpsController_dataLakeService = new WeakMap(), _PerpsController_depositService = new WeakMap(), _PerpsController_featureFlagConfigurationService = new WeakMap(), _PerpsController_rewardsIntegrationService = new WeakMap(), _PerpsController_preloadTimer = new WeakMap(), _PerpsController_isPreloading = new WeakMap(), _PerpsController_isPreloadingUserData = new WeakMap(), _PerpsController_preloadStateUnsubscribe = new WeakMap(), _PerpsController_accountChangeUnsubscribe = new WeakMap(), _PerpsController_previousIsTestnet = new WeakMap(), _PerpsController_previousHip3ConfigVersion = new WeakMap(), _PerpsController_instances = new WeakSet(), _PerpsController_isMYXProviderEnabled = function _PerpsController_isMYXProviderEnabled() {
|
|
3015
3021
|
const myx = __classPrivateFieldGet(this, _PerpsController_options, "f").clientConfig?.providerCredentials?.myx;
|
|
3016
3022
|
// Local env-var override (MM_PERPS_MYX_PROVIDER_ENABLED) always wins —
|
|
3017
3023
|
// matches the UI selector (resolvePerpsMyxProviderEnabled) so controller
|
|
@@ -3040,6 +3046,14 @@ _a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _P
|
|
|
3040
3046
|
catch {
|
|
3041
3047
|
return false;
|
|
3042
3048
|
}
|
|
3049
|
+
}, _PerpsController_isTerminalApiEnabled = function _PerpsController_isTerminalApiEnabled() {
|
|
3050
|
+
try {
|
|
3051
|
+
const remoteState = this.messenger.call('RemoteFeatureFlagController:getState');
|
|
3052
|
+
return (remoteState.remoteFeatureFlags?.perpsTerminalApiMarkets === true);
|
|
3053
|
+
}
|
|
3054
|
+
catch {
|
|
3055
|
+
return false;
|
|
3056
|
+
}
|
|
3043
3057
|
}, _PerpsController_logError = function _PerpsController_logError(error, options) {
|
|
3044
3058
|
__classPrivateFieldGet(this, _PerpsController_options, "f").infrastructure.logger.error(error, options);
|
|
3045
3059
|
}, _PerpsController_debugLog = function _PerpsController_debugLog(...args) {
|