Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version v12.7.1 RC #28498

Merged
merged 11 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
77 changes: 29 additions & 48 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ aliases:
cat ${HOME}/project/.circleci/scripts/enable-vnc.sh >> ~/.bashrc
fi

# Check if MMI Optional tests should run
- &check-mmi-optional
name: Check if MMI Optional tests should run
# Check if MMI tests should run
- &check-mmi-trigger
name: Check if MMI tests should run
command: |
RUN_MMI_OPTIONAL=$(cat ./RUN_MMI_OPTIONAL)
if [[ "${RUN_MMI_OPTIONAL}" == "true" ]]; then
echo "Running MMI Optional tests"
source mmi_trigger.env
if [ "${run_mmi_tests}" == "true" ]; then
echo "Running MMI tests"
else
echo "Skipping MMI Optional tests"
echo "Skipping MMI tests"
circleci step halt
fi

Expand All @@ -114,7 +114,7 @@ workflows:
- trigger-beta-build:
requires:
- prep-deps
- check-pr-tag
- check-mmi-trigger
- prep-deps
- get-changed-files-with-git-diff:
filters:
Expand Down Expand Up @@ -179,7 +179,7 @@ workflows:
- prep-build-test-mmi-playwright:
requires:
- prep-deps
- check-pr-tag
- check-mmi-trigger
- prep-build-storybook:
requires:
- prep-deps
Expand Down Expand Up @@ -231,7 +231,7 @@ workflows:
requires:
- prep-build-test-mmi
- get-changed-files-with-git-diff
- test-e2e-mmi-playwright - OPTIONAL:
- test-e2e-mmi-playwright:
requires:
- prep-build-test-mmi-playwright
- test-e2e-chrome-rpc-mmi:
Expand Down Expand Up @@ -421,39 +421,6 @@ jobs:
name: Create GitHub Pull Request for version
command: .circleci/scripts/release-create-release-pr.sh

check-pr-tag:
docker:
- image: cimg/base:stable
steps:
- run:
name: Check for MMI Team Tag
command: |
#!/bin/bash

GH_LABEL=team-mmi
if [ -z "$CIRCLE_PULL_REQUESTS" ]; then
echo "Skipping tag check; this is not a PR."
echo "false" > ./RUN_MMI_OPTIONAL
exit 0
fi

echo $CIRCLE_PULL_REQUESTS | sed 's/,/\n/g'

# See if any associated PRs have matching label
HAS_MATCHING_PR=$(echo $CIRCLE_PULL_REQUESTS \
| sed -e 's#,#\n#g' -e 's#/github.com/#/api.github.com/repos/#g' -e 's#/pull/#/pulls/#g' \
| xargs -n1 curl -s \
| jq -s "map((.labels|map(select(.name==\"${GH_LABEL}\"))))|flatten|length > 0")

echo "${GH_LABEL} tag presence: ${HAS_MATCHING_PR}"

# assign the RUN_MMI_OPTIONAL variable
echo "${HAS_MATCHING_PR}" > ./RUN_MMI_OPTIONAL
- persist_to_workspace:
root: .
paths:
- RUN_MMI_OPTIONAL

prep-deps:
executor: node-browsers-medium
steps:
Expand Down Expand Up @@ -839,7 +806,7 @@ jobs:
- run: corepack enable
- attach_workspace:
at: .
- run: *check-mmi-optional
- run: *check-mmi-trigger
- run:
name: Build MMI extension for Playwright e2e
command: |
Expand All @@ -854,7 +821,6 @@ jobs:
- persist_to_workspace:
root: .
paths:
- RUN_MMI_OPTIONAL
- dist-test-mmi-playwright
- builds-test-mmi-playwright
- store_artifacts:
Expand Down Expand Up @@ -993,7 +959,7 @@ jobs:
at: .
- run:
name: Install Playwright browsers
command: yarn exec playwright install
command: yarn exec playwright install chromium
- run:
name: Test Storybook
command: yarn test-storybook:ci
Expand Down Expand Up @@ -1306,15 +1272,15 @@ jobs:
- store_test_results:
path: test/test-results/e2e

test-e2e-mmi-playwright - OPTIONAL:
test-e2e-mmi-playwright:
executor: playwright
parallelism: 2
steps:
- run: *shallow-git-clone-and-enable-vnc
- run: corepack enable
- attach_workspace:
at: .
- run: *check-mmi-optional
- run: *check-mmi-trigger
- run:
name: Move test build to dist
command: mv ./dist-test-mmi-playwright ./dist
Expand Down Expand Up @@ -1743,3 +1709,18 @@ jobs:
- run:
name: All Tests Passed
command: echo 'whew - everything passed!'

check-mmi-trigger:
executor: node-browsers-medium
steps:
- checkout
- run:
name: Check for MMI Team Label or Reviewer
command: ./.circleci/scripts/check_mmi_trigger.sh
- store_artifacts:
path: mmi_trigger.env
destination: mmi_trigger.env
- persist_to_workspace:
root: .
paths:
- mmi_trigger.env
60 changes: 60 additions & 0 deletions .circleci/scripts/check_mmi_trigger.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash
set -eo pipefail

# Ensure required environment variables are set
if [ -z "$CIRCLE_PULL_REQUEST" ] || [ -z "$GITHUB_TOKEN" ]; then
echo "This appears to be a fork or required environment variables are not set."
echo "Skipping MMI tests."
echo "run_mmi_tests=false" > mmi_trigger.env
exit 0
fi

# Extract PR number from the pull request URL
PR_NUMBER=$(echo "$CIRCLE_PULL_REQUEST" | awk -F'/' '{print $NF}')

# Define repository details
REPO_OWNER="$CIRCLE_PROJECT_USERNAME"
REPO_NAME=$(basename "$CIRCLE_REPOSITORY_URL" .git)

# Fetch PR details using GitHub API
PR_DETAILS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/pulls/$PR_NUMBER")

# Fetch submitted reviews
SUBMITTED_REVIEWS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/pulls/$PR_NUMBER/reviews")

# Check for label 'team-mmi'
LABEL_EXISTS=$(jq -r '.labels[]? | select(.name == "team-mmi") | length > 0' <<< "$PR_DETAILS")

# Check for individual reviewer 'mmi'
REVIEWER_REQUESTED=$(jq -r '.requested_reviewers[]? | select(.login == "mmi") | length > 0' <<< "$PR_DETAILS")

# Check for team reviewer 'mmi'
TEAM_REQUESTED=$(jq -r '.requested_teams[]? | select(.slug == "mmi") | length > 0' <<< "$PR_DETAILS")

# Check if 'mmi' submitted a review
REVIEWER_SUBMITTED=$(jq -r '.[]? | select(.user.login == "mmi") | length > 0' <<< "$SUBMITTED_REVIEWS")

# Determine which condition was met and trigger tests if needed
if [[ "$LABEL_EXISTS" == "true" || "$REVIEWER_REQUESTED" == "true" || "$TEAM_REQUESTED" == "true" || "$REVIEWER_SUBMITTED" == "true" ]]; then
echo "run_mmi_tests=true" > mmi_trigger.env

# Log exactly which condition was met
echo "Conditions met:"
if [[ "$LABEL_EXISTS" == "true" ]]; then
echo "- Label 'team-mmi' found."
fi
if [[ "$REVIEWER_REQUESTED" == "true" ]]; then
echo "- Reviewer 'mmi' requested."
fi
if [[ "$TEAM_REQUESTED" == "true" ]]; then
echo "- Team 'mmi' requested."
fi
if [[ "$REVIEWER_SUBMITTED" == "true" ]]; then
echo "- Reviewer 'mmi' submitted a review."
fi
else
echo "run_mmi_tests=false" > mmi_trigger.env
echo "Skipping MMI tests: Neither the 'team-mmi' label was found nor a reviewer from the 'MetaMask/mmi' team was assigned."
fi
2 changes: 2 additions & 0 deletions .depcheckrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ ignores:
# trezor
- 'ts-mixer'
- '@testing-library/dom'
- 'mini-css-extract-plugin'
- 'webpack-cli'

# files depcheck should not parse
ignorePatterns:
Expand Down
7 changes: 6 additions & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,12 @@ privacy-snapshot.json @MetaMask/extension-privacy-reviewers
.devcontainer/ @MetaMask/library-admins @HowardBraham @plasmacorral

# Confirmations team to own code for confirmations on UI.
ui/pages/confirmations @MetaMask/confirmations
app/scripts/lib/ppom @MetaMask/confirmations
app/scripts/lib/signature @MetaMask/confirmations
app/scripts/lib/transaction/decode @MetaMask/confirmations
app/scripts/lib/transaction/metrics.* @MetaMask/confirmations
app/scripts/lib/transaction/util.* @MetaMask/confirmations
ui/pages/confirmations @MetaMask/confirmations

# MMI team is responsible for code related with Institutioanl version of MetaMask
ui/pages/institutional @MetaMask/mmi
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,6 @@ html-report/

/app/images/branding
/changed-files

# UI Integration tests
test/integration/config/assets
4 changes: 4 additions & 0 deletions .metamaskrc.dist
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
; This variable is required
INFURA_PROJECT_ID=00000000000

; This variable is not required but it's necessary for the storybook
; to render stories that use onchain data.
INFURA_STORYBOOK_PROJECT_ID=

;PASSWORD=METAMASK PASSWORD
;SEGMENT_WRITE_KEY=
;BRIDGE_USE_DEV_APIS=
Expand Down
19 changes: 12 additions & 7 deletions .storybook/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
const path = require('path');
const { ProvidePlugin } = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const dotenv = require('dotenv');
dotenv.config({ path: path.resolve(__dirname, '../.metamaskrc') });

module.exports = {
core: {
disableTelemetry: true,
Expand Down Expand Up @@ -29,6 +32,7 @@ module.exports = {
env: (config) => ({
...config,
ENABLE_CONFIRMATION_REDESIGN: true,
INFURA_PROJECT_ID: process.env.INFURA_STORYBOOK_PROJECT_ID || '',
}),
// Uses babel.config.js settings and prevents "Missing class properties transform" error
babel: async (options) => ({
Expand All @@ -48,10 +52,16 @@ module.exports = {
config.resolve.alias['../../../../../../store/actions'] = require.resolve(
'../ui/__mocks__/actions.js',
);
config.resolve.alias['../../../store/actions'] = require.resolve(
'../ui/__mocks__/actions.js',
);
// Import within controller-utils crashes storybook.
config.resolve.alias['@ethereumjs/util'] = require.resolve(
'../ui/__mocks__/ethereumjs-util.js',
);
config.resolve.alias['./useNftCollectionsMetadata'] = require.resolve(
'../ui/__mocks__/useNftCollectionsMetadata.js',
);
config.resolve.fallback = {
child_process: false,
constants: false,
Expand Down Expand Up @@ -86,7 +96,7 @@ module.exports = {
sourceMap: true,
implementation: require('sass-embedded'),
sassOptions: {
includePaths: ['ui/css/', 'node_modules/',],
includePaths: ['ui/css/', 'node_modules/'],
},
},
},
Expand All @@ -96,12 +106,7 @@ module.exports = {
new CopyWebpackPlugin({
patterns: [
{
from: path.join(
'ui',
'css',
'utilities',
'fonts/',
),
from: path.join('ui', 'css', 'utilities', 'fonts/'),
to: 'fonts',
},
{
Expand Down
1 change: 1 addition & 0 deletions .storybook/test-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -1596,6 +1596,7 @@ const state = {
},
},
},
openSeaEnabled: true,
},
appState: {
shouldClose: false,
Expand Down
12 changes: 0 additions & 12 deletions .yarn/patches/@babel-core-npm-7.23.2-b93f586907.patch

This file was deleted.

12 changes: 12 additions & 0 deletions .yarn/patches/@babel-core-npm-7.25.9-4ae3bff7f3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff --git a/lib/index.js b/lib/index.js
index 55b58e10eef589ff80ae33ebd1f1efe488b01153..e919c190d33ab9563f1364667fb4f5894bb6435d 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -211,7 +211,6 @@ var _transform = require("./transform.js");
var _transformFile = require("./transform-file.js");
var _transformAst = require("./transform-ast.js");
var _parse = require("./parse.js");
-var thisFile = require("./index.js");
;
const version = exports.version = "7.25.9";
const resolvePlugin = (name, dirname) => resolvers.resolvePlugin(name, dirname, false).filepath;
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
diff --git a/helpers/construct.js b/helpers/construct.js
index 771e1d7952e80f11619424fbabb3744b959ffa49..5fe152bc1129bd8c8b7bb217ca1972ac4e089051 100644
index aee8e70448824f509d6605e2dfa4455167442f21..00a69eba8d4c15a1f9aa318a50abb96c2ec447d9 100644
--- a/helpers/construct.js
+++ b/helpers/construct.js
@@ -1,10 +1,21 @@
@@ -1,10 +1,22 @@
var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
-var setPrototypeOf = require("./setPrototypeOf.js");
-var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
-function _construct(t, e, r) {
- if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
- var o = [null];
Expand Down
26 changes: 26 additions & 0 deletions .yarn/patches/@metamask-snaps-utils-npm-8.4.1-90481bac4b.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
diff --git a/dist/json-rpc.cjs b/dist/json-rpc.cjs
index 6061f7b8b42f0521b0718d616e5a12a1a7520068..11d0233a7bd4b610a99da6a3d105840e88e108e6 100644
--- a/dist/json-rpc.cjs
+++ b/dist/json-rpc.cjs
@@ -68,7 +68,7 @@ function createOriginRegExp(matcher) {
const escaped = matcher.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
// Support wildcards
const regex = escaped.replace(/\\\*/gu, '.*');
- return RegExp(`${regex}$`, 'u');
+ return RegExp(`^${regex}$`, 'u');
}
/**
* Check whether an origin is allowed or not using a matcher string.
diff --git a/dist/json-rpc.mjs b/dist/json-rpc.mjs
index bfa1c2dbbed46a2221ef708afdb97b15db84bc1b..81bc2150cf5d6a9bdabe8d43b04352b299bc1c4d 100644
--- a/dist/json-rpc.mjs
+++ b/dist/json-rpc.mjs
@@ -63,7 +63,7 @@ function createOriginRegExp(matcher) {
const escaped = matcher.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
// Support wildcards
const regex = escaped.replace(/\\\*/gu, '.*');
- return RegExp(`${regex}$`, 'u');
+ return RegExp(`^${regex}$`, 'u');
}
/**
* Check whether an origin is allowed or not using a matcher string.
Loading
Loading