From 993d2801b032d5321bca5c47bb3d8c853671a500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 17 Oct 2023 00:31:46 +0200 Subject: [PATCH] Show formatted options to the user (#480) --- .vscode/launch.json | 12 +- package.json | 32 +- src/backportRun.ts | 8 +- .../getCommitsWithoutBackports.ts | 1 + .../waitForCherrypick.ts | 23 +- src/lib/github/v4/FetchPullRequestId.ts | 2 +- src/lib/github/v4/apiRequestV4.test.ts | 3 +- src/lib/github/v4/apiRequestV4.ts | 21 +- .../github/v4/disablePullRequestAutoMerge.ts | 2 +- .../github/v4/enablePullRequestAutoMerge.ts | 2 +- src/lib/github/v4/fetchAuthorId.ts | 2 +- .../fetchCommits/fetchCommitByPullNumber.ts | 9 +- .../v4/fetchCommits/fetchCommitBySha.ts | 9 +- .../v4/fetchCommits/fetchCommitsByAuthor.ts | 12 +- .../fetchCommitsForRebaseAndMergeStrategy.ts | 2 +- .../fetchPullRequestsBySearchQuery.ts | 9 +- src/lib/github/v4/fetchExistingPullRequest.ts | 2 +- .../v4/fetchPullRequestAutoMergeMethod.ts | 2 +- .../getOptionsFromGithub.ts | 1 - .../v4/getRepoOwnerAndNameFromGitRemotes.ts | 10 +- src/lib/github/v4/validateTargetBranch.ts | 2 +- src/options/options.ts | 39 +- src/test/e2e/cli/date-filters.private.test.ts | 22 +- ...different-merge-strategies.private.test.ts | 198 ++--- .../e2e/cli/entrypoint.cli.private.test.ts | 62 +- ...-handling-interactive-mode.private.test.ts | 27 +- ...fully-handles-corrupt-repo.private.test.ts | 28 +- ...po-with-backportrc-removed.private.test.ts | 20 +- ...hanging-branchLabelMapping.private.test.ts | 16 +- ...st-that-repo-can-be-cloned.private.test.ts | 54 +- yarn.lock | 800 ++++++++++-------- 31 files changed, 815 insertions(+), 617 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index b5cfd63d..80425582 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,12 +15,22 @@ { "type": "node", "request": "launch", - "name": "yarn start (entrypoint.cli.ts)", + "name": "Run (basic)", "program": "${workspaceRoot}/src/entrypoint.cli.ts", "runtimeArgs": ["-r", "ts-node/register/transpile-only"], "args": ["--repo=elastic/kibana"], "console": "integratedTerminal" }, + { + "type": "node", + "request": "launch", + "name": "Run (many args)", + "program": "${workspaceRoot}/src/entrypoint.cli.ts", + "runtimeArgs": ["-r", "ts-node/register/transpile-only"], + "args": ["--dryRun", "--repo=elastic/kibana", "--maxNumber=100"], + + "console": "integratedTerminal" + }, { "name": "Jest", "type": "node", diff --git a/package.json b/package.json index b578ce6e..9ea3e181 100644 --- a/package.json +++ b/package.json @@ -89,29 +89,29 @@ "@types/core-js": "^2.5.5", "@types/dedent": "^0.7.0", "@types/inquirer": "^8.2.6", - "@types/jest": "^29.5.4", - "@types/lodash": "^4.14.197", - "@types/node": "^20.5.4", - "@types/safe-json-stringify": "^1.1.2", - "@types/yargs": "^17.0.24", - "@types/yargs-parser": "^21.0.0", - "@typescript-eslint/eslint-plugin": "^6.4.1", - "@typescript-eslint/parser": "^6.4.1", - "eslint": "^8.47.0", + "@types/jest": "^29.5.5", + "@types/lodash": "^4.14.199", + "@types/node": "^20.8.6", + "@types/safe-json-stringify": "^1.1.3", + "@types/yargs": "^17.0.28", + "@types/yargs-parser": "^21.0.1", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "eslint": "^8.51.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jest": "^27.2.3", - "eslint-plugin-prettier": "^5.0.0", - "graphql-config": "^5.0.2", + "eslint-plugin-jest": "^27.4.2", + "eslint-plugin-prettier": "^5.0.1", + "graphql-config": "^5.0.3", "husky": "^8.0.3", - "jest": "^29.6.4", + "jest": "^29.7.0", "jest-snapshot-serializer-ansi": "^1.0.0", "lint-staged": "^14.0.1", - "nock": "^13.3.3", - "prettier": "^3.0.2", + "nock": "^13.3.4", + "prettier": "^3.0.3", "strip-ansi": "^6.0.1", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "typescript": "5.1.6" + "typescript": "5.2.2" } } diff --git a/src/backportRun.ts b/src/backportRun.ts index 1efbd1ce..260454dc 100755 --- a/src/backportRun.ts +++ b/src/backportRun.ts @@ -17,7 +17,11 @@ import { getOptionsFromCliArgs, OptionsFromCliArgs, } from './options/cliArgs'; -import { getOptions, ValidConfigOptions } from './options/options'; +import { + getActiveOptionsFormatted, + getOptions, + ValidConfigOptions, +} from './options/options'; import { runSequentially, Result } from './runSequentially'; export type BackportAbortResponse = { @@ -103,6 +107,8 @@ export async function backportRun({ logger.info('Backporting options', options); spinner.stop(); + consoleLog(getActiveOptionsFormatted(options)); + const commitsSpan = apm.startSpan(`Get commits`); commits = await getCommits(options); commitsSpan?.setLabel('commit_count', commits.length); diff --git a/src/lib/cherrypickAndCreateTargetPullRequest/getCommitsWithoutBackports.ts b/src/lib/cherrypickAndCreateTargetPullRequest/getCommitsWithoutBackports.ts index 926656b9..2d279573 100644 --- a/src/lib/cherrypickAndCreateTargetPullRequest/getCommitsWithoutBackports.ts +++ b/src/lib/cherrypickAndCreateTargetPullRequest/getCommitsWithoutBackports.ts @@ -27,6 +27,7 @@ export async function getCommitsWithoutBackports({ const commitsInConflictingPaths = await fetchCommitsByAuthor({ ...options, author: null, // retrieve commits across all authors + maxNumber: 50, dateSince: null, dateUntil: commit.sourceCommit.committedDate, commitPaths: conflictingFiles, diff --git a/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts b/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts index a126ec12..67b71b9f 100644 --- a/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts +++ b/src/lib/cherrypickAndCreateTargetPullRequest/waitForCherrypick.ts @@ -129,12 +129,23 @@ async function cherrypickAndHandleConflicts({ .map((f) => f.relative) .slice(0, 50); - const commitsWithoutBackports = await getCommitsWithoutBackports({ - options, - commit, - targetBranch, - conflictingFiles: conflictingFilesRelative, - }); + let commitsWithoutBackports: Awaited< + ReturnType + >; + + try { + commitsWithoutBackports = await getCommitsWithoutBackports({ + options, + commit, + targetBranch, + conflictingFiles: conflictingFilesRelative, + }); + } catch (e) { + commitsWithoutBackports = []; + if (e instanceof Error) { + logger.warn(`Unable to fetch commits without backports: ${e.message}`); + } + } if (!options.interactive) { throw new BackportError({ diff --git a/src/lib/github/v4/FetchPullRequestId.ts b/src/lib/github/v4/FetchPullRequestId.ts index ece573ea..22356113 100644 --- a/src/lib/github/v4/FetchPullRequestId.ts +++ b/src/lib/github/v4/FetchPullRequestId.ts @@ -39,5 +39,5 @@ export async function fetchPullRequestId( }, }); - return prResponse.repository.pullRequest.id; + return prResponse.data.data.repository.pullRequest.id; } diff --git a/src/lib/github/v4/apiRequestV4.test.ts b/src/lib/github/v4/apiRequestV4.test.ts index 4ef30f5d..6fce6512 100644 --- a/src/lib/github/v4/apiRequestV4.test.ts +++ b/src/lib/github/v4/apiRequestV4.test.ts @@ -34,7 +34,8 @@ describe('apiRequestV4', () => { }); it('should return correct response', async () => { - expect(res).toEqual({ viewer: { login: 'sqren' } }); + // @ts-expect-error + expect(res.data.data).toEqual({ viewer: { login: 'sqren' } }); }); it('should call with correct args', async () => { diff --git a/src/lib/github/v4/apiRequestV4.ts b/src/lib/github/v4/apiRequestV4.ts index 616185e8..d334285c 100644 --- a/src/lib/github/v4/apiRequestV4.ts +++ b/src/lib/github/v4/apiRequestV4.ts @@ -31,22 +31,9 @@ type ApiRequestOptions = { variables?: Variables; }; -// Define the implementation signature export async function apiRequestV4( opts: ApiRequestOptions, -): Promise; - -// Overload for returning AxiosResponse with fullResponse: true -// eslint-disable-next-line -export async function apiRequestV4( - opts: ApiRequestOptions & { fullResponse: true }, -): Promise, any>>; - -// Define the implementation -// eslint-disable-next-line -export async function apiRequestV4( - opts: ApiRequestOptions & { fullResponse?: boolean }, -): Promise, any>> { +): Promise, any>> { const { githubApiBaseUrlV4 = 'https://api.github.com/graphql', accessToken, @@ -90,11 +77,7 @@ export async function apiRequestV4( span?.setOutcome('success'); - if (opts.fullResponse) { - return response; - } - - return response.data.data; + return response; } catch (e) { span?.setOutcome('failure'); diff --git a/src/lib/github/v4/disablePullRequestAutoMerge.ts b/src/lib/github/v4/disablePullRequestAutoMerge.ts index a2ab8249..2e54173e 100644 --- a/src/lib/github/v4/disablePullRequestAutoMerge.ts +++ b/src/lib/github/v4/disablePullRequestAutoMerge.ts @@ -33,5 +33,5 @@ export async function disablePullRequestAutoMerge( }, }); - return res.disablePullRequestAutoMerge.pullRequest?.number; + return res.data.data.disablePullRequestAutoMerge.pullRequest?.number; } diff --git a/src/lib/github/v4/enablePullRequestAutoMerge.ts b/src/lib/github/v4/enablePullRequestAutoMerge.ts index 52eaaa42..568d2e2b 100644 --- a/src/lib/github/v4/enablePullRequestAutoMerge.ts +++ b/src/lib/github/v4/enablePullRequestAutoMerge.ts @@ -47,7 +47,7 @@ export async function enablePullRequestAutoMerge( }, }); - return res.enablePullRequestAutoMerge.pullRequest?.number; + return res.data.data.enablePullRequestAutoMerge.pullRequest?.number; } export function parseGithubError(e: GithubV4Exception) { diff --git a/src/lib/github/v4/fetchAuthorId.ts b/src/lib/github/v4/fetchAuthorId.ts index d9ed0720..3e1cd393 100644 --- a/src/lib/github/v4/fetchAuthorId.ts +++ b/src/lib/github/v4/fetchAuthorId.ts @@ -33,5 +33,5 @@ export async function fetchAuthorId({ variables: { author }, }); - return res.user.id; + return res.data.data.user.id; } diff --git a/src/lib/github/v4/fetchCommits/fetchCommitByPullNumber.ts b/src/lib/github/v4/fetchCommits/fetchCommitByPullNumber.ts index 6cdf7b9d..4f578771 100644 --- a/src/lib/github/v4/fetchCommits/fetchCommitByPullNumber.ts +++ b/src/lib/github/v4/fetchCommits/fetchCommitByPullNumber.ts @@ -63,9 +63,9 @@ export async function fetchCommitsByPullNumber(options: { } `; - let res: CommitByPullNumberResponse; + let data: CommitByPullNumberResponse; try { - res = await apiRequestV4({ + const res = await apiRequestV4({ githubApiBaseUrlV4, accessToken, query, @@ -75,11 +75,12 @@ export async function fetchCommitsByPullNumber(options: { pullNumber, }, }); + data = res.data.data; } catch (e) { - res = swallowMissingConfigFileException(e); + data = swallowMissingConfigFileException(e); } - const pullRequestNode = res.repository.pullRequest; + const pullRequestNode = data.repository.pullRequest; if (!pullRequestNode) { throw new BackportError(`The PR #${pullNumber} does not exist`); } diff --git a/src/lib/github/v4/fetchCommits/fetchCommitBySha.ts b/src/lib/github/v4/fetchCommits/fetchCommitBySha.ts index f21373e8..b17cbad5 100644 --- a/src/lib/github/v4/fetchCommits/fetchCommitBySha.ts +++ b/src/lib/github/v4/fetchCommits/fetchCommitBySha.ts @@ -40,9 +40,9 @@ export async function fetchCommitBySha(options: { ${SourceCommitWithTargetPullRequestFragment} `; - let res: CommitsByShaResponse; + let data: CommitsByShaResponse; try { - res = await apiRequestV4({ + const res = await apiRequestV4({ githubApiBaseUrlV4, accessToken, query, @@ -52,11 +52,12 @@ export async function fetchCommitBySha(options: { sha, }, }); + data = res.data.data; } catch (e) { - res = swallowMissingConfigFileException(e); + data = swallowMissingConfigFileException(e); } - const sourceCommit = res.repository.object; + const sourceCommit = data.repository.object; if (!sourceCommit) { throw new BackportError( `No commit found on branch "${sourceBranch}" with sha "${sha}"`, diff --git a/src/lib/github/v4/fetchCommits/fetchCommitsByAuthor.ts b/src/lib/github/v4/fetchCommits/fetchCommitsByAuthor.ts index d4233365..629eb9c5 100644 --- a/src/lib/github/v4/fetchCommits/fetchCommitsByAuthor.ts +++ b/src/lib/github/v4/fetchCommits/fetchCommitsByAuthor.ts @@ -11,7 +11,7 @@ import { SourceCommitWithTargetPullRequestFragment, parseSourceCommit, } from '../../../sourceCommit/parseSourceCommit'; -import { apiRequestV4 } from '../apiRequestV4'; +import { GithubV4Exception, apiRequestV4 } from '../apiRequestV4'; import { fetchAuthorId } from '../fetchAuthorId'; async function fetchByCommitPath({ @@ -92,13 +92,21 @@ async function fetchByCommitPath({ }; try { - return await apiRequestV4({ + const res = await apiRequestV4({ githubApiBaseUrlV4, accessToken, query, variables, }); + return res.data.data; } catch (e) { + if (e instanceof GithubV4Exception) { + if (e.githubResponse.status === 502 && maxNumber > 50) { + throw new BackportError( + `The GitHub API returned a 502 error. Try reducing the number of commits to display: "--max-number 20"`, + ); + } + } return swallowMissingConfigFileException(e); } } diff --git a/src/lib/github/v4/fetchCommits/fetchCommitsForRebaseAndMergeStrategy.ts b/src/lib/github/v4/fetchCommits/fetchCommitsForRebaseAndMergeStrategy.ts index 43ddbed0..6debe477 100644 --- a/src/lib/github/v4/fetchCommits/fetchCommitsForRebaseAndMergeStrategy.ts +++ b/src/lib/github/v4/fetchCommits/fetchCommitsForRebaseAndMergeStrategy.ts @@ -79,7 +79,7 @@ export async function fetchCommitsForRebaseAndMergeStrategy( }, }); - const pullRequestNode = res.repository.pullRequest; + const pullRequestNode = res.data.data.repository.pullRequest; if (!pullRequestNode?.mergeCommit) { throw new Error('Pull request is not merged'); diff --git a/src/lib/github/v4/fetchCommits/fetchPullRequestsBySearchQuery.ts b/src/lib/github/v4/fetchCommits/fetchPullRequestsBySearchQuery.ts index 25d2612b..57cabaaf 100644 --- a/src/lib/github/v4/fetchCommits/fetchPullRequestsBySearchQuery.ts +++ b/src/lib/github/v4/fetchCommits/fetchPullRequestsBySearchQuery.ts @@ -85,19 +85,20 @@ export async function fetchPullRequestsBySearchQuery(options: { maxNumber, }; - let res; + let data: ResponseData; try { - res = await apiRequestV4({ + const res = await apiRequestV4({ githubApiBaseUrlV4, accessToken, query, variables, }); + data = res.data.data; } catch (e) { - res = swallowMissingConfigFileException(e); + data = swallowMissingConfigFileException(e); } - const commits = res.search.nodes.map((pullRequestNode) => { + const commits = data.search.nodes.map((pullRequestNode) => { const sourceCommit = pullRequestNode.mergeCommit; return parseSourceCommit({ options, sourceCommit }); }); diff --git a/src/lib/github/v4/fetchExistingPullRequest.ts b/src/lib/github/v4/fetchExistingPullRequest.ts index 8323c9e3..828becb2 100644 --- a/src/lib/github/v4/fetchExistingPullRequest.ts +++ b/src/lib/github/v4/fetchExistingPullRequest.ts @@ -55,7 +55,7 @@ export async function fetchExistingPullRequest({ }); const existingPullRequest = - res.repository.ref?.associatedPullRequests.edges[0]; + res.data.data.repository.ref?.associatedPullRequests.edges[0]; if (!existingPullRequest) { return; diff --git a/src/lib/github/v4/fetchPullRequestAutoMergeMethod.ts b/src/lib/github/v4/fetchPullRequestAutoMergeMethod.ts index 1a1dd570..a0c2fdde 100644 --- a/src/lib/github/v4/fetchPullRequestAutoMergeMethod.ts +++ b/src/lib/github/v4/fetchPullRequestAutoMergeMethod.ts @@ -40,5 +40,5 @@ export async function fetchPullRequestAutoMergeMethod( }, }); - return res.repository.pullRequest?.autoMergeRequest?.mergeMethod; + return res.data.data.repository.pullRequest?.autoMergeRequest?.mergeMethod; } diff --git a/src/lib/github/v4/getOptionsFromGithub/getOptionsFromGithub.ts b/src/lib/github/v4/getOptionsFromGithub/getOptionsFromGithub.ts index 5a613478..8b2be735 100644 --- a/src/lib/github/v4/getOptionsFromGithub/getOptionsFromGithub.ts +++ b/src/lib/github/v4/getOptionsFromGithub/getOptionsFromGithub.ts @@ -52,7 +52,6 @@ export async function getOptionsFromGithub(options: { accessToken, query, variables: { repoOwner, repoName }, - fullResponse: true, }); throwIfInsufficientPermissions(res); diff --git a/src/lib/github/v4/getRepoOwnerAndNameFromGitRemotes.ts b/src/lib/github/v4/getRepoOwnerAndNameFromGitRemotes.ts index adf873d7..ceb87efe 100644 --- a/src/lib/github/v4/getRepoOwnerAndNameFromGitRemotes.ts +++ b/src/lib/github/v4/getRepoOwnerAndNameFromGitRemotes.ts @@ -32,12 +32,14 @@ export async function getRepoOwnerAndNameFromGitRemotes({ }, }); + const { data } = res.data; + return { - repoName: res.repository.name, + repoName: data.repository.name, // get the original owner (not the fork owner) - repoOwner: res.repository.isFork - ? res.repository.parent.owner.login - : res.repository.owner.login, + repoOwner: data.repository.isFork + ? data.repository.parent.owner.login + : data.repository.owner.login, }; } catch (e) { if (e instanceof GithubV4Exception) { diff --git a/src/lib/github/v4/validateTargetBranch.ts b/src/lib/github/v4/validateTargetBranch.ts index 32382cf8..3d13a87e 100644 --- a/src/lib/github/v4/validateTargetBranch.ts +++ b/src/lib/github/v4/validateTargetBranch.ts @@ -45,7 +45,7 @@ export async function validateTargetBranch({ variables: { repoOwner, repoName, branchName }, }); - if (!res.repository.ref) { + if (!res.data.data.repository.ref) { spinner.fail(`The branch "${branchName}" does not exist`); throw new BackportError({ code: 'invalid-branch-exception', diff --git a/src/options/options.ts b/src/options/options.ts index ed139ea7..f6a9d432 100644 --- a/src/options/options.ts +++ b/src/options/options.ts @@ -1,3 +1,4 @@ +import chalk from 'chalk'; import { isEmpty } from 'lodash'; import { BackportError } from '../lib/BackportError'; import { getGlobalConfigPath } from '../lib/env'; @@ -33,6 +34,8 @@ export const defaultConfigOptions = { cherrypickRef: true, commitConflicts: false, commitPaths: [] as Array, + copySourcePRLabels: false, + copySourcePRReviewers: false, cwd: process.cwd(), dateSince: null, dateUntil: null, @@ -51,8 +54,6 @@ export const defaultConfigOptions = { reviewers: [] as Array, signoff: false, sourcePRLabels: [] as string[], - copySourcePRLabels: false, - copySourcePRReviewers: false, targetBranchChoices: [] as TargetBranchChoiceOrString[], targetBranches: [] as string[], targetPRLabels: [] as string[], @@ -222,3 +223,37 @@ function getMergedOptionsFromConfigAndCli({ ...optionsFromCliArgs, }; } + +export function getActiveOptionsFormatted(options: ValidConfigOptions) { + const customOptions = [['repo', `${options.repoOwner}/${options.repoName}`]]; + + if (options.pullNumber) { + customOptions.push(['pullNumber', `${options.pullNumber}`]); + } + + if (options.author && options.author !== options.authenticatedUsername) { + customOptions.push(['author', `${options.author}`]); + } + + if (options.autoMerge !== defaultConfigOptions.autoMerge) { + customOptions.push(['autoMerge', `${options.autoMerge}`]); + } + + if (options.maxNumber !== defaultConfigOptions.maxNumber) { + customOptions.push(['maxNumber', `${options.maxNumber}`]); + } + + if (options.dateSince) { + customOptions.push(['since', `${options.dateSince}`]); + } + + if (options.dateUntil) { + customOptions.push(['until', `${options.dateUntil}`]); + } + + return ( + customOptions + .map(([key, value]) => `${chalk.bold(key)}: ${value}`) + .join(' • ') + `\n` + ); +} diff --git a/src/test/e2e/cli/date-filters.private.test.ts b/src/test/e2e/cli/date-filters.private.test.ts index 51c82abb..a7a4963b 100644 --- a/src/test/e2e/cli/date-filters.private.test.ts +++ b/src/test/e2e/cli/date-filters.private.test.ts @@ -18,12 +18,14 @@ describe('date filters (dateSince, dateUntil)', () => { ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. Bump to 8.0.0 - 2. Add package.json - 3. Update .backportrc.json - 4. Create .backportrc.json" - `); +"repo: backport-org/backport-e2e • since: 2020-08-15T10:00:00.000Z • until: 2020-08-15T10:30:00.000Z + +? Select commit (Use arrow keys) +❯ 1. Bump to 8.0.0 + 2. Add package.json + 3. Update .backportrc.json + 4. Create .backportrc.json" +`); }); it('combined with --pr-filter', async () => { @@ -52,9 +54,11 @@ describe('date filters (dateSince, dateUntil)', () => { { waitForString: 'Select commit' }, ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. [APM] Add link to officials docs for APM UI settings (#113396) 7.x" - `); +"repo: elastic/kibana • autoMerge: true • since: 2021-09-20T00:00:00.000Z • until: 2021-10-01T00:00:00.000Z + +? Select commit (Use arrow keys) +❯ 1. [APM] Add link to officials docs for APM UI settings (#113396) 7.x" +`); expect(output).toEqual(outputFromPrFilter); }); }); diff --git a/src/test/e2e/cli/different-merge-strategies.private.test.ts b/src/test/e2e/cli/different-merge-strategies.private.test.ts index 53e75da3..ef1a9fc9 100644 --- a/src/test/e2e/cli/different-merge-strategies.private.test.ts +++ b/src/test/e2e/cli/different-merge-strategies.private.test.ts @@ -21,28 +21,30 @@ describe('different-merge-strategies', () => { ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. Downsides with "Rebase and merge" - 2. Add description for "Rebase and merge" - 3. Add "Rebase and merge" header - 4. Create rebase-and-merge.txt - 5. Merge pull request #9 from backport-org/many-merge-commits 7.x - 6. Merge strategy: Eighth of many merges 7.x - 7. Merge strategy: Seventh of many merges 7.x - 8. Merge strategy: Sixth of many merges 7.x - 9. Merge strategy: Fifth of many merges 7.x - 10.Merge strategy: Fourth of many merges 7.x - 11.Merge strategy: Third of many merges 7.x - 12.Merge strategy: Second of many merges 7.x - 13.Merge strategy: First of many merges 7.x - 14.Using squash to merge commits (#3) - 15.Rebase strategy: Second commit - 16.Rebase strategy: First commit - 17.Merge pull request #1 from backport-org/merge-strategy - 18.Merge strategy: Second commit - 19.Merge strategy: First commit - 20.Initial commit" - `); +"repo: backport-org/different-merge-strategies • maxNumber: 20 + +? Select commit (Use arrow keys) +❯ 1. Downsides with "Rebase and merge" + 2. Add description for "Rebase and merge" + 3. Add "Rebase and merge" header + 4. Create rebase-and-merge.txt + 5. Merge pull request #9 from backport-org/many-merge-commits 7.x + 6. Merge strategy: Eighth of many merges 7.x + 7. Merge strategy: Seventh of many merges 7.x + 8. Merge strategy: Sixth of many merges 7.x + 9. Merge strategy: Fifth of many merges 7.x + 10.Merge strategy: Fourth of many merges 7.x + 11.Merge strategy: Third of many merges 7.x + 12.Merge strategy: Second of many merges 7.x + 13.Merge strategy: First of many merges 7.x + 14.Using squash to merge commits (#3) + 15.Rebase strategy: Second commit + 16.Rebase strategy: First commit + 17.Merge pull request #1 from backport-org/merge-strategy + 18.Merge strategy: Second commit + 19.Merge strategy: First commit + 20.Initial commit" +`); }); describe('when selecting a merge commit with eight commits', () => { @@ -68,33 +70,35 @@ describe('different-merge-strategies', () => { it('runs to completion without errors', () => { expect(output).toMatchInlineSnapshot(` - "- Initializing... - ? Select pull request Merge pull request #9 from backport-org/many-merge-commits - ✔ 100% Cloning repository from github.com (one-time operation) - - Backporting to 7.x: - - Pulling latest changes - ✔ Pulling latest changes - - Cherry-picking: Merge strategy: First of many merges - ✔ Cherry-picking: Merge strategy: First of many merges - - Cherry-picking: Merge strategy: Second of many merges - ✔ Cherry-picking: Merge strategy: Second of many merges - - Cherry-picking: Merge strategy: Third of many merges - ✔ Cherry-picking: Merge strategy: Third of many merges - - Cherry-picking: Merge strategy: Fourth of many merges - ✔ Cherry-picking: Merge strategy: Fourth of many merges - - Cherry-picking: Merge strategy: Fifth of many merges - ✔ Cherry-picking: Merge strategy: Fifth of many merges - - Cherry-picking: Merge strategy: Sixth of many merges - ✔ Cherry-picking: Merge strategy: Sixth of many merges - - Cherry-picking: Merge strategy: Seventh of many merges - ✔ Cherry-picking: Merge strategy: Seventh of many merges - - Cherry-picking: Merge strategy: Eighth of many merges - ✔ Cherry-picking: Merge strategy: Eighth of many merges - - Creating pull request - ✔ Creating pull request - View pull request: this-is-a-dry-run" - `); +"- Initializing... +repo: backport-org/different-merge-strategies • pullNumber: 9 + +? Select pull request Merge pull request #9 from backport-org/many-merge-commits +✔ 100% Cloning repository from github.com (one-time operation) + +Backporting to 7.x: +- Pulling latest changes +✔ Pulling latest changes +- Cherry-picking: Merge strategy: First of many merges +✔ Cherry-picking: Merge strategy: First of many merges +- Cherry-picking: Merge strategy: Second of many merges +✔ Cherry-picking: Merge strategy: Second of many merges +- Cherry-picking: Merge strategy: Third of many merges +✔ Cherry-picking: Merge strategy: Third of many merges +- Cherry-picking: Merge strategy: Fourth of many merges +✔ Cherry-picking: Merge strategy: Fourth of many merges +- Cherry-picking: Merge strategy: Fifth of many merges +✔ Cherry-picking: Merge strategy: Fifth of many merges +- Cherry-picking: Merge strategy: Sixth of many merges +✔ Cherry-picking: Merge strategy: Sixth of many merges +- Cherry-picking: Merge strategy: Seventh of many merges +✔ Cherry-picking: Merge strategy: Seventh of many merges +- Cherry-picking: Merge strategy: Eighth of many merges +✔ Cherry-picking: Merge strategy: Eighth of many merges +- Creating pull request +✔ Creating pull request +View pull request: this-is-a-dry-run" +`); }); it('backports all immediate children of the merge commit', async () => { @@ -185,53 +189,55 @@ describe('different-merge-strategies', () => { it('has the right output', async () => { expect(output).toMatchInlineSnapshot(` - "- Initializing... - ? Select pull request Merge pull request #9 from backport-org/many-merge-commits - ✔ 100% Cloning repository from github.com (one-time operation) - - Backporting to 7.1: - - Pulling latest changes - ✔ Pulling latest changes - - Cherry-picking: Merge strategy: First of many merges - ✖ Cherry-picking: Merge strategy: First of many merges - - The commit could not be backported due to conflicts - - Please fix the conflicts in - ? Fix the following conflicts manually: - - Conflicting files: - - /new-fi - le-added-with-many-merge-commits.txt - - - Press ENTER when the conflicts are resolved and files are staged (Y/n) ? Fix the following conflicts manually: - - Conflicting files: - - /new-fi - le-added-with-many-merge-commits.txt - - - Press ENTER when the conflicts are resolved and files are staged Yes - ✔ Cherry-picking: Merge strategy: First of many merges - - Cherry-picking: Merge strategy: Second of many merges - ✔ Cherry-picking: Merge strategy: Second of many merges - - Cherry-picking: Merge strategy: Third of many merges - ✔ Cherry-picking: Merge strategy: Third of many merges - - Cherry-picking: Merge strategy: Fourth of many merges - ✔ Cherry-picking: Merge strategy: Fourth of many merges - - Cherry-picking: Merge strategy: Fifth of many merges - ✔ Cherry-picking: Merge strategy: Fifth of many merges - - Cherry-picking: Merge strategy: Sixth of many merges - ✔ Cherry-picking: Merge strategy: Sixth of many merges - - Cherry-picking: Merge strategy: Seventh of many merges - ✔ Cherry-picking: Merge strategy: Seventh of many merges - - Cherry-picking: Merge strategy: Eighth of many merges - ✔ Cherry-picking: Merge strategy: Eighth of many merges - - Creating pull request - ✔ Creating pull request - View pull request: this-is-a-dry-run" - `); +"- Initializing... +repo: backport-org/different-merge-strategies • pullNumber: 9 + +? Select pull request Merge pull request #9 from backport-org/many-merge-commits +✔ 100% Cloning repository from github.com (one-time operation) + +Backporting to 7.1: +- Pulling latest changes +✔ Pulling latest changes +- Cherry-picking: Merge strategy: First of many merges +✖ Cherry-picking: Merge strategy: First of many merges + +The commit could not be backported due to conflicts + +Please fix the conflicts in +? Fix the following conflicts manually: + +Conflicting files: + - /new-fi +le-added-with-many-merge-commits.txt + + +Press ENTER when the conflicts are resolved and files are staged (Y/n) ? Fix the following conflicts manually: + +Conflicting files: + - /new-fi +le-added-with-many-merge-commits.txt + + +Press ENTER when the conflicts are resolved and files are staged Yes +✔ Cherry-picking: Merge strategy: First of many merges +- Cherry-picking: Merge strategy: Second of many merges +✔ Cherry-picking: Merge strategy: Second of many merges +- Cherry-picking: Merge strategy: Third of many merges +✔ Cherry-picking: Merge strategy: Third of many merges +- Cherry-picking: Merge strategy: Fourth of many merges +✔ Cherry-picking: Merge strategy: Fourth of many merges +- Cherry-picking: Merge strategy: Fifth of many merges +✔ Cherry-picking: Merge strategy: Fifth of many merges +- Cherry-picking: Merge strategy: Sixth of many merges +✔ Cherry-picking: Merge strategy: Sixth of many merges +- Cherry-picking: Merge strategy: Seventh of many merges +✔ Cherry-picking: Merge strategy: Seventh of many merges +- Cherry-picking: Merge strategy: Eighth of many merges +✔ Cherry-picking: Merge strategy: Eighth of many merges +- Creating pull request +✔ Creating pull request +View pull request: this-is-a-dry-run" +`); }); it('backports all immediate children of the merge commit', async () => { diff --git a/src/test/e2e/cli/entrypoint.cli.private.test.ts b/src/test/e2e/cli/entrypoint.cli.private.test.ts index b858e964..7fe9991d 100644 --- a/src/test/e2e/cli/entrypoint.cli.private.test.ts +++ b/src/test/e2e/cli/entrypoint.cli.private.test.ts @@ -149,18 +149,20 @@ Or contact me directly: " ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. Add sheep emoji (#9) 7.8 - 2. Change Ulysses to Gretha (conflict) (#8) 7.x - 3. Add 🍏 emoji (#5) 7.8, 7.x - 4. Add family emoji (#2) 7.x - 5. Add \`backport\` dep - 6. Merge pull request #1 from backport-org/add-heart-emoji - 7. Add ❤️ emoji - 8. Update .backportrc.json - 9. Bump to 8.0.0 - 10.Add package.json" - `); +"repo: backport-org/backport-e2e + +? Select commit (Use arrow keys) +❯ 1. Add sheep emoji (#9) 7.8 + 2. Change Ulysses to Gretha (conflict) (#8) 7.x + 3. Add 🍏 emoji (#5) 7.8, 7.x + 4. Add family emoji (#2) 7.x + 5. Add \`backport\` dep + 6. Merge pull request #1 from backport-org/add-heart-emoji + 7. Add ❤️ emoji + 8. Update .backportrc.json + 9. Bump to 8.0.0 + 10.Add package.json" +`); }); it(`lists commits from master`, async () => { @@ -176,14 +178,16 @@ Or contact me directly: " ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. Add sheep emoji (#9) 7.8 - 2. Change Ulysses to Gretha (conflict) (#8) 7.x - 3. Add 🍏 emoji (#5) 7.8, 7.x - 4. Add family emoji (#2) 7.x - 5. Add \`backport\` dep - 6. Merge pull request #1 from backport-org/add-heart-emoji" - `); +"repo: backport-org/backport-e2e • maxNumber: 6 + +? Select commit (Use arrow keys) +❯ 1. Add sheep emoji (#9) 7.8 + 2. Change Ulysses to Gretha (conflict) (#8) 7.x + 3. Add 🍏 emoji (#5) 7.8, 7.x + 4. Add family emoji (#2) 7.x + 5. Add \`backport\` dep + 6. Merge pull request #1 from backport-org/add-heart-emoji" +`); }); it(`lists commits from 7.x`, async () => { @@ -200,13 +204,15 @@ Or contact me directly: " ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. Add 🍏 emoji (#5) (#6) - 2. Change Ulysses to Carol - 3. Add family emoji (#2) (#4) - 4. Update .backportrc.json - 5. Branch off: 7.9.0 (7.x) - 6. Bump to 8.0.0" - `); +"repo: backport-org/backport-e2e • maxNumber: 6 + +? Select commit (Use arrow keys) +❯ 1. Add 🍏 emoji (#5) (#6) + 2. Change Ulysses to Carol + 3. Add family emoji (#2) (#4) + 4. Update .backportrc.json + 5. Branch off: 7.9.0 (7.x) + 6. Bump to 8.0.0" +`); }); }); diff --git a/src/test/e2e/cli/error-handling-interactive-mode.private.test.ts b/src/test/e2e/cli/error-handling-interactive-mode.private.test.ts index ef2a8526..561e29b4 100644 --- a/src/test/e2e/cli/error-handling-interactive-mode.private.test.ts +++ b/src/test/e2e/cli/error-handling-interactive-mode.private.test.ts @@ -89,24 +89,27 @@ describe('interactive error handling', () => { stringAfter: '', }), ).toMatchInlineSnapshot(` - "Backporting to 7.x: +"repo: backport-org/repo-with-conflicts • pullNumber: 12 - The commit could not be backported due to conflicts - Please fix the conflicts in - Hint: Before fixing the conflicts manually you should consider backporting the following pull requests to "7.x": - - Change Barca to Braithwaite (#8) (backport missing) - https://github.com/backport-org/repo-with-conflicts/pull/8 +Backporting to 7.x: +The commit could not be backported due to conflicts - ? Fix the following conflicts manually: +Please fix the conflicts in +Hint: Before fixing the conflicts manually you should consider backporting the following pull requests to "7.x": + - Change Barca to Braithwaite (#8) (backport missing) + https://github.com/backport-org/repo-with-conflicts/pull/8 - Conflicting files: - - /l - a-liga.md +? Fix the following conflicts manually: - Press ENTER when the conflicts are resolved and files are staged (Y/n)" - `); +Conflicting files: + - /l +a-liga.md + + +Press ENTER when the conflicts are resolved and files are staged (Y/n)" +`); }); }); diff --git a/src/test/e2e/cli/gracefully-handles-corrupt-repo.private.test.ts b/src/test/e2e/cli/gracefully-handles-corrupt-repo.private.test.ts index 93ef1762..2911974e 100644 --- a/src/test/e2e/cli/gracefully-handles-corrupt-repo.private.test.ts +++ b/src/test/e2e/cli/gracefully-handles-corrupt-repo.private.test.ts @@ -48,19 +48,21 @@ describe('gracefully handle corrupted repo', () => { // second run: backport should re-create remotes and branches correctly expect(output).toMatchInlineSnapshot(` - "- Initializing... - ? Select commit Bump to 8.0.0 +"- Initializing... +repo: backport-org/integration-test - Backporting to 7.x: - - Pulling latest changes - ✔ Pulling latest changes - - Cherry-picking: Bump to 8.0.0 - ✔ Cherry-picking: Bump to 8.0.0 - - Creating pull request - ✔ Creating pull request - - Adding labels: backport - ✔ Adding labels: backport - View pull request: this-is-a-dry-run" - `); +? Select commit Bump to 8.0.0 + +Backporting to 7.x: +- Pulling latest changes +✔ Pulling latest changes +- Cherry-picking: Bump to 8.0.0 +✔ Cherry-picking: Bump to 8.0.0 +- Creating pull request +✔ Creating pull request +- Adding labels: backport +✔ Adding labels: backport +View pull request: this-is-a-dry-run" +`); }); }); diff --git a/src/test/e2e/cli/repo-with-backportrc-removed.private.test.ts b/src/test/e2e/cli/repo-with-backportrc-removed.private.test.ts index bc6e674f..bf713efc 100644 --- a/src/test/e2e/cli/repo-with-backportrc-removed.private.test.ts +++ b/src/test/e2e/cli/repo-with-backportrc-removed.private.test.ts @@ -14,15 +14,17 @@ describe('repo-with-backportrc-removed (missing .backportrc.json config file)', ); expect(output).toMatchInlineSnapshot(` - "? Select commit (Use arrow keys) - ❯ 1. Rename README.me to README.md - 2. Merge pull request #1 from backport-org/add-readme - 3. Create README.me - 4. Delete .backportrc.json - 5. Create .backportrc.json - 6. Delete .backportrc.json - 7. Create .backportrc.json" - `); +"repo: backport-org/repo-with-backportrc-removed + +? Select commit (Use arrow keys) +❯ 1. Rename README.me to README.md + 2. Merge pull request #1 from backport-org/add-readme + 3. Create README.me + 4. Delete .backportrc.json + 5. Create .backportrc.json + 6. Delete .backportrc.json + 7. Create .backportrc.json" +`); }); it('backports via pr', async () => { diff --git a/src/test/e2e/cli/repo-with-changing-branchLabelMapping.private.test.ts b/src/test/e2e/cli/repo-with-changing-branchLabelMapping.private.test.ts index 9d2d345d..898bffe1 100644 --- a/src/test/e2e/cli/repo-with-changing-branchLabelMapping.private.test.ts +++ b/src/test/e2e/cli/repo-with-changing-branchLabelMapping.private.test.ts @@ -69,13 +69,15 @@ describe('backport-org/repo-with-changing-branchLabelMapping', () => { ); expect(output).toMatchInlineSnapshot(` - "? Select branch (Press to select, to toggle all, to invert - selection, and to proceed) - ❯◯ 8.4 - ◉ 8.3 - ◉ 8.2 - ◉ production" - `); +"repo: backport-org/repo-with-changing-branchLabelMapping • pullNumber: 6 + +? Select branch (Press to select, to toggle all, to invert +selection, and to proceed) +❯◯ 8.4 + ◉ 8.3 + ◉ 8.2 + ◉ production" +`); }); }); }); diff --git a/src/test/e2e/cli/test-that-repo-can-be-cloned.private.test.ts b/src/test/e2e/cli/test-that-repo-can-be-cloned.private.test.ts index 44318d66..8d4fb07b 100644 --- a/src/test/e2e/cli/test-that-repo-can-be-cloned.private.test.ts +++ b/src/test/e2e/cli/test-that-repo-can-be-cloned.private.test.ts @@ -33,19 +33,21 @@ describe('test-that-repo-can-be-cloned', () => { expect(output).toContain('Cloning repository from github.com'); expect(output).toMatchInlineSnapshot(` - "- Initializing... - ? Select pull request Beginning of a beautiful repo (#1) - ✔ 100% Cloning repository from github.com (one-time operation) - - Backporting to production: - - Pulling latest changes - ✔ Pulling latest changes - - Cherry-picking: Beginning of a beautiful repo (#1) - ✔ Cherry-picking: Beginning of a beautiful repo (#1) - - Creating pull request - ✔ Creating pull request - View pull request: this-is-a-dry-run" - `); +"- Initializing... +repo: backport-org/test-that-repo-can-be-cloned • pullNumber: 1 + +? Select pull request Beginning of a beautiful repo (#1) +✔ 100% Cloning repository from github.com (one-time operation) + +Backporting to production: +- Pulling latest changes +✔ Pulling latest changes +- Cherry-picking: Beginning of a beautiful repo (#1) +✔ Cherry-picking: Beginning of a beautiful repo (#1) +- Creating pull request +✔ Creating pull request +View pull request: this-is-a-dry-run" +`); }); it('does not clone again on subsequent runs', async () => { @@ -53,18 +55,20 @@ describe('test-that-repo-can-be-cloned', () => { expect(output).not.toContain('Cloning repository from github.com'); expect(output).toMatchInlineSnapshot(` - "- Initializing... - ? Select pull request Beginning of a beautiful repo (#1) - - Backporting to production: - - Pulling latest changes - ✔ Pulling latest changes - - Cherry-picking: Beginning of a beautiful repo (#1) - ✔ Cherry-picking: Beginning of a beautiful repo (#1) - - Creating pull request - ✔ Creating pull request - View pull request: this-is-a-dry-run" - `); +"- Initializing... +repo: backport-org/test-that-repo-can-be-cloned • pullNumber: 1 + +? Select pull request Beginning of a beautiful repo (#1) + +Backporting to production: +- Pulling latest changes +✔ Pulling latest changes +- Cherry-picking: Beginning of a beautiful repo (#1) +✔ Cherry-picking: Beginning of a beautiful repo (#1) +- Creating pull request +✔ Creating pull request +View pull request: this-is-a-dry-run" +`); }); }); diff --git a/yarn.lock b/yarn.lock index 02227b91..b13739f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -371,10 +371,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@^8.47.0": - version "8.47.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d" - integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og== +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== "@graphql-tools/batch-execute@^9.0.1": version "9.0.2" @@ -547,10 +547,10 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -582,27 +582,27 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.4.tgz#a7e2d84516301f986bba0dd55af9d5fe37f46527" - integrity sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw== +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.6.3" - jest-util "^29.6.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.4.tgz#265ebee05ec1ff3567757e7a327155c8d6bdb126" - integrity sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg== +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: - "@jest/console" "^29.6.4" - "@jest/reporters" "^29.6.4" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" @@ -610,33 +610,33 @@ ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.6.3" - jest-config "^29.6.4" - jest-haste-map "^29.6.4" - jest-message-util "^29.6.3" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" jest-regex-util "^29.6.3" - jest-resolve "^29.6.4" - jest-resolve-dependencies "^29.6.4" - jest-runner "^29.6.4" - jest-runtime "^29.6.4" - jest-snapshot "^29.6.4" - jest-util "^29.6.3" - jest-validate "^29.6.3" - jest-watcher "^29.6.4" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" micromatch "^4.0.4" - pretty-format "^29.6.3" + pretty-format "^29.7.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.4.tgz#78ec2c9f8c8829a37616934ff4fea0c028c79f4f" - integrity sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ== +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@jest/fake-timers" "^29.6.4" + "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.6.3" + jest-mock "^29.7.0" "@jest/expect-utils@^29.6.4": version "29.6.4" @@ -645,45 +645,52 @@ dependencies: jest-get-type "^29.6.3" -"@jest/expect@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.4.tgz#1d6ae17dc68d906776198389427ab7ce6179dba6" - integrity sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA== +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - expect "^29.6.4" - jest-snapshot "^29.6.4" + jest-get-type "^29.6.3" -"@jest/fake-timers@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.4.tgz#45a27f093c43d5d989362a3e7a8c70c83188b4f6" - integrity sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw== +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.6.3" - jest-mock "^29.6.3" - jest-util "^29.6.3" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.4.tgz#4f04f58731b062b44ef23036b79bdb31f40c7f63" - integrity sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: - "@jest/environment" "^29.6.4" - "@jest/expect" "^29.6.4" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" "@jest/types" "^29.6.3" - jest-mock "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.4.tgz#9d6350c8a2761ece91f7946e97ab0dabc06deab7" - integrity sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g== +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.6.4" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" @@ -697,9 +704,9 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.6.3" - jest-util "^29.6.3" - jest-worker "^29.6.4" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" @@ -721,30 +728,30 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.4.tgz#adf5c79f6e1fb7405ad13d67d9e2b6ff54b54c6b" - integrity sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ== +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@jest/console" "^29.6.4" + "@jest/console" "^29.7.0" "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz#86aef66aaa22b181307ed06c26c82802fb836d7b" - integrity sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@jest/test-result" "^29.6.4" + "@jest/test-result" "^29.7.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.4" + jest-haste-map "^29.7.0" slash "^3.0.0" -"@jest/transform@^29.6.4": - version "29.6.4" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.4.tgz#a6bc799ef597c5d85b2e65a11fd96b6b239bab5a" - integrity sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA== +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.6.3" @@ -754,9 +761,9 @@ convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.4" + jest-haste-map "^29.7.0" jest-regex-util "^29.6.3" - jest-util "^29.6.3" + jest-util "^29.7.0" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1113,10 +1120,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.4": - version "29.5.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.4.tgz#9d0a16edaa009a71e6a71a999acd582514dab566" - integrity sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A== +"@types/jest@^29.5.5": + version "29.5.5" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" + integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -1131,20 +1138,27 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@^4.14.197": - version "4.14.197" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.197.tgz#e95c5ddcc814ec3e84c891910a01e0c8a378c54b" - integrity sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g== +"@types/lodash@^4.14.199": + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== -"@types/node@*", "@types/node@^20.5.4": +"@types/node@*": version "20.5.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.4.tgz#4666fb40f9974d60c53c4ff554315860ba4feab8" integrity sha512-Y9vbIAoM31djQZrPYjpTLo0XlaSwOIsrlfE3LpulZeRblttsLQRFRlBAppW0LOxyT3ALj2M5vU1ucQQayQH3jA== -"@types/safe-json-stringify@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/safe-json-stringify/-/safe-json-stringify-1.1.2.tgz#913796617042de2259f62ce82843c239258ca287" - integrity sha512-Hj/LZMBXFH3Qj9sNmNu6syBpkZqBaM00HgP7naf9CnZhB3kdxmrenWUD2cY6vvTWjuBM3NPOLknPKDUOQuTWXA== +"@types/node@^20.8.6": + version "20.8.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" + integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + dependencies: + undici-types "~5.25.1" + +"@types/safe-json-stringify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/safe-json-stringify/-/safe-json-stringify-1.1.3.tgz#3abeaf029177228a16ab3932066385c8ff36cb82" + integrity sha512-6D1NT0NuNvkOtf7rVmzjycddwiM5ipilWQrHV8ZcNwhQxDzdN3ekK8qElxqT/RmyiNQyOny6LqlJzdgTzAemkQ== "@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.0" @@ -1175,28 +1189,40 @@ dependencies: "@types/node" "*" -"@types/yargs-parser@*", "@types/yargs-parser@^21.0.0": +"@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== -"@types/yargs@^17.0.24", "@types/yargs@^17.0.8": +"@types/yargs-parser@^21.0.1": + version "21.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + +"@types/yargs@^17.0.28": + version "17.0.28" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" + integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": version "17.0.24" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz#bc0c6f000134b53c304ad0bec4ee4753cd3e89d2" - integrity sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw== +"@typescript-eslint/eslint-plugin@^6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b" + integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.4.1" - "@typescript-eslint/type-utils" "6.4.1" - "@typescript-eslint/utils" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/type-utils" "6.8.0" + "@typescript-eslint/utils" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1204,15 +1230,15 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.4.1.tgz#85ad550bf4ac4aa227504f1becb828f8e46c44e3" - integrity sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg== +"@typescript-eslint/parser@^6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb" + integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg== dependencies: - "@typescript-eslint/scope-manager" "6.4.1" - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/typescript-estree" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -1223,21 +1249,21 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz#4b073a30be2dbe603e44e9ae0cff7e1d3ed19278" - integrity sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A== +"@typescript-eslint/scope-manager@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" + integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g== dependencies: - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" -"@typescript-eslint/type-utils@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz#fa21cb13016c8d6f352fe9b2d6c9ab6edc2d1857" - integrity sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA== +"@typescript-eslint/type-utils@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f" + integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g== dependencies: - "@typescript-eslint/typescript-estree" "6.4.1" - "@typescript-eslint/utils" "6.4.1" + "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/utils" "6.8.0" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -1246,10 +1272,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.4.1.tgz#b2c61159f46dda210fed9f117f5d027f65bb5c3b" - integrity sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg== +"@typescript-eslint/types@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" + integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -1264,30 +1290,30 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz#91ff88101c710adb0f70a317f2f65efa9441da45" - integrity sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg== +"@typescript-eslint/typescript-estree@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" + integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg== dependencies: - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.4.1.tgz#81bf62ff0c3119a26c19fab683582e29450717bc" - integrity sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw== +"@typescript-eslint/utils@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029" + integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.4.1" - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/typescript-estree" "6.4.1" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/typescript-estree" "6.8.0" semver "^7.5.4" "@typescript-eslint/utils@^5.10.0": @@ -1312,12 +1338,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz#e3ccf7b8d42e625946ac5094ed92a405fb4115e0" - integrity sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ== +"@typescript-eslint/visitor-keys@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" + integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg== dependencies: - "@typescript-eslint/types" "6.4.1" + "@typescript-eslint/types" "6.8.0" eslint-visitor-keys "^3.4.1" "@whatwg-node/events@^0.1.0": @@ -1587,12 +1613,12 @@ axios@^1.4.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.4.tgz#98dbc45d1c93319c82a8ab4a478b670655dd2585" - integrity sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw== +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: - "@jest/transform" "^29.6.4" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^29.6.3" @@ -2004,6 +2030,19 @@ cosmiconfig@^8.1.0: parse-json "^5.0.0" path-type "^4.0.0" +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -2399,17 +2438,17 @@ eslint-plugin-import@^2.28.1: semver "^6.3.1" tsconfig-paths "^3.14.2" -eslint-plugin-jest@^27.2.3: - version "27.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz#6f8a4bb2ca82c0c5d481d1b3be256ab001f5a3ec" - integrity sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ== +eslint-plugin-jest@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz#181d999ac67a9b6040db1d27935887cf5a2882ed" + integrity sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg== dependencies: "@typescript-eslint/utils" "^5.10.0" -eslint-plugin-prettier@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" - integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== +eslint-plugin-prettier@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: prettier-linter-helpers "^1.0.0" synckit "^0.8.5" @@ -2435,16 +2474,16 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.47.0: - version "8.47.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806" - integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q== +eslint@^8.51.0: + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "^8.47.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.12.4" @@ -2561,7 +2600,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.0.0, expect@^29.6.4: +expect@^29.0.0: version "29.6.4" resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.4.tgz#a6e6f66d4613717859b2fe3da98a739437b6f4b8" integrity sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA== @@ -2572,6 +2611,17 @@ expect@^29.0.0, expect@^29.6.4: jest-message-util "^29.6.3" jest-util "^29.6.3" +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -2910,10 +2960,10 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-config@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.0.2.tgz#7e962f94ccddcc2ee0aa71d75cf4491ec5092bdb" - integrity sha512-7TPxOrlbiG0JplSZYCyxn2XQtqVhXomEjXUmWJVSS5ET1nPhOJSsIb/WTwqWhcYX6G0RlHXSj9PLtGTKmxLNGg== +graphql-config@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.0.3.tgz#d9aa2954cf47a927f9cb83cdc4e42ae55d0b321e" + integrity sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ== dependencies: "@graphql-tools/graphql-file-loader" "^8.0.0" "@graphql-tools/json-file-loader" "^8.0.0" @@ -3431,84 +3481,83 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.6.3.tgz#97cfdc93f74fb8af2a1acb0b78f836f1fb40c449" - integrity sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: execa "^5.0.0" - jest-util "^29.6.3" + jest-util "^29.7.0" p-limit "^3.1.0" -jest-circus@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.4.tgz#f074c8d795e0cc0f2ebf0705086b1be6a9a8722f" - integrity sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw== +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: - "@jest/environment" "^29.6.4" - "@jest/expect" "^29.6.4" - "@jest/test-result" "^29.6.4" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^29.6.3" - jest-matcher-utils "^29.6.4" - jest-message-util "^29.6.3" - jest-runtime "^29.6.4" - jest-snapshot "^29.6.4" - jest-util "^29.6.3" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" p-limit "^3.1.0" - pretty-format "^29.6.3" + pretty-format "^29.7.0" pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.4.tgz#ad52f2dfa1b0291de7ec7f8d7c81ac435521ede0" - integrity sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ== +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@jest/core" "^29.6.4" - "@jest/test-result" "^29.6.4" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.6.4" - jest-util "^29.6.3" - jest-validate "^29.6.3" - prompts "^2.0.1" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" yargs "^17.3.1" -jest-config@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.4.tgz#eff958ee41d4e1ee7a6106d02b74ad9fc427d79e" - integrity sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A== +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.6.4" + "@jest/test-sequencer" "^29.7.0" "@jest/types" "^29.6.3" - babel-jest "^29.6.4" + babel-jest "^29.7.0" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.6.4" - jest-environment-node "^29.6.4" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" jest-get-type "^29.6.3" jest-regex-util "^29.6.3" - jest-resolve "^29.6.4" - jest-runner "^29.6.4" - jest-util "^29.6.3" - jest-validate "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.6.3" + pretty-format "^29.7.0" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -3522,45 +3571,55 @@ jest-diff@^29.6.4: jest-get-type "^29.6.3" pretty-format "^29.6.3" -jest-docblock@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.6.3.tgz#293dca5188846c9f7c0c2b1bb33e5b11f21645f2" - integrity sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ== +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" -jest-each@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.3.tgz#1956f14f5f0cb8ae0b2e7cabc10bb03ec817c142" - integrity sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: "@jest/types" "^29.6.3" chalk "^4.0.0" jest-get-type "^29.6.3" - jest-util "^29.6.3" - pretty-format "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" -jest-environment-node@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.4.tgz#4ce311549afd815d3cafb49e60a1e4b25f06d29f" - integrity sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ== +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: - "@jest/environment" "^29.6.4" - "@jest/fake-timers" "^29.6.4" + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.6.3" - jest-util "^29.6.3" + jest-mock "^29.7.0" + jest-util "^29.7.0" jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.4.tgz#97143ce833829157ea7025204b08f9ace609b96a" - integrity sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog== +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: "@jest/types" "^29.6.3" "@types/graceful-fs" "^4.1.3" @@ -3569,20 +3628,20 @@ jest-haste-map@^29.6.4: fb-watchman "^2.0.0" graceful-fs "^4.2.9" jest-regex-util "^29.6.3" - jest-util "^29.6.3" - jest-worker "^29.6.4" + jest-util "^29.7.0" + jest-worker "^29.7.0" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz#b9661bc3aec8874e59aff361fa0c6d7cd507ea01" - integrity sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: jest-get-type "^29.6.3" - pretty-format "^29.6.3" + pretty-format "^29.7.0" jest-matcher-utils@^29.6.4: version "29.6.4" @@ -3594,6 +3653,16 @@ jest-matcher-utils@^29.6.4: jest-get-type "^29.6.3" pretty-format "^29.6.3" +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + jest-message-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.3.tgz#bce16050d86801b165f20cfde34dc01d3cf85fbf" @@ -3609,14 +3678,29 @@ jest-message-util@^29.6.3: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.3.tgz#433f3fd528c8ec5a76860177484940628bdf5e0a" - integrity sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - jest-util "^29.6.3" + jest-util "^29.7.0" jest-pnp-resolver@^1.2.2: version "1.2.3" @@ -3628,67 +3712,67 @@ jest-regex-util@^29.6.3: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz#20156b33c7eacbb6bb77aeba4bed0eab4a3f8734" - integrity sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: jest-regex-util "^29.6.3" - jest-snapshot "^29.6.4" + jest-snapshot "^29.7.0" -jest-resolve@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.4.tgz#e34cb06f2178b429c38455d98d1a07572ac9faa3" - integrity sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q== +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.4" + jest-haste-map "^29.7.0" jest-pnp-resolver "^1.2.2" - jest-util "^29.6.3" - jest-validate "^29.6.3" + jest-util "^29.7.0" + jest-validate "^29.7.0" resolve "^1.20.0" resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.4.tgz#b3b8ccb85970fde0fae40c73ee11eb75adccfacf" - integrity sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw== +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: - "@jest/console" "^29.6.4" - "@jest/environment" "^29.6.4" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.6.3" - jest-environment-node "^29.6.4" - jest-haste-map "^29.6.4" - jest-leak-detector "^29.6.3" - jest-message-util "^29.6.3" - jest-resolve "^29.6.4" - jest-runtime "^29.6.4" - jest-util "^29.6.3" - jest-watcher "^29.6.4" - jest-worker "^29.6.4" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.4.tgz#b0bc495c9b6b12a0a7042ac34ca9bb85f8cd0ded" - integrity sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA== +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== dependencies: - "@jest/environment" "^29.6.4" - "@jest/fake-timers" "^29.6.4" - "@jest/globals" "^29.6.4" + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" @@ -3696,13 +3780,13 @@ jest-runtime@^29.6.4: collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.6.4" - jest-message-util "^29.6.3" - jest-mock "^29.6.3" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" jest-regex-util "^29.6.3" - jest-resolve "^29.6.4" - jest-snapshot "^29.6.4" - jest-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" strip-bom "^4.0.0" @@ -3714,30 +3798,30 @@ jest-snapshot-serializer-ansi@^1.0.0: has-ansi "^3.0.0" strip-ansi "^4.0.0" -jest-snapshot@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.4.tgz#9833eb6b66ff1541c7fd8ceaa42d541f407b4876" - integrity sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.6.4" + expect "^29.7.0" graceful-fs "^4.2.9" - jest-diff "^29.6.4" + jest-diff "^29.7.0" jest-get-type "^29.6.3" - jest-matcher-utils "^29.6.4" - jest-message-util "^29.6.3" - jest-util "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" natural-compare "^1.4.0" - pretty-format "^29.6.3" + pretty-format "^29.7.0" semver "^7.5.3" jest-util@^29.0.0, jest-util@^29.6.3: @@ -3752,51 +3836,63 @@ jest-util@^29.0.0, jest-util@^29.6.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.3.tgz#a75fca774cfb1c5758c70d035d30a1f9c2784b4d" - integrity sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg== +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^29.6.3" + pretty-format "^29.7.0" -jest-watcher@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.4.tgz#633eb515ae284aa67fd6831f1c9d1b534cf0e0ba" - integrity sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ== +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: - "@jest/test-result" "^29.6.4" + "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.13.1" - jest-util "^29.6.3" + jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.4.tgz#f34279f4afc33c872b470d4af21b281ac616abd3" - integrity sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q== +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" - jest-util "^29.6.3" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.6.4: - version "29.6.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.4.tgz#7c48e67a445ba264b778253b5d78d4ebc9d0a622" - integrity sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw== +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - "@jest/core" "^29.6.4" + "@jest/core" "^29.7.0" "@jest/types" "^29.6.3" import-local "^3.0.2" - jest-cli "^29.6.4" + jest-cli "^29.7.0" jiti@^1.18.2: version "1.19.3" @@ -4161,10 +4257,10 @@ next-line@^1.1.0: resolved "https://registry.yarnpkg.com/next-line/-/next-line-1.1.0.tgz#fcae57853052b6a9bae8208e40dd7d3c2d304603" integrity sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ== -nock@^13.3.3: - version "13.3.3" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.3.tgz#179759c07d3f88ad3e794ace885629c1adfd3fe7" - integrity sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw== +nock@^13.3.4: + version "13.3.4" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.4.tgz#4ed3ed1465a75c87833044a881dbdd6546337e8d" + integrity sha512-DDpmn5oLEdCTclEqweOT4U7bEpuoifBMFUXem9sA4turDAZ5tlbrEoWqCorwXey8CaAw44mst5JOQeVNiwtkhw== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -4509,10 +4605,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.2.tgz#78fcecd6d870551aa5547437cdae39d4701dca5b" - integrity sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== pretty-format@^29.0.0, pretty-format@^29.6.3: version "29.6.3" @@ -4523,6 +4619,15 @@ pretty-format@^29.0.0, pretty-format@^29.6.3: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-warning@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" @@ -5271,10 +5376,10 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +typescript@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== uglify-js@^3.1.4: version "3.17.4" @@ -5291,6 +5396,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + unicode-byte-truncate@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unicode-byte-truncate/-/unicode-byte-truncate-1.0.0.tgz#aa6f0f3475193fe20c320ac9213e36e62e8764a7"