diff --git a/bench.js b/bench.js
index 1a74464..121f831 100644
--- a/bench.js
+++ b/bench.js
@@ -1,5 +1,8 @@
-function errorResult(stderr, step) {
- return { error: true, step, stderr }
+const cp = require("child_process")
+const path = require("path")
+
+function errorResult(message, error) {
+ return { isError: true, message, error }
}
let cwd = process.cwd();
@@ -16,19 +19,62 @@ function BenchContext(app, config) {
self.app = app;
self.config = config;
- self.runTask = function(cmd, title) {
- if (title) app.log(title);
+ self.runTask = async function(cmd, { title, shouldLogOutput } = {}) {
+ if (title) {
+ app.log(title)
+ }
+
+ let stdout = "", stderr = "", error = false
+
+ try {
+ if (shouldLogOutput) {
+ console.log(`<=== Start command output (cwd: ${process.cwd()})`)
+ }
+
+ await new Promise(function (resolve) {
+ const proc = cp.spawn("/bin/bash", ["-c", cmd], { stdio: "pipe" })
+
+ proc.stdout.on("data", function (data) {
+ data = data.toString()
- const { stdout, stderr, code } = shell.exec(cmd, { silent: true });
- var error = false;
+ if (data && shouldLogOutput) {
+ console.log(data.trim())
+ }
+
+ stdout += data
+ })
+
+ proc.stderr.on("data", function (data) {
+ data = data.toString()
- if (code != 0) {
- app.log(`ops.. Something went wrong (error code ${code})`);
- app.log(`stderr: ${stderr}`);
- error = true;
+ if (data && shouldLogOutput) {
+ console.log(data.trim())
+ }
+
+ stderr += data
+ })
+
+ proc.on("close", function (code) {
+ error = !!code
+ resolve()
+ })
+ })
+ } catch (err) {
+ error = true
+ if (err.code) {
+ stdout = err.stdout.toString()
+ stderr = err.stderr.toString()
+ } else {
+ app.log.error("Caught exception in command execution")
+ app.log.error(err)
}
+ } finally {
+ if (shouldLogOutput) {
+ console.log("===> Finished command output")
+ }
+ }
- return { stdout, stderr, error };
+ return { stdout, stderr, error };
}
}
@@ -37,115 +83,128 @@ function BenchContext(app, config) {
var BenchConfigs = {
"import": {
title: "Import Benchmark (random transfers)",
- branchCommand: 'cargo run --release -p node-bench --quiet -- node::import::native::sr25519::transfer_keep_alive::rocksdb::medium --json'
+ benchCommand: 'cargo run --quiet --release -p node-bench --quiet -- node::import::native::sr25519::transfer_keep_alive::rocksdb::medium --json'
},
"import/small": {
title: "Import Benchmark (Small block (10tx) with random transfers)",
- branchCommand: 'cargo run --release -p node-bench --quiet -- node::import::native::sr25519::transfer_keep_alive::rocksdb::small --json'
+ benchCommand: 'cargo run --quiet --release -p node-bench --quiet -- node::import::native::sr25519::transfer_keep_alive::rocksdb::small --json'
},
"import/large": {
title: "Import Benchmark (Large block (500tx) with random transfers)",
- branchCommand: 'cargo run --release -p node-bench --quiet -- node::import::native::sr25519::transfer_keep_alive::rocksdb::large --json'
+ benchCommand: 'cargo run --quiet --release -p node-bench --quiet -- node::import::native::sr25519::transfer_keep_alive::rocksdb::large --json'
},
"import/full-wasm": {
title: "Import Benchmark (Full block with wasm, for weights validation)",
- branchCommand: 'cargo run --release -p node-bench --quiet -- node::import::wasm::sr25519::transfer_keep_alive::rocksdb::full --json'
+ benchCommand: 'cargo run --quiet --release -p node-bench --quiet -- node::import::wasm::sr25519::transfer_keep_alive::rocksdb::full --json'
},
"import/wasm": {
title: "Import Benchmark via wasm (random transfers)",
- branchCommand: 'cargo run --release -p node-bench --quiet -- node::import::wasm::sr25519::transfer_keep_alive::rocksdb::medium --json'
+ benchCommand: 'cargo run --quiet --release -p node-bench --quiet -- node::import::wasm::sr25519::transfer_keep_alive::rocksdb::medium --json'
},
"ed25519": {
title: "Import Benchmark (random transfers, ed25519 signed)",
- branchCommand: 'cargo run --release -p node-bench --quiet -- node::import::native::ed25519::transfer_keep_alive::rocksdb::medium --json'
+ benchCommand: 'cargo run --quiet --release -p node-bench --quiet -- node::import::native::ed25519::transfer_keep_alive::rocksdb::medium --json'
}
}
-const prepareBranch = function(
+const prepareBranch = async function(
{
contributor,
owner,
repo,
branch,
baseBranch,
+ getPushDomain
},
{
benchContext
}
) {
- shell.mkdir("git")
- shell.cd(cwd + "/git")
+ const gitDirectory = path.join(cwd, "git")
+ shell.mkdir(gitDirectory)
- benchContext.runTask(`git clone https://github.com/${owner}/${repo}`);
- shell.cd(cwd + `/git/${repo}`);
+ const repositoryPath = path.join(gitDirectory, repo)
+ var { url } = await getPushDomain()
+ await benchContext.runTask(`git clone ${url}/${owner}/${repo} ${repositoryPath}`);
+ shell.cd(repositoryPath)
- var { error } = benchContext.runTask(`git add . && git reset --hard HEAD`);
+ var { error } = await benchContext.runTask(`git add . && git reset --hard HEAD`);
if (error) return errorResult(stderr);
- var { error, stdout } = benchContext.runTask("git rev-parse HEAD");
+ var { error, stdout } = await benchContext.runTask("git rev-parse HEAD");
if (error) return errorResult(stderr);
const detachedHead = stdout.trim()
// Check out to the detached head so that any branch can be deleted
- var { error, stderr } = benchContext.runTask(`git checkout ${detachedHead}`);
+ var { error, stderr } = await benchContext.runTask(`git checkout ${detachedHead}`);
if (error) return errorResult(stderr);
// Recreate PR remote
- benchContext.runTask(`git remote remove pr`);
- var { error, stderr } = benchContext.runTask(`git remote add pr https://github.com/${contributor}/${repo}.git`);
- if (error) return errorResult(stderr);
+ await benchContext.runTask(`git remote remove pr`);
+ var { url } = await getPushDomain()
+ var { error, stderr } = await benchContext.runTask(`git remote add pr ${url}/${contributor}/${repo}.git`);
+ if (error) return errorResult(`Failed to add remote reference to ${owner}/${repo}`);
// Fetch and recreate the PR's branch
- benchContext.runTask(`git branch -D ${branch}`);
- var { error, stderr } = benchContext.runTask(`git fetch pr ${branch} && git checkout --track pr/${branch}`, `Checking out ${branch}...`);
+ await benchContext.runTask(`git branch -D ${branch}`);
+ var { error, stderr } = await benchContext.runTask(`git fetch pr ${branch} && git checkout --track pr/${branch}`, `Checking out ${branch}...`);
if (error) return errorResult(stderr);
// Fetch and merge master
- var { error, stderr } = benchContext.runTask(`git pull origin ${baseBranch}`, `Merging branch ${baseBranch}`);
+ var { error, stderr } = await benchContext.runTask(`git pull origin ${baseBranch}`, `Merging branch ${baseBranch}`);
if (error) return errorResult(stderr);
}
-async function benchBranch(app, config) {
- app.log("Waiting our turn to run benchmark...")
-
- const release = await mutex.acquire();
+function benchBranch(app, config) {
+ app.log("Waiting our turn to run benchBranch...")
- try {
+ return mutex.runExclusive(async function () {
+ try {
if (config.repo != "substrate") {
return errorResult("Node benchmarks only available on Substrate.")
}
- var benchConfig = BenchConfigs[config.id || "import"];
- collector = new libCollector.Collector();
+ var id = config.id
+ var benchConfig = BenchConfigs[id];
+ if (!benchConfig) {
+ return errorResult(`Bench configuration for "${id}" was not found`)
+ }
+ const collector = new libCollector.Collector();
var benchContext = new BenchContext(app, config);
- console.log(`Started benchmark "${benchConfig.title}."`);
+ var { title, benchCommand } = benchConfig
+ app.log(`Started benchmark "${title}."`);
- var error = prepareBranch(config, { benchContext })
+ var error = await prepareBranch(config, { benchContext })
if (error) return error
- var { stderr, error, stdout } = benchContext.runTask(benchConfig.branchCommand, `Benching new branch: ${config.branch}...`);
+ var { stderr, error, stdout } = await benchContext.runTask(benchCommand, {
+ title: `Benching branch ${config.branch}...`,
+ shouldLogOutput: true
+ });
+ if (error) return errorResult(stderr)
await collector.CollectBranchCustomRunner(stdout);
-
- let report = await collector.Report();
- report = `Benchmark: **${benchConfig.title}**\n\n` + report;
-
- return report;
- }
- catch (error) {
- return errorResult(error.toString());
- }
- finally {
- release();
- }
+ let output = await collector.Report();
+
+ return {
+ title,
+ output,
+ extraInfo: "",
+ benchCommand
+ };
+ }
+ catch (error) {
+ return errorResult("Caught exception in benchBranch", error);
+ }
+ })
}
var SubstrateRuntimeBenchmarkConfigs = {
"pallet": {
- title: "Benchmark Runtime Pallet",
- branchCommand: [
- 'cargo run --release',
+ title: "Runtime Pallet",
+ benchCommand: [
+ 'cargo run --quiet --release',
'--features=runtime-benchmarks',
'--manifest-path=bin/node/cli/Cargo.toml',
'--',
@@ -163,9 +222,9 @@ var SubstrateRuntimeBenchmarkConfigs = {
].join(' '),
},
"substrate": {
- title: "Benchmark Runtime Substrate Pallet",
- branchCommand: [
- 'cargo run --release',
+ title: "Runtime Substrate Pallet",
+ benchCommand: [
+ 'cargo run --quiet --release',
'--features=runtime-benchmarks',
'--manifest-path=bin/node/cli/Cargo.toml',
'--',
@@ -183,16 +242,16 @@ var SubstrateRuntimeBenchmarkConfigs = {
].join(' '),
},
"custom": {
- title: "Benchmark Runtime Custom",
- branchCommand: 'cargo run --release --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark',
+ title: "Runtime Custom",
+ benchCommand: 'cargo run --quiet --release --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark',
}
}
var PolkadotRuntimeBenchmarkConfigs = {
"pallet": {
- title: "Benchmark Runtime Pallet",
- branchCommand: [
- 'cargo run --release',
+ title: "Runtime Pallet",
+ benchCommand: [
+ 'cargo run --quiet --release',
'--features=runtime-benchmarks',
'--',
'benchmark',
@@ -209,9 +268,9 @@ var PolkadotRuntimeBenchmarkConfigs = {
].join(' '),
},
"polkadot": {
- title: "Benchmark Runtime Polkadot Pallet",
- branchCommand: [
- 'cargo run --release',
+ title: "Runtime Polkadot Pallet",
+ benchCommand: [
+ 'cargo run --quiet --release',
'--features=runtime-benchmarks',
'--',
'benchmark',
@@ -228,9 +287,9 @@ var PolkadotRuntimeBenchmarkConfigs = {
].join(' '),
},
"kusama": {
- title: "Benchmark Runtime Kusama Pallet",
- branchCommand: [
- 'cargo run --release',
+ title: "Runtime Kusama Pallet",
+ benchCommand: [
+ 'cargo run --quiet --release',
'--features=runtime-benchmarks',
'--',
'benchmark',
@@ -247,9 +306,9 @@ var PolkadotRuntimeBenchmarkConfigs = {
].join(' '),
},
"westend": {
- title: "Benchmark Runtime Westend Pallet",
- branchCommand: [
- 'cargo run --release',
+ title: "Runtime Westend Pallet",
+ benchCommand: [
+ 'cargo run --quiet --release',
'--features=runtime-benchmarks',
'--',
'benchmark',
@@ -266,8 +325,8 @@ var PolkadotRuntimeBenchmarkConfigs = {
].join(' '),
},
"custom": {
- title: "Benchmark Runtime Custom",
- branchCommand: 'cargo run --release --features runtime-benchmarks -- benchmark',
+ title: "Runtime Custom",
+ benchCommand: 'cargo run --quiet --release --features runtime-benchmarks -- benchmark',
}
}
@@ -294,100 +353,96 @@ function checkAllowedCharacters(command) {
return true;
}
-async function benchmarkRuntime(app, config) {
- app.log("Waiting our turn to run benchmark...")
-
- const release = await mutex.acquire();
-
- try {
- if (config.extra.split(" ").length < 2) {
- return errorResult(`Incomplete command.`)
- }
-
- let command = config.extra.split(" ")[0];
-
- var benchConfig;
- if (config.repo == "substrate") {
- benchConfig = SubstrateRuntimeBenchmarkConfigs[command];
- } else if (config.repo == "polkadot") {
- benchConfig = PolkadotRuntimeBenchmarkConfigs[command];
- } else {
- return errorResult(`${config.repo} repo is not supported.`)
- }
-
- var extra = config.extra.split(" ").slice(1).join(" ").trim();
-
- if (!checkAllowedCharacters(extra)) {
- return errorResult(`Not allowed to use #&|; in the command!`);
- }
-
- // Append extra flags to the end of the command
- let branchCommand = benchConfig.branchCommand;
- if (command == "custom") {
- // extra here should just be raw arguments to add to the command
- branchCommand += " " + extra;
- } else {
- // extra here should be the name of a pallet
- branchCommand = branchCommand.replace("{pallet_name}", extra);
- // custom output file name so that pallets with path don't cause issues
- let outputFile = extra.includes("::") ? extra.replace("::", "_") + ".rs" : '';
- branchCommand = branchCommand.replace("{output_file}", outputFile);
- // pallet folder should be just the name of the pallet, without the leading
- // "pallet_" or "frame_", then separated with "-"
- let palletFolder = extra.split("_").slice(1).join("-").trim();
- branchCommand = branchCommand.replace("{pallet_folder}", palletFolder);
- }
-
- let missing = checkRuntimeBenchmarkCommand(branchCommand);
- let output = branchCommand.includes("--output");
-
- if (missing.length > 0) {
- return errorResult(`Missing required flags: ${missing.toString()}`)
- }
-
- var benchContext = new BenchContext(app, config);
- console.log(`Started runtime benchmark "${benchConfig.title}."`);
-
- var error = prepareBranch(config, { benchContext })
- if (error) return error
-
- var { stdout, stderr } = benchContext.runTask(branchCommand, `Benching branch: ${config.branch}...`);
-
- let report = `Benchmark: **${benchConfig.title}**\n\n`
- + branchCommand
- + "\n\n\nResults
\n\n"
- + (stdout ? stdout : stderr)
- + "\n\n ";
-
- // If `--output` is set, we commit the benchmark file to the repo
- if (output) {
- const regex = /--output(?:=|\s+)(".+?"|\S+)/;
- const path = branchCommand.match(regex)[1];
- benchContext.runTask(`git add ${path}`);
- benchContext.runTask(`git commit -m "${branchCommand}"`);
-
- const target = `${config.contributor}/${config.repo}`
- const pushDomain = await config.getPushDomain()
-
- try {
- benchContext.runTask(`git remote set-url pr ${pushDomain}/${target}.git`, "Setting up remote for PR");
- benchContext.runTask(`git push pr HEAD`);
- } catch (err) {
- const errorDate = new Date.toISOString()
- console.log(`Push error happened at ${errorDate}:`)
- console.error(err)
- report = `${report}\n\nNOTE: Error occurred while trying to push the generated weights (at ${errorDate} in the logs).`
- }
- }
-
- return report;
- }
- catch (error) {
- return errorResult(error.toString());
- }
- finally {
- release();
- }
+function benchmarkRuntime(app, config) {
+ app.log("Waiting our turn to run benchmarkRuntime...")
+
+ return mutex.runExclusive(async function () {
+ try {
+ if (config.extra.split(" ").length < 2) {
+ return errorResult(`Incomplete command.`)
+ }
+
+ let command = config.extra.split(" ")[0];
+
+ var benchConfig;
+ if (config.repo == "substrate") {
+ benchConfig = SubstrateRuntimeBenchmarkConfigs[command];
+ } else if (config.repo == "polkadot") {
+ benchConfig = PolkadotRuntimeBenchmarkConfigs[command];
+ } else {
+ return errorResult(`${config.repo} repo is not supported.`)
+ }
+
+ var extra = config.extra.split(" ").slice(1).join(" ").trim();
+
+ if (!checkAllowedCharacters(extra)) {
+ return errorResult(`Not allowed to use #&|; in the command!`);
+ }
+
+ // Append extra flags to the end of the command
+ let benchCommand = benchConfig.benchCommand;
+ if (command == "custom") {
+ // extra here should just be raw arguments to add to the command
+ benchCommand += " " + extra;
+ } else {
+ // extra here should be the name of a pallet
+ benchCommand = benchCommand.replace("{pallet_name}", extra);
+ // custom output file name so that pallets with path don't cause issues
+ let outputFile = extra.includes("::") ? extra.replace("::", "_") + ".rs" : '';
+ benchCommand = benchCommand.replace("{output_file}", outputFile);
+ // pallet folder should be just the name of the pallet, without the leading
+ // "pallet_" or "frame_", then separated with "-"
+ let palletFolder = extra.split("_").slice(1).join("-").trim();
+ benchCommand = benchCommand.replace("{pallet_folder}", palletFolder);
+ }
+
+ let missing = checkRuntimeBenchmarkCommand(benchCommand);
+ if (missing.length > 0) {
+ return errorResult(`Missing required flags: ${missing.toString()}`)
+ }
+
+ var benchContext = new BenchContext(app, config);
+ var { title } = benchConfig
+ app.log(`Started runtime benchmark "${title}."`);
+
+ var error = await prepareBranch(config, { benchContext })
+ if (error) return error
+
+ var { stdout, stderr } = await benchContext.runTask(benchCommand, {
+ title: `Benching runtime in branch ${config.branch}...`,
+ shouldLogOutput: true
+ });
+ let extraInfo = ""
+
+ // If `--output` is set, we commit the benchmark file to the repo
+ if (benchCommand.includes("--output")) {
+ const regex = /--output(?:=|\s+)(".+?"|\S+)/;
+ const path = benchCommand.match(regex)[1];
+ await benchContext.runTask(`git add ${path}`);
+ await benchContext.runTask(`git commit -m "${benchCommand}"`);
+
+ const target = `${config.contributor}/${config.repo}`
+ const { url, token } = await config.getPushDomain()
+
+ try {
+ await benchContext.runTask(`git remote set-url pr ${url}/${target}.git`, "Setting up remote for PR");
+ await benchContext.runTask(`git push pr HEAD`);
+ } catch (error) {
+ extraInfo = `NOTE: Failed to push commits to repository: ${error.toString().replace(token, "{secret}", "g")}`
+ }
+ }
+
+ return {
+ title,
+ output: stdout ? stdout : stderr,
+ extraInfo,
+ benchCommand
+ }
+ }
+ catch (error) {
+ return errorResult("Caught exception in benchmarkRuntime", error);
+ }
+ })
}
module.exports = {
diff --git a/index.js b/index.js
index c234f1e..5160f2f 100644
--- a/index.js
+++ b/index.js
@@ -2,11 +2,14 @@ const { createAppAuth } = require("@octokit/auth-app")
const assert = require("assert")
const fs = require("fs")
-var { benchBranch, benchmarkRuntime } = require("./bench");
+var { benchBranch, benchmarkRuntime } = require("./bench")
-module.exports = app => {
+const githubCommentLimitLength = 65536
+const githubCommentLimitTruncateMessage = "..."
+
+module.exports = (app) => {
const baseBranch = process.env.BASE_BRANCH || "master"
- app.log(`base branch: ${baseBranch}`);
+ app.log.debug(`base branch: ${baseBranch}`)
const appId = parseInt(process.env.APP_ID)
assert(appId)
@@ -28,95 +31,150 @@ module.exports = app => {
clientSecret,
})
- app.on('issue_comment', async context => {
- let commentText = context.payload.comment.body;
+ app.on("issue_comment", async (context) => {
+ let commentText = context.payload.comment.body
if (
!context.payload.issue.hasOwnProperty("pull_request") ||
context.payload.action !== "created" ||
!commentText.startsWith("/bench")
) {
- return;
+ return
}
- const installationId = (context.payload.installation || {}).id;
- if (!installationId) {
- await context.octokit.issues.createComment(
- context.issue({ body: `Error: Installation id was missing from webhook payload` })
+ try {
+ const installationId = (context.payload.installation || {}).id
+ if (!installationId) {
+ await context.octokit.issues.createComment(
+ context.issue({
+ body: `Error: Installation id was missing from webhook payload`,
+ }),
+ )
+ return
+ }
+
+ const getPushDomain = async function () {
+ const token = (
+ await authInstallation({
+ type: "installation",
+ installationId,
+ })
+ ).token
+
+ const url = `https://x-access-token:${token}@github.com`
+ return { url, token }
+ }
+
+ const repo = context.payload.repository.name
+ const owner = context.payload.repository.owner.login
+ const pull_number = context.payload.issue.number
+
+ // Capture `` in `/bench `
+ let action = commentText.split(" ").splice(1, 1).join(" ").trim()
+ // Capture all `` text in `/bench `
+ let extra = commentText.split(" ").splice(2).join(" ").trim()
+
+ let pr = await context.octokit.pulls.get({ owner, repo, pull_number })
+ const contributor = pr.data.head.user.login
+ const branch = pr.data.head.ref
+ app.log.debug(`branch: ${branch}`)
+
+ const issueComment = context.issue({
+ body: `Starting benchmark for branch: ${branch} (vs ${baseBranch})\n\n Comment will be updated.`,
+ })
+ const issue_comment = await context.octokit.issues.createComment(
+ issueComment,
)
- return
- }
+ const comment_id = issue_comment.data.id
+
+ let config = {
+ owner,
+ contributor,
+ repo,
+ branch,
+ baseBranch,
+ id: action,
+ extra,
+ getPushDomain,
+ }
+
+ let report
+ if (action == "runtime") {
+ report = await benchmarkRuntime(app, config)
+ } else {
+ report = await benchBranch(app, config)
+ }
+
+ if (report.isError) {
+ app.log.error(report.message)
- const getPushDomain = async function() {
- const token = (
- await authInstallation({
- type: "installation",
- installationId,
+ if (report.error) {
+ app.log.error(report.error)
+ }
+
+ const output = `${report.message}${
+ report.error ? `: ${report.error.toString()}` : ""
+ }`
+
+ await context.octokit.issues.updateComment({
+ owner,
+ repo,
+ comment_id,
+ body: `Error running benchmark: **${branch}**\n\nstdout
${output} `,
})
- ).token
- return `https://x-access-token:${token}@github.com`
- }
+ return
+ }
- // Capture `` in `/bench `
- let action = commentText.split(" ").splice(1, 1).join(" ").trim();
- // Capture all `` text in `/bench `
- let extra = commentText.split(" ").splice(2).join(" ").trim();
-
- const repo = context.payload.repository.name;
- const owner = context.payload.repository.owner.login;
- const pull_number = context.payload.issue.number;
-
- let pr = await context.octokit.pulls.get({ owner, repo, pull_number });
- const contributor = pr.data.head.user.login;
- const branch = pr.data.head.ref;
- app.log(`branch: ${branch}`);
-
- const issueComment = context.issue({ body: `Starting benchmark for branch: ${branch} (vs ${baseBranch})\n\n Comment will be updated.` });
- const issue_comment = await context.octokit.issues.createComment(issueComment);
- const comment_id = issue_comment.data.id;
-
- let config = {
- owner,
- contributor,
- repo,
- branch,
- baseBranch,
- id: action,
- extra,
- getPushDomain
- }
+ let { title, output, extraInfo, benchCommand } = report
- let report;
- if (action == "runtime") {
- report = await benchmarkRuntime(app, config)
- } else {
- report = await benchBranch(app, config)
- };
-
- // Max github body is 65536 characters... we are a little conservative.
- report = report.substr(-65000)
-
- if (report.error) {
- app.log(`error: ${report.stderr}`)
- if (report.step != "merge") {
- context.octokit.issues.updateComment({
- owner, repo, comment_id,
- body: `Error running benchmark: **${branch}**\n\nstdout
${report.stderr} `,
- });
- } else {
- context.octokit.issues.updateComment({
- owner, repo, comment_id,
- body: `Error running benchmark: **${branch}**\n\nMerge conflict merging branch to master!`,
- });
+ const bodyPrefix = `
+Benchmark **${title}** for branch "${branch}" with command ${benchCommand}
+
+
+Results
+
+\`\`\`
+`.trim()
+
+ const bodySuffix = `
+\`\`\`
+
+
+`.trim()
+
+ const padding = 16
+ const formattingLength =
+ bodyPrefix.length + bodySuffix.length + extraInfo.length + padding
+ const length = formattingLength + output.length
+ if (length >= githubCommentLimitLength) {
+ output = `${output.slice(
+ 0,
+ githubCommentLimitLength -
+ (githubCommentLimitTruncateMessage.length + formattingLength),
+ )}${githubCommentLimitTruncateMessage}`
}
- } else {
- app.log(`report: ${report}`);
- context.octokit.issues.updateComment({
- owner, repo, comment_id,
- body: `Finished benchmark for branch: **${branch}**\n\n${report}`,
- });
- }
- return;
+ const body = `
+${bodyPrefix}
+${output}
+${bodySuffix}
+
+${extraInfo}
+`.trim()
+
+ await context.octokit.issues.updateComment({
+ owner,
+ repo,
+ comment_id,
+ body,
+ })
+ } catch (error) {
+ app.log.error(error)
+ await context.octokit.issues.createComment(
+ context.issue({
+ body: `Exception caught: \`${error.message}\`\n${error.stack}`,
+ }),
+ )
+ }
})
}
diff --git a/package.json b/package.json
index f432797..10d87e4 100644
--- a/package.json
+++ b/package.json
@@ -15,15 +15,15 @@
"test:watch": "jest --watch --notify --notifyMode=change --coverage"
},
"dependencies": {
- "@octokit/auth-app": "^3.4.1",
- "async-mutex": "^0.1.4",
- "probot": "^11.4.0",
- "shelljs": "^0.8.3",
+ "@octokit/auth-app": "^3.5.3",
+ "async-mutex": "^0.3.1",
+ "probot": "^12.1.0",
+ "shelljs": "^0.8.4",
"smee-client": "^1.2.2"
},
"devDependencies": {
- "jest": "^27.0.4",
- "nodemon": "^2.0.0"
+ "jest": "^27.0.6",
+ "nodemon": "^2.0.9"
},
"nodemonConfig": {
"exec": "npm start",
diff --git a/yarn.lock b/yarn.lock
index ef1986e..6d1d2f1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -315,94 +315,94 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-"@jest/console@^27.0.2":
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.2.tgz#b8eeff8f21ac51d224c851e1729d2630c18631e6"
- integrity sha512-/zYigssuHLImGeMAACkjI4VLAiiJznHgAl3xnFT19iWyct2LhrH3KXOjHRmxBGTkiPLZKKAJAgaPpiU9EZ9K+w==
+"@jest/console@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f"
+ integrity sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
chalk "^4.0.0"
- jest-message-util "^27.0.2"
- jest-util "^27.0.2"
+ jest-message-util "^27.0.6"
+ jest-util "^27.0.6"
slash "^3.0.0"
-"@jest/core@^27.0.4":
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.4.tgz#679bf9ac07900da2ddbb9667bb1afa8029038f53"
- integrity sha512-+dsmV8VUs1h/Szb+rEWk8xBM1fp1I///uFy9nk3wXGvRsF2lBp8EVPmtWc+QFRb3MY2b7u2HbkGF1fzoDzQTLA==
+"@jest/core@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.6.tgz#c5f642727a0b3bf0f37c4b46c675372d0978d4a1"
+ integrity sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==
dependencies:
- "@jest/console" "^27.0.2"
- "@jest/reporters" "^27.0.4"
- "@jest/test-result" "^27.0.2"
- "@jest/transform" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/console" "^27.0.6"
+ "@jest/reporters" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/transform" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
emittery "^0.8.1"
exit "^0.1.2"
graceful-fs "^4.2.4"
- jest-changed-files "^27.0.2"
- jest-config "^27.0.4"
- jest-haste-map "^27.0.2"
- jest-message-util "^27.0.2"
- jest-regex-util "^27.0.1"
- jest-resolve "^27.0.4"
- jest-resolve-dependencies "^27.0.4"
- jest-runner "^27.0.4"
- jest-runtime "^27.0.4"
- jest-snapshot "^27.0.4"
- jest-util "^27.0.2"
- jest-validate "^27.0.2"
- jest-watcher "^27.0.2"
+ jest-changed-files "^27.0.6"
+ jest-config "^27.0.6"
+ jest-haste-map "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-regex-util "^27.0.6"
+ jest-resolve "^27.0.6"
+ jest-resolve-dependencies "^27.0.6"
+ jest-runner "^27.0.6"
+ jest-runtime "^27.0.6"
+ jest-snapshot "^27.0.6"
+ jest-util "^27.0.6"
+ jest-validate "^27.0.6"
+ jest-watcher "^27.0.6"
micromatch "^4.0.4"
p-each-series "^2.1.0"
rimraf "^3.0.0"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^27.0.3":
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.3.tgz#68769b1dfdd213e3456169d64fbe9bd63a5fda92"
- integrity sha512-pN9m7fbKsop5vc3FOfH8NF7CKKdRbEZzcxfIo1n2TT6ucKWLFq0P6gCJH0GpnQp036++yY9utHOxpeT1WnkWTA==
+"@jest/environment@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2"
+ integrity sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==
dependencies:
- "@jest/fake-timers" "^27.0.3"
- "@jest/types" "^27.0.2"
+ "@jest/fake-timers" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
- jest-mock "^27.0.3"
+ jest-mock "^27.0.6"
-"@jest/fake-timers@^27.0.3":
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.3.tgz#9899ba6304cc636734c74478df502e18136461dd"
- integrity sha512-fQ+UCKRIYKvTCEOyKPnaPnomLATIhMnHC/xPZ7yT1Uldp7yMgMxoYIFidDbpSTgB79+/U+FgfoD30c6wg3IUjA==
+"@jest/fake-timers@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df"
+ integrity sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
"@sinonjs/fake-timers" "^7.0.2"
"@types/node" "*"
- jest-message-util "^27.0.2"
- jest-mock "^27.0.3"
- jest-util "^27.0.2"
+ jest-message-util "^27.0.6"
+ jest-mock "^27.0.6"
+ jest-util "^27.0.6"
-"@jest/globals@^27.0.3":
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.3.tgz#1cf8933b7791bba0b99305cbf39fd4d2e3fe4060"
- integrity sha512-OzsIuf7uf+QalqAGbjClyezzEcLQkdZ+7PejUrZgDs+okdAK8GwRCGcYCirHvhMBBQh60Jr3NlIGbn/KBPQLEQ==
+"@jest/globals@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82"
+ integrity sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==
dependencies:
- "@jest/environment" "^27.0.3"
- "@jest/types" "^27.0.2"
- expect "^27.0.2"
+ "@jest/environment" "^27.0.6"
+ "@jest/types" "^27.0.6"
+ expect "^27.0.6"
-"@jest/reporters@^27.0.4":
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.4.tgz#95609b1be97afb80d55d8aa3d7c3179c15810e65"
- integrity sha512-Xa90Nm3JnV0xCe4M6A10M9WuN9krb+WFKxV1A98Y4ePCw40n++r7uxFUNU7DT1i9Behj7fjrAIju9oU0t1QtCg==
+"@jest/reporters@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.6.tgz#91e7f2d98c002ad5df94d5b5167c1eb0b9fd5b00"
+ integrity sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^27.0.2"
- "@jest/test-result" "^27.0.2"
- "@jest/transform" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/console" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/transform" "^27.0.6"
+ "@jest/types" "^27.0.6"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
@@ -413,70 +413,70 @@
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.0.2"
- jest-haste-map "^27.0.2"
- jest-resolve "^27.0.4"
- jest-util "^27.0.2"
- jest-worker "^27.0.2"
+ jest-haste-map "^27.0.6"
+ jest-resolve "^27.0.6"
+ jest-util "^27.0.6"
+ jest-worker "^27.0.6"
slash "^3.0.0"
source-map "^0.6.0"
string-length "^4.0.1"
terminal-link "^2.0.0"
- v8-to-istanbul "^7.0.0"
+ v8-to-istanbul "^8.0.0"
-"@jest/source-map@^27.0.1":
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.1.tgz#2afbf73ddbaddcb920a8e62d0238a0a9e0a8d3e4"
- integrity sha512-yMgkF0f+6WJtDMdDYNavmqvbHtiSpwRN2U/W+6uztgfqgkq/PXdKPqjBTUF1RD/feth4rH5N3NW0T5+wIuln1A==
+"@jest/source-map@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f"
+ integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==
dependencies:
callsites "^3.0.0"
graceful-fs "^4.2.4"
source-map "^0.6.0"
-"@jest/test-result@^27.0.2":
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.2.tgz#0451049e32ceb609b636004ccc27c8fa22263f10"
- integrity sha512-gcdWwL3yP5VaIadzwQtbZyZMgpmes8ryBAJp70tuxghiA8qL4imJyZex+i+USQH2H4jeLVVszhwntgdQ97fccA==
+"@jest/test-result@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051"
+ integrity sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==
dependencies:
- "@jest/console" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/console" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-sequencer@^27.0.4":
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.4.tgz#976493b277594d81e589896f0ed21f198308928a"
- integrity sha512-6UFEVwdmxYdyNffBxVVZxmXEdBE4riSddXYSnFNH0ELFQFk/bvagizim8WfgJTqF4EKd+j1yFxvhb8BMHfOjSQ==
+"@jest/test-sequencer@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b"
+ integrity sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==
dependencies:
- "@jest/test-result" "^27.0.2"
+ "@jest/test-result" "^27.0.6"
graceful-fs "^4.2.4"
- jest-haste-map "^27.0.2"
- jest-runtime "^27.0.4"
+ jest-haste-map "^27.0.6"
+ jest-runtime "^27.0.6"
-"@jest/transform@^27.0.2":
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.2.tgz#b073b7c589e3f4b842102468875def2bb722d6b5"
- integrity sha512-H8sqKlgtDfVog/s9I4GG2XMbi4Ar7RBxjsKQDUhn2XHAi3NG+GoQwWMER+YfantzExbjNqQvqBHzo/G2pfTiPw==
+"@jest/transform@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95"
+ integrity sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
babel-plugin-istanbul "^6.0.0"
chalk "^4.0.0"
convert-source-map "^1.4.0"
fast-json-stable-stringify "^2.0.0"
graceful-fs "^4.2.4"
- jest-haste-map "^27.0.2"
- jest-regex-util "^27.0.1"
- jest-util "^27.0.2"
+ jest-haste-map "^27.0.6"
+ jest-regex-util "^27.0.6"
+ jest-util "^27.0.6"
micromatch "^4.0.4"
pirates "^4.0.1"
slash "^3.0.0"
source-map "^0.6.1"
write-file-atomic "^3.0.0"
-"@jest/types@^27.0.2":
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.2.tgz#e153d6c46bda0f2589f0702b071f9898c7bbd37e"
- integrity sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg==
+"@jest/types@^27.0.6":
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.6.tgz#9a992bc517e0c49f035938b8549719c2de40706b"
+ integrity sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
@@ -484,7 +484,7 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
-"@octokit/auth-app@^3.3.0", "@octokit/auth-app@^3.4.1":
+"@octokit/auth-app@^3.3.0":
version "3.4.1"
resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-3.4.1.tgz#1cefeb4f2d2b086e7ab185d7131013d0736d12a5"
integrity sha512-YnmIawfVQOgkZ8/r7NKU5sQl5mR5HhkGsChAVeunQxjn8kJhDyPmfeLvrlJSYITTCgHBtUkw6+lrzDPilIHIuQ==
@@ -500,6 +500,22 @@
universal-github-app-jwt "^1.0.1"
universal-user-agent "^6.0.0"
+"@octokit/auth-app@^3.5.3":
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-3.5.3.tgz#078a552b04141c8e0933989ab6bf8125961742d7"
+ integrity sha512-KB5pZCQ3lN9U47+dTAPlyzQO4bFwaaJClnMI2vOYJC0HPm7mGxZ1m/xG7Tk2rn6g07Ei6n06vYoWvuuuHYkXNA==
+ dependencies:
+ "@octokit/auth-oauth-app" "^4.3.0"
+ "@octokit/auth-oauth-user" "^1.2.3"
+ "@octokit/request" "^5.6.0"
+ "@octokit/request-error" "^2.1.0"
+ "@octokit/types" "^6.0.3"
+ "@types/lru-cache" "^5.1.0"
+ deprecation "^2.3.1"
+ lru-cache "^6.0.0"
+ universal-github-app-jwt "^1.0.1"
+ universal-user-agent "^6.0.0"
+
"@octokit/auth-oauth-app@^4.3.0":
version "4.3.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.0.tgz#de02f184360ffd7cfccef861053784fc4410e7ea"
@@ -602,6 +618,11 @@
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.2.3.tgz#a7105796db9b85d25d3feba9a1785a124c7803e4"
integrity sha512-V1ycxkR19jqbIl3evf2RQiMRBvTNRi+Iy9h20G5OP5dPfEF6GJ1DPlUeiZRxo2HJxRr+UA4i0H1nn4btBDPFrw==
+"@octokit/openapi-types@^8.2.1":
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-8.2.1.tgz#102e752a7378ff8d21057c70fd16f1c83856d8c5"
+ integrity sha512-BJz6kWuL3n+y+qM8Pv+UGbSxH6wxKf/SBs5yzGufMHwDefsa+Iq7ZGy1BINMD2z9SkXlIzk1qiu988rMuGXEMg==
+
"@octokit/plugin-enterprise-compatibility@^1.2.8":
version "1.2.11"
resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.2.11.tgz#b150aa0104e6e9d963c5ababdcb4c43f22b1752c"
@@ -650,6 +671,15 @@
deprecation "^2.0.0"
once "^1.4.0"
+"@octokit/request-error@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677"
+ integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
"@octokit/request@^5.3.0", "@octokit/request@^5.4.11", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14":
version "5.4.15"
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.15.tgz#829da413dc7dd3aa5e2cdbb1c7d0ebe1f146a128"
@@ -662,6 +692,18 @@
node-fetch "^2.6.1"
universal-user-agent "^6.0.0"
+"@octokit/request@^5.6.0":
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672"
+ integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==
+ dependencies:
+ "@octokit/endpoint" "^6.0.1"
+ "@octokit/request-error" "^2.1.0"
+ "@octokit/types" "^6.16.1"
+ is-plain-object "^5.0.0"
+ node-fetch "^2.6.1"
+ universal-user-agent "^6.0.0"
+
"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.1.1", "@octokit/types@^6.10.0", "@octokit/types@^6.11.0", "@octokit/types@^6.12.2", "@octokit/types@^6.16.2", "@octokit/types@^6.7.1":
version "6.16.2"
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.16.2.tgz#62242e0565a3eb99ca2fd376283fe78b4ea057b4"
@@ -669,14 +711,32 @@
dependencies:
"@octokit/openapi-types" "^7.2.3"
-"@octokit/webhooks@7.21.0":
- version "7.21.0"
- resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-7.21.0.tgz#2aee3404aa311740a5f4ea37b070268752e21b02"
- integrity sha512-Mj7Pa6JZgSjfzQfYF3Bf5KpyhzEBv4kHbj2EjCB/vMQiZCiiW30j5rS6t/d0ZN0FBrlSOuJIT+YU8IJt30VyWA==
+"@octokit/types@^6.16.1":
+ version "6.18.1"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.18.1.tgz#a6db178536e649fd5d67a7b747754bcc43940be4"
+ integrity sha512-5YsddjO1U+xC8ZYKV8yZYebW55PCc7qiEEeZ+wZRr6qyclynzfyD65KZ5FdtIeP0/cANyFaD7hV69qElf1nMsQ==
+ dependencies:
+ "@octokit/openapi-types" "^8.2.1"
+
+"@octokit/webhooks-methods@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz#1108b9ea661ca6c81e4a8bfa63a09eb27d5bc2db"
+ integrity sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==
+
+"@octokit/webhooks-types@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-4.1.0.tgz#d27f8ef496e788d60dab8790155fdb204ca720e7"
+ integrity sha512-KQtzFYhhi3k3cGCeqo/PSEhmLZO/4DCtPSgeDG8M9De84fIvTvJbbt2ApeLgzNd6YNAbPjfbdxx8dRkc7jy5uA==
+
+"@octokit/webhooks@^9.8.4":
+ version "9.9.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-9.9.0.tgz#13a9284fb649aa86c3204532406890defb12c90d"
+ integrity sha512-qoXPkYzttB/23zcsMI1PzAjgEkwtPyJrsln4L4O8mkdSqfNcXHfD8dZQVR5GUveDT0VwFAYuNaGv8CfyN1hPAg==
dependencies:
"@octokit/request-error" "^2.0.2"
+ "@octokit/webhooks-methods" "^2.0.0"
+ "@octokit/webhooks-types" "4.1.0"
aggregate-error "^3.1.0"
- debug "^4.0.0"
"@probot/get-private-key@^1.1.0":
version "1.1.0"
@@ -1166,10 +1226,12 @@ array-flatten@1.1.1:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-async-mutex@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.1.4.tgz#a47d1eebf584f7dcdd760e3642dc2c58613bef5c"
- integrity sha512-zVWTmAnxxHaeB2B1te84oecI8zTDJ/8G49aVBblRX6be0oq6pAybNcUSxwfgVOmOjSCvN4aYZAqwtyNI8e1YGw==
+async-mutex@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.3.1.tgz#7033af665f1c7cebed8b878267a43ba9e77c5f67"
+ integrity sha512-vRfQwcqBnJTLzVQo72Sf7KIUbcSUP5hNchx6udI1U6LuPQpfePgdjJzlCe76yFZ8pxlLjn9lwcl/Ya0TSOv0Tw==
+ dependencies:
+ tslib "^2.1.0"
asynckit@^0.4.0:
version "0.4.0"
@@ -1181,16 +1243,16 @@ atomic-sleep@^1.0.0:
resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
-babel-jest@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.2.tgz#7dc18adb01322acce62c2af76ea2c7cd186ade37"
- integrity sha512-9OThPl3/IQbo4Yul2vMz4FYwILPQak8XelX4YGowygfHaOl5R5gfjm4iVx4d8aUugkW683t8aq0A74E7b5DU1Q==
+babel-jest@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8"
+ integrity sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==
dependencies:
- "@jest/transform" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/transform" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/babel__core" "^7.1.14"
babel-plugin-istanbul "^6.0.0"
- babel-preset-jest "^27.0.1"
+ babel-preset-jest "^27.0.6"
chalk "^4.0.0"
graceful-fs "^4.2.4"
slash "^3.0.0"
@@ -1206,10 +1268,10 @@ babel-plugin-istanbul@^6.0.0:
istanbul-lib-instrument "^4.0.0"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.1.tgz#a6d10e484c93abff0f4e95f437dad26e5736ea11"
- integrity sha512-sqBF0owAcCDBVEDtxqfYr2F36eSHdx7lAVGyYuOBRnKdD6gzcy0I0XrAYCZgOA3CRrLhmR+Uae9nogPzmAtOfQ==
+babel-plugin-jest-hoist@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456"
+ integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==
dependencies:
"@babel/template" "^7.3.3"
"@babel/types" "^7.3.3"
@@ -1234,12 +1296,12 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-top-level-await" "^7.8.3"
-babel-preset-jest@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.1.tgz#7a50c75d16647c23a2cf5158d5bb9eb206b10e20"
- integrity sha512-nIBIqCEpuiyhvjQs2mVNwTxQQa2xk70p9Dd/0obQGBf8FBzbnI8QhQKzLsWMN2i6q+5B0OcWDtrboBX5gmOLyA==
+babel-preset-jest@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d"
+ integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==
dependencies:
- babel-plugin-jest-hoist "^27.0.1"
+ babel-plugin-jest-hoist "^27.0.6"
babel-preset-current-node-syntax "^1.0.0"
balanced-match@^1.0.0:
@@ -1677,7 +1739,7 @@ debug@2.6.9, debug@^2.2.0:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
@@ -1763,10 +1825,10 @@ detect-newline@^3.0.0:
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-diff-sequences@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.1.tgz#9c9801d52ed5f576ff0a20e3022a13ee6e297e7c"
- integrity sha512-XPLijkfJUh/PIBnfkcSHgvD6tlYixmcMAn3osTk6jt+H0v/mgURto1XUiD9DKuGX5NDoVS6dSlA23gd9FUaCFg==
+diff-sequences@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723"
+ integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==
domexception@^2.0.1:
version "2.0.1"
@@ -1927,17 +1989,17 @@ exit@^0.1.2:
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-expect@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.2.tgz#e66ca3a4c9592f1c019fa1d46459a9d2084f3422"
- integrity sha512-YJFNJe2+P2DqH+ZrXy+ydRQYO87oxRUonZImpDodR1G7qo3NYd3pL+NQ9Keqpez3cehczYwZDBC3A7xk3n7M/w==
+expect@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05"
+ integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
ansi-styles "^5.0.0"
- jest-get-type "^27.0.1"
- jest-matcher-utils "^27.0.2"
- jest-message-util "^27.0.2"
- jest-regex-util "^27.0.1"
+ jest-get-type "^27.0.6"
+ jest-matcher-utils "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-regex-util "^27.0.6"
express@^4.17.1:
version "4.17.1"
@@ -2575,226 +2637,226 @@ istanbul-reports@^3.0.2:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
-jest-changed-files@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.2.tgz#997253042b4a032950fc5f56abf3c5d1f8560801"
- integrity sha512-eMeb1Pn7w7x3wue5/vF73LPCJ7DKQuC9wQUR5ebP9hDPpk5hzcT/3Hmz3Q5BOFpR3tgbmaWhJcMTVgC8Z1NuMw==
+jest-changed-files@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.6.tgz#bed6183fcdea8a285482e3b50a9a7712d49a7a8b"
+ integrity sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
execa "^5.0.0"
throat "^6.0.1"
-jest-circus@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.4.tgz#3b261514ee3b3da33def736a6352c98ff56bb6e6"
- integrity sha512-QD+eblDiRphta630WRKewuASLs/oY1Zki2G4bccntRvrTHQ63ljwFR5TLduuK4Zg0ZPzW0+8o6AP7KRd1yKOjw==
+jest-circus@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668"
+ integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==
dependencies:
- "@jest/environment" "^27.0.3"
- "@jest/test-result" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/environment" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
dedent "^0.7.0"
- expect "^27.0.2"
+ expect "^27.0.6"
is-generator-fn "^2.0.0"
- jest-each "^27.0.2"
- jest-matcher-utils "^27.0.2"
- jest-message-util "^27.0.2"
- jest-runtime "^27.0.4"
- jest-snapshot "^27.0.4"
- jest-util "^27.0.2"
- pretty-format "^27.0.2"
+ jest-each "^27.0.6"
+ jest-matcher-utils "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-runtime "^27.0.6"
+ jest-snapshot "^27.0.6"
+ jest-util "^27.0.6"
+ pretty-format "^27.0.6"
slash "^3.0.0"
stack-utils "^2.0.3"
throat "^6.0.1"
-jest-cli@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.4.tgz#491b12c754c0d7c6873b13a66f26b3a80a852910"
- integrity sha512-E0T+/i2lxsWAzV7LKYd0SB7HUAvePqaeIh5vX43/G5jXLhv1VzjYzJAGEkTfvxV774ll9cyE2ljcL73PVMEOXQ==
+jest-cli@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f"
+ integrity sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==
dependencies:
- "@jest/core" "^27.0.4"
- "@jest/test-result" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/core" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/types" "^27.0.6"
chalk "^4.0.0"
exit "^0.1.2"
graceful-fs "^4.2.4"
import-local "^3.0.2"
- jest-config "^27.0.4"
- jest-util "^27.0.2"
- jest-validate "^27.0.2"
+ jest-config "^27.0.6"
+ jest-util "^27.0.6"
+ jest-validate "^27.0.6"
prompts "^2.0.1"
yargs "^16.0.3"
-jest-config@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.4.tgz#c4f41378acf40ca77860fb4e213b12109d87b8cf"
- integrity sha512-VkQFAHWnPQefdvHU9A+G3H/Z3NrrTKqWpvxgQz3nkUdkDTWeKJE6e//BL+R7z79dXOMVksYgM/z6ndtN0hfChg==
+jest-config@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f"
+ integrity sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/test-sequencer" "^27.0.4"
- "@jest/types" "^27.0.2"
- babel-jest "^27.0.2"
+ "@jest/test-sequencer" "^27.0.6"
+ "@jest/types" "^27.0.6"
+ babel-jest "^27.0.6"
chalk "^4.0.0"
deepmerge "^4.2.2"
glob "^7.1.1"
graceful-fs "^4.2.4"
is-ci "^3.0.0"
- jest-circus "^27.0.4"
- jest-environment-jsdom "^27.0.3"
- jest-environment-node "^27.0.3"
- jest-get-type "^27.0.1"
- jest-jasmine2 "^27.0.4"
- jest-regex-util "^27.0.1"
- jest-resolve "^27.0.4"
- jest-runner "^27.0.4"
- jest-util "^27.0.2"
- jest-validate "^27.0.2"
+ jest-circus "^27.0.6"
+ jest-environment-jsdom "^27.0.6"
+ jest-environment-node "^27.0.6"
+ jest-get-type "^27.0.6"
+ jest-jasmine2 "^27.0.6"
+ jest-regex-util "^27.0.6"
+ jest-resolve "^27.0.6"
+ jest-runner "^27.0.6"
+ jest-util "^27.0.6"
+ jest-validate "^27.0.6"
micromatch "^4.0.4"
- pretty-format "^27.0.2"
+ pretty-format "^27.0.6"
-jest-diff@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.2.tgz#f315b87cee5dc134cf42c2708ab27375cc3f5a7e"
- integrity sha512-BFIdRb0LqfV1hBt8crQmw6gGQHVDhM87SpMIZ45FPYKReZYG5er1+5pIn2zKqvrJp6WNox0ylR8571Iwk2Dmgw==
+jest-diff@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e"
+ integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==
dependencies:
chalk "^4.0.0"
- diff-sequences "^27.0.1"
- jest-get-type "^27.0.1"
- pretty-format "^27.0.2"
+ diff-sequences "^27.0.6"
+ jest-get-type "^27.0.6"
+ pretty-format "^27.0.6"
-jest-docblock@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.1.tgz#bd9752819b49fa4fab1a50b73eb58c653b962e8b"
- integrity sha512-TA4+21s3oebURc7VgFV4r7ltdIJ5rtBH1E3Tbovcg7AV+oLfD5DcJ2V2vJ5zFA9sL5CFd/d2D6IpsAeSheEdrA==
+jest-docblock@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3"
+ integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==
dependencies:
detect-newline "^3.0.0"
-jest-each@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.2.tgz#865ddb4367476ced752167926b656fa0dcecd8c7"
- integrity sha512-OLMBZBZ6JkoXgUenDtseFRWA43wVl2BwmZYIWQws7eS7pqsIvePqj/jJmEnfq91ALk3LNphgwNK/PRFBYi7ITQ==
+jest-each@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b"
+ integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
chalk "^4.0.0"
- jest-get-type "^27.0.1"
- jest-util "^27.0.2"
- pretty-format "^27.0.2"
-
-jest-environment-jsdom@^27.0.3:
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.3.tgz#ed73e913ddc03864eb9f934b5cbabf1b63504e2e"
- integrity sha512-5KLmgv1bhiimpSA8oGTnZYk6g4fsNyZiA/6gI2tAZUgrufd7heRUSVh4gRokzZVEj8zlwAQYT0Zs6tuJSW/ECA==
- dependencies:
- "@jest/environment" "^27.0.3"
- "@jest/fake-timers" "^27.0.3"
- "@jest/types" "^27.0.2"
+ jest-get-type "^27.0.6"
+ jest-util "^27.0.6"
+ pretty-format "^27.0.6"
+
+jest-environment-jsdom@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz#f66426c4c9950807d0a9f209c590ce544f73291f"
+ integrity sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==
+ dependencies:
+ "@jest/environment" "^27.0.6"
+ "@jest/fake-timers" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
- jest-mock "^27.0.3"
- jest-util "^27.0.2"
+ jest-mock "^27.0.6"
+ jest-util "^27.0.6"
jsdom "^16.6.0"
-jest-environment-node@^27.0.3:
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.3.tgz#b4acb3679d2552a4215732cab8b0ca7ec4398ee0"
- integrity sha512-co2/IVnIFL3cItpFULCvXFg9us4gvWXgs7mutAMPCbFhcqh56QAOdKhNzC2+RycsC/k4mbMj1VF+9F/NzA0ROg==
+jest-environment-node@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07"
+ integrity sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==
dependencies:
- "@jest/environment" "^27.0.3"
- "@jest/fake-timers" "^27.0.3"
- "@jest/types" "^27.0.2"
+ "@jest/environment" "^27.0.6"
+ "@jest/fake-timers" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
- jest-mock "^27.0.3"
- jest-util "^27.0.2"
+ jest-mock "^27.0.6"
+ jest-util "^27.0.6"
-jest-get-type@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.1.tgz#34951e2b08c8801eb28559d7eb732b04bbcf7815"
- integrity sha512-9Tggo9zZbu0sHKebiAijyt1NM77Z0uO4tuWOxUCujAiSeXv30Vb5D4xVF4UR4YWNapcftj+PbByU54lKD7/xMg==
+jest-get-type@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe"
+ integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==
-jest-haste-map@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.2.tgz#3f1819400c671237e48b4d4b76a80a0dbed7577f"
- integrity sha512-37gYfrYjjhEfk37C4bCMWAC0oPBxDpG0qpl8lYg8BT//wf353YT/fzgA7+Dq0EtM7rPFS3JEcMsxdtDwNMi2cA==
+jest-haste-map@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7"
+ integrity sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
"@types/graceful-fs" "^4.1.2"
"@types/node" "*"
anymatch "^3.0.3"
fb-watchman "^2.0.0"
graceful-fs "^4.2.4"
- jest-regex-util "^27.0.1"
- jest-serializer "^27.0.1"
- jest-util "^27.0.2"
- jest-worker "^27.0.2"
+ jest-regex-util "^27.0.6"
+ jest-serializer "^27.0.6"
+ jest-util "^27.0.6"
+ jest-worker "^27.0.6"
micromatch "^4.0.4"
walker "^1.0.7"
optionalDependencies:
fsevents "^2.3.2"
-jest-jasmine2@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.4.tgz#c669519ccf4904a485338555e1e66cad36bb0670"
- integrity sha512-yj3WrjjquZwkJw+eA4c9yucHw4/+EHndHWSqgHbHGQfT94ihaaQsa009j1a0puU8CNxPDk0c1oAPeOpdJUElwA==
+jest-jasmine2@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37"
+ integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==
dependencies:
"@babel/traverse" "^7.1.0"
- "@jest/environment" "^27.0.3"
- "@jest/source-map" "^27.0.1"
- "@jest/test-result" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/environment" "^27.0.6"
+ "@jest/source-map" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
- expect "^27.0.2"
+ expect "^27.0.6"
is-generator-fn "^2.0.0"
- jest-each "^27.0.2"
- jest-matcher-utils "^27.0.2"
- jest-message-util "^27.0.2"
- jest-runtime "^27.0.4"
- jest-snapshot "^27.0.4"
- jest-util "^27.0.2"
- pretty-format "^27.0.2"
+ jest-each "^27.0.6"
+ jest-matcher-utils "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-runtime "^27.0.6"
+ jest-snapshot "^27.0.6"
+ jest-util "^27.0.6"
+ pretty-format "^27.0.6"
throat "^6.0.1"
-jest-leak-detector@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.2.tgz#ce19aa9dbcf7a72a9d58907a970427506f624e69"
- integrity sha512-TZA3DmCOfe8YZFIMD1GxFqXUkQnIoOGQyy4hFCA2mlHtnAaf+FeOMxi0fZmfB41ZL+QbFG6BVaZF5IeFIVy53Q==
+jest-leak-detector@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz#545854275f85450d4ef4b8fe305ca2a26450450f"
+ integrity sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==
dependencies:
- jest-get-type "^27.0.1"
- pretty-format "^27.0.2"
+ jest-get-type "^27.0.6"
+ pretty-format "^27.0.6"
-jest-matcher-utils@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.2.tgz#f14c060605a95a466cdc759acc546c6f4cbfc4f0"
- integrity sha512-Qczi5xnTNjkhcIB0Yy75Txt+Ez51xdhOxsukN7awzq2auZQGPHcQrJ623PZj0ECDEMOk2soxWx05EXdXGd1CbA==
+jest-matcher-utils@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9"
+ integrity sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==
dependencies:
chalk "^4.0.0"
- jest-diff "^27.0.2"
- jest-get-type "^27.0.1"
- pretty-format "^27.0.2"
+ jest-diff "^27.0.6"
+ jest-get-type "^27.0.6"
+ pretty-format "^27.0.6"
-jest-message-util@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.2.tgz#181c9b67dff504d8f4ad15cba10d8b80f272048c"
- integrity sha512-rTqWUX42ec2LdMkoUPOzrEd1Tcm+R1KfLOmFK+OVNo4MnLsEaxO5zPDb2BbdSmthdM/IfXxOZU60P/WbWF8BTw==
+jest-message-util@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5"
+ integrity sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
graceful-fs "^4.2.4"
micromatch "^4.0.4"
- pretty-format "^27.0.2"
+ pretty-format "^27.0.6"
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@^27.0.3:
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.3.tgz#5591844f9192b3335c0dca38e8e45ed297d4d23d"
- integrity sha512-O5FZn5XDzEp+Xg28mUz4ovVcdwBBPfAhW9+zJLO0Efn2qNbYcDaJvSlRiQ6BCZUCVOJjALicuJQI9mRFjv1o9Q==
+jest-mock@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.6.tgz#0efdd40851398307ba16778728f6d34d583e3467"
+ integrity sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
jest-pnp-resolver@^1.2.2:
@@ -2802,76 +2864,76 @@ jest-pnp-resolver@^1.2.2:
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-jest-regex-util@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.1.tgz#69d4b1bf5b690faa3490113c47486ed85dd45b68"
- integrity sha512-6nY6QVcpTgEKQy1L41P4pr3aOddneK17kn3HJw6SdwGiKfgCGTvH02hVXL0GU8GEKtPH83eD2DIDgxHXOxVohQ==
+jest-regex-util@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5"
+ integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==
-jest-resolve-dependencies@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.4.tgz#a07a242d70d668afd3fcf7f4270755eebb1fe579"
- integrity sha512-F33UPfw1YGWCV2uxJl7wD6TvcQn5IC0LtguwY3r4L7R6H4twpLkp5Q2ZfzRx9A2I3G8feiy0O0sqcn/Qoym71A==
+jest-resolve-dependencies@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz#3e619e0ef391c3ecfcf6ef4056207a3d2be3269f"
+ integrity sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==
dependencies:
- "@jest/types" "^27.0.2"
- jest-regex-util "^27.0.1"
- jest-snapshot "^27.0.4"
+ "@jest/types" "^27.0.6"
+ jest-regex-util "^27.0.6"
+ jest-snapshot "^27.0.6"
-jest-resolve@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.4.tgz#8a27bc3f2f00c8ea28f3bc99bbf6f468300a703d"
- integrity sha512-BcfyK2i3cG79PDb/6gB6zFeFQlcqLsQjGBqznFCpA0L/3l1L/oOsltdUjs5eISAWA9HS9qtj8v2PSZr/yWxONQ==
+jest-resolve@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff"
+ integrity sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
chalk "^4.0.0"
escalade "^3.1.1"
graceful-fs "^4.2.4"
jest-pnp-resolver "^1.2.2"
- jest-util "^27.0.2"
- jest-validate "^27.0.2"
+ jest-util "^27.0.6"
+ jest-validate "^27.0.6"
resolve "^1.20.0"
slash "^3.0.0"
-jest-runner@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.4.tgz#2787170a9509b792ae129794f6944d27d5d12a4f"
- integrity sha512-NfmvSYLCsCJk2AG8Ar2NAh4PhsJJpO+/r+g4bKR5L/5jFzx/indUpnVBdrfDvuqhGLLAvrKJ9FM/Nt8o1dsqxg==
+jest-runner@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520"
+ integrity sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==
dependencies:
- "@jest/console" "^27.0.2"
- "@jest/environment" "^27.0.3"
- "@jest/test-result" "^27.0.2"
- "@jest/transform" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/console" "^27.0.6"
+ "@jest/environment" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/transform" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
chalk "^4.0.0"
emittery "^0.8.1"
exit "^0.1.2"
graceful-fs "^4.2.4"
- jest-docblock "^27.0.1"
- jest-environment-jsdom "^27.0.3"
- jest-environment-node "^27.0.3"
- jest-haste-map "^27.0.2"
- jest-leak-detector "^27.0.2"
- jest-message-util "^27.0.2"
- jest-resolve "^27.0.4"
- jest-runtime "^27.0.4"
- jest-util "^27.0.2"
- jest-worker "^27.0.2"
+ jest-docblock "^27.0.6"
+ jest-environment-jsdom "^27.0.6"
+ jest-environment-node "^27.0.6"
+ jest-haste-map "^27.0.6"
+ jest-leak-detector "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-resolve "^27.0.6"
+ jest-runtime "^27.0.6"
+ jest-util "^27.0.6"
+ jest-worker "^27.0.6"
source-map-support "^0.5.6"
throat "^6.0.1"
-jest-runtime@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.4.tgz#2e4a6aa77cac32ac612dfe12768387a8aa15c2f0"
- integrity sha512-voJB4xbAjS/qYPboV+e+gmg3jfvHJJY4CagFWBOM9dQKtlaiTjcpD2tWwla84Z7PtXSQPeIpXY0qksA9Dum29A==
- dependencies:
- "@jest/console" "^27.0.2"
- "@jest/environment" "^27.0.3"
- "@jest/fake-timers" "^27.0.3"
- "@jest/globals" "^27.0.3"
- "@jest/source-map" "^27.0.1"
- "@jest/test-result" "^27.0.2"
- "@jest/transform" "^27.0.2"
- "@jest/types" "^27.0.2"
+jest-runtime@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9"
+ integrity sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==
+ dependencies:
+ "@jest/console" "^27.0.6"
+ "@jest/environment" "^27.0.6"
+ "@jest/fake-timers" "^27.0.6"
+ "@jest/globals" "^27.0.6"
+ "@jest/source-map" "^27.0.6"
+ "@jest/test-result" "^27.0.6"
+ "@jest/transform" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
cjs-module-lexer "^1.0.0"
@@ -2879,30 +2941,30 @@ jest-runtime@^27.0.4:
exit "^0.1.2"
glob "^7.1.3"
graceful-fs "^4.2.4"
- jest-haste-map "^27.0.2"
- jest-message-util "^27.0.2"
- jest-mock "^27.0.3"
- jest-regex-util "^27.0.1"
- jest-resolve "^27.0.4"
- jest-snapshot "^27.0.4"
- jest-util "^27.0.2"
- jest-validate "^27.0.2"
+ jest-haste-map "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-mock "^27.0.6"
+ jest-regex-util "^27.0.6"
+ jest-resolve "^27.0.6"
+ jest-snapshot "^27.0.6"
+ jest-util "^27.0.6"
+ jest-validate "^27.0.6"
slash "^3.0.0"
strip-bom "^4.0.0"
yargs "^16.0.3"
-jest-serializer@^27.0.1:
- version "27.0.1"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.1.tgz#2464d04dcc33fb71dc80b7c82e3c5e8a08cb1020"
- integrity sha512-svy//5IH6bfQvAbkAEg1s7xhhgHTtXu0li0I2fdKHDsLP2P2MOiscPQIENQep8oU2g2B3jqLyxKKzotZOz4CwQ==
+jest-serializer@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1"
+ integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==
dependencies:
"@types/node" "*"
graceful-fs "^4.2.4"
-jest-snapshot@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.4.tgz#2b96e22ca90382b3e93bd0aae2ce4c78bf51fb5b"
- integrity sha512-hnjrvpKGdSMvKfbHyaG5Kul7pDJGZvjVy0CKpzhu28MmAssDXS6GpynhXzgst1wBQoKD8c9b2VS2a5yhDLQRCA==
+jest-snapshot@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf"
+ integrity sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==
dependencies:
"@babel/core" "^7.7.2"
"@babel/generator" "^7.7.2"
@@ -2910,79 +2972,79 @@ jest-snapshot@^27.0.4:
"@babel/plugin-syntax-typescript" "^7.7.2"
"@babel/traverse" "^7.7.2"
"@babel/types" "^7.0.0"
- "@jest/transform" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/transform" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/babel__traverse" "^7.0.4"
"@types/prettier" "^2.1.5"
babel-preset-current-node-syntax "^1.0.0"
chalk "^4.0.0"
- expect "^27.0.2"
+ expect "^27.0.6"
graceful-fs "^4.2.4"
- jest-diff "^27.0.2"
- jest-get-type "^27.0.1"
- jest-haste-map "^27.0.2"
- jest-matcher-utils "^27.0.2"
- jest-message-util "^27.0.2"
- jest-resolve "^27.0.4"
- jest-util "^27.0.2"
+ jest-diff "^27.0.6"
+ jest-get-type "^27.0.6"
+ jest-haste-map "^27.0.6"
+ jest-matcher-utils "^27.0.6"
+ jest-message-util "^27.0.6"
+ jest-resolve "^27.0.6"
+ jest-util "^27.0.6"
natural-compare "^1.4.0"
- pretty-format "^27.0.2"
+ pretty-format "^27.0.6"
semver "^7.3.2"
-jest-util@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.2.tgz#fc2c7ace3c75ae561cf1e5fdb643bf685a5be7c7"
- integrity sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA==
+jest-util@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297"
+ integrity sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
chalk "^4.0.0"
graceful-fs "^4.2.4"
is-ci "^3.0.0"
picomatch "^2.2.3"
-jest-validate@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.2.tgz#7fe2c100089449cd5cbb47a5b0b6cb7cda5beee5"
- integrity sha512-UgBF6/oVu1ofd1XbaSotXKihi8nZhg0Prm8twQ9uCuAfo59vlxCXMPI/RKmrZEVgi3Nd9dS0I8A0wzWU48pOvg==
+jest-validate@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6"
+ integrity sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
camelcase "^6.2.0"
chalk "^4.0.0"
- jest-get-type "^27.0.1"
+ jest-get-type "^27.0.6"
leven "^3.1.0"
- pretty-format "^27.0.2"
+ pretty-format "^27.0.6"
-jest-watcher@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.2.tgz#dab5f9443e2d7f52597186480731a8c6335c5deb"
- integrity sha512-8nuf0PGuTxWj/Ytfw5fyvNn/R80iXY8QhIT0ofyImUvdnoaBdT6kob0GmhXR+wO+ALYVnh8bQxN4Tjfez0JgkA==
+jest-watcher@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.6.tgz#89526f7f9edf1eac4e4be989bcb6dec6b8878d9c"
+ integrity sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==
dependencies:
- "@jest/test-result" "^27.0.2"
- "@jest/types" "^27.0.2"
+ "@jest/test-result" "^27.0.6"
+ "@jest/types" "^27.0.6"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
- jest-util "^27.0.2"
+ jest-util "^27.0.6"
string-length "^4.0.1"
-jest-worker@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.2.tgz#4ebeb56cef48b3e7514552f80d0d80c0129f0b05"
- integrity sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==
+jest-worker@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed"
+ integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^27.0.4:
- version "27.0.4"
- resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.4.tgz#91d4d564b36bcf93b98dac1ab19f07089e670f53"
- integrity sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==
+jest@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505"
+ integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==
dependencies:
- "@jest/core" "^27.0.4"
+ "@jest/core" "^27.0.6"
import-local "^3.0.2"
- jest-cli "^27.0.4"
+ jest-cli "^27.0.6"
jmespath@^0.15.0:
version "0.15.0"
@@ -3394,10 +3456,10 @@ node-releases@^1.1.71:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe"
integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==
-nodemon@^2.0.0:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32"
- integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==
+nodemon@^2.0.9:
+ version "2.0.9"
+ resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.9.tgz#f5cd550ba215da3c1081459ae2c1c8da2c353165"
+ integrity sha512-6O4k7C8f2HQArGpaPBOqGGddjzDLQAqCYmq3tKMeNIbz7Is/hOphMHy2dcY10sSq5wl3cqyn9Iz+Ep2j51JOLg==
dependencies:
chokidar "^3.2.2"
debug "^3.2.6"
@@ -3690,20 +3752,20 @@ prepend-http@^2.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
-pretty-format@^27.0.2:
- version "27.0.2"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.2.tgz#9283ff8c4f581b186b2d4da461617143dca478a4"
- integrity sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig==
+pretty-format@^27.0.6:
+ version "27.0.6"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f"
+ integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==
dependencies:
- "@jest/types" "^27.0.2"
+ "@jest/types" "^27.0.6"
ansi-regex "^5.0.0"
ansi-styles "^5.0.0"
react-is "^17.0.1"
-probot@^11.4.0:
- version "11.4.0"
- resolved "https://registry.yarnpkg.com/probot/-/probot-11.4.0.tgz#3b36a5bd35129653c5f8c1a3b15fbac7a700c149"
- integrity sha512-FrFL30D0gygWiDmP6z6oO5XpNMVKVdUgZJjRRf9KU9Px5Kcb6Ph9rjZ0NE2ogo9NT6bNxeoTYduczxm65TMmcw==
+probot@^12.1.0:
+ version "12.1.0"
+ resolved "https://registry.yarnpkg.com/probot/-/probot-12.1.0.tgz#afbd581c1f9484800d4ec36b8cc9e6082b38b591"
+ integrity sha512-NHtoLzyiW3QBOVfrAQ3wqxtj/3/gUmJhNMBrugSttOlOLBzXq/V3RfZp0DpDQy708rFUwiqxtNLNPCeHGhmCSA==
dependencies:
"@octokit/core" "^3.2.4"
"@octokit/plugin-enterprise-compatibility" "^1.2.8"
@@ -3712,7 +3774,7 @@ probot@^11.4.0:
"@octokit/plugin-retry" "^3.0.6"
"@octokit/plugin-throttling" "^3.3.4"
"@octokit/types" "^6.1.1"
- "@octokit/webhooks" "7.21.0"
+ "@octokit/webhooks" "^9.8.4"
"@probot/get-private-key" "^1.1.0"
"@probot/octokit-plugin-config" "^1.0.0"
"@probot/pino" "^2.2.0"
@@ -4039,7 +4101,7 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-shelljs@^0.8.3:
+shelljs@^0.8.4:
version "0.8.4"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2"
integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==
@@ -4348,6 +4410,11 @@ tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+tslib@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
+ integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -4511,10 +4578,10 @@ uuid@^8.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-v8-to-istanbul@^7.0.0:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1"
- integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==
+v8-to-istanbul@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c"
+ integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.1"
convert-source-map "^1.6.0"