@metamask-previews/perps-controller 1.0.1-preview-cd2daacf2 → 1.0.1-preview-935b6049c
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 +5 -0
- package/dist/PerpsController.cjs +28 -6
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts +19 -4
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts +19 -4
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs +28 -6
- package/dist/PerpsController.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,11 @@ 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 `deferEligibilityCheck` option to `PerpsControllerOptions` to skip the eager geolocation fetch during construction
|
|
13
|
+
- Add `startEligibilityMonitoring()` method to activate geo-blocking eligibility checks post-onboarding
|
|
14
|
+
|
|
10
15
|
## [1.0.1]
|
|
11
16
|
|
|
12
17
|
### Changed
|
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_blockedRegionListVersion, _PerpsController_hip3Enabled, _PerpsController_hip3AllowlistMarkets, _PerpsController_hip3BlocklistMarkets, _PerpsController_hip3ConfigSource, _PerpsController_isMYXProviderEnabled, _PerpsController_standaloneProvider, _PerpsController_standaloneProviderIsTestnet, _PerpsController_standaloneProviderHip3Version, _PerpsController_options, _PerpsController_tradingService, _PerpsController_marketDataService, _PerpsController_accountService, _PerpsController_eligibilityService, _PerpsController_dataLakeService, _PerpsController_depositService, _PerpsController_featureFlagConfigurationService, _PerpsController_rewardsIntegrationService, _PerpsController_logError, _PerpsController_debugLog, _PerpsController_getOrCreateStandaloneProvider, _PerpsController_cleanupStandaloneProvider, _PerpsController_getMetrics, _PerpsController_findNetworkClientIdForChain, _PerpsController_submitTransaction, _PerpsController_migrateRequestsIfNeeded, _PerpsController_withStreamPause, _PerpsController_performInitialization, _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_performMarketDataPreload, _PerpsController_performUserDataPreload;
|
|
13
|
+
var _PerpsController_instances, _a, _PerpsController_initializationPromise, _PerpsController_isReinitializing, _PerpsController_blockedRegionListVersion, _PerpsController_hip3Enabled, _PerpsController_hip3AllowlistMarkets, _PerpsController_hip3BlocklistMarkets, _PerpsController_hip3ConfigSource, _PerpsController_isMYXProviderEnabled, _PerpsController_standaloneProvider, _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_getOrCreateStandaloneProvider, _PerpsController_cleanupStandaloneProvider, _PerpsController_getMetrics, _PerpsController_findNetworkClientIdForChain, _PerpsController_submitTransaction, _PerpsController_migrateRequestsIfNeeded, _PerpsController_withStreamPause, _PerpsController_performInitialization, _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_performMarketDataPreload, _PerpsController_performUserDataPreload;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.PerpsController = exports.getDefaultPerpsControllerState = exports.InitializationState = exports.PERPS_ERROR_CODES = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -347,6 +347,7 @@ const MESSENGER_EXPOSED_METHODS = [
|
|
|
347
347
|
'saveOrderBookGrouping',
|
|
348
348
|
'setSelectedPaymentToken',
|
|
349
349
|
'resetSelectedPaymentToken',
|
|
350
|
+
'startEligibilityMonitoring',
|
|
350
351
|
];
|
|
351
352
|
/**
|
|
352
353
|
* PerpsController - Protocol-agnostic perpetuals trading controller
|
|
@@ -357,7 +358,7 @@ const MESSENGER_EXPOSED_METHODS = [
|
|
|
357
358
|
* - Live data uses direct callbacks for maximum performance
|
|
358
359
|
*/
|
|
359
360
|
class PerpsController extends base_controller_1.BaseController {
|
|
360
|
-
constructor({ messenger, state = {}, clientConfig = {}, infrastructure, }) {
|
|
361
|
+
constructor({ messenger, state = {}, clientConfig = {}, infrastructure, deferEligibilityCheck = false, }) {
|
|
361
362
|
super({
|
|
362
363
|
name: 'PerpsController',
|
|
363
364
|
metadata,
|
|
@@ -398,6 +399,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
398
399
|
_PerpsController_standaloneProvider.set(this, null);
|
|
399
400
|
_PerpsController_standaloneProviderIsTestnet.set(this, null);
|
|
400
401
|
_PerpsController_standaloneProviderHip3Version.set(this, null);
|
|
402
|
+
_PerpsController_eligibilityCheckDeferred.set(this, void 0);
|
|
401
403
|
// Store options for dependency injection (allows core package to inject platform-specific services)
|
|
402
404
|
_PerpsController_options.set(this, void 0);
|
|
403
405
|
// Service instances (instantiated with platform dependencies)
|
|
@@ -416,6 +418,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
416
418
|
_PerpsController_accountChangeUnsubscribe.set(this, null);
|
|
417
419
|
_PerpsController_previousIsTestnet.set(this, null);
|
|
418
420
|
_PerpsController_previousHip3ConfigVersion.set(this, null);
|
|
421
|
+
__classPrivateFieldSet(this, _PerpsController_eligibilityCheckDeferred, deferEligibilityCheck, "f");
|
|
419
422
|
// Store options for dependency injection
|
|
420
423
|
__classPrivateFieldSet(this, _PerpsController_options, {
|
|
421
424
|
messenger,
|
|
@@ -2084,15 +2087,34 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2084
2087
|
* Eligibility (Geo-Blocking)
|
|
2085
2088
|
*/
|
|
2086
2089
|
/**
|
|
2087
|
-
*
|
|
2090
|
+
* Activates geo-blocking eligibility monitoring.
|
|
2091
|
+
* Call this after onboarding is complete when the controller was constructed
|
|
2092
|
+
* with `deferEligibilityCheck: true`.
|
|
2088
2093
|
*
|
|
2089
|
-
*
|
|
2090
|
-
*
|
|
2094
|
+
* Reads the current RemoteFeatureFlagController state, performs the initial
|
|
2095
|
+
* eligibility check, and unblocks the existing stateChange subscription so
|
|
2096
|
+
* future feature-flag updates flow through normally.
|
|
2097
|
+
* Safe to call multiple times; subsequent calls simply re-check eligibility.
|
|
2091
2098
|
*/
|
|
2099
|
+
startEligibilityMonitoring() {
|
|
2100
|
+
__classPrivateFieldSet(this, _PerpsController_eligibilityCheckDeferred, false, "f");
|
|
2101
|
+
try {
|
|
2102
|
+
const currentState = this.messenger.call('RemoteFeatureFlagController:getState');
|
|
2103
|
+
this.refreshEligibilityOnFeatureFlagChange(currentState);
|
|
2104
|
+
}
|
|
2105
|
+
catch (error) {
|
|
2106
|
+
__classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_1.ensureError)(error, 'PerpsController.startEligibilityMonitoring'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'startEligibilityMonitoring', {
|
|
2107
|
+
operation: 'readRemoteFeatureFlags',
|
|
2108
|
+
}));
|
|
2109
|
+
}
|
|
2110
|
+
}
|
|
2092
2111
|
/**
|
|
2093
2112
|
* Refresh eligibility status
|
|
2094
2113
|
*/
|
|
2095
2114
|
async refreshEligibility() {
|
|
2115
|
+
if (__classPrivateFieldGet(this, _PerpsController_eligibilityCheckDeferred, "f")) {
|
|
2116
|
+
return;
|
|
2117
|
+
}
|
|
2096
2118
|
// Capture the current version before starting the async operation.
|
|
2097
2119
|
// This prevents race conditions where stale eligibility checks
|
|
2098
2120
|
// (started with fallback config) overwrite results from newer checks
|
|
@@ -2585,7 +2607,7 @@ class PerpsController extends base_controller_1.BaseController {
|
|
|
2585
2607
|
}
|
|
2586
2608
|
}
|
|
2587
2609
|
exports.PerpsController = PerpsController;
|
|
2588
|
-
_a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _PerpsController_isReinitializing = 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_standaloneProviderIsTestnet = new WeakMap(), _PerpsController_standaloneProviderHip3Version = 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() {
|
|
2610
|
+
_a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _PerpsController_isReinitializing = 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_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() {
|
|
2589
2611
|
const getLocalFlag = () => typeof globalThis.process !== 'undefined' &&
|
|
2590
2612
|
globalThis.process.env?.MM_PERPS_MYX_PROVIDER_ENABLED === 'true';
|
|
2591
2613
|
try {
|