From 28887134007c11c490afaaeec9eb2b96353de12f Mon Sep 17 00:00:00 2001 From: Mabel Geronimo <107436170+mageroni@users.noreply.github.com> Date: Tue, 24 Oct 2023 02:19:07 +0000 Subject: [PATCH 1/6] Disconnected app v1 --- index.js | 385 +++++++++++----------------------------------- package-lock.json | 6 + package.json | 1 + 3 files changed, 97 insertions(+), 295 deletions(-) diff --git a/index.js b/index.js index 77c4436..3ccc3d3 100644 --- a/index.js +++ b/index.js @@ -5,70 +5,26 @@ const dedent = require("dedent"); const fs = require("fs"); -const path = require("path"); +const parse = require("csv-parse/lib/sync"); const sql = require("mssql"); require("dotenv").config(); -const { - TextAnalysisClient, - AzureKeyCredential, -} = require("@azure/ai-language-text"); -const { LANGUAGE_API_KEY, LANGUAGE_API_ENDPOINT, DATABASE_CONNECTION_STRING } = - process.env; - module.exports = (app) => { // Your code here app.log.info("Yay, the app was loaded!"); - let appInsights = new AppInsights(); - app.on("pull_request.closed", async (context) => { - appInsights.trackEvent({ - name: "Pull Request Close Payload", - properties: context.payload, - }); + let pr_number = context.payload.pull_request.number; - let pr_body = context.payload.pull_request.body; let detectedLanguage = "en"; let pr_author = context.payload.pull_request.user.login; let organization_name = context.payload.repository.owner.login - // check language for pr_body - if (LANGUAGE_API_ENDPOINT && LANGUAGE_API_KEY) { - const TAclient = new TextAnalysisClient( - LANGUAGE_API_ENDPOINT, - new AzureKeyCredential(LANGUAGE_API_KEY) - ); - if (pr_body) { - try { - let startTime = Date.now(); - let result = await TAclient.analyze("LanguageDetection", [pr_body]); - let duration = Date.now() - startTime; - appInsights.trackDependency({ - target: "API:Language Detection", - name: "detect pull request description language", - duration: duration, - resultCode: 0, - success: true, - dependencyTypeName: "HTTP", - }); - if (result.length > 0 && !result[0].error && ["en", "es", "pt", "fr"].includes(result[0].primaryLanguage.iso6391Name) ) { - detectedLanguage = result[0].primaryLanguage.iso6391Name; - }else { - detectedLanguage = "en"; - } - } catch (err) { - app.log.error(err); - appInsights.trackException({ exception: err }); - } - } - } - // read file that aligns with detected language const issue_body = fs.readFileSync( "./issue_template/copilot-usage-" + detectedLanguage + - ".md", + ".md", "utf-8" ); @@ -87,31 +43,22 @@ module.exports = (app) => { repo: context.payload.repository.name, title: "Copilot Usage - PR#" + pr_number.toString(), body: fileContent, - assignee: context.payload.pull_request.user.login, + assignee: pr_author, }); } catch (err) { app.log.error(err); - appInsights.trackException({ exception: err }); } }); app.on("issues.edited", async (context) => { if (context.payload.issue.title.startsWith("Copilot Usage - PR#")) { - appInsights.trackEvent({ - name: "Issue Edited Payload", - properties: context.payload, - }); - await GetSurveyData(context); + await insertIntoFile(context); } }); app.on("issue_comment.created", async (context) => { if (context.payload.issue.title.startsWith("Copilot Usage - PR#")) { - appInsights.trackEvent({ - name: "Issue Comment Created Payload", - properties: context.payload, - }); - await GetSurveyData(context); + await insertIntoFile(context); } }); @@ -143,33 +90,11 @@ module.exports = (app) => { // if there's a comment, insert it into the DB regardless of whether the user answered the survey or not if (comment) { - let startTime = Date.now(); - let query = await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); - let duration = Date.now() - startTime; - appInsights.trackDependency({ - target: "DB:copilotUsage", - name: "insert when comment is present", - data: query, - duration: duration, - resultCode: 0, - success: true, - dependencyTypeName: "SQL", - }); + await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); } if (isCopilotUsed) { - let startTime = Date.now(); - let query = await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); - let duration = Date.now() - startTime; - appInsights.trackDependency({ - target: "DB:copilotUsage", - name: "insert when Yes is selected", - data: query, - duration: duration, - resultCode: 0, - success: true, - dependencyTypeName: "SQL", - }); + await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); // loop through checkboxes and find the one that contains % let pctSelected = false; @@ -185,18 +110,7 @@ module.exports = (app) => { } if (pctSelected) { //if percentage is selected, insert into DB - let startTime = Date.now(); - let query = await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, pctValue, null, comment); - let duration = Date.now() - startTime; - appInsights.trackDependency({ - target: "DB:copilotUsage", - name: "insert when pct is selected", - data: query, - duration: duration, - resultCode: 0, - success: true, - dependencyTypeName: "SQL", - }); + await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, pctValue, null, comment); } // loop through checkboxes and find the ones that do not contain % and are not Yes or No @@ -223,18 +137,7 @@ module.exports = (app) => { if (freqSelected) { //if frequency is selected, insert into DB - let startTime = Date.now(); - let query = await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, freqValue, comment); - let duration = Date.now() - startTime; - appInsights.trackDependency({ - target: "DB:copilotUsage", - name: "insert when freq is selected", - data: query, - duration: duration, - resultCode: 0, - success: true, - dependencyTypeName: "SQL", - }); + await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, freqValue, comment); } if( pctSelected && freqSelected ){ @@ -248,7 +151,6 @@ module.exports = (app) => { }); } catch (err) { app.log.error(err); - appInsights.trackException({ exception: err }); } } } else { @@ -261,18 +163,7 @@ module.exports = (app) => { ); }) ) { - let startTime = Date.now(); - let query = await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); - let duration = Date.now() - startTime; - appInsights.trackDependency({ - target: "DB:copilotUsage", - name: "insert when No is selected", - data: query, - duration: duration, - resultCode: 0, - success: true, - dependencyTypeName: "SQL", - }); + await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); if (comment) { try { @@ -285,149 +176,97 @@ module.exports = (app) => { }); } catch (err) { app.log.error(err); - appInsights.trackException({ exception: err }); } } } } - } - async function insertIntoDB( - context, - issue_id, - pr_number, - isCopilotUsed, - pctValue, - freqValue, - comment - ) { - let conn = null; - try { - conn = await sql.connect(DATABASE_CONNECTION_STRING); - - // Check if table exists - let tableCheckResult = await sql.query` - SELECT * - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_NAME = 'SurveyResults' - `; - - if (tableCheckResult.recordset.length === 0) { - // Create table if it doesn't exist - await sql.query` - CREATE TABLE SurveyResults ( - record_ID int IDENTITY(1,1), - enterprise_name varchar(50), - organization_name varchar(50), - repository_name varchar(50), - issue_id int, - issue_number varchar(20), - PR_number varchar(20), - assignee_name varchar(50), - is_copilot_used BIT, - saving_percentage varchar(25), - usage_frequency varchar(50), - comment varchar(255), - created_at DATETIME, - completed_at DATETIME - ); - `; - } + return { + enterprise_name: context.payload.enterprise ? context.payload.enterprise.name : '', + organization_name: context.payload.organization ? context.payload.organization.login : '', + repository_name: context.payload.repository ? context.payload.repository.name : '', + issue_id: context.payload.issue ? context.payload.issue.id : '', + issue_number: context.payload.issue ? context.payload.issue.number : '', + PR_number: context.payload.pull_request ? context.payload.pull_request.number : '', + assignee_name: context.payload.issue.assignee ? context.payload.issue.assignee.login : '', + is_copilot_used: isCopilotUsed ? 1 : 0, + saving_percentage: pctValue || '', + usage_frequency: freqValue || '', + comment: comment || '', + created_at: context.payload.issue ? context.payload.issue.created_at : '', + completed_at: context.payload.issue ? context.payload.issue.updated_at : '' + } - let result = - await sql.query`SELECT * FROM SurveyResults WHERE Issue_id = ${issue_id}`; - app.log.info("Database has been created and issue id existence has been confirmed"); + } - // convert pctValue to string - if (pctValue) { - pctValue = pctValue.toString(); - } - // convert freqValue to string - if (freqValue) { - freqValue = freqValue.toString(); - } + async function insertIntoFile(context) { + try { + // Try to get the file + let file = await context.octokit.repos.getContent({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + path: "results.csv", + }); + // If the file exists, get its contents + let fileContents = Buffer.from(file.data.content, "base64").toString(); + // If the file contents are not empty, parse the CSV + if (fileContents.length > 0) { + // parse a csv into an array + let result = parse(fileContents, { + columns: true, + skip_empty_lines: true, + }); + app.log.info(result); + } - let assignee_name = null; - if (context.payload.issue.assignee) { - assignee_name = context.payload.issue.assignee.login; - } + //check if the issue_id already exists in the array + let issue_id_index = result.findIndex((row) => { + return row.issue_id == issue_id; + }); - if (result.recordset.length > 0) { - // create query - let update_query = `UPDATE [SurveyResults] SET [is_copilot_used] = ${isCopilotUsed? 1 : 0}, [completed_at] = '${context.payload.issue.updated_at}'`; - if (assignee_name) { - update_query += `, [assignee_name] = '${assignee_name}'`; - } - if (pctValue) { - update_query += `, [saving_percentage] = '${pctValue}'`; - } - if (freqValue) { - update_query += `, [usage_frequency] = '${freqValue}'`; - } - if (comment) { - update_query += `, [comment] = '${comment}'`; - } - update_query += ` WHERE [issue_id] = ${issue_id}`; - - // update existing record - let update_result = await sql.query(update_query); - app.log.info(update_result); - return update_query; - } else { - // check if dynamic values are present in context.payload - let enterprise_name = null; - let organization_name = null; - if (context.payload.enterprise) { - enterprise_name = context.payload.enterprise.name; + if(issue_id_index != -1){ + // if the issue_id exists, update the row in the array + result[issue_id_index] = GetSurveyData(context); + }else{ + // if the issue_id does not exist, push the row into the array + result.push(GetSurveyData(context)); } - if(context.payload.organization){ - organization_name = context.payload.organization.login; - } - if(context.payload.organization){ - organization_name = context.payload.organization.login; + + // convert the array back into a csv + let csv = parse(result, { header: true }); + // convert the csv into a string + let csvString = csv.join("\n"); + // convert the string into a buffer + let csvBuffer = Buffer.from(csvString, "utf8"); + // encode the buffer into base64 + let csvEncoded = csvBuffer.toString("base64"); + + // commit the file to the repo + await context.octokit.repos.createOrUpdateFileContents({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + path: "results.csv", + message: 'update', + content: csvEncoded, + sha: file.data.sha, + }); + + } catch (error) { + // If the file does not exist, create it + if (error.status === 404) { + await context.octokit.repos.createOrUpdateFileContents({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + path: "results.csv", + message: 'initial commit', + content: 'enterprise_name, organization_name, repository_name, issue_id, issue_number, PR_number, assignee_name, is_copilot_used, saving_percentage, usage_frequency, comment, created_at, completed_at\n' + GetSurveyData(context) + }); + } else { + // If the error is not a 404 (not found), log it + app.log.error(error); } - let insert_query = `INSERT INTO SurveyResults ( - enterprise_name, - organization_name, - repository_name, - issue_id, - issue_number, - PR_number, - assignee_name, - is_copilot_used, - saving_percentage, - usage_frequency, - comment, - created_at, - completed_at - ) - VALUES ( - '${enterprise_name}', - '${organization_name}', - '${context.payload.repository.name}', - ${issue_id}, - ${context.payload.issue.number}, - ${pr_number}, - '${assignee_name}', - '${isCopilotUsed}', - '${pctValue}', - '${freqValue}', - '${comment}', - '${context.payload.issue.created_at}', - '${context.payload.issue.updated_at}' - )`; - let insert_result = await sql.query(insert_query); - app.log.info(insert_result); - return insert_query; } - } catch (err) { - app.log.error(err); - appInsights.trackException({ exception: err }); - } finally { - if (conn) { - conn.close(); - } - } + } // For more information on building apps: @@ -436,47 +275,3 @@ module.exports = (app) => { // To get your app running against GitHub, see: // https://probot.github.io/docs/development/ }; - -// Define class for app insights. If no instrumentation key is provided, then no app insights will be used. -class AppInsights { - constructor() { - if (process.env.APPINSIGHTS_INSTRUMENTATIONKEY) { - this.appInsights = require("applicationinsights"); - this.appInsights.setup().start(); - this.appIClient = this.appInsights.defaultClient; - } else { - this.appIClient = null; - } - } - trackEvent(name, properties) { - if (this.appIClient) { - this.appIClient.trackEvent({ name: name, properties: properties }); - } - } - trackDependency( - target, - name, - data, - duration, - resultCode, - success, - dependencyTypeName - ) { - if (this.appIClient) { - this.appIClient.trackDependency({ - target: target, - name: name, - data: data, - duration: duration, - resultCode: resultCode, - success: success, - dependencyTypeName: dependencyTypeName, - }); - } - } - trackException(exception) { - if (this.appIClient) { - this.appIClient.trackException({ exception: exception }); - } - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 94b9754..d399308 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@azure/ai-text-analytics": "^5.1.0", "ai-text-analytics": "^0.0.1-security", "applicationinsights": "^2.7.3", + "csv-parse": "^5.5.2", "dedent": "^1.5.1", "dotenv": "^16.3.1", "mssql": "^9.2.0", @@ -3651,6 +3652,11 @@ "node": ">= 8" } }, + "node_modules/csv-parse": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.2.tgz", + "integrity": "sha512-YRVtvdtUNXZCMyK5zd5Wty1W6dNTpGKdqQd4EQ8tl/c6KW1aMBB1Kg1ppky5FONKmEqGJ/8WjLlTNLPne4ioVA==" + }, "node_modules/dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", diff --git a/package.json b/package.json index 4e46616..7280e83 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@azure/ai-text-analytics": "^5.1.0", "ai-text-analytics": "^0.0.1-security", "applicationinsights": "^2.7.3", + "csv-parse": "^5.5.2", "dedent": "^1.5.1", "dotenv": "^16.3.1", "mssql": "^9.2.0", From f374fabddc30f6981134a7bf682d3e454ff097a2 Mon Sep 17 00:00:00 2001 From: Mabel Geronimo <107436170+mageroni@users.noreply.github.com> Date: Sat, 18 Nov 2023 01:03:28 -0600 Subject: [PATCH 2/6] Updated Survey and removed dependency on cloud --- app.yml | 2 +- index.js | 147 ++++++++++++++++------------- issue_template/copilot-usage-en.md | 4 +- issue_template/copilot-usage-es.md | 4 +- issue_template/copilot-usage-fr.md | 4 +- issue_template/copilot-usage-pt.md | 4 +- package-lock.json | 20 ++-- package.json | 8 +- test/fixtures/issue_body.md | 4 +- test/index.test.js | 46 ++++----- 10 files changed, 124 insertions(+), 119 deletions(-) diff --git a/app.yml b/app.yml index edf3efb..23f8700 100644 --- a/app.yml +++ b/app.yml @@ -62,7 +62,7 @@ default_permissions: # Repository contents, commits, branches, downloads, releases, and merges. # https://developer.github.com/v3/apps/permissions/#permission-on-contents - # contents: read + contents: write # Deployments and deployment statuses. # https://developer.github.com/v3/apps/permissions/#permission-on-deployments diff --git a/index.js b/index.js index 3ccc3d3..36892ae 100644 --- a/index.js +++ b/index.js @@ -5,8 +5,8 @@ const dedent = require("dedent"); const fs = require("fs"); -const parse = require("csv-parse/lib/sync"); -const sql = require("mssql"); +const csvParser = require("csv-parser"); +const stream = require('stream'); require("dotenv").config(); module.exports = (app) => { @@ -16,9 +16,9 @@ module.exports = (app) => { app.on("pull_request.closed", async (context) => { let pr_number = context.payload.pull_request.number; - let detectedLanguage = "en"; let pr_author = context.payload.pull_request.user.login; - let organization_name = context.payload.repository.owner.login + let organization_name = context.payload.repository.owner.login; + let detectedLanguage = "en"; // read file that aligns with detected language const issue_body = fs.readFileSync( @@ -64,7 +64,10 @@ module.exports = (app) => { async function GetSurveyData(context) { let issue_body = context.payload.issue.body; - let issue_id = context.payload.issue.id; + let pctSelected = false; + let pctValue = new Array(); + let freqSelected = false; + let freqValue = new Array(); // save comment body if present let comment = null; @@ -88,17 +91,9 @@ module.exports = (app) => { ); }); - // if there's a comment, insert it into the DB regardless of whether the user answered the survey or not - if (comment) { - await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); - } - if (isCopilotUsed) { - await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); - // loop through checkboxes and find the one that contains % - let pctSelected = false; - let pctValue = new Array(); + for (const checkbox of checkboxes) { if (checkbox.includes("%")) { pctSelected = true; @@ -108,14 +103,8 @@ module.exports = (app) => { app.log.info(copilotPercentage); } } - if (pctSelected) { - //if percentage is selected, insert into DB - await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, pctValue, null, comment); - } // loop through checkboxes and find the ones that do not contain % and are not Yes or No - let freqSelected = false; - let freqValue = new Array(); for (const checkbox of checkboxes) { if ( !checkbox.includes("%") && @@ -125,7 +114,8 @@ module.exports = (app) => { !checkbox.includes("Oui") && !checkbox.includes("Não") && !checkbox.includes("No") && - !checkbox.includes("Non") + !checkbox.includes("Non") || + checkbox.includes("Not very much") ) { freqSelected = true; frequencyValue = checkbox; @@ -135,11 +125,6 @@ module.exports = (app) => { } } - if (freqSelected) { - //if frequency is selected, insert into DB - await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, freqValue, comment); - } - if( pctSelected && freqSelected ){ // close the issue try { @@ -163,7 +148,6 @@ module.exports = (app) => { ); }) ) { - await insertIntoDB(context, issue_id, pr_number, isCopilotUsed, null, null, comment); if (comment) { try { @@ -181,13 +165,13 @@ module.exports = (app) => { } } - return { + let data = { enterprise_name: context.payload.enterprise ? context.payload.enterprise.name : '', organization_name: context.payload.organization ? context.payload.organization.login : '', repository_name: context.payload.repository ? context.payload.repository.name : '', issue_id: context.payload.issue ? context.payload.issue.id : '', issue_number: context.payload.issue ? context.payload.issue.number : '', - PR_number: context.payload.pull_request ? context.payload.pull_request.number : '', + PR_number: pr_number || '', assignee_name: context.payload.issue.assignee ? context.payload.issue.assignee.login : '', is_copilot_used: isCopilotUsed ? 1 : 0, saving_percentage: pctValue || '', @@ -195,77 +179,104 @@ module.exports = (app) => { comment: comment || '', created_at: context.payload.issue ? context.payload.issue.created_at : '', completed_at: context.payload.issue ? context.payload.issue.updated_at : '' - } + }; + + return data; } async function insertIntoFile(context) { + let fileContent = ""; + let results = []; + let resultString = ""; + try { + + fileContent = await GetSurveyData(context); + // Try to get the file let file = await context.octokit.repos.getContent({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, path: "results.csv", }); + // If the file exists, get its contents let fileContents = Buffer.from(file.data.content, "base64").toString(); // If the file contents are not empty, parse the CSV if (fileContents.length > 0) { - // parse a csv into an array - let result = parse(fileContents, { - columns: true, - skip_empty_lines: true, + // create a readable stream + let readableStream = new stream.Readable(); + readableStream.push(fileContents); + readableStream.push(null); + + await new Promise((resolve, reject) => { + readableStream + .pipe(csvParser()) + .on('data', (data) => results.push(data)) + .on('end', () => { + app.log.info(results); + resolve(); + }) + .on('error', reject); }); - app.log.info(result); - } - //check if the issue_id already exists in the array - let issue_id_index = result.findIndex((row) => { - return row.issue_id == issue_id; - }); - if(issue_id_index != -1){ - // if the issue_id exists, update the row in the array - result[issue_id_index] = GetSurveyData(context); - }else{ - // if the issue_id does not exist, push the row into the array - result.push(GetSurveyData(context)); - } + //check if the issue_id already exists in the array + let issue_id_index = results.findIndex((row) => { + return parseInt(row.issue_id) == parseInt(context.payload.issue.id); + }); - // convert the array back into a csv - let csv = parse(result, { header: true }); - // convert the csv into a string - let csvString = csv.join("\n"); - // convert the string into a buffer - let csvBuffer = Buffer.from(csvString, "utf8"); - // encode the buffer into base64 - let csvEncoded = csvBuffer.toString("base64"); - - // commit the file to the repo - await context.octokit.repos.createOrUpdateFileContents({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - path: "results.csv", - message: 'update', - content: csvEncoded, - sha: file.data.sha, - }); + if(issue_id_index != -1){ + // save previous comments + if (results[issue_id_index].comment) { + fileContent.comment = results[issue_id_index].comment + ' || ' + fileContent.comment; + } + + // if the issue_id exists, update the row in the array results + results[issue_id_index] = fileContent; + }else{ + // if the issue_id does not exist, push the row into the array + results.push(fileContent); + } + + resultString = Object.keys(results[0]).join(',') + '\n'; + results.forEach((row) => { + resultString += Object.values(row).join(',') + '\n'; + }); + + app.log.info("CSV String:\n" + resultString); + // commit the file to the repo + await context.octokit.repos.createOrUpdateFileContents({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + path: "results.csv", + message: 'Update results.csv', + content: Buffer.from(resultString).toString('base64'), + sha: file.data.sha, + }); + + app.log.info("File updated successfully\n " + Buffer.from(resultString).toString('base64')); + + } } catch (error) { // If the file does not exist, create it if (error.status === 404) { + let completeData = 'enterprise_name,organization_name,repository_name,issue_id,issue_number,PR_number,assignee_name,is_copilot_used,saving_percentage,usage_frequency,comment,created_at,completed_at\n' + + Object.values(fileContent).join(','); await context.octokit.repos.createOrUpdateFileContents({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, path: "results.csv", message: 'initial commit', - content: 'enterprise_name, organization_name, repository_name, issue_id, issue_number, PR_number, assignee_name, is_copilot_used, saving_percentage, usage_frequency, comment, created_at, completed_at\n' + GetSurveyData(context) + content: Buffer.from(completeData).toString('base64'), }); - } else { - // If the error is not a 404 (not found), log it + }else{ app.log.error(error); } } + } diff --git a/issue_template/copilot-usage-en.md b/issue_template/copilot-usage-en.md index 78c95ff..05c9e9f 100644 --- a/issue_template/copilot-usage-en.md +++ b/issue_template/copilot-usage-en.md @@ -6,9 +6,7 @@ For Pull Request XXX: - [ ] No - [ ] Yes -2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) - -***How much less time did the coding take during this PR with Copilot?*** +2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?*** (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%) - [ ] 0% diff --git a/issue_template/copilot-usage-es.md b/issue_template/copilot-usage-es.md index 8233cf1..9cb96e8 100644 --- a/issue_template/copilot-usage-es.md +++ b/issue_template/copilot-usage-es.md @@ -6,9 +6,7 @@ Para el Pull Request XXX: - [ ] No - [ ] Si -2. En comparación con su experiencia anterior codificando sin usar Copilot (este número representa el 100%) - -***¿Cuánto menos tiempo tomó la codificación durante este PR con Copilot?*** +2. En comparación con su experiencia anterior codificando sin usar Copilot (este número representa el 100%) ***¿Cuánto menos tiempo tomó la codificación durante este PR con Copilot?*** (Ejemplo: el PR normalmente tomaría 5 días, pero solo tomó 4 días con Copilot, entonces la respuesta es 20%) - [ ] 0% diff --git a/issue_template/copilot-usage-fr.md b/issue_template/copilot-usage-fr.md index 3a0a0bd..86ff2e7 100644 --- a/issue_template/copilot-usage-fr.md +++ b/issue_template/copilot-usage-fr.md @@ -6,9 +6,7 @@ Pour le Pull Request XXX : - [ ] Non - [ ] Oui -2. Par rapport à votre expérience précédente de codage SANS utiliser Copilot (ce nombre représente 100 %) - -***Combien de temps le codage a-t-il pris pendant ce PR avec Copilot ?*** +2. Par rapport à votre expérience précédente de codage SANS utiliser Copilot (ce nombre représente 100 %) ***Combien de temps le codage a-t-il pris pendant ce PR avec Copilot ?*** (Exemple : le PR prendrait normalement 5 jours, mais n'a pris que 4 jours avec Copilot alors la réponse est 20 %) - [ ] 0% diff --git a/issue_template/copilot-usage-pt.md b/issue_template/copilot-usage-pt.md index 79c5adf..f1878c2 100644 --- a/issue_template/copilot-usage-pt.md +++ b/issue_template/copilot-usage-pt.md @@ -6,9 +6,7 @@ Para o Pull Request XXX: - [ ] Não - [ ] Sim -2. Em comparação com sua experiência anterior de codificação SEM usar o Copilot (este número representa 100%) - -***Quanto menos tempo demorou a codificação durante este PR com o Copilot?*** +2. Em comparação com sua experiência anterior de codificação SEM usar o Copilot (este número representa 100%) ***Quanto menos tempo demorou a codificação durante este PR com o Copilot?*** (Exemplo: o PR normalmente levaria 5 dias, mas demorou apenas 4 dias com o Copilot, então a resposta é 20%) - [ ] 0% diff --git a/package-lock.json b/package-lock.json index d399308..26dca43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@azure/ai-text-analytics": "^5.1.0", "ai-text-analytics": "^0.0.1-security", "applicationinsights": "^2.7.3", - "csv-parse": "^5.5.2", + "csv-parser": "^3.0.0", "dedent": "^1.5.1", "dotenv": "^16.3.1", "mssql": "^9.2.0", @@ -22,7 +22,6 @@ "devDependencies": { "jest": "^29.6.4", "nock": "^13.3.3", - "semver": ">= 7.5.4", "smee-client": "^1.2.2" }, "engines": { @@ -3652,10 +3651,19 @@ "node": ">= 8" } }, - "node_modules/csv-parse": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.2.tgz", - "integrity": "sha512-YRVtvdtUNXZCMyK5zd5Wty1W6dNTpGKdqQd4EQ8tl/c6KW1aMBB1Kg1ppky5FONKmEqGJ/8WjLlTNLPne4ioVA==" + "node_modules/csv-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", + "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } }, "node_modules/dateformat": { "version": "4.6.3", diff --git a/package.json b/package.json index 7280e83..dd1fd41 100644 --- a/package.json +++ b/package.json @@ -16,20 +16,14 @@ "test": "jest --detectOpenHandles" }, "dependencies": { - "@azure/ai-language-text": "^1.1.0", - "@azure/ai-text-analytics": "^5.1.0", - "ai-text-analytics": "^0.0.1-security", - "applicationinsights": "^2.7.3", - "csv-parse": "^5.5.2", + "csv-parser": "^3.0.0", "dedent": "^1.5.1", "dotenv": "^16.3.1", - "mssql": "^9.2.0", "probot": "^12.3.1" }, "devDependencies": { "jest": "^29.6.4", "nock": "^13.3.3", - "semver": ">= 7.5.4", "smee-client": "^1.2.2" }, "engines": { diff --git a/test/fixtures/issue_body.md b/test/fixtures/issue_body.md index 2bc0ed3..8e38163 100644 --- a/test/fixtures/issue_body.md +++ b/test/fixtures/issue_body.md @@ -6,9 +6,7 @@ For Pull Request #44: - [ ] No - [ ] Yes -2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) - -***How much less time did the coding take during this PR with Copilot?*** +2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?*** (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%) - [ ] 0% diff --git a/test/index.test.js b/test/index.test.js index a237c7e..7af5b15 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -8,7 +8,6 @@ const payload_issues_edited = require("./fixtures/issues.edited.json"); const issue_comment_created = require("./fixtures/issue_comment.created.json"); const fs = require("fs"); const path = require("path"); -const LANGUAGE_API_ENDPOINT = process.env.LANGUAGE_API_ENDPOINT; const issue_body = fs.readFileSync( path.join(__dirname, "fixtures/issue_body.md"), @@ -31,27 +30,6 @@ describe("My Probot app", () => { beforeEach(() => { nock.disableNetConnect(); - if(LANGUAGE_API_ENDPOINT) { - nock.enableNetConnect(LANGUAGE_API_ENDPOINT); - nock(LANGUAGE_API_ENDPOINT) - .post('/language/:analyze-text?api-version=2023-04-01') - .reply(200, { - "kind": "LanguageDetectionResults", - "results": { - "documents": [{ - "id": "1", - "detectedLanguage": { - "name": "English", - "iso6391Name": "en", - "confidenceScore": 1.0 - }, - "warnings": [] - }], - "errors": [], - "modelVersion": "2022-10-01" - } - }); - } probot = new Probot({ appId: 123, privateKey, @@ -100,6 +78,18 @@ describe("My Probot app", () => { }, }) + .get("/repos/mageroni/TestRepo/contents/results.csv") + .reply(200, { + "name": "results.csv", + "path": "results.csv", + "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxjb21tZW50LGNyZWF0ZWRfYXQsY29tcGxldGVkX2F0CiwsVGVzdFJlcG8sMjAwMDA5NTYyNCwxNyw1LG1hZ2Vyb25pLDEsLCwsMjAyMy0xMS0xN1QyMzo1Mzo1MlosMjAyMy0xMS0xN1QyMzo1NDo0MloKLG1hZ2Vyb25pLFRlc3RSZXBvLDE2MzA2MzM4NzUsNjIsNDQsLDEsPiAyMSUgYnV0IDwgMzAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIz", + "sha": "d8a6e6d4f4f3f2f1f0", + "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=master", + }) + + .put('/repos/mageroni/TestRepo/contents/results.csv') + .reply(200) + .patch("/repos/mageroni/TestRepo/issues/62", (body) => { expect(body).toMatchObject({state: 'closed'}); return true; @@ -123,6 +113,18 @@ describe("My Probot app", () => { }, }) + .get("/repos/mageroni/TestRepo/contents/results.csv") + .reply(200, { + "name": "results.csv", + "path": "results.csv", + "sha": "d8a6e6d4f4f3f2f1f0", + "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxjb21tZW50LGNyZWF0ZWRfYXQsY29tcGxldGVkX2F0CiwsVGVzdFJlcG8sMjAwMDA5NTYyNCwxNyw1LG1hZ2Vyb25pLDEsLCwsMjAyMy0xMS0xN1QyMzo1Mzo1MlosMjAyMy0xMS0xN1QyMzo1NDo0MloKLG1hZ2Vyb25pLFRlc3RSZXBvLDE2MzA2MzM4NzUsNjIsNDQsLDEsPiAyMSUgYnV0IDwgMzAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIz", + "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=master", + }) + + .put('/repos/mageroni/TestRepo/contents/results.csv') + .reply(200) + .patch("/repos/mageroni/TestRepo/issues/60", (body) => { expect(body).toMatchObject({state: 'closed'}); return true; From 2139c211b9fd15d623b80e2d88b452030f6bf9d1 Mon Sep 17 00:00:00 2001 From: Mabel Geronimo <107436170+mageroni@users.noreply.github.com> Date: Sat, 18 Nov 2023 01:12:05 -0600 Subject: [PATCH 3/6] Updating instructions --- README.md | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 579b51c..b02e613 100644 --- a/README.md +++ b/README.md @@ -57,23 +57,16 @@ Note: *If the env file does not contain a Language API Key or Endpoint, the anal ### Where does the app store surveys? -As we receive edits on the issue, the App will validate the responses received (options selected) and once all questions have been answered, the issue will be closed automatically and the responses will be saved into a private SQL database. +As we receive edits on the issue, the App will validate the responses received (options selected) and once all questions have been answered, the issue will be closed automatically and the responses will be saved into a results.csv file in the same repo in which the issue was created. ## Setup. Deploy on your own environment For doing a local deployment of this GitHub App, you will need to set up an environment with the following components: - Web Server -- SQL Database -- Azure Cognitive Service for Language (optional) -- Azure Applications Insights (optional) -The web server and SQL database are the minimum requirements for this app to work and can be hosted on any environment of your choosing (cloud or on-prem). If you decide to do the deployment on Azure, this guide will help you! +The web server is the minimum requirement for this app to work and can be hosted on any environment of your choosing (cloud or on-prem). This guide will help you on the next steps! -### Step 1. Create the resources - -You can use this link to deploy all resources automatically in your Azure subscription [![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fmageroni%2Fcopilot-survey-engine%2Fmain%2Fdeployment%2Ftemplate.json) - -### Step 2. Execute locally and configure secrets +### Step 1. Execute locally and configure secrets To run the application on you local machine you'll need to have installed NodeJS. Once you have it, you can access to the folder where you've cloned this project and run the following: @@ -87,26 +80,15 @@ npm start As a first time execution probot will prompt you for creating a new GitHub App or connect it with an existing App. As you complete the requested information, a .env file will get created in your local source code and all the private information regarding your GitHub App will be automatically written there. If you need guidance on how to configure your first GitHub App, please review this guide https://probot.github.io/docs/development/#configuring-a-github-app. -You will also need to provide the DATABASE_CONNECTION_STRING in your env file. - -Optionally if you'll be also using Application Ingishts please provide the value for APPLICATIONINSIGHTS_CONNECTION_STRING. You can search for this in your Azure Portal, going to the resource group you've created previously. Select the resource of type Application Insights and copy the Connection String in the Essentials section of the Overview page. - -Optionally if you'll be also using Languange detection API please provide the value for LANGUAGE_API_ENDPOINT, LANGUAGE_API_KEY. You can search for this in your Azure Portal, going to the resource group you've created previously. Select the resource of type Language and go to Keys and Endpoint. Copy one of the keys and corresponding endpoint. - ### Step 3. Deploy your App! -For a quick deployment you could open your Visual Studio Code and open the cloned project. Make sure you have the Azure Tools extension installed. If not, please install it https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack - -Once you have the extension sign in to Azure with your credentials go to your Explorer view and right click in the file directory to select the option "Deploy to web app". Select the subscription in which you've created the resources in step 1. Select the name you chose for the App Service created in step 1. - -Finally go to your GitHub App and update your webhook URL to reflect your App Service URL. - +Once you have your source code deployed in the web server or hosting platform of your choosing, finally go to your GitHub App and update your webhook URL to reflect your Web Server URL. ### Step 4. Test your App! Make sure you have your app installed in at least one repo. -In such repo, create a pull request and close it (either close it or merge/complete it). Confirm that an issue has been created with the name "Copilot Usage - PR#XX". Answer the questions and confirm that the issue is closed and the data has been recorded into your database. +In such repo, create a pull request and close it (either close it or merge/complete it). Confirm that an issue has been created with the name "Copilot Usage - PR#XX". Answer the questions and confirm that the issue is closed and the data has been recorded into a file named results.csv Congrats!!!!! Enjoy and keep expanding the project. From 5e59bc492fc518169376ed900be62e543c51d6b7 Mon Sep 17 00:00:00 2001 From: mageroni <107436170+mageroni@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:52:05 -0500 Subject: [PATCH 4/6] Adding a new branch for results.csv and updating packages --- .env.example | 7 +- index.js | 55 +- package-lock.json | 1645 ++------------------------------------------ package.json | 2 +- test/index.test.js | 8 +- 5 files changed, 107 insertions(+), 1610 deletions(-) diff --git a/.env.example b/.env.example index 3eab4bc..76c8d8f 100644 --- a/.env.example +++ b/.env.example @@ -4,9 +4,4 @@ PRIVATE_KEY= WEBHOOK_SECRET=development # Use `trace` to get verbose logging or `info` to show less -LOG_LEVEL=debug - -LANGUAGE_API_ENDPOINT= -LANGUAGE_API_KEY= -APPLICATIONINSIGHTS_CONNECTION_STRING= -DATABASE_CONNECTION_STRING= \ No newline at end of file +LOG_LEVEL=debug \ No newline at end of file diff --git a/index.js b/index.js index 36892ae..faa682c 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,7 @@ const dedent = require("dedent"); const fs = require("fs"); const csvParser = require("csv-parser"); const stream = require('stream'); +const BranchName = "copilot-survey-engine-results"; require("dotenv").config(); module.exports = (app) => { @@ -72,7 +73,7 @@ module.exports = (app) => { // save comment body if present let comment = null; if(context.payload.comment) { - comment = context.payload.comment.body; + comment = context.payload.comment.body.replace(/\n/g, ' ').trim(); } // find regex [0-9]\+ in issue_body and get first result @@ -199,6 +200,7 @@ module.exports = (app) => { owner: context.payload.repository.owner.login, repo: context.payload.repository.name, path: "results.csv", + ref: BranchName, }); // If the file exists, get its contents @@ -247,14 +249,16 @@ module.exports = (app) => { app.log.info("CSV String:\n" + resultString); - // commit the file to the repo + // Commit the file to the repo in a new branch + await createBranch(context); await context.octokit.repos.createOrUpdateFileContents({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, path: "results.csv", message: 'Update results.csv', - content: Buffer.from(resultString).toString('base64'), + content: Buffer.from(resultString).toString('base64'), sha: file.data.sha, + branch: BranchName, }); app.log.info("File updated successfully\n " + Buffer.from(resultString).toString('base64')); @@ -265,18 +269,61 @@ module.exports = (app) => { if (error.status === 404) { let completeData = 'enterprise_name,organization_name,repository_name,issue_id,issue_number,PR_number,assignee_name,is_copilot_used,saving_percentage,usage_frequency,comment,created_at,completed_at\n' + Object.values(fileContent).join(','); + await createBranch(context); await context.octokit.repos.createOrUpdateFileContents({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, path: "results.csv", message: 'initial commit', content: Buffer.from(completeData).toString('base64'), + branch: BranchName, }); - }else{ + } else { app.log.error(error); } } + async function createBranch(context) { + // Step 1: Get reference to the default branch + let ref; + try { + // Try to get the 'main' branch + const { data: mainRef } = await context.octokit.git.getRef({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + ref: 'heads/main', + }); + ref = mainRef; + } catch (error) { + // If 'main' branch does not exist, try to get the 'master' branch + if (error.status === 404) { + const { data: masterRef } = await context.octokit.git.getRef({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + ref: 'heads/master', + }); + ref = masterRef; + } else { + app.log.error(error); + } + } + + // Step 2: Create a new branch from the default branch + try { + await context.octokit.git.createRef({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + ref: `refs/heads/${BranchName}`, + sha: ref.object.sha, + }); + } catch (error) { + if (error.status === 422) { + app.log.info(`Branch ${BranchName} already exists`); + } else { + app.log.error(error); + } + } + } } diff --git a/package-lock.json b/package-lock.json index 26dca43..5ca9458 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15 +9,10 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@azure/ai-language-text": "^1.1.0", - "@azure/ai-text-analytics": "^5.1.0", - "ai-text-analytics": "^0.0.1-security", - "applicationinsights": "^2.7.3", "csv-parser": "^3.0.0", "dedent": "^1.5.1", "dotenv": "^16.3.1", - "mssql": "^9.2.0", - "probot": "^12.3.1" + "probot": "^12.4.0" }, "devDependencies": { "jest": "^29.6.4", @@ -41,396 +36,6 @@ "node": ">=6.0.0" } }, - "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/abort-controller/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/ai-language-text": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/ai-language-text/-/ai-language-text-1.1.0.tgz", - "integrity": "sha512-WAAQJrh7EbYgK+gvqn1nTaqYbonHVxdACse3ud3nd/kCLUl3hK6l3vpkEIJped0YffGH4HlTOUIsuIhZei92Ng==", - "dependencies": { - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.6.0", - "@azure/core-lro": "^2.3.0", - "@azure/core-paging": "^1.3.0", - "@azure/core-rest-pipeline": "^1.8.1", - "@azure/core-tracing": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/ai-language-text/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/ai-text-analytics": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@azure/ai-text-analytics/-/ai-text-analytics-5.1.0.tgz", - "integrity": "sha512-vkAFCxj0dn7kjTDuzpqM4EgQJkn3V0N/KJ0/n+UwralpeCESWll3DLuf8h2kL94vT9pyHWq7xWiNMBrzXxF1yA==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-asynciterator-polyfill": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.0.0", - "@azure/core-lro": "^2.0.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "1.0.0-preview.12", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/ai-text-analytics/node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.12", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.12.tgz", - "integrity": "sha512-nvo2Wc4EKZGN6eFu9n3U7OXmASmL8VxoPIH7xaD6OlQqi44bouF0YIi9ID5rEsKLiAU59IYx6M297nqWVMWPDg==", - "dependencies": { - "@opentelemetry/api": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/ai-text-analytics/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@azure/core-asynciterator-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz", - "integrity": "sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz", - "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-util": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-auth/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/core-client": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.2.tgz", - "integrity": "sha512-ye5554gnVnXdfZ64hptUtETgacXoRWxYv1JF5MctoAzTSH5dXhDPZd9gOjDPyWMcLIk58pnP5+p5vGX6PYn1ag==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-client/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/core-http-compat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz", - "integrity": "sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA==", - "dependencies": { - "@azure/abort-controller": "^1.0.4", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-lro": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.1.tgz", - "integrity": "sha512-JHQy/bA3NOz2WuzOi5zEk6n/TJdAropupxUT521JIJvW7EXV2YN2SFYZrf/2RHeD28QAClGdynYadZsbmP+nyQ==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-lro/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/core-paging": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz", - "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-paging/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.2.tgz", - "integrity": "sha512-e3WzAsRKLor5EgK2bQqR1OY5D7VBqzORHtlqtygZZQGCYOIBsynqrZBa8MFD1Ue9r8TPtofOLditalnlQHS45Q==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-tracing/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/core-util": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.2.0.tgz", - "integrity": "sha512-ffGIw+Qs8bNKNLxz5UPkz4/VBM/EZY07mPve1ZYFqYUdPwFqRj0RPk0U7LZMOfT7GCck9YjuT1Rfp1PApNl1ng==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/core-util/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/identity": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-2.1.0.tgz", - "integrity": "sha512-BPDz1sK7Ul9t0l9YKLEa8PHqWU4iCfhGJ+ELJl6c8CP3TpJt2urNCbm0ZHsthmxRsYoMPbz2Dvzj30zXZVmAFw==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.4.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^2.26.0", - "@azure/msal-common": "^7.0.0", - "@azure/msal-node": "^1.10.0", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/identity/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/identity/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/identity/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/keyvault-keys": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.7.0.tgz", - "integrity": "sha512-HScWdORbRCKi1vdKI6EChe/t/P/zV7jcGZWfj18BOyeensk5d1/Ynfx1t6xfAy5zUIQvAWVU97hXdCznDpULbQ==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^1.3.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/keyvault-keys/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/logger": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz", - "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/logger/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@azure/msal-browser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.34.0.tgz", - "integrity": "sha512-stoXdlfAtyVIMOp1lS5PorgO5f66MGRi3Q1FBlXhVZFTsTfAWrNdSOx1m/PXWHskWE9aXO+NEzXVOoWmDNnvNA==", - "dependencies": { - "@azure/msal-common": "^11.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-11.0.0.tgz", - "integrity": "sha512-SZH8ObQ3Hq5v3ogVGBYJp1nNW7p+MtM4PH4wfNadBP9wf7K0beQHF9iOtRcjPOkwZf+ZD49oXqw91LndIkdk8g==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.6.0.tgz", - "integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.16.0.tgz", - "integrity": "sha512-eGXPp65i++mAIvziafbCH970TCeECB6iaQP7aRzZEjtU238cW4zKm40U8YxkiCn9rR1G2VeMHENB5h6WRk7ZCQ==", - "dependencies": { - "@azure/msal-common": "^11.0.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": "10 || 12 || 14 || 16 || 18" - } - }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-11.0.0.tgz", - "integrity": "sha512-SZH8ObQ3Hq5v3ogVGBYJp1nNW7p+MtM4PH4wfNadBP9wf7K0beQHF9iOtRcjPOkwZf+ZD49oXqw91LndIkdk8g==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz", - "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==", - "dependencies": { - "@azure/core-tracing": "^1.0.0", - "@azure/logger": "^1.0.0", - "@opentelemetry/api": "^1.4.1", - "@opentelemetry/core": "^1.15.2", - "@opentelemetry/instrumentation": "^0.41.2", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/opentelemetry-instrumentation-azure-sdk/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -1446,16 +1051,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@js-joda/core": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.2.tgz", - "integrity": "sha512-retLUN4TwCJ0QJDi9OCJwYVaXAz93NeOkEtEQL98M2bykBOxmURlP0YlfsuE46kItOOVZIWRYC3KsSLhQ1R2Qw==" - }, - "node_modules/@microsoft/applicationinsights-web-snippet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz", - "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==" - }, "node_modules/@octokit/auth-app": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.9.tgz", @@ -2150,9 +1745,9 @@ } }, "node_modules/@octokit/webhooks": { - "version": "9.26.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.0.tgz", - "integrity": "sha512-foZlsgrTDwAmD5j2Czn6ji10lbWjGDVsUxTIydjG9KTkAWKJrFapXJgO5SbGxRwfPd3OJdhK3nA2YPqVhxLXqA==", + "version": "9.26.3", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.3.tgz", + "integrity": "sha512-DLGk+gzeVq5oK89Bo601txYmyrelMQ7Fi5EnjHE0Xs8CWicy2xkmnJMKptKJrBJpstqbd/9oeDFi/Zj2pudBDQ==", "dependencies": { "@octokit/request-error": "^2.0.2", "@octokit/webhooks-methods": "^2.0.0", @@ -2170,85 +1765,6 @@ "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" }, - "node_modules/@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz", - "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", - "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", - "dependencies": { - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.4.2", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz", - "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==", - "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz", - "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==", - "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", - "engines": { - "node": ">=14" - } - }, "node_modules/@probot/get-private-key": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.1.tgz", @@ -2404,19 +1920,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@tediousjs/connection-string": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.5.0.tgz", - "integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==" - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, "node_modules/@types/babel__core": { "version": "7.20.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", @@ -2638,11 +2141,6 @@ "@types/node": "*" } }, - "node_modules/@types/shimmer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.2.tgz", - "integrity": "sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg==" - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -2676,25 +2174,6 @@ "node": ">= 0.6" } }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2718,11 +2197,6 @@ "node": ">=8" } }, - "node_modules/ai-text-analytics": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/ai-text-analytics/-/ai-text-analytics-0.0.1-security.tgz", - "integrity": "sha512-2OrOTH/Gg9YnQekpDRdbLzOCHOjdLmNt9BZq3m1yFCC2sLvuBsdTRZOr8CGB5M+GvPiEBptd310X1YuI7Nda7w==" - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -2775,62 +2249,6 @@ "node": ">= 8" } }, - "node_modules/applicationinsights": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.7.3.tgz", - "integrity": "sha512-JY8+kTEkjbA+kAVNWDtpfW2lqsrDALfDXuxOs74KLPu2y13fy/9WB52V4LfYVTVcW1/jYOXjTxNS2gPZIDh1iw==", - "dependencies": { - "@azure/core-auth": "^1.5.0", - "@azure/core-rest-pipeline": "1.10.1", - "@azure/core-util": "1.2.0", - "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", - "@microsoft/applicationinsights-web-snippet": "^1.0.1", - "@opentelemetry/api": "^1.4.1", - "@opentelemetry/core": "^1.15.2", - "@opentelemetry/sdk-trace-base": "^1.15.2", - "@opentelemetry/semantic-conventions": "^1.15.2", - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "1.1.1", - "diagnostic-channel-publishers": "1.0.7" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "applicationinsights-native-metrics": "*" - }, - "peerDependenciesMeta": { - "applicationinsights-native-metrics": { - "optional": true - } - } - }, - "node_modules/applicationinsights/node_modules/@azure/core-rest-pipeline": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz", - "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/applicationinsights/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2933,18 +2351,6 @@ "node": ">=4" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -2956,41 +2362,11 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, - "node_modules/async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", - "dependencies": { - "stack-chain": "^1.3.7" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3" - } - }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "engines": { - "node": "<=0.11.8 || >0.11.10" - } - }, - "node_modules/async-listener/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/atomic-sleep": { "version": "1.0.0", @@ -3000,17 +2376,6 @@ "node": ">=8.0.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/babel-jest": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", @@ -3148,25 +2513,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -3190,23 +2536,13 @@ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -3214,7 +2550,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -3252,12 +2588,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3309,29 +2645,6 @@ "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -3444,7 +2757,8 @@ "node_modules/cjs-module-lexer": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", @@ -3468,27 +2782,6 @@ "node": ">=12" } }, - "node_modules/cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "dependencies": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" - } - }, - "node_modules/cls-hooked/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/cluster-key-slot": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", @@ -3540,6 +2833,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -3586,15 +2880,6 @@ "node": ">= 0.6" } }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3710,33 +2995,11 @@ "node": ">=0.10.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -3790,22 +3053,6 @@ "wrappy": "1" } }, - "node_modules/diagnostic-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz", - "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==", - "dependencies": { - "semver": "^7.5.3" - } - }, - "node_modules/diagnostic-channel-publishers": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.7.tgz", - "integrity": "sha512-SEECbY5AiVt6DfLkhkaHNeshg1CogdLLANA8xlG/TKvS+XUgvIKl7VspJGYiEdL5OUyzMVnr7o0AwB7f+/Mjtg==", - "peerDependencies": { - "diagnostic-channel": "*" - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -3845,14 +3092,6 @@ "integrity": "sha512-VTq6vjk3kCfG2qdzQRd/i9dIyVVm0dbtZIgFzrLgfB73mXDQT2HPKVRc1EoZcAVUv9XhXAu08DWqJuababdGGg==", "dev": true }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dependencies": { - "shimmer": "^1.2.0" - } - }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", @@ -3895,102 +3134,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-aggregate-error": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.9.tgz", - "integrity": "sha512-fvnX40sb538wdU6r4s35cq4EY6Lr09Upj40BEVem4LEsuW8XgQep9yD5Q1U2KftokNp1rWODFJ2qwZSsAjFpbg==", - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "function-bind": "^1.1.1", - "functions-have-names": "^1.2.3", - "get-intrinsic": "^1.1.3", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4034,14 +3177,6 @@ "node": ">= 0.6" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/eventsource": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", @@ -4099,16 +3234,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -4190,9 +3325,9 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -4247,9 +3382,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -4306,18 +3441,11 @@ "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -4382,31 +3510,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4459,21 +3562,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4503,31 +3591,6 @@ "node": ">=4" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4564,14 +3627,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4581,28 +3636,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -4614,20 +3647,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -4658,19 +3677,6 @@ "node": ">= 0.8" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4703,25 +3709,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -4749,17 +3736,6 @@ "node": ">=4" } }, - "node_modules/import-in-the-middle": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz", - "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==", - "dependencies": { - "acorn": "^8.8.2", - "acorn-import-assertions": "^1.9.0", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -4810,19 +3786,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/ioredis": { "version": "4.28.5", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", @@ -4856,68 +3819,18 @@ "node": ">= 0.10" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-base64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", - "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==", - "bin": { - "is_base64": "bin/is-base64", - "is-base64": "bin/is-base64" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", + "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==", + "bin": { + "is_base64": "bin/is-base64", + "is-base64": "bin/is-base64" } }, "node_modules/is-core-module": { @@ -4931,34 +3844,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -4977,17 +3862,6 @@ "node": ">=6" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4997,20 +3871,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -5019,32 +3879,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -5057,74 +3891,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5814,11 +4580,6 @@ "node": ">=10" } }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5837,11 +4598,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbi": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz", - "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==" - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6153,11 +4909,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" - }, "node_modules/morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -6214,38 +4965,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/mssql": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/mssql/-/mssql-9.2.0.tgz", - "integrity": "sha512-FxX/CTGLH+X5UHH0d4lUJzVGlIZlLoY/ZdFCVect4VwbfKtDtNZWG8vq9SEjVfduhtydVrE4K2y69JnDAYgXlw==", - "dependencies": { - "@tediousjs/connection-string": "^0.5.0", - "commander": "^11.0.0", - "debug": "^4.3.3", - "rfdc": "^1.3.0", - "tarn": "^3.0.2", - "tedious": "^15.0.1" - }, - "bin": { - "mssql": "bin/mssql" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mssql/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "engines": { - "node": ">=16" - } - }, - "node_modules/native-duplexpair": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", - "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==" - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6280,11 +4999,6 @@ "node": ">= 10.13" } }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" - }, "node_modules/node-fetch": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", @@ -6345,31 +5059,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/octokit-auth-probot": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/octokit-auth-probot/-/octokit-auth-probot-1.2.9.tgz", @@ -6451,22 +5140,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -6804,18 +5477,18 @@ } }, "node_modules/probot": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.1.tgz", - "integrity": "sha512-ECSgycmAC0ILEK6cOa+x3QPufP5JybsuohOFCYr3glQU5SkbmypZJE/Sfio9mxAFHK5LCXveIDsfZCxf6ck4JA==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/probot/-/probot-12.4.0.tgz", + "integrity": "sha512-DbW4ME9rzGVwnsFjoWWxKtRvnxPlFaCg726ge1sYHwZ3UzMlcF3B8Qf7MptfhGRyFw8sSCqsbgzb0E5d/BrQEA==", "dependencies": { - "@octokit/core": "^3.2.4", + "@octokit/core": "^3.6.0", "@octokit/plugin-enterprise-compatibility": "^1.2.8", "@octokit/plugin-paginate-rest": "^2.6.2", "@octokit/plugin-rest-endpoint-methods": "^5.0.1", "@octokit/plugin-retry": "^3.0.6", "@octokit/plugin-throttling": "^3.3.4", "@octokit/types": "^8.0.0", - "@octokit/webhooks": "^9.8.4", + "@octokit/webhooks": "^9.26.3", "@probot/get-private-key": "^1.1.0", "@probot/octokit-plugin-config": "^1.0.0", "@probot/pino": "^2.2.0", @@ -6833,8 +5506,8 @@ "ioredis": "^4.27.8", "js-yaml": "^3.14.1", "lru-cache": "^6.0.0", - "octokit-auth-probot": "^1.2.2", - "pino": "^6.7.0", + "octokit-auth-probot": "^1.2.6", + "pino": "^6.14.0", "pino-http": "^5.3.0", "pkg-conf": "^3.1.0", "resolve": "^1.19.0", @@ -6970,9 +5643,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -7033,22 +5706,6 @@ "optional": true, "peer": true }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7058,19 +5715,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-in-the-middle": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", - "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", - "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -7141,19 +5785,6 @@ } ] }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -7270,11 +5901,6 @@ "node": ">=8" } }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -7379,11 +6005,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, - "node_modules/stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -7409,15 +6030,6 @@ "node": ">= 0.8" } }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7453,48 +6065,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -7593,60 +6163,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tarn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", - "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/tedious": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-15.1.3.tgz", - "integrity": "sha512-166EpRm5qknwhEisjZqz/mF7k14fXKJYHRg6XiAXVovd/YkyHJ3SG4Ppy89caPaNFfRr7PVYe+s4dAvKaCMFvw==", - "dependencies": { - "@azure/identity": "^2.0.4", - "@azure/keyvault-keys": "^4.4.0", - "@js-joda/core": "^5.2.0", - "bl": "^5.0.0", - "es-aggregate-error": "^1.0.8", - "iconv-lite": "^0.6.3", - "js-md4": "^0.3.2", - "jsbi": "^4.3.0", - "native-duplexpair": "^1.0.0", - "node-abort-controller": "^3.0.1", - "punycode": "^2.1.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/tedious/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tedious/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tedious/node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -7739,19 +6255,6 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -7764,20 +6267,6 @@ "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/universal-github-app-jwt": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", @@ -7934,40 +6423,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index dd1fd41..81a70e8 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "csv-parser": "^3.0.0", "dedent": "^1.5.1", "dotenv": "^16.3.1", - "probot": "^12.3.1" + "probot": "^12.4.0" }, "devDependencies": { "jest": "^29.6.4", diff --git a/test/index.test.js b/test/index.test.js index 7af5b15..37335fe 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -78,13 +78,13 @@ describe("My Probot app", () => { }, }) - .get("/repos/mageroni/TestRepo/contents/results.csv") + .get("/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results") .reply(200, { "name": "results.csv", "path": "results.csv", "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxjb21tZW50LGNyZWF0ZWRfYXQsY29tcGxldGVkX2F0CiwsVGVzdFJlcG8sMjAwMDA5NTYyNCwxNyw1LG1hZ2Vyb25pLDEsLCwsMjAyMy0xMS0xN1QyMzo1Mzo1MlosMjAyMy0xMS0xN1QyMzo1NDo0MloKLG1hZ2Vyb25pLFRlc3RSZXBvLDE2MzA2MzM4NzUsNjIsNDQsLDEsPiAyMSUgYnV0IDwgMzAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIz", "sha": "d8a6e6d4f4f3f2f1f0", - "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=master", + "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results", }) .put('/repos/mageroni/TestRepo/contents/results.csv') @@ -113,13 +113,13 @@ describe("My Probot app", () => { }, }) - .get("/repos/mageroni/TestRepo/contents/results.csv") + .get("/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results") .reply(200, { "name": "results.csv", "path": "results.csv", "sha": "d8a6e6d4f4f3f2f1f0", "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxjb21tZW50LGNyZWF0ZWRfYXQsY29tcGxldGVkX2F0CiwsVGVzdFJlcG8sMjAwMDA5NTYyNCwxNyw1LG1hZ2Vyb25pLDEsLCwsMjAyMy0xMS0xN1QyMzo1Mzo1MlosMjAyMy0xMS0xN1QyMzo1NDo0MloKLG1hZ2Vyb25pLFRlc3RSZXBvLDE2MzA2MzM4NzUsNjIsNDQsLDEsPiAyMSUgYnV0IDwgMzAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIz", - "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=master", + "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results", }) .put('/repos/mageroni/TestRepo/contents/results.csv') From d8bdd829e0430a3f0a2382b550b7f48dcb574fbe Mon Sep 17 00:00:00 2001 From: mageroni <107436170+mageroni@users.noreply.github.com> Date: Fri, 26 Jul 2024 18:34:48 -0500 Subject: [PATCH 5/6] Adding new survey question and improving logic for capturing answers --- README.md | 11 +- index.js | 227 +-- issue_template/copilot-usage-en.md | 9 +- issue_template/copilot-usage-es.md | 9 +- issue_template/copilot-usage-fr.md | 9 +- issue_template/copilot-usage-pt.md | 11 +- package-lock.json | 2192 +++++++++++----------- test/fixtures/issue_body.md | 9 +- test/fixtures/issue_comment.created.json | 2 +- test/fixtures/issues.edited.json | 9 +- test/fixtures/pull_request.closed.json | 2 +- test/index.test.js | 73 +- 12 files changed, 1296 insertions(+), 1267 deletions(-) diff --git a/README.md b/README.md index b02e613..f0fbb2a 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ As more companies adopt GitHub Copilot, it becomes increasingly important to measure the benefits it brings to the organization. This survey is an effort to combine both quantitative and qualitative data. To improve validity of the quantitative responses, Developers are asked to document their rationale for the time-savings percentage they choose. -Quantitative feedback from the Developer at the time of creating a PR provides valuable insights on the time savings experienced by the Developer. Time savings is needed first before other downstream impacts (like velocity increases, or other improvements can happen. The level of granularity provides multiple feedback opportunities for Developers and can capture a variety of PRs so we can understand adoption challenges and improvement opportunities. If helpful, the Survey results may also be combined with Key Performance Indicators (KPIs) that the product provides to further contextualize the survey responses. +Quantitative feedback from the Developer at the time of creating a PR provides valuable insights on the time savings experienced by the Developer. Time savings is needed first before other downstream impacts like velocity increases, or other improvements can happen. The level of granularity provides multiple feedback opportunities for Developers and can capture a variety of PRs so we can understand adoption challenges and improvement opportunities. If helpful, the Survey results may also be combined with Key Performance Indicators (KPIs) that the product provides to further contextualize the survey responses. -The survey responses are stored in your private Azure SQL database to provide insights into how developers are using the tool, the value they report, and the challenges they encounter. +The survey responses are stored in a file called results.csv in a new branch "copilot-survey-engine-results" to provide insights into how developers are using the tool, the value they report, and the challenges they encounter. We hope that this project provides value to your organization, and we encourage you to contribute and build upon it. Your contributions can help further enhance the survey capabilities and provide even greater insights into the developer experience with Copilot. @@ -55,6 +55,13 @@ Note: *If the env file does not contain a Language API Key or Endpoint, the anal - [ replace this line with your answer. ] +6. ***Where did you invest your Copilot Time Savings?*** +- [ ] Resolve vulnerabilites +- [ ] Experiment, Learn and Wellness +- [ ] Technical debt and refactorization +- [ ] Work on other items in the backlog +- [ ] Other. Please explain in the comment + ### Where does the app store surveys? As we receive edits on the issue, the App will validate the responses received (options selected) and once all questions have been answered, the issue will be closed automatically and the responses will be saved into a results.csv file in the same repo in which the issue was created. diff --git a/index.js b/index.js index faa682c..790ac01 100644 --- a/index.js +++ b/index.js @@ -65,10 +65,6 @@ module.exports = (app) => { async function GetSurveyData(context) { let issue_body = context.payload.issue.body; - let pctSelected = false; - let pctValue = new Array(); - let freqSelected = false; - let freqValue = new Array(); // save comment body if present let comment = null; @@ -79,56 +75,49 @@ module.exports = (app) => { // find regex [0-9]\+ in issue_body and get first result let pr_number = issue_body.match(/[0-9]+/)[0]; - // find regex \[x\] in issue_body and get complete line in an array - let checkboxes = issue_body.match(/\[x\].*/g); - - // find if checkboxes array contains Sim o Si or Yes - let isCopilotUsed = checkboxes.some((checkbox) => { + // Get answers to first question and find if they contain affirmative answer + let firstQuestionResponse = await getQuestionResponse(1, 2, issue_body); + let isCopilotUsed = firstQuestionResponse.some((response) => { return ( - checkbox.includes("Sim") || - checkbox.includes("Si") || - checkbox.includes("Yes") || - checkbox.includes("Oui") + response.includes("Sim") || + response.includes("Si") || + response.includes("Yes") || + response.includes("Oui") ); }); - if (isCopilotUsed) { - // loop through checkboxes and find the one that contains % - - for (const checkbox of checkboxes) { - if (checkbox.includes("%")) { - pctSelected = true; - copilotPercentage = checkbox; - copilotPercentage = copilotPercentage.replace(/\[x\] /g, ""); - pctValue.push(copilotPercentage); - app.log.info(copilotPercentage); - } - } + // Get answers to second question and store in pctValue + let pctValue = await getQuestionResponse(2, 3, issue_body); + let freqValue = await getQuestionResponse(4, 5, issue_body); + let savingsInvestedValue = await getQuestionResponse(6, '', issue_body); - // loop through checkboxes and find the ones that do not contain % and are not Yes or No - for (const checkbox of checkboxes) { - if ( - !checkbox.includes("%") && - !checkbox.includes("Sim") && - !checkbox.includes("Si") && - !checkbox.includes("Yes") && - !checkbox.includes("Oui") && - !checkbox.includes("Não") && - !checkbox.includes("No") && - !checkbox.includes("Non") || - checkbox.includes("Not very much") - ) { - freqSelected = true; - frequencyValue = checkbox; - frequencyValue = frequencyValue.replace(/\[x\] /g, ""); - freqValue.push(frequencyValue); - app.log.info(frequencyValue); - } + if( isCopilotUsed && pctValue && freqValue && savingsInvestedValue){ + // All questions have been answered and we can close the issue + app.log.info("Closing the issue"); + try { + await context.octokit.issues.update({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + issue_number: context.payload.issue.number, + state: "closed", + }); + } catch (err) { + app.log.error(err); } - - if( pctSelected && freqSelected ){ - // close the issue + } + + if ( + firstQuestionResponse.some((response) => { + return ( + response.includes("Não") || + response.includes("No") || + response.includes("Non") + ); + }) + ){ + if (comment) { try { + // close the issue await context.octokit.issues.update({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, @@ -139,33 +128,8 @@ module.exports = (app) => { app.log.error(err); } } - } else { - if ( - checkboxes.some((checkbox) => { - return ( - checkbox.includes("Não") || - checkbox.includes("No") || - checkbox.includes("Non") - ); - }) - ) { - - if (comment) { - try { - // close the issue - await context.octokit.issues.update({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.issue.number, - state: "closed", - }); - } catch (err) { - app.log.error(err); - } - } - } } - + let data = { enterprise_name: context.payload.enterprise ? context.payload.enterprise.name : '', organization_name: context.payload.organization ? context.payload.organization.login : '', @@ -175,8 +139,9 @@ module.exports = (app) => { PR_number: pr_number || '', assignee_name: context.payload.issue.assignee ? context.payload.issue.assignee.login : '', is_copilot_used: isCopilotUsed ? 1 : 0, - saving_percentage: pctValue || '', - usage_frequency: freqValue || '', + saving_percentage: pctValue ? pctValue.join(" || ") : '', + frequency: freqValue ? freqValue.join(" || ") : '', + savings_invested: savingsInvestedValue ? savingsInvestedValue.join(" || ") : '', comment: comment || '', created_at: context.payload.issue ? context.payload.issue.created_at : '', completed_at: context.payload.issue ? context.payload.issue.updated_at : '' @@ -187,13 +152,13 @@ module.exports = (app) => { } async function insertIntoFile(context) { - let fileContent = ""; - let results = []; + let newContent = ""; let resultString = ""; + let results = []; try { - fileContent = await GetSurveyData(context); + newContent = await GetSurveyData(context); // Try to get the file let file = await context.octokit.repos.getContent({ @@ -207,6 +172,7 @@ module.exports = (app) => { let fileContents = Buffer.from(file.data.content, "base64").toString(); // If the file contents are not empty, parse the CSV if (fileContents.length > 0) { + app.log.info("Starting to parse the CSV file..."); // create a readable stream let readableStream = new stream.Readable(); readableStream.push(fileContents); @@ -232,14 +198,14 @@ module.exports = (app) => { if(issue_id_index != -1){ // save previous comments if (results[issue_id_index].comment) { - fileContent.comment = results[issue_id_index].comment + ' || ' + fileContent.comment; + newContent.comment = results[issue_id_index].comment + ' || ' + newContent.comment; } // if the issue_id exists, update the row in the array results - results[issue_id_index] = fileContent; + results[issue_id_index] = newContent; }else{ // if the issue_id does not exist, push the row into the array - results.push(fileContent); + results.push(newContent); } resultString = Object.keys(results[0]).join(',') + '\n'; @@ -267,8 +233,8 @@ module.exports = (app) => { } catch (error) { // If the file does not exist, create it if (error.status === 404) { - let completeData = 'enterprise_name,organization_name,repository_name,issue_id,issue_number,PR_number,assignee_name,is_copilot_used,saving_percentage,usage_frequency,comment,created_at,completed_at\n' - + Object.values(fileContent).join(','); + let completeData = 'enterprise_name,organization_name,repository_name,issue_id,issue_number,PR_number,assignee_name,is_copilot_used,saving_percentage,usage_frequency,savings_invested,comment,created_at,completed_at\n' + + Object.values(newContent).join(','); await createBranch(context); await context.octokit.repos.createOrUpdateFileContents({ owner: context.payload.repository.owner.login, @@ -282,49 +248,64 @@ module.exports = (app) => { app.log.error(error); } } - - async function createBranch(context) { - // Step 1: Get reference to the default branch - let ref; - try { - // Try to get the 'main' branch - const { data: mainRef } = await context.octokit.git.getRef({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - ref: 'heads/main', - }); - ref = mainRef; - } catch (error) { - // If 'main' branch does not exist, try to get the 'master' branch - if (error.status === 404) { - const { data: masterRef } = await context.octokit.git.getRef({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - ref: 'heads/master', - }); - ref = masterRef; - } else { - app.log.error(error); - } - } - // Step 2: Create a new branch from the default branch - try { - await context.octokit.git.createRef({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - ref: `refs/heads/${BranchName}`, - sha: ref.object.sha, - }); - } catch (error) { - if (error.status === 422) { - app.log.info(`Branch ${BranchName} already exists`); - } else { - app.log.error(error); - } - } + } + + async function createBranch(context) { + // Step 1: Get reference to the default branch + let RefBranch = null; + try { + // Try to get the 'main' branch + RefBranch = await context.octokit.git.getRef({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + ref: 'heads/main', + }); + } catch (error) { + // If 'main' branch does not exist, try to get the 'master' branch + if (error.status === 404) { + RefBranch = await context.octokit.git.getRef({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + ref: 'heads/master', + }); + } else { + app.log.error(error); + } + } + + // Step 2: Create a new branch from the default branch + try { + await context.octokit.git.createRef({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + ref: `refs/heads/${BranchName}`, + sha: RefBranch.data.object.sha, + }); + } catch (error) { + if (error.status === 422) { + app.log.info(`Branch ${BranchName} already exists`); + } else { + app.log.error(error); } + } + } + async function getQuestionResponse(start, end, issue_body) { + app.log.info("Getting answers for question " + start + " to " + end); + let AnswerSelected = false; + let Answers = new Array(); + let Expression = end ? new RegExp(start + "\\. (.*" + end + "\\." + ")?", "s") : new RegExp(start + "\\. (.*" + ")?", "s"); + let QuestionOptions = issue_body.match(Expression)[0].match(/\[x\].*/g); + if(QuestionOptions){ + AnswerSelected = true; + QuestionOptions.forEach((option) => { + let cleanAnswer = option; + cleanAnswer = cleanAnswer.replace(/\[x\] /g, ""); + Answers.push(cleanAnswer); + }); + } + return AnswerSelected ? Answers : null; } // For more information on building apps: diff --git a/issue_template/copilot-usage-en.md b/issue_template/copilot-usage-en.md index 05c9e9f..17f4fc4 100644 --- a/issue_template/copilot-usage-en.md +++ b/issue_template/copilot-usage-en.md @@ -28,4 +28,11 @@ For Pull Request XXX: 5. ***What other information can you share about Copilot's ability to save you time coding?*** -- (Please tell us in a comment) \ No newline at end of file +- (Please tell us in a comment) + +6. ***Where did you invest your Copilot Time Savings?*** +- [ ] Resolve vulnerabilites +- [ ] Experiment + Learn and Wellness +- [ ] Technical debt and refactorization +- [ ] Work on other items in the backlog +- [ ] Other. Please explain in the comment \ No newline at end of file diff --git a/issue_template/copilot-usage-es.md b/issue_template/copilot-usage-es.md index 9cb96e8..bf7b4d0 100644 --- a/issue_template/copilot-usage-es.md +++ b/issue_template/copilot-usage-es.md @@ -28,4 +28,11 @@ Para el Pull Request XXX: 5. ***¿Qué otra información puedes compartir sobre la capacidad de Copilot para ahorrarte tiempo codificando?*** -- (Por favor díganos en un comentario) \ No newline at end of file +- (Por favor díganos en un comentario) + +6. ***¿En qué has invertido el tiempo ganado con Copilot?*** +- [ ] Resolver vulnerabilidades +- [ ] Experimentar + Aprender y Bienestar +- [ ] Reducir deuda técnica y/o refactorización +- [ ] Trabajar en otras tareas en el backlog +- [ ] Otros. Por favor explica en el comentario \ No newline at end of file diff --git a/issue_template/copilot-usage-fr.md b/issue_template/copilot-usage-fr.md index 86ff2e7..b1a7927 100644 --- a/issue_template/copilot-usage-fr.md +++ b/issue_template/copilot-usage-fr.md @@ -28,4 +28,11 @@ Pour le Pull Request XXX : 5. ***Quelles autres informations pouvez-vous partager sur la capacité de Copilot à vous faire gagner du temps en matière de codage ?*** -- (Merci de nous le dire dans un commentaire) \ No newline at end of file +- (Merci de nous le dire dans un commentaire) + +6. ***Qu'avez-vous investi dans le temps gagné avec Copilot ?*** +- [ ] Résoudre les vulnérabilités +- [ ] Expérience + Apprendre et/ou Bien-être +- [ ] Réduire la dette technique et/ou refactoring +- [ ] Travailler sur d'autres tâches dans le backlog +- [ ] Autres. Veuillez expliquer dans le commentaire \ No newline at end of file diff --git a/issue_template/copilot-usage-pt.md b/issue_template/copilot-usage-pt.md index f1878c2..0c1940f 100644 --- a/issue_template/copilot-usage-pt.md +++ b/issue_template/copilot-usage-pt.md @@ -23,9 +23,16 @@ Para o Pull Request XXX: 4. ***Com que frequência você usou o Copilot neste PR?*** - [ ] Todo ou a maior parte do tempo - [ ] Cerca de metade das vezes -- [] Algumas vezes +- [ ] Algumas vezes - [ ] Não muito 5. ***Que outras informações você pode compartilhar sobre a capacidade do Copilot de economizar seu tempo de codificação?*** -- (Por favor, conte-nos em um comentário) \ No newline at end of file +- (Por favor, conte-nos em um comentário) + +6. ***Quanto você investiu do tempo que ganhou com o Copilot?*** +- [ ] Resolver vulnerabilidades +- [ ] Experiência + Aprendizagem e Bem-estar +- [ ] Reduzir dívida técnica e/ou refatoração +- [ ] Trabalhar em outras tarefas do backlog +- [ ] Outros. Por favor, explique no comentário \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5ca9458..f7ec919 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,128 +24,57 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "devOptional": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "devOptional": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.17", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.17.tgz", - "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.17", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.17", - "@babel/types": "^7.22.17", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -159,30 +88,15 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -190,14 +104,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -205,72 +119,67 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.17", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz", - "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.15" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -280,88 +189,89 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "devOptional": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", - "devOptional": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -371,7 +281,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -383,7 +293,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -397,7 +307,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -406,13 +316,13 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.8.0" } @@ -421,7 +331,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -430,7 +340,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -439,9 +349,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -511,12 +421,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -613,12 +523,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -627,48 +537,35 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", - "optional": true, - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -676,13 +573,13 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -726,16 +623,16 @@ } }, "node_modules/@jest/console": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", - "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "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" }, "engines": { @@ -743,15 +640,15 @@ } }, "node_modules/@jest/core": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", - "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "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", @@ -759,21 +656,21 @@ "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" }, @@ -790,37 +687,37 @@ } }, "node_modules/@jest/environment": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", - "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", - "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "dependencies": { - "expect": "^29.6.4", - "jest-snapshot": "^29.6.4" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", - "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "dependencies": { "jest-get-type": "^29.6.3" @@ -830,47 +727,47 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", - "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", - "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", - "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "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": "*", @@ -884,9 +781,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", @@ -931,12 +828,12 @@ } }, "node_modules/@jest/test-result": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", - "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "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" @@ -946,14 +843,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", - "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "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" }, "engines": { @@ -961,9 +858,9 @@ } }, "node_modules/@jest/transform": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", - "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -974,9 +871,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", @@ -1004,47 +901,47 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1052,18 +949,17 @@ } }, "node_modules/@octokit/auth-app": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.9.tgz", - "integrity": "sha512-VFpKIXhHO+kVJtane5cEvdYPtjDKCOI0uKsRrsZfJP+uEu7rcPbQCLCcRKgyT+mUIzGr1IIOmwP/lFqSip1dXA==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", + "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", "dependencies": { "@octokit/auth-oauth-app": "^5.0.0", "@octokit/auth-oauth-user": "^2.0.0", "@octokit/request": "^6.0.0", "@octokit/request-error": "^3.0.0", "@octokit/types": "^9.0.0", - "@types/lru-cache": "^5.1.0", "deprecation": "^2.3.1", - "lru-cache": "^6.0.0", + "lru-cache": "^9.0.0", "universal-github-app-jwt": "^1.1.1", "universal-user-agent": "^6.0.0" }, @@ -1072,9 +968,9 @@ } }, "node_modules/@octokit/auth-app/node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1085,14 +981,14 @@ } }, "node_modules/@octokit/auth-app/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, "node_modules/@octokit/auth-app/node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1119,33 +1015,25 @@ } }, "node_modules/@octokit/auth-app/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-app/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", "engines": { - "node": ">=10" + "node": "14 || >=16.14" } }, - "node_modules/@octokit/auth-app/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@octokit/auth-oauth-app": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.5.tgz", - "integrity": "sha512-UPX1su6XpseaeLVCi78s9droxpGtBWIgz9XhXAx9VXabksoF0MyI5vaa1zo1njyYt6VaAjFisC2A2Wchcu2WmQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", + "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", "dependencies": { "@octokit/auth-oauth-device": "^4.0.0", "@octokit/auth-oauth-user": "^2.0.0", @@ -1160,9 +1048,9 @@ } }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1173,14 +1061,14 @@ } }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1207,17 +1095,17 @@ } }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-device": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.4.tgz", - "integrity": "sha512-Xl85BZYfqCMv+Uvz33nVVUjE7I/PVySNaK6dRRqlkvYcArSr9vRcZC9KVjXYObGRTCN6mISeYdakAZvWEN4+Jw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", + "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", "dependencies": { "@octokit/oauth-methods": "^2.0.0", "@octokit/request": "^6.0.0", @@ -1229,9 +1117,9 @@ } }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1242,14 +1130,14 @@ } }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1276,17 +1164,17 @@ } }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-user": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.1.tgz", - "integrity": "sha512-JgqnNNPf9CaWLxWm9uh2WgxcaVYhxBR09NVIPTiMU2dVZ3FObOHs3njBiLNw+zq84k+rEdm5Y7AsiASrZ84Apg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", + "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", "dependencies": { "@octokit/auth-oauth-device": "^4.0.0", "@octokit/oauth-methods": "^2.0.0", @@ -1300,9 +1188,9 @@ } }, "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1313,14 +1201,14 @@ } }, "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1347,11 +1235,11 @@ } }, "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-token": { @@ -1376,9 +1264,9 @@ } }, "node_modules/@octokit/auth-unauthenticated": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.4.tgz", - "integrity": "sha512-AT74XGBylcLr4lmUp1s6mjSUgphGdlse21Qjtv5DzpX1YOl5FXKwvNcZWESdhyBbpDT8VkVyLFqa/7a7eqpPNw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", + "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", "dependencies": { "@octokit/request-error": "^3.0.0", "@octokit/types": "^9.0.0" @@ -1388,9 +1276,9 @@ } }, "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/request-error": { "version": "3.0.3", @@ -1406,11 +1294,11 @@ } }, "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/core": { @@ -1495,9 +1383,9 @@ } }, "node_modules/@octokit/oauth-methods": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.5.tgz", - "integrity": "sha512-yQP6B5gE3axNxuM3U9KqWs/ErAQ+WLPaPgC/7EjsZsQibkf8sjdAfF8/y/EJW+Dd05XQvadX4WhQZPMnO1SE1A==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", + "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", "dependencies": { "@octokit/oauth-authorization-url": "^5.0.0", "@octokit/request": "^6.2.3", @@ -1510,9 +1398,9 @@ } }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1523,14 +1411,14 @@ } }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1557,11 +1445,11 @@ } }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/openapi-types": { @@ -1766,13 +1654,9 @@ "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" }, "node_modules/@probot/get-private-key": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.1.tgz", - "integrity": "sha512-hOmBNSAhSZc6PaNkTvj6CO9R5J67ODJ+w5XQlDW9w/6mtcpHWK4L+PZcW0YwVM7PpetLZjN6rsKQIR9yqIaWlA==", - "dependencies": { - "@types/is-base64": "^1.1.0", - "is-base64": "^1.1.0" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.2.tgz", + "integrity": "sha512-yVgyCdTyooGX6+czDLkJahEcwgBWZsKH9xbjvjDNVFjY3QtiI/tHRiB3zjgJCQMZehXxv2CFHZQSpWRXdr6CeQ==" }, "node_modules/@probot/octokit-plugin-config": { "version": "1.1.6", @@ -1903,9 +1787,9 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -1921,9 +1805,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -1934,18 +1818,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1953,40 +1837,40 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "node_modules/@types/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", + "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==" }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -1995,24 +1879,30 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, "node_modules/@types/ioredis": { "version": "4.28.10", "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", @@ -2021,69 +1911,55 @@ "@types/node": "*" } }, - "node_modules/@types/is-base64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/is-base64/-/is-base64-1.1.1.tgz", - "integrity": "sha512-JgnGhP+MeSHEQmvxcobcwPEP4Ew56voiq9/0hmP/41lyQ/3gBw/ZCIRy2v+QkEOdeCl58lRcrf6+Y6WMlJGETA==" - }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" - }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/node": { - "version": "18.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", - "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "optional": true, - "peer": true + "version": "20.14.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz", + "integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/pino": { "version": "6.3.12", @@ -2097,9 +1973,9 @@ } }, "node_modules/@types/pino-http": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@types/pino-http/-/pino-http-5.8.1.tgz", - "integrity": "sha512-A9MW6VCnx5ii7s+Fs5aFIw+aSZcBCpsZ/atpxamu8tTsvWFacxSf2Hrn1Ohn1jkVRB/LiPGOapRXcFawDBnDnA==", + "version": "5.8.4", + "resolved": "https://registry.npmjs.org/@types/pino-http/-/pino-http-5.8.4.tgz", + "integrity": "sha512-UTYBQ2acmJ2eK0w58vVtgZ9RAicFFndfrnWC1w5cBTf8zwn/HEy8O+H7psc03UZgTzHmlcuX8VkPRnRDEj+FUQ==", "dependencies": { "@types/pino": "6.3" } @@ -2123,43 +1999,53 @@ } }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dependencies": { - "@types/mime": "*", + "@types/mime": "^1", "@types/node": "*" } }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "node_modules/accepts": { @@ -2377,12 +2263,12 @@ } }, "node_modules/babel-jest": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", - "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "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", @@ -2429,15 +2315,6 @@ "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", @@ -2453,22 +2330,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "optional": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -2600,9 +2461,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "dev": true, "funding": [ { @@ -2619,10 +2480,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -2665,12 +2526,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2680,7 +2547,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } @@ -2695,9 +2562,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001532", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz", - "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "dev": true, "funding": [ { @@ -2740,9 +2607,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -2755,9 +2622,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/clean-stack": { @@ -2850,10 +2717,13 @@ } }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -2905,21 +2775,25 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "optional": true, - "peer": true, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@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" + }, + "bin": { + "create-jest": "bin/create-jest.js" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/cross-spawn": { @@ -2959,9 +2833,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { "ms": "2.1.2" }, @@ -2975,9 +2849,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -2995,6 +2869,22 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3063,14 +2953,14 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" } }, "node_modules/ecdsa-sig-formatter": { @@ -3087,9 +2977,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.515", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.515.tgz", - "integrity": "sha512-VTq6vjk3kCfG2qdzQRd/i9dIyVVm0dbtZIgFzrLgfB73mXDQT2HPKVRc1EoZcAVUv9XhXAu08DWqJuababdGGg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.1.tgz", + "integrity": "sha512-FKbOCOQ5QRB3VlIbl1LZQefWIYwszlBloaXcY2rbfpu9ioJnNh3TK03YtIDKDo3WKBi8u+YV4+Fn2CkEozgf4w==", "dev": true }, "node_modules/emittery": { @@ -3134,10 +3024,29 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -3218,16 +3127,16 @@ } }, "node_modules/expect": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", - "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.6.4", + "@jest/expect-utils": "^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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3299,6 +3208,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3352,9 +3262,9 @@ "dev": true }, "node_modules/fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "engines": { "node": ">=6" } @@ -3456,9 +3366,9 @@ } }, "node_modules/formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", "dev": true, "dependencies": { "dezalgo": "^1.0.4", @@ -3506,9 +3416,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -3529,13 +3442,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3566,6 +3484,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -3591,18 +3510,29 @@ "node": ">=4" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -3616,17 +3546,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3636,8 +3555,30 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.0.3", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { @@ -3647,6 +3588,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -3709,37 +3661,10 @@ "node": ">=0.10.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "optional": true, - "peer": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -3776,6 +3701,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3824,21 +3750,15 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, - "node_modules/is-base64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", - "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==", - "bin": { - "is_base64": "bin/is-base64", - "is-base64": "bin/is-base64" - } - }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3898,23 +3818,23 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", - "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -3922,6 +3842,18 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -3951,9 +3883,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -3964,15 +3896,15 @@ } }, "node_modules/jest": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", - "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "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" }, "bin": { "jest": "bin/jest.js" @@ -3990,57 +3922,42 @@ } }, "node_modules/jest-changed-files": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", - "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { "execa": "^5.0.0", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-circus": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", - "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "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" @@ -4049,38 +3966,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-cli": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", - "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "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" }, "bin": { @@ -4099,31 +4000,31 @@ } }, "node_modules/jest-config": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", - "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "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" }, @@ -4144,24 +4045,24 @@ } }, "node_modules/jest-diff": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz", - "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", - "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -4171,33 +4072,33 @@ } }, "node_modules/jest-each": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", - "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", - "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4213,9 +4114,9 @@ } }, "node_modules/jest-haste-map": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", - "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", @@ -4225,8 +4126,8 @@ "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" }, @@ -4238,37 +4139,37 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", - "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", - "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.6.4", + "jest-diff": "^29.7.0", "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", - "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", @@ -4277,7 +4178,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.6.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -4286,14 +4187,14 @@ } }, "node_modules/jest-mock": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", - "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.6.3" + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4326,17 +4227,17 @@ } }, "node_modules/jest-resolve": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", - "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "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" @@ -4346,43 +4247,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", - "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.6.4" + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", - "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "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" }, @@ -4390,33 +4291,18 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runtime": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", - "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "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", @@ -4424,13 +4310,13 @@ "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" }, @@ -4439,9 +4325,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", - "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -4449,30 +4335,42 @@ "@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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", - "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", @@ -4487,9 +4385,9 @@ } }, "node_modules/jest-validate": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", - "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", @@ -4497,7 +4395,7 @@ "chalk": "^4.0.0", "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4516,18 +4414,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", - "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "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" }, "engines": { @@ -4535,13 +4433,13 @@ } }, "node_modules/jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -4584,7 +4482,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "devOptional": true + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", @@ -4619,7 +4517,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "devOptional": true + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -4640,20 +4538,37 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dependencies": { "jws": "^3.2.2", - "lodash": "^4.17.21", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">=12", "npm": ">=6" } }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -4695,7 +4610,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "devOptional": true + "dev": true }, "node_modules/load-json-file": { "version": "5.3.0", @@ -4752,11 +4667,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -4767,11 +4677,46 @@ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, "node_modules/lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", @@ -4801,6 +4746,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -4838,12 +4795,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -4985,14 +4942,13 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/nock": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.3.tgz", - "integrity": "sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz", + "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==", "dev": true, "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", "propagate": "^2.0.0" }, "engines": { @@ -5000,9 +4956,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -5025,9 +4981,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/normalize-path": { @@ -5052,9 +5008,12 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5074,29 +5033,13 @@ } }, "node_modules/octokit-auth-probot/node_modules/@octokit/auth-token": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", - "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", - "dependencies": { - "@octokit/types": "^9.0.0" - }, + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", + "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", "engines": { "node": ">= 14" } }, - "node_modules/octokit-auth-probot/node_modules/@octokit/auth-token/node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "dependencies": { - "@octokit/openapi-types": "^16.0.0" - } - }, - "node_modules/octokit-auth-probot/node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -5141,14 +5084,15 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5166,6 +5110,21 @@ "node": ">=8" } }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", @@ -5182,24 +5141,11 @@ "node": ">=6" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "optional": true, - "peer": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5258,20 +5204,10 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -5357,9 +5293,9 @@ } }, "node_modules/pino-std-serializers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", - "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" }, "node_modules/pino/node_modules/pino-std-serializers": { "version": "3.2.0", @@ -5419,6 +5355,20 @@ "node": ">=6" } }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pkg-conf/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -5451,9 +5401,9 @@ } }, "node_modules/pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", @@ -5541,6 +5491,17 @@ "node": ">=10" } }, + "node_modules/probot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/probot/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -5600,9 +5561,9 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/pure-rand": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", - "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -5657,9 +5618,9 @@ } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/readable-stream": { @@ -5699,13 +5660,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "optional": true, - "peer": true - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5716,11 +5670,11 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5762,9 +5716,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, "node_modules/safe-buffer": { "version": "5.2.1", @@ -5791,35 +5745,14 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -5875,6 +5808,22 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -5902,13 +5851,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5936,15 +5889,15 @@ } }, "node_modules/smee-client": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-1.2.3.tgz", - "integrity": "sha512-uDrU8u9/Ln7aRXyzGHgVaNUS8onHZZeSwQjCdkMoSL7U85xI+l+Y2NgjibkMJAyXkW7IAbb8rw9RMHIjS6lAwA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-1.2.5.tgz", + "integrity": "sha512-Tv3AVvZD9sjEwBvsm1jc8to96FwmZMOYt5UL7qu3vAuA/3F/hqKe9gdRSlkvpRO4ttUAUrDKRpjM0vUnXZQhqA==", "dev": true, "dependencies": { - "commander": "^2.19.0", - "eventsource": "^1.1.0", + "commander": "^9.0.0", + "eventsource": "^2.0.0", "morgan": "^1.9.1", - "superagent": "^7.1.3", + "superagent": "^8.0.0", "validator": "^13.7.0" }, "bin": { @@ -5952,18 +5905,12 @@ } }, "node_modules/smee-client/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/smee-client/node_modules/eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": "^12.20.0 || >=14" } }, "node_modules/sonic-boom": { @@ -5993,9 +5940,9 @@ } }, "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { "node": ">= 10.x" } @@ -6107,22 +6054,22 @@ } }, "node_modules/superagent": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", - "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "dependencies": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", + "cookiejar": "^2.1.4", "debug": "^4.3.4", "fast-safe-stringify": "^2.1.1", "form-data": "^4.0.0", - "formidable": "^2.0.1", + "formidable": "^2.1.2", "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" }, "engines": { "node": ">=6.4.0 <13 || >=14" @@ -6140,6 +6087,18 @@ "node": ">=4.0.0" } }, + "node_modules/superagent/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6256,9 +6215,9 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz", + "integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -6267,19 +6226,24 @@ "node": ">=0.8.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/universal-github-app-jwt": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", - "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.2.tgz", + "integrity": "sha512-t1iB2FmLFE+yyJY9+3wMx0ejB+MQpEVkH0gQv7dR6FZyltyq+ZZO0uDpbopxhrZ3SLEO4dCEkIujOMldEQ2iOA==", "dependencies": { "@types/jsonwebtoken": "^9.0.0", - "jsonwebtoken": "^9.0.0" + "jsonwebtoken": "^9.0.2" } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" }, "node_modules/unpipe": { "version": "1.0.0", @@ -6290,9 +6254,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -6309,8 +6273,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -6349,29 +6313,23 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, "node_modules/validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "dev": true, "engines": { "node": ">= 0.10" @@ -6478,16 +6436,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "optional": true, - "peer": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/test/fixtures/issue_body.md b/test/fixtures/issue_body.md index 8e38163..3a3efd7 100644 --- a/test/fixtures/issue_body.md +++ b/test/fixtures/issue_body.md @@ -28,4 +28,11 @@ For Pull Request #44: 5. ***What other information can you share about Copilot's ability to save you time coding?*** -- (Please tell us in a comment) \ No newline at end of file +- (Please tell us in a comment) + +6. ***Where did you invest your Copilot Time Savings?*** +- [ ] Resolve vulnerabilites +- [ ] Experiment + Learn and Wellness +- [ ] Technical debt and refactorization +- [ ] Work on other items in the backlog +- [ ] Other. Please explain in the comment \ No newline at end of file diff --git a/test/fixtures/issue_comment.created.json b/test/fixtures/issue_comment.created.json index a18e420..2aa116a 100644 --- a/test/fixtures/issue_comment.created.json +++ b/test/fixtures/issue_comment.created.json @@ -49,7 +49,7 @@ "assignee": null, "assignees": [], "author_association": "NONE", - "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%)\n\n ***How much less time did the coding take during this PR with Copilot?***\n \n (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [ ] > 11% but < 20%\n- [x] > 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n \n - (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [ ] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n - (Please tell us in a comment)", + "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?***\n\n(Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [x] > 11% but < 20%\n- [ ] > 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n\n- (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [ ] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n- (Please tell us in a comment)\n\n6. ***Where did you invest your Copilot Time Savings?***\n- [x] Resolve vulnerabilites\n- [ ] Experiment + Learn and Wellness\n- [ ] Technical debt and refactorization\n- [ ] Work on other items in the backlog\n- [ ] Other. Please explain in the comment", "closed_at": null, "comments": 1, "comments_url": "https://api.github.com/repos/mageroni/TestRepo/issues/60/comments", diff --git a/test/fixtures/issues.edited.json b/test/fixtures/issues.edited.json index b1ee215..a6d8cff 100644 --- a/test/fixtures/issues.edited.json +++ b/test/fixtures/issues.edited.json @@ -1,16 +1,11 @@ { "action": "edited", - "changes": { - "body": { - "from": "### Encuesta sobre el uso de Copilot\n\nHey! 👋 Como parte de nuestros esfuerzos por mejorar continuamente nuestros procesos de DevOps, nos gustaría recopilar sus valiosos comentarios sobre su experiencia con Copilot para el Pull Request #37 a través de las siguientes preguntas:\n\n1. ¿Copilot ahorró tiempo o aumentó la productividad en el desarrollo de este componente?\n- [x] Si\n- [ ] No\n2. Si la respuesta 1 es Si, ¿De cuánto fue la mejora (5 %, 10 %, 20 %, 30 % o más)? \n- [ ] <5%\n- [ ] 5%-10%\n- [ ] 10%-20%\n- [ ] 20%-30%\n- [ ] >30%\n4. Si la respuesta 1 es No, Explique por qué en un comentario" - } - }, "issue": { "active_lock_reason": null, "assignee": null, "assignees": [], "author_association": "NONE", - "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%)\n\n ***How much less time did the coding take during this PR with Copilot?***\n \n (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [ ] > 11% but < 20%\n- [x] > 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n \n - (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [ ] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n - (Please tell us in a comment)", + "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?***\n\n(Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [x] > 11% but < 20%\n- [ ] > 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n\n- (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [x] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n- (Please tell us in a comment)\n\n6. ***Where did you invest your Copilot Time Savings?***\n- [x] Resolve vulnerabilites\n- [ ] Experiment + Learn and Wellness\n- [ ] Technical debt and refactorization\n- [ ] Work on other items in the backlog\n- [ ] Other. Please explain in the comment", "closed_at": "2023-03-19T01:12:10Z", "comments": 0, "comments_url": "https://api.github.com/repos/mageroni/TestRepo/issues/62/comments", @@ -41,7 +36,7 @@ "state": "closed", "state_reason": "completed", "timeline_url": "https://api.github.com/repos/mageroni/TestRepo/issues/62/timeline", - "title": "Copilot Usage - PR#37", + "title": "Copilot Usage - PR#44", "updated_at": "2023-03-19T03:39:06Z", "url": "https://api.github.com/repos/mageroni/TestRepo/issues/62", "user": { diff --git a/test/fixtures/pull_request.closed.json b/test/fixtures/pull_request.closed.json index 23a6911..13fbf00 100644 --- a/test/fixtures/pull_request.closed.json +++ b/test/fixtures/pull_request.closed.json @@ -5,7 +5,7 @@ "url": "https://api.github.com/repos/mageroni/TestRepo/pulls/44", "id": 1280983238, "number": 44, - "body":"This is a test pull request to see if language is being detected", + "body":"", "state": "closed", "user": { "login": "mageroni" diff --git a/test/index.test.js b/test/index.test.js index 37335fe..ab51219 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -53,8 +53,7 @@ describe("My Probot app", () => { issues: "write", }, }) - - // Test that a issue is created + // Test that an issue is created .post("/repos/mageroni/TestRepo/issues", (body) => { expect(body).toMatchObject(expected_issue); return true; @@ -67,7 +66,7 @@ describe("My Probot app", () => { expect(mock.pendingMocks()).toStrictEqual([]); }); - test("closes an issue after it's been completed - yes and percentage are added", async () => { + test("closes an issue after it's been completed", async () => { const mock = nock("https://api.github.com") // Test that we correctly return a test token .post("/app/installations/35217443/access_tokens") @@ -82,11 +81,21 @@ describe("My Probot app", () => { .reply(200, { "name": "results.csv", "path": "results.csv", - "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxjb21tZW50LGNyZWF0ZWRfYXQsY29tcGxldGVkX2F0CiwsVGVzdFJlcG8sMjAwMDA5NTYyNCwxNyw1LG1hZ2Vyb25pLDEsLCwsMjAyMy0xMS0xN1QyMzo1Mzo1MlosMjAyMy0xMS0xN1QyMzo1NDo0MloKLG1hZ2Vyb25pLFRlc3RSZXBvLDE2MzA2MzM4NzUsNjIsNDQsLDEsPiAyMSUgYnV0IDwgMzAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIz", + "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdCxjb21wbGV0ZWRfYXQKLCxUZXN0UmVwbywyMDAwMDk1NjI0LDE3LDUsbWFnZXJvbmksMSwsLCwyMDIzLTExLTE3VDIzOjUzOjUyWiwyMDIzLTExLTE3VDIzOjU0OjQyWgosbWFnZXJvbmksVGVzdFJlcG8sMTYzMDYzMzg3NSw2Miw0NCwsMSw+IDIxJSBidXQgPCAzMCUsQWxsIG9yIG1vc3Qgb2YgdGhlIHRpbWUsRXhwZXJpbWVudCArIExlYXJuIGFuZCBXZWxsbmVzcywsMjAyMy0wMy0xOFQyMjowMDozNFosMjAyMy0wMy0xOVQyMjowMDozNFo=", "sha": "d8a6e6d4f4f3f2f1f0", "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results", }) + .get("/repos/mageroni/TestRepo/git/ref/heads%2Fmain") + .reply(200, { + "object": { + "sha": "d8a6e6d4f4f3f2f1f0" + } + }) + + .post('/repos/mageroni/TestRepo/git/refs') + .reply(200) + .put('/repos/mageroni/TestRepo/contents/results.csv') .reply(200) @@ -118,10 +127,20 @@ describe("My Probot app", () => { "name": "results.csv", "path": "results.csv", "sha": "d8a6e6d4f4f3f2f1f0", - "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxjb21tZW50LGNyZWF0ZWRfYXQsY29tcGxldGVkX2F0CiwsVGVzdFJlcG8sMjAwMDA5NTYyNCwxNyw1LG1hZ2Vyb25pLDEsLCwsMjAyMy0xMS0xN1QyMzo1Mzo1MlosMjAyMy0xMS0xN1QyMzo1NDo0MloKLG1hZ2Vyb25pLFRlc3RSZXBvLDE2MzA2MzM4NzUsNjIsNDQsLDEsPiAyMSUgYnV0IDwgMzAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIz", + "content": "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdCxjb21wbGV0ZWRfYXQKLCxUZXN0UmVwbywyMDAwMDk1NjI0LDE3LDUsbWFnZXJvbmksMSwsLCwyMDIzLTExLTE3VDIzOjUzOjUyWiwyMDIzLTExLTE3VDIzOjU0OjQyWgosbWFnZXJvbmksVGVzdFJlcG8sMTYzMDYzMzg3NSw2Miw0NCwsMSw+IDIxJSBidXQgPCAzMCUsQWxsIG9yIG1vc3Qgb2YgdGhlIHRpbWUsRXhwZXJpbWVudCArIExlYXJuIGFuZCBXZWxsbmVzcywsMjAyMy0wMy0xOFQyMjowMDozNFosMjAyMy0wMy0xOVQyMjowMDozNFo=", "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results", }) + .get("/repos/mageroni/TestRepo/git/ref/heads%2Fmain") + .reply(200, { + "object": { + "sha": "d8a6e6d4f4f3f2f1f0" + } + }) + + .post('/repos/mageroni/TestRepo/git/refs') + .reply(200) + .put('/repos/mageroni/TestRepo/contents/results.csv') .reply(200) @@ -137,6 +156,50 @@ describe("My Probot app", () => { expect(mock.pendingMocks()).toStrictEqual([]); }); + test("updates results.csv record if issue id exists", async () => { + const initialContent = "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdCxjb21wbGV0ZWRfYXQKLCxUZXN0UmVwbywyMDAwMDk1NjI0LDE3LDUsbWFnZXJvbmksMSwsLCwyMDIzLTExLTE3VDIzOjUzOjUyWiwyMDIzLTExLTE3VDIzOjU0OjQyWgosbWFnZXJvbmksVGVzdFJlcG8sMTYzMDYzMzg3NSw2Miw0NCwsMSw+IDIxJSBidXQgPCAzMCUsQWxsIG9yIG1vc3Qgb2YgdGhlIHRpbWUsRXhwZXJpbWVudCArIExlYXJuIGFuZCBXZWxsbmVzcywsMjAyMy0wMy0xOFQyMjowMDozNFosMjAyMy0wMy0xOVQyMjowMDozNFo="; + const expectedContent = "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdAosLFRlc3RSZXBvLDIwMDAwOTU2MjQsMTcsNSxtYWdlcm9uaSwxLCwsLDIwMjMtMTEtMTdUMjM6NTM6NTJaLDIwMjMtMTEtMTdUMjM6NTQ6NDJaCixtYWdlcm9uaSxUZXN0UmVwbywxNjMwNjMzODc1LDYyLDQ0LCwxLD4gMTElIGJ1dCA8IDIwJSxBbGwgb3IgbW9zdCBvZiB0aGUgdGltZSB8fCBOb3QgdmVyeSBtdWNoLFJlc29sdmUgdnVsbmVyYWJpbGl0ZXMsLDIwMjMtMDMtMThUMjI6MDA6MzRaLDIwMjMtMDMtMTlUMDM6Mzk6MDZaCg=="; + const mock = nock("https://api.github.com") + // Test that we correctly return a test token + .post("/app/installations/35217443/access_tokens") + .reply(200, { + token: "test", + permissions: { + issues: "write", + }, + }) + + .get("/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results") + .reply(200, { + "name": "results.csv", + "path": "results.csv", + "content": initialContent, + "sha": "d8a6e6d4f4f3f2f1f0", + "url": "https://api.github.com/repos/mageroni/TestRepo/contents/results.csv?ref=copilot-survey-engine-results", + }) + + .get("/repos/mageroni/TestRepo/git/ref/heads%2Fmain") + .reply(200, { + "object": { + "sha": "d8a6e6d4f4f3f2f1f0" + } + }) + + .post('/repos/mageroni/TestRepo/git/refs') + .reply(200) + + .put('/repos/mageroni/TestRepo/contents/results.csv', (body) => { + expect(body.content).toBe(expectedContent); + return true; + }) + .reply(200); + + // Receive a webhook event + await probot.receive({ name: "issues", payload : payload_issues_edited }); + + expect(mock.pendingMocks()).toStrictEqual([]); + }); + afterEach(() => { nock.cleanAll(); nock.enableNetConnect(); From 4c11cec4f9f565ff5621be4b455e751d7be57a89 Mon Sep 17 00:00:00 2001 From: mageroni <107436170+mageroni@users.noreply.github.com> Date: Fri, 26 Jul 2024 19:20:47 -0500 Subject: [PATCH 6/6] Improving Readme and non-English Language support --- .env.example | 6 +++-- README.md | 30 ++++++++++++++--------- image-1.png | Bin 0 -> 132119 bytes image-2.png | Bin 0 -> 77848 bytes index.js | 2 +- issue_template/copilot-usage-en.md | 4 +-- issue_template/copilot-usage-es.md | 8 +++--- issue_template/copilot-usage-fr.md | 4 +-- issue_template/copilot-usage-pt.md | 4 +-- test/fixtures/issue_body.md | 4 +-- test/fixtures/issue_comment.created.json | 2 +- test/fixtures/issues.edited.json | 2 +- test/index.test.js | 4 +-- 13 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 image-1.png create mode 100644 image-2.png diff --git a/.env.example b/.env.example index 76c8d8f..4efffc7 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,9 @@ -# The ID of your GitHub App +# Required. Details about your GitHub App APP_ID= PRIVATE_KEY= WEBHOOK_SECRET=development +# Optional. Language to be used for the bot. If empty, it will default to English +BOT_LANGUAGE=en -# Use `trace` to get verbose logging or `info` to show less +# Optional. Use `trace` to get verbose logging or `info` to show less LOG_LEVEL=debug \ No newline at end of file diff --git a/README.md b/README.md index f0fbb2a..11eafcb 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ As more companies adopt GitHub Copilot, it becomes increasingly important to mea Quantitative feedback from the Developer at the time of creating a PR provides valuable insights on the time savings experienced by the Developer. Time savings is needed first before other downstream impacts like velocity increases, or other improvements can happen. The level of granularity provides multiple feedback opportunities for Developers and can capture a variety of PRs so we can understand adoption challenges and improvement opportunities. If helpful, the Survey results may also be combined with Key Performance Indicators (KPIs) that the product provides to further contextualize the survey responses. -The survey responses are stored in a file called results.csv in a new branch "copilot-survey-engine-results" to provide insights into how developers are using the tool, the value they report, and the challenges they encounter. +The survey responses are stored in a file called **results.csv** in the **copilot-survey-engine-results** branch to provide insights into how developers are using the tool, the value they report, and the challenges they encounter. We hope that this project provides value to your organization, and we encourage you to contribute and build upon it. Your contributions can help further enhance the survey capabilities and provide even greater insights into the developer experience with Copilot. @@ -18,14 +18,14 @@ The application actively monitors three key events: the closure of a pull reques ### How a survey gets created -When a pull request is closed, the app automatically creates an issue that prompts the user with relevant survey questions. Our application is equipped to handle multiple languages, including English, Spanish, Portuguese, and French. For this, the engine performs a language analysis on the pull request description, matching it with the appropriate language when generating the corresponding issue. +When a pull request is closed, the app automatically creates an issue that prompts the user with relevant survey questions. Our application is equipped to handle multiple languages, including English, Spanish, Portuguese, and French. Selection will be made according to the `BOT_LANGUAGE` value in the .env file. -Note: *If the env file does not contain a Language API Key or Endpoint, the analysis will be skipped and the default language will always be English.* +> **Note**: *If the env file does not contain a value for `BOT_LANGUAGE` the default language will always be English.* ### Sample screenshot of a survey ### Copilot Usage Survey -1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5*** +1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)*** - [ ] No - [ ] Yes @@ -36,8 +36,8 @@ Note: *If the env file does not contain a Language API Key or Endpoint, the anal (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%) - [ ] 0% - [ ] > 0% but < 10% -- [ ] > 11% but < 20% -- [ ] > 21% but < 30% +- [ ] ≥ 11% but < 20% +- [ ] ≥ 21% but < 30% - [ ] ≥ 31% but < 40% - [ ] ≥ 41% @@ -62,9 +62,9 @@ Note: *If the env file does not contain a Language API Key or Endpoint, the anal - [ ] Work on other items in the backlog - [ ] Other. Please explain in the comment -### Where does the app store surveys? +### Where does the app store survey results? -As we receive edits on the issue, the App will validate the responses received (options selected) and once all questions have been answered, the issue will be closed automatically and the responses will be saved into a results.csv file in the same repo in which the issue was created. +As we receive edits on the issue, the App will validate the responses received (options selected) and once all questions have been answered, the issue will be closed automatically and the responses will be saved into a results.csv file in the same repo in which the issue was created on a new branch called *copilot-survey-engine-results*. ## Setup. Deploy on your own environment @@ -75,7 +75,7 @@ The web server is the minimum requirement for this app to work and can be hosted ### Step 1. Execute locally and configure secrets -To run the application on you local machine you'll need to have installed NodeJS. Once you have it, you can access to the folder where you've cloned this project and run the following: +To run the application on you local machine you'll need to have installed [NodeJS](https://nodejs.org/). Once you have it, you can access to the folder where you've cloned this project and run the following: ```sh # Install dependencies @@ -85,11 +85,19 @@ npm install npm start ``` -As a first time execution probot will prompt you for creating a new GitHub App or connect it with an existing App. As you complete the requested information, a .env file will get created in your local source code and all the private information regarding your GitHub App will be automatically written there. If you need guidance on how to configure your first GitHub App, please review this guide https://probot.github.io/docs/development/#configuring-a-github-app. +Once the service is running, you will see a listening endpoint in your terminal. Please follow the link, and you will find a screen like the following image. + +![Alt text](image-1.png) + +As a first time execution probot is prompting you for creating a new GitHub App or connect it with an existing GitHub App. As you complete the requested information, a .env file will get created in your local source code and all the private information regarding your GitHub App will be automatically written there. If you need guidance on how to configure your first GitHub App, please review this guide https://probot.github.io/docs/development/#configuring-a-github-app. + +> **Note**: Make sure to delete the `WEBHOOK_PROXY_URL` value from the env file and confirm that all details regarding the GitHub App are correct. ### Step 3. Deploy your App! -Once you have your source code deployed in the web server or hosting platform of your choosing, finally go to your GitHub App and update your webhook URL to reflect your Web Server URL. +Once you have your source code deployed in the web server or hosting platform of your choosing, finally go to your GitHub App General settings and update your webhook URL to reflect your Web Server URL. + +![Alt text](image-2.png) ### Step 4. Test your App! diff --git a/image-1.png b/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c324bdfc579370710fdec297e6bd0dd07086a189 GIT binary patch literal 132119 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 &n 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�>&%zKNz^;yK+^O{ZPJW`3K<-lfYt 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 { let pr_number = context.payload.pull_request.number; let pr_author = context.payload.pull_request.user.login; let organization_name = context.payload.repository.owner.login; - let detectedLanguage = "en"; + let detectedLanguage = process.env.BOT_LANGUAGE ? process.env.BOT_LANGUAGE : "en"; // read file that aligns with detected language const issue_body = fs.readFileSync( diff --git a/issue_template/copilot-usage-en.md b/issue_template/copilot-usage-en.md index 17f4fc4..939b04a 100644 --- a/issue_template/copilot-usage-en.md +++ b/issue_template/copilot-usage-en.md @@ -11,8 +11,8 @@ For Pull Request XXX: (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%) - [ ] 0% - [ ] > 0% but < 10% -- [ ] > 11% but < 20% -- [ ] > 21% but < 30% +- [ ] ≥ 11% but < 20% +- [ ] ≥ 21% but < 30% - [ ] ≥ 31% but < 40% - [ ] ≥ 41% diff --git a/issue_template/copilot-usage-es.md b/issue_template/copilot-usage-es.md index bf7b4d0..dfb1b39 100644 --- a/issue_template/copilot-usage-es.md +++ b/issue_template/copilot-usage-es.md @@ -2,7 +2,7 @@ Para el Pull Request XXX: -1. *** ¿Utilizó Copilot para desarrollar este PR? (Si selecciona No, simplemente responda la pregunta 5)*** +1. ***¿Utilizó Copilot para desarrollar este PR? (Si selecciona No, simplemente responda la pregunta 5)*** - [ ] No - [ ] Si @@ -11,8 +11,8 @@ Para el Pull Request XXX: (Ejemplo: el PR normalmente tomaría 5 días, pero solo tomó 4 días con Copilot, entonces la respuesta es 20%) - [ ] 0% - [ ] > 0% pero < 10% -- [ ] > 11% pero < 20% -- [ ] > 21% pero < 30% +- [ ] ≥ 11% pero < 20% +- [ ] ≥ 21% pero < 30% - [ ] ≥ 31% pero < 40% - [ ] ≥ 41% @@ -22,7 +22,7 @@ Para el Pull Request XXX: 4. ***¿Con qué frecuencia usaste Copilot en este PR?*** - [ ] Todo o la mayor parte del tiempo -- [] Aproximadamente la mitad del tiempo +- [ ] Aproximadamente la mitad del tiempo - [ ] Algo de tiempo - [ ] No mucho diff --git a/issue_template/copilot-usage-fr.md b/issue_template/copilot-usage-fr.md index b1a7927..124ff28 100644 --- a/issue_template/copilot-usage-fr.md +++ b/issue_template/copilot-usage-fr.md @@ -11,8 +11,8 @@ Pour le Pull Request XXX : (Exemple : le PR prendrait normalement 5 jours, mais n'a pris que 4 jours avec Copilot alors la réponse est 20 %) - [ ] 0% - [ ] > 0 % mais < 10 % -- [ ] > 11 % mais < 20 % -- [ ] > 21 % mais < 30 % +- [ ] ≥ 11 % mais < 20 % +- [ ] ≥ 21 % mais < 30 % - [ ] ≥ 31 % mais < 40 % - [ ] ≥ 41% diff --git a/issue_template/copilot-usage-pt.md b/issue_template/copilot-usage-pt.md index 0c1940f..c42408f 100644 --- a/issue_template/copilot-usage-pt.md +++ b/issue_template/copilot-usage-pt.md @@ -11,8 +11,8 @@ Para o Pull Request XXX: (Exemplo: o PR normalmente levaria 5 dias, mas demorou apenas 4 dias com o Copilot, então a resposta é 20%) - [ ] 0% - [ ] > 0% mas < 10% -- [ ] > 11% mas < 20% -- [ ] > 21% mas < 30% +- [ ] ≥ 11% mas < 20% +- [ ] ≥ 21% mas < 30% - [ ] ≥ 31% mas < 40% - [ ] ≥ 41% diff --git a/test/fixtures/issue_body.md b/test/fixtures/issue_body.md index 3a3efd7..731662b 100644 --- a/test/fixtures/issue_body.md +++ b/test/fixtures/issue_body.md @@ -11,8 +11,8 @@ For Pull Request #44: (Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%) - [ ] 0% - [ ] > 0% but < 10% -- [ ] > 11% but < 20% -- [ ] > 21% but < 30% +- [ ] ≥ 11% but < 20% +- [ ] ≥ 21% but < 30% - [ ] ≥ 31% but < 40% - [ ] ≥ 41% diff --git a/test/fixtures/issue_comment.created.json b/test/fixtures/issue_comment.created.json index 2aa116a..3d82406 100644 --- a/test/fixtures/issue_comment.created.json +++ b/test/fixtures/issue_comment.created.json @@ -49,7 +49,7 @@ "assignee": null, "assignees": [], "author_association": "NONE", - "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?***\n\n(Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [x] > 11% but < 20%\n- [ ] > 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n\n- (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [ ] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n- (Please tell us in a comment)\n\n6. ***Where did you invest your Copilot Time Savings?***\n- [x] Resolve vulnerabilites\n- [ ] Experiment + Learn and Wellness\n- [ ] Technical debt and refactorization\n- [ ] Work on other items in the backlog\n- [ ] Other. Please explain in the comment", + "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?***\n\n(Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [x] ≥ 11% but < 20%\n- [ ] ≥ 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n\n- (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [ ] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n- (Please tell us in a comment)\n\n6. ***Where did you invest your Copilot Time Savings?***\n- [x] Resolve vulnerabilites\n- [ ] Experiment + Learn and Wellness\n- [ ] Technical debt and refactorization\n- [ ] Work on other items in the backlog\n- [ ] Other. Please explain in the comment", "closed_at": null, "comments": 1, "comments_url": "https://api.github.com/repos/mageroni/TestRepo/issues/60/comments", diff --git a/test/fixtures/issues.edited.json b/test/fixtures/issues.edited.json index a6d8cff..7b0063c 100644 --- a/test/fixtures/issues.edited.json +++ b/test/fixtures/issues.edited.json @@ -5,7 +5,7 @@ "assignee": null, "assignees": [], "author_association": "NONE", - "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?***\n\n(Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [x] > 11% but < 20%\n- [ ] > 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n\n- (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [x] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n- (Please tell us in a comment)\n\n6. ***Where did you invest your Copilot Time Savings?***\n- [x] Resolve vulnerabilites\n- [ ] Experiment + Learn and Wellness\n- [ ] Technical debt and refactorization\n- [ ] Work on other items in the backlog\n- [ ] Other. Please explain in the comment", + "body": "### Copilot Usage Survey\n\nFor Pull Request #44:\n\n1. ***Did you use Copilot in developing this PR? (If you select No, just answer question 5)***\n- [ ] No\n- [x] Yes\n\n2. Compared to your previous experience coding WITHOUT using Copilot (This number represents 100%) ***How much less time did the coding take during this PR with Copilot?***\n\n(Example: The PR would normally take 5 days, but only took 4 days with Copilot then the answer is 20%)\n- [ ] 0%\n- [ ] > 0% but < 10%\n- [x] ≥ 11% but < 20%\n- [ ] ≥ 21% but < 30%\n- [ ] ≥ 31% but < 40%\n- [ ] ≥ 41%\n\n3. ***Describe your thought process for calculating (or estimating) the time saved in Question 2***\n\n- (Please tell us in a comment)\n\n4. ***How often did you use Copilot in this PR?***\n- [x] All or most of the time\n- [ ] About Half of the time\n- [ ] Some of the time\n- [x] Not very much\n\n5. ***What other information can you share about Copilot's ability to save you time coding?*** \n\n- (Please tell us in a comment)\n\n6. ***Where did you invest your Copilot Time Savings?***\n- [x] Resolve vulnerabilites\n- [ ] Experiment + Learn and Wellness\n- [ ] Technical debt and refactorization\n- [ ] Work on other items in the backlog\n- [ ] Other. Please explain in the comment", "closed_at": "2023-03-19T01:12:10Z", "comments": 0, "comments_url": "https://api.github.com/repos/mageroni/TestRepo/issues/62/comments", diff --git a/test/index.test.js b/test/index.test.js index ab51219..9694db5 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -157,8 +157,8 @@ describe("My Probot app", () => { }); test("updates results.csv record if issue id exists", async () => { - const initialContent = "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdCxjb21wbGV0ZWRfYXQKLCxUZXN0UmVwbywyMDAwMDk1NjI0LDE3LDUsbWFnZXJvbmksMSwsLCwyMDIzLTExLTE3VDIzOjUzOjUyWiwyMDIzLTExLTE3VDIzOjU0OjQyWgosbWFnZXJvbmksVGVzdFJlcG8sMTYzMDYzMzg3NSw2Miw0NCwsMSw+IDIxJSBidXQgPCAzMCUsQWxsIG9yIG1vc3Qgb2YgdGhlIHRpbWUsRXhwZXJpbWVudCArIExlYXJuIGFuZCBXZWxsbmVzcywsMjAyMy0wMy0xOFQyMjowMDozNFosMjAyMy0wMy0xOVQyMjowMDozNFo="; - const expectedContent = "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdAosLFRlc3RSZXBvLDIwMDAwOTU2MjQsMTcsNSxtYWdlcm9uaSwxLCwsLDIwMjMtMTEtMTdUMjM6NTM6NTJaLDIwMjMtMTEtMTdUMjM6NTQ6NDJaCixtYWdlcm9uaSxUZXN0UmVwbywxNjMwNjMzODc1LDYyLDQ0LCwxLD4gMTElIGJ1dCA8IDIwJSxBbGwgb3IgbW9zdCBvZiB0aGUgdGltZSB8fCBOb3QgdmVyeSBtdWNoLFJlc29sdmUgdnVsbmVyYWJpbGl0ZXMsLDIwMjMtMDMtMThUMjI6MDA6MzRaLDIwMjMtMDMtMTlUMDM6Mzk6MDZaCg=="; + const initialContent = "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdCxjb21wbGV0ZWRfYXQKLCxUZXN0UmVwbywyMDAwMDk1NjI0LDE3LDUsbWFnZXJvbmksMSwsLCwyMDIzLTExLTE3VDIzOjUzOjUyWiwyMDIzLTExLTE3VDIzOjU0OjQyWgosbWFnZXJvbmksVGVzdFJlcG8sMTYzMDYzMzg3NSw2Miw0NCwsMSziiaUgMjElIGJ1dCA8IDMwJSxBbGwgb3IgbW9zdCBvZiB0aGUgdGltZSxFeHBlcmltZW50ICsgTGVhcm4gYW5kIFdlbGxuZXNzLCwyMDIzLTAzLTE4VDIyOjAwOjM0WiwyMDIzLTAzLTE5VDIyOjAwOjM0Wg=="; + const expectedContent = "ZW50ZXJwcmlzZV9uYW1lLG9yZ2FuaXphdGlvbl9uYW1lLHJlcG9zaXRvcnlfbmFtZSxpc3N1ZV9pZCxpc3N1ZV9udW1iZXIsUFJfbnVtYmVyLGFzc2lnbmVlX25hbWUsaXNfY29waWxvdF91c2VkLHNhdmluZ19wZXJjZW50YWdlLHVzYWdlX2ZyZXF1ZW5jeSxzYXZpbmdzX2ludmVzdGVkLGNvbW1lbnQsY3JlYXRlZF9hdAosLFRlc3RSZXBvLDIwMDAwOTU2MjQsMTcsNSxtYWdlcm9uaSwxLCwsLDIwMjMtMTEtMTdUMjM6NTM6NTJaLDIwMjMtMTEtMTdUMjM6NTQ6NDJaCixtYWdlcm9uaSxUZXN0UmVwbywxNjMwNjMzODc1LDYyLDQ0LCwxLOKJpSAxMSUgYnV0IDwgMjAlLEFsbCBvciBtb3N0IG9mIHRoZSB0aW1lIHx8IE5vdCB2ZXJ5IG11Y2gsUmVzb2x2ZSB2dWxuZXJhYmlsaXRlcywsMjAyMy0wMy0xOFQyMjowMDozNFosMjAyMy0wMy0xOVQwMzozOTowNloK"; const mock = nock("https://api.github.com") // Test that we correctly return a test token .post("/app/installations/35217443/access_tokens")