@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 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
@@ -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
- * Fetch geo location
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
- * Returned in Country or Country-Region format
2090
- * Example: FR, DE, US-MI, CA-ON
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 {