reviewbot

Source code for the is-a.dev r...
Log | Files | Refs | README | LICENSE

commit 64ff14beb9c9aab0b53c45e13ec93c662c489a83
parent 88b3155208ee41ccd97a7771a670328a91685f81
Author: iostpa <iostpa@iostpa.com>
Date:   Sat,  6 Jun 2026 13:06:49 +0300

Add prettier

Diffstat:
A.prettierignore | 17+++++++++++++++++
Mbun.lock | 3+++
Mpackage.json | 1+
Aprettier.config.js | 12++++++++++++
Msrc/index.js | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Msrc/tools/numberofdays.js | 3+--
Msrc/webhooks/closed.js | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Msrc/webhooks/labeled.js | 135+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Msrc/webhooks/opened.js | 126++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Msrc/webhooks/unlabeled.js | 20+++++++++++++-------
10 files changed, 396 insertions(+), 153 deletions(-)

diff --git a/.prettierignore b/.prettierignore @@ -0,0 +1,16 @@ +Dockerfile* +docker-compose* +.dockerignore +.git +.gitignore +README.me +LICENSE +.env.example +.github +CONTRIBUTING.md +package.json +bun.lock +src/message +README.md +eslint.config.js +prettier.config.js+ \ No newline at end of file diff --git a/bun.lock b/bun.lock @@ -19,6 +19,7 @@ "@eslint/js": "^10.0.1", "eslint": "^10.4.1", "globals": "^17.6.0", + "prettier": "3.8.3", "smee-client": "^5.0.0", }, }, @@ -324,6 +325,8 @@ "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + "prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="], + "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], diff --git a/package.json b/package.json @@ -13,6 +13,7 @@ "@eslint/js": "^10.0.1", "eslint": "^10.4.1", "globals": "^17.6.0", + "prettier": "3.8.3", "smee-client": "^5.0.0" }, "dependencies": { diff --git a/prettier.config.js b/prettier.config.js @@ -0,0 +1,12 @@ +/** + * @see https://prettier.io/docs/configuration + * @type {import("prettier").Config} + */ +const config = { + trailingComma: 'es5', + semi: true, + tabWidth: 4, + singleQuote: true, +}; + +export default config; diff --git a/src/index.js b/src/index.js @@ -21,11 +21,13 @@ dotenv.config(); const sentryDsn = process.env.SENTRY; const appId = process.env.APP_ID; const installationId = process.env.INSTALLATION_ID; -const privateKey = fs.readFileSync(path.resolve(process.env.PRIVATE_KEY_PATH), 'utf8'); +const privateKey = fs.readFileSync( + path.resolve(process.env.PRIVATE_KEY_PATH), + 'utf8' +); const secret = process.env.WEBHOOK_SECRET; export const numberOfDays = 3; - Sentry.init({ dsn: sentryDsn, // Tracing @@ -44,7 +46,7 @@ export const pool = mariadb.createPool({ port: process.env.SQL_PORT, database: process.env.SQL_DB_NAME, ssl: false, - connectionLimit: 5 + connectionLimit: 5, }); // Create an authenticated Octokit client authenticated as a GitHub App @@ -52,8 +54,8 @@ const app = new App({ appId, privateKey, webhooks: { - secret - } + secret, + }, }); const appOctokit = await app.getInstallationOctokit(installationId); @@ -77,7 +79,6 @@ const { data } = await app.octokit.request('/app'); // https://github.com/octokit/core.js#logging app.octokit.log.debug(`Authenticated as '${data.name}'`); - // Check if a low priority pull request has been in the database for over 3 days let job = new CronJob( '0 * * * *', // cronTime @@ -92,14 +93,21 @@ let job = new CronJob( let parsed = JSON.parse(resJson); for (let i in parsed) { if (getNumberOfDays(parsed[i].time, date) >= numberOfDays) { - await conn.query(`DELETE FROM LIST WHERE time=(?)`, [parsed[i].time]); - await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', { - owner: parsed[i].repoowner, - repo: parsed[i].repo, - issue_number: parsed[i].prnumber, - name: "status: low priority", - }); - console.log(`Removed #${parsed[i].prnumber} from the database since it has existed for 3 or more days.`); + await conn.query(`DELETE FROM LIST WHERE time=(?)`, [ + parsed[i].time, + ]); + await appOctokit.request( + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', + { + owner: parsed[i].repoowner, + repo: parsed[i].repo, + issue_number: parsed[i].prnumber, + name: 'status: low priority', + } + ); + console.log( + `Removed #${parsed[i].prnumber} from the database since it has existed for 3 or more days.` + ); } } } else if (resJson === '[]') { @@ -109,7 +117,9 @@ let job = new CronJob( Sentry.captureException(error); fastify.log.error(error); if (error.response) { - console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`); + console.error( + `Error! Status: ${error.response.status}. Message: ${error.response.data.message}` + ); } else { console.error(error); } @@ -124,12 +134,22 @@ let job = new CronJob( app.webhooks.on('pull_request.opened', async ({ payload }) => { try { - await opened(appOctokit, payload.repository.owner.login, payload.repository.name, payload.repository.full_name, payload.pull_request.number, payload.pull_request.user.login, payload.pull_request.draft); + await opened( + appOctokit, + payload.repository.owner.login, + payload.repository.name, + payload.repository.full_name, + payload.pull_request.number, + payload.pull_request.user.login, + payload.pull_request.draft + ); } catch (error) { Sentry.captureException(error); fastify.log.error(error); if (error.response) { - console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`); + console.error( + `Error! Status: ${error.response.status}. Message: ${error.response.data.message}` + ); } else { console.error(error); } @@ -138,14 +158,27 @@ app.webhooks.on('pull_request.opened', async ({ payload }) => { // https://github.com/octokit/webhooks.js/?tab=readme-ov-file#webhook-events app.webhooks.on('pull_request.closed', async ({ payload }) => { - console.log(`Received a closed pull request event for #${payload.pull_request.number} on https://github.com/${payload.repository.full_name}`); + console.log( + `Received a closed pull request event for #${payload.pull_request.number} on https://github.com/${payload.repository.full_name}` + ); try { - await closed(appOctokit, payload.pull_request.merged, payload.repository.owner.login, payload.repository.name, payload.repository.full_name, payload.pull_request.number, payload.pull_request.user.login, payload.sender.login); + await closed( + appOctokit, + payload.pull_request.merged, + payload.repository.owner.login, + payload.repository.name, + payload.repository.full_name, + payload.pull_request.number, + payload.pull_request.user.login, + payload.sender.login + ); } catch (error) { Sentry.captureException(error); fastify.log.error(error); if (error.response) { - console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`); + console.error( + `Error! Status: ${error.response.status}. Message: ${error.response.data.message}` + ); } else { console.error(error); } @@ -155,12 +188,23 @@ app.webhooks.on('pull_request.closed', async ({ payload }) => { // Label system app.webhooks.on('pull_request.labeled', async ({ payload }) => { try { - await labeled(appOctokit, payload.label.name, payload.repository.owner.login, payload.repository.name, payload.repository.full_name, payload.pull_request.number, payload.pull_request.updated_at, payload.pull_request.user.login); + await labeled( + appOctokit, + payload.label.name, + payload.repository.owner.login, + payload.repository.name, + payload.repository.full_name, + payload.pull_request.number, + payload.pull_request.updated_at, + payload.pull_request.user.login + ); } catch (error) { Sentry.captureException(error); fastify.log.error(error); if (error.response) { - console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`); + console.error( + `Error! Status: ${error.response.status}. Message: ${error.response.data.message}` + ); } else { console.error(error); } @@ -169,25 +213,31 @@ app.webhooks.on('pull_request.labeled', async ({ payload }) => { app.webhooks.on('pull_request.unlabeled', async ({ payload }) => { try { - await unlabeled(payload.label.name, payload.pull_request.user.login, payload.pull_request.number, payload.repository.full_name); + await unlabeled( + payload.label.name, + payload.pull_request.user.login, + payload.pull_request.number, + payload.repository.full_name + ); } catch (error) { Sentry.captureException(error); fastify.log.error(error); if (error.response) { - console.error(`Error! Status: ${error.response.status}. Message: ${error.response.data.message}`); + console.error( + `Error! Status: ${error.response.status}. Message: ${error.response.data.message}` + ); } else { console.error(error); } } }); - // Handle errors app.webhooks.onError((error) => { Sentry.captureException(error); fastify.log.error(error); if (error.name === 'AggregateError') { - // Log Secret verification errors + // Log Secret verification errors console.log(`Error processing request: ${error.event}`); } else { console.log(error); @@ -204,7 +254,7 @@ const localWebhookUrl = `http://${host}:${port}${webhookPath}`; const middleware = createNodeMiddleware(app.webhooks, { path: webhookPath }); const fastify = Fastify({ - logger: false + logger: false, }); await fastify.register(middie); fastify.use(middleware); @@ -221,4 +271,4 @@ http.createServer(middleware).listen(port, () => { console.log(`Server is listening for events at: ${localWebhookUrl}`) console.log('Press Ctrl + C to quit.') }) -*/- \ No newline at end of file +*/ diff --git a/src/tools/numberofdays.js b/src/tools/numberofdays.js @@ -12,4 +12,4 @@ export function getNumberOfDays(start, end) { const diffInDays = Math.round(diffInTime / oneDay); return diffInDays; -};- \ No newline at end of file +} diff --git a/src/webhooks/closed.js b/src/webhooks/closed.js @@ -2,81 +2,131 @@ import { pool } from '../index'; import fs from 'fs'; import path from 'path'; -const ignoreLabels = ["maintainer"]; -const mergedPRs = fs.readFileSync(path.join(__dirname, '../message/merged.md'), 'utf8'); -const unremovableLabels = ["maintainer", "ci: bypass-owner-check", "no-stale", "r: william"]; -const reviewerUsernames = ["DEV-DIBSTER", "dragsbruh", "iostpa", "notamitgamer", "omsenjalia", "orangci", "satr14washere", "Stef-00012", "STICKnoLOGIC", "wdhdev", "Yunexiz"]; +const ignoreLabels = ['maintainer']; +const mergedPRs = fs.readFileSync( + path.join(__dirname, '../message/merged.md'), + 'utf8' +); +const unremovableLabels = [ + 'maintainer', + 'ci: bypass-owner-check', + 'no-stale', + 'r: william', +]; +const reviewerUsernames = [ + 'DEV-DIBSTER', + 'dragsbruh', + 'iostpa', + 'notamitgamer', + 'omsenjalia', + 'orangci', + 'satr14washere', + 'Stef-00012', + 'STICKnoLOGIC', + 'wdhdev', + 'Yunexiz', +]; -export async function closed(appOctokit, prMerged, repoOwner, repoName, repoFullName, prNumber, prUsername, prSender) { +export async function closed( + appOctokit, + prMerged, + repoOwner, + repoName, + repoFullName, + prNumber, + prUsername, + prSender +) { let conn; try { if (prMerged === true) { const labels = await appOctokit.rest.issues.listLabelsOnIssue({ owner: repoOwner, - repo: repoName, - issue_number: prNumber + repo: repoName, + issue_number: prNumber, }); const allLabels = labels.data.map((label) => label.name); if (ignoreLabels.some((label) => allLabels.includes(label))) { return; - } + } await appOctokit.rest.issues.createComment({ owner: repoOwner, repo: repoName, issue_number: prNumber, - body: mergedPRs + body: mergedPRs, }); - console.log(`Sent a merged message to #${prNumber} on https://github.com/${repoFullName}`); - + console.log( + `Sent a merged message to #${prNumber} on https://github.com/${repoFullName}` + ); + // remove almost all labels if there are any const listOfLabels = []; - const data = await appOctokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}', { - owner: repoOwner, - repo: repoName, - pull_number: prNumber - }); + const data = await appOctokit.request( + 'GET /repos/{owner}/{repo}/pulls/{pull_number}', + { + owner: repoOwner, + repo: repoName, + pull_number: prNumber, + } + ); const labelData = data.data.labels; for (let i in labelData) { if (labelData[i].name) { listOfLabels.push(labelData[i].name); } - } + } for (let i in listOfLabels) { if (!listOfLabels.includes(unremovableLabels)) { - await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', { - owner: repoOwner, - repo: repoName, - issue_number: prNumber, - name: listOfLabels[i], - }); - } else if (listOfLabels[i] == "status: low priority") { + await appOctokit.request( + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', + { + owner: repoOwner, + repo: repoName, + issue_number: prNumber, + name: listOfLabels[i], + } + ); + } else if (listOfLabels[i] == 'status: low priority') { return; } else if (unremovableLabels.includes(listOfLabels[i])) { return; } } - console.log(`Removed all labels from #${prNumber} on https://github.com/${repoFullName}`); + console.log( + `Removed all labels from #${prNumber} on https://github.com/${repoFullName}` + ); } else { conn = await pool.getConnection(); - let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [prUsername]); + let res = await conn.query( + `SELECT * FROM LIST WHERE username=(?)`, + [prUsername] + ); let resJson = JSON.stringify(res); - if (resJson !== "[]") { + if (resJson !== '[]') { let parsed = JSON.parse(resJson); if (reviewerUsernames.includes(prSender)) { - res = await conn.query("DELETE FROM LIST WHERE username=(?)", [parsed[0].username]); - await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', { - owner: repoOwner, - repo: repoName, - issue_number: prNumber, - name: "status: low priority", - }); - console.log(`Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.`); + res = await conn.query( + 'DELETE FROM LIST WHERE username=(?)', + [parsed[0].username] + ); + await appOctokit.request( + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', + { + owner: repoOwner, + repo: repoName, + issue_number: prNumber, + name: 'status: low priority', + } + ); + console.log( + `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.` + ); } } - }; + } } finally { if (conn) conn.end; } -}- \ No newline at end of file +} diff --git a/src/webhooks/labeled.js b/src/webhooks/labeled.js @@ -2,28 +2,59 @@ import { pool } from '../index'; import fs from 'fs'; import path from 'path'; -const reasonLabels = ["reason: abuse risk", "reason: commercial usage", "reason: impersonation", "reason: inaccessible website", "reason: incomplete pr", "reason: incomplete website", "reason: invalid file", "reason: invalid records", "reason: invalid social", "reason: merge conflict", "reason: not dev related", "reason: nsfw", "reason: other", "reason: unauthorized", "reason: incompatible records"]; -const lowPriorityMessage = fs.readFileSync(path.join(__dirname, '../message/label/lowpriority.md'), 'utf8'); +const reasonLabels = [ + 'reason: abuse risk', + 'reason: commercial usage', + 'reason: impersonation', + 'reason: inaccessible website', + 'reason: incomplete pr', + 'reason: incomplete website', + 'reason: invalid file', + 'reason: invalid records', + 'reason: invalid social', + 'reason: merge conflict', + 'reason: not dev related', + 'reason: nsfw', + 'reason: other', + 'reason: unauthorized', + 'reason: incompatible records', +]; +const lowPriorityMessage = fs.readFileSync( + path.join(__dirname, '../message/label/lowpriority.md'), + 'utf8' +); -export async function labeled(appOctokit, prLabelName, repoOwner, repoName, repoFullName, prNumber, prUpdatedAt, prUsername) { +export async function labeled( + appOctokit, + prLabelName, + repoOwner, + repoName, + repoFullName, + prNumber, + prUpdatedAt, + prUsername +) { let denied, invalid, lowpriority; - if (prLabelName === "status: denied") { + if (prLabelName === 'status: denied') { denied = true; - } else if (prLabelName === "status: invalid") { + } else if (prLabelName === 'status: invalid') { invalid = true; - } else if (prLabelName === "status: low priority") { + } else if (prLabelName === 'status: low priority') { lowpriority = true; } if (denied === true || invalid === true) { const listOfLabels = []; // timeout so that it creates a little time window for the maintainer to add the rest of the labels - await new Promise(resolve => setTimeout(resolve, 5000)); - const data = await appOctokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}', { - owner: repoOwner, - repo: repoName, - pull_number: prNumber - }); + await new Promise((resolve) => setTimeout(resolve, 5000)); + const data = await appOctokit.request( + 'GET /repos/{owner}/{repo}/pulls/{pull_number}', + { + owner: repoOwner, + repo: repoName, + pull_number: prNumber, + } + ); const labelData = data.data.labels; for (let i in labelData) { if (labelData[i].name) { @@ -35,20 +66,31 @@ export async function labeled(appOctokit, prLabelName, repoOwner, repoName, repo const allMessages = []; for (let i in listOfLabels) { if (reasonLabels.includes(listOfLabels[i])) { - let initialReason = listOfLabels[i].toString().replace(/reason:\s/i, ''); + let initialReason = listOfLabels[i] + .toString() + .replace(/reason:\s/i, ''); let finalReason = initialReason.replace(/\s+/g, '-'); - let message = fs.readFileSync(path.join(__dirname, `../message/label/${finalReason}.md`), 'utf8'); + let message = fs.readFileSync( + path.join(__dirname, `../message/label/${finalReason}.md`), + 'utf8' + ); allMessages.push(message); - } else if (listOfLabels[i] === "status: needs preview") { - let message = fs.readFileSync(path.join(__dirname, `../message/label/needs-preview.md`), 'utf8'); + } else if (listOfLabels[i] === 'status: needs preview') { + let message = fs.readFileSync( + path.join(__dirname, `../message/label/needs-preview.md`), + 'utf8' + ); allMessages.push(message); - }; + } } const labelMessages = allMessages.join('\n\n'); let body; if (!labelMessages.length) { - body = fs.readFileSync(path.join(__dirname, `../message/invalidnolabel.md`), 'utf8'); + body = fs.readFileSync( + path.join(__dirname, `../message/invalidnolabel.md`), + 'utf8' + ); } else { body = ` # Invalid Pull Request @@ -63,42 +105,62 @@ ${labelMessages} If you need any help, please create an issue or ask our team in the [Discord server](https://discord.gg/is-a-dev-830872854677422150) `; - }; + } await appOctokit.rest.issues.createComment({ owner: repoOwner, repo: repoName, issue_number: prNumber, - body: body + body: body, }); - console.log(`Sent reason messages at #${prNumber} from https://github.com/${repoFullName}`); + console.log( + `Sent reason messages at #${prNumber} from https://github.com/${repoFullName}` + ); if (denied === true) { - await appOctokit.request('PATCH /repos/{owner}/{repo}/pulls/{pull_number}', { - owner: repoOwner, - repo: repoName, - pull_number: prNumber, - state: 'closed', - }); - console.log(`Closed pull request at #${prNumber} from https://github.com/${repoFullName}`); - }; + await appOctokit.request( + 'PATCH /repos/{owner}/{repo}/pulls/{pull_number}', + { + owner: repoOwner, + repo: repoName, + pull_number: prNumber, + state: 'closed', + } + ); + console.log( + `Closed pull request at #${prNumber} from https://github.com/${repoFullName}` + ); + } } else if (lowpriority === true) { let conn; try { conn = await pool.getConnection(); - let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [prUsername]); + let res = await conn.query( + `SELECT * FROM LIST WHERE username=(?)`, + [prUsername] + ); let resJson = JSON.stringify(res); - if (resJson === "[]") { + if (resJson === '[]') { await appOctokit.rest.issues.createComment({ owner: repoOwner, repo: repoName, issue_number: prNumber, - body: lowPriorityMessage + body: lowPriorityMessage, }); - console.log(`Sent low priority message to #${prNumber} from https://github.com/${repoFullName}`); - await conn.query("INSERT INTO LIST VALUES (?, ?, ?, ?, ?)", [prUsername, prNumber, prUpdatedAt, repoOwner, repoName]); - console.log(`Logged #${prNumber} from https://github.com/${repoFullName} to the low priority database.`); + console.log( + `Sent low priority message to #${prNumber} from https://github.com/${repoFullName}` + ); + await conn.query('INSERT INTO LIST VALUES (?, ?, ?, ?, ?)', [ + prUsername, + prNumber, + prUpdatedAt, + repoOwner, + repoName, + ]); + console.log( + `Logged #${prNumber} from https://github.com/${repoFullName} to the low priority database.` + ); } } finally { if (conn) conn.end(); } } -}- \ No newline at end of file +} diff --git a/src/webhooks/opened.js b/src/webhooks/opened.js @@ -3,50 +3,78 @@ import { getNumberOfDays } from '../tools/numberofdays'; import fs from 'fs'; import path from 'path'; -const ignoreLabels = ["maintainer"]; -const newPRs = fs.readFileSync(path.join(__dirname, '../message/opened.md'), 'utf8'); -const draftPRs = fs.readFileSync(path.join(__dirname, '../message/draft.md'), 'utf8'); +const ignoreLabels = ['maintainer']; +const newPRs = fs.readFileSync( + path.join(__dirname, '../message/opened.md'), + 'utf8' +); +const draftPRs = fs.readFileSync( + path.join(__dirname, '../message/draft.md'), + 'utf8' +); // https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request -export async function opened(appOctokit, repoOwner, repoName, repoFullName, prNumber, prCreatedAt, prUsername, prDraft) { - console.log(`Received a open pull request event for #${prNumber} on https://github.com/${repoFullName}`); +export async function opened( + appOctokit, + repoOwner, + repoName, + repoFullName, + prNumber, + prCreatedAt, + prUsername, + prDraft +) { + console.log( + `Received a open pull request event for #${prNumber} on https://github.com/${repoFullName}` + ); let conn; try { const labels = await appOctokit.rest.issues.listLabelsOnIssue({ owner: repoOwner, - repo: repoName, - issue_number: prNumber + repo: repoName, + issue_number: prNumber, }); const allLabels = labels.data.map((label) => label.name); if (ignoreLabels.some((label) => allLabels.includes(label))) { - console.log(`#${prNumber} from https://github.com/${repoFullName} is by a maintainer, skipping pull request.`); + console.log( + `#${prNumber} from https://github.com/${repoFullName} is by a maintainer, skipping pull request.` + ); return; - } + } if (prDraft === true) { await appOctokit.rest.issues.createComment({ owner: repoOwner, repo: repoName, issue_number: prNumber, - body: draftPRs + body: draftPRs, }); - console.log(`Sent a draft message to #${prNumber} on https://github.com/${repoFullName}`); + console.log( + `Sent a draft message to #${prNumber} on https://github.com/${repoFullName}` + ); } else { await appOctokit.rest.issues.createComment({ owner: repoOwner, repo: repoName, issue_number: prNumber, - body: newPRs + body: newPRs, }); - console.log(`Sent a opened message to #${prNumber} on https://github.com/${repoFullName}`); - }; + console.log( + `Sent a opened message to #${prNumber} on https://github.com/${repoFullName}` + ); + } // low priority check conn = await pool.getConnection(); - let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [prUsername]); + let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [ + prUsername, + ]); let resJson = JSON.stringify(res); - if (resJson !== "[]") { + if (resJson !== '[]') { let parsed = JSON.parse(resJson); let date = new Date(); - if (parsed[0].username === prUsername && getNumberOfDays(parsed[0].time, date) <= numberOfDays) { + if ( + parsed[0].username === prUsername && + getNumberOfDays(parsed[0].time, date) <= numberOfDays + ) { let lowPriority = ` # Low priority @@ -54,32 +82,51 @@ You're attempting to create a new pull request to bypass the low priority label If you think this is a mistake then please contact [iostpa](https://github.com/iostpa). `; - await appOctokit.request('POST /repos/{owner}/{repo}/issues/{issue_number}/labels', { - owner: repoOwner, - repo: repoName, - issue_number: prNumber, - labels: [ - 'status: low priority' - ] - }); + await appOctokit.request( + 'POST /repos/{owner}/{repo}/issues/{issue_number}/labels', + { + owner: repoOwner, + repo: repoName, + issue_number: prNumber, + labels: ['status: low priority'], + } + ); await appOctokit.rest.issues.createComment({ owner: repoOwner, repo: repoName, issue_number: prNumber, - body: lowPriority - }); - await conn.query(`UPDATE LIST SET prnumber=(?) WHERE prnumber=(?)`, [prNumber, parsed[0].prnumber]); - await conn.query(`UPDATE LIST SET time=(?) WHERE prnumber=(?)`, [prCreatedAt, parsed[0].prnumber]); - console.log(`Auto-added, replaced with new PR number and sent low priority message to #${prNumber} on https://github.com/${repoFullName} because it was found in the database.`); - } else if (parsed[0].username === prUsername && getNumberOfDays(parsed[0].time, date) >= numberOfDays) { - await appOctokit.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', { - owner: repoOwner, - repo: repoName, - issue_number: prNumber, - name: "status: low priority", + body: lowPriority, }); - res = await conn.query("DELETE FROM LIST WHERE username=(?)", [parsed[0].username]); - console.log(`Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.`); + await conn.query( + `UPDATE LIST SET prnumber=(?) WHERE prnumber=(?)`, + [prNumber, parsed[0].prnumber] + ); + await conn.query( + `UPDATE LIST SET time=(?) WHERE prnumber=(?)`, + [prCreatedAt, parsed[0].prnumber] + ); + console.log( + `Auto-added, replaced with new PR number and sent low priority message to #${prNumber} on https://github.com/${repoFullName} because it was found in the database.` + ); + } else if ( + parsed[0].username === prUsername && + getNumberOfDays(parsed[0].time, date) >= numberOfDays + ) { + await appOctokit.request( + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', + { + owner: repoOwner, + repo: repoName, + issue_number: prNumber, + name: 'status: low priority', + } + ); + res = await conn.query('DELETE FROM LIST WHERE username=(?)', [ + parsed[0].username, + ]); + console.log( + `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.` + ); } } else if (resJson === '[]') { return; @@ -87,4 +134,4 @@ If you think this is a mistake then please contact [iostpa](https://github.com/i } finally { if (conn) conn.end(); } -}- \ No newline at end of file +} diff --git a/src/webhooks/unlabeled.js b/src/webhooks/unlabeled.js @@ -3,13 +3,20 @@ import { pool } from '../index'; export async function unlabeled(labelName, username, prNumber, repoFullName) { let conn; try { - if (labelName === "status: low priority") { + if (labelName === 'status: low priority') { conn = await pool.getConnection(); - let res = await conn.query(`SELECT * FROM LIST WHERE username=(?)`, [username]); + let res = await conn.query( + `SELECT * FROM LIST WHERE username=(?)`, + [username] + ); let resJson = JSON.stringify(res); - if (resJson !== "[]") { - res = await conn.query("DELETE FROM LIST WHERE username=(?)", [username]); - console.log(`Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database.`); + if (resJson !== '[]') { + res = await conn.query('DELETE FROM LIST WHERE username=(?)', [ + username, + ]); + console.log( + `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database.` + ); } else { return; } @@ -17,4 +24,4 @@ export async function unlabeled(labelName, username, prNumber, repoFullName) { } finally { if (conn) conn.end(); } -}- \ No newline at end of file +}
© notamitgamer • Site Built: 2026-07-21 13:58:23 UTC • git-mirror commit: 1037f62 [view raw info]
Originally created with stagit • modified by notamitgamer
Forked from github.com/notamitgamer/git-mirror