Skip to content

Commit

Permalink
Merge branch 'devin/typography-signature' of https://github.com/Devin…
Browse files Browse the repository at this point in the history
…-Applications/metamask-extension-devin into devin/typography-signature
  • Loading branch information
devin-ai-integration[bot] committed Jun 27, 2024
2 parents 91e0cd6 + d125175 commit f207f29
Show file tree
Hide file tree
Showing 611 changed files with 25,595 additions and 9,610 deletions.
160 changes: 97 additions & 63 deletions .circleci/config.yml

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions .depcheckrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ ignores:
- 'wait-on'
- 'tsx' # used in .devcontainer
- 'prettier-eslint' # used by the Prettier ESLint VSCode extension
# development tool
- 'nyc'
# storybook
- '@storybook/cli'
- '@storybook/core'
Expand Down
34 changes: 8 additions & 26 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,7 @@ module.exports = {
'development/**/*.js',
'test/e2e/**/*.js',
'test/helpers/*.js',
'test/lib/wait-until-called.js',
'test/run-unit-tests.js',
'test/merge-coverage.js',
],
extends: [
path.resolve(__dirname, '.eslintrc.base.js'),
Expand Down Expand Up @@ -94,8 +92,6 @@ module.exports = {
'test/stub/**/*.js',
'test/unit-global/**/*.js',
],
// TODO: Convert these files to modern JS
excludedFiles: ['test/lib/wait-until-called.js'],
extends: [
path.resolve(__dirname, '.eslintrc.base.js'),
path.resolve(__dirname, '.eslintrc.node.js'),
Expand Down Expand Up @@ -261,26 +257,7 @@ module.exports = {
* Mocha library.
*/
{
files: [
'**/*.test.js',
'test/lib/wait-until-called.js',
'test/e2e/**/*.spec.js',
],
excludedFiles: [
'app/scripts/controllers/app-state.test.js',
'app/scripts/controllers/mmi-controller.test.js',
'app/scripts/controllers/permissions/**/*.test.js',
'app/scripts/controllers/preferences.test.js',
'app/scripts/lib/**/*.test.js',
'app/scripts/metamask-controller.test.js',
'app/scripts/migrations/*.test.js',
'app/scripts/platforms/*.test.js',
'development/**/*.test.js',
'shared/**/*.test.js',
'ui/**/*.test.js',
'ui/__mocks__/*.js',
'test/e2e/helpers.test.js',
],
files: ['test/e2e/**/*.spec.js', 'test/unit-global/*.test.js'],
extends: ['@metamask/eslint-config-mocha'],
rules: {
// In Mocha tests, it is common to use `this` to store values or do
Expand All @@ -293,13 +270,19 @@ module.exports = {
* Jest tests
*
* These are files that make use of globals and syntax introduced by the
* Jest library. The files in this section should match the Mocha excludedFiles section.
* Jest library.
* TODO: This list of files is incomplete, and should be replaced with globs that match the
* Jest config.
*/
{
files: [
'**/__snapshots__/*.snap',
'app/scripts/controllers/app-state.test.js',
'app/scripts/controllers/mmi-controller.test.ts',
'app/scripts/metamask-controller.actions.test.js',
'app/scripts/detect-multiple-instances.test.js',
'app/scripts/controllers/swaps.test.js',
'app/scripts/controllers/metametrics.test.js',
'app/scripts/controllers/permissions/**/*.test.js',
'app/scripts/controllers/preferences.test.js',
'app/scripts/lib/**/*.test.js',
Expand Down Expand Up @@ -383,7 +366,6 @@ module.exports = {
'test/e2e/benchmark.js',
'test/helpers/setup-helper.js',
'test/run-unit-tests.js',
'test/merge-coverage.js',
],
rules: {
'node/no-process-exit': 'off',
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ contact_links:
url: https://community.metamask.io/c/feature-requests-ideas/
about: Request new features and vote on the ones that are important to you
- name: Get support or ask a question
url: https://metamask.zendesk.com/hc/en-us
url: https://support.metamask.io/
about: Use the MetaMask support system to get help and ask questions
89 changes: 89 additions & 0 deletions .github/scripts/add-team-label-to-pr.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import * as core from '@actions/core';
import { context, getOctokit } from '@actions/github';
import { GitHub } from '@actions/github/lib/utils';

import { retrieveLabel } from './shared/label';
import { Labelable, addLabelByIdToLabelable } from './shared/labelable';
import { retrievePullRequest } from './shared/pull-request';

main().catch((error: Error): void => {
console.error(error);
process.exit(1);
});

async function main(): Promise<void> {
// "GITHUB_TOKEN" is an automatically generated, repository-specific access token provided by GitHub Actions.
// We can't use "GITHUB_TOKEN" here, as its permissions are scoped to the repository where the action is running.
// "GITHUB_TOKEN" does not have access to other repositories, even when they belong to the same organization.
// As we want to get files which are not necessarily located in the same repository,
// we need to create our own "RELEASE_LABEL_TOKEN" with "repo" permissions.
// Such a token allows to access other repositories of the MetaMask organisation.
const personalAccessToken = process.env.RELEASE_LABEL_TOKEN;
if (!personalAccessToken) {
core.setFailed('RELEASE_LABEL_TOKEN not found');
process.exit(1);
}

// Initialise octokit, required to call Github GraphQL API
const octokit: InstanceType<typeof GitHub> = getOctokit(personalAccessToken, {
previews: ['bane'], // The "bane" preview is required for adding, updating, creating and deleting labels.
});

// Retrieve pull request info from context
const pullRequestRepoOwner = context.repo.owner;
const pullRequestRepoName = context.repo.repo;
const pullRequestNumber = context.payload.pull_request?.number;
if (!pullRequestNumber) {
core.setFailed('Pull request number not found');
process.exit(1);
}

// Retrieve pull request
const pullRequest: Labelable = await retrievePullRequest(
octokit,
pullRequestRepoOwner,
pullRequestRepoName,
pullRequestNumber,
);

// Get the team label id based on the author of the pull request
const teamLabelId = await getTeamLabelIdByAuthor(
octokit,
pullRequestRepoOwner,
pullRequestRepoName,
pullRequest.author,
);

// Add the team label by id to the pull request
await addLabelByIdToLabelable(octokit, pullRequest, teamLabelId);
}

// This helper function gets the team label id based on the author of the pull request
const getTeamLabelIdByAuthor = async (
octokit: InstanceType<typeof GitHub>,
repoOwner: string,
repoName: string,
author: string,
): Promise<string> => {
// Retrieve the teams.json file from the repository
const { data } = (await octokit.request(
'GET /repos/{owner}/{repo}/contents/{path}',
{ owner: repoOwner, repo: 'MetaMask-planning', path: 'teams.json' },
)) as { data: { content: string } };

// Parse the teams.json file content to json from base64
const teamMembers: Record<string, string> = JSON.parse(atob(data.content));

// Get the label name based on the author
const labelName = teamMembers[author];

if (!labelName) {
core.setFailed(`Team label not found for author: ${author}`);
process.exit(1);
}

// Retrieve the label id based on the label name
const labelId = await retrieveLabel(octokit, repoOwner, repoName, labelName);

return labelId;
};
2 changes: 1 addition & 1 deletion .github/scripts/shared/label.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ async function createLabel(
}

// This function retrieves the label on a specific repo
async function retrieveLabel(
export async function retrieveLabel(
octokit: InstanceType<typeof GitHub>,
repoOwner: string,
repoName: string,
Expand Down
23 changes: 16 additions & 7 deletions .github/scripts/shared/labelable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ export interface Labelable {
export function findLabel(
labelable: Labelable,
labelToFind: Label,
): {
id: string;
name: string;
} | undefined {
):
| {
id: string;
name: string;
}
| undefined {
// Check if label is present on labelable
return labelable.labels.find(
(label) => label.name === labelToFind.name,
);
return labelable.labels.find((label) => label.name === labelToFind.name);
}

// This function adds label to a labelable object (i.e. a pull request or an issue)
Expand All @@ -51,6 +51,15 @@ export async function addLabelToLabelable(
label,
);

await addLabelByIdToLabelable(octokit, labelable, labelId);
}

// This function adds label by id to a labelable object (i.e. a pull request or an issue)
export async function addLabelByIdToLabelable(
octokit: InstanceType<typeof GitHub>,
labelable: Labelable,
labelId: string,
): Promise<void> {
const addLabelsToLabelableMutation = `
mutation AddLabelsToLabelable($labelableId: ID!, $labelIds: [ID!]!) {
addLabelsToLabelable(input: {labelableId: $labelableId, labelIds: $labelIds}) {
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/add-team-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Add team label to PR when it is opened

on:
pull_request:
types:
- opened

jobs:
add-team-label:
runs-on: ubuntu-latest
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'

- run: corepack enable

- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # This is needed to checkout all branches

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: yarn

- name: Install dependencies
run: yarn --immutable

- name: Add team label to PR
id: add-team-label-to-pr
env:
RELEASE_LABEL_TOKEN: ${{ secrets.RELEASE_LABEL_TOKEN }}
run: yarn run add-team-label-to-pr
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,14 @@ test-results/
# This file is used to authenticate with the GitHub Package registry, to
# enable the use of @metamask preview builds.
.npmrc
#yarn

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
**/.yarn/*
development/generate-attributions/.yarn/*

# MMI Playwright
public/playwright
Expand All @@ -74,3 +75,7 @@ lavamoat/**/policy-debug.json

# Attributions
licenseInfos.json

# API Spec tests
html-report/

13 changes: 0 additions & 13 deletions .mocharc.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,6 @@
module.exports = {
// TODO: Remove the `exit` setting, it can hide broken tests.
exit: true,
ignore: [
'./app/scripts/lib/**/*.test.js',
'./app/scripts/migrations/*.test.js',
'./app/scripts/platforms/*.test.js',
'./app/scripts/controllers/app-state.test.js',
'./app/scripts/controllers/permissions/**/*.test.js',
'./app/scripts/controllers/mmi-controller.test.ts',
'./app/scripts/controllers/preferences.test.js',
'./app/scripts/constants/error-utils.test.js',
'./app/scripts/metamask-controller.test.js',
'./development/fitness-functions/**/*.test.ts',
'./test/e2e/helpers.test.js',
],
recursive: true,
require: ['test/env.js', 'test/setup.js'],
};
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v20
v20.14
3 changes: 3 additions & 0 deletions .storybook/images/icons/info.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions .storybook/images/icons/question.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions .storybook/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ module.exports = {
'@storybook/addon-designs',
],
staticDirs: ['../app', './images'],
env: (config) => ({
...config,
ENABLE_CONFIRMATION_REDESIGN: true,
}),
// Uses babel.config.js settings and prevents "Missing class properties transform" error
babel: async (options) => ({
overrides: options.overrides,
Expand Down
Loading

0 comments on commit f207f29

Please sign in to comment.