Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c2462fe
feat: add `@metamask/user-profile-controller` package
mikesposito Nov 19, 2025
d2a5749
fix lint
mikesposito Nov 19, 2025
747f8f7
update changelog
mikesposito Nov 19, 2025
faf10e1
fix lint
mikesposito Nov 19, 2025
be1657f
fix `tsconfig.build.json` package reference
mikesposito Nov 19, 2025
52533b6
update `package.json` scripts
mikesposito Nov 19, 2025
88a8bad
update CODEOWNERS and `teams.json`
mikesposito Nov 20, 2025
ef4d1f4
Merge branch 'main' into mikesposito/user-profile-controller
mikesposito Nov 24, 2025
7dd08f1
Merge branch 'main' into mikesposito/user-profile-controller
mikesposito Nov 25, 2025
bed1d76
bump `@metamask/controller-utils` version
mikesposito Nov 25, 2025
1a62e43
update `UserProfileService`
mikesposito Nov 25, 2025
e79be3d
remove `UserProfileController`
mikesposito Nov 25, 2025
dc75b74
add references to tsconfig
mikesposito Nov 25, 2025
07d807c
fix build
mikesposito Nov 25, 2025
48d8093
Merge branch 'main' into mikesposito/user-profile-controller
mikesposito Nov 25, 2025
6b07563
fix changelog package scripts
mikesposito Nov 25, 2025
216dfb8
fix test `describe` title
mikesposito Nov 25, 2025
123b5e4
update api request object
mikesposito Nov 25, 2025
52bfdd7
add `AccountWithScopes` type
mikesposito Nov 25, 2025
c921e73
rename to `profile-metrics-controller`
mikesposito Nov 25, 2025
1023863
remove `user-profile-controller` references
mikesposito Nov 25, 2025
21a1987
rename package in CODEOWNERS
mikesposito Nov 25, 2025
db0fc52
revert tsconfig files changes
mikesposito Nov 25, 2025
805a8ad
fix `tsconfig.json`
mikesposito Nov 25, 2025
4521338
run `yarn update-readme-content`
mikesposito Nov 26, 2025
f33b668
rename `updateProfile` to `submitMetrics`
mikesposito Nov 26, 2025
6075bdd
use `Env` from `profile-sync-controller`
mikesposito Nov 26, 2025
820df03
fix url path
mikesposito Nov 26, 2025
5bc1f21
rename `ProfileMetricsSubmitRequest` to `ProfileMetricsSubmitMetricsR…
mikesposito Nov 26, 2025
274982b
Merge branch 'main' into mikesposito/user-profile-controller
mikesposito Nov 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
/packages/polling-controller @MetaMask/core-platform
/packages/preferences-controller @MetaMask/core-platform
/packages/rate-limit-controller @MetaMask/core-platform
/packages/profile-metrics-controller @MetaMask/core-platform

## Web3Auth Team
/packages/seedless-onboarding-controller @MetaMask/web3auth
Expand Down
114 changes: 64 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Each package in this repository has its own README where you can find installati
- [`@metamask/phishing-controller`](packages/phishing-controller)
- [`@metamask/polling-controller`](packages/polling-controller)
- [`@metamask/preferences-controller`](packages/preferences-controller)
- [`@metamask/profile-metrics-controller`](packages/profile-metrics-controller)
- [`@metamask/profile-sync-controller`](packages/profile-sync-controller)
- [`@metamask/rate-limit-controller`](packages/rate-limit-controller)
- [`@metamask/remote-feature-flag-controller`](packages/remote-feature-flag-controller)
Expand Down Expand Up @@ -140,6 +141,7 @@ linkStyle default opacity:0.5
phishing_controller(["@metamask/phishing-controller"]);
polling_controller(["@metamask/polling-controller"]);
preferences_controller(["@metamask/preferences-controller"]);
profile_metrics_controller(["@metamask/profile-metrics-controller"]);
profile_sync_controller(["@metamask/profile-sync-controller"]);
rate_limit_controller(["@metamask/rate-limit-controller"]);
remote_feature_flag_controller(["@metamask/remote-feature-flag-controller"]);
Expand All @@ -153,85 +155,90 @@ linkStyle default opacity:0.5
transaction_controller(["@metamask/transaction-controller"]);
transaction_pay_controller(["@metamask/transaction-pay-controller"]);
user_operation_controller(["@metamask/user-operation-controller"]);
account_tree_controller --> base_controller;
account_tree_controller --> messenger;
account_tree_controller --> accounts_controller;
account_tree_controller --> base_controller;
account_tree_controller --> keyring_controller;
account_tree_controller --> messenger;
account_tree_controller --> multichain_account_service;
account_tree_controller --> profile_sync_controller;
accounts_controller --> base_controller;
accounts_controller --> messenger;
accounts_controller --> controller_utils;
accounts_controller --> keyring_controller;
accounts_controller --> messenger;
accounts_controller --> network_controller;
accounts_controller --> controller_utils;
address_book_controller --> base_controller;
address_book_controller --> controller_utils;
address_book_controller --> messenger;
analytics_controller --> base_controller;
analytics_controller --> messenger;
announcement_controller --> base_controller;
announcement_controller --> messenger;
app_metadata_controller --> base_controller;
app_metadata_controller --> messenger;
approval_controller --> base_controller;
approval_controller --> messenger;
assets_controllers --> base_controller;
assets_controllers --> controller_utils;
assets_controllers --> messenger;
assets_controllers --> polling_controller;
assets_controllers --> account_tree_controller;
assets_controllers --> accounts_controller;
assets_controllers --> approval_controller;
assets_controllers --> base_controller;
assets_controllers --> controller_utils;
assets_controllers --> core_backend;
assets_controllers --> keyring_controller;
assets_controllers --> messenger;
assets_controllers --> multichain_account_service;
assets_controllers --> network_controller;
assets_controllers --> permission_controller;
assets_controllers --> phishing_controller;
assets_controllers --> polling_controller;
assets_controllers --> preferences_controller;
assets_controllers --> profile_sync_controller;
assets_controllers --> transaction_controller;
base_controller --> messenger;
base_controller --> json_rpc_engine;
bridge_controller --> accounts_controller;
bridge_controller --> assets_controllers;
bridge_controller --> base_controller;
bridge_controller --> controller_utils;
bridge_controller --> gas_fee_controller;
bridge_controller --> messenger;
bridge_controller --> multichain_network_controller;
bridge_controller --> polling_controller;
bridge_controller --> accounts_controller;
bridge_controller --> assets_controllers;
bridge_controller --> eth_json_rpc_provider;
bridge_controller --> network_controller;
bridge_controller --> polling_controller;
bridge_controller --> remote_feature_flag_controller;
bridge_controller --> transaction_controller;
bridge_status_controller --> base_controller;
bridge_status_controller --> controller_utils;
bridge_status_controller --> polling_controller;
bridge_controller --> eth_json_rpc_provider;
bridge_status_controller --> accounts_controller;
bridge_status_controller --> base_controller;
bridge_status_controller --> bridge_controller;
bridge_status_controller --> controller_utils;
bridge_status_controller --> gas_fee_controller;
bridge_status_controller --> network_controller;
bridge_status_controller --> polling_controller;
bridge_status_controller --> transaction_controller;
chain_agnostic_permission --> controller_utils;
chain_agnostic_permission --> network_controller;
chain_agnostic_permission --> permission_controller;
claims_controller --> base_controller;
claims_controller --> controller_utils;
claims_controller --> messenger;
claims_controller --> keyring_controller;
claims_controller --> profile_sync_controller;
composable_controller --> base_controller;
composable_controller --> messenger;
composable_controller --> json_rpc_engine;
core_backend --> accounts_controller;
core_backend --> controller_utils;
core_backend --> keyring_controller;
core_backend --> messenger;
core_backend --> profile_sync_controller;
core_backend --> accounts_controller;
core_backend --> keyring_controller;
delegation_controller --> base_controller;
delegation_controller --> messenger;
delegation_controller --> accounts_controller;
delegation_controller --> base_controller;
delegation_controller --> keyring_controller;
delegation_controller --> messenger;
earn_controller --> account_tree_controller;
earn_controller --> base_controller;
earn_controller --> controller_utils;
earn_controller --> messenger;
earn_controller --> account_tree_controller;
earn_controller --> network_controller;
earn_controller --> transaction_controller;
eip_5792_middleware --> messenger;
Expand All @@ -253,15 +260,17 @@ linkStyle default opacity:0.5
eth_json_rpc_middleware --> eth_block_tracker;
eth_json_rpc_middleware --> eth_json_rpc_provider;
eth_json_rpc_middleware --> json_rpc_engine;
eth_json_rpc_middleware --> message_manager;
eth_json_rpc_middleware --> error_reporting_service;
eth_json_rpc_middleware --> network_controller;
eth_json_rpc_provider --> json_rpc_engine;
gas_fee_controller --> base_controller;
gas_fee_controller --> controller_utils;
gas_fee_controller --> polling_controller;
gas_fee_controller --> network_controller;
gas_fee_controller --> polling_controller;
gator_permissions_controller --> base_controller;
gator_permissions_controller --> messenger;
gator_permissions_controller --> transaction_controller;
json_rpc_middleware_stream --> json_rpc_engine;
keyring_controller --> base_controller;
keyring_controller --> messenger;
Expand All @@ -271,38 +280,39 @@ linkStyle default opacity:0.5
message_manager --> base_controller;
message_manager --> controller_utils;
message_manager --> messenger;
multichain_account_service --> base_controller;
multichain_account_service --> messenger;
multichain_account_service --> accounts_controller;
multichain_account_service --> base_controller;
multichain_account_service --> error_reporting_service;
multichain_account_service --> keyring_controller;
multichain_account_service --> messenger;
multichain_api_middleware --> chain_agnostic_permission;
multichain_api_middleware --> controller_utils;
multichain_api_middleware --> json_rpc_engine;
multichain_api_middleware --> network_controller;
multichain_api_middleware --> permission_controller;
multichain_api_middleware --> multichain_transactions_controller;
multichain_network_controller --> accounts_controller;
multichain_network_controller --> base_controller;
multichain_network_controller --> controller_utils;
multichain_network_controller --> messenger;
multichain_network_controller --> accounts_controller;
multichain_network_controller --> keyring_controller;
multichain_network_controller --> network_controller;
multichain_network_controller --> keyring_controller;
multichain_transactions_controller --> accounts_controller;
multichain_transactions_controller --> base_controller;
multichain_transactions_controller --> messenger;
multichain_transactions_controller --> polling_controller;
multichain_transactions_controller --> accounts_controller;
multichain_transactions_controller --> keyring_controller;
name_controller --> base_controller;
name_controller --> controller_utils;
name_controller --> messenger;
network_controller --> base_controller;
network_controller --> controller_utils;
network_controller --> error_reporting_service;
network_controller --> eth_block_tracker;
network_controller --> eth_json_rpc_middleware;
network_controller --> eth_json_rpc_provider;
network_controller --> json_rpc_engine;
network_controller --> messenger;
network_controller --> error_reporting_service;
network_enablement_controller --> base_controller;
network_enablement_controller --> controller_utils;
network_enablement_controller --> messenger;
Expand All @@ -311,14 +321,14 @@ linkStyle default opacity:0.5
network_enablement_controller --> transaction_controller;
notification_services_controller --> base_controller;
notification_services_controller --> controller_utils;
notification_services_controller --> messenger;
notification_services_controller --> keyring_controller;
notification_services_controller --> messenger;
notification_services_controller --> profile_sync_controller;
permission_controller --> approval_controller;
permission_controller --> base_controller;
permission_controller --> controller_utils;
permission_controller --> json_rpc_engine;
permission_controller --> messenger;
permission_controller --> approval_controller;
permission_log_controller --> base_controller;
permission_log_controller --> json_rpc_engine;
permission_log_controller --> messenger;
Expand All @@ -331,24 +341,28 @@ linkStyle default opacity:0.5
polling_controller --> network_controller;
preferences_controller --> base_controller;
preferences_controller --> controller_utils;
preferences_controller --> messenger;
preferences_controller --> keyring_controller;
profile_sync_controller --> base_controller;
profile_sync_controller --> messenger;
preferences_controller --> messenger;
profile_metrics_controller --> base_controller;
profile_metrics_controller --> controller_utils;
profile_metrics_controller --> messenger;
profile_metrics_controller --> profile_sync_controller;
profile_sync_controller --> address_book_controller;
profile_sync_controller --> base_controller;
profile_sync_controller --> keyring_controller;
profile_sync_controller --> messenger;
rate_limit_controller --> base_controller;
rate_limit_controller --> messenger;
remote_feature_flag_controller --> base_controller;
remote_feature_flag_controller --> controller_utils;
remote_feature_flag_controller --> messenger;
sample_controllers --> base_controller;
sample_controllers --> messenger;
sample_controllers --> controller_utils;
sample_controllers --> network_controller;
sample_controllers --> controller_utils;
seedless_onboarding_controller --> base_controller;
seedless_onboarding_controller --> messenger;
seedless_onboarding_controller --> keyring_controller;
seedless_onboarding_controller --> messenger;
selected_network_controller --> base_controller;
selected_network_controller --> json_rpc_engine;
selected_network_controller --> messenger;
Expand All @@ -359,53 +373,53 @@ linkStyle default opacity:0.5
shield_controller --> messenger;
shield_controller --> signature_controller;
shield_controller --> transaction_controller;
signature_controller --> base_controller;
signature_controller --> controller_utils;
signature_controller --> messenger;
signature_controller --> accounts_controller;
signature_controller --> approval_controller;
signature_controller --> base_controller;
signature_controller --> controller_utils;
signature_controller --> gator_permissions_controller;
signature_controller --> keyring_controller;
signature_controller --> logging_controller;
signature_controller --> messenger;
signature_controller --> network_controller;
subscription_controller --> base_controller;
subscription_controller --> controller_utils;
subscription_controller --> messenger;
subscription_controller --> polling_controller;
subscription_controller --> transaction_controller;
subscription_controller --> profile_sync_controller;
subscription_controller --> transaction_controller;
token_search_discovery_controller --> base_controller;
token_search_discovery_controller --> messenger;
transaction_controller --> base_controller;
transaction_controller --> controller_utils;
transaction_controller --> messenger;
transaction_controller --> accounts_controller;
transaction_controller --> approval_controller;
transaction_controller --> eth_block_tracker;
transaction_controller --> eth_json_rpc_provider;
transaction_controller --> base_controller;
transaction_controller --> controller_utils;
transaction_controller --> gas_fee_controller;
transaction_controller --> messenger;
transaction_controller --> network_controller;
transaction_controller --> remote_feature_flag_controller;
transaction_pay_controller --> base_controller;
transaction_pay_controller --> controller_utils;
transaction_pay_controller --> messenger;
transaction_controller --> eth_block_tracker;
transaction_controller --> eth_json_rpc_provider;
transaction_pay_controller --> assets_controllers;
transaction_pay_controller --> base_controller;
transaction_pay_controller --> bridge_controller;
transaction_pay_controller --> bridge_status_controller;
transaction_pay_controller --> controller_utils;
transaction_pay_controller --> gas_fee_controller;
transaction_pay_controller --> messenger;
transaction_pay_controller --> network_controller;
transaction_pay_controller --> remote_feature_flag_controller;
transaction_pay_controller --> transaction_controller;
user_operation_controller --> approval_controller;
user_operation_controller --> base_controller;
user_operation_controller --> controller_utils;
user_operation_controller --> messenger;
user_operation_controller --> polling_controller;
user_operation_controller --> approval_controller;
user_operation_controller --> eth_block_tracker;
user_operation_controller --> gas_fee_controller;
user_operation_controller --> keyring_controller;
user_operation_controller --> messenger;
user_operation_controller --> network_controller;
user_operation_controller --> polling_controller;
user_operation_controller --> transaction_controller;
user_operation_controller --> eth_block_tracker;
```

<!-- end dependency graph -->
Expand Down
14 changes: 14 additions & 0 deletions packages/profile-metrics-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

- Initial release ([#7194](https://github.com/MetaMask/core/pull/7194))

[Unreleased]: https://github.com/MetaMask/core/
20 changes: 20 additions & 0 deletions packages/profile-metrics-controller/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
MIT License

Copyright (c) 2025 MetaMask

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
13 changes: 13 additions & 0 deletions packages/profile-metrics-controller/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# `@metamask/profile-metrics-controller`

## Installation

`yarn add @metamask/profile-metrics-controller`

or

`npm install @metamask/profile-metrics-controller`

## Contributing

This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/core#readme).
26 changes: 26 additions & 0 deletions packages/profile-metrics-controller/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* For a detailed explanation regarding each configuration property and type check, visit:
* https://jestjs.io/docs/configuration
*/

const merge = require('deepmerge');
const path = require('path');

const baseConfig = require('../../jest.config.packages');

const displayName = path.basename(__dirname);

module.exports = merge(baseConfig, {
// The display name when running multiple projects
displayName,

// An object that configures minimum threshold enforcement for coverage results
coverageThreshold: {
global: {
branches: 100,
functions: 100,
lines: 100,
statements: 100,
},
},
});
Loading
Loading