@metamask-previews/perps-controller 8.2.0-preview-2a256aff2 → 8.2.0-preview-9de9aa4
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 +17 -0
- package/dist/PerpsController.cjs +38 -9
- 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 +38 -9
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/constants/eventNames.cjs +10 -0
- package/dist/constants/eventNames.cjs.map +1 -1
- package/dist/constants/eventNames.d.cts +10 -0
- package/dist/constants/eventNames.d.cts.map +1 -1
- package/dist/constants/eventNames.d.mts +10 -0
- package/dist/constants/eventNames.d.mts.map +1 -1
- package/dist/constants/eventNames.mjs +10 -0
- package/dist/constants/eventNames.mjs.map +1 -1
- package/dist/constants/perpsConfig.cjs +10 -1
- package/dist/constants/perpsConfig.cjs.map +1 -1
- package/dist/constants/perpsConfig.d.cts +9 -0
- package/dist/constants/perpsConfig.d.cts.map +1 -1
- package/dist/constants/perpsConfig.d.mts +9 -0
- package/dist/constants/perpsConfig.d.mts.map +1 -1
- package/dist/constants/perpsConfig.mjs +9 -0
- package/dist/constants/perpsConfig.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/services/MarketDataService.cjs +100 -7
- package/dist/services/MarketDataService.cjs.map +1 -1
- package/dist/services/MarketDataService.d.cts +10 -1
- package/dist/services/MarketDataService.d.cts.map +1 -1
- package/dist/services/MarketDataService.d.mts +10 -1
- package/dist/services/MarketDataService.d.mts.map +1 -1
- package/dist/services/MarketDataService.mjs +100 -7
- package/dist/services/MarketDataService.mjs.map +1 -1
- package/dist/services/TerminalMarketService.cjs +185 -0
- package/dist/services/TerminalMarketService.cjs.map +1 -0
- package/dist/services/TerminalMarketService.d.cts +36 -0
- package/dist/services/TerminalMarketService.d.cts.map +1 -0
- package/dist/services/TerminalMarketService.d.mts +36 -0
- package/dist/services/TerminalMarketService.d.mts.map +1 -0
- package/dist/services/TerminalMarketService.mjs +181 -0
- package/dist/services/TerminalMarketService.mjs.map +1 -0
- package/dist/services/TradingService.cjs +4 -0
- 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 +4 -0
- package/dist/services/TradingService.mjs.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +59 -0
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +59 -0
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils/marketDataTransform.cjs +3 -8
- package/dist/utils/marketDataTransform.cjs.map +1 -1
- package/dist/utils/marketDataTransform.d.cts.map +1 -1
- package/dist/utils/marketDataTransform.d.mts.map +1 -1
- package/dist/utils/marketDataTransform.mjs +3 -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,25 @@ 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, controlled via `useTerminalApi` parameter on `GetMarketsParams` / `GetMarketDataWithPricesParams` ([#9137](https://github.com/MetaMask/core/pull/9137))
|
|
13
|
+
- `TerminalMarketService` fetches structured market metadata from the injected `terminalApiUrl` 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. Terminal results respect the same allowlist/blocklist filtering as the provider path.
|
|
15
|
+
- `getMarketDataWithPrices()` enriches provider data with Terminal API metadata (name, keywords, tags, categories).
|
|
16
|
+
- `PerpsPlatformDependencies` gains an optional `terminalApiUrl?: string` field and an optional `terminalMarketService?: PerpsTerminalMarketService` field; clients can inject a pre-built service instance or let the controller create one from the URL.
|
|
17
|
+
- `PerpsMarketData` gains optional `keywords`, `tags`, and `categories` fields.
|
|
18
|
+
- Market search (`getMarketMatchRank`, `rankMarketsByQuery`) now indexes the `keywords` field for richer search results.
|
|
19
|
+
- `HYPERLIQUID_ASSET_NAMES` and `HIP3_ASSET_MARKET_TYPES` remain intact as fallback for assets absent from the Terminal API.
|
|
20
|
+
- Add Perps Advanced Chart analytics constants to `PERPS_EVENT_PROPERTY` and `PERPS_EVENT_VALUE` so mobile can import chart instrumentation keys from `@metamask/perps-controller` instead of maintaining a local mirror ([#XXXX](https://github.com/MetaMask/core/pull/XXXX))
|
|
21
|
+
- New `PERPS_EVENT_PROPERTY` keys: `CHART_LIBRARY`, `ASSET_TYPE`
|
|
22
|
+
- New `PERPS_EVENT_VALUE.CHART_LIBRARY` group: `lightweight`, `advanced`
|
|
23
|
+
- New `PERPS_EVENT_VALUE.ASSET_TYPE` group: `spot`, `perp`
|
|
24
|
+
|
|
10
25
|
### Changed
|
|
11
26
|
|
|
27
|
+
- Replace unsafe `as` type cast with runtime schema validation (`@metamask/superstruct`) in `TerminalMarketService` ([#9137](https://github.com/MetaMask/core/pull/9137))
|
|
28
|
+
- 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
29
|
- Bump `@metamask/controller-utils` from `^12.2.0` to `^12.3.0` ([#9218](https://github.com/MetaMask/core/pull/9218))
|
|
13
30
|
|
|
14
31
|
## [8.2.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_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_buildMarketAllowedFilter, _PerpsController_compilePatternsSafely, _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,11 +31,14 @@ 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");
|
|
37
38
|
const accountUtils_1 = require("./utils/accountUtils.cjs");
|
|
38
39
|
const errorUtils_1 = require("./utils/errorUtils.cjs");
|
|
40
|
+
const hyperLiquidAdapter_1 = require("./utils/hyperLiquidAdapter.cjs");
|
|
41
|
+
const marketUtils_1 = require("./utils/marketUtils.cjs");
|
|
39
42
|
const perpsDiskPersistence_1 = require("./utils/perpsDiskPersistence.cjs");
|
|
40
43
|
const wait_1 = require("./utils/wait.cjs");
|
|
41
44
|
/**
|
|
@@ -502,7 +505,13 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
502
505
|
// Instantiate services with platform dependencies
|
|
503
506
|
// Services that need cross-controller access receive the messenger
|
|
504
507
|
__classPrivateFieldSet(this, _PerpsController_tradingService, new TradingService_1.TradingService(infrastructure), "f");
|
|
505
|
-
__classPrivateFieldSet(this, _PerpsController_marketDataService, new MarketDataService_1.MarketDataService(
|
|
508
|
+
__classPrivateFieldSet(this, _PerpsController_marketDataService, new MarketDataService_1.MarketDataService({
|
|
509
|
+
...infrastructure,
|
|
510
|
+
terminalMarketService: infrastructure.terminalMarketService ??
|
|
511
|
+
(infrastructure.terminalApiUrl
|
|
512
|
+
? new TerminalMarketService_1.TerminalMarketService(infrastructure)
|
|
513
|
+
: undefined),
|
|
514
|
+
}), "f");
|
|
506
515
|
__classPrivateFieldSet(this, _PerpsController_accountService, new AccountService_1.AccountService(infrastructure, messenger), "f");
|
|
507
516
|
__classPrivateFieldSet(this, _PerpsController_eligibilityService, new EligibilityService_1.EligibilityService(infrastructure), "f");
|
|
508
517
|
__classPrivateFieldSet(this, _PerpsController_dataLakeService, new DataLakeService_1.DataLakeService(infrastructure, messenger), "f");
|
|
@@ -1592,19 +1601,22 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1592
1601
|
* @returns Array of available markets matching the filter criteria.
|
|
1593
1602
|
*/
|
|
1594
1603
|
async getMarkets(params) {
|
|
1595
|
-
|
|
1596
|
-
// This allows discovery use cases (checking if market exists) without full perps setup
|
|
1604
|
+
const isMarketAllowed = __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_buildMarketAllowedFilter).call(this);
|
|
1597
1605
|
if (params?.standalone) {
|
|
1598
|
-
// Use activeProviderInstance if available (respects provider abstraction)
|
|
1599
|
-
// Fallback to cached standalone provider for pre-initialization discovery
|
|
1600
1606
|
const provider = this.activeProviderInstance ?? __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getOrCreateStandaloneProvider).call(this);
|
|
1601
|
-
return
|
|
1607
|
+
return __classPrivateFieldGet(this, _PerpsController_marketDataService, "f").getMarkets({
|
|
1608
|
+
provider,
|
|
1609
|
+
params,
|
|
1610
|
+
context: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_createServiceContext).call(this, 'getMarkets'),
|
|
1611
|
+
isMarketAllowed,
|
|
1612
|
+
});
|
|
1602
1613
|
}
|
|
1603
1614
|
const provider = this.getActiveProvider();
|
|
1604
1615
|
return __classPrivateFieldGet(this, _PerpsController_marketDataService, "f").getMarkets({
|
|
1605
1616
|
provider,
|
|
1606
1617
|
params,
|
|
1607
1618
|
context: __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_createServiceContext).call(this, 'getMarkets'),
|
|
1619
|
+
isMarketAllowed,
|
|
1608
1620
|
});
|
|
1609
1621
|
}
|
|
1610
1622
|
/**
|
|
@@ -1624,8 +1636,6 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
1624
1636
|
*/
|
|
1625
1637
|
async getMarketDataWithPrices(params) {
|
|
1626
1638
|
if (params?.standalone) {
|
|
1627
|
-
// Use activeProviderInstance if available (respects provider abstraction)
|
|
1628
|
-
// Fallback to cached standalone provider for pre-initialization discovery
|
|
1629
1639
|
const provider = this.activeProviderInstance ?? __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getOrCreateStandaloneProvider).call(this);
|
|
1630
1640
|
return __classPrivateFieldGet(this, _PerpsController_marketDataService, "f").getMarketDataWithPrices({
|
|
1631
1641
|
provider,
|
|
@@ -3398,6 +3408,25 @@ async function _PerpsController_performInitialization() {
|
|
|
3398
3408
|
};
|
|
3399
3409
|
}, _PerpsController_getControllerState = function _PerpsController_getControllerState() {
|
|
3400
3410
|
return this.state;
|
|
3411
|
+
}, _PerpsController_buildMarketAllowedFilter = function _PerpsController_buildMarketAllowedFilter() {
|
|
3412
|
+
const hip3Enabled = __classPrivateFieldGet(this, _PerpsController_hip3Enabled, "f");
|
|
3413
|
+
const compiledAllowlist = __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_compilePatternsSafely).call(this, __classPrivateFieldGet(this, _PerpsController_hip3AllowlistMarkets, "f"));
|
|
3414
|
+
const compiledBlocklist = __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_compilePatternsSafely).call(this, __classPrivateFieldGet(this, _PerpsController_hip3BlocklistMarkets, "f"));
|
|
3415
|
+
return (symbol) => {
|
|
3416
|
+
const { dex } = (0, hyperLiquidAdapter_1.parseAssetName)(symbol);
|
|
3417
|
+
return (0, marketUtils_1.shouldIncludeMarket)(symbol, dex, hip3Enabled, compiledAllowlist, compiledBlocklist);
|
|
3418
|
+
};
|
|
3419
|
+
}, _PerpsController_compilePatternsSafely = function _PerpsController_compilePatternsSafely(patterns) {
|
|
3420
|
+
const compiled = [];
|
|
3421
|
+
for (const pattern of patterns) {
|
|
3422
|
+
try {
|
|
3423
|
+
compiled.push({ pattern, matcher: (0, marketUtils_1.compileMarketPattern)(pattern) });
|
|
3424
|
+
}
|
|
3425
|
+
catch {
|
|
3426
|
+
// Invalid patterns silently skipped — logged at provider level.
|
|
3427
|
+
}
|
|
3428
|
+
}
|
|
3429
|
+
return compiled;
|
|
3401
3430
|
}, _PerpsController_createServiceContext = function _PerpsController_createServiceContext(method, additionalContext) {
|
|
3402
3431
|
return {
|
|
3403
3432
|
tracingContext: {
|