From 7a1336820534685a1afdfcd693bc06c3e5a851d7 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Wed, 2 Aug 2023 11:25:28 +0700 Subject: [PATCH 01/46] style: styling indent space --- src/index.ts | 228 +++++++++++++++++++++++++-------------------------- 1 file changed, 114 insertions(+), 114 deletions(-) diff --git a/src/index.ts b/src/index.ts index 2209d6d..7bc0f23 100644 --- a/src/index.ts +++ b/src/index.ts @@ -782,132 +782,132 @@ module.exports = (app: Probot) => { if (context.payload.comment.user.type == "User") { switch (context.payload.issue.user.type) { case "User": - // Merge pull request - if (context.payload.comment.body.toLowerCase() == "ready to merge") { - if (context.payload.issue.user.login == context.payload.comment.user.login) { - let i: number; - for (i = 0; i < context.payload.issue.labels.length; i++) { - if (context.payload.issue.labels[i].name == "Approved") { - console.log("Merging"); - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` - }) - ); - break; - } else if (context.payload.issue.labels[i].name == "Requested Changes") { - console.log('PRs Blocked'); - await context.octokit.issues.createComment( - context.issue({ - body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` - }) - ); - break; - } else { - continue; - } + // Merge pull request + if (context.payload.comment.body.toLowerCase() == "ready to merge") { + if (context.payload.issue.user.login == context.payload.comment.user.login) { + let i: number; + for (i = 0; i < context.payload.issue.labels.length; i++) { + if (context.payload.issue.labels[i].name == "Approved") { + console.log("Merging"); + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by ${context.payload.comment.user.login}!` + }) + ); + break; + } else if (context.payload.issue.labels[i].name == "Requested Changes") { + console.log('PRs Blocked'); + await context.octokit.issues.createComment( + context.issue({ + body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` + }) + ); + break; + } else { + continue; } - } else { - return; } + } else { + return; } + } - if (context.payload.comment.body.toLowerCase() == "merge") { - if (context.payload.sender.login == context.payload.repository.owner.login) { - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.removeLabel( - context.issue({ - name: 'Pending' - }) - ); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by \`[OWNER]\`${context.payload.comment.user.login}!` - }) - ); - await context.octokit.issues.addLabels( - context.issue({ - labels: ['Owner Merge'] - }) - ); - } else { - return; - } + if (context.payload.comment.body.toLowerCase() == "merge") { + if (context.payload.sender.login == context.payload.repository.owner.login) { + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by \`[OWNER]\`${context.payload.comment.user.login}!` + }) + ); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Owner Merge'] + }) + ); + } else { + return; } + } break; case "Bot": - // Merge pull request - if (context.payload.comment.body.toLowerCase() == "ready to merge") { - if (context.payload.issue.user.login == context.payload.comment.user.login) { - let i: number; - for (i = 0; i < context.payload.issue.labels.length; i++) { - if (context.payload.issue.labels[i].name == "Approved") { - console.log("Merging"); - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` - }) - ); - break; - } else if (context.payload.issue.labels[i].name == "Requested Changes") { - console.log('PRs Blocked'); - await context.octokit.issues.createComment( - context.issue({ - body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` - }) - ); - break; - } else { - continue; - } + // Merge pull request + if (context.payload.comment.body.toLowerCase() == "ready to merge") { + if (context.payload.issue.user.login == context.payload.comment.user.login) { + let i: number; + for (i = 0; i < context.payload.issue.labels.length; i++) { + if (context.payload.issue.labels[i].name == "Approved") { + console.log("Merging"); + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by ${context.payload.comment.user.login}!` + }) + ); + break; + } else if (context.payload.issue.labels[i].name == "Requested Changes") { + console.log('PRs Blocked'); + await context.octokit.issues.createComment( + context.issue({ + body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` + }) + ); + break; + } else { + continue; } - } else { - return; } + } else { + return; } + } - if (context.payload.comment.body.toLowerCase() == "merge") { - if (context.payload.sender.login == context.payload.repository.owner.login) { - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` - }) - ); - } else { - return; - } + if (context.payload.comment.body.toLowerCase() == "merge") { + if (context.payload.sender.login == context.payload.repository.owner.login) { + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by ${context.payload.comment.user.login}!` + }) + ); + } else { + return; } + } break; default: break; From 9688068ee332967cd056fd33b3987d234f3f0a8b Mon Sep 17 00:00:00 2001 From: Muunatic Date: Wed, 2 Aug 2023 11:36:38 +0700 Subject: [PATCH 02/46] chore: change repository path --- src/index.ts | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/index.ts b/src/index.ts index 7bc0f23..7359e78 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,11 +22,7 @@ const octokit = new Octokit({ module.exports = (app: Probot) => { app.on("push", async (context) => { - let event1: string; - let event2: string; - let event3: string; - let event4: string; - let event5: string; + let event1: string, event2: string, event3: string, event4: string, event5: string; async function userActivity() { const arrayActivity: getUserData = {"userData": []}; await fetch('https://api.github.com/users/Muunatic/events/public', { @@ -193,9 +189,9 @@ module.exports = (app: Probot) => { app.on("pull_request.opened", async (context) => { if (context.payload.sender.type == "User") { if (context.payload.sender.login != context.payload.repository.owner.login) { - if (context.payload.repository.html_url == "https://github.com/Muunatic/github-AutoResponse") { + if (context.payload.repository.html_url == "https://github.com/Typeslint/github-AutoResponse") { await context.octokit.pulls.listFiles({ - owner: 'Muunatic', + owner: 'Typeslint', repo: 'github-AutoResponse', pull_number: context.payload.number }).then((res) => { @@ -215,13 +211,13 @@ module.exports = (app: Probot) => { ); let shaRef: string; await octokit.rest.pulls.get({ - owner: 'Muunatic', + owner: 'Typeslint', repo: 'github-AutoResponse', pull_number: context.payload.number }).then(async (res) => { shaRef = res.data.head.sha; await octokit.rest.repos.getContent({ - owner: 'Muunatic', + owner: 'Typeslint', repo: 'github-AutoResponse', ref: shaRef, path: "tsconfig.json" @@ -586,16 +582,16 @@ module.exports = (app: Probot) => { // re-requested reviewer app.on("pull_request.synchronize", async (context) => { if (context.payload.pull_request.user.type == "User") { - if (context.payload.repository.homepage == "https://github.com/Muunatic/github-AutoResponse") { + if (context.payload.repository.homepage == "https://github.com/Typeslint/github-AutoResponse") { let shaRef: string; await octokit.rest.pulls.get({ - owner: 'Muunatic', + owner: 'Typeslint', repo: 'github-AutoResponse', pull_number: context.payload.number }).then(async (res) => { shaRef = res.data.head.sha; await octokit.rest.repos.getContent({ - owner: 'Muunatic', + owner: 'Typeslint', repo: 'github-AutoResponse', ref: shaRef, path: "tsconfig.json" From 5c1f8e2cc71b90ad2c1cc8bcfc468cfa4cf23baf Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 7 Aug 2023 09:13:48 +0700 Subject: [PATCH 03/46] feat: allow member to merge pull requests --- src/index.ts | 259 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 215 insertions(+), 44 deletions(-) diff --git a/src/index.ts b/src/index.ts index 7359e78..4be856f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -328,7 +328,87 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: ``, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Approved' + }) + ); + console.log('Label removed'); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Requested Changes'] + }) + ); + console.log('PRs Requested Changes'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } else { + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Requested Changes'] + }) + ); + console.log('PRs Requested Changes'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } + } + } else if (context.payload.pull_request.author_association == "MEMBER" || context.payload.pull_request.author_association == "COLLABORATOR") { + if (context.payload.review.state == "approved") { + await context.octokit.pulls.createReview({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.pull_request.number, + body: `@${context.payload.pull_request.user.login} your pull request has been approved by \`[MAINTAINER]\`@${context.payload.review.user.login}, please type \`Ready to merge\` for merging`, + event: "COMMENT" + }); + if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Requested Changes' + }) + ); + console.log('Label removed'); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Approved'] + }) + ); + console.log('PRs Approved'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } else { + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Approved'] + }) + ); + console.log('PRs Approved'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } + } else if (context.payload.review.state == "changes_requested") { + await context.octokit.pulls.createReview({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.pull_request.number, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { @@ -370,7 +450,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, even though please wait for the \`CODEOWNERS\` to review`, + body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, even though please wait for the \`MAINTAINERS\`/\`CODEOWNERS\` to review`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { @@ -434,7 +514,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} Pull request has been approved by @${context.payload.review.user.login}, please type \`Merge\` for merging @${context.payload.review.user.login}`, + body: `@${context.payload.pull_request.user.login} Pull request has been approved by \`[OWNER]\`@${context.payload.review.user.login}, please type \`Merge\` for merging @${context.payload.review.user.login}`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { @@ -473,7 +553,87 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by @${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, + body: `@${context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Approved' + }) + ); + console.log('Label removed'); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Requested Changes'] + }) + ); + console.log('PRs Requested Changes'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } else { + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Requested Changes'] + }) + ); + console.log('PRs Requested Changes'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } + } + } else if (context.payload.pull_request.author_association == "MEMBER" || context.payload.pull_request.author_association == "COLLABORATOR") { + if (context.payload.review.state == "approved") { + await context.octokit.pulls.createReview({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.pull_request.number, + body: `@${context.payload.pull_request.user.login} Pull request has been approved by \`[MAINTAINER]\`@${context.payload.review.user.login}, please type \`Merge\` for merging @${context.payload.review.user.login}`, + event: "COMMENT" + }); + if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Requested Changes' + }) + ); + console.log('Label removed'); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Approved'] + }) + ); + console.log('PRs Approved'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } else { + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Approved'] + }) + ); + console.log('PRs Approved'); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + } + } else if (context.payload.review.state == "changes_requested") { + await context.octokit.pulls.createReview({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.pull_request.number, + body: `Pull request has requested changes by \`[MAINTAINER]\`@${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { @@ -515,7 +675,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, even though please wait for the \`CODEOWNERS\` to review`, + body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, even though please wait for the \`MAINTAINERS\`/\`CODEOWNERS\` to review`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { @@ -554,7 +714,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by repository contributor @${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, + body: `@${context.payload.pull_request.user.login} your pull request has requested changes by @${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); await context.octokit.issues.addLabels( @@ -841,6 +1001,25 @@ module.exports = (app: Probot) => { labels: ['Owner Merge'] }) ); + } else if (context.payload.issue.author_association === "MEMBER" || context.payload.issue.author_association === "COLLABORATOR") { + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by \`[MAINTAINER]\`${context.payload.comment.user.login}!` + }) + ); } else { return; } @@ -848,43 +1027,6 @@ module.exports = (app: Probot) => { break; case "Bot": // Merge pull request - if (context.payload.comment.body.toLowerCase() == "ready to merge") { - if (context.payload.issue.user.login == context.payload.comment.user.login) { - let i: number; - for (i = 0; i < context.payload.issue.labels.length; i++) { - if (context.payload.issue.labels[i].name == "Approved") { - console.log("Merging"); - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` - }) - ); - break; - } else if (context.payload.issue.labels[i].name == "Requested Changes") { - console.log('PRs Blocked'); - await context.octokit.issues.createComment( - context.issue({ - body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` - }) - ); - break; - } else { - continue; - } - } - } else { - return; - } - } - if (context.payload.comment.body.toLowerCase() == "merge") { if (context.payload.sender.login == context.payload.repository.owner.login) { await context.octokit.pulls.merge({ @@ -895,9 +1037,38 @@ module.exports = (app: Probot) => { commit_message: context.payload.issue.title }); console.log("Merged!"); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by \`[OWNER]\`${context.payload.comment.user.login}!` + }) + ); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Owner Merge'] + }) + ); + } else if (context.payload.issue.author_association === "MEMBER" || context.payload.issue.author_association === "COLLABORATOR") { + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.removeLabel( + context.issue({ + name: 'Pending' + }) + ); await context.octokit.issues.createComment( context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` + body: `Merged by \`[MAINTAINER]\`${context.payload.comment.user.login}!` }) ); } else { From 886126dba7ab401b4a2ddae51a685c8946e6a552 Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Sun, 20 Aug 2023 14:40:57 +0700 Subject: [PATCH 04/46] chore: Adjust label for proper case sensitivity --- src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 4be856f..fdf4d65 100644 --- a/src/index.ts +++ b/src/index.ts @@ -157,7 +157,7 @@ module.exports = (app: Probot) => { console.log('Issues closed'); await context.octokit.issues.addLabels( context.issue({ - labels: ['closed', 'Invalid'] + labels: ['Closed', 'Invalid'] }) ); await context.octokit.issues.removeLabel( @@ -173,7 +173,7 @@ module.exports = (app: Probot) => { console.log('Issues closed'); await context.octokit.issues.addLabels( context.issue({ - labels: ['closed'] + labels: ['Closed'] }) ); await context.octokit.issues.removeLabel( From 094d5c644189cdfaeae8dd7fd6a4122b4c8d70da Mon Sep 17 00:00:00 2001 From: Muunatic Date: Tue, 22 Aug 2023 13:07:48 +0700 Subject: [PATCH 05/46] feat: implement automated stale label for inactive pull requests --- src/index.ts | 147 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 141 insertions(+), 6 deletions(-) diff --git a/src/index.ts b/src/index.ts index fdf4d65..8500ecc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -191,8 +191,8 @@ module.exports = (app: Probot) => { if (context.payload.sender.login != context.payload.repository.owner.login) { if (context.payload.repository.html_url == "https://github.com/Typeslint/github-AutoResponse") { await context.octokit.pulls.listFiles({ - owner: 'Typeslint', - repo: 'github-AutoResponse', + owner: "Typeslint", + repo: "github-AutoResponse", pull_number: context.payload.number }).then((res) => { return res.data; @@ -211,14 +211,14 @@ module.exports = (app: Probot) => { ); let shaRef: string; await octokit.rest.pulls.get({ - owner: 'Typeslint', - repo: 'github-AutoResponse', + owner: "Typeslint", + repo: "github-AutoResponse", pull_number: context.payload.number }).then(async (res) => { shaRef = res.data.head.sha; await octokit.rest.repos.getContent({ - owner: 'Typeslint', - repo: 'github-AutoResponse', + owner: "Typeslint", + repo: "github-AutoResponse", ref: shaRef, path: "tsconfig.json" }).then(async (res) => { @@ -1084,4 +1084,139 @@ module.exports = (app: Probot) => { } }); + // Stale PRs + setInterval(async () => { + octokit.rest.repos.listForUser({ + username: "Muunatic", + type: "owner" + }).then(async (res) => { + for (let i = 0; i < res.data.length; i++) { + if (res.data[i].fork === false) { + octokit.rest.pulls.list({ + owner: res.data[i].owner.login, + repo: res.data[i].name + }).then(async (res) => { + for (let i = 0; i < res.data.length; i++) { + const currentRepo = res.data[i].base.repo.name; + const currentOwner = res.data[i].base.repo.owner.login; + const currentPRs = res.data[i].number; + if (res.data[i].state.toLowerCase() == "open" && res.data[i].draft == false) { + if (res.data[i].user?.type.toLowerCase() == "user") { + octokit.rest.pulls.listCommits({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs + }).then((res) => { + const currentDate = new Date(); + const createdAt = new Date(res.data[res.data.length - 1].commit.author?.date as string); + const staleDate = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); + const closeDate = new Date(createdAt.getTime() + 30 * 24 * 60 * 60 * 1000); + if (currentDate > staleDate) { + if (currentDate > closeDate) { + octokit.rest.pulls.update({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs, + state: "closed" + }).then(async (res) => { + if (res.data.labels.find((a) => a.name == "Stale")) { + const prsReviewers: string[] = []; + octokit.rest.pulls.listReviewComments({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + pull_number: res.data.number + }).then(async (res) => { + if (res.data.length !== 0) { + for (let i = 0; i < res.data.length; i++) { + prsReviewers.push("@" + res.data[i].user?.login); + } + } else { + prsReviewers.push("@Muunatic"); + } + }); + await octokit.rest.issues.addLabels({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + labels: ["Closed"] + }); + await octokit.rest.issues.removeLabel({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + name: "Pending" + }); + await octokit.rest.issues.createComment({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + body: `Hello @${res.data.user.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` + }); + octokit.rest.issues.lock({ + owner: currentOwner, + repo: currentRepo, + issue_number: currentPRs, + lock_reason: "resolved" + }); + } else { + return; + } + }); + } else { + octokit.rest.pulls.get({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs + }).then(async (res) => { + if (res.data.labels.find((a) => a.name != "Stale")) { + const prsReviewers: string[] = []; + octokit.rest.pulls.listReviewComments({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + pull_number: res.data.number + }).then(async (res) => { + if (res.data.length !== 0) { + for (let i = 0; i < res.data.length; i++) { + prsReviewers.push("@" + res.data[i].user?.login); + } + } else { + prsReviewers.push("@Muunatic"); + } + }); + await octokit.rest.issues.addLabels({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + labels: ["Closed"] + }); + await octokit.rest.issues.createComment({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + body: `Hello @${res.data.user.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` + }); + } else { + return; + } + }); + } + } else { + return; + } + }); + } else { + continue; + } + } else { + continue; + } + } + }); + } else { + continue; + } + } + }); + }, 3600000); + }; From 93c117ef7eec524bc7a4f7e4289ce3f8933f5c41 Mon Sep 17 00:00:00 2001 From: wakame Date: Tue, 22 Aug 2023 15:28:47 +0700 Subject: [PATCH 06/46] chore: remove unused method Co-authored-by: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> --- src/index.ts | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8500ecc..68723b3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1120,20 +1120,6 @@ module.exports = (app: Probot) => { state: "closed" }).then(async (res) => { if (res.data.labels.find((a) => a.name == "Stale")) { - const prsReviewers: string[] = []; - octokit.rest.pulls.listReviewComments({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - pull_number: res.data.number - }).then(async (res) => { - if (res.data.length !== 0) { - for (let i = 0; i < res.data.length; i++) { - prsReviewers.push("@" + res.data[i].user?.login); - } - } else { - prsReviewers.push("@Muunatic"); - } - }); await octokit.rest.issues.addLabels({ owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, From de1bd6de602c221ebde211bc36525d532f44e15b Mon Sep 17 00:00:00 2001 From: Muunatic Date: Tue, 22 Aug 2023 15:35:31 +0700 Subject: [PATCH 07/46] chore: correct label assignment --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 68723b3..1179153 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1173,7 +1173,7 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - labels: ["Closed"] + labels: ["Stale"] }); await octokit.rest.issues.createComment({ owner: res.data.base.repo.owner.login, From ccbf57a36c71570b8df6a950ea2018a39ad21427 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Thu, 24 Aug 2023 12:41:10 +0700 Subject: [PATCH 08/46] fix: fix stale statement condition --- src/index.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/index.ts b/src/index.ts index 1179153..e974722 100644 --- a/src/index.ts +++ b/src/index.ts @@ -133,7 +133,7 @@ module.exports = (app: Probot) => { // Issues opened app.on("issues.opened", async (context) => { - if (context.payload.sender.login === 'Muunatic') return; + if (context.payload.sender.login === "Muunatic") return; const username = context.payload.sender.login; const issueComment = context.issue({ body: `Hello @${username} Thank you for submitting Issue, please wait for next notification after we review your Issue.` @@ -745,14 +745,14 @@ module.exports = (app: Probot) => { if (context.payload.repository.homepage == "https://github.com/Typeslint/github-AutoResponse") { let shaRef: string; await octokit.rest.pulls.get({ - owner: 'Typeslint', - repo: 'github-AutoResponse', + owner: "Typeslint", + repo: "github-AutoResponse", pull_number: context.payload.number }).then(async (res) => { shaRef = res.data.head.sha; await octokit.rest.repos.getContent({ - owner: 'Typeslint', - repo: 'github-AutoResponse', + owner: "Typeslint", + repo: "github-AutoResponse", ref: shaRef, path: "tsconfig.json" }).then(async (res) => { @@ -1136,7 +1136,7 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - body: `Hello @${res.data.user.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` + body: `Hello @${res.data.user?.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` }); octokit.rest.issues.lock({ owner: currentOwner, @@ -1154,7 +1154,9 @@ module.exports = (app: Probot) => { repo: currentRepo, pull_number: currentPRs }).then(async (res) => { - if (res.data.labels.find((a) => a.name != "Stale")) { + if (res.data.labels.find((a) => a.name == "Stale")) { + return; + } else { const prsReviewers: string[] = []; octokit.rest.pulls.listReviewComments({ owner: res.data.base.repo.owner.login, @@ -1179,10 +1181,8 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - body: `Hello @${res.data.user.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` + body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` }); - } else { - return; } }); } From d606dde330f13e786af2240fde8b749f7397d76f Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 28 Aug 2023 16:04:36 +0700 Subject: [PATCH 09/46] feat: implement pull request mergeability check --- src/index.ts | 82 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/src/index.ts b/src/index.ts index e974722..8273e24 100644 --- a/src/index.ts +++ b/src/index.ts @@ -940,40 +940,60 @@ module.exports = (app: Probot) => { case "User": // Merge pull request if (context.payload.comment.body.toLowerCase() == "ready to merge") { - if (context.payload.issue.user.login == context.payload.comment.user.login) { - let i: number; - for (i = 0; i < context.payload.issue.labels.length; i++) { - if (context.payload.issue.labels[i].name == "Approved") { - console.log("Merging"); - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` - }) - ); - break; - } else if (context.payload.issue.labels[i].name == "Requested Changes") { - console.log('PRs Blocked'); - await context.octokit.issues.createComment( - context.issue({ - body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` - }) - ); - break; + context.octokit.pulls.get({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number + }).then(async (res) => { + if (res.data.mergeable_state.toLowerCase() == "clean" || res.data.mergeable == true) { + if (context.payload.issue.user.login == context.payload.comment.user.login) { + let i: number; + for (i = 0; i < context.payload.issue.labels.length; i++) { + if (context.payload.issue.labels[i].name == "Approved") { + console.log("Merging"); + await context.octokit.pulls.merge({ + repo: context.payload.repository.name, + owner: context.payload.repository.owner.login, + pull_number: context.payload.issue.number, + commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, + commit_message: context.payload.issue.title + }); + console.log("Merged!"); + await context.octokit.issues.createComment( + context.issue({ + body: `Merged by ${context.payload.comment.user.login}!` + }) + ); + break; + } else if (context.payload.issue.labels[i].name == "Requested Changes") { + console.log("PRs Blocked"); + await context.octokit.issues.createComment( + context.issue({ + body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` + }) + ); + break; + } else { + continue; + } + } } else { - continue; + return; } + } else if (res.data.mergeable_state.toLowerCase() == "dirty" || res.data.mergeable == false) { + await context.octokit.issues.createComment( + context.issue({ + body: `Merging blocked because PRs has merge conflict! @${context.payload.comment.user.login}` + }) + ); + } else if (res.data.mergeable == null) { + await context.octokit.issues.createComment( + context.issue({ + body: `give reply from automaton that github automaton can't proceed merging commit, please wait for any minute before attempting to merge it again.` + }) + ); } - } else { - return; - } + }); } if (context.payload.comment.body.toLowerCase() == "merge") { From 8644d8c907123d37b7df555dabbb7de76491e22a Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 18 Sep 2023 19:18:31 +0700 Subject: [PATCH 10/46] refactor: avoid no-misused-promises --- src/index.ts | 230 ++++++++++++++++++++++++++------------------------- 1 file changed, 116 insertions(+), 114 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8273e24..9e29392 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import fetch from "node-fetch"; +import fetch, { Response } from "node-fetch"; import { Probot } from "probot"; import { Octokit } from "octokit"; import { createAppAuth } from "@octokit/auth-app"; @@ -32,7 +32,7 @@ module.exports = (app: Probot) => { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token } - }).then((res) => { + }).then((res: Response) => { return res.json(); }).then((res: [getEvent]) => { let i: number; @@ -842,7 +842,7 @@ module.exports = (app: Probot) => { issue_number: context.payload.pull_request.number }).then(async (res) => { if (res.data.find(a => a.name == "Requested Changes")) { - context.octokit.issues.removeLabel( + await context.octokit.issues.removeLabel( context.issue({ name: 'Requested Changes' }) @@ -940,7 +940,7 @@ module.exports = (app: Probot) => { case "User": // Merge pull request if (context.payload.comment.body.toLowerCase() == "ready to merge") { - context.octokit.pulls.get({ + await context.octokit.pulls.get({ repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.issue.number @@ -1105,123 +1105,125 @@ module.exports = (app: Probot) => { }); // Stale PRs - setInterval(async () => { - octokit.rest.repos.listForUser({ - username: "Muunatic", - type: "owner" - }).then(async (res) => { - for (let i = 0; i < res.data.length; i++) { - if (res.data[i].fork === false) { - octokit.rest.pulls.list({ - owner: res.data[i].owner.login, - repo: res.data[i].name - }).then(async (res) => { - for (let i = 0; i < res.data.length; i++) { - const currentRepo = res.data[i].base.repo.name; - const currentOwner = res.data[i].base.repo.owner.login; - const currentPRs = res.data[i].number; - if (res.data[i].state.toLowerCase() == "open" && res.data[i].draft == false) { - if (res.data[i].user?.type.toLowerCase() == "user") { - octokit.rest.pulls.listCommits({ - owner: currentOwner, - repo: currentRepo, - pull_number: currentPRs - }).then((res) => { - const currentDate = new Date(); - const createdAt = new Date(res.data[res.data.length - 1].commit.author?.date as string); - const staleDate = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); - const closeDate = new Date(createdAt.getTime() + 30 * 24 * 60 * 60 * 1000); - if (currentDate > staleDate) { - if (currentDate > closeDate) { - octokit.rest.pulls.update({ - owner: currentOwner, - repo: currentRepo, - pull_number: currentPRs, - state: "closed" - }).then(async (res) => { - if (res.data.labels.find((a) => a.name == "Stale")) { - await octokit.rest.issues.addLabels({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - labels: ["Closed"] - }); - await octokit.rest.issues.removeLabel({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - name: "Pending" - }); - await octokit.rest.issues.createComment({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` - }); - octokit.rest.issues.lock({ - owner: currentOwner, - repo: currentRepo, - issue_number: currentPRs, - lock_reason: "resolved" - }); - } else { - return; - } - }); - } else { - octokit.rest.pulls.get({ - owner: currentOwner, - repo: currentRepo, - pull_number: currentPRs - }).then(async (res) => { - if (res.data.labels.find((a) => a.name == "Stale")) { - return; - } else { - const prsReviewers: string[] = []; - octokit.rest.pulls.listReviewComments({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - pull_number: res.data.number - }).then(async (res) => { - if (res.data.length !== 0) { - for (let i = 0; i < res.data.length; i++) { - prsReviewers.push("@" + res.data[i].user?.login); + setInterval(() => { + (async () => { + await octokit.rest.repos.listForUser({ + username: "Muunatic", + type: "owner" + }).then(async (res) => { + for (let i = 0; i < res.data.length; i++) { + if (res.data[i].fork === false) { + await octokit.rest.pulls.list({ + owner: res.data[i].owner.login, + repo: res.data[i].name + }).then(async (res) => { + for (let i = 0; i < res.data.length; i++) { + const currentRepo = res.data[i].base.repo.name; + const currentOwner = res.data[i].base.repo.owner.login; + const currentPRs = res.data[i].number; + if (res.data[i].state.toLowerCase() == "open" && res.data[i].draft == false) { + if (res.data[i].user?.type.toLowerCase() == "user") { + await octokit.rest.pulls.listCommits({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs + }).then(async (res) => { + const currentDate = new Date(); + const createdAt = new Date(res.data[res.data.length - 1].commit.author?.date as string); + const staleDate = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); + const closeDate = new Date(createdAt.getTime() + 30 * 24 * 60 * 60 * 1000); + if (currentDate > staleDate) { + if (currentDate > closeDate) { + await octokit.rest.pulls.update({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs, + state: "closed" + }).then(async (res) => { + if (res.data.labels.find((a) => a.name == "Stale")) { + await octokit.rest.issues.addLabels({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + labels: ["Closed"] + }); + await octokit.rest.issues.removeLabel({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + name: "Pending" + }); + await octokit.rest.issues.createComment({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + body: `Hello @${res.data.user?.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` + }); + await octokit.rest.issues.lock({ + owner: currentOwner, + repo: currentRepo, + issue_number: currentPRs, + lock_reason: "resolved" + }); + } else { + return; + } + }); + } else { + await octokit.rest.pulls.get({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs + }).then(async (res) => { + if (res.data.labels.find((a) => a.name == "Stale")) { + return; + } else { + const prsReviewers: string[] = []; + await octokit.rest.pulls.listReviewComments({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + pull_number: res.data.number + }).then((res) => { + if (res.data.length !== 0) { + for (let i = 0; i < res.data.length; i++) { + prsReviewers.push("@" + res.data[i].user?.login); + } + } else { + prsReviewers.push("@Muunatic"); } - } else { - prsReviewers.push("@Muunatic"); - } - }); - await octokit.rest.issues.addLabels({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - labels: ["Stale"] - }); - await octokit.rest.issues.createComment({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` - }); - } - }); + }); + await octokit.rest.issues.addLabels({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + labels: ["Stale"] + }); + await octokit.rest.issues.createComment({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` + }); + } + }); + } + } else { + return; } - } else { - return; - } - }); + }); + } else { + continue; + } } else { continue; } - } else { - continue; } - } - }); - } else { - continue; + }); + } else { + continue; + } } - } + }); }); }, 3600000); From f59e0c355ddde7618a2a9d45c0162c8d700e2073 Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Fri, 29 Sep 2023 13:06:41 +0700 Subject: [PATCH 11/46] chore: Add error interface --- src/structures/listener.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/structures/listener.ts b/src/structures/listener.ts index 772e564..0fbc821 100644 --- a/src/structures/listener.ts +++ b/src/structures/listener.ts @@ -1,11 +1,11 @@ -process.on('unhandledRejection', (error) => { +process.on('unhandledRejection', (error: Error): void => { console.error('Unhandled Promise Rejection:', error); }); -process.on('uncaughtException', (error) => { +process.on('uncaughtException', (error: Error): void => { console.error('uncaughtException:', error); }); -process.on('uncaughtExceptionMonitor', (error) => { +process.on('uncaughtExceptionMonitor', (error: Error): void => { console.error('uncaughtExceptionMonitor:', error); }); From c5c20b0037ffd68cb3f4fe06bb5dbdbe6786724c Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Sun, 8 Oct 2023 15:47:24 +0700 Subject: [PATCH 12/46] chore: Adjust reply context --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 9e29392..7f4f821 100644 --- a/src/index.ts +++ b/src/index.ts @@ -989,7 +989,7 @@ module.exports = (app: Probot) => { } else if (res.data.mergeable == null) { await context.octokit.issues.createComment( context.issue({ - body: `give reply from automaton that github automaton can't proceed merging commit, please wait for any minute before attempting to merge it again.` + body: `We apologize for the inconvenience, but it seems that Automaton processes are currently unable to proceed with merging your commit. Please wait for a moment and try merging it again.` }) ); } From ab06dae4f9367ccbf98d45acb32356b69b0e3cdb Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 9 Oct 2023 22:09:44 +0700 Subject: [PATCH 13/46] build(CI): update node and npm version --- .github/workflows/lint.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9ff50f3..dbb048b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,7 +11,7 @@ jobs: runs-on: windows-latest strategy: matrix: - node-version: [16.19.0] + node-version: [16.20.2] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} @@ -19,7 +19,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: install npm - run: npm install npm@8.19.3 -g + run: npm install npm@8.19.4 -g - name: install dependencies run: npm ci - name: run lint From c286de9a8fb33671c5c167a7a4ac19cc81960a87 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Fri, 13 Oct 2023 16:53:00 +0700 Subject: [PATCH 14/46] test(linter): extends recommended-type-checked and add linter rules --- .eslintrc.json | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 2d92331..dda4956 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -5,27 +5,39 @@ }, "extends": [ "eslint:recommended", - "plugin:@typescript-eslint/recommended" + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-type-checked" ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 12, - "sourceType": "module" + "sourceType": "module", + "project": true }, "plugins": [ "@typescript-eslint" ], "rules": { - "eol-last": ["warn", "always"], - "semi-style": ["warn", "last"], - "semi": 2, + "brace-style": ["warn", "1tbs"], + "camelcase": ["warn", { + "properties": "never", + "ignoreImports": true + }], "comma-dangle": ["error", "never"], "comma-style": ["warn", "last"], + "eol-last": ["warn", "always"], + "indent": ["warn", 4, { + "SwitchCase": 1 + }], + "keyword-spacing": ["warn", { + "after": true, + "before": true + }], "no-unused-vars": 1, - "no-trailing-spaces": 1, "no-useless-escape": 0, - "@typescript-eslint/no-require-imports": 2, - "@typescript-eslint/no-var-requires": 0, + "no-trailing-spaces": 1, + "semi": "error", + "semi-style": ["warn", "last"], "@typescript-eslint/member-delimiter-style": ["warn", { "multiline": { "delimiter": "semi", @@ -36,6 +48,8 @@ "requireLast": false }, "multilineDetection": "brackets" - }] - } + }], + "@typescript-eslint/no-var-requires": 0 + }, + "ignorePatterns": ["dist/*.js", "dist/**/*.js"] } From d142950987ea0cb750e21785ad86ffc7549eca19 Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Sun, 15 Oct 2023 16:31:27 +0700 Subject: [PATCH 15/46] fix: Add reply outside core dir --- src/index.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 7f4f821..3ca5b36 100644 --- a/src/index.ts +++ b/src/index.ts @@ -244,7 +244,17 @@ module.exports = (app: Probot) => { }); }); } else { - return; + const username = context.payload.sender.login; + const propened = context.issue({ + body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` + }); + console.log('Pull request opened'); + await context.octokit.issues.createComment(propened); + await context.octokit.issues.addLabels( + context.issue({ + labels: ['Pending'] + }) + ); } }); } else { From ffc6334b683fa967430b3ceca175d208637e629a Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 23 Oct 2023 22:23:44 +0700 Subject: [PATCH 16/46] chore(tsconfig): add pretty to compilerOptions --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index ebbc37e..b8b9db1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,7 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, + "pretty": true, "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": false, From 43e3a05c93f765482377c01da075026f072c5c99 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Thu, 26 Oct 2023 20:37:49 +0700 Subject: [PATCH 17/46] docs: change author name --- LICENSE | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index c728f79..be3ce51 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ ISC License -Copyright (c) 2021, Muunatic <125534A11B63B1FC> +Copyright (c) 2021, Typeslint Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/README.md b/README.md index 72505f4..b274206 100644 --- a/README.md +++ b/README.md @@ -30,4 +30,4 @@ For more, check out the [Contributing Guide](CONTRIBUTING.md). ## License -[ISC](LICENSE) © 2021 Muunatic +[ISC](LICENSE) © 2021 Typeslint From 4080d964c35201988c21393c61742c49faafe24b Mon Sep 17 00:00:00 2001 From: Muunatic Date: Tue, 31 Oct 2023 12:45:36 +0700 Subject: [PATCH 18/46] chore: ignore dist directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b3d906d..5587554 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ npm-debug.log .env coverage lib +dist From 948283cea3ac254264e2916592a56dba7f42161f Mon Sep 17 00:00:00 2001 From: Muunatic Date: Fri, 3 Nov 2023 14:17:01 +0700 Subject: [PATCH 19/46] build(DOCKERFILE): change run script --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 331437e..72c9355 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ FROM node:18 -WORKDIR /usr/src/app +WORKDIR /app COPY package.json package-lock.json ./ -RUN npm ci --production +RUN npm ci RUN npm cache clean --force ENV NODE_ENV="production" COPY . . -CMD [ "npm", "start" ] +CMD [ "npm", "run", "build:start" ] From 07d901f3e89fbedac658ff8417e66b3a0d209e31 Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Fri, 3 Nov 2023 22:55:26 +0700 Subject: [PATCH 20/46] feat(API)!: Replace fetch with Node.js 18 module --- src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 3ca5b36..eef6c91 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ -import fetch, { Response } from "node-fetch"; import { Probot } from "probot"; import { Octokit } from "octokit"; import { createAppAuth } from "@octokit/auth-app"; From e34cc4e0257e8306665f42424b158c1637ce710c Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 6 Nov 2023 13:39:09 +0700 Subject: [PATCH 21/46] style: change quotes to double quote --- src/index.ts | 265 +++++++++++++++++++------------------ src/structures/listener.ts | 12 +- 2 files changed, 139 insertions(+), 138 deletions(-) diff --git a/src/index.ts b/src/index.ts index eef6c91..d16857c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +// import fetch, { Response } from "node-fetch"; import { Probot } from "probot"; import { Octokit } from "octokit"; import { createAppAuth } from "@octokit/auth-app"; @@ -24,12 +25,12 @@ module.exports = (app: Probot) => { let event1: string, event2: string, event3: string, event4: string, event5: string; async function userActivity() { const arrayActivity: getUserData = {"userData": []}; - await fetch('https://api.github.com/users/Muunatic/events/public', { - method: 'GET', + await fetch("https://api.github.com/users/Muunatic/events/public", { + method: "GET", headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': 'Bearer ' + token + "Accept": "application/json", + "Content-Type": "application/json", + "Authorization": "Bearer " + token } }).then((res: Response) => { return res.json(); @@ -137,10 +138,10 @@ module.exports = (app: Probot) => { const issueComment = context.issue({ body: `Hello @${username} Thank you for submitting Issue, please wait for next notification after we review your Issue.` }); - console.log('Issues created'); + console.log("Issues created"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Pending'] + labels: ["Pending"] }) ); await context.octokit.issues.createComment(issueComment); @@ -153,15 +154,15 @@ module.exports = (app: Probot) => { const issueClosed = context.issue({ body: `Issue closed as invalid by @${username}.` }); - console.log('Issues closed'); + console.log("Issues closed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Closed', 'Invalid'] + labels: ["Closed", "Invalid"] }) ); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); await context.octokit.issues.createComment(issueClosed); @@ -169,15 +170,15 @@ module.exports = (app: Probot) => { const issueClosed = context.issue({ body: `Issue closed by @${username}.` }); - console.log('Issues closed'); + console.log("Issues closed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Closed'] + labels: ["Closed"] }) ); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); await context.octokit.issues.createComment(issueClosed); @@ -201,11 +202,11 @@ module.exports = (app: Probot) => { const propened = context.issue({ body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` }); - console.log('Pull request opened'); + console.log("Pull request opened"); await context.octokit.issues.createComment(propened); await context.octokit.issues.addLabels( context.issue({ - labels: ['Pending', 'Core'] + labels: ["Pending", "Core"] }) ); let shaRef: string; @@ -224,12 +225,12 @@ module.exports = (app: Probot) => { if ("content" in res.data) { const textContent:string = res.data.content; const decodeContent:string = Buffer.from(textContent, "base64").toString("utf-8"); - if (decodeContent.includes('"noImplicitAny": true') && decodeContent.includes('"noImplicitThis": true') && decodeContent.includes('"strictFunctionTypes": true') && decodeContent.includes('"strictNullChecks": true')) { + if (decodeContent.includes("\"noImplicitAny\": true") && decodeContent.includes("\"noImplicitThis\": true") && decodeContent.includes("\"strictFunctionTypes\": true") && decodeContent.includes("\"strictNullChecks\": true")) { return; } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Config Invalid'] + labels: ["Config Invalid"] }) ); const configInvalid = context.issue({ @@ -247,11 +248,11 @@ module.exports = (app: Probot) => { const propened = context.issue({ body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` }); - console.log('Pull request opened'); + console.log("Pull request opened"); await context.octokit.issues.createComment(propened); await context.octokit.issues.addLabels( context.issue({ - labels: ['Pending'] + labels: ["Pending"] }) ); } @@ -261,11 +262,11 @@ module.exports = (app: Probot) => { const propened = context.issue({ body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` }); - console.log('Pull request opened'); + console.log("Pull request opened"); await context.octokit.issues.createComment(propened); await context.octokit.issues.addLabels( context.issue({ - labels: ['Pending'] + labels: ["Pending"] }) ); } @@ -273,11 +274,11 @@ module.exports = (app: Probot) => { const propened = context.issue({ body: `PRs by \`[OWNER]\`${context.payload.pull_request.user.login}!` }); - console.log('Pull request opened'); + console.log("Pull request opened"); await context.octokit.issues.createComment(propened); await context.octokit.issues.addLabels( context.issue({ - labels: ['Pending'] + labels: ["Pending"] }) ); } @@ -304,31 +305,31 @@ module.exports = (app: Probot) => { if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -337,37 +338,37 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Approved' + name: "Approved" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -384,31 +385,31 @@ module.exports = (app: Probot) => { if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -417,37 +418,37 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Approved' + name: "Approved" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -465,31 +466,31 @@ module.exports = (app: Probot) => { if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Others Approved'] + labels: ["Others Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Others Approved'] + labels: ["Others Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -498,18 +499,18 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -529,31 +530,31 @@ module.exports = (app: Probot) => { if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -562,37 +563,37 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, + body: `@${context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${context.payload.review.user.login}. Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Approved' + name: "Approved" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -609,31 +610,31 @@ module.exports = (app: Probot) => { if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Approved'] + labels: ["Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -642,37 +643,37 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by \`[MAINTAINER]\`@${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I'm merging this PR, thanks!`, + body: `Pull request has requested changes by \`[MAINTAINER]\`@${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Approved' + name: "Approved" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -690,31 +691,31 @@ module.exports = (app: Probot) => { if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); - console.log('Label removed'); + console.log("Label removed"); await context.octokit.issues.addLabels( context.issue({ - labels: ['Others Approved'] + labels: ["Others Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } else { await context.octokit.issues.addLabels( context.issue({ - labels: ['Others Approved'] + labels: ["Others Approved"] }) ); - console.log('PRs Approved'); + console.log("PRs Approved"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -723,18 +724,18 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by @${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, + body: `@${context.payload.pull_request.user.login} your pull request has requested changes by @${context.payload.review.user.login}. Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); await context.octokit.issues.addLabels( context.issue({ - labels: ['Requested Changes'] + labels: ["Requested Changes"] }) ); - console.log('PRs Requested Changes'); + console.log("PRs Requested Changes"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); } @@ -768,7 +769,7 @@ module.exports = (app: Probot) => { if ("content" in res.data) { const textContent:string = res.data.content; const decodeContent:string = Buffer.from(textContent, "base64").toString("utf-8"); - if (decodeContent.includes('"noImplicitAny": true') && decodeContent.includes('"noImplicitThis": true') && decodeContent.includes('"strictFunctionTypes": true') && decodeContent.includes('"strictNullChecks": true')) { + if (decodeContent.includes("\"noImplicitAny\": true") && decodeContent.includes("\"noImplicitThis\": true") && decodeContent.includes("\"strictFunctionTypes\": true") && decodeContent.includes("\"strictNullChecks\": true")) { await context.octokit.issues.listLabelsOnIssue({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, @@ -777,7 +778,7 @@ module.exports = (app: Probot) => { if (res.data.find(a => a.name == "Config Invalid")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Config Invalid' + name: "Config Invalid" }) ); } else { @@ -853,7 +854,7 @@ module.exports = (app: Probot) => { if (res.data.find(a => a.name == "Requested Changes")) { await context.octokit.issues.removeLabel( context.issue({ - name: 'Requested Changes' + name: "Requested Changes" }) ); } else { @@ -886,22 +887,22 @@ module.exports = (app: Probot) => { owner: context.payload.repository.owner.login, repo: context.payload.repository.name, issue_number: context.payload.workflow_run.pull_requests[0].number, - name: 'CI Failed' + name: "CI Failed" }) ); - console.log('CI Passed!'); + console.log("CI Passed!"); } else { return; } }); } else if (context.payload.workflow_run.conclusion == "failure") { - console.log('CI Failure!'); + console.log("CI Failure!"); await context.octokit.issues.addLabels( context.issue({ owner: context.payload.repository.owner.login, repo: context.payload.repository.name, issue_number: context.payload.workflow_run.pull_requests[0].number, - labels: ['CI Failed'] + labels: ["CI Failed"] }) ); await context.octokit.issues.createComment( @@ -922,7 +923,7 @@ module.exports = (app: Probot) => { owner: context.payload.repository.owner.login, repo: context.payload.repository.name, issue_number: context.payload.workflow_run.pull_requests[0].number, - labels: ['CI Failed'] + labels: ["CI Failed"] }) ); await context.octokit.issues.createComment( @@ -998,7 +999,7 @@ module.exports = (app: Probot) => { } else if (res.data.mergeable == null) { await context.octokit.issues.createComment( context.issue({ - body: `We apologize for the inconvenience, but it seems that Automaton processes are currently unable to proceed with merging your commit. Please wait for a moment and try merging it again.` + body: "We apologize for the inconvenience, but it seems that Automaton processes are currently unable to proceed with merging your commit. Please wait for a moment and try merging it again." }) ); } @@ -1017,7 +1018,7 @@ module.exports = (app: Probot) => { console.log("Merged!"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); await context.octokit.issues.createComment( @@ -1027,7 +1028,7 @@ module.exports = (app: Probot) => { ); await context.octokit.issues.addLabels( context.issue({ - labels: ['Owner Merge'] + labels: ["Owner Merge"] }) ); } else if (context.payload.issue.author_association === "MEMBER" || context.payload.issue.author_association === "COLLABORATOR") { @@ -1041,7 +1042,7 @@ module.exports = (app: Probot) => { console.log("Merged!"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); await context.octokit.issues.createComment( @@ -1068,7 +1069,7 @@ module.exports = (app: Probot) => { console.log("Merged!"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); await context.octokit.issues.createComment( @@ -1078,7 +1079,7 @@ module.exports = (app: Probot) => { ); await context.octokit.issues.addLabels( context.issue({ - labels: ['Owner Merge'] + labels: ["Owner Merge"] }) ); } else if (context.payload.issue.author_association === "MEMBER" || context.payload.issue.author_association === "COLLABORATOR") { @@ -1092,7 +1093,7 @@ module.exports = (app: Probot) => { console.log("Merged!"); await context.octokit.issues.removeLabel( context.issue({ - name: 'Pending' + name: "Pending" }) ); await context.octokit.issues.createComment( @@ -1166,7 +1167,7 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` + body: `Hello @${res.data.user?.login}! We"ve observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we"ve had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` }); await octokit.rest.issues.lock({ owner: currentOwner, @@ -1211,7 +1212,7 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` + body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you"ve already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we"d appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` }); } }); diff --git a/src/structures/listener.ts b/src/structures/listener.ts index 0fbc821..252fe39 100644 --- a/src/structures/listener.ts +++ b/src/structures/listener.ts @@ -1,11 +1,11 @@ -process.on('unhandledRejection', (error: Error): void => { - console.error('Unhandled Promise Rejection:', error); +process.on("unhandledRejection", (error: Error): void => { + console.error("Unhandled Promise Rejection:", error); }); -process.on('uncaughtException', (error: Error): void => { - console.error('uncaughtException:', error); +process.on("uncaughtException", (error: Error): void => { + console.error("uncaughtException:", error); }); -process.on('uncaughtExceptionMonitor', (error: Error): void => { - console.error('uncaughtExceptionMonitor:', error); +process.on("uncaughtExceptionMonitor", (error: Error): void => { + console.error("uncaughtExceptionMonitor:", error); }); From 52f19b57d4427a5d77617b01e74d3a7046db8947 Mon Sep 17 00:00:00 2001 From: wakame Date: Mon, 6 Nov 2023 19:40:22 +0700 Subject: [PATCH 22/46] chore: remove unused node-fetch Co-authored-by: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> --- src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index d16857c..ac3509c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ -// import fetch, { Response } from "node-fetch"; import { Probot } from "probot"; import { Octokit } from "octokit"; import { createAppAuth } from "@octokit/auth-app"; From ffcfc5024be39135c549d88a310cfc6550db09f1 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 6 Nov 2023 21:10:04 +0700 Subject: [PATCH 23/46] style: adjust quotes for the context body --- src/index.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/index.ts b/src/index.ts index ac3509c..1027306 100644 --- a/src/index.ts +++ b/src/index.ts @@ -337,7 +337,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { @@ -417,7 +417,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { @@ -498,7 +498,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); await context.octokit.issues.addLabels( @@ -562,7 +562,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${context.payload.review.user.login}. Please address their comments before I"m merging this PR, thanks!`, + body: `@${context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { @@ -642,7 +642,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by \`[MAINTAINER]\`@${context.payload.review.user.login}. PING! @${context.payload.repository.owner.login} Please address their comments before I"m merging this PR, thanks!`, + body: `Pull request has requested changes by \`[MAINTAINER]\`@${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I"m merging this PR, thanks!`, event: "COMMENT" }); if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { @@ -723,7 +723,7 @@ module.exports = (app: Probot) => { repo: context.payload.repository.name, owner: context.payload.repository.owner.login, pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by @${context.payload.review.user.login}. Please address their comments before I"m merging this PR, thanks!`, + body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, event: "COMMENT" }); await context.octokit.issues.addLabels( @@ -1166,7 +1166,7 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We"ve observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we"ve had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` + body: `Hello @${res.data.user?.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` }); await octokit.rest.issues.lock({ owner: currentOwner, @@ -1211,7 +1211,7 @@ module.exports = (app: Probot) => { owner: res.data.base.repo.owner.login, repo: res.data.base.repo.name, issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you"ve already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we"d appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` + body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` }); } }); From a9931d4d623aca3d455c257d4ad5f58f9199b6bc Mon Sep 17 00:00:00 2001 From: Muunatic Date: Thu, 9 Nov 2023 22:14:05 +0700 Subject: [PATCH 24/46] test(linter): add quotes rules --- .eslintrc.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index dda4956..b01422f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -33,9 +33,12 @@ "after": true, "before": true }], + "no-trailing-spaces": 1, "no-unused-vars": 1, "no-useless-escape": 0, - "no-trailing-spaces": 1, + "quotes": ["warn", "double", { + "avoidEscape": false + }], "semi": "error", "semi-style": ["warn", "last"], "@typescript-eslint/member-delimiter-style": ["warn", { From cf636e02cb7ef8311e98c0acd6a02874c3ef4acc Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 13 Nov 2023 11:58:17 +0700 Subject: [PATCH 25/46] feat: create core class --- src/class/issuesClose.ts | 75 ++++++ src/class/issuesComment.ts | 192 ++++++++++++++ src/class/issuesOpen.ts | 42 ++++ src/class/prsOpen.ts | 184 ++++++++++++++ src/class/prsReview.ts | 485 ++++++++++++++++++++++++++++++++++++ src/class/prsStale.ts | 140 +++++++++++ src/class/prsSynchronize.ts | 149 +++++++++++ src/class/push.ts | 143 +++++++++++ src/class/workflowCheck.ts | 100 ++++++++ 9 files changed, 1510 insertions(+) create mode 100644 src/class/issuesClose.ts create mode 100644 src/class/issuesComment.ts create mode 100644 src/class/issuesOpen.ts create mode 100644 src/class/prsOpen.ts create mode 100644 src/class/prsReview.ts create mode 100644 src/class/prsStale.ts create mode 100644 src/class/prsSynchronize.ts create mode 100644 src/class/push.ts create mode 100644 src/class/workflowCheck.ts diff --git a/src/class/issuesClose.ts b/src/class/issuesClose.ts new file mode 100644 index 0000000..fe02758 --- /dev/null +++ b/src/class/issuesClose.ts @@ -0,0 +1,75 @@ +import Context from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class IssuesClose { + + /** + * @private + * @type Context<"issues.closed"> + */ + private context: Context<"issues.closed">; + + /** + * @constructor + * @param {Context<"issues.closed">} context + */ + constructor(context: Context<"issues.closed">) { + this.context = context; + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async closed(): Promise { + const issueClosed = this.context.issue({ + body: `Issue closed by @${this.context.payload.sender.login}.` + }); + console.log("Issues closed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Closed"] + }) + ); + await this.context.octokit.issues.createComment(issueClosed); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async invalid(): Promise { + const issueClosed = this.context.issue({ + body: `Issue closed as invalid by @${this.context.payload.sender.login}.` + }); + console.log("Issues closed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Closed", "Invalid"] + }) + ); + await this.context.octokit.issues.createComment(issueClosed); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + await this.context.octokit.issues.lock({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.issue.number, + lock_reason: "spam" + }); + } +} diff --git a/src/class/issuesComment.ts b/src/class/issuesComment.ts new file mode 100644 index 0000000..4ee2d59 --- /dev/null +++ b/src/class/issuesComment.ts @@ -0,0 +1,192 @@ +import Context from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class IssuesComment { + + /** + * @private + * @type Context<"issue_comment.created"> + */ + private context: Context<"issue_comment.created">; + + /** + * @constructor + * @param {Context<"issue_comment.created">} context + */ + constructor(context: Context<"issue_comment.created">) { + this.context = context; + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async userPRsComment(): Promise { + if (this.context.payload.comment.body.toLowerCase() == "ready to merge") { + await this.context.octokit.pulls.get({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.issue.number + }).then(async (res) => { + if (res.data.mergeable_state.toLowerCase() == "clean" || res.data.mergeable == true) { + if (this.context.payload.issue.user.login == this.context.payload.comment.user.login) { + let i: number; + for (i = 0; i < this.context.payload.issue.labels.length; i++) { + if (this.context.payload.issue.labels[i].name == "Approved") { + console.log("Merging"); + await this.context.octokit.pulls.merge({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.issue.number, + commit_title: `Merge PR #${this.context.payload.issue.number} ${this.context.payload.issue.title}`, + commit_message: this.context.payload.issue.title + }); + console.log("Merged!"); + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merged by ${this.context.payload.comment.user.login}!` + }) + ); + break; + } else if (this.context.payload.issue.labels[i].name == "Requested Changes") { + console.log("PRs Blocked"); + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merging blocked because PRs has requested changes! @${this.context.payload.comment.user.login}` + }) + ); + break; + } else { + continue; + } + } + } else { + return; + } + } else if (res.data.mergeable_state.toLowerCase() == "dirty" || res.data.mergeable == false) { + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merging blocked because PRs has merge conflict! @${this.context.payload.comment.user.login}` + }) + ); + } else { + await this.context.octokit.issues.createComment( + this.context.issue({ + body: "We apologize for the inconvenience, but it seems that Automaton processes are currently unable to proceed with merging your commit. Please wait for a moment and try merging it again." + }) + ); + } + }); + } + + if (this.context.payload.comment.body.toLowerCase() == "merge") { + if (this.context.payload.sender.login == this.context.payload.repository.owner.login) { + await this.context.octokit.pulls.merge({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.issue.number, + commit_title: `Merge PR #${this.context.payload.issue.number} ${this.context.payload.issue.title}`, + commit_message: this.context.payload.issue.title + }); + console.log("Merged!"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merged by \`[OWNER]\`${this.context.payload.comment.user.login}!` + }) + ); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Owner Merge"] + }) + ); + } else if (this.context.payload.issue.author_association === "MEMBER" || this.context.payload.issue.author_association === "COLLABORATOR") { + await this.context.octokit.pulls.merge({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.issue.number, + commit_title: `Merge PR #${this.context.payload.issue.number} ${this.context.payload.issue.title}`, + commit_message: this.context.payload.issue.title + }); + console.log("Merged!"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merged by \`[MAINTAINER]\`${this.context.payload.comment.user.login}!` + }) + ); + } else { + return; + } + } + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async botPRsComment(): Promise { + if (this.context.payload.comment.body.toLowerCase() == "merge") { + if (this.context.payload.sender.login == this.context.payload.repository.owner.login) { + await this.context.octokit.pulls.merge({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.issue.number, + commit_title: `Merge PR #${this.context.payload.issue.number} ${this.context.payload.issue.title}`, + commit_message: this.context.payload.issue.title + }); + console.log("Merged!"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merged by \`[OWNER]\`${this.context.payload.comment.user.login}!` + }) + ); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Owner Merge"] + }) + ); + } else if (this.context.payload.issue.author_association === "MEMBER" || this.context.payload.issue.author_association === "COLLABORATOR") { + await this.context.octokit.pulls.merge({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.issue.number, + commit_title: `Merge PR #${this.context.payload.issue.number} ${this.context.payload.issue.title}`, + commit_message: this.context.payload.issue.title + }); + console.log("Merged!"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + body: `Merged by \`[MAINTAINER]\`${this.context.payload.comment.user.login}!` + }) + ); + } else { + return; + } + } + } +} diff --git a/src/class/issuesOpen.ts b/src/class/issuesOpen.ts new file mode 100644 index 0000000..e63c425 --- /dev/null +++ b/src/class/issuesOpen.ts @@ -0,0 +1,42 @@ +import Context from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class IssuesOpen { + + /** + * @private + * @type Context<"issues.opened"> + */ + private context: Context<"issues.opened">; + + /** + * @constructor + * @param {Context<"issues.opened">} context + */ + constructor(context: Context<"issues.opened">) { + this.context = context; + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async open(): Promise { + if (this.context.payload.sender.login === "Muunatic") return; + const issueComment = this.context.issue({ + body: `Hello @${this.context.payload.sender.login} Thank you for submitting Issue, please wait for next notification after we review your Issue.` + }); + console.log("Issues created"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Pending"] + }) + ); + await this.context.octokit.issues.createComment(issueComment); + } +} diff --git a/src/class/prsOpen.ts b/src/class/prsOpen.ts new file mode 100644 index 0000000..3e2656c --- /dev/null +++ b/src/class/prsOpen.ts @@ -0,0 +1,184 @@ +import Context, { octokit } from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class PullRequestOpen { + + /** + * @private + * @type Context<"pull_request.opened"> + */ + private context: Context<"pull_request.opened">; + + /** + * @constructor + * @param {Context<"pull_request.opened">} context + */ + constructor(context: Context<"pull_request.opened">) { + this.context = context; + } + + /** + * @private + * @async + * @returns {Promise} + */ + private async checkChanges(): Promise { + let totalChanges: number = 0; + await this.context.octokit.pulls.listFiles({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + pull_number: this.context.payload.number + }).then(async (res) => { + const filterFiles = res.data.filter((a) => a.filename !== "package.json" && a.filename !== "package-lock.json"); + for (let i = 0; i < filterFiles.length; i++) { + totalChanges += filterFiles[i].additions; + } + + if (totalChanges > 1000) { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Huge Changes"] + }) + ); + } + }); + } + + /** + * @private + * @async + * @returns {Promise} + */ + private async giveLabels(): Promise { + const fileLabels: string[] = []; + const filteredlabels: string[] = []; + await this.context.octokit.pulls.listFiles({ + owner: "Typeslint", + repo: "github-AutoResponse", + pull_number: this.context.payload.number + }).then(async (res) => { + const listFiles = res.data.map(a => a.filename); + for (let i = 0; i < listFiles.length; i++) { + if (/src\/index/i.test(listFiles[i])) { + fileLabels.push("Core"); + } else if (/src\/class\/prs/i.test(listFiles[i])) { + fileLabels.push("lib: Pull Request"); + } else if (/src\/class\/issues/i.test(listFiles[i])) { + fileLabels.push("lib: Issues"); + } else if (/src\/class\/push/i.test(listFiles[i])) { + fileLabels.push("lib: Push"); + } else if (/src\/class\/workflow/i.test(listFiles[i])) { + fileLabels.push("lib: Workflow"); + } else { + continue; + } + } + + console.log(fileLabels); + console.log(filteredlabels); + + if (fileLabels.length > 0) { + new Set(fileLabels).forEach(a => filteredlabels.push(a)); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: filteredlabels + }) + ); + } else { + return; + } + }); + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async open(): Promise { + + if (this.context.payload.sender.login != this.context.payload.repository.owner.login) { + const propened = this.context.issue({ + body: `Hello @${this.context.payload.sender.login} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` + }); + console.log("Pull request opened"); + await this.context.octokit.issues.createComment(propened); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Pending"] + }) + ); + await this.checkChanges(); + } else { + const propened = this.context.issue({ + body: `PRs by \`[OWNER]\`${this.context.payload.pull_request.user.login}!` + }); + console.log("Pull request opened"); + await this.context.octokit.issues.createComment(propened); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Pending"] + }) + ); + await this.checkChanges(); + } + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async openCore(): Promise { + const propened = this.context.issue({ + body: `Hello @${this.context.payload.sender.login} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` + }); + console.log("Pull request opened"); + await this.context.octokit.issues.createComment(propened); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Pending"] + }) + ); + await this.giveLabels(); + await this.checkChanges(); + let shaRef: string; + await octokit.rest.pulls.get({ + owner: "Typeslint", + repo: "github-AutoResponse", + pull_number: this.context.payload.number + }).then(async (res) => { + shaRef = res.data.head.sha; + await octokit.rest.repos.getContent({ + owner: "Typeslint", + repo: "github-AutoResponse", + ref: shaRef, + path: "tsconfig.json" + }).then(async (res) => { + if ("content" in res.data) { + const textContent:string = res.data.content; + const decodeContent:string = Buffer.from(textContent, "base64").toString("utf-8"); + if (decodeContent.includes("\"noImplicitAny\": true") && decodeContent.includes("\"noImplicitThis\": true") && decodeContent.includes("\"strictFunctionTypes\": true") && decodeContent.includes("\"strictNullChecks\": true")) { + return; + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Config Invalid"] + }) + ); + const configInvalid = this.context.issue({ + body: `[tsconfig](${res.data.html_url}) need [*noImplicitAny*, *noImplicitThis*, *strictFunctionTypes*, *strictNullChecks*] to true value` + }); + await this.context.octokit.issues.createComment(configInvalid); + } + } else { + return; + } + }); + }); + } +} diff --git a/src/class/prsReview.ts b/src/class/prsReview.ts new file mode 100644 index 0000000..364f9ff --- /dev/null +++ b/src/class/prsReview.ts @@ -0,0 +1,485 @@ +import Context from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class PullRequestReview { + + /** + * @private + * @type Context<"pull_request_review.submitted"> + */ + private context: Context<"pull_request_review.submitted">; + + /** + * @constructor + * @param {Context<"pull_request_review.submitted">} context + */ + constructor(context: Context<"pull_request_review.submitted">) { + this.context = context; + } + + /** + * @private + * @async + * @returns {Promise} + */ + public async userPRs(): Promise { + if (this.context.payload.sender.login == this.context.payload.repository.owner.login) { + // Owner + if (this.context.payload.review.state == "approved") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} your pull request has been approved by @${this.context.payload.review.user.login}, please type \`Ready to merge\` for merging`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Requested Changes" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } else if (this.context.payload.review.state == "changes_requested") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `Pull request has requested changes by @${this.context.payload.review.user.login}. PING! @${this.context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Approved")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Approved" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } + } else if (this.context.payload.pull_request.author_association == "MEMBER" || this.context.payload.pull_request.author_association == "COLLABORATOR") { + if (this.context.payload.review.state == "approved") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} your pull request has been approved by \`[MAINTAINER]\`@${this.context.payload.review.user.login}, please type \`Ready to merge\` for merging`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Requested Changes" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } else if (this.context.payload.review.state == "changes_requested") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `Pull request has requested changes by @${this.context.payload.review.user.login}. PING! @${this.context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Approved")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Approved" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } + } else { + // Others Approved + if (this.context.payload.review.state == "approved") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} your pull request has been approved by @${this.context.payload.review.user.login}, even though please wait for the \`MAINTAINERS\`/\`CODEOWNERS\` to review`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Requested Changes" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Others Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Others Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } else if (this.context.payload.review.state == "changes_requested") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `Pull request has requested changes by @${this.context.payload.review.user.login}. PING! @${this.context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } + } + + /** + * @private + * @async + * @returns {Promise} + */ + public async botPRs(): Promise { + if (this.context.payload.sender.login == this.context.payload.repository.owner.login) { + // Owner + if (this.context.payload.review.state == "approved") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} Pull request has been approved by \`[OWNER]\`@${this.context.payload.review.user.login}, please type \`Merge\` for merging @${this.context.payload.review.user.login}`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Requested Changes" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } else if (this.context.payload.review.state == "changes_requested") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${this.context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Approved")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Approved" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } + } else if (this.context.payload.pull_request.author_association == "MEMBER" || this.context.payload.pull_request.author_association == "COLLABORATOR") { + if (this.context.payload.review.state == "approved") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} Pull request has been approved by \`[MAINTAINER]\`@${this.context.payload.review.user.login}, please type \`Merge\` for merging @${this.context.payload.review.user.login}`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Requested Changes" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } else if (this.context.payload.review.state == "changes_requested") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `Pull request has requested changes by \`[MAINTAINER]\`@${this.context.payload.review.user.login}. PING! @${this.context.payload.pull_request.user.login} Please address their comments before I"m merging this PR, thanks!`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Approved")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Approved" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } + } else { + // Others Approved + if (this.context.payload.review.state == "approved") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `@${this.context.payload.pull_request.user.login} your pull request has been approved by @${this.context.payload.review.user.login}, even though please wait for the \`MAINTAINERS\`/\`CODEOWNERS\` to review`, + event: "COMMENT" + }); + if (this.context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Requested Changes" + }) + ); + console.log("Label removed"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Others Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } else { + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Others Approved"] + }) + ); + console.log("PRs Approved"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } else if (this.context.payload.review.state == "changes_requested") { + await this.context.octokit.pulls.createReview({ + repo: this.context.payload.repository.name, + owner: this.context.payload.repository.owner.login, + pull_number: this.context.payload.pull_request.number, + body: `Pull request has requested changes by @${this.context.payload.review.user.login}. PING! @${this.context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, + event: "COMMENT" + }); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Requested Changes"] + }) + ); + console.log("PRs Requested Changes"); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Pending" + }) + ); + } + } + } +} diff --git a/src/class/prsStale.ts b/src/class/prsStale.ts new file mode 100644 index 0000000..6713699 --- /dev/null +++ b/src/class/prsStale.ts @@ -0,0 +1,140 @@ +import { octokit } from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class PRsStale { + /** + * @constructor + */ + constructor() { + + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async checkStale(): Promise { + await octokit.rest.repos.listForUser({ + username: "Muunatic", + type: "owner" + }).then(async (res) => { + for (let i = 0; i < res.data.length; i++) { + if (res.data[i].fork === false) { + await octokit.rest.pulls.list({ + owner: res.data[i].owner.login, + repo: res.data[i].name + }).then(async (res) => { + for (let i = 0; i < res.data.length; i++) { + const currentRepo = res.data[i].base.repo.name; + const currentOwner = res.data[i].base.repo.owner.login; + const currentPRs = res.data[i].number; + if (res.data[i].state.toLowerCase() == "open" && res.data[i].draft == false) { + if (res.data[i].user?.type.toLowerCase() == "user") { + await octokit.rest.pulls.listCommits({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs + }).then(async (res) => { + const currentDate = new Date(); + const createdAt = new Date(res.data[res.data.length - 1].commit.author?.date as string); + const staleDate = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); + const closeDate = new Date(createdAt.getTime() + 30 * 24 * 60 * 60 * 1000); + if (currentDate > staleDate) { + if (currentDate > closeDate) { + await octokit.rest.pulls.update({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs, + state: "closed" + }).then(async (res) => { + if (res.data.labels.find((a) => a.name == "Stale")) { + await octokit.rest.issues.addLabels({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + labels: ["Closed"] + }); + await octokit.rest.issues.removeLabel({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + name: "Pending" + }); + await octokit.rest.issues.createComment({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + body: `Hello @${res.data.user.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` + }); + await octokit.rest.issues.lock({ + owner: currentOwner, + repo: currentRepo, + issue_number: currentPRs, + lock_reason: "resolved" + }); + } else { + return; + } + }); + } else { + await octokit.rest.pulls.get({ + owner: currentOwner, + repo: currentRepo, + pull_number: currentPRs + }).then(async (res) => { + if (res.data.labels.find((a) => a.name == "Stale")) { + return; + } else { + const prsReviewers: string[] = []; + await octokit.rest.pulls.listReviewComments({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + pull_number: res.data.number + }).then((res) => { + if (res.data.length !== 0) { + for (let i = 0; i < res.data.length; i++) { + prsReviewers.push("@" + res.data[i].user.login); + } + } else { + prsReviewers.push("@Muunatic"); + } + }); + await octokit.rest.issues.addLabels({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + labels: ["Stale"] + }); + await octokit.rest.issues.createComment({ + owner: res.data.base.repo.owner.login, + repo: res.data.base.repo.name, + issue_number: res.data.number, + body: `Hello @${res.data.user.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` + }); + } + }); + } + } else { + return; + } + }); + } else { + continue; + } + } else { + continue; + } + } + }); + } else { + continue; + } + } + }); + } +} diff --git a/src/class/prsSynchronize.ts b/src/class/prsSynchronize.ts new file mode 100644 index 0000000..ecf6233 --- /dev/null +++ b/src/class/prsSynchronize.ts @@ -0,0 +1,149 @@ +import Context, { octokit } from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class PullRequestSynchronize { + + /** + * @private + * @type Context<"pull_request.synchronize"> + */ + private context: Context<"pull_request.synchronize">; + + /** + * @constructor + * @param {Context<"pull_request.synchronize">} context + */ + constructor(context: Context<"pull_request.synchronize">) { + this.context = context; + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async sync(): Promise { + await this.context.octokit.issues.listLabelsOnIssue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.pull_request.number + }).then(async (res) => { + let i: number; + const prsLabels = res.data.find(a => a.name == "Requested Changes" || a.name == "Approved")?.name; + if (prsLabels) { + await this.context.octokit.pulls.listReviews({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + pull_number: this.context.payload.pull_request.number + }).then(async (res) => { + const reviewersArray: string[] = []; + const tagReviewers: string[] = []; + for (i = 0; i < res.data.length; i++) { + if (res.data[i].user?.type == "User") { + const datastate: string[] = [ + "CHANGES_REQUESTED", + "APPROVED" + ]; + if (res.data[i].state == datastate.find(a => a == res.data[i].state)) { + if (res.data[i].user?.login != reviewersArray.find(a => a == res.data[i].user?.login)) { + const username: string = res.data[i].user?.login || ""; + reviewersArray.push(username); + tagReviewers.push("@" + username); + await this.context.octokit.pulls.dismissReview({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + pull_number: this.context.payload.pull_request.number, + review_id: res.data[i].id, + message: "This review is stale and has been dismissed." + }); + await this.context.octokit.pulls.requestReviewers({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + pull_number: this.context.payload.pull_request.number, + reviewers: [username] + }); + } else { + continue; + } + } else { + continue; + } + } else { + continue; + } + } + await this.context.octokit.issues.createComment( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.pull_request.number, + body: `PING! ${tagReviewers.join(", ")}. The author has pushed new commits since your last review. please review @${this.context.payload.sender.login} new commit before merge, thanks!` + }) + ); + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: prsLabels + }) + ); + }); + } else { + return; + } + }); + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async synchronizeCore(): Promise { + let shaRef: string; + await octokit.rest.pulls.get({ + owner: "Typeslint", + repo: "github-AutoResponse", + pull_number: this.context.payload.number + }).then(async (res) => { + shaRef = res.data.head.sha; + await octokit.rest.repos.getContent({ + owner: "Typeslint", + repo: "github-AutoResponse", + ref: shaRef, + path: "tsconfig.json" + }).then(async (res) => { + if ("content" in res.data) { + const textContent:string = res.data.content; + const decodeContent:string = Buffer.from(textContent, "base64").toString("utf-8"); + if (decodeContent.includes("\"noImplicitAny\": true") && decodeContent.includes("\"noImplicitThis\": true") && decodeContent.includes("\"strictFunctionTypes\": true") && decodeContent.includes("\"strictNullChecks\": true")) { + await this.context.octokit.issues.listLabelsOnIssue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.pull_request.number + }).then(async (res) => { + if (res.data.find(a => a.name == "Config Invalid")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + name: "Config Invalid" + }) + ); + } else { + return; + } + }); + } else { + const configInvalid = this.context.issue({ + body: `[tsconfig](${res.data.html_url}) need [*noImplicitAny*, *noImplicitThis*, *strictFunctionTypes*, *strictNullChecks*] to true value` + }); + await this.context.octokit.issues.createComment(configInvalid); + } + } else { + return; + } + }); + }); + } +} diff --git a/src/class/push.ts b/src/class/push.ts new file mode 100644 index 0000000..f6336ff --- /dev/null +++ b/src/class/push.ts @@ -0,0 +1,143 @@ +import Context, { getEvent, getUserData, octokit, token } from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class Push { + + /** + * @private + * @type Context<"push"> + */ + private context: Context<"push">; + + /** + * @constructor + * @param {Context<"push">} context + */ + constructor(context: Context<"push">) { + this.context = context; + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async push(): Promise { + let event1: string, event2: string, event3: string, event4: string, event5: string; + /** + * @function + * @async + * @returns {Promise} + */ + async function userActivity(): Promise { + const arrayActivity: getUserData = { "userData": [] }; + await fetch("https://api.github.com/users/Muunatic/events/public", { + method: "GET", + headers: { + "Accept": "application/json", + "Content-Type": "application/json", + "Authorization": "Bearer " + token + } + }).then((res: Response) => { + return res.json(); + }).then((res: [getEvent]) => { + let i: number; + for (i = 0; i < res.length; i++) { + if (res[i].type == "PushEvent") { + if (arrayActivity.userData.length < 5) { + let commitsI: number; + for (commitsI = 0; commitsI < res[i].payload.commits.length; commitsI++) { + if (res[i].payload.commits[commitsI].author.name == "Muunatic") { + if (arrayActivity.userData.length < 5) { + arrayActivity.userData.push({ event: `Commit on [${res[i].payload.commits[commitsI].sha.slice(0, 7)}](https://github.com/${res[i].repo.name}/commit/${res[i].payload.commits[commitsI].sha}) in [${res[i].repo.name}](https://github.com/${res[i].repo.name})` }); + } else { + break; + } + } else { + continue; + } + } + } else { + break; + } + } else if (res[i].type == "PullRequestEvent") { + if (arrayActivity.userData.length < 5) { + if (res[i].payload.pull_request.user.login == "Muunatic") { + arrayActivity.userData.push({ event: `Pull Request on [\#${res[i].payload.pull_request.number.toString()}](https://github.com/${res[i].repo.name}/pull/${res[i].payload.pull_request.number}) in [${res[i].repo.name}](https://github.com/${res[i].repo.name})` }); + } else { + continue; + } + } else { + break; + } + } else { + continue; + } + } + event1 = arrayActivity.userData[0].event; + event2 = arrayActivity.userData[1].event; + event3 = arrayActivity.userData[2].event; + event4 = arrayActivity.userData[3].event; + event5 = arrayActivity.userData[4].event; + return; + }); + } + if (this.context.payload.repository.owner.login == "Muunatic") { + if (this.context.payload.sender.login == "Muunatic") { + await userActivity(); + await this.context.octokit.repos.getContent({ + owner: "Muunatic", + repo: "Muunatic", + path: "README.md", + ref: "main" + }).then(async (res) => { + if ("sha" in res.data) { + const textcontent = `# ɢɪᴛʜᴜʙ sᴛᴀᴛs

\nUpdated ${new Date().toUTCString()} \n\n1. ${event1}\n2. ${event2}\n3. ${event3}\n4. ${event4}\n5. ${event5}`; + await this.context.octokit.repos.createOrUpdateFileContents({ + content: Buffer.from(textcontent, "utf-8").toString("base64"), + path: "README.md", + message: "Update Readme.md", + owner: "Muunatic", + repo: "Muunatic", + branch: "main", + sha: res.data.sha + }); + } else { + return; + } + }); + } else if (this.context.payload.sender.login == "typeslint-cli[bot]") { + if (this.context.payload.repository.name == "Muunatic") { + await octokit.rest.checks.create({ + owner: "Muunatic", + repo: "Muunatic", + name: "typeslint/ci", + head_sha: this.context.payload.head_commit?.id, + status: "in_progress" + }).then(async (resId) => { + await octokit.rest.checks.update({ + owner: "Muunatic", + repo: "Muunatic", + name: "typeslint/ci", + check_run_id: resId.data.id, + status: "completed", + conclusion: "success", + output: { + title: "Update Activities ✔️", + summary: "@" + this.context.payload.sender.login + " README Update" + } + }); + }); + } else { + return; + } + } else { + return; + } + } + } +} diff --git a/src/class/workflowCheck.ts b/src/class/workflowCheck.ts new file mode 100644 index 0000000..16ff5e6 --- /dev/null +++ b/src/class/workflowCheck.ts @@ -0,0 +1,100 @@ +import Context from "../index"; + +/** + * @class + * @default + * @exports + */ +export default class WorkflowCheck { + + /** + * @private + * @type Context<"issues.closed"> + */ + private context: Context<"workflow_run.completed">; + + /** + * @constructor + * @param {Context<"issues.closed">} context + */ + constructor(context: Context<"workflow_run.completed">) { + this.context = context; + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async checkCI(): Promise { + if (this.context.payload.workflow_run.conclusion == "failure") { + await this.context.octokit.issues.addLabels( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.workflow_run.pull_requests[0].number, + labels: ["CI Failed"] + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.workflow_run.pull_requests[0].number, + body: `CI build failed! for more information please review the [logs](${this.context.payload.workflow_run.html_url}).` + }) + ); + } else { + return; + } + } + + /** + * @public + * @async + * @returns {Promise} + */ + public async CheckUserCI(): Promise { + if (this.context.payload.workflow_run.conclusion == "success") { + await this.context.octokit.pulls.get({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + pull_number: this.context.payload.workflow_run.pull_requests[0].number + }).then(async (res) => { + if (res.data.labels.find(a => a.name == "CI Failed")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.workflow_run.pull_requests[0].number, + name: "CI Failed" + }) + ); + console.log("CI Passed!"); + } else { + return; + } + }); + } else if (this.context.payload.workflow_run.conclusion == "failure") { + console.log("CI Failure!"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.workflow_run.pull_requests[0].number, + labels: ["CI Failed"] + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: this.context.payload.workflow_run.pull_requests[0].number, + body: `CI build failed! for more information please review the [logs](${this.context.payload.workflow_run.html_url}).` + }) + ); + } else { + return; + } + } +} From 3a586bf930eca6375f4803d997a2e03635e6ea4b Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 13 Nov 2023 12:23:22 +0700 Subject: [PATCH 26/46] feat: create constant to export class --- src/structures/constant.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/structures/constant.ts diff --git a/src/structures/constant.ts b/src/structures/constant.ts new file mode 100644 index 0000000..54a2b8a --- /dev/null +++ b/src/structures/constant.ts @@ -0,0 +1,21 @@ +import IssuesClose from "../class/issuesClose"; +import IssuesComment from "../class/issuesComment"; +import IssuesOpen from "../class/issuesOpen"; +import PullRequestOpen from "../class/prsOpen"; +import PullRequestReview from "../class/prsReview"; +import PullRequestSynchronize from "../class/prsSynchronize"; +import Push from "../class/push"; +import WorkflowCheck from "../class/workflowCheck"; +import PRsStale from "../class/prsStale"; + +export { + IssuesClose, + IssuesComment, + IssuesOpen, + PullRequestOpen, + PullRequestReview, + PullRequestSynchronize, + Push, + WorkflowCheck, + PRsStale +}; From 4a1e777049e1e17e7a52f7182df6c60ae2309cc2 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 13 Nov 2023 12:25:07 +0700 Subject: [PATCH 27/46] refactor: change interface to type --- src/structures/{interface.ts => type.ts} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename src/structures/{interface.ts => type.ts} (92%) diff --git a/src/structures/interface.ts b/src/structures/type.ts similarity index 92% rename from src/structures/interface.ts rename to src/structures/type.ts index f0e42a5..457634c 100644 --- a/src/structures/interface.ts +++ b/src/structures/type.ts @@ -1,12 +1,13 @@ -export interface getUserData { +export type getUserData = { userData: userDataInterface[]; } -interface userDataInterface { +type userDataInterface = { event: string; } -export interface getEvent { + +export type getEvent = { id: string; type: string; From 5adea3f826d6127201f6b4708bd268cbdfa0f2be Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 13 Nov 2023 12:27:35 +0700 Subject: [PATCH 28/46] feat: export Context as default --- src/index.ts | 1220 ++------------------------------------------------ 1 file changed, 47 insertions(+), 1173 deletions(-) diff --git a/src/index.ts b/src/index.ts index 1027306..8d6dada 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,9 @@ -import { Probot } from "probot"; +import { Context, Probot } from "probot"; import { Octokit } from "octokit"; import { createAppAuth } from "@octokit/auth-app"; import { token } from "./data/config"; -import { getUserData, getEvent } from "./structures/interface"; +import { IssuesClose, IssuesComment, IssuesOpen, PRsStale, PullRequestOpen, PullRequestReview, PullRequestSynchronize, Push, WorkflowCheck } from "./structures/constant"; +import { getEvent, getUserData } from "./structures/type"; import "./structures/listener"; import dotenv from "dotenv"; dotenv.config(); @@ -14,1226 +15,99 @@ const octokit = new Octokit({ privateKey: process.env.PRIVATE_KEY, clientId: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, - installationId: 12345678 // env not working + installationId: 21573969 } }); module.exports = (app: Probot) => { + app.on("push", async (context): Promise => { + await new Push(context).push(); + }); - app.on("push", async (context) => { - let event1: string, event2: string, event3: string, event4: string, event5: string; - async function userActivity() { - const arrayActivity: getUserData = {"userData": []}; - await fetch("https://api.github.com/users/Muunatic/events/public", { - method: "GET", - headers: { - "Accept": "application/json", - "Content-Type": "application/json", - "Authorization": "Bearer " + token - } - }).then((res: Response) => { - return res.json(); - }).then((res: [getEvent]) => { - let i: number; - for (i = 0; i < res.length; i++) { - if (res[i].type == "PushEvent") { - if (arrayActivity.userData.length < 5) { - let commitsI: number; - for (commitsI = 0; commitsI < res[i].payload.commits.length; commitsI++) { - if (res[i].payload.commits[commitsI].author.name == "Muunatic") { - if (arrayActivity.userData.length < 5) { - arrayActivity.userData.push({event: `Commit on [${res[i].payload.commits[commitsI].sha.slice(0, 7)}](https://github.com/${res[i].repo.name}/commit/${res[i].payload.commits[commitsI].sha}) in [${res[i].repo.name}](https://github.com/${res[i].repo.name})`}); - } else { - break; - } - } else { - continue; - } - } - } else { - break; - } - } else if (res[i].type == "PullRequestEvent") { - if (arrayActivity.userData.length < 5) { - if (res[i].payload.pull_request.user.login == "Muunatic") { - arrayActivity.userData.push({event: `Pull Request on [\#${res[i].payload.pull_request.number.toString()}](https://github.com/${res[i].repo.name}/pull/${res[i].payload.pull_request.number}) in [${res[i].repo.name}](https://github.com/${res[i].repo.name})`}); - } else { - continue; - } - } else { - break; - } - } else { - continue; - } - } - event1 = arrayActivity.userData[0].event; - event2 = arrayActivity.userData[1].event; - event3 = arrayActivity.userData[2].event; - event4 = arrayActivity.userData[3].event; - event5 = arrayActivity.userData[4].event; - return; - }); - } - if (context.payload.repository.owner.login == "Muunatic") { - if (context.payload.sender.login == "Muunatic") { - await userActivity(); - await context.octokit.repos.getContent({ - owner: "Muunatic", - repo: "Muunatic", - path: "README.md", - ref: "main" - }).then(async (res) => { - if ("sha" in res.data) { - const textcontent = `# ɢɪᴛʜᴜʙ sᴛᴀᴛs

\nUpdated ${new Date().toUTCString()} \n\n1. ${event1}\n2. ${event2}\n3. ${event3}\n4. ${event4}\n5. ${event5}`; - await context.octokit.repos.createOrUpdateFileContents({ - content: Buffer.from(textcontent, "utf-8").toString("base64"), - path: "README.md", - message: "Update Readme.md", - owner: "Muunatic", - repo: "Muunatic", - branch: "main", - sha: res.data.sha - }); - } else { - return; - } - }); - } else if (context.payload.sender.login == "typeslint-cli[bot]") { - if (context.payload.repository.name == "Muunatic") { - await octokit.rest.checks.create({ - owner: "Muunatic", - repo: "Muunatic", - name: "typeslint/ci", - head_sha: context.payload.head_commit?.id, - status: "in_progress" - }).then(async (resId) => { - await octokit.rest.checks.update({ - owner: "Muunatic", - repo: "Muunatic", - name: "typeslint/ci", - check_run_id: resId.data.id, - status: "completed", - conclusion: "success", - output: { - title: "Update Activities ✔️", - summary: "@" + context.payload.sender.login + " README Update" - } - }); - }); - } else { - return; - } - } else { - return; - } - } + app.on("issues.opened", async (context): Promise => { + await new IssuesOpen(context).open(); }); - // Issues opened - app.on("issues.opened", async (context) => { - if (context.payload.sender.login === "Muunatic") return; - const username = context.payload.sender.login; - const issueComment = context.issue({ - body: `Hello @${username} Thank you for submitting Issue, please wait for next notification after we review your Issue.` - }); - console.log("Issues created"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Pending"] - }) - ); - await context.octokit.issues.createComment(issueComment); + app.on("issue_comment.created", async (context): Promise => { + if (context.payload.comment.user.type == "User") { + switch (context.payload.issue.user.type) { + case "User": + await new IssuesComment(context).userPRsComment(); + break; + case "Bot": + await new IssuesComment(context).botPRsComment(); + break; + default: + break; + } + } }); - // Issues closed - app.on("issues.closed", async (context) => { - const username = context.payload.sender.login; + app.on("issues.closed", async (context): Promise => { if (context.payload.issue.state_reason == "not_planned") { - const issueClosed = context.issue({ - body: `Issue closed as invalid by @${username}.` - }); - console.log("Issues closed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Closed", "Invalid"] - }) - ); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - await context.octokit.issues.createComment(issueClosed); + await new IssuesClose(context).invalid(); } else { - const issueClosed = context.issue({ - body: `Issue closed by @${username}.` - }); - console.log("Issues closed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Closed"] - }) - ); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - await context.octokit.issues.createComment(issueClosed); + await new IssuesClose(context).closed(); } }); - // Pull request openened - app.on("pull_request.opened", async (context) => { + app.on("pull_request.opened", async (context): Promise => { if (context.payload.sender.type == "User") { - if (context.payload.sender.login != context.payload.repository.owner.login) { - if (context.payload.repository.html_url == "https://github.com/Typeslint/github-AutoResponse") { - await context.octokit.pulls.listFiles({ - owner: "Typeslint", - repo: "github-AutoResponse", - pull_number: context.payload.number - }).then((res) => { - return res.data; - }).then(async (data) => { - if (data.find(a => a.filename == "src/index.ts")) { - const username = context.payload.sender.login; - const propened = context.issue({ - body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` - }); - console.log("Pull request opened"); - await context.octokit.issues.createComment(propened); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Pending", "Core"] - }) - ); - let shaRef: string; - await octokit.rest.pulls.get({ - owner: "Typeslint", - repo: "github-AutoResponse", - pull_number: context.payload.number - }).then(async (res) => { - shaRef = res.data.head.sha; - await octokit.rest.repos.getContent({ - owner: "Typeslint", - repo: "github-AutoResponse", - ref: shaRef, - path: "tsconfig.json" - }).then(async (res) => { - if ("content" in res.data) { - const textContent:string = res.data.content; - const decodeContent:string = Buffer.from(textContent, "base64").toString("utf-8"); - if (decodeContent.includes("\"noImplicitAny\": true") && decodeContent.includes("\"noImplicitThis\": true") && decodeContent.includes("\"strictFunctionTypes\": true") && decodeContent.includes("\"strictNullChecks\": true")) { - return; - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Config Invalid"] - }) - ); - const configInvalid = context.issue({ - body: `[tsconfig](${res.data.html_url}) need [*noImplicitAny*, *noImplicitThis*, *strictFunctionTypes*, *strictNullChecks*] to true value` - }); - await context.octokit.issues.createComment(configInvalid); - } - } else { - return; - } - }); - }); - } else { - const username = context.payload.sender.login; - const propened = context.issue({ - body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` - }); - console.log("Pull request opened"); - await context.octokit.issues.createComment(propened); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Pending"] - }) - ); - } - }); - } else { - const username = context.payload.sender.login; - const propened = context.issue({ - body: `Hello @${username} Thank you for submitting Pull Request, please wait for next notification after we review your Pull Request` - }); - console.log("Pull request opened"); - await context.octokit.issues.createComment(propened); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Pending"] - }) - ); - } + if (context.payload.repository.html_url == "https://github.com/Typeslint/github-AutoResponse") { + await new PullRequestOpen(context).openCore(); } else { - const propened = context.issue({ - body: `PRs by \`[OWNER]\`${context.payload.pull_request.user.login}!` - }); - console.log("Pull request opened"); - await context.octokit.issues.createComment(propened); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Pending"] - }) - ); + await new PullRequestOpen(context).open(); } } else { return; } }); - // Pull request comment - app.on("pull_request_review.submitted", async (context) => { + app.on("pull_request_review.submitted", async (context): Promise => { if (context.payload.sender.type == "User") { switch (context.payload.pull_request.user.type) { case "User": - if (context.payload.sender.login == context.payload.repository.owner.login) { - // Owner - if (context.payload.review.state == "approved") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, please type \`Ready to merge\` for merging`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } else if (context.payload.review.state == "changes_requested") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Approved" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } - } else if (context.payload.pull_request.author_association == "MEMBER" || context.payload.pull_request.author_association == "COLLABORATOR") { - if (context.payload.review.state == "approved") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has been approved by \`[MAINTAINER]\`@${context.payload.review.user.login}, please type \`Ready to merge\` for merging`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } else if (context.payload.review.state == "changes_requested") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Approved" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } - } else { - // Others Approved - if (context.payload.review.state == "approved") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, even though please wait for the \`MAINTAINERS\`/\`CODEOWNERS\` to review`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Others Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Others Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } else if (context.payload.review.state == "changes_requested") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, - event: "COMMENT" - }); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } + await new PullRequestReview(context).userPRs(); break; case "Bot": - if (context.payload.sender.login == context.payload.repository.owner.login) { - // Owner - if (context.payload.review.state == "approved") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} Pull request has been approved by \`[OWNER]\`@${context.payload.review.user.login}, please type \`Merge\` for merging @${context.payload.review.user.login}`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } else if (context.payload.review.state == "changes_requested") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has requested changes by \`[OWNER]\`@${context.payload.review.user.login}. Please address their comments before I'm merging this PR, thanks!`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Approved" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } - } else if (context.payload.pull_request.author_association == "MEMBER" || context.payload.pull_request.author_association == "COLLABORATOR") { - if (context.payload.review.state == "approved") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} Pull request has been approved by \`[MAINTAINER]\`@${context.payload.review.user.login}, please type \`Merge\` for merging @${context.payload.review.user.login}`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } else if (context.payload.review.state == "changes_requested") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by \`[MAINTAINER]\`@${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I"m merging this PR, thanks!`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Approved")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Approved" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } - } else { - // Others Approved - if (context.payload.review.state == "approved") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `@${context.payload.pull_request.user.login} your pull request has been approved by @${context.payload.review.user.login}, even though please wait for the \`MAINTAINERS\`/\`CODEOWNERS\` to review`, - event: "COMMENT" - }); - if (context.payload.pull_request.labels.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - console.log("Label removed"); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Others Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } else { - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Others Approved"] - }) - ); - console.log("PRs Approved"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } else if (context.payload.review.state == "changes_requested") { - await context.octokit.pulls.createReview({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.pull_request.number, - body: `Pull request has requested changes by @${context.payload.review.user.login}. PING! @${context.payload.pull_request.user.login} Please address their comments before I'm merging this PR, thanks!`, - event: "COMMENT" - }); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Requested Changes"] - }) - ); - console.log("PRs Requested Changes"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - } - } + await new PullRequestReview(context).botPRs(); break; default: - return; + break; } - } else { - return; } }); - // re-requested reviewer - app.on("pull_request.synchronize", async (context) => { + app.on("pull_request.synchronize", async (context): Promise => { if (context.payload.pull_request.user.type == "User") { if (context.payload.repository.homepage == "https://github.com/Typeslint/github-AutoResponse") { - let shaRef: string; - await octokit.rest.pulls.get({ - owner: "Typeslint", - repo: "github-AutoResponse", - pull_number: context.payload.number - }).then(async (res) => { - shaRef = res.data.head.sha; - await octokit.rest.repos.getContent({ - owner: "Typeslint", - repo: "github-AutoResponse", - ref: shaRef, - path: "tsconfig.json" - }).then(async (res) => { - if ("content" in res.data) { - const textContent:string = res.data.content; - const decodeContent:string = Buffer.from(textContent, "base64").toString("utf-8"); - if (decodeContent.includes("\"noImplicitAny\": true") && decodeContent.includes("\"noImplicitThis\": true") && decodeContent.includes("\"strictFunctionTypes\": true") && decodeContent.includes("\"strictNullChecks\": true")) { - await context.octokit.issues.listLabelsOnIssue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.pull_request.number - }).then(async (res) => { - if (res.data.find(a => a.name == "Config Invalid")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Config Invalid" - }) - ); - } else { - return; - } - }); - } else { - const configInvalid = context.issue({ - body: `[tsconfig](${res.data.html_url}) need [*noImplicitAny*, *noImplicitThis*, *strictFunctionTypes*, *strictNullChecks*] to true value` - }); - await context.octokit.issues.createComment(configInvalid); - } - } else { - return; - } - }); - }); + await new PullRequestSynchronize(context).synchronizeCore(); } - await context.octokit.issues.listLabelsOnIssue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.pull_request.number - }).then(async (res) => { - let i: number; - if (res.data.find(a => a.name == "Requested Changes")) { - await context.octokit.pulls.listReviews({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.pull_request.number - }).then(async (res) => { - const reviewersArray: string[] = []; - const tagReviewers: string[] = []; - for (i = 0; i < res.data.length; i++) { - if (res.data[i].user?.type == "User") { - const datastate: string[] = [ - "CHANGES_REQUESTED", - "APPROVED" - ]; - if (res.data[i].state == datastate.find(a => a == res.data[i].state)) { - if (res.data[i].user?.login != reviewersArray.find(a => a == res.data[i].user?.login)) { - const username: string = res.data[i].user?.login || ""; - reviewersArray.push(username); - tagReviewers.push("@" + username); - await context.octokit.pulls.requestReviewers({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.pull_request.number, - reviewers: [username] - }); - } else { - continue; - } - } else { - continue; - } - } else { - continue; - } - } - await context.octokit.issues.createComment( - context.issue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.pull_request.number, - body: `PING! ${tagReviewers.join(", ")}. The author has pushed new commits since your last review. please review @${context.payload.sender.login} new commit before merge, thanks!` - }) - ); - await context.octokit.issues.listLabelsOnIssue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.pull_request.number - }).then(async (res) => { - if (res.data.find(a => a.name == "Requested Changes")) { - await context.octokit.issues.removeLabel( - context.issue({ - name: "Requested Changes" - }) - ); - } else { - return; - } - }); - }); - } else if (res.data.find(a => a.name == "Approved")) { - return; - } - }); + await new PullRequestSynchronize(context).sync(); } else { return; } }); - // Check CI - app.on("workflow_run.completed", async (context) => { + app.on("workflow_run.completed", async (context): Promise => { if (context.payload.workflow_run.event == "pull_request") { if (context.payload.sender.type == "User") { - if (context.payload.workflow_run.conclusion == "success") { - await context.octokit.pulls.get({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.workflow_run.pull_requests[0].number - }).then(async (res) => { - if (res.data.labels.find(a => a.name == "CI Failed")) { - await context.octokit.issues.removeLabel( - context.issue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.workflow_run.pull_requests[0].number, - name: "CI Failed" - }) - ); - console.log("CI Passed!"); - } else { - return; - } - }); - } else if (context.payload.workflow_run.conclusion == "failure") { - console.log("CI Failure!"); - await context.octokit.issues.addLabels( - context.issue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.workflow_run.pull_requests[0].number, - labels: ["CI Failed"] - }) - ); - await context.octokit.issues.createComment( - context.issue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.workflow_run.pull_requests[0].number, - body: `CI build failed! for more information please review the [logs](${context.payload.workflow_run.html_url}).` - }) - ); - } else { - return; - } + await new WorkflowCheck(context).CheckUserCI(); } else { - if (context.payload.workflow_run.conclusion == "failure") { - await context.octokit.issues.addLabels( - context.issue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.workflow_run.pull_requests[0].number, - labels: ["CI Failed"] - }) - ); - await context.octokit.issues.createComment( - context.issue({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - issue_number: context.payload.workflow_run.pull_requests[0].number, - body: `CI build failed! for more information please review the [logs](${context.payload.workflow_run.html_url}).` - }) - ); - } else { - return; - } + await new WorkflowCheck(context).checkCI(); } } else { return; } }); +}; - // Comment created - app.on("issue_comment.created", async (context) => { - if (context.payload.comment.user.type == "User") { - switch (context.payload.issue.user.type) { - case "User": - // Merge pull request - if (context.payload.comment.body.toLowerCase() == "ready to merge") { - await context.octokit.pulls.get({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number - }).then(async (res) => { - if (res.data.mergeable_state.toLowerCase() == "clean" || res.data.mergeable == true) { - if (context.payload.issue.user.login == context.payload.comment.user.login) { - let i: number; - for (i = 0; i < context.payload.issue.labels.length; i++) { - if (context.payload.issue.labels[i].name == "Approved") { - console.log("Merging"); - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by ${context.payload.comment.user.login}!` - }) - ); - break; - } else if (context.payload.issue.labels[i].name == "Requested Changes") { - console.log("PRs Blocked"); - await context.octokit.issues.createComment( - context.issue({ - body: `Merging blocked because PRs has requested changes! @${context.payload.comment.user.login}` - }) - ); - break; - } else { - continue; - } - } - } else { - return; - } - } else if (res.data.mergeable_state.toLowerCase() == "dirty" || res.data.mergeable == false) { - await context.octokit.issues.createComment( - context.issue({ - body: `Merging blocked because PRs has merge conflict! @${context.payload.comment.user.login}` - }) - ); - } else if (res.data.mergeable == null) { - await context.octokit.issues.createComment( - context.issue({ - body: "We apologize for the inconvenience, but it seems that Automaton processes are currently unable to proceed with merging your commit. Please wait for a moment and try merging it again." - }) - ); - } - }); - } - - if (context.payload.comment.body.toLowerCase() == "merge") { - if (context.payload.sender.login == context.payload.repository.owner.login) { - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by \`[OWNER]\`${context.payload.comment.user.login}!` - }) - ); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Owner Merge"] - }) - ); - } else if (context.payload.issue.author_association === "MEMBER" || context.payload.issue.author_association === "COLLABORATOR") { - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by \`[MAINTAINER]\`${context.payload.comment.user.login}!` - }) - ); - } else { - return; - } - } - break; - case "Bot": - // Merge pull request - if (context.payload.comment.body.toLowerCase() == "merge") { - if (context.payload.sender.login == context.payload.repository.owner.login) { - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by \`[OWNER]\`${context.payload.comment.user.login}!` - }) - ); - await context.octokit.issues.addLabels( - context.issue({ - labels: ["Owner Merge"] - }) - ); - } else if (context.payload.issue.author_association === "MEMBER" || context.payload.issue.author_association === "COLLABORATOR") { - await context.octokit.pulls.merge({ - repo: context.payload.repository.name, - owner: context.payload.repository.owner.login, - pull_number: context.payload.issue.number, - commit_title: `Merge PR #${context.payload.issue.number} ${context.payload.issue.title}`, - commit_message: context.payload.issue.title - }); - console.log("Merged!"); - await context.octokit.issues.removeLabel( - context.issue({ - name: "Pending" - }) - ); - await context.octokit.issues.createComment( - context.issue({ - body: `Merged by \`[MAINTAINER]\`${context.payload.comment.user.login}!` - }) - ); - } else { - return; - } - } - break; - default: - break; - } - } else { - return; - } +setInterval(() => { + (async () => { + await new PRsStale().checkStale(); }); +}, 3600000); - // Stale PRs - setInterval(() => { - (async () => { - await octokit.rest.repos.listForUser({ - username: "Muunatic", - type: "owner" - }).then(async (res) => { - for (let i = 0; i < res.data.length; i++) { - if (res.data[i].fork === false) { - await octokit.rest.pulls.list({ - owner: res.data[i].owner.login, - repo: res.data[i].name - }).then(async (res) => { - for (let i = 0; i < res.data.length; i++) { - const currentRepo = res.data[i].base.repo.name; - const currentOwner = res.data[i].base.repo.owner.login; - const currentPRs = res.data[i].number; - if (res.data[i].state.toLowerCase() == "open" && res.data[i].draft == false) { - if (res.data[i].user?.type.toLowerCase() == "user") { - await octokit.rest.pulls.listCommits({ - owner: currentOwner, - repo: currentRepo, - pull_number: currentPRs - }).then(async (res) => { - const currentDate = new Date(); - const createdAt = new Date(res.data[res.data.length - 1].commit.author?.date as string); - const staleDate = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); - const closeDate = new Date(createdAt.getTime() + 30 * 24 * 60 * 60 * 1000); - if (currentDate > staleDate) { - if (currentDate > closeDate) { - await octokit.rest.pulls.update({ - owner: currentOwner, - repo: currentRepo, - pull_number: currentPRs, - state: "closed" - }).then(async (res) => { - if (res.data.labels.find((a) => a.name == "Stale")) { - await octokit.rest.issues.addLabels({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - labels: ["Closed"] - }); - await octokit.rest.issues.removeLabel({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - name: "Pending" - }); - await octokit.rest.issues.createComment({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We've observed that your pull requests have remained inactive for the last 30 days. Due to this prolonged inactivity, we've had to close these PRs. If you still intend to pursue these changes, please feel free to create new PRs.` - }); - await octokit.rest.issues.lock({ - owner: currentOwner, - repo: currentRepo, - issue_number: currentPRs, - lock_reason: "resolved" - }); - } else { - return; - } - }); - } else { - await octokit.rest.pulls.get({ - owner: currentOwner, - repo: currentRepo, - pull_number: currentPRs - }).then(async (res) => { - if (res.data.labels.find((a) => a.name == "Stale")) { - return; - } else { - const prsReviewers: string[] = []; - await octokit.rest.pulls.listReviewComments({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - pull_number: res.data.number - }).then((res) => { - if (res.data.length !== 0) { - for (let i = 0; i < res.data.length; i++) { - prsReviewers.push("@" + res.data[i].user?.login); - } - } else { - prsReviewers.push("@Muunatic"); - } - }); - await octokit.rest.issues.addLabels({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - labels: ["Stale"] - }); - await octokit.rest.issues.createComment({ - owner: res.data.base.repo.owner.login, - repo: res.data.base.repo.name, - issue_number: res.data.number, - body: `Hello @${res.data.user?.login}! We noticed that your pull request has been inactive for the past 7 days. If you've already received a response from the maintainer, please ensure that you review and address the feedback provided. If not, please reach out to the maintainer to seek clarification or assistance if needed.\n\n Additionally, we'd appreciate it if ${prsReviewers.join(", ")} could also take a moment to review the pull request and provide feedback.` - }); - } - }); - } - } else { - return; - } - }); - } else { - continue; - } - } else { - continue; - } - } - }); - } else { - continue; - } - } - }); - }); - }, 3600000); - -}; +export default Context; +export { octokit, token }; +export type { getEvent, getUserData }; From c1aeff6a7a44065c8e4541fdcf67ad35a3cc9cbd Mon Sep 17 00:00:00 2001 From: Muunatic Date: Thu, 16 Nov 2023 11:40:05 +0700 Subject: [PATCH 29/46] test(linter) add no-unnecessary-condition and sort-imports rules --- .eslintrc.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.eslintrc.json b/.eslintrc.json index b01422f..3d1a4c8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -24,11 +24,18 @@ "ignoreImports": true }], "comma-dangle": ["error", "never"], + "comma-spacing": ["warn", { + "after": true, + "before": false + }], "comma-style": ["warn", "last"], "eol-last": ["warn", "always"], "indent": ["warn", 4, { "SwitchCase": 1 }], + "key-spacing": ["warn", { + "mode": "strict" + }], "keyword-spacing": ["warn", { "after": true, "before": true @@ -36,11 +43,22 @@ "no-trailing-spaces": 1, "no-unused-vars": 1, "no-useless-escape": 0, + "object-curly-spacing": ["error", "always", { + "objectsInObjects": true, + "arraysInObjects": true + }], "quotes": ["warn", "double", { "avoidEscape": false }], "semi": "error", "semi-style": ["warn", "last"], + "sort-imports": ["warn", { + "ignoreCase": false, + "ignoreDeclarationSort": true + }], + "@typescript-eslint/explicit-function-return-type": ["warn", { + "allowExpressions": true + }], "@typescript-eslint/member-delimiter-style": ["warn", { "multiline": { "delimiter": "semi", @@ -52,6 +70,7 @@ }, "multilineDetection": "brackets" }], + "@typescript-eslint/no-unnecessary-condition": 2, "@typescript-eslint/no-var-requires": 0 }, "ignorePatterns": ["dist/*.js", "dist/**/*.js"] From e966f4fe6c43ed839d494930ebc37b39e448c2f9 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Fri, 17 Nov 2023 15:17:41 +0700 Subject: [PATCH 30/46] build(CI): add build CI and update node version --- .github/workflows/build.yml | 26 ++++++++++++++++++++++++++ .github/workflows/lint.yml | 18 +++++++++--------- 2 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..61219d4 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,26 @@ +name: Run TypeScript Compiler + +on: + push: + branches: [ develop ] + pull_request: + branches: [ develop ] + +jobs: + lint: + runs-on: windows-latest + strategy: + matrix: + node-version: [18.18.2] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + - name: Install npm + run: npm install npm@9.8.1 -g + - name: Install dependencies + run: npm ci + - name: Run typescript compiler + run: npm run build --if-present diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index dbb048b..44e70be 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,26 +1,26 @@ -name: eslint +name: Run ESLint Linter on: push: - branches: [ main ] + branches: [ develop ] pull_request: - branches: [ main ] + branches: [ develop ] jobs: lint: runs-on: windows-latest strategy: matrix: - node-version: [16.20.2] + node-version: [18.18.2] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - - name: install npm - run: npm install npm@8.19.4 -g - - name: install dependencies + - name: Install npm + run: npm install npm@9.8.1 -g + - name: Install dependencies run: npm ci - - name: run lint - run: npm run lint + - name: Run lint + run: npm run lint --if-present From 5164829ae954b056a26696af526fea0c2a9a75e9 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 20 Nov 2023 21:39:33 +0700 Subject: [PATCH 31/46] style: change to checkUserCI --- src/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8d6dada..13745b0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,11 +15,12 @@ const octokit = new Octokit({ privateKey: process.env.PRIVATE_KEY, clientId: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, - installationId: 21573969 + installationId: 12345678 // env not working } }); module.exports = (app: Probot) => { + app.on("push", async (context): Promise => { await new Push(context).push(); }); @@ -92,7 +93,7 @@ module.exports = (app: Probot) => { app.on("workflow_run.completed", async (context): Promise => { if (context.payload.workflow_run.event == "pull_request") { if (context.payload.sender.type == "User") { - await new WorkflowCheck(context).CheckUserCI(); + await new WorkflowCheck(context).checkUserCI(); } else { await new WorkflowCheck(context).checkCI(); } @@ -100,6 +101,7 @@ module.exports = (app: Probot) => { return; } }); + }; setInterval(() => { From 87ad7bcd3328ba82483be27524ebb2f364de5c11 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 20 Nov 2023 21:44:37 +0700 Subject: [PATCH 32/46] fix: inaccessible pull_request number in workflow_run --- src/class/workflowCheck.ts | 95 +++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 43 deletions(-) diff --git a/src/class/workflowCheck.ts b/src/class/workflowCheck.ts index 16ff5e6..c6e9d9b 100644 --- a/src/class/workflowCheck.ts +++ b/src/class/workflowCheck.ts @@ -1,4 +1,4 @@ -import Context from "../index"; +import Context, { octokit } from "../index"; /** * @class @@ -9,13 +9,13 @@ export default class WorkflowCheck { /** * @private - * @type Context<"issues.closed"> + * @type Context<"workflow_run.completed"> */ private context: Context<"workflow_run.completed">; /** * @constructor - * @param {Context<"issues.closed">} context + * @param {Context<"workflow_run.completed">} context */ constructor(context: Context<"workflow_run.completed">) { this.context = context; @@ -54,47 +54,56 @@ export default class WorkflowCheck { * @async * @returns {Promise} */ - public async CheckUserCI(): Promise { - if (this.context.payload.workflow_run.conclusion == "success") { - await this.context.octokit.pulls.get({ - owner: this.context.payload.repository.owner.login, - repo: this.context.payload.repository.name, - pull_number: this.context.payload.workflow_run.pull_requests[0].number - }).then(async (res) => { - if (res.data.labels.find(a => a.name == "CI Failed")) { - await this.context.octokit.issues.removeLabel( - this.context.issue({ - owner: this.context.payload.repository.owner.login, - repo: this.context.payload.repository.name, - issue_number: this.context.payload.workflow_run.pull_requests[0].number, - name: "CI Failed" - }) - ); - console.log("CI Passed!"); - } else { - return; - } - }); - } else if (this.context.payload.workflow_run.conclusion == "failure") { - console.log("CI Failure!"); - await this.context.octokit.issues.addLabels( - this.context.issue({ - owner: this.context.payload.repository.owner.login, - repo: this.context.payload.repository.name, - issue_number: this.context.payload.workflow_run.pull_requests[0].number, - labels: ["CI Failed"] - }) - ); - await this.context.octokit.issues.createComment( - this.context.issue({ + public async checkUserCI(): Promise { + await octokit.rest.pulls.list({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + head: `${this.context.payload.workflow_run.actor.login}:${this.context.payload.workflow_run.head_branch}`, + state: "open" + }).then(async (res) => { + const prsNumber = res.data[0].number; + if (this.context.payload.workflow_run.conclusion == "success") { + await this.context.octokit.pulls.get({ owner: this.context.payload.repository.owner.login, repo: this.context.payload.repository.name, - issue_number: this.context.payload.workflow_run.pull_requests[0].number, - body: `CI build failed! for more information please review the [logs](${this.context.payload.workflow_run.html_url}).` - }) - ); - } else { - return; - } + pull_number: prsNumber + }).then(async (res) => { + if (res.data.labels.find(a => a.name == "CI Failed")) { + await this.context.octokit.issues.removeLabel( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: prsNumber, + name: "CI Failed" + }) + ); + console.log("CI Passed!"); + } else { + return; + } + }); + } else if (this.context.payload.workflow_run.conclusion == "failure") { + console.log("CI Failure!"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: prsNumber, + labels: ["CI Failed"] + }) + ); + await this.context.octokit.issues.createComment( + this.context.issue({ + owner: this.context.payload.repository.owner.login, + repo: this.context.payload.repository.name, + issue_number: prsNumber, + body: `CI build failed! for more information please review the [logs](${this.context.payload.workflow_run.html_url}).` + }) + ); + } else { + return; + } + }); } + } From ac81168517dab347ab4bd2bd09275a8c43fe8830 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Wed, 22 Nov 2023 20:21:59 +0700 Subject: [PATCH 33/46] refactor: get pull request number by head_sha --- src/class/workflowCheck.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/class/workflowCheck.ts b/src/class/workflowCheck.ts index c6e9d9b..edda649 100644 --- a/src/class/workflowCheck.ts +++ b/src/class/workflowCheck.ts @@ -61,7 +61,7 @@ export default class WorkflowCheck { head: `${this.context.payload.workflow_run.actor.login}:${this.context.payload.workflow_run.head_branch}`, state: "open" }).then(async (res) => { - const prsNumber = res.data[0].number; + const prsNumber = res.data.find((a) => a.head.sha === this.context.payload.workflow_run.head_sha)?.number as number; if (this.context.payload.workflow_run.conclusion == "success") { await this.context.octokit.pulls.get({ owner: this.context.payload.repository.owner.login, From 10ccbc2f0fd9baac2995ddc8a09302a8921a2b90 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Wed, 29 Nov 2023 20:37:39 +0700 Subject: [PATCH 34/46] fix: add missing parentheses to iife --- src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/index.ts b/src/index.ts index 8d6dada..6dc7a0c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,6 +20,7 @@ const octokit = new Octokit({ }); module.exports = (app: Probot) => { + app.on("push", async (context): Promise => { await new Push(context).push(); }); @@ -100,11 +101,14 @@ module.exports = (app: Probot) => { return; } }); + }; setInterval(() => { (async () => { await new PRsStale().checkStale(); + })().catch((err: Error) => { + console.error(err); }); }, 3600000); From 79f122c3405c3e0b759411008a3c99829a9b4134 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Tue, 5 Dec 2023 22:39:54 +0700 Subject: [PATCH 35/46] docs: update contributing guide --- CONTRIBUTING.md | 73 +++++++++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 26 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f6ebb81..75d77da 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,39 +1,60 @@ -## Contributing +# Contribution Guide -[fork]: /fork -[pr]: /compare -[code-of-conduct]: CODE_OF_CONDUCT.md +Welcome to the contribution guide! I appreciate your interest in contributing to github-AutoResponse project. This guide will provide you with the necessary information and guidelines to make your contributions valuable and effective. -Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. +### 1. Getting started -Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms. +Contributions can come in various forms, including bug fixes, refactoring the code, documentation improvements, and more. Here are some ways you can contribute to the repository: -## Issues and PRs +- Fix bugs and address issues. +- Refactor code for better maintainability. +- Improve the documentation. -If you have suggestions for how this project could be improved, or want to report a bug, open an issue! We'd love all and any contributions. If you have questions, too, we'd love to hear them. +If you're unsure about what to work on, you can check the repository's issue tracker for any open issues. -We'd also love PRs. If you're thinking of a large PR, we advise opening up an issue first to talk about it, though! Look at the links below if you're not sure how to open a PR. +### 2. Code Style and Guidelines -## Submitting a pull request +To maintain a consistent codebase, this project follow certain code style and guidelines. Please adhere to the following conventions when contributing code: -1. [Fork][fork] and clone the repository. -1. Configure and install the dependencies: `npm install`. -1. Make sure the tests pass on your machine: `npm test`, note: these tests also apply the linter, so there's no need to lint separately. -1. Create a new branch: `git checkout -b my-branch-name`. -1. Make your change, add tests, and make sure the tests still pass. -1. Push to your fork and [submit a pull request][pr]. -1. Pat your self on the back and wait for your pull request to be reviewed and merged. +- Follow the code standard and writing style from ESLint config. +- Use camelcase for variable, function, etc. +- Write clear and concise comments when necessary (will remove after merging). -Here are a few things you can do that will increase the likelihood of your pull request being accepted: +### 3. Running the Linter -- Write and update tests. -- Keep your changes as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. -- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). +This repository have a linter set up for the project to ensure consistent code style and catch potential issues. Before opening a pull request, please run the following command to execute the linter and fix any reported issues: -Work in Progress pull requests are also welcome to get feedback early on, or if there is something blocked you. +``` +npm run lint +``` -## Resources +Make sure the linter passes without any errors or warnings before proceeding with your pull request. This step ensures that the codebase remains clean and consistent. -- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) -- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) -- [GitHub Help](https://help.github.com) +### 4. Using Conventional Commits + +To have a consistent commit message format across the repository, we follow the Conventional Commits specification. Please use the following format for your commit messages: + +``` +[optional scope]: +``` + +Here's an example of a conventional commit message: + +``` +feat(core): add issue_comment.created event +``` + +For more information about the Conventional Commits specification, you can refer to [conventionalcommits.org](https://conventionalcommits.org). + +### 5. Avoiding Copyright Infringement + +When contributing code or any other content, it's important to ensure that your contributions are your own original creation and do not violate any copyright laws or infringe upon the intellectual property rights of others. By contributing to this repository, you agree to the following: + +- You warrant that the contribution is your original work. +- You agree to grant the repository maintainers and users a license to use your contributions under the repository's designated license. [LICENSE](https://github.com/Typeslint/github-AutoResponse/blob/main/LICENSE) + +Please refrain from including any code, documentation, or other content in your contributions that may have been copied or derived from copyrighted sources without the necessary permissions or licenses. + +### 6. LICENSE + +By contributing to this repository, you agree that your contributions will be licensed under the same license as the repository itself. Please refer to the repository's [LICENSE](https://github.com/Typeslint/github-AutoResponse/blob/main/LICENSE) file for more details. \ No newline at end of file From c852d0184980a9d7059d50893c001321de911d96 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Mon, 11 Dec 2023 18:55:24 +0700 Subject: [PATCH 36/46] fix: cast 'head_sha' as string --- src/class/push.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/class/push.ts b/src/class/push.ts index f6336ff..0170561 100644 --- a/src/class/push.ts +++ b/src/class/push.ts @@ -116,7 +116,7 @@ export default class Push { owner: "Muunatic", repo: "Muunatic", name: "typeslint/ci", - head_sha: this.context.payload.head_commit?.id, + head_sha: this.context.payload.head_commit?.id as string, status: "in_progress" }).then(async (resId) => { await octokit.rest.checks.update({ @@ -140,4 +140,5 @@ export default class Push { } } } + } From ecc7bdac713d5b2a526675ec3f5c8281fecc632f Mon Sep 17 00:00:00 2001 From: Muunatic Date: Thu, 14 Dec 2023 21:10:29 +0700 Subject: [PATCH 37/46] refactor: get content changes instead of additions --- src/class/prsOpen.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/class/prsOpen.ts b/src/class/prsOpen.ts index 3e2656c..e663b28 100644 --- a/src/class/prsOpen.ts +++ b/src/class/prsOpen.ts @@ -35,7 +35,7 @@ export default class PullRequestOpen { }).then(async (res) => { const filterFiles = res.data.filter((a) => a.filename !== "package.json" && a.filename !== "package-lock.json"); for (let i = 0; i < filterFiles.length; i++) { - totalChanges += filterFiles[i].additions; + totalChanges += filterFiles[i].changes; } if (totalChanges > 1000) { @@ -78,9 +78,6 @@ export default class PullRequestOpen { } } - console.log(fileLabels); - console.log(filteredlabels); - if (fileLabels.length > 0) { new Set(fileLabels).forEach(a => filteredlabels.push(a)); await this.context.octokit.issues.addLabels( @@ -181,4 +178,5 @@ export default class PullRequestOpen { }); }); } + } From a44f877e8e23534587347f4d53f3aca79f2c4f14 Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Sun, 17 Dec 2023 20:37:28 +0700 Subject: [PATCH 38/46] docs(README): Adjust README documentation --- README.md | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index b274206..2f6e9c0 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,27 @@ -# GitHub-AutoResponse +# github-AutoResponse +This GitHub Automaton is a Probot-based application that automates various actions and responses to different events within a GitHub repository. It utilizes Probot, Octokit, and various event listeners to handle actions such as closing issues, commenting on issues and pull requests, managing pull requests, and performing checks on workflow runs. -> A GitHub App built with [Probot](https://github.com/probot/probot) framework +## Features +- Push Event Handling: Responds to push events in the repository. +- Issues Management: Handles opening, closing, and commenting on issues. +- Pull Request Management: Manages opening, reviewing, and synchronizing pull requests. +- Workflow Run Handling: Performs checks based on workflow run completion events. +- Stale Pull Requests: Regularly checks for stale pull requests. -## Setup +## Configuration +Environment Variables +To use this application, set the following environment variables in a .env file: -```sh -# Install dependencies -npm install +APP_ID: Your GitHub App's ID. +PRIVATE_KEY: Your GitHub App's private key. +CLIENT_ID: Your GitHub App's client ID. +CLIENT_SECRET: Your GitHub App's client secret. -# Run the client -npm start -``` - -## Docker - -```sh -# 1. Build container -docker build -t my-first-app . - -# 2. Start container -docker run -e APP_ID= -e PRIVATE_KEY= my-first-app -``` +## Usage +To use this application, install the dependencies and configure the environment variables. Run the application using the appropriate command `npm run build:start`. ## Contributing - -If you have suggestions for GitHub-AutoResponse could be improved, or want to report a bug, open an issue! We'd love all and any contributions. - -For more, check out the [Contributing Guide](CONTRIBUTING.md). +Contributions are welcome! Please see this **Contribution Guide** and adhere to **Code Of Conduct**. If you have any improvements, feel free to submit a pull request. ## License - -[ISC](LICENSE) © 2021 Typeslint +This project is licensed under the MIT License. From 32415f5748c0ade204b2e899d222b859a2918b1d Mon Sep 17 00:00:00 2001 From: Muunatic Date: Tue, 26 Dec 2023 16:12:17 +0700 Subject: [PATCH 39/46] build(CI): update node version and npm version --- .github/workflows/build.yml | 4 ++-- .github/workflows/lint.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 61219d4..37b1d58 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ jobs: runs-on: windows-latest strategy: matrix: - node-version: [18.18.2] + node-version: [18.19.0] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} @@ -19,7 +19,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Install npm - run: npm install npm@9.8.1 -g + run: npm install npm@10.2.3 -g - name: Install dependencies run: npm ci - name: Run typescript compiler diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 44e70be..3fa1a52 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,7 +11,7 @@ jobs: runs-on: windows-latest strategy: matrix: - node-version: [18.18.2] + node-version: [18.19.0] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} @@ -19,7 +19,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - name: Install npm - run: npm install npm@9.8.1 -g + run: npm install npm@10.2.3 -g - name: Install dependencies run: npm ci - name: Run lint From 5283b47611f437a34abe3f4eea2163ac82886fb9 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Thu, 28 Dec 2023 18:32:15 +0700 Subject: [PATCH 40/46] refactor: using curly bracket on conditional --- src/class/issuesOpen.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/class/issuesOpen.ts b/src/class/issuesOpen.ts index e63c425..2ea6046 100644 --- a/src/class/issuesOpen.ts +++ b/src/class/issuesOpen.ts @@ -27,16 +27,20 @@ export default class IssuesOpen { * @returns {Promise} */ public async open(): Promise { - if (this.context.payload.sender.login === "Muunatic") return; - const issueComment = this.context.issue({ - body: `Hello @${this.context.payload.sender.login} Thank you for submitting Issue, please wait for next notification after we review your Issue.` - }); - console.log("Issues created"); - await this.context.octokit.issues.addLabels( - this.context.issue({ - labels: ["Pending"] - }) - ); - await this.context.octokit.issues.createComment(issueComment); + if (this.context.payload.sender.login !== "Muunatic") { + const issueComment = this.context.issue({ + body: `Hello @${this.context.payload.sender.login} Thank you for submitting Issue, please wait for next notification after we review your Issue.` + }); + console.log("Issues created"); + await this.context.octokit.issues.addLabels( + this.context.issue({ + labels: ["Pending"] + }) + ); + await this.context.octokit.issues.createComment(issueComment); + } else { + return; + } } + } From 05ac167e57f83a81739648df1a3e7afa658cb816 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Fri, 29 Dec 2023 17:12:17 +0700 Subject: [PATCH 41/46] style: no multi spaces and add newlines between class members --- src/class/issuesClose.ts | 3 ++- src/class/issuesComment.ts | 1 + src/class/prsReview.ts | 1 + src/class/prsStale.ts | 2 ++ src/class/prsSynchronize.ts | 1 + src/class/push.ts | 6 +----- src/structures/type.ts | 1 - 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/class/issuesClose.ts b/src/class/issuesClose.ts index fe02758..daa6b32 100644 --- a/src/class/issuesClose.ts +++ b/src/class/issuesClose.ts @@ -69,7 +69,8 @@ export default class IssuesClose { owner: this.context.payload.repository.owner.login, repo: this.context.payload.repository.name, issue_number: this.context.payload.issue.number, - lock_reason: "spam" + lock_reason: "off-topic" }); } + } diff --git a/src/class/issuesComment.ts b/src/class/issuesComment.ts index 4ee2d59..804a242 100644 --- a/src/class/issuesComment.ts +++ b/src/class/issuesComment.ts @@ -189,4 +189,5 @@ export default class IssuesComment { } } } + } diff --git a/src/class/prsReview.ts b/src/class/prsReview.ts index 364f9ff..8b538db 100644 --- a/src/class/prsReview.ts +++ b/src/class/prsReview.ts @@ -482,4 +482,5 @@ export default class PullRequestReview { } } } + } diff --git a/src/class/prsStale.ts b/src/class/prsStale.ts index 6713699..a7b9712 100644 --- a/src/class/prsStale.ts +++ b/src/class/prsStale.ts @@ -6,6 +6,7 @@ import { octokit } from "../index"; * @exports */ export default class PRsStale { + /** * @constructor */ @@ -137,4 +138,5 @@ export default class PRsStale { } }); } + } diff --git a/src/class/prsSynchronize.ts b/src/class/prsSynchronize.ts index ecf6233..2e02ca0 100644 --- a/src/class/prsSynchronize.ts +++ b/src/class/prsSynchronize.ts @@ -146,4 +146,5 @@ export default class PullRequestSynchronize { }); }); } + } diff --git a/src/class/push.ts b/src/class/push.ts index 0170561..1079cbc 100644 --- a/src/class/push.ts +++ b/src/class/push.ts @@ -78,11 +78,7 @@ export default class Push { continue; } } - event1 = arrayActivity.userData[0].event; - event2 = arrayActivity.userData[1].event; - event3 = arrayActivity.userData[2].event; - event4 = arrayActivity.userData[3].event; - event5 = arrayActivity.userData[4].event; + event1 = arrayActivity.userData[0].event, event2 = arrayActivity.userData[1].event, event3 = arrayActivity.userData[2].event, event4 = arrayActivity.userData[3].event, event5 = arrayActivity.userData[4].event; return; }); } diff --git a/src/structures/type.ts b/src/structures/type.ts index 457634c..ce31806 100644 --- a/src/structures/type.ts +++ b/src/structures/type.ts @@ -6,7 +6,6 @@ type userDataInterface = { event: string; } - export type getEvent = { id: string; type: string; From 29c0be4a798ac89a3154cdac48870977970c1383 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Fri, 29 Dec 2023 17:26:19 +0700 Subject: [PATCH 42/46] test(linter) add lines-between-class-members, no-multi-spaces, no-multiple-empty-lines --- .eslintrc.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 3d1a4c8..8a9f115 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -29,6 +29,8 @@ "before": false }], "comma-style": ["warn", "last"], + "curly": ["error", "all"], + "default-case": 1, "eol-last": ["warn", "always"], "indent": ["warn", 4, { "SwitchCase": 1 @@ -40,6 +42,11 @@ "after": true, "before": true }], + "lines-between-class-members": ["warn", "always"], + "no-multi-spaces": 1, + "no-multiple-empty-lines": ["warn", { + "max": 1 + }], "no-trailing-spaces": 1, "no-unused-vars": 1, "no-useless-escape": 0, @@ -71,7 +78,8 @@ "multilineDetection": "brackets" }], "@typescript-eslint/no-unnecessary-condition": 2, - "@typescript-eslint/no-var-requires": 0 + "@typescript-eslint/no-require-imports": 2, + "@typescript-eslint/no-var-requires": 1 }, "ignorePatterns": ["dist/*.js", "dist/**/*.js"] } From 72b62290d0d87f5aeb59e7d6f0ebcc8f4d87a8e9 Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:06:05 +0700 Subject: [PATCH 43/46] docs: Create security policy --- SECURITY.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..14b0b3f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +# Security Policy + +## Reporting a Vulnerability + +To report a security vulnerability, please send an email to [support@typeslint.com](mailto:support@typeslint.com) \ No newline at end of file From 2d8fa8d7b7e2dba981833f34e4d857829d5cd07e Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:06:49 +0700 Subject: [PATCH 44/46] chore: Create PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..fc6342d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,3 @@ +## Changes + + From 510ca606302949296d3de97c0ea3a7d8bf6e0ecd Mon Sep 17 00:00:00 2001 From: Haruyaki <52639021+HarunamiYaki@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:08:17 +0700 Subject: [PATCH 45/46] chore: Create Issues.yml for ISSUE_TEMPLATE --- .github/ISSUE_TEMPLATE/Issues.yml | 50 +++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/Issues.yml diff --git a/.github/ISSUE_TEMPLATE/Issues.yml b/.github/ISSUE_TEMPLATE/Issues.yml new file mode 100644 index 0000000..5af408c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Issues.yml @@ -0,0 +1,50 @@ +name: "Bug Report" +description: "Report a bug encountered while using the project." +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Welcome to the issue tracker! + + Before submitting your issue, please make sure to provide as much relevant information as possible. + + - type: input + attributes: + label: Issue Description + description: Provide a brief description of the issue you are facing. + + - type: input + attributes: + label: Expected Behavior + description: What should happen? + + - type: input + attributes: + label: Actual Behavior + description: What is happening instead? + + - type: textarea + attributes: + label: Steps to Reproduce + description: Describe the steps required to reproduce the issue, including code snippets, if relevant. + + - type: input + attributes: + label: NodeJS Environment + description: NodeJS Version + + - type: input + attributes: + label: Package Manager + description: NPM Version + + - type: dropdown + attributes: + label: Operating System + options: + - Windows + - macOS + - Linux + validations: + required: true From 644309aefe4d5db81f4adab91549cdf038fd64c3 Mon Sep 17 00:00:00 2001 From: Muunatic Date: Fri, 29 Dec 2023 23:54:45 +0700 Subject: [PATCH 46/46] chore(release): 3.0.0 Release --- package-lock.json | 5932 +++++++++++---------------------------------- package.json | 64 +- 2 files changed, 1420 insertions(+), 4576 deletions(-) diff --git a/package-lock.json b/package-lock.json index 56b31a2..e59d190 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,33 +1,40 @@ { "name": "typeslint-cli", - "version": "2.4.0-1", - "lockfileVersion": 2, + "version": "3.0.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "typeslint-cli", - "version": "2.4.0-1", + "version": "3.0.0", "license": "ISC", "dependencies": { - "@octokit/auth-app": "4.0.9", - "@octokit/rest": "^19.0.7", - "@types/node": "^18.15.11", - "@types/node-fetch": "2.6.3", - "dotenv": "^16.0.3", - "node-fetch": "2.6.9", - "octokit": "^2.0.14", - "probot": "^12.3.0", - "smee-client": "^1.2.3", - "typescript": "4.9.5" + "dotenv": "^16.3.1", + "octokit": "^3.1.2", + "probot": "^12.3.3", + "smee-client": "^2.0.0" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "eslint": "^8.38.0" + "@octokit/auth-app": "^6.0.2", + "@octokit/rest": "^20.0.2", + "@types/node": "^18.19.3", + "@typescript-eslint/eslint-plugin": "^6.16.0", + "@typescript-eslint/parser": "^6.16.0", + "eslint": "^8.56.0", + "typescript": "5.3.3" }, "engines": { - "node": ">=16.19.1", - "npm": ">=8.19.3" + "node": ">=18.19.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@eslint-community/eslint-utils": { @@ -46,23 +53,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -77,10 +84,32 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", - "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -92,12 +121,12 @@ "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -105,6 +134,28 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -119,9 +170,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -160,230 +211,195 @@ } }, "node_modules/@octokit/app": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@octokit/app/-/app-13.1.1.tgz", - "integrity": "sha512-83TPUMWPAWaACe8AJVBlg6gptbDJk/33C/0V9e0yWfBqXINqF2ZutctQIcrRcyWBPlfYmFElPbElMqlspe8UWg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@octokit/app/-/app-14.0.2.tgz", + "integrity": "sha512-NCSCktSx+XmjuSUVn2dLfqQ9WIYePGP95SDJs4I9cn/0ZkeXcPkaoCLl64Us3dRKL2ozC7hArwze5Eu+/qt1tg==", "dependencies": { - "@octokit/auth-app": "^4.0.8", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/core": "^4.0.0", - "@octokit/oauth-app": "^4.0.7", - "@octokit/plugin-paginate-rest": "^5.0.0", - "@octokit/types": "^8.0.0", - "@octokit/webhooks": "^10.0.0" + "@octokit/auth-app": "^6.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/types": "^12.0.0", + "@octokit/webhooks": "^12.0.4" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "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==", - "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", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-6.0.2.tgz", + "integrity": "sha512-HYuRX3Fvhs2y9i7a4F8f+A5HWfacRWmpERHGBEOtgvKVjJkOQZKUY2v6HiSszYecHAF8Ojqngp2iraSP3SvNpQ==", + "dependencies": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "deprecation": "^2.3.1", - "lru-cache": "^6.0.0", + "lru-cache": "^10.0.0", "universal-github-app-jwt": "^1.1.1", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 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==" - }, - "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==", - "dependencies": { - "@octokit/openapi-types": "^16.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" - }, - "engines": { - "node": ">=10" + "node": ">= 18" } }, - "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.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.4.tgz", - "integrity": "sha512-zlWuii5hAN50vsV6SJC+uIJ7SMhyWjQMEmKJQxkmNDlieE9LjnkZnbOjqRsfcG7VO7WTl4K8ccpo/3A7Kdpmrw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-7.0.1.tgz", + "integrity": "sha512-RE0KK0DCjCHXHlQBoubwlLijXEKfhMhKm9gO56xYvFmP1QTMb+vvwRPmQLLx0V+5AvV9N9I3lr1WyTzwL3rMDg==", "dependencies": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", + "@octokit/auth-oauth-device": "^6.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/types": "^12.0.0", "@types/btoa-lite": "^1.0.0", "btoa-lite": "^1.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/auth-oauth-device": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.3.tgz", - "integrity": "sha512-KPTx5nMntKjNZzzltO3X4T68v22rd7Cp/TcLJXQE2U8aXPcZ9LFuww9q9Q5WUNSu3jwi3lRwzfkPguRfz1R8Vg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-6.0.1.tgz", + "integrity": "sha512-yxU0rkL65QkjbqQedgVx3gmW7YM5fF+r5uaSj9tM/cQGVqloXcqP2xK90eTyYvl29arFVCW8Vz4H/t47mL0ELw==", "dependencies": { - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", + "@octokit/oauth-methods": "^4.0.0", + "@octokit/request": "^8.0.0", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/auth-oauth-user": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.0.tgz", - "integrity": "sha512-TC2Mj8NkSy9uAnZLYX+FKB/IH6uDe+qYNzHzH8l13JlzsrTE7GKkcqtXdSGGN4tncyROAB4/KS5rDPRCEnWHlA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-4.0.1.tgz", + "integrity": "sha512-N94wWW09d0hleCnrO5wt5MxekatqEJ4zf+1vSe8MKMrhZ7gAXKFOKrDEZW2INltvBWJCyDUELgGRv8gfErH1Iw==", "dependencies": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", + "@octokit/auth-oauth-device": "^6.0.0", + "@octokit/oauth-methods": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/types": "^12.0.0", "btoa-lite": "^1.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/auth-token": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", - "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", - "dependencies": { - "@octokit/types": "^8.0.0" - }, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/auth-unauthenticated": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.3.tgz", - "integrity": "sha512-IyfLo1T5GmIC9+07hHGlD3gHtZI1Bona8PLhHXUnwcYDuZt0BhjlNJDYMoPG21C4r7v7+ZSxQHBKrGgkxpYb7A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.1.tgz", + "integrity": "sha512-oxeWzmBFxWd+XolxKTc4zr+h3mt+yofn4r7OfoIkR/Cj/o70eEGmPsFbueyJE2iBAGpjgTnEOKM3pnuEGVmiqg==", "dependencies": { - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0" + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", - "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", - "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.2.tgz", + "integrity": "sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", - "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", + "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", "dependencies": { - "@octokit/types": "^8.0.0", - "is-plain-object": "^5.0.0", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/oauth-app": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.2.0.tgz", - "integrity": "sha512-gyGclT77RQMkVUEW3YBeAKY+LBSc5u3eC9Wn/Uwt3WhuKuu9mrV18EnNpDqmeNll+mdV02yyBROU29Tlili6gg==", - "dependencies": { - "@octokit/auth-oauth-app": "^5.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/core": "^4.0.0", - "@octokit/oauth-authorization-url": "^5.0.0", - "@octokit/oauth-methods": "^2.0.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-6.0.0.tgz", + "integrity": "sha512-bNMkS+vJ6oz2hCyraT9ZfTpAQ8dZNqJJQVNaKjPLx4ue5RZiFdU1YWXguOPR8AaSHS+lKe+lR3abn2siGd+zow==", + "dependencies": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/oauth-methods": "^4.0.0", "@types/aws-lambda": "^8.10.83", - "fromentries": "^1.3.1", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/oauth-authorization-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", - "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz", + "integrity": "sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==", "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/oauth-methods": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.4.tgz", - "integrity": "sha512-RDSa6XL+5waUVrYSmOlYROtPq0+cfwppP4VaQY/iIei3xlFb0expH6YNsxNrZktcLhJWSpm9uzeom+dQrXlS3A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-4.0.1.tgz", + "integrity": "sha512-1NdTGCoBHyD6J0n2WGXg9+yDLZrRNZ0moTEex/LSPr49m530WNKcCfXDghofYptr3st3eTii+EHoG5k/o+vbtw==", "dependencies": { - "@octokit/oauth-authorization-url": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "btoa-lite": "^1.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", + "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" }, "node_modules/@octokit/plugin-enterprise-compatibility": { "version": "1.3.0", @@ -417,212 +433,169 @@ "@octokit/openapi-types": "^12.11.0" } }, + "node_modules/@octokit/plugin-paginate-graphql": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.0.tgz", + "integrity": "sha512-7HcYW5tP7/Z6AETAPU14gp5H5KmCPT3hmJrS/5tO7HIgbwenYmgw4OY9Ma54FDySuxMwD+wsJlxtuGWwuZuItA==", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz", - "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", + "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", "dependencies": { - "@octokit/types": "^8.0.0" + "@octokit/types": "^12.4.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=4" + "@octokit/core": ">=5" } }, "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz", + "integrity": "sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==", + "dev": true, + "engines": { + "node": ">= 18" + }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": ">=5" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz", - "integrity": "sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz", + "integrity": "sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==", "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.3.1" + "@octokit/types": "^12.3.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-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==" - }, - "node_modules/@octokit/plugin-rest-endpoint-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==", - "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/core": ">=5" } }, "node_modules/@octokit/plugin-retry": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.0.3.tgz", - "integrity": "sha512-tDR+4Cs9GPPNJ7/RjTEq5ty2wqjKe1hRUV7/hch+nORow5LshlHXTT1qfYNsFPw3S9szvFFAfDEFq/xwrEpL7g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", "dependencies": { - "@octokit/types": "^8.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": ">=5" } }, "node_modules/@octokit/plugin-throttling": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.0.1.tgz", - "integrity": "sha512-I4qxs7wYvYlFuY3PAUGWAVPhFXG3RwnvTiSr5Fu/Auz7bYhDLnzS2MjwV8nGLq/FPrWwYiweeZrI5yjs1YG4tQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz", + "integrity": "sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==", "dependencies": { - "@octokit/types": "^9.0.0", + "@octokit/types": "^12.2.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^4.0.0" - } - }, - "node_modules/@octokit/plugin-throttling/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/@octokit/plugin-throttling/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" + "@octokit/core": "^5.0.0" } }, "node_modules/@octokit/request": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", - "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", + "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", - "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", "dependencies": { - "@octokit/types": "^8.0.0", + "@octokit/types": "^12.0.0", "deprecation": "^2.0.0", "once": "^1.4.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/rest": { - "version": "19.0.7", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.7.tgz", - "integrity": "sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==", - "dependencies": { - "@octokit/core": "^4.1.0", - "@octokit/plugin-paginate-rest": "^6.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^7.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/rest/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/@octokit/rest/node_modules/@octokit/plugin-paginate-rest": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", - "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", + "version": "20.0.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.0.2.tgz", + "integrity": "sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==", + "dev": true, "dependencies": { - "@octokit/types": "^9.0.0" + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=4" - } - }, - "node_modules/@octokit/rest/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": ">= 18" } }, "node_modules/@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", + "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", "dependencies": { - "@octokit/openapi-types": "^14.0.0" + "@octokit/openapi-types": "^19.1.0" } }, "node_modules/@octokit/webhooks": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.6.0.tgz", - "integrity": "sha512-fCo4bezvS5k9ocmKKVs5f8dzuRKlSYIodK1bxSAmbamFZnKec8STova0ZWQqKuZwPMaWLoocZsJSOA0Silq7UQ==", + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-12.0.10.tgz", + "integrity": "sha512-Q8d26l7gZ3L1SSr25NFbbP0B431sovU5r0tIqcvy8Z4PrD1LBv0cJEjvDLOieouzPSTzSzufzRIeXD7S+zAESA==", "dependencies": { - "@octokit/request-error": "^3.0.0", - "@octokit/webhooks-methods": "^3.0.0", - "@octokit/webhooks-types": "6.7.0", + "@octokit/request-error": "^5.0.0", + "@octokit/webhooks-methods": "^4.0.0", + "@octokit/webhooks-types": "7.1.0", "aggregate-error": "^3.1.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/webhooks-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.2.tgz", - "integrity": "sha512-Vlnv5WBscf07tyAvfDbp7pTkMZUwk7z7VwEF32x6HqI+55QRwBTcT+D7DDjZXtad/1dU9E32x0HmtDlF9VIRaQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-4.0.0.tgz", + "integrity": "sha512-M8mwmTXp+VeolOS/kfRvsDdW+IO0qJ8kYodM/sAysk093q6ApgmBXwK1ZlUvAwXVrp/YVHp6aArj4auAxUAOFw==", "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/webhooks-types": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.7.0.tgz", - "integrity": "sha512-bykm7UkSnxmb2uhSfcLM1Pity/LQ6ZBSdzy9HU0vXjR+2g+tzlmRhXb7Go8oj0TlgO+vDrTivGXju6zkzOGKjA==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.1.0.tgz", + "integrity": "sha512-y92CpG4kFFtBBjni8LHoV12IegJ+KFxLgKRengrVjKmGE5XMeCuGvlfRe75lTRrgXaG6XIWJlFpIDTlkoJsU8w==" }, "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", @@ -731,53 +704,59 @@ } }, "node_modules/@types/aws-lambda": { - "version": "8.10.109", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.109.tgz", - "integrity": "sha512-/ME92FneNyXQzrAfcnQQlW1XkCZGPDlpi2ao1MJwecN+6SbeonKeggU8eybv1DfKli90FAVT1MlIZVXfwVuCyg==" + "version": "8.10.130", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.130.tgz", + "integrity": "sha512-HxTfLeGvD1wTJqIGwcBCpNmHKenja+We1e0cuzeIDFfbEj3ixnlTInyPR/81zAe0Ss/Ip12rFK6XNeMLVucOSg==" }, "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.15", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", + "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.31", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.32", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", - "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, + "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", @@ -786,65 +765,36 @@ "@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/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/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "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.5", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", + "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", "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.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.3.tgz", - "integrity": "sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==", - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "undici-types": "~5.26.4" } }, "node_modules/@types/pino": { @@ -859,9 +809,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" } @@ -885,57 +835,68 @@ } }, "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.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" }, "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/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, + "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": "^1", + "@types/node": "*" + } + }, "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz", - "integrity": "sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.16.0.tgz", + "integrity": "sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/type-utils": "5.59.0", - "@typescript-eslint/utils": "5.59.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.16.0", + "@typescript-eslint/type-utils": "6.16.0", + "@typescript-eslint/utils": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -944,25 +905,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.0.tgz", - "integrity": "sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", + "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", + "@typescript-eslint/scope-manager": "6.16.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/typescript-estree": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -971,16 +933,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.0.tgz", - "integrity": "sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", + "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0" + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -988,25 +950,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz", - "integrity": "sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.16.0.tgz", + "integrity": "sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.0", - "@typescript-eslint/utils": "5.59.0", + "@typescript-eslint/typescript-estree": "6.16.0", + "@typescript-eslint/utils": "6.16.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1015,12 +977,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", - "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", + "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1028,21 +990,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz", - "integrity": "sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", + "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/visitor-keys": "6.16.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1055,48 +1018,53 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.0.tgz", - "integrity": "sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.16.0.tgz", + "integrity": "sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.16.0", + "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/typescript-estree": "6.16.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz", - "integrity": "sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", + "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.16.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1110,9 +1078,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1223,14 +1191,6 @@ "node": ">=4" } }, - "node_modules/args/node_modules/camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "engines": { - "node": ">=6" - } - }, "node_modules/args/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1273,14 +1233,6 @@ "node": ">=4" } }, - "node_modules/args/node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/args/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -1306,16 +1258,6 @@ "node": ">=8" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "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/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -1329,22 +1271,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", @@ -1392,13 +1318,11 @@ "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -1432,12 +1356,13 @@ } }, "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.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1452,6 +1377,14 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1507,17 +1440,6 @@ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -1526,11 +1448,6 @@ "node": ">= 6" } }, - "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==" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1549,9 +1466,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } @@ -1569,11 +1486,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1619,19 +1531,24 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } }, "node_modules/denque": { @@ -1664,15 +1581,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1698,11 +1606,14 @@ } }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, "node_modules/ecdsa-sig-formatter": { @@ -1760,27 +1671,28 @@ } }, "node_modules/eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", - "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.38.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1788,22 +1700,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -1817,22 +1726,25 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1841,37 +1753,37 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=4.0" + "node": "*" } }, "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1904,15 +1816,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -1925,7 +1828,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -1934,15 +1837,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1961,11 +1855,11 @@ } }, "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": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", "engines": { - "node": ">=0.12.0" + "node": ">=12.0.0" } }, "node_modules/express": { @@ -2010,11 +1904,11 @@ } }, "node_modules/express-handlebars": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.6.tgz", - "integrity": "sha512-E4QHYCh+9fyfdBEb8uKJ8p6HD4qq/sUSHBq83lRNlLJp2TQKEg2nFJYbVdC+M3QzaV19dODe43lgjQWVaIpbyQ==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.7.tgz", + "integrity": "sha512-iYeMFpc/hMD+E6FNAZA5fgWeXnXr4rslOSPkeEV6TwdmpJ5lEXuWX0u9vFYs31P2MURctQq2batR09oeNj0LIg==", "dependencies": { - "glob": "^8.0.2", + "glob": "^8.1.0", "graceful-fs": "^4.2.10", "handlebars": "^4.7.7" }, @@ -2022,43 +1916,6 @@ "node": ">=v12.22.9" } }, - "node_modules/express-handlebars/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/express-handlebars/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/express-handlebars/node_modules/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/express/node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -2087,9 +1944,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -2127,9 +1984,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.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", "engines": { "node": ">=6" } @@ -2148,9 +2005,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -2227,12 +2084,13 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -2245,38 +2103,11 @@ "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, - "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==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", - "dependencies": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0", - "qs": "^6.11.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2293,63 +2124,46 @@ "node": ">= 0.6" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "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/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "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/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "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", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2367,10 +2181,21 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2402,24 +2227,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "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/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "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" }, @@ -2433,17 +2269,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", @@ -2453,6 +2278,28 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "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", @@ -2464,12 +2311,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, "node_modules/http-errors": { @@ -2511,9 +2361,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -2604,21 +2454,12 @@ "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.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2693,16 +2534,6 @@ "node": ">=10" } }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2714,6 +2545,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -2732,14 +2569,20 @@ "dev": true }, "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", @@ -2765,6 +2608,23 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2793,26 +2653,6 @@ "node": ">=6" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, "node_modules/load-json-file/node_modules/type-fest": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", @@ -2836,11 +2676,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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", @@ -2851,22 +2686,65 @@ "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.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "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", "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -2941,64 +2819,28 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/mri": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", @@ -3018,12 +2860,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -3038,9 +2874,9 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "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" }, @@ -3057,29 +2893,31 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/octokit": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.14.tgz", - "integrity": "sha512-z6cgZBFxirpFEQ1La8Lg83GCs5hOV2EPpkYYdjsGNbfQMv8qUGjq294MiRBCbZqLufviakGsPUxaNKe3JrPmsA==", - "dependencies": { - "@octokit/app": "^13.1.1", - "@octokit/core": "^4.0.4", - "@octokit/oauth-app": "^4.0.6", - "@octokit/plugin-paginate-rest": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^7.0.0", - "@octokit/plugin-retry": "^4.0.3", - "@octokit/plugin-throttling": "^5.0.0", - "@octokit/types": "^9.0.0" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.1.2.tgz", + "integrity": "sha512-MG5qmrTL5y8KYwFgE1A4JWmgfQBaIETE/lOlfwNYx1QOtCQHGVxkRJmdUJltFc1HVn73d61TlMhMyNTOtMl+ng==", + "dependencies": { + "@octokit/app": "^14.0.2", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-graphql": "^4.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/octokit-auth-probot": { @@ -3096,168 +2934,434 @@ "@octokit/core": ">=3.2" } }, - "node_modules/octokit/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/octokit/node_modules/@octokit/plugin-paginate-rest": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", - "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-app": { + "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/types": "^9.0.0" + "@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", + "deprecation": "^2.3.1", + "lru-cache": "^9.0.0", + "universal-github-app-jwt": "^1.1.1", + "universal-user-agent": "^6.0.0" }, "engines": { "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=4" } }, - "node_modules/octokit/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==", + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-app/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/auth-app/node_modules/@octokit/types": { + "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/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-app": { + "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": { - "ee-first": "1.1.1" + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 14" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-app/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "wrappy": "1" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-device": { + "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": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 14" } }, - "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, + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/auth-oauth-device/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-user": { + "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": { - "p-limit": "^3.0.2" + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/types": { + "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": "^18.0.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-token": { + "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": ">=6" + "node": ">= 14" } }, - "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==", - "dev": true, + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-unauthenticated": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", + "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", "dependencies": { - "callsites": "^3.0.0" + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0" }, "engines": { - "node": ">=6" + "node": ">= 14" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" + "node_modules/octokit-auth-probot/node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/types": { + "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": "^18.0.0" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + "node_modules/octokit-auth-probot/node_modules/@octokit/endpoint": { + "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", + "universal-user-agent": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, + "node_modules/octokit-auth-probot/node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "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": "^18.0.0" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/oauth-authorization-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", + "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, + "node_modules/octokit-auth-probot/node_modules/@octokit/oauth-methods": { + "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", + "@octokit/request-error": "^3.0.3", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 14" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/oauth-methods/node_modules/@octokit/types": { + "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": "^18.0.0" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/request": { + "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", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/request-error/node_modules/@octokit/types": { + "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": "^18.0.0" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/request/node_modules/@octokit/openapi-types": { + "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-probot/node_modules/@octokit/request/node_modules/@octokit/types": { + "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": "^18.0.0" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/octokit-auth-probot/node_modules/lru-cache": { + "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": "14 || >=16.14" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "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", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "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==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/path-parse": { @@ -3362,9 +3466,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": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" }, "node_modules/pino/node_modules/pino-std-serializers": { "version": "3.2.0", @@ -3458,9 +3562,9 @@ } }, "node_modules/probot": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.0.tgz", - "integrity": "sha512-I7qpD6myIt5eEqAOv14mrbdh4HdLG1MQgCHGQJpIj6rdDeQaacQDL2THlMSqIU2VBcdIRpLqNv7D0z2NG0la3w==", + "version": "12.3.3", + "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.3.tgz", + "integrity": "sha512-cdtKd+xISzi8sw6++BYBXleRknCA6hqUMoHj/sJqQBrjbNxQLhfeFCq9O2d0Z4eShsy5YFRR3MWwDKJ9uAE0CA==", "dependencies": { "@octokit/core": "^3.2.4", "@octokit/plugin-enterprise-compatibility": "^1.2.8", @@ -3469,7 +3573,7 @@ "@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", @@ -3511,6 +3615,19 @@ "@octokit/types": "^6.0.3" } }, + "node_modules/probot/node_modules/@octokit/auth-token/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/auth-token/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/probot/node_modules/@octokit/core": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", @@ -3525,6 +3642,19 @@ "universal-user-agent": "^6.0.0" } }, + "node_modules/probot/node_modules/@octokit/core/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/probot/node_modules/@octokit/endpoint": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", @@ -3535,6 +3665,19 @@ "universal-user-agent": "^6.0.0" } }, + "node_modules/probot/node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/probot/node_modules/@octokit/graphql": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", @@ -3545,11 +3688,24 @@ "universal-user-agent": "^6.0.0" } }, - "node_modules/probot/node_modules/@octokit/openapi-types": { + "node_modules/probot/node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": { "version": "12.11.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" }, + "node_modules/probot/node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + }, "node_modules/probot/node_modules/@octokit/plugin-paginate-rest": { "version": "2.21.3", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", @@ -3561,6 +3717,19 @@ "@octokit/core": ">=2" } }, + "node_modules/probot/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/probot/node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "5.16.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", @@ -3573,6 +3742,19 @@ "@octokit/core": ">=3" } }, + "node_modules/probot/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/probot/node_modules/@octokit/plugin-retry": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", @@ -3582,10 +3764,23 @@ "bottleneck": "^2.15.3" } }, - "node_modules/probot/node_modules/@octokit/plugin-throttling": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", - "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", + "node_modules/probot/node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/plugin-throttling": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", + "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", "dependencies": { "@octokit/types": "^6.0.1", "bottleneck": "^2.15.3" @@ -3594,6 +3789,19 @@ "@octokit/core": "^3.5.0" } }, + "node_modules/probot/node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/probot/node_modules/@octokit/request": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", @@ -3617,7 +3825,25 @@ "once": "^1.4.0" } }, - "node_modules/probot/node_modules/@octokit/types": { + "node_modules/probot/node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/request/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/request/node_modules/@octokit/types": { "version": "6.41.0", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", @@ -3625,10 +3851,18 @@ "@octokit/openapi-types": "^12.11.0" } }, + "node_modules/probot/node_modules/@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, "node_modules/probot/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", @@ -3662,14 +3896,6 @@ "node": ">=10" } }, - "node_modules/probot/node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/probot/node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -3693,11 +3919,6 @@ "node": ">=10" } }, - "node_modules/probot/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/process-warning": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", @@ -3791,9 +4012,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3828,11 +4049,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" }, @@ -3882,6 +4103,48 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3930,9 +4193,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "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" }, @@ -3954,11 +4217,6 @@ "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", @@ -4014,6 +4272,20 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -4063,24 +4335,25 @@ } }, "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": "2.0.0", + "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-2.0.0.tgz", + "integrity": "sha512-LqJAAU4uayG909u8q3lBQZma9TDsQl2pOoXCqrsAda58oxy2o81yQAeBvFc2ilexgQDJc3YPDoPgViBM26M8vw==", "dependencies": { - "commander": "^2.19.0", - "eventsource": "^1.1.0", - "morgan": "^1.9.1", - "superagent": "^7.1.3", - "validator": "^13.7.0" + "commander": "^11.1.0", + "eventsource": "^2.0.2", + "validator": "^13.11.0" }, "bin": { "smee": "bin/smee.js" } }, "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==" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "engines": { + "node": ">=16" + } }, "node_modules/sonic-boom": { "version": "2.8.0", @@ -4099,9 +4372,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" } @@ -4144,6 +4417,14 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4155,38 +4436,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/superagent": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", - "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=6.4.0 <13 || >=14" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4241,26 +4490,23 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, "engines": { - "node": ">= 6" + "node": ">=16.13.0" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "typescript": ">=4.2.0" } }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4298,15 +4544,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -4321,6 +4568,11 @@ "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", @@ -4331,9 +4583,9 @@ } }, "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", @@ -4361,9 +4613,9 @@ } }, "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -4391,9 +4643,9 @@ } }, "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "engines": { "node": ">= 0.10" } @@ -4435,15 +4687,6 @@ "node": ">= 8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -4454,6 +4697,11 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "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/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -4466,3427 +4714,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", - "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", - "dev": true - }, - "@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@octokit/app": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@octokit/app/-/app-13.1.1.tgz", - "integrity": "sha512-83TPUMWPAWaACe8AJVBlg6gptbDJk/33C/0V9e0yWfBqXINqF2ZutctQIcrRcyWBPlfYmFElPbElMqlspe8UWg==", - "requires": { - "@octokit/auth-app": "^4.0.8", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/core": "^4.0.0", - "@octokit/oauth-app": "^4.0.7", - "@octokit/plugin-paginate-rest": "^5.0.0", - "@octokit/types": "^8.0.0", - "@octokit/webhooks": "^10.0.0" - } - }, - "@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==", - "requires": { - "@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", - "universal-github-app-jwt": "^1.1.1", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" - }, - "@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "requires": { - "@octokit/openapi-types": "^16.0.0" - } - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "@octokit/auth-oauth-app": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.4.tgz", - "integrity": "sha512-zlWuii5hAN50vsV6SJC+uIJ7SMhyWjQMEmKJQxkmNDlieE9LjnkZnbOjqRsfcG7VO7WTl4K8ccpo/3A7Kdpmrw==", - "requires": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", - "@types/btoa-lite": "^1.0.0", - "btoa-lite": "^1.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/auth-oauth-device": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.3.tgz", - "integrity": "sha512-KPTx5nMntKjNZzzltO3X4T68v22rd7Cp/TcLJXQE2U8aXPcZ9LFuww9q9Q5WUNSu3jwi3lRwzfkPguRfz1R8Vg==", - "requires": { - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/auth-oauth-user": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.0.tgz", - "integrity": "sha512-TC2Mj8NkSy9uAnZLYX+FKB/IH6uDe+qYNzHzH8l13JlzsrTE7GKkcqtXdSGGN4tncyROAB4/KS5rDPRCEnWHlA==", - "requires": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", - "btoa-lite": "^1.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/auth-token": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", - "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", - "requires": { - "@octokit/types": "^8.0.0" - } - }, - "@octokit/auth-unauthenticated": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.3.tgz", - "integrity": "sha512-IyfLo1T5GmIC9+07hHGlD3gHtZI1Bona8PLhHXUnwcYDuZt0BhjlNJDYMoPG21C4r7v7+ZSxQHBKrGgkxpYb7A==", - "requires": { - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0" - } - }, - "@octokit/core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", - "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", - "requires": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", - "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", - "requires": { - "@octokit/types": "^8.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", - "requires": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/oauth-app": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.2.0.tgz", - "integrity": "sha512-gyGclT77RQMkVUEW3YBeAKY+LBSc5u3eC9Wn/Uwt3WhuKuu9mrV18EnNpDqmeNll+mdV02yyBROU29Tlili6gg==", - "requires": { - "@octokit/auth-oauth-app": "^5.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/core": "^4.0.0", - "@octokit/oauth-authorization-url": "^5.0.0", - "@octokit/oauth-methods": "^2.0.0", - "@types/aws-lambda": "^8.10.83", - "fromentries": "^1.3.1", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/oauth-authorization-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", - "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==" - }, - "@octokit/oauth-methods": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.4.tgz", - "integrity": "sha512-RDSa6XL+5waUVrYSmOlYROtPq0+cfwppP4VaQY/iIei3xlFb0expH6YNsxNrZktcLhJWSpm9uzeom+dQrXlS3A==", - "requires": { - "@octokit/oauth-authorization-url": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", - "btoa-lite": "^1.0.0" - } - }, - "@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" - }, - "@octokit/plugin-enterprise-compatibility": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz", - "integrity": "sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ==", - "requires": { - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.0.3" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/plugin-paginate-rest": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz", - "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==", - "requires": { - "@octokit/types": "^8.0.0" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "requires": {} - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz", - "integrity": "sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.3.1" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" - }, - "@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "requires": { - "@octokit/openapi-types": "^16.0.0" - } - } - } - }, - "@octokit/plugin-retry": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.0.3.tgz", - "integrity": "sha512-tDR+4Cs9GPPNJ7/RjTEq5ty2wqjKe1hRUV7/hch+nORow5LshlHXTT1qfYNsFPw3S9szvFFAfDEFq/xwrEpL7g==", - "requires": { - "@octokit/types": "^8.0.0", - "bottleneck": "^2.15.3" - } - }, - "@octokit/plugin-throttling": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.0.1.tgz", - "integrity": "sha512-I4qxs7wYvYlFuY3PAUGWAVPhFXG3RwnvTiSr5Fu/Auz7bYhDLnzS2MjwV8nGLq/FPrWwYiweeZrI5yjs1YG4tQ==", - "requires": { - "@octokit/types": "^9.0.0", - "bottleneck": "^2.15.3" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" - }, - "@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "requires": { - "@octokit/openapi-types": "^16.0.0" - } - } - } - }, - "@octokit/request": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", - "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", - "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", - "requires": { - "@octokit/types": "^8.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "19.0.7", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.7.tgz", - "integrity": "sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==", - "requires": { - "@octokit/core": "^4.1.0", - "@octokit/plugin-paginate-rest": "^6.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^7.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" - }, - "@octokit/plugin-paginate-rest": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", - "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", - "requires": { - "@octokit/types": "^9.0.0" - } - }, - "@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "requires": { - "@octokit/openapi-types": "^16.0.0" - } - } - } - }, - "@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", - "requires": { - "@octokit/openapi-types": "^14.0.0" - } - }, - "@octokit/webhooks": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.6.0.tgz", - "integrity": "sha512-fCo4bezvS5k9ocmKKVs5f8dzuRKlSYIodK1bxSAmbamFZnKec8STova0ZWQqKuZwPMaWLoocZsJSOA0Silq7UQ==", - "requires": { - "@octokit/request-error": "^3.0.0", - "@octokit/webhooks-methods": "^3.0.0", - "@octokit/webhooks-types": "6.7.0", - "aggregate-error": "^3.1.0" - } - }, - "@octokit/webhooks-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.2.tgz", - "integrity": "sha512-Vlnv5WBscf07tyAvfDbp7pTkMZUwk7z7VwEF32x6HqI+55QRwBTcT+D7DDjZXtad/1dU9E32x0HmtDlF9VIRaQ==" - }, - "@octokit/webhooks-types": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.7.0.tgz", - "integrity": "sha512-bykm7UkSnxmb2uhSfcLM1Pity/LQ6ZBSdzy9HU0vXjR+2g+tzlmRhXb7Go8oj0TlgO+vDrTivGXju6zkzOGKjA==" - }, - "@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==", - "requires": { - "@types/is-base64": "^1.1.0", - "is-base64": "^1.1.0" - } - }, - "@probot/octokit-plugin-config": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@probot/octokit-plugin-config/-/octokit-plugin-config-1.1.6.tgz", - "integrity": "sha512-L29wmnFvilzSfWn9tUgItxdLv0LJh2ICjma3FmLr80Spu3wZ9nHyRrKMo9R5/K2m7VuWmgoKnkgRt2zPzAQBEQ==", - "requires": { - "@types/js-yaml": "^4.0.5", - "js-yaml": "^4.1.0" - } - }, - "@probot/pino": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@probot/pino/-/pino-2.3.5.tgz", - "integrity": "sha512-IiyiNZonMw1dHC4EAdD55y5owV733d9Gll/IKsrLikB7EJ54+eMCOtL/qo+OmgWN9XV3NTDfziEQF2og/OBKog==", - "requires": { - "@sentry/node": "^6.0.0", - "pino-pretty": "^6.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "split2": "^4.0.0" - } - }, - "@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", - "requires": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "requires": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - } - }, - "@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" - }, - "@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", - "requires": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@types/aws-lambda": { - "version": "8.10.109", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.109.tgz", - "integrity": "sha512-/ME92FneNyXQzrAfcnQQlW1XkCZGPDlpi2ao1MJwecN+6SbeonKeggU8eybv1DfKli90FAVT1MlIZVXfwVuCyg==" - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@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==" - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.32", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", - "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/ioredis": { - "version": "4.28.10", - "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", - "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", - "requires": { - "@types/node": "*" - } - }, - "@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==" - }, - "@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==", - "requires": { - "@types/node": "*" - } - }, - "@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==" - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" - }, - "@types/node-fetch": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.3.tgz", - "integrity": "sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==", - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/pino": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz", - "integrity": "sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==", - "requires": { - "@types/node": "*", - "@types/pino-pretty": "*", - "@types/pino-std-serializers": "*", - "sonic-boom": "^2.1.0" - } - }, - "@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==", - "requires": { - "@types/pino": "6.3" - } - }, - "@types/pino-pretty": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz", - "integrity": "sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==", - "requires": { - "pino-pretty": "*" - } - }, - "@types/pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==", - "requires": { - "pino-std-serializers": "*" - } - }, - "@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==" - }, - "@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==" - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz", - "integrity": "sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/type-utils": "5.59.0", - "@typescript-eslint/utils": "5.59.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.0.tgz", - "integrity": "sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.0.tgz", - "integrity": "sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz", - "integrity": "sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.59.0", - "@typescript-eslint/utils": "5.59.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", - "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz", - "integrity": "sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.0.tgz", - "integrity": "sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz", - "integrity": "sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "args": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", - "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", - "requires": { - "camelcase": "5.0.0", - "chalk": "2.4.2", - "leven": "2.1.0", - "mri": "1.1.4" - }, - "dependencies": { - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "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==" - }, - "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==" - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" - }, - "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==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" - }, - "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", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" - }, - "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==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", - "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.38.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true - }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==" - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "express-handlebars": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.6.tgz", - "integrity": "sha512-E4QHYCh+9fyfdBEb8uKJ8p6HD4qq/sUSHBq83lRNlLJp2TQKEg2nFJYbVdC+M3QzaV19dODe43lgjQWVaIpbyQ==", - "requires": { - "glob": "^8.0.2", - "graceful-fs": "^4.2.10", - "handlebars": "^4.7.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==" - }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", - "requires": { - "punycode": "^1.3.2" - } - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "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==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", - "requires": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0", - "qs": "^6.11.0" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "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==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "requires": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - } - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "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==" - }, - "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==", - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==" - }, - "joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==" - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "requires": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - } - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "requires": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "mri": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", - "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "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==" - }, - "octokit": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.14.tgz", - "integrity": "sha512-z6cgZBFxirpFEQ1La8Lg83GCs5hOV2EPpkYYdjsGNbfQMv8qUGjq294MiRBCbZqLufviakGsPUxaNKe3JrPmsA==", - "requires": { - "@octokit/app": "^13.1.1", - "@octokit/core": "^4.0.4", - "@octokit/oauth-app": "^4.0.6", - "@octokit/plugin-paginate-rest": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^7.0.0", - "@octokit/plugin-retry": "^4.0.3", - "@octokit/plugin-throttling": "^5.0.0", - "@octokit/types": "^9.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" - }, - "@octokit/plugin-paginate-rest": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", - "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", - "requires": { - "@octokit/types": "^9.0.0" - } - }, - "@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "requires": { - "@octokit/openapi-types": "^16.0.0" - } - } - } - }, - "octokit-auth-probot": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/octokit-auth-probot/-/octokit-auth-probot-1.2.9.tgz", - "integrity": "sha512-mMjw6Y760EwJnW2tSVooJK8BMdsG6D40SoCclnefVf/5yWjaNVquEu8NREBVWb60OwbpnMEz4vREXHB5xdMFYQ==", - "requires": { - "@octokit/auth-app": "^4.0.2", - "@octokit/auth-token": "^3.0.0", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/types": "^8.0.0" - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "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, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "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==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "pino": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", - "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", - "requires": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "process-warning": "^1.0.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - }, - "dependencies": { - "pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" - }, - "sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", - "requires": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" - } - } - } - }, - "pino-http": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-5.8.0.tgz", - "integrity": "sha512-YwXiyRb9y0WCD1P9PcxuJuh3Dc5qmXde/paJE86UGYRdiFOi828hR9iUGmk5gaw6NBT9gLtKANOHFimvh19U5w==", - "requires": { - "fast-url-parser": "^1.1.3", - "pino": "^6.13.0", - "pino-std-serializers": "^4.0.0" - }, - "dependencies": { - "pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" - } - } - }, - "pino-pretty": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-6.0.0.tgz", - "integrity": "sha512-jyeR2fXXWc68st1DTTM5NhkHlx8p+1fKZMfm84Jwq+jSw08IwAjNaZBZR6ts69hhPOfOjg/NiE1HYW7vBRPL3A==", - "requires": { - "@hapi/bourne": "^2.0.0", - "args": "^5.0.1", - "colorette": "^1.3.0", - "dateformat": "^4.5.1", - "fast-safe-stringify": "^2.0.7", - "jmespath": "^0.15.0", - "joycon": "^3.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "rfdc": "^1.3.0", - "split2": "^3.1.1", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - } - } - } - }, - "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==" - }, - "pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "requires": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - } - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "probot": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.0.tgz", - "integrity": "sha512-I7qpD6myIt5eEqAOv14mrbdh4HdLG1MQgCHGQJpIj6rdDeQaacQDL2THlMSqIU2VBcdIRpLqNv7D0z2NG0la3w==", - "requires": { - "@octokit/core": "^3.2.4", - "@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", - "@probot/get-private-key": "^1.1.0", - "@probot/octokit-plugin-config": "^1.0.0", - "@probot/pino": "^2.2.0", - "@types/express": "^4.17.9", - "@types/ioredis": "^4.27.1", - "@types/pino": "^6.3.4", - "@types/pino-http": "^5.0.6", - "commander": "^6.2.0", - "deepmerge": "^4.2.2", - "deprecation": "^2.3.1", - "dotenv": "^8.2.0", - "eventsource": "^2.0.2", - "express": "^4.17.1", - "express-handlebars": "^6.0.3", - "ioredis": "^4.27.8", - "js-yaml": "^3.14.1", - "lru-cache": "^6.0.0", - "octokit-auth-probot": "^1.2.2", - "pino": "^6.7.0", - "pino-http": "^5.3.0", - "pkg-conf": "^3.1.0", - "resolve": "^1.19.0", - "semver": "^7.3.4", - "update-dotenv": "^1.1.1", - "uuid": "^8.3.2" - }, - "dependencies": { - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "requires": { - "@octokit/types": "^6.0.3" - } - }, - "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "requires": { - "@octokit/types": "^6.40.0" - } - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "requires": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - } - }, - "@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "requires": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" - } - }, - "@octokit/plugin-throttling": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", - "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", - "requires": { - "@octokit/types": "^6.0.1", - "bottleneck": "^2.15.3" - } - }, - "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "@octokit/webhooks": { - "version": "9.26.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.0.tgz", - "integrity": "sha512-foZlsgrTDwAmD5j2Czn6ji10lbWjGDVsUxTIydjG9KTkAWKJrFapXJgO5SbGxRwfPd3OJdhK3nA2YPqVhxLXqA==", - "requires": { - "@octokit/request-error": "^2.0.2", - "@octokit/webhooks-methods": "^2.0.0", - "@octokit/webhooks-types": "5.8.0", - "aggregate-error": "^3.1.0" - } - }, - "@octokit/webhooks-methods": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz", - "integrity": "sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==" - }, - "@octokit/webhooks-types": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", - "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - }, - "eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "process-warning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", - "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "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==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" - }, - "redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "requires": { - "redis-errors": "^1.0.0" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "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==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "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==", - "requires": { - "commander": "^2.19.0", - "eventsource": "^1.1.0", - "morgan": "^1.9.1", - "superagent": "^7.1.3", - "validator": "^13.7.0" - }, - "dependencies": { - "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==" - } - } - }, - "sonic-boom": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", - "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", - "requires": { - "atomic-sleep": "^1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "superagent": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", - "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, - "dependencies": { - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" - }, - "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==", - "optional": true - }, - "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==", - "requires": { - "@types/jsonwebtoken": "^9.0.0", - "jsonwebtoken": "^9.0.0" - } - }, - "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==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-dotenv": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-dotenv/-/update-dotenv-1.1.1.tgz", - "integrity": "sha512-3cIC18In/t0X/yH793c00qqxcKD8jVCgNOPif/fGQkFpYMGecM9YAc+kaAKXuZsM2dE9I9wFI7KvAuNX22SGMQ==", - "requires": {} - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } } } diff --git a/package.json b/package.json index fb91bff..1f8a22f 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,54 @@ { "name": "typeslint-cli", - "version": "2.4.0-1", + "version": "3.0.0", "private": true, - "description": "GitHub REST API", - "author": "Muunatic", + "description": "GitHub Workflow Apps", + "homepage": "https://typeslint.com/github-autoresponse", + "author": "Typeslint", "license": "ISC", "scripts": { - "build": "tsc", - "build:start": "tsc && probot run ./dist/index.js", + "build": "tsc --build --verbose", + "build:start": "tsc --build --verbose && probot run ./dist/index.js", "start": "probot run ./dist/index.js", - "lint": "eslint .", - "lint:fix": "eslint . --fix" + "test": "eslint .", + "lint": "npx eslint src/**/*.ts", + "lint:fix": "npx eslint src/**/*.ts --fix" }, "dependencies": { - "@octokit/auth-app": "4.0.9", - "@octokit/rest": "^19.0.7", - "@types/node": "^18.15.11", - "@types/node-fetch": "2.6.3", - "dotenv": "^16.0.3", - "node-fetch": "2.6.9", - "octokit": "^2.0.14", - "probot": "^12.3.0", - "smee-client": "^1.2.3", - "typescript": "4.9.5" + "dotenv": "^16.3.1", + "octokit": "^3.1.2", + "probot": "^12.3.3", + "smee-client": "^2.0.0" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "eslint": "^8.38.0" + "@octokit/auth-app": "^6.0.2", + "@octokit/rest": "^20.0.2", + "@types/node": "^18.19.3", + "@typescript-eslint/eslint-plugin": "^6.16.0", + "@typescript-eslint/parser": "^6.16.0", + "eslint": "^8.56.0", + "typescript": "5.3.3" }, "engines": { - "node": ">=16.19.1", - "npm": ">=8.19.3" - } + "node": ">=18.19.0", + "npm": ">=10.2.3" + }, + "repository": { + "type": "git", + "url": "https://github.com/Typeslint/github-AutoResponse" + }, + "bugs": { + "url": "https://github.com/Typeslint/github-AutoResponse/issues", + "email": "support@typeslint.com" + }, + "maintainers": [ + { + "name": "Muunatic", + "url": "https://github.com/Muunatic" + }, + { + "name": "Haruyaki", + "url": "https://github.com/HarunamiYaki" + } + ] }