MetaMask Extension Controller Dependencies
November 17, 2022 ยท View on GitHub
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
{
"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.