From d9ab885c3d92ab5e2e46d6fb9c38b9e69c344091 Mon Sep 17 00:00:00 2001 From: keyonghan <54558023+keyonghan@users.noreply.github.com> Date: Fri, 15 Dec 2023 13:17:05 -0800 Subject: [PATCH 01/34] Flag stale PRs for engine to framework roller (#3338) Following up of https://github.com/flutter/cocoon/pull/3332/files#r1423217355 This PR does: 1) supports engine to framework roller 2) change stale logic to focus on `queued` status. There are cases where GitHub check runs have finished a while ago, and we do not want to trigger alerts for them. --- .../lib/validations/ci_successful.dart | 26 ++++++++++---- .../test/validations/ci_successful_test.dart | 36 +++++++++++++++++-- 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/auto_submit/lib/validations/ci_successful.dart b/auto_submit/lib/validations/ci_successful.dart index 86197db14..27f8c8774 100644 --- a/auto_submit/lib/validations/ci_successful.dart +++ b/auto_submit/lib/validations/ci_successful.dart @@ -146,7 +146,7 @@ class CiSuccessful extends Validation { final String? name = status.context; // If the account author is a roller account do not block merge on flutter-gold check. - if (isEngineRoller(author, slug) && name == 'flutter-gold') { + if (isToEngineRoller(author, slug) && name == 'flutter-gold') { log.info('Skipping status check for flutter-gold for ${slug.fullName}/$prNumber, pr author: $author.'); continue; } @@ -159,7 +159,7 @@ class CiSuccessful extends Validation { if (status.state == STATUS_FAILURE && !notInAuthorsControl.contains(name)) { failures.add(FailureDetail(name!, status.targetUrl!)); } - if (status.state == STATUS_PENDING && isStale(status.createdAt!) && isEngineRoller(author, slug)) { + if (status.state == STATUS_PENDING && isStale(status.createdAt!) && supportStale(author, slug)) { staleStatuses.add(status); } } @@ -191,10 +191,6 @@ class CiSuccessful extends Validation { for (github.CheckRun checkRun in checkRuns) { final String? name = checkRun.name; - if (isStale(checkRun.startedAt) && isEngineRoller(author, slug)) { - staleCheckRuns.add(checkRun); - } - if (checkRun.conclusion == github.CheckRunConclusion.skipped || checkRun.conclusion == github.CheckRunConclusion.success || (checkRun.status == github.CheckRunStatus.completed && @@ -205,6 +201,10 @@ class CiSuccessful extends Validation { // checkrun has failed. log.info('${slug.name}/$prNumber: CheckRun $name failed.'); failures.add(FailureDetail(name!, checkRun.detailsUrl as String)); + } else if (checkRun.status == github.CheckRunStatus.queued) { + if (isStale(checkRun.startedAt) && supportStale(author, slug)) { + staleCheckRuns.add(checkRun); + } } allSuccess = false; } @@ -222,7 +222,19 @@ class CiSuccessful extends Validation { return dateTime.compareTo(DateTime.now().subtract(const Duration(hours: Config.kGitHubCheckStaleThreshold))) < 0; } - bool isEngineRoller(Author author, github.RepositorySlug slug) { + /// Perform stale check only on Engine related rolled PRs. + /// + /// This includes those rolled PRs from upstream to Engine repo and those + /// rolled PRs from Engine to Framework. + bool supportStale(Author author, github.RepositorySlug slug) { + return isToEngineRoller(author, slug) || isEngineToFrameworkRoller(author, slug); + } + + bool isToEngineRoller(Author author, github.RepositorySlug slug) { return config.rollerAccounts.contains(author.login!) && slug == Config.engineSlug; } + + bool isEngineToFrameworkRoller(Author author, github.RepositorySlug slug) { + return author.login! == 'engine-flutter-autoroll' && slug == Config.flutterSlug; + } } diff --git a/auto_submit/test/validations/ci_successful_test.dart b/auto_submit/test/validations/ci_successful_test.dart index 1d6cc9ed8..e325118b2 100644 --- a/auto_submit/test/validations/ci_successful_test.dart +++ b/auto_submit/test/validations/ci_successful_test.dart @@ -618,7 +618,7 @@ void main() { }); test('when it is engine roller', () async { - final bool isEngineRoller = ciSuccessful.isEngineRoller( + final bool isEngineRoller = ciSuccessful.isToEngineRoller( Author(login: 'engine-flutter-autoroll'), github.RepositorySlug('flutter', 'engine'), ); @@ -626,15 +626,45 @@ void main() { }); test('when it is not from roller', () async { final bool isEngineRoller = - ciSuccessful.isEngineRoller(Author(login: 'testAuthor'), github.RepositorySlug('flutter', 'engine')); + ciSuccessful.isToEngineRoller(Author(login: 'testAuthor'), github.RepositorySlug('flutter', 'engine')); expect(isEngineRoller, false); }); test('when it is not from engine', () async { - final bool isEngineRoller = ciSuccessful.isEngineRoller( + final bool isEngineRoller = ciSuccessful.isToEngineRoller( Author(login: 'engine-flutter-autoroll'), github.RepositorySlug('flutter', 'flutter'), ); expect(isEngineRoller, false); }); }); + + group('Validate if an engine to framework roller', () { + setUp(() { + githubService = FakeGithubService(client: MockGitHub()); + config = FakeConfig(githubService: githubService); + ciSuccessful = CiSuccessful(config: config); + }); + + test('when it is engine roller', () async { + final bool isEngineRoller = ciSuccessful.isEngineToFrameworkRoller( + Author(login: 'engine-flutter-autoroll'), + github.RepositorySlug('flutter', 'flutter'), + ); + expect(isEngineRoller, true); + }); + test('when it is not from roller', () async { + final bool isEngineRoller = ciSuccessful.isEngineToFrameworkRoller( + Author(login: 'testAuthor'), + github.RepositorySlug('flutter', 'flutter'), + ); + expect(isEngineRoller, false); + }); + test('when it is not from framework', () async { + final bool isEngineRoller = ciSuccessful.isEngineToFrameworkRoller( + Author(login: 'engine-flutter-autoroll'), + github.RepositorySlug('flutter', 'engine'), + ); + expect(isEngineRoller, false); + }); + }); } From f097b2f738fa8092cb9ee91e375368cf55b54f83 Mon Sep 17 00:00:00 2001 From: Ricardo Amador <32242716+ricardoamador@users.noreply.github.com> Date: Fri, 15 Dec 2023 13:17:06 -0800 Subject: [PATCH 02/34] Update contributing doc (#3348) Add a couple of suggestions to the CONTRIBUTIONS doc to help everyone out. *List which issues are fixed by this PR. You must list at least one issue.* *If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].* --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3bf36c821..6f7d45177 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,6 +18,12 @@ us first through the issue tracker with your idea so that we can help out and possibly guide you. Coordinating up front makes it much easier to avoid frustration later on. +### Implementations + +1. For existing functionality contributions, please loop corresponding CODEOWNERs in to make sure they know and can provide a review before a merge to avoid potential regressions. + +2. For new functionality like an app, please add your application as a top level folder and yourself as the point of contact in the Cocoon CODEOWNERS file. One good example of an existing app is `autosubmit`. Feel free to open an infra bug for any design/support discussions, as we are willing to help out. + ### Code reviews All submissions, including submissions by project members, require review. From 4de5d6c87e64419eeae45a61a38c7c28fe696ed5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 22:24:56 +0000 Subject: [PATCH 03/34] Bump test from 1.24.9 to 1.25.0 in /cipd_packages/device_doctor (#3349) Bumps [test](https://github.com/dart-lang/test/tree/master/pkgs) from 1.24.9 to 1.25.0.
Release notes

Sourced from test's releases.

package:test v1.25.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=test&package-manager=pub&previous-version=1.24.9&new-version=1.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- cipd_packages/device_doctor/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cipd_packages/device_doctor/pubspec.yaml b/cipd_packages/device_doctor/pubspec.yaml index a854f8533..6115f017d 100644 --- a/cipd_packages/device_doctor/pubspec.yaml +++ b/cipd_packages/device_doctor/pubspec.yaml @@ -19,4 +19,4 @@ dev_dependencies: build_runner: 2.4.7 fake_async: 1.3.1 mockito: 5.4.4 - test: 1.24.9 + test: 1.25.0 From fa315a33b9d9738d386dfe0bcc4f8f620c30f014 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 22:26:53 +0000 Subject: [PATCH 04/34] Bump test from 1.24.9 to 1.25.0 in /auto_submit (#3350) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- Bumps [test](https://github.com/dart-lang/test/tree/master/pkgs) from 1.24.9 to 1.25.0.
Release notes

Sourced from test's releases.

package:test v1.25.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=test&package-manager=pub&previous-version=1.24.9&new-version=1.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- auto_submit/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto_submit/pubspec.yaml b/auto_submit/pubspec.yaml index feed5178a..c403a0871 100644 --- a/auto_submit/pubspec.yaml +++ b/auto_submit/pubspec.yaml @@ -35,7 +35,7 @@ dev_dependencies: json_serializable: 6.7.1 flutter_lints: 3.0.1 mockito: 5.4.4 - test: 1.24.9 + test: 1.25.0 builders: json_serializable: 3.3.0 From d66ebbe280cd292b43b2863c868ffbb6a7a9f822 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 22:30:47 +0000 Subject: [PATCH 05/34] Bump test_api from 0.6.1 to 0.7.0 in /analyze (#3351) Bumps [test_api](https://github.com/dart-lang/test/tree/master/pkgs) from 0.6.1 to 0.7.0.
Release notes

Sourced from test_api's releases.

package:test_api v0.7.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=test_api&package-manager=pub&previous-version=0.6.1&new-version=0.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- analyze/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analyze/pubspec.yaml b/analyze/pubspec.yaml index 9838bbc3c..db48416ca 100644 --- a/analyze/pubspec.yaml +++ b/analyze/pubspec.yaml @@ -12,4 +12,4 @@ dependencies: dev_dependencies: mockito: 5.4.4 - test_api: 0.6.1 + test_api: 0.7.0 From e9f7bea74b2effe29cc744d1b65a5c381dcf35b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 22:56:35 +0000 Subject: [PATCH 06/34] Bump test_api from 0.6.1 to 0.7.0 in /licenses (#3352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- Bumps [test_api](https://github.com/dart-lang/test/tree/master/pkgs) from 0.6.1 to 0.7.0.
Release notes

Sourced from test_api's releases.

package:test_api v0.7.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=test_api&package-manager=pub&previous-version=0.6.1&new-version=0.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- licenses/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/licenses/pubspec.yaml b/licenses/pubspec.yaml index d6b58fec4..40c3847f0 100644 --- a/licenses/pubspec.yaml +++ b/licenses/pubspec.yaml @@ -10,4 +10,4 @@ dependencies: dev_dependencies: mockito: 5.4.4 - test_api: 0.6.1 + test_api: 0.7.0 From 5ce9f6f426562df5c49756b7aef14c9142c372d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 23:16:23 +0000 Subject: [PATCH 07/34] Bump test from 1.24.9 to 1.25.0 in /app_dart (#3353) Bumps [test](https://github.com/dart-lang/test/tree/master/pkgs) from 1.24.9 to 1.25.0.
Release notes

Sourced from test's releases.

package:test v1.25.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=test&package-manager=pub&previous-version=1.24.9&new-version=1.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- app_dart/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/pubspec.yaml b/app_dart/pubspec.yaml index 69c6bc485..3279c1ef1 100644 --- a/app_dart/pubspec.yaml +++ b/app_dart/pubspec.yaml @@ -49,7 +49,7 @@ dev_dependencies: json_serializable: 6.7.1 mockito: 5.4.4 platform: 3.1.3 - test: 1.24.9 + test: 1.25.0 builders: json_serializable: 3.3.0 From 7cda1d27e631b0f2cdae740b5843698d0f910172 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 22:25:47 +0000 Subject: [PATCH 08/34] Bump eslint from 8.55.0 to 8.56.0 in /gh_actions/third_party/no-response (#3355) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [eslint](https://github.com/eslint/eslint) from 8.55.0 to 8.56.0.
Release notes

Sourced from eslint's releases.

v8.56.0

Features

Bug Fixes

Documentation

Chores

Changelog

Sourced from eslint's changelog.

v8.56.0 - December 15, 2023

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint&package-manager=npm_and_yarn&previous-version=8.55.0&new-version=8.56.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 30 +++++++++---------- .../third_party/no-response/package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index df4e47d30..e98e34212 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -20,7 +20,7 @@ "@types/node": "^20.10.4", "@typescript-eslint/parser": "^6.14.0", "@vercel/ncc": "^0.38.1", - "eslint": "^8.55.0", + "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", "eslint-plugin-jest": "^27.6.0", "extract-pr-titles": "^1.1.0", @@ -771,9 +771,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2969,14 +2969,14 @@ } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7874,9 +7874,9 @@ } }, "@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==" + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==" }, "@fastify/busboy": { "version": "2.0.0", @@ -9489,14 +9489,14 @@ "dev": true }, "eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index c6de9e930..a9ad951a7 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -36,7 +36,7 @@ "@types/node": "^20.10.4", "@typescript-eslint/parser": "^6.14.0", "@vercel/ncc": "^0.38.1", - "eslint": "^8.55.0", + "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", "eslint-plugin-jest": "^27.6.0", "extract-pr-titles": "^1.1.0", From fc30694adfe15a492af822e8419808bc080d5da0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 22:26:17 +0000 Subject: [PATCH 09/34] Bump @types/node from 20.10.4 to 20.10.5 in /gh_actions/third_party/no-response (#3356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.10.4 to 20.10.5.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.10.4&new-version=20.10.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 14 +++++++------- gh_actions/third_party/no-response/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index e98e34212..f563af226 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", - "@types/node": "^20.10.4", + "@types/node": "^20.10.5", "@typescript-eslint/parser": "^6.14.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", @@ -1554,9 +1554,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8504,9 +8504,9 @@ "dev": true }, "@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", "dev": true, "requires": { "undici-types": "~5.26.4" diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index a9ad951a7..71cfd1918 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -33,7 +33,7 @@ "devDependencies": { "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", - "@types/node": "^20.10.4", + "@types/node": "^20.10.5", "@typescript-eslint/parser": "^6.14.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", From 50441901b2f5199c776f8930ba4bc39205e10296 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 22:28:50 +0000 Subject: [PATCH 10/34] Bump @typescript-eslint/parser from 6.14.0 to 6.15.0 in /gh_actions/third_party/no-response (#3357) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.14.0 to 6.15.0.
Release notes

Sourced from @​typescript-eslint/parser's releases.

v6.15.0

6.15.0 (2023-12-18)

Features

You can read about our versioning strategy and releases on our website.

Changelog

Sourced from @​typescript-eslint/parser's changelog.

6.15.0 (2023-12-18)

Note: Version bump only for package @​typescript-eslint/parser

You can read about our versioning strategy and releases on our website.

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@typescript-eslint/parser&package-manager=npm_and_yarn&previous-version=6.14.0&new-version=6.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 98 +++++++++---------- .../third_party/no-response/package.json | 2 +- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index f563af226..fb2e6ccfd 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -18,7 +18,7 @@ "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", "@types/node": "^20.10.5", - "@typescript-eslint/parser": "^6.14.0", + "@typescript-eslint/parser": "^6.15.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", @@ -1640,15 +1640,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", - "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", + "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.14.0", - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/typescript-estree": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4" }, "engines": { @@ -1668,13 +1668,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", - "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", + "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0" + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1685,9 +1685,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", - "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", + "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1698,13 +1698,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", - "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", + "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1725,12 +1725,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", - "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", + "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/types": "6.15.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -8570,42 +8570,42 @@ } }, "@typescript-eslint/parser": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", - "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", + "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.14.0", - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/typescript-estree": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", - "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", + "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0" + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0" } }, "@typescript-eslint/types": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", - "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", + "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", - "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", + "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", "dev": true, "requires": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -8614,12 +8614,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", - "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", + "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", "dev": true, "requires": { - "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/types": "6.15.0", "eslint-visitor-keys": "^3.4.1" } }, diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index 71cfd1918..de3b951b6 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -34,7 +34,7 @@ "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", "@types/node": "^20.10.5", - "@typescript-eslint/parser": "^6.14.0", + "@typescript-eslint/parser": "^6.15.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", From 917ac5b5d026ebc711e009dce1db977929b7e778 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Tue, 19 Dec 2023 14:15:12 -0800 Subject: [PATCH 11/34] Engine scenario_app as a test, avoid needs-tests comment (#3358) Treat [engine `scenario_app`](https://github.com/flutter/engine/tree/main/testing/scenario_app) as a test and do not add needs-test comment. Example: https://github.com/flutter/engine/pull/49066#issuecomment-1857181226 Refactor tests, put all the code/test combo checks into one test to reduce boilerplate, otherwise I would have needed to add a new test for the `scenario_app` check. --- .../github/webhook_subscription.dart | 16 +- .../github/webhook_subscription_test.dart | 212 +++++------------- 2 files changed, 65 insertions(+), 163 deletions(-) diff --git a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart index dd5d75e70..2bfb3e0f7 100644 --- a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart +++ b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart @@ -34,8 +34,6 @@ Set kNeedsTests = { Config.packagesSlug, }; -final RegExp kEngineTestRegExp = RegExp(r'(tests?|benchmarks?)\.(dart|java|mm|m|cc|sh|py)$'); - // Extentions for files that use // for single line comments. // See [_allChangesAreCodeComments] for more. @visibleForTesting @@ -319,7 +317,7 @@ class GithubWebhookSubscription extends SubscriptionHandler { } // Check to see if tests were submitted with this PR. - if (_isATest(filename)) { + if (_isAFrameworkTest(filename)) { hasTests = true; } } @@ -346,7 +344,7 @@ class GithubWebhookSubscription extends SubscriptionHandler { } } - bool _isATest(String filename) { + bool _isAFrameworkTest(String filename) { if (kNotActuallyATest.any(filename.endsWith)) { return false; } @@ -412,7 +410,7 @@ class GithubWebhookSubscription extends SubscriptionHandler { needsTests = !_allChangesAreCodeComments(file); } - if (kEngineTestRegExp.hasMatch(filename.toLowerCase())) { + if (_isAnEngineTest(filename)) { hasTests = true; } } @@ -430,6 +428,14 @@ class GithubWebhookSubscription extends SubscriptionHandler { } } + bool _isAnEngineTest(String filename) { + final RegExp engineTestRegExp = RegExp(r'(tests?|benchmarks?)\.(dart|java|mm|m|cc|sh|py)$'); + return filename.contains('IosBenchmarks') || + filename.contains('IosUnitTests') || + filename.contains('scenario_app') || + engineTestRegExp.hasMatch(filename.toLowerCase()); + } + bool _fileContainsAddedCode(PullRequestFile file) { // When null, do not assume 0 lines have been added. final int linesAdded = file.additionsCount ?? 1; diff --git a/app_dart/test/request_handlers/github/webhook_subscription_test.dart b/app_dart/test/request_handlers/github/webhook_subscription_test.dart index 7abf5fe24..3019a7fcb 100644 --- a/app_dart/test/request_handlers/github/webhook_subscription_test.dart +++ b/app_dart/test/request_handlers/github/webhook_subscription_test.dart @@ -1558,167 +1558,63 @@ void foo() { ); }); - test('Engine labels PRs, no comment if Java tests', () async { - const int issueNumber = 123; - - tester.message = generateGithubWebhookMessage( - action: 'opened', - number: issueNumber, - slug: Config.engineSlug, - ); - - when(pullRequestsService.listFiles(Config.engineSlug, issueNumber)).thenAnswer( - (_) => Stream.fromIterable([ - PullRequestFile()..filename = 'shell/platform/android/io/flutter/Blah.java', - PullRequestFile()..filename = 'shell/platform/android/test/io/flutter/BlahTest.java', - ]), - ); - - await tester.post(webhook); - - verifyNever( - issuesService.addLabelsToIssue(Config.engineSlug, issueNumber, any), - ); - - verifyNever( - issuesService.createComment( - Config.engineSlug, - issueNumber, - argThat(contains(config.missingTestsPullRequestMessageValue)), - ), - ); - }); - - test('Engine labels PRs, no comment if script tests', () async { - const int issueNumber = 123; - - tester.message = generateGithubWebhookMessage( - action: 'opened', - number: issueNumber, - slug: Config.engineSlug, - ); - - when(pullRequestsService.listFiles(Config.engineSlug, issueNumber)).thenAnswer( - (_) => Stream.fromIterable([ - PullRequestFile()..filename = 'fml/blah.cc', - PullRequestFile()..filename = 'fml/testing/blah_test.sh', - ]), - ); - - await tester.post(webhook); - - verifyNever( - issuesService.createComment( - Config.engineSlug, - issueNumber, - argThat(contains(config.missingTestsPullRequestMessageValue)), - ), - ); - }); - - test('Engine labels PRs, no comment if cc tests', () async { - const int issueNumber = 123; - - tester.message = generateGithubWebhookMessage( - action: 'opened', - number: issueNumber, - slug: Config.engineSlug, - ); - - when(pullRequestsService.listFiles(Config.engineSlug, issueNumber)).thenAnswer( - (_) => Stream.fromIterable([ - PullRequestFile()..filename = 'fml/blah.cc', - PullRequestFile()..filename = 'fml/blah_unittests.cc', - ]), - ); - - await tester.post(webhook); - - verifyNever( - issuesService.addLabelsToIssue( - Config.engineSlug, - issueNumber, - any, - ), - ); - - verifyNever( - issuesService.createComment( - Config.engineSlug, - issueNumber, - argThat(contains(config.missingTestsPullRequestMessageValue)), - ), - ); - }); - - test('Engine labels PRs, no comment if py tests', () async { - const int issueNumber = 123; - - tester.message = generateGithubWebhookMessage( - action: 'opened', - number: issueNumber, - slug: Config.engineSlug, - ); - - when(pullRequestsService.listFiles(Config.engineSlug, issueNumber)).thenAnswer( - (_) => Stream.fromIterable([ - PullRequestFile()..filename = 'tools/font-subset/main.cc', - PullRequestFile()..filename = 'tools/font-subset/test.py', - ]), - ); - - await tester.post(webhook); - - verifyNever( - issuesService.addLabelsToIssue( - Config.engineSlug, - issueNumber, - any, - ), - ); - - verifyNever( - issuesService.createComment( - Config.engineSlug, - issueNumber, - argThat(contains(config.missingTestsPullRequestMessageValue)), - ), - ); - }); - - test('Engine labels PRs, no comment if cc benchmarks', () async { - const int issueNumber = 123; - - tester.message = generateGithubWebhookMessage( - action: 'opened', - number: issueNumber, - slug: Config.engineSlug, - ); - - when(pullRequestsService.listFiles(Config.engineSlug, issueNumber)).thenAnswer( - (_) => Stream.fromIterable([ - PullRequestFile()..filename = 'fml/blah.cc', - PullRequestFile()..filename = 'fml/blah_benchmarks.cc', - ]), - ); + test('Engine labels PRs, no comment if tested', () async { + final List> pullRequestFileList = [ + [ + // Java tests. + 'shell/platform/android/io/flutter/Blah.java', + 'shell/platform/android/test/io/flutter/BlahTest.java', + ], + [ + // Script tests. + 'fml/blah.cc', + 'fml/testing/blah_test.sh', + ], + [ + // cc tests. + 'fml/blah.cc', + 'fml/blah_unittests.cc', + ], + [ + // cc benchmarks. + 'fml/blah.cc', + 'fml/blah_benchmarks.cc', + ], + [ + // py tests. + 'tools/font-subset/main.cc', + 'tools/font-subset/test.py', + ], + [ + // scenario app is a test. + 'scenario_app/project.pbxproj', + 'scenario_app/Info_Impeller.plist', + ], + ]; + + for (int issueNumber = 0; issueNumber < pullRequestFileList.length; issueNumber++) { + tester.message = generateGithubWebhookMessage( + action: 'opened', + number: issueNumber, + slug: Config.engineSlug, + ); - await tester.post(webhook); + when(pullRequestsService.listFiles(Config.engineSlug, issueNumber)).thenAnswer( + (_) => Stream.fromIterable( + pullRequestFileList[issueNumber].map((String filename) => PullRequestFile()..filename = filename), + ), + ); - verifyNever( - issuesService.addLabelsToIssue( - Config.engineSlug, - issueNumber, - any, - ), - ); + await tester.post(webhook); - verifyNever( - issuesService.createComment( - Config.engineSlug, - issueNumber, - argThat(contains(config.missingTestsPullRequestMessageValue)), - ), - ); + verifyNever( + issuesService.createComment( + Config.engineSlug, + issueNumber, + argThat(contains(config.missingTestsPullRequestMessageValue)), + ), + ); + } }); test('Engine labels PRs, no comments if pr is for release branches', () async { From dfd2df22f742505b487885bbe45866dcefd01de6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 22:34:12 +0000 Subject: [PATCH 12/34] Bump dart from `e05aaad` to `efaf686` in /auto_submit (#3359) Bumps dart from `e05aaad` to `efaf686`. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dart&package-manager=docker&previous-version=beta&new-version=beta)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- auto_submit/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto_submit/Dockerfile b/auto_submit/Dockerfile index d8a40648c..c116a70a8 100644 --- a/auto_submit/Dockerfile +++ b/auto_submit/Dockerfile @@ -4,7 +4,7 @@ # Dart Docker official images can be found here: https://hub.docker.com/_/dart -FROM dart:beta@sha256:e05aaad0f71e9d045e2a45b63a65f85e5e466b1cc1de34e7e684eede45a29d9b +FROM dart:beta@sha256:efaf6869b58b3cac03a1a9b98c3ee93fe7b2a61f6ce2db1c05516c10653a9a0d WORKDIR /app From 5b07eb4f178e37a9dd15b5d33f623d40bab9294a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 22:50:03 +0000 Subject: [PATCH 13/34] Bump dart from `e05aaad` to `efaf686` in /app_dart (#3360) Bumps dart from `e05aaad` to `efaf686`. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dart&package-manager=docker&previous-version=beta&new-version=beta)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- app_dart/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/Dockerfile b/app_dart/Dockerfile index d8a40648c..c116a70a8 100644 --- a/app_dart/Dockerfile +++ b/app_dart/Dockerfile @@ -4,7 +4,7 @@ # Dart Docker official images can be found here: https://hub.docker.com/_/dart -FROM dart:beta@sha256:e05aaad0f71e9d045e2a45b63a65f85e5e466b1cc1de34e7e684eede45a29d9b +FROM dart:beta@sha256:efaf6869b58b3cac03a1a9b98c3ee93fe7b2a61f6ce2db1c05516c10653a9a0d WORKDIR /app From af0bfa2e5f7e414259fbfee2489d8c2ae18dc0f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 22:59:41 +0000 Subject: [PATCH 14/34] Bump eslint-plugin-prettier from 5.0.1 to 5.1.0 in /gh_actions/third_party/no-response (#3361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.0.1 to 5.1.0.
Release notes

Sourced from eslint-plugin-prettier's releases.

v.5.1.0

Minor Changes

  • #616 3856413 Thanks @​BPScott! - Add recommended config for the flat config format.

    If you are using flat config, import the recommended config from eslint-plugin-prettier/recommended. Like the legacy format recommended config, this automatically includes the contents of eslint-config-prettier.

    // eslint.config.js
    const eslintPluginPrettierRecommended = require('eslint-plugin-prettier/recommended');
    

    module.exports = [ // Any other config imports go at the top eslintPluginPrettierRecommended, ];

Patch Changes

  • #614 5270877 Thanks @​BPScott! - Add meta block to plugin. This improves debugging and cachebusting when using the new flat config

  • #603 a63a570 Thanks @​filiptammergard! - fix: specify eslint-config-prettier as peer dependency

    It's already added to peerDependenciesMeta as optional, which means it should also be specified in peerDependencies.

Changelog

Sourced from eslint-plugin-prettier's changelog.

5.1.0

Minor Changes

  • #616 3856413 Thanks @​BPScott! - Add recommended config for the flat config format.

    If you are using flat config, import the recommended config from eslint-plugin-prettier/recommended. Like the legacy format recommended config, this automatically includes the contents of eslint-config-prettier.

    // eslint.config.js
    const eslintPluginPrettierRecommended = require('eslint-plugin-prettier/recommended');
    

    module.exports = [ // Any other config imports go at the top eslintPluginPrettierRecommended, ];

Patch Changes

  • #614 5270877 Thanks @​BPScott! - Add meta block to plugin. This improves debugging and cachebusting when using the new flat config

  • #603 a63a570 Thanks @​filiptammergard! - fix: specify eslint-config-prettier as peer dependency

    It's already added to peerDependenciesMeta as optional, which means it should also be specified in peerDependencies.

Commits
  • 183f45c chore: release eslint-plugin-prettier (#604)
  • 3856413 Add flat recommended config (#616)
  • 78c8b80 Use flat config for the project's eslint configuration (#615)
  • 5270877 feat: add meta block to config (#614)
  • 79765cc build(deps-dev): Bump the dev-dependencies group with 8 updates (#611)
  • 1882a36 build(deps-dev): Bump @​babel/traverse from 7.22.8 to 7.23.2 (#593)
  • f18bf8e build(deps): Bump the actions group with 1 update (#608)
  • 2ed98fa chore: group dependabot updates
  • a63a570 fix: specify eslint-config-prettier as peer dependency (#603)
  • df71356 chore: bump @​types/eslint (#602)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-prettier&package-manager=npm_and_yarn&previous-version=5.0.1&new-version=5.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 19 ++++++++++--------- .../third_party/no-response/package.json | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index fb2e6ccfd..007f1ca90 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-prettier": "^5.1.0", "scramjet": "^4.37.0" }, "devDependencies": { @@ -3026,7 +3026,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, + "devOptional": true, "bin": { "eslint-config-prettier": "bin/cli.js" } @@ -3411,9 +3411,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.0.tgz", + "integrity": "sha512-hQc+2zbnMeXcIkg+pKZtVa+3Yqx4WY7SMkn1PLZ4VbBEU7jJIpVn9347P8BBhTbz6ne85aXvQf30kvexcqBeWw==", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.5" @@ -3427,6 +3427,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -9587,7 +9588,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true + "devOptional": true }, "eslint-import-resolver-node": { "version": "0.3.9", @@ -9863,9 +9864,9 @@ "dev": true }, "eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.0.tgz", + "integrity": "sha512-hQc+2zbnMeXcIkg+pKZtVa+3Yqx4WY7SMkn1PLZ4VbBEU7jJIpVn9347P8BBhTbz6ne85aXvQf30kvexcqBeWw==", "requires": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.5" diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index de3b951b6..eeb671a81 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -27,7 +27,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-prettier": "^5.1.0", "scramjet": "^4.37.0" }, "devDependencies": { From 0d406f42495b7aeec3accb0a1119cb6016e5a7d7 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Wed, 20 Dec 2023 12:26:13 -0600 Subject: [PATCH 15/34] Fix typo in handle to tag if pr author needs a test exemption (#3362) Fixes 140456 --- app_dart/lib/src/service/config.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/lib/src/service/config.dart b/app_dart/lib/src/service/config.dart index 84f288ff9..cf954c837 100644 --- a/app_dart/lib/src/service/config.dart +++ b/app_dart/lib/src/service/config.dart @@ -227,7 +227,7 @@ class Config { 'request may not have tests. Please make sure to add tests before merging. ' 'If you need ' '[an exemption](https://github.com/flutter/flutter/wiki/Tree-hygiene#tests) ' - 'to this rule, contact "@text-exemption-reviewers" in the #hackers ' + 'to this rule, contact "@test-exemption-reviewer" in the #hackers ' 'channel in [Chat](https://github.com/flutter/flutter/wiki/Chat) ' '(don\'t just cc them here, they won\'t see it! Use Discord!).' '\n\n' From d41108dd1476f6d8c63e75fc813c6cada18c3d4a Mon Sep 17 00:00:00 2001 From: Casey Hillers Date: Wed, 20 Dec 2023 18:37:51 -0800 Subject: [PATCH 16/34] [app_dart] Add BuildStatus badge endpoint (#3363) * Enable us to track Flutter CI in the READMEs ![image](https://github.com/flutter/cocoon/assets/2148558/17981b78-973f-48e9-92c3-661089d76e91) ![image](https://github.com/flutter/cocoon/assets/2148558/1723a80a-0c29-4ed9-a04d-9fe93ddd617b) https://github.com/flutter/flutter/issues/140460 --- CODEOWNERS | 1 + app_dart/bin/server.dart | 6 ++ app_dart/lib/cocoon_service.dart | 1 + .../request_handlers/get_build_status.dart | 9 ++- .../get_build_status_badge.dart | 63 +++++++++++++++++++ .../get_build_status_badge_test.dart | 29 +++++++++ 6 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 app_dart/lib/src/request_handlers/get_build_status_badge.dart create mode 100644 app_dart/test/request_handlers/get_build_status_badge_test.dart diff --git a/CODEOWNERS b/CODEOWNERS index 8bfc94786..5a644f9d5 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -11,6 +11,7 @@ app_dart/lib/src/request_handlers/dart_internal_subscription.dart @dre app_dart/lib/src/request_handlers/file_flaky_issue_and_pr.dart @keyonghan app_dart/lib/src/request_handlers/flush_cache.dart @keyonghan app_dart/lib/src/request_handlers/get_build_status.dart @keyonghan +app_dart/lib/src/request_handlers/get_build_status.dart @CaseyHillers app_dart/lib/src/request_handlers/get_release_branches.dart @CaseyHillers app_dart/lib/src/request_handlers/get_repos.dart @keyonghan app_dart/lib/src/request_handlers/get_status.dart @keyonghan diff --git a/app_dart/bin/server.dart b/app_dart/bin/server.dart index e278599e5..f977e8064 100644 --- a/app_dart/bin/server.dart +++ b/app_dart/bin/server.dart @@ -201,6 +201,12 @@ Future main() async { delegate: GetBuildStatus(config: config), ttl: const Duration(seconds: 15), ), + '/api/public/build-status-badge': CacheRequestHandler( + cache: cache, + config: config, + delegate: GetBuildStatusBadge(config: config), + ttl: const Duration(seconds: 15), + ), '/api/public/get-release-branches': CacheRequestHandler( cache: cache, config: config, diff --git a/app_dart/lib/cocoon_service.dart b/app_dart/lib/cocoon_service.dart index d0137b3ef..69a336b59 100644 --- a/app_dart/lib/cocoon_service.dart +++ b/app_dart/lib/cocoon_service.dart @@ -10,6 +10,7 @@ export 'src/request_handlers/dart_internal_subscription.dart'; export 'src/request_handlers/file_flaky_issue_and_pr.dart'; export 'src/request_handlers/flush_cache.dart'; export 'src/request_handlers/get_build_status.dart'; +export 'src/request_handlers/get_build_status_badge.dart'; export 'src/request_handlers/get_release_branches.dart'; export 'src/request_handlers/get_repos.dart'; export 'src/request_handlers/get_status.dart'; diff --git a/app_dart/lib/src/request_handlers/get_build_status.dart b/app_dart/lib/src/request_handlers/get_build_status.dart index e4348426e..024c671e2 100644 --- a/app_dart/lib/src/request_handlers/get_build_status.dart +++ b/app_dart/lib/src/request_handlers/get_build_status.dart @@ -28,15 +28,18 @@ class GetBuildStatus extends RequestHandler { @override Future get() async { + final BuildStatusResponse response = await createResponse(); + return Body.forJson(response.writeToJsonMap()); + } + + Future createResponse() async { final DatastoreService datastore = datastoreProvider(config.db); final BuildStatusService buildStatusService = buildStatusProvider(datastore); final String repoName = request!.uri.queryParameters[kRepoParam] ?? 'flutter'; final RepositorySlug slug = RepositorySlug('flutter', repoName); final BuildStatus status = (await buildStatusService.calculateCumulativeStatus(slug))!; - final BuildStatusResponse response = BuildStatusResponse() + return BuildStatusResponse() ..buildStatus = status.succeeded ? EnumBuildStatus.success : EnumBuildStatus.failure ..failingTasks.addAll(status.failedTasks); - - return Body.forJson(response.writeToJsonMap()); } } diff --git a/app_dart/lib/src/request_handlers/get_build_status_badge.dart b/app_dart/lib/src/request_handlers/get_build_status_badge.dart new file mode 100644 index 000000000..7e87711ad --- /dev/null +++ b/app_dart/lib/src/request_handlers/get_build_status_badge.dart @@ -0,0 +1,63 @@ +// Copyright 2019 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; +import 'dart:io'; + +import 'package:cocoon_service/protos.dart'; +import 'package:meta/meta.dart'; + +import '../request_handling/body.dart'; +import 'get_build_status.dart'; + +/// [GetBuildStatusBadge] returns an SVG representing the current tree status for the given repo. +/// +/// It reuses [GetBuildStatus] and translates it to the SVG. The primary caller for this is the +/// README's from the larger Flutter repositories. +@immutable +class GetBuildStatusBadge extends GetBuildStatus { + const GetBuildStatusBadge({ + required super.config, + @visibleForTesting super.datastoreProvider, + @visibleForTesting super.buildStatusProvider, + }); + + /// Provides a template that is easily injectable. + /// + /// Template follows the mustache format of `{{ VARIABLE }}`. + final String template = + ''' + Flutter CI: {{ STATUS }} + + + + + + + + + + Flutter CI + {{ STATUS }} + '''; + + static const red = '#e05d44'; + static const green = '#3BB143'; + + @override + Future get() async { + // Set HTTP content-type so SVG is viewable. + final HttpResponse response = request!.response; + response.headers.contentType = ContentType.parse('image/svg+xml'); + final BuildStatusResponse buildStatusResponse = await super.createResponse(); + return Body.forString(generateSVG(buildStatusResponse)); + } + + String generateSVG(BuildStatusResponse response) { + final bool passing = response.failingTasks.isEmpty; + return template + .replaceAll('{{ STATUS }}', passing ? 'passing' : '${response.failingTasks.length} failures') + .replaceAll('{{ COLOR }}', passing ? green : red); + } +} diff --git a/app_dart/test/request_handlers/get_build_status_badge_test.dart b/app_dart/test/request_handlers/get_build_status_badge_test.dart new file mode 100644 index 000000000..ed9e788ab --- /dev/null +++ b/app_dart/test/request_handlers/get_build_status_badge_test.dart @@ -0,0 +1,29 @@ +// Copyright 2019 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:cocoon_service/protos.dart'; +import 'package:cocoon_service/src/request_handlers/get_build_status_badge.dart'; +import 'package:test/test.dart'; + +import '../src/datastore/fake_config.dart'; + +void main() { + final GetBuildStatusBadge handler = GetBuildStatusBadge(config: FakeConfig()); + + test('passing status', () async { + final BuildStatusResponse buildStatusResponse = BuildStatusResponse()..buildStatus = EnumBuildStatus.success; + final String response = handler.generateSVG(buildStatusResponse); + expect(response, contains('Flutter CI: passing')); + expect(response, contains(GetBuildStatusBadge.green)); + }); + + test('failing status', () async { + final BuildStatusResponse buildStatusResponse = BuildStatusResponse() + ..buildStatus = EnumBuildStatus.failure + ..failingTasks.addAll(['a', 'b', 'c']); // 3 failing tasks + final String response = handler.generateSVG(buildStatusResponse); + expect(response, contains('Flutter CI: 3 failures')); + expect(response, contains(GetBuildStatusBadge.red)); + }); +} From 129dbd4168c80948c8fa6444761548a52c654db9 Mon Sep 17 00:00:00 2001 From: Casey Hillers Date: Thu, 21 Dec 2023 09:23:14 -0800 Subject: [PATCH 17/34] Add Flutter CI status to README (#3365) https://github.com/flutter/flutter/issues/140460 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 07eb0f8fd..e2280ddcb 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ +[![Flutter CI Status](https://flutter-dashboard.appspot.com/api/public/build-status-badge?repo=cocooon)](https://flutter-dashboard.appspot.com/#/build?repo=cocoon&branch=main) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/flutter/cocoon/badge)](https://api.securityscorecards.dev/projects/github.com/flutter/cocoon) [![SLSA 3](https://slsa.dev/images/gh-badge-level3.svg)](https://slsa.dev) From 523755b3def15e0f35c2bfa8a0e8a128286321dd Mon Sep 17 00:00:00 2001 From: Casey Hillers Date: Thu, 21 Dec 2023 09:39:50 -0800 Subject: [PATCH 18/34] Update CODEOWNERS to have me on badge API (#3366) Follow up from https://github.com/flutter/cocoon/pull/3363#pullrequestreview-1793390582 --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 5a644f9d5..65a0afadc 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -11,7 +11,7 @@ app_dart/lib/src/request_handlers/dart_internal_subscription.dart @dre app_dart/lib/src/request_handlers/file_flaky_issue_and_pr.dart @keyonghan app_dart/lib/src/request_handlers/flush_cache.dart @keyonghan app_dart/lib/src/request_handlers/get_build_status.dart @keyonghan -app_dart/lib/src/request_handlers/get_build_status.dart @CaseyHillers +app_dart/lib/src/request_handlers/get_build_status_badge.dart @CaseyHillers app_dart/lib/src/request_handlers/get_release_branches.dart @CaseyHillers app_dart/lib/src/request_handlers/get_repos.dart @keyonghan app_dart/lib/src/request_handlers/get_status.dart @keyonghan From 16cf1a008421658206505776a8cad5f9cd81fae1 Mon Sep 17 00:00:00 2001 From: Casey Hillers Date: Thu, 21 Dec 2023 09:39:52 -0800 Subject: [PATCH 19/34] Fix right side rounded corners on ci badge (#3367) Missed in initial design until I saw it on a README :-) ![image](https://github.com/flutter/cocoon/assets/2148558/b60ea682-6a54-4a24-a5d6-f01339388213) https://github.com/flutter/flutter/issues/140460 --- app_dart/lib/src/request_handlers/get_build_status_badge.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/lib/src/request_handlers/get_build_status_badge.dart b/app_dart/lib/src/request_handlers/get_build_status_badge.dart index 7e87711ad..823cb6f59 100644 --- a/app_dart/lib/src/request_handlers/get_build_status_badge.dart +++ b/app_dart/lib/src/request_handlers/get_build_status_badge.dart @@ -32,7 +32,7 @@ class GetBuildStatusBadge extends GetBuildStatus { - + From 74d347b24f5be3a8e83d9a7e4090f9ce82c57e17 Mon Sep 17 00:00:00 2001 From: keyonghan <54558023+keyonghan@users.noreply.github.com> Date: Thu, 21 Dec 2023 11:36:17 -0800 Subject: [PATCH 20/34] Update and reenable periodic task vacuum (#3354) We should enable the task vaccum process before https://github.com/flutter/flutter/issues/122117 is fixed, especially when there is limited gardener support. This PR: 1) updates the vacuum logic to be based on `task.status` is `in progress` and `builder` is null, instead of being based on `created time` which caused https://github.com/flutter/flutter/issues/121989. 2) enables as a daily cronjob running 12:00 PST --- .../scheduler/vacuum_stale_tasks.dart | 28 +++----------- .../scheduler/vacuum_stale_tasks_test.dart | 37 ++++--------------- cron.yaml | 7 ++-- 3 files changed, 16 insertions(+), 56 deletions(-) diff --git a/app_dart/lib/src/request_handlers/scheduler/vacuum_stale_tasks.dart b/app_dart/lib/src/request_handlers/scheduler/vacuum_stale_tasks.dart index 852c526b7..8a8e066c8 100644 --- a/app_dart/lib/src/request_handlers/scheduler/vacuum_stale_tasks.dart +++ b/app_dart/lib/src/request_handlers/scheduler/vacuum_stale_tasks.dart @@ -53,32 +53,16 @@ class VacuumStaleTasks extends RequestHandler { final DatastoreService datastore = datastoreProvider(config.db); final List tasks = await datastore.queryRecentTasks(slug: slug).toList(); - final Set tasksToBeReset = {}; + final List tasksToBeReset = []; for (FullTask fullTask in tasks) { final Task task = fullTask.task; - if (task.status != Task.statusInProgress) { - continue; - } - - if (task.createTimestamp == null) { - log.fine('Vacuuming $task due to createTimestamp being null'); + if (task.status == Task.statusInProgress && task.buildNumber == null) { + task.status = Task.statusNew; + task.createTimestamp = 0; tasksToBeReset.add(task); - continue; - } - - final DateTime now = nowValue ?? DateTime.now(); - final DateTime create = DateTime.fromMillisecondsSinceEpoch(task.createTimestamp!); - final Duration queueTime = now.difference(create); - - if (queueTime > kTimeoutLimit) { - log.fine('Vacuuming $task due to staleness'); - tasksToBeReset.add(task); - continue; } } - - final Iterable inserts = - tasksToBeReset.map((Task task) => task..status = Task.statusNew).map((Task task) => task..createTimestamp = 0); - await datastore.insert(inserts.toList()); + log.info('Vacuuming stale tasks: $tasksToBeReset'); + await datastore.insert(tasksToBeReset); } } diff --git a/app_dart/test/request_handlers/scheduler/vacuum_stale_tasks_test.dart b/app_dart/test/request_handlers/scheduler/vacuum_stale_tasks_test.dart index 3135b7961..93f40fb3b 100644 --- a/app_dart/test/request_handlers/scheduler/vacuum_stale_tasks_test.dart +++ b/app_dart/test/request_handlers/scheduler/vacuum_stale_tasks_test.dart @@ -20,14 +20,6 @@ void main() { late VacuumStaleTasks handler; final Commit commit = generateCommit(1); - final DateTime now = DateTime(2023, 2, 9, 13, 37); - - /// Helper function for returning test times relative to [now]. - DateTime relativeToNow(int minutes) { - final Duration duration = Duration(minutes: minutes); - - return now.subtract(duration); - } setUp(() { config = FakeConfig(); @@ -41,32 +33,20 @@ void main() { }); test('skips when no tasks are stale', () async { - final List expectedTasks = [ + final List originalTasks = [ generateTask( 1, status: Task.statusInProgress, - created: relativeToNow(1), - parent: commit, - ), - generateTask( - 2, - status: Task.statusSucceeded, - created: relativeToNow(VacuumStaleTasks.kTimeoutLimit.inMinutes + 5), - parent: commit, - ), - generateTask( - 3, - status: Task.statusInProgress, - created: relativeToNow(VacuumStaleTasks.kTimeoutLimit.inMinutes), parent: commit, + buildNumber: 123, ), ]; - await config.db.commit(inserts: expectedTasks); + await config.db.commit(inserts: originalTasks); await tester.get(handler); final List tasks = config.db.values.values.whereType().toList(); - expect(tasks, expectedTasks); + expect(tasks[0].status, Task.statusInProgress); }); test('resets stale task', () async { @@ -74,20 +54,17 @@ void main() { generateTask( 1, status: Task.statusInProgress, - created: relativeToNow(1), parent: commit, ), generateTask( 2, status: Task.statusSucceeded, - created: relativeToNow(VacuumStaleTasks.kTimeoutLimit.inMinutes + 5), parent: commit, ), // Task 3 should be vacuumed generateTask( 3, status: Task.statusInProgress, - created: relativeToNow(VacuumStaleTasks.kTimeoutLimit.inMinutes + 1), parent: commit, ), ]; @@ -97,10 +74,10 @@ void main() { await tester.get(handler); final List tasks = config.db.values.values.whereType().toList(); - expect(tasks[0], originalTasks[0]); - expect(tasks[1], originalTasks[1]); - expect(tasks[2].status, Task.statusNew); + expect(tasks[0].createTimestamp, 0); + expect(tasks[0].status, Task.statusNew); expect(tasks[2].createTimestamp, 0); + expect(tasks[2].status, Task.statusNew); }); }); } diff --git a/cron.yaml b/cron.yaml index 43e261814..bb497e647 100644 --- a/cron.yaml +++ b/cron.yaml @@ -7,12 +7,11 @@ cron: url: /api/vacuum-github-commits schedule: every 6 hours -# Disabled for https://github.com/flutter/flutter/issues/121989 # TODO(keyonghan): will delete if `In Progress` hanging issue is resolved: # https://github.com/flutter/flutter/issues/120395#issuecomment-1444810718 -#- description: vacuum stale tasks -# url: /api/scheduler/vacuum-stale-tasks -# schedule: every 10 minutes +- description: vacuum stale tasks + url: /api/scheduler/vacuum-stale-tasks + schedule: every 12 hours - description: backfills builds url: /api/scheduler/batch-backfiller From e1bf6f30ef0af69f0925f5f80a0fabdb7d77a8ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 22:33:18 +0000 Subject: [PATCH 21/34] Bump dart from `efaf686` to `20a61a5` in /app_dart (#3370) Bumps dart from `efaf686` to `20a61a5`. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dart&package-manager=docker&previous-version=beta&new-version=beta)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- app_dart/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/Dockerfile b/app_dart/Dockerfile index c116a70a8..878a544a8 100644 --- a/app_dart/Dockerfile +++ b/app_dart/Dockerfile @@ -4,7 +4,7 @@ # Dart Docker official images can be found here: https://hub.docker.com/_/dart -FROM dart:beta@sha256:efaf6869b58b3cac03a1a9b98c3ee93fe7b2a61f6ce2db1c05516c10653a9a0d +FROM dart:beta@sha256:20a61a53046b1c433f7eb0f0f809cb08b4971b643bf6d3fc75916eba7950a53a WORKDIR /app From dcc5365712999cd5ceaf60f5c6e9a54d5f948b3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 22:57:06 +0000 Subject: [PATCH 22/34] Bump process_runner from 4.1.4 to 4.2.0 in /app_dart (#3371) Bumps [process_runner](https://github.com/google/process_runner) from 4.1.4 to 4.2.0.
Changelog

Sourced from process_runner's changelog.

4.2.0

  • Adds WorkerJobGroup for running a group of dependent tasks in order.
  • Adds the ability to have one job depend on another, so that order between jobs can be enforced.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=process_runner&package-manager=pub&previous-version=4.1.4&new-version=4.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- app_dart/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/pubspec.yaml b/app_dart/pubspec.yaml index 3279c1ef1..089156344 100644 --- a/app_dart/pubspec.yaml +++ b/app_dart/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: neat_cache: 2.0.3 path: 1.9.0 process: 5.0.1 - process_runner: 4.1.4 + process_runner: 4.2.0 protobuf: 2.1.0 retry: ^3.1.2 truncate: 3.0.1 From 9c7c6895508d687e29d20a49205aeb97be1ac485 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 23:01:00 +0000 Subject: [PATCH 23/34] Bump eslint-plugin-prettier from 5.1.0 to 5.1.1 in /gh_actions/third_party/no-response (#3373) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.1.0 to 5.1.1.
Release notes

Sourced from eslint-plugin-prettier's releases.

v5.1.1

5.1.1

Patch Changes

Changelog

Sourced from eslint-plugin-prettier's changelog.

5.1.1

Patch Changes

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-prettier&package-manager=npm_and_yarn&previous-version=5.1.0&new-version=5.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 14 +++++++------- gh_actions/third_party/no-response/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index 007f1ca90..2af35570c 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "eslint-plugin-prettier": "^5.1.0", + "eslint-plugin-prettier": "^5.1.1", "scramjet": "^4.37.0" }, "devDependencies": { @@ -3411,9 +3411,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.0.tgz", - "integrity": "sha512-hQc+2zbnMeXcIkg+pKZtVa+3Yqx4WY7SMkn1PLZ4VbBEU7jJIpVn9347P8BBhTbz6ne85aXvQf30kvexcqBeWw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.1.tgz", + "integrity": "sha512-WQpV3mSmIobb77s4qiCZu3dBrZZ0rj8ckSfBtRrgNK9Wnh2s3eiaxNTWloz1LJ1WtvqZES/PAI7PLvsrGt/CEA==", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.5" @@ -9864,9 +9864,9 @@ "dev": true }, "eslint-plugin-prettier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.0.tgz", - "integrity": "sha512-hQc+2zbnMeXcIkg+pKZtVa+3Yqx4WY7SMkn1PLZ4VbBEU7jJIpVn9347P8BBhTbz6ne85aXvQf30kvexcqBeWw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.1.tgz", + "integrity": "sha512-WQpV3mSmIobb77s4qiCZu3dBrZZ0rj8ckSfBtRrgNK9Wnh2s3eiaxNTWloz1LJ1WtvqZES/PAI7PLvsrGt/CEA==", "requires": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.5" diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index eeb671a81..8d16980cd 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -27,7 +27,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "eslint-plugin-prettier": "^5.1.0", + "eslint-plugin-prettier": "^5.1.1", "scramjet": "^4.37.0" }, "devDependencies": { From 1e00d86ccfa26d8b15f1cc092af6cbe09a95b41f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 23:06:04 +0000 Subject: [PATCH 24/34] Bump dart from `efaf686` to `4bddd6c` in /auto_submit (#3372) Bumps dart from `efaf686` to `4bddd6c`. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dart&package-manager=docker&previous-version=beta&new-version=beta)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- auto_submit/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto_submit/Dockerfile b/auto_submit/Dockerfile index c116a70a8..d83a76cb1 100644 --- a/auto_submit/Dockerfile +++ b/auto_submit/Dockerfile @@ -4,7 +4,7 @@ # Dart Docker official images can be found here: https://hub.docker.com/_/dart -FROM dart:beta@sha256:efaf6869b58b3cac03a1a9b98c3ee93fe7b2a61f6ce2db1c05516c10653a9a0d +FROM dart:beta@sha256:4bddd6ccaed32d2d2b8c27bcd71b1ebca13cec47f3abe7b12f640f9432da8e83 WORKDIR /app From 493d0c849ae60b29b55a5d3aef920b9b42099d37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 22:29:13 +0000 Subject: [PATCH 25/34] Bump dart from `20a61a5` to `4bddd6c` in /app_dart (#3374) Bumps dart from `20a61a5` to `4bddd6c`. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dart&package-manager=docker&previous-version=beta&new-version=beta)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- app_dart/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/Dockerfile b/app_dart/Dockerfile index 878a544a8..d83a76cb1 100644 --- a/app_dart/Dockerfile +++ b/app_dart/Dockerfile @@ -4,7 +4,7 @@ # Dart Docker official images can be found here: https://hub.docker.com/_/dart -FROM dart:beta@sha256:20a61a53046b1c433f7eb0f0f809cb08b4971b643bf6d3fc75916eba7950a53a +FROM dart:beta@sha256:4bddd6ccaed32d2d2b8c27bcd71b1ebca13cec47f3abe7b12f640f9432da8e83 WORKDIR /app From 99cd5889f4fab927ec558aecbeb0ab4a72280864 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 22:26:06 +0000 Subject: [PATCH 26/34] Bump eslint-plugin-prettier from 5.1.1 to 5.1.2 in /gh_actions/third_party/no-response (#3376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.1.1 to 5.1.2.
Release notes

Sourced from eslint-plugin-prettier's releases.

v5.1.2

5.1.2

Patch Changes

  • #623 8210e44 Thanks @​BPScott! - Add exports mapping to package.json, to allow import eslintPluginRecommended from 'eslint-plugin-prettier/recommended' to work as expected.

    Strictly speaking this is a breaking change as it removes the ability for people to import from "eslint-plugin-prettier/eslint-plugin-prettier.js" and "eslint-plugin-prettier/recommended.js" but the former was never recommended in the first place and the latter has only been available for a few days.

  • #621 2b09e7f Thanks @​JounQin! - feat: support parsing markdown via eslint-mdx natively

    What means the following is unnecessary anymore when using with eslint-mdx/eslint-plugin-mdx!

    [
      {
        files: ["**/*.md"],
        rules: { "prettier/prettier": ["error", { parser: "markdown" }] },
      },
      {
        files: ["**/*.mdx"],
        rules: { "prettier/prettier": ["error", { parser: "mdx" }] },
      },
    ]
    

Full Changelog: https://github.com/prettier/eslint-plugin-prettier/compare/v5.1.1...v5.1.2

Changelog

Sourced from eslint-plugin-prettier's changelog.

5.1.2

Patch Changes

  • #623 8210e44 Thanks @​BPScott! - Add exports mapping to package.json, to allow import eslintPluginRecommended from 'eslint-plugin-prettier/recommended' to work as expected.

    Strictly speaking this is a breaking change as it removes the ability for people to import from "eslint-plugin-prettier/eslint-plugin-prettier.js" and "eslint-plugin-prettier/recommended.js" but the former was never recommended in the first place and the latter has only been available for a few days.

  • #621 2b09e7f Thanks @​JounQin! - feat: support parsing markdown via eslint-mdx natively

    What means the following is unnecessary anymore when using with eslint-mdx/eslint-plugin-mdx!

    [
      {
        files: ['**/*.md'],
        rules: { 'prettier/prettier': ['error', { parser: 'markdown' }] },
      },
      {
        files: ['**/*.mdx'],
        rules: { 'prettier/prettier': ['error', { parser: 'mdx' }] },
      },
    ]
    
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-prettier&package-manager=npm_and_yarn&previous-version=5.1.1&new-version=5.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 64 +++++++++---------- .../third_party/no-response/package.json | 2 +- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index 2af35570c..6091e8a23 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "eslint-plugin-prettier": "^5.1.1", + "eslint-plugin-prettier": "^5.1.2", "scramjet": "^4.37.0" }, "devDependencies": { @@ -2316,9 +2316,9 @@ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "engines": { "node": ">=0.6" } @@ -3411,18 +3411,18 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.1.tgz", - "integrity": "sha512-WQpV3mSmIobb77s4qiCZu3dBrZZ0rj8ckSfBtRrgNK9Wnh2s3eiaxNTWloz1LJ1WtvqZES/PAI7PLvsrGt/CEA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz", + "integrity": "sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==", "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.8.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", @@ -3666,9 +3666,9 @@ } }, "node_modules/execa/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "dependencies": { "path-key": "^4.0.0" }, @@ -6718,12 +6718,12 @@ "dev": true }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", + "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/utils": "^2.4.2", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9025,9 +9025,9 @@ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==" }, "bplist-parser": { "version": "0.2.0", @@ -9864,12 +9864,12 @@ "dev": true }, "eslint-plugin-prettier": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.1.tgz", - "integrity": "sha512-WQpV3mSmIobb77s4qiCZu3dBrZZ0rj8ckSfBtRrgNK9Wnh2s3eiaxNTWloz1LJ1WtvqZES/PAI7PLvsrGt/CEA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz", + "integrity": "sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==", "requires": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.8.6" } }, "eslint-rule-documentation": { @@ -9966,9 +9966,9 @@ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" }, "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "requires": { "path-key": "^4.0.0" } @@ -12159,12 +12159,12 @@ "dev": true }, "synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", + "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", "requires": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/utils": "^2.4.2", + "tslib": "^2.6.2" } }, "test-exclude": { diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index 8d16980cd..829ab9fc7 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -27,7 +27,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "eslint-plugin-prettier": "^5.1.1", + "eslint-plugin-prettier": "^5.1.2", "scramjet": "^4.37.0" }, "devDependencies": { From 2d94b88e04fd0c7b7a26482fc2362517052f290b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 22:26:07 +0000 Subject: [PATCH 27/34] Bump @typescript-eslint/parser from 6.15.0 to 6.16.0 in /gh_actions/third_party/no-response (#3375) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.15.0 to 6.16.0.
Release notes

Sourced from @​typescript-eslint/parser's releases.

v6.16.0

6.16.0 (2023-12-25)

Bug Fixes

  • eslint-plugin: [unbound-method] exempt all non-Promise built-in statics (#8096) (3182959)

Features

  • eslint-plugin: deprecate formatting rules (#8073) (04dea84)
  • typescript-estree: add allowDefaultProjectForFiles project service allowlist option (#7752) (7ddadda)

You can read about our versioning strategy and releases on our website.

Changelog

Sourced from @​typescript-eslint/parser's changelog.

6.16.0 (2023-12-25)

Note: Version bump only for package @​typescript-eslint/parser

You can read about our versioning strategy and releases on our website.

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@typescript-eslint/parser&package-manager=npm_and_yarn&previous-version=6.15.0&new-version=6.16.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 142 ++++++++++++------ .../third_party/no-response/package.json | 2 +- 2 files changed, 94 insertions(+), 50 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index 6091e8a23..ae6f669e2 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -18,7 +18,7 @@ "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", "@types/node": "^20.10.5", - "@typescript-eslint/parser": "^6.15.0", + "@typescript-eslint/parser": "^6.16.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", @@ -1640,15 +1640,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", - "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", + "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.15.0", - "@typescript-eslint/types": "6.15.0", - "@typescript-eslint/typescript-estree": "6.15.0", - "@typescript-eslint/visitor-keys": "6.15.0", + "@typescript-eslint/scope-manager": "6.16.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/typescript-estree": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4" }, "engines": { @@ -1668,13 +1668,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", - "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", + "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.15.0", - "@typescript-eslint/visitor-keys": "6.15.0" + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1685,9 +1685,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", - "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", + "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1698,16 +1698,17 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", - "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", + "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.15.0", - "@typescript-eslint/visitor-keys": "6.15.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -1725,12 +1726,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", - "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", + "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/types": "6.16.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -1741,6 +1742,30 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/parser/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -8571,59 +8596,78 @@ } }, "@typescript-eslint/parser": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", - "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", + "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.15.0", - "@typescript-eslint/types": "6.15.0", - "@typescript-eslint/typescript-estree": "6.15.0", - "@typescript-eslint/visitor-keys": "6.15.0", + "@typescript-eslint/scope-manager": "6.16.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/typescript-estree": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", - "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", + "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", "dev": true, "requires": { - "@typescript-eslint/types": "6.15.0", - "@typescript-eslint/visitor-keys": "6.15.0" + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0" } }, "@typescript-eslint/types": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", - "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", + "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", - "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", + "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.15.0", - "@typescript-eslint/visitor-keys": "6.15.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/visitor-keys": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", - "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", + "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", "dev": true, "requires": { - "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/types": "6.16.0", "eslint-visitor-keys": "^3.4.1" } }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index 829ab9fc7..74fcfce50 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -34,7 +34,7 @@ "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", "@types/node": "^20.10.5", - "@typescript-eslint/parser": "^6.15.0", + "@typescript-eslint/parser": "^6.16.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", From 6eff96ac472af6420d28d6516e356291c846e6ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 22:28:21 +0000 Subject: [PATCH 28/34] Bump graphql from 5.2.0-beta.6 to 5.2.0-beta.7 in /auto_submit (#3377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [graphql](https://github.com/zino-app/graphql-flutter/tree/main/packages) from 5.2.0-beta.6 to 5.2.0-beta.7.
Release notes

Sourced from graphql's releases.

graphql-v5.2.0-beta.7

Fixed

Commits
  • e7a06db docs(graphql): release the new beta version
  • 4fa6dd6 fix(graphql): bump uuid dependency to ^4.0.0
  • 8b9a2b2 fix(client): prevent double serialization of operations for websockets
  • 011c060 docs(graphql_flutter): generate changelog for new beta
  • dd53e61 feat: bump connectivity_plus to 5.0.0
  • b8b145e Merge pull request #1367 from ronnnnn/chore-bump-flutter-hooks
  • 7496165 chore: bump up flutter_hooks with constraint
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=graphql&package-manager=pub&previous-version=5.2.0-beta.6&new-version=5.2.0-beta.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- auto_submit/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto_submit/pubspec.yaml b/auto_submit/pubspec.yaml index c403a0871..921bafd33 100644 --- a/auto_submit/pubspec.yaml +++ b/auto_submit/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: github: 9.20.0 googleapis: 11.4.0 googleapis_auth: 1.4.1 - graphql: 5.2.0-beta.6 + graphql: 5.2.0-beta.7 gql: 1.0.1-alpha+1691943394579 http: 1.1.2 json_annotation: 4.8.1 From 0f908062ad3bb5ecff93450caef571a5137e8b0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 23:08:05 +0000 Subject: [PATCH 29/34] Bump graphql from 5.2.0-beta.6 to 5.2.0-beta.7 in /app_dart (#3378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [graphql](https://github.com/zino-app/graphql-flutter/tree/main/packages) from 5.2.0-beta.6 to 5.2.0-beta.7.
Release notes

Sourced from graphql's releases.

graphql-v5.2.0-beta.7

Fixed

Commits
  • e7a06db docs(graphql): release the new beta version
  • 4fa6dd6 fix(graphql): bump uuid dependency to ^4.0.0
  • 8b9a2b2 fix(client): prevent double serialization of operations for websockets
  • 011c060 docs(graphql_flutter): generate changelog for new beta
  • dd53e61 feat: bump connectivity_plus to 5.0.0
  • b8b145e Merge pull request #1367 from ronnnnn/chore-bump-flutter-hooks
  • 7496165 chore: bump up flutter_hooks with constraint
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=graphql&package-manager=pub&previous-version=5.2.0-beta.6&new-version=5.2.0-beta.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- app_dart/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_dart/pubspec.yaml b/app_dart/pubspec.yaml index 089156344..372da7714 100644 --- a/app_dart/pubspec.yaml +++ b/app_dart/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: googleapis: 11.4.0 googleapis_auth: 1.4.1 gql: 1.0.1-alpha+1696717343881 - graphql: 5.2.0-beta.6 + graphql: 5.2.0-beta.7 grpc: 3.2.4 http: 1.1.2 json_annotation: 4.8.1 From ca267264fad694004c4b4fabdd3091f1d58e5060 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 22:37:33 +0000 Subject: [PATCH 30/34] Bump eslint-plugin-jest from 27.6.0 to 27.6.1 in /gh_actions/third_party/no-response (#3379) Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.6.0 to 27.6.1.
Release notes

Sourced from eslint-plugin-jest's releases.

v27.6.1

27.6.1 (2024-01-01)

Bug Fixes

  • include plugin meta information with snapshot processor for ESLint v9 (#1484) (067e246)
Changelog

Sourced from eslint-plugin-jest's changelog.

27.6.1 (2024-01-01)

Bug Fixes

  • include plugin meta information with snapshot processor for ESLint v9 (#1484) (067e246)
Commits
  • 36e5399 chore(release): 27.6.1 [skip ci]
  • 067e246 fix: include plugin meta information with snapshot processor for ESLint v9 ...
  • f8ae570 chore(deps): lock file maintenance
  • 470c89a chore(deps): lock file maintenance
  • 97f4041 chore(deps): lock file maintenance
  • e40b13f chore(deps): lock file maintenance
  • 3fc4634 chore(deps): lock file maintenance
  • 8b85ecb chore: use relative path to parent tsconfig.json (#1476)
  • e4a7679 chore(deps): lock file maintenance (#1467)
  • 3fddf2f chore: avoid TypeScript 5.3 (#1473)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-jest&package-manager=npm_and_yarn&previous-version=27.6.0&new-version=27.6.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 14 +++++++------- gh_actions/third_party/no-response/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index ae6f669e2..00964e94a 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -22,7 +22,7 @@ "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", - "eslint-plugin-jest": "^27.6.0", + "eslint-plugin-jest": "^27.6.1", "extract-pr-titles": "^1.1.0", "jest": "^29.7.0", "js-yaml": "^4.1.0", @@ -3235,9 +3235,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "27.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", - "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "version": "27.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.1.tgz", + "integrity": "sha512-WEYkyVXD9NlmFBKvrkmzrC+C9yZoz5pAml2hO19PlS3spJtoiwj4p2u8spd/7zx5IvRsZsCmsoImaAvBB9X93Q==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -9785,9 +9785,9 @@ } }, "eslint-plugin-jest": { - "version": "27.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", - "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "version": "27.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.1.tgz", + "integrity": "sha512-WEYkyVXD9NlmFBKvrkmzrC+C9yZoz5pAml2hO19PlS3spJtoiwj4p2u8spd/7zx5IvRsZsCmsoImaAvBB9X93Q==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index 74fcfce50..69f59cf6e 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -38,7 +38,7 @@ "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", - "eslint-plugin-jest": "^27.6.0", + "eslint-plugin-jest": "^27.6.1", "extract-pr-titles": "^1.1.0", "jest": "^29.7.0", "js-yaml": "^4.1.0", From 7b31a98260990fc5f6fa575f562da891d4ffe892 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 22:38:35 +0000 Subject: [PATCH 31/34] Bump @typescript-eslint/parser from 6.16.0 to 6.17.0 in /gh_actions/third_party/no-response (#3380) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.16.0 to 6.17.0.
Release notes

Sourced from @​typescript-eslint/parser's releases.

v6.17.0

6.17.0 (2024-01-01)

Bug Fixes

  • eslint-plugin: [no-restricted-imports] prevent crash when patterns or paths in options are empty (#8108) (675e987)

Features

  • eslint-plugin: [no-floating-promises] flag result of .map(async) (#7897) (5857356)
  • eslint-plugin: [switch-exhaustiveness-check] add an option to warn against a default case on an already exhaustive switch (#7539) (6a219bd)

You can read about our versioning strategy and releases on our website.

Changelog

Sourced from @​typescript-eslint/parser's changelog.

6.17.0 (2024-01-01)

Note: Version bump only for package @​typescript-eslint/parser

You can read about our versioning strategy and releases on our website.

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@typescript-eslint/parser&package-manager=npm_and_yarn&previous-version=6.16.0&new-version=6.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- .../third_party/no-response/package-lock.json | 98 +++++++++---------- .../third_party/no-response/package.json | 2 +- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/gh_actions/third_party/no-response/package-lock.json b/gh_actions/third_party/no-response/package-lock.json index 00964e94a..254293c5d 100644 --- a/gh_actions/third_party/no-response/package-lock.json +++ b/gh_actions/third_party/no-response/package-lock.json @@ -18,7 +18,7 @@ "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", "@types/node": "^20.10.5", - "@typescript-eslint/parser": "^6.16.0", + "@typescript-eslint/parser": "^6.17.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", @@ -1640,15 +1640,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", - "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.17.0.tgz", + "integrity": "sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/typescript-estree": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4" }, "engines": { @@ -1668,13 +1668,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", - "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.17.0.tgz", + "integrity": "sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0" + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1685,9 +1685,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", - "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.17.0.tgz", + "integrity": "sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1698,13 +1698,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", - "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.17.0.tgz", + "integrity": "sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1726,12 +1726,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", - "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.17.0.tgz", + "integrity": "sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/types": "6.17.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -8596,42 +8596,42 @@ } }, "@typescript-eslint/parser": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", - "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.17.0.tgz", + "integrity": "sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/typescript-estree": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", - "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.17.0.tgz", + "integrity": "sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0" + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0" } }, "@typescript-eslint/types": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", - "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.17.0.tgz", + "integrity": "sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", - "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.17.0.tgz", + "integrity": "sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -8641,12 +8641,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", - "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.17.0.tgz", + "integrity": "sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/types": "6.17.0", "eslint-visitor-keys": "^3.4.1" } }, diff --git a/gh_actions/third_party/no-response/package.json b/gh_actions/third_party/no-response/package.json index 69f59cf6e..2c42bbca3 100644 --- a/gh_actions/third_party/no-response/package.json +++ b/gh_actions/third_party/no-response/package.json @@ -34,7 +34,7 @@ "@octokit/webhooks-types": "^7.3.1", "@types/jest": "^29.5.11", "@types/node": "^20.10.5", - "@typescript-eslint/parser": "^6.16.0", + "@typescript-eslint/parser": "^6.17.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.56.0", "eslint-plugin-github": "^4.10.1", From d2fdd49586bdd843136e0eacf8b29f92e93796f5 Mon Sep 17 00:00:00 2001 From: keyonghan <54558023+keyonghan@users.noreply.github.com> Date: Tue, 2 Jan 2024 11:23:13 -0800 Subject: [PATCH 32/34] Correct cronjob format to fix parse errors (#3383) Fixes: https://github.com/flutter/flutter/issues/140813 --- cron.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cron.yaml b/cron.yaml index bb497e647..bf1525e53 100644 --- a/cron.yaml +++ b/cron.yaml @@ -10,8 +10,8 @@ cron: # TODO(keyonghan): will delete if `In Progress` hanging issue is resolved: # https://github.com/flutter/flutter/issues/120395#issuecomment-1444810718 - description: vacuum stale tasks - url: /api/scheduler/vacuum-stale-tasks - schedule: every 12 hours + url: /api/scheduler/vacuum-stale-tasks + schedule: every 12 hours - description: backfills builds url: /api/scheduler/batch-backfiller From f6a3c6c49602061b3ffa418079b396f74116ac2f Mon Sep 17 00:00:00 2001 From: Drew Roen <102626803+drewroengoogle@users.noreply.github.com> Date: Tue, 2 Jan 2024 13:35:10 -0600 Subject: [PATCH 33/34] Remove slsa-verifier tech debt (#3382) * Remove the provenance injection workaround, as provenance should be correctly created now, and slsa-verifier 2.4.1 no longer requires this piece anyway --- cloud_build/get_docker_image_provenance.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cloud_build/get_docker_image_provenance.sh b/cloud_build/get_docker_image_provenance.sh index 2d40040ab..e36afae6f 100755 --- a/cloud_build/get_docker_image_provenance.sh +++ b/cloud_build/get_docker_image_provenance.sh @@ -6,7 +6,9 @@ # This script is used to pull a docker image's provenance and save it to a file. DOCKER_IMAGE_URL=$1 OUTPUT_DIRECTORY=$2 -# Getting the docker image provenance can be flaky, so retry up to 3 times. +# Getting the docker image provenance can be flaky due to the provenance not +# uploading fast enough, or a transient error from artifact registry, so retry +# up to 3 times. MAX_ATTEMPTS=3 # Download the jq binary in order to obtain the artifact registry url from the @@ -18,10 +20,8 @@ for attempt in $(seq 1 $MAX_ATTEMPTS) do echo "(Attempt $attempt) Obtaining provenance for $1" gcloud artifacts docker images describe \ - $DOCKER_IMAGE_URL --show-provenance --format json > tmp.json + $DOCKER_IMAGE_URL --show-provenance --format json > $OUTPUT_DIRECTORY COMMAND_RESULT=$? - val=$(cat tmp.json | jq -r '.provenance_summary.provenance[0].envelope.payload' | base64 -d | jq '.predicate.recipe.arguments.sourceProvenance') - cat tmp.json | jq ".provenance_summary.provenance[0].build.intotoStatement.slsaProvenance.recipe.arguments.sourceProvenance = ${val}" > $OUTPUT_DIRECTORY if [[ $COMMAND_RESULT -eq 0 ]] then echo "Successfully obtained provenance and saved to $2" From ce8e4c1beeb17cf3aa6edb07244cd84bf0280879 Mon Sep 17 00:00:00 2001 From: Casey Hillers Date: Wed, 3 Jan 2024 09:48:58 -0800 Subject: [PATCH 34/34] [app_dart] Refactor server to run locally (#3364) Fixes https://github.com/flutter/flutter/issues/129651 * There's various issues with running the appengine context locally, and I seem to lack permissions * This refactors most of the routing logic into lib, which verifies there's no breakages in this block of code --- README.md | 14 +- app_dart/Dockerfile | 2 +- app_dart/README.md | 14 +- app_dart/bin/gae_server.dart | 78 +++++ app_dart/bin/local_server.dart | 84 +++++ app_dart/bin/server.dart | 326 ------------------ app_dart/lib/server.dart | 282 +++++++++++++++ .../src/model/appengine/cocoon_config.dart | 8 + app_dart/lib/src/service/config.dart | 10 +- app_dart/test/server_test.dart | 35 ++ .../test/src/datastore/fake_datastore.dart | 5 +- 11 files changed, 499 insertions(+), 359 deletions(-) create mode 100644 app_dart/bin/gae_server.dart create mode 100644 app_dart/bin/local_server.dart delete mode 100644 app_dart/bin/server.dart create mode 100644 app_dart/lib/server.dart create mode 100644 app_dart/test/server_test.dart diff --git a/README.md b/README.md index e2280ddcb..9999e92e2 100644 --- a/README.md +++ b/README.md @@ -71,24 +71,14 @@ All the commands in this section assume that you are in the ### Running a local dev server -**This is for legacy users who were granted old security keys. Due to overground, this is no longer supported.** - ```sh -$ export GOOGLE_CLOUD_PROJECT=flutter-dashboard-dev # or flutter-dashboard for prod data -$ export GCLOUD_KEY=#your_secret # Required for reading/writing from Google Cloud -$ export COCOON_USE_IN_MEMORY_CACHE=true # Use an in memory cache locally instead of redis to prevent corruption -$ dart bin/server.dart +dart bin/local_server.dart ``` + This will output `Serving requests at 0.0.0.0:8080` indicating the server is working. New requests will be logged to the console. -To develop and test some features, you need to have a local service -account(key.json) with access to the project you will be connecting to. - -If you work for Google you can use the key with flutter-dashboard project -via [internal doc](https://g3doc.corp.google.com/company/teams/flutter/infrastructure/cocoon/local_development.md?cl=head#test-with-flutter-dashboard-dev-project). - ### Deploying a test version on Google Cloud To run live tests, build the app, and provide instructions for deploying to diff --git a/app_dart/Dockerfile b/app_dart/Dockerfile index d83a76cb1..4814d8d53 100644 --- a/app_dart/Dockerfile +++ b/app_dart/Dockerfile @@ -14,4 +14,4 @@ RUN dart pub get # Start server. EXPOSE 8080 -CMD ["/usr/lib/dart/bin/dart", "/app/bin/server.dart"] +CMD ["/usr/lib/dart/bin/dart", "/app/bin/gae_server.dart"] diff --git a/app_dart/README.md b/app_dart/README.md index d135d79b2..30cb9cfa0 100644 --- a/app_dart/README.md +++ b/app_dart/README.md @@ -11,7 +11,7 @@ This folder contains a Dart based backend for Cocoon. and authenticate yourself by running: ```sh -gcloud auth login +gcloud auth application-default login gcloud init ``` * [Install Flutter](https://flutter.dev/docs/get-started/install ) @@ -82,20 +82,10 @@ $ gcloud datastore indexes create index.yaml #### Using physical machine -* Setting up the environment - -```sh -export COCOON_USE_IN_MEMORY_CACHE=true -``` - -This environment is needed as you don't have access to the remote redis -instance during local development. - * Starting server ```sh -export COCOON_USE_IN_MEMORY_CACHE=true -dart bin/server.dart +dart bin/local_server.dart ``` If you see Serving requests at 0.0.0.0:8080 the dev server is working. diff --git a/app_dart/bin/gae_server.dart b/app_dart/bin/gae_server.dart new file mode 100644 index 000000000..378f1f255 --- /dev/null +++ b/app_dart/bin/gae_server.dart @@ -0,0 +1,78 @@ +// Copyright 2019 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:io'; + +import 'package:appengine/appengine.dart'; +import 'package:cocoon_service/cocoon_service.dart'; +import 'package:cocoon_service/server.dart'; +import 'package:cocoon_service/src/service/commit_service.dart'; +import 'package:gcloud/db.dart'; + +Future main() async { + await withAppEngineServices(() async { + useLoggingPackageAdaptor(); + + final CacheService cache = CacheService(inMemory: false); + final Config config = Config(dbService, cache); + final AuthenticationProvider authProvider = AuthenticationProvider(config: config); + final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config); + final BuildBucketClient buildBucketClient = BuildBucketClient( + accessTokenService: AccessTokenService.defaultProvider(config), + ); + + /// LUCI service class to communicate with buildBucket service. + final LuciBuildService luciBuildService = LuciBuildService( + config: config, + cache: cache, + buildBucketClient: buildBucketClient, + pubsub: const PubSub(), + ); + + /// Github checks api service used to provide luci test execution status on the Github UI. + final GithubChecksService githubChecksService = GithubChecksService( + config, + ); + + // Gerrit service class to communicate with GoB. + final GerritService gerritService = GerritService(config: config); + + /// Cocoon scheduler service to manage validating commits in presubmit and postsubmit. + final Scheduler scheduler = Scheduler( + cache: cache, + config: config, + githubChecksService: githubChecksService, + luciBuildService: luciBuildService, + ); + + final BranchService branchService = BranchService( + config: config, + gerritService: gerritService, + ); + + final CommitService commitService = CommitService(config: config); + + final Server server = createServer( + config: config, + cache: cache, + authProvider: authProvider, + branchService: branchService, + buildBucketClient: buildBucketClient, + gerritService: gerritService, + scheduler: scheduler, + luciBuildService: luciBuildService, + githubChecksService: githubChecksService, + commitService: commitService, + swarmingAuthProvider: swarmingAuthProvider, + ); + + return runAppEngine( + server, + onAcceptingConnections: (InternetAddress address, int port) { + final String host = address.isLoopback ? 'localhost' : address.host; + print('Serving requests at http://$host:$port/'); + }, + ); + }); +} diff --git a/app_dart/bin/local_server.dart b/app_dart/bin/local_server.dart new file mode 100644 index 000000000..0bd8bc1c0 --- /dev/null +++ b/app_dart/bin/local_server.dart @@ -0,0 +1,84 @@ +// Copyright 2019 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:io'; + +import 'package:appengine/appengine.dart'; +import 'package:cocoon_service/cocoon_service.dart'; +import 'package:cocoon_service/server.dart'; +import 'package:cocoon_service/src/model/appengine/cocoon_config.dart'; +import 'package:cocoon_service/src/service/commit_service.dart'; +import 'package:cocoon_service/src/service/datastore.dart'; +import 'package:gcloud/db.dart'; + +import '../test/src/datastore/fake_datastore.dart'; + +Future main() async { + final CacheService cache = CacheService(inMemory: false); + final DatastoreDB dbService = FakeDatastoreDB(); + final DatastoreService datastoreService = DatastoreService(dbService, defaultMaxEntityGroups); + await datastoreService.insert([ + CocoonConfig.fake(dbService.emptyKey.append(CocoonConfig, id: 'WebhookKey'), 'fake-secret'), + CocoonConfig.fake(dbService.emptyKey.append(CocoonConfig, id: 'FrobWebhookKey'), 'fake-secret'), + ]); + final Config config = Config(dbService, cache); + final AuthenticationProvider authProvider = AuthenticationProvider(config: config); + final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config); + final BuildBucketClient buildBucketClient = BuildBucketClient( + accessTokenService: AccessTokenService.defaultProvider(config), + ); + + /// LUCI service class to communicate with buildBucket service. + final LuciBuildService luciBuildService = LuciBuildService( + config: config, + cache: cache, + buildBucketClient: buildBucketClient, + pubsub: const PubSub(), + ); + + /// Github checks api service used to provide luci test execution status on the Github UI. + final GithubChecksService githubChecksService = GithubChecksService( + config, + ); + + // Gerrit service class to communicate with GoB. + final GerritService gerritService = GerritService(config: config); + + /// Cocoon scheduler service to manage validating commits in presubmit and postsubmit. + final Scheduler scheduler = Scheduler( + cache: cache, + config: config, + githubChecksService: githubChecksService, + luciBuildService: luciBuildService, + ); + + final BranchService branchService = BranchService( + config: config, + gerritService: gerritService, + ); + + final CommitService commitService = CommitService(config: config); + + final Server server = createServer( + config: config, + cache: cache, + authProvider: authProvider, + branchService: branchService, + buildBucketClient: buildBucketClient, + gerritService: gerritService, + scheduler: scheduler, + luciBuildService: luciBuildService, + githubChecksService: githubChecksService, + commitService: commitService, + swarmingAuthProvider: swarmingAuthProvider, + ); + + return runAppEngine( + server, + onAcceptingConnections: (InternetAddress address, int port) { + final String host = address.isLoopback ? 'localhost' : address.host; + print('Serving requests at http://$host:$port/'); + }, + ); +} diff --git a/app_dart/bin/server.dart b/app_dart/bin/server.dart deleted file mode 100644 index f977e8064..000000000 --- a/app_dart/bin/server.dart +++ /dev/null @@ -1,326 +0,0 @@ -// Copyright 2019 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:io'; -import 'dart:math'; - -import 'package:appengine/appengine.dart'; -import 'package:cocoon_service/cocoon_service.dart'; -import 'package:cocoon_service/src/service/commit_service.dart'; -import 'package:gcloud/db.dart'; - -/// For local development, you might want to set this to true. -const String _kCocoonUseInMemoryCache = 'COCOON_USE_IN_MEMORY_CACHE'; - -Future main() async { - await withAppEngineServices(() async { - useLoggingPackageAdaptor(); - - final bool inMemoryCache = Platform.environment[_kCocoonUseInMemoryCache] == 'true'; - final CacheService cache = CacheService(inMemory: inMemoryCache); - - final Config config = Config(dbService, cache); - final AuthenticationProvider authProvider = AuthenticationProvider(config: config); - final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config); - final BuildBucketClient buildBucketClient = BuildBucketClient( - accessTokenService: AccessTokenService.defaultProvider(config), - ); - - /// LUCI service class to communicate with buildBucket service. - final LuciBuildService luciBuildService = LuciBuildService( - config: config, - cache: cache, - buildBucketClient: buildBucketClient, - pubsub: const PubSub(), - ); - - /// Github checks api service used to provide luci test execution status on the Github UI. - final GithubChecksService githubChecksService = GithubChecksService( - config, - ); - - // Gerrit service class to communicate with GoB. - final GerritService gerritService = GerritService(config: config); - - /// Cocoon scheduler service to manage validating commits in presubmit and postsubmit. - final Scheduler scheduler = Scheduler( - cache: cache, - config: config, - githubChecksService: githubChecksService, - luciBuildService: luciBuildService, - ); - - final BranchService branchService = BranchService( - config: config, - gerritService: gerritService, - ); - - final CommitService commitService = CommitService(config: config); - - final Map> handlers = >{ - '/api/check_flaky_builders': CheckFlakyBuilders( - config: config, - authenticationProvider: authProvider, - ), - '/api/create-branch': CreateBranch( - branchService: branchService, - config: config, - authenticationProvider: authProvider, - ), - '/api/dart-internal-subscription': DartInternalSubscription( - cache: cache, - config: config, - buildBucketClient: buildBucketClient, - ), - '/api/file_flaky_issue_and_pr': FileFlakyIssueAndPR( - config: config, - authenticationProvider: authProvider, - ), - '/api/flush-cache': FlushCache( - config: config, - authenticationProvider: authProvider, - cache: cache, - ), - '/api/github-webhook-pullrequest': GithubWebhook( - config: config, - pubsub: const PubSub(), - secret: config.webhookKey, - topic: 'github-webhooks', - ), - // TODO(chillers): Move to release service. https://github.com/flutter/flutter/issues/132082 - '/api/github/frob-webhook': GithubWebhook( - config: config, - pubsub: const PubSub(), - secret: config.frobWebhookKey, - topic: 'frob-webhooks', - ), - '/api/github/webhook-subscription': GithubWebhookSubscription( - config: config, - cache: cache, - gerritService: gerritService, - githubChecksService: githubChecksService, - scheduler: scheduler, - commitService: commitService, - ), - '/api/presubmit-luci-subscription': PresubmitLuciSubscription( - cache: cache, - config: config, - buildBucketClient: buildBucketClient, - luciBuildService: luciBuildService, - githubChecksService: githubChecksService, - scheduler: scheduler, - ), - '/api/postsubmit-luci-subscription': PostsubmitLuciSubscription( - cache: cache, - config: config, - scheduler: scheduler, - githubChecksService: githubChecksService, - ), - '/api/push-build-status-to-github': PushBuildStatusToGithub( - config: config, - authenticationProvider: authProvider, - ), - '/api/push-gold-status-to-github': PushGoldStatusToGithub( - config: config, - authenticationProvider: authProvider, - ), - '/api/reset-prod-task': ResetProdTask( - config: config, - authenticationProvider: authProvider, - luciBuildService: luciBuildService, - scheduler: scheduler, - ), - '/api/reset-try-task': ResetTryTask( - config: config, - authenticationProvider: authProvider, - scheduler: scheduler, - ), - '/api/scheduler/batch-backfiller': BatchBackfiller( - config: config, - scheduler: scheduler, - ), - '/api/scheduler/batch-request-subscription': SchedulerRequestSubscription( - cache: cache, - config: config, - buildBucketClient: buildBucketClient, - ), - '/api/scheduler/vacuum-stale-tasks': VacuumStaleTasks( - config: config, - ), - '/api/update_existing_flaky_issues': UpdateExistingFlakyIssue( - config: config, - authenticationProvider: authProvider, - ), - - /// Updates task related details. - /// - /// This API updates task status in datastore and - /// pushes performance metrics to skia-perf. - /// - /// POST: /api-update-status - /// - /// Parameters: - /// CommitBranch: (string in body). Branch of commit. - /// CommitSha: (string in body). Sha of commit. - /// BuilderName: (string in body). Name of the luci builder. - /// NewStatus: (string in body) required. Status of the task. - /// ResultData: (string in body) optional. Benchmark data. - /// BenchmarkScoreKeys: (string in body) optional. Benchmark data. - /// - /// Response: Status 200 OK - '/api/update-task-status': UpdateTaskStatus( - config: config, - authenticationProvider: swarmingAuthProvider, - ), - '/api/vacuum-github-commits': VacuumGithubCommits( - config: config, - authenticationProvider: authProvider, - scheduler: scheduler, - ), - - /// Returns status of the framework tree. - /// - /// Returns serialized proto with enum representing the - /// status of the tree and list of offending tasks. - /// - /// GET: /api/public/build-status - /// - /// Parameters: - /// branch: (string in query) default: 'master'. Name of the repo branch. - /// - /// Response: Status 200 OK - /// Returns [BuildStatusResponse]: - /// { - /// 1: 2, - /// 2: [ "win_tool_tests_commands", "win_build_test", "win_module_test"] - /// } - '/api/public/build-status': CacheRequestHandler( - cache: cache, - config: config, - delegate: GetBuildStatus(config: config), - ttl: const Duration(seconds: 15), - ), - '/api/public/build-status-badge': CacheRequestHandler( - cache: cache, - config: config, - delegate: GetBuildStatusBadge(config: config), - ttl: const Duration(seconds: 15), - ), - '/api/public/get-release-branches': CacheRequestHandler( - cache: cache, - config: config, - delegate: GetReleaseBranches(config: config, branchService: branchService), - ttl: const Duration(hours: 1), - ), - - /// Returns task results for commits. - /// - /// Returns result details about each task in each checklist for every commit. - /// - /// GET: /api/public/get-status - /// - /// Parameters: - /// branch: (string in query) default: 'master'. Name of the repo branch. - /// lastCommitKey: (string in query) optional. Encoded commit key for the last commit to return resutls. - /// - /// Response: Status: 200 OK - /// {"Statuses":[ - /// {"Checklist":{ - /// "Key":"ah..jgM", - /// "Checklist":{"FlutterRepositoryPath":"flutter/flutter", - /// "CreateTimestamp":1620134239000, - /// "Commit":{"Sha":"7f1d1414cc5f0b0317272ced49a9c0b44e5c3af8", - /// "Message":"Revert \"Migrate to ChannelBuffers.push\"", - /// "Author":{"Login":"renyou","avatar_url":"https://avatars.githubusercontent.com/u/666474?v=4"}},"Branch":"master"}}, - /// "Stages":[{"Name":"chromebot", - /// "Tasks":[ - /// {"Task":{ - /// "ChecklistKey":"ahF..jgM", - /// "CreateTimestamp":1620134239000, - /// "StartTimestamp":0, - /// "EndTimestamp":1620136203757, - /// "Name":"linux_cubic_bezier_perf__e2e_summary", - /// "Attempts":1, - /// "Flaky":false, - /// "TimeoutInMinutes":0, - /// "Reason":"", - /// "BuildNumber":null, - /// "BuildNumberList":"1279", - /// "BuilderName":"Linux cubic_bezier_perf__e2e_summary", - /// "luciBucket":"luci.flutter.prod", - /// "RequiredCapabilities":["can-update-github"], - /// "ReservedForAgentID":"", - /// "StageName":"chromebot", - /// "Status":"Succeeded" - /// }, - /// ], - /// "Status": "InProgress", - /// ]}, - /// }, - /// } - '/api/public/get-status': CacheRequestHandler( - cache: cache, - config: config, - delegate: GetStatus(config: config), - ), - - '/api/public/get-green-commits': GetGreenCommits(config: config), - - /// Record GitHub API quota usage in BigQuery. - /// - /// Pushes data to BigQuery for metric collection to - /// analyze usage over time. - /// - /// This api is called via cron job. - /// - /// GET: /api/public/github-rate-limit-status - /// - /// Response: Status 200 OK - '/api/public/github-rate-limit-status': CacheRequestHandler( - config: config, - cache: cache, - ttl: const Duration(minutes: 1), - delegate: GithubRateLimitStatus(config: config), - ), - '/api/public/repos': GetRepos(config: config), - - /// Handler for AppEngine to identify when dart server is ready to serve requests. - '/readiness_check': ReadinessCheck(config: config), - }; - - return runAppEngine( - (HttpRequest request) async { - if (handlers.containsKey(request.uri.path)) { - final RequestHandler handler = handlers[request.uri.path]!; - await handler.service(request); - } else { - /// Requests with query parameters and anchors need to be trimmed to get the file path. - // TODO(chillers): Use toFilePath(), https://github.com/dart-lang/sdk/issues/39373 - final int queryIndex = - request.uri.path.contains('?') ? request.uri.path.indexOf('?') : request.uri.path.length; - final int anchorIndex = - request.uri.path.contains('#') ? request.uri.path.indexOf('#') : request.uri.path.length; - - /// Trim to the first instance of an anchor or query. - final int trimIndex = min(queryIndex, anchorIndex); - final String filePath = request.uri.path.substring(0, trimIndex); - - const Map redirects = { - '/build.html': '/#/build', - }; - if (redirects.containsKey(filePath)) { - request.response.statusCode = HttpStatus.permanentRedirect; - return request.response.redirect(Uri.parse(redirects[filePath]!)); - } - - await StaticFileHandler(filePath, config: config).service(request); - } - }, - onAcceptingConnections: (InternetAddress address, int port) { - final String host = address.isLoopback ? 'localhost' : address.host; - print('Serving requests at http://$host:$port/'); - }, - ); - }); -} diff --git a/app_dart/lib/server.dart b/app_dart/lib/server.dart new file mode 100644 index 000000000..5aa02cfb7 --- /dev/null +++ b/app_dart/lib/server.dart @@ -0,0 +1,282 @@ +// Copyright 2019 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:io'; +import 'dart:math'; + +import 'package:cocoon_service/cocoon_service.dart'; +import 'package:cocoon_service/src/service/commit_service.dart'; + +typedef Server = Future Function(HttpRequest); + +/// Creates a service with the given dependencies. +Server createServer({ + required Config config, + required CacheService cache, + required AuthenticationProvider authProvider, + required AuthenticationProvider swarmingAuthProvider, + required BranchService branchService, + required BuildBucketClient buildBucketClient, + required LuciBuildService luciBuildService, + required GithubChecksService githubChecksService, + required CommitService commitService, + required GerritService gerritService, + required Scheduler scheduler, +}) { + final Map> handlers = >{ + '/api/check_flaky_builders': CheckFlakyBuilders( + config: config, + authenticationProvider: authProvider, + ), + '/api/create-branch': CreateBranch( + branchService: branchService, + config: config, + authenticationProvider: authProvider, + ), + '/api/dart-internal-subscription': DartInternalSubscription( + cache: cache, + config: config, + buildBucketClient: buildBucketClient, + ), + '/api/file_flaky_issue_and_pr': FileFlakyIssueAndPR( + config: config, + authenticationProvider: authProvider, + ), + '/api/flush-cache': FlushCache( + config: config, + authenticationProvider: authProvider, + cache: cache, + ), + '/api/github-webhook-pullrequest': GithubWebhook( + config: config, + pubsub: const PubSub(), + secret: config.webhookKey, + topic: 'github-webhooks', + ), + // TODO(chillers): Move to release service. https://github.com/flutter/flutter/issues/132082 + '/api/github/frob-webhook': GithubWebhook( + config: config, + pubsub: const PubSub(), + secret: config.frobWebhookKey, + topic: 'frob-webhooks', + ), + '/api/github/webhook-subscription': GithubWebhookSubscription( + config: config, + cache: cache, + gerritService: gerritService, + githubChecksService: githubChecksService, + scheduler: scheduler, + commitService: commitService, + ), + '/api/presubmit-luci-subscription': PresubmitLuciSubscription( + cache: cache, + config: config, + buildBucketClient: buildBucketClient, + luciBuildService: luciBuildService, + githubChecksService: githubChecksService, + scheduler: scheduler, + ), + '/api/postsubmit-luci-subscription': PostsubmitLuciSubscription( + cache: cache, + config: config, + scheduler: scheduler, + githubChecksService: githubChecksService, + ), + '/api/push-build-status-to-github': PushBuildStatusToGithub( + config: config, + authenticationProvider: authProvider, + ), + '/api/push-gold-status-to-github': PushGoldStatusToGithub( + config: config, + authenticationProvider: authProvider, + ), + '/api/reset-prod-task': ResetProdTask( + config: config, + authenticationProvider: authProvider, + luciBuildService: luciBuildService, + scheduler: scheduler, + ), + '/api/reset-try-task': ResetTryTask( + config: config, + authenticationProvider: authProvider, + scheduler: scheduler, + ), + '/api/scheduler/batch-backfiller': BatchBackfiller( + config: config, + scheduler: scheduler, + ), + '/api/scheduler/batch-request-subscription': SchedulerRequestSubscription( + cache: cache, + config: config, + buildBucketClient: buildBucketClient, + ), + '/api/scheduler/vacuum-stale-tasks': VacuumStaleTasks( + config: config, + ), + '/api/update_existing_flaky_issues': UpdateExistingFlakyIssue( + config: config, + authenticationProvider: authProvider, + ), + + /// Updates task related details. + /// + /// This API updates task status in datastore and + /// pushes performance metrics to skia-perf. + /// + /// POST: /api-update-status + /// + /// Parameters: + /// CommitBranch: (string in body). Branch of commit. + /// CommitSha: (string in body). Sha of commit. + /// BuilderName: (string in body). Name of the luci builder. + /// NewStatus: (string in body) required. Status of the task. + /// ResultData: (string in body) optional. Benchmark data. + /// BenchmarkScoreKeys: (string in body) optional. Benchmark data. + /// + /// Response: Status 200 OK + '/api/update-task-status': UpdateTaskStatus( + config: config, + authenticationProvider: swarmingAuthProvider, + ), + '/api/vacuum-github-commits': VacuumGithubCommits( + config: config, + authenticationProvider: authProvider, + scheduler: scheduler, + ), + + /// Returns status of the framework tree. + /// + /// Returns serialized proto with enum representing the + /// status of the tree and list of offending tasks. + /// + /// GET: /api/public/build-status + /// + /// Parameters: + /// branch: (string in query) default: 'master'. Name of the repo branch. + /// + /// Response: Status 200 OK + /// Returns [BuildStatusResponse]: + /// { + /// 1: 2, + /// 2: [ "win_tool_tests_commands", "win_build_test", "win_module_test"] + /// } + '/api/public/build-status': CacheRequestHandler( + cache: cache, + config: config, + delegate: GetBuildStatus(config: config), + ttl: const Duration(seconds: 15), + ), + '/api/public/build-status-badge': CacheRequestHandler( + cache: cache, + config: config, + delegate: GetBuildStatusBadge(config: config), + ttl: const Duration(seconds: 15), + ), + '/api/public/get-release-branches': CacheRequestHandler( + cache: cache, + config: config, + delegate: GetReleaseBranches(config: config, branchService: branchService), + ttl: const Duration(hours: 1), + ), + + /// Returns task results for commits. + /// + /// Returns result details about each task in each checklist for every commit. + /// + /// GET: /api/public/get-status + /// + /// Parameters: + /// branch: (string in query) default: 'master'. Name of the repo branch. + /// lastCommitKey: (string in query) optional. Encoded commit key for the last commit to return resutls. + /// + /// Response: Status: 200 OK + /// {"Statuses":[ + /// {"Checklist":{ + /// "Key":"ah..jgM", + /// "Checklist":{"FlutterRepositoryPath":"flutter/flutter", + /// "CreateTimestamp":1620134239000, + /// "Commit":{"Sha":"7f1d1414cc5f0b0317272ced49a9c0b44e5c3af8", + /// "Message":"Revert \"Migrate to ChannelBuffers.push\"", + /// "Author":{"Login":"renyou","avatar_url":"https://avatars.githubusercontent.com/u/666474?v=4"}},"Branch":"master"}}, + /// "Stages":[{"Name":"chromebot", + /// "Tasks":[ + /// {"Task":{ + /// "ChecklistKey":"ahF..jgM", + /// "CreateTimestamp":1620134239000, + /// "StartTimestamp":0, + /// "EndTimestamp":1620136203757, + /// "Name":"linux_cubic_bezier_perf__e2e_summary", + /// "Attempts":1, + /// "Flaky":false, + /// "TimeoutInMinutes":0, + /// "Reason":"", + /// "BuildNumber":null, + /// "BuildNumberList":"1279", + /// "BuilderName":"Linux cubic_bezier_perf__e2e_summary", + /// "luciBucket":"luci.flutter.prod", + /// "RequiredCapabilities":["can-update-github"], + /// "ReservedForAgentID":"", + /// "StageName":"chromebot", + /// "Status":"Succeeded" + /// }, + /// ], + /// "Status": "InProgress", + /// ]}, + /// }, + /// } + '/api/public/get-status': CacheRequestHandler( + cache: cache, + config: config, + delegate: GetStatus(config: config), + ), + + '/api/public/get-green-commits': GetGreenCommits(config: config), + + /// Record GitHub API quota usage in BigQuery. + /// + /// Pushes data to BigQuery for metric collection to + /// analyze usage over time. + /// + /// This api is called via cron job. + /// + /// GET: /api/public/github-rate-limit-status + /// + /// Response: Status 200 OK + '/api/public/github-rate-limit-status': CacheRequestHandler( + config: config, + cache: cache, + ttl: const Duration(minutes: 1), + delegate: GithubRateLimitStatus(config: config), + ), + '/api/public/repos': GetRepos(config: config), + + /// Handler for AppEngine to identify when dart server is ready to serve requests. + '/readiness_check': ReadinessCheck(config: config), + }; + + return ((HttpRequest request) async { + if (handlers.containsKey(request.uri.path)) { + final RequestHandler handler = handlers[request.uri.path]!; + await handler.service(request); + } else { + /// Requests with query parameters and anchors need to be trimmed to get the file path. + // TODO(chillers): Use toFilePath(), https://github.com/dart-lang/sdk/issues/39373 + final int queryIndex = request.uri.path.contains('?') ? request.uri.path.indexOf('?') : request.uri.path.length; + final int anchorIndex = request.uri.path.contains('#') ? request.uri.path.indexOf('#') : request.uri.path.length; + + /// Trim to the first instance of an anchor or query. + final int trimIndex = min(queryIndex, anchorIndex); + final String filePath = request.uri.path.substring(0, trimIndex); + + const Map redirects = { + '/build.html': '/#/build', + }; + if (redirects.containsKey(filePath)) { + request.response.statusCode = HttpStatus.permanentRedirect; + return request.response.redirect(Uri.parse(redirects[filePath]!)); + } + await StaticFileHandler(filePath, config: config).service(request); + } + }); +} diff --git a/app_dart/lib/src/model/appengine/cocoon_config.dart b/app_dart/lib/src/model/appengine/cocoon_config.dart index 25705c175..ae898ca21 100644 --- a/app_dart/lib/src/model/appengine/cocoon_config.dart +++ b/app_dart/lib/src/model/appengine/cocoon_config.dart @@ -6,6 +6,14 @@ import 'package:gcloud/db.dart'; @Kind(name: 'CocoonConfig', idType: IdType.String) class CocoonConfig extends Model { + CocoonConfig(); + + /// Helper function only for local and test environments. + CocoonConfig.fake(Key? key, this.value) { + parentKey = key?.parent; + id = key?.id; + } + @StringProperty(propertyName: 'ParameterValue') late String value; } diff --git a/app_dart/lib/src/service/config.dart b/app_dart/lib/src/service/config.dart index cf954c837..10dc0ff76 100644 --- a/app_dart/lib/src/service/config.dart +++ b/app_dart/lib/src/service/config.dart @@ -122,12 +122,10 @@ class Config { } Future _getValueFromDatastore(String id) async { - final CocoonConfig cocoonConfig = CocoonConfig() - ..id = id - ..parentKey = _db.emptyKey; - final CocoonConfig result = await _db.lookupValue(cocoonConfig.key); - - return Uint8List.fromList(result.value.codeUnits); + final CocoonConfig? result = await _db.lookupOrNull( + _db.emptyKey.append(CocoonConfig, id: id), + ); + return Uint8List.fromList(result!.value.codeUnits); } // GitHub App properties. diff --git a/app_dart/test/server_test.dart b/app_dart/test/server_test.dart new file mode 100644 index 000000000..addb63d98 --- /dev/null +++ b/app_dart/test/server_test.dart @@ -0,0 +1,35 @@ +// Copyright 2019 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:cocoon_service/cocoon_service.dart'; +import 'package:cocoon_service/server.dart'; +import 'package:cocoon_service/src/service/commit_service.dart'; +import 'package:test/test.dart'; + +import 'src/datastore/fake_config.dart'; +import 'src/request_handling/fake_authentication.dart'; +import 'src/service/fake_buildbucket.dart'; +import 'src/service/fake_gerrit_service.dart'; +import 'src/service/fake_luci_build_service.dart'; +import 'src/service/fake_scheduler.dart'; + +void main() { + test('verify server can be created', () { + createServer( + config: FakeConfig( + webhookKeyValue: 'fake-secret', + ), + cache: CacheService(inMemory: true), + authProvider: FakeAuthenticationProvider(), + swarmingAuthProvider: FakeAuthenticationProvider(), + branchService: BranchService(config: FakeConfig(), gerritService: FakeGerritService()), + buildBucketClient: FakeBuildBucketClient(), + luciBuildService: FakeLuciBuildService(config: FakeConfig()), + githubChecksService: GithubChecksService(FakeConfig()), + commitService: CommitService(config: FakeConfig()), + gerritService: FakeGerritService(), + scheduler: FakeScheduler(config: FakeConfig()), + ); + }); +} diff --git a/app_dart/test/src/datastore/fake_datastore.dart b/app_dart/test/src/datastore/fake_datastore.dart index f749dd42b..93540f0ec 100644 --- a/app_dart/test/src/datastore/fake_datastore.dart +++ b/app_dart/test/src/datastore/fake_datastore.dart @@ -136,8 +136,9 @@ class FakeDatastoreDB implements DatastoreDB { } @override - Future lookupOrNull>(Key key) { - throw UnimplementedError(); + Future lookupOrNull>(Key key) async { + final values = await lookup(>[key]); + return values.firstOrNull as T?; } }