Skip to content

Instantly share code, notes, and snippets.

@rekmarks
Last active May 28, 2024 05:39
Show Gist options
  • Save rekmarks/8dba6306695dcd44967cce4b6a94ae33 to your computer and use it in GitHub Desktop.
Save rekmarks/8dba6306695dcd44967cce4b6a94ae33 to your computer and use it in GitHub Desktop.
MetaMask Extension Controller Dependencies
graph LR
  AddressBookController
  AnnouncementController
  ApprovalController
  KeyringController
  NetworkController
  NotificationController
  OnboardingController
  PermissionLogController
  PhishingController
  RateLimitController
  SubjectMetadataController
  AlertController --> PreferencesController
  AppStateController --> PreferencesController
  CachedBalancesController --> NetworkController
  CurrencyRateController --> NetworkController
  EnsController --> NetworkController
  GasFeeController --> NetworkController
  PreferencesController --> NetworkController
  TokenListController --> NetworkController
  AssetsContractController --> PreferencesController
  AssetsContractController --> NetworkController
  IncomingTransactionsController --> PreferencesController
  IncomingTransactionsController --> NetworkController
  MetaMetricsController --> PreferencesController
  MetaMetricsController --> NetworkController
  PermissionController --> KeyringController
  PermissionController --> ApprovalController
  TokensController --> PreferencesController
  TokensController --> NetworkController
  CollectiblesController --> CurrencyRateController
  CollectiblesController --> NetworkController
  CollectiblesController --> AssetsContractController
  SmartTransactionsController --> NetworkController
  SmartTransactionsController --> MetaMetricsController
  SmartTransactionsController --> TransactionController
  TokenRatesController --> TokensController
  TokenRatesController --> CurrencyRateController
  TokenRatesController --> NetworkController
  CollectibleDetectionController --> CollectiblesController
  CollectibleDetectionController --> PreferencesController
  CollectibleDetectionController --> NetworkController
  CollectibleDetectionController --> AssetsContractController
  SwapsController --> NetworkController
  SwapsController --> TokenRatesController
  SwapsController --> TransactionController
  SwapsController --> GasFeeController
  ThreeBoxController --> PreferencesController
  ThreeBoxController --> AddressBookController
  ThreeBoxController --> KeyringController
  ThreeBoxController --> MetaMetricsController
  TransactionController --> PreferencesController
  TransactionController --> NetworkController
  TransactionController --> KeyringController
  TransactionController --> MetaMetricsController
  TransactionController --> AssetsContractController
  DetectTokensController --> PreferencesController
  DetectTokensController --> NetworkController
  DetectTokensController --> TokensController
  DetectTokensController --> AssetsContractController
  DetectTokensController --> KeyringController
  DetectTokensController --> MetaMetricsController
  DetectTokensController --> TokenListController
Loading
{
  "KeyringController": [],
  "AddressBookController": [],
  "ApprovalController": [],
  "CurrencyRateController": [
    "NetworkController"
  ],
  "PhishingController": [],
  "AnnouncementController": [],
  "GasFeeController": [
    "NetworkController"
  ],
  "TokenListController": [
    "NetworkController"
  ],
  "TokensController": [
    "PreferencesController",
    "NetworkController"
  ],
  "TokenRatesController": [
    "TokensController",
    "CurrencyRateController",
    "NetworkController"
  ],
  "CollectiblesController": [
    "CurrencyRateController",
    "NetworkController",
    "AssetsContractController"
  ],
  "AssetsContractController": [
    "PreferencesController",
    "NetworkController"
  ],
  "CollectibleDetectionController": [
    "CollectiblesController",
    "PreferencesController",
    "NetworkController",
    "AssetsContractController"
  ],
  "PermissionController": [
    "KeyringController",
    "ApprovalController"
  ],
  "SubjectMetadataController": [],
  "RateLimitController": [],
  "NotificationController": [],
  "SmartTransactionsController": [
    "NetworkController",
    "MetaMetricsController",
    "TransactionController"
  ],
  "EnsController": [
    "NetworkController"
  ],
  "NetworkController": [],
  "PreferencesController": [
    "NetworkController"
  ],
  "AppStateController": [
    "PreferencesController"
  ],
  "CachedBalancesController": [
    "NetworkController"
  ],
  "AlertController": [
    "PreferencesController"
  ],
  "OnboardingController": [],
  "ThreeBoxController": [
    "PreferencesController",
    "AddressBookController",
    "KeyringController",
    "MetaMetricsController"
  ],
  "IncomingTransactionsController": [
    "PreferencesController",
    "NetworkController"
  ],
  "TransactionController": [
    "PreferencesController",
    "NetworkController",
    "KeyringController",
    "MetaMetricsController",
    "AssetsContractController"
  ],
  "DetectTokensController": [
    "PreferencesController",
    "NetworkController",
    "TokensController",
    "AssetsContractController",
    "KeyringController",
    "MetaMetricsController",
    "TokenListController"
  ],
  "SwapsController": [
    "NetworkController",
    "TokenRatesController",
    "TransactionController",
    "GasFeeController"
  ],
  "MetaMetricsController": [
    "PreferencesController",
    "NetworkController"
  ],
  "PermissionLogController": []
}

Notes on Implementation

This graph was generated from a .csv export of a Google Sheet where someone (maybe @Gudahtt or @mcmire) had manually mapped out the dependency relationships of our controllers. The graph was converted from the raw CSV file into the above JSON representation, which was then converted into Mermaid format. No dependencies were used.

@NadBTC
Copy link

NadBTC commented Feb 14, 2024

1H2MXWiSniAgg7ykdXEzPHL6oTH1ic4kP
1H2MXWiSniAgg7ykdXEzPHL6oTH1ic4kP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment