From 8fa6e71fb22bc9bb8f0acdcbf427386d97cc9f06 Mon Sep 17 00:00:00 2001 From: Shane <6071159+smashedr@users.noreply.github.com> Date: Wed, 29 Oct 2025 11:53:57 -0700 Subject: [PATCH 1/6] Updates --- src/api.js | 6 +++++- src/app.js | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/api.js b/src/api.js index 9d11b9d..6880281 100644 --- a/src/api.js +++ b/src/api.js @@ -167,7 +167,11 @@ export async function getVTReleaseStats(req) { /** * Get VT Stats for a File ID/Hash * @param {string} hash - * @return {Promise} + * @typedef {object} Stats + * @property {number} malicious + * @property {number} suspicious + * @property {number} undetected + * @return {Promise} */ export async function getVTStats(hash) { const key = `/vt/id/${hash}` diff --git a/src/app.js b/src/app.js index 118fdc0..ce724a2 100644 --- a/src/app.js +++ b/src/app.js @@ -86,6 +86,8 @@ app.get('/', async (req, res) => { links: { Source: 'https://github.com/smashedr/node-badges', Docs: 'https://smashedr.github.io/node-badges-docs', + Grafana: + 'https://cssnr.grafana.net/public-dashboards/8a24a95171fe4127ada92afb071b9331', }, // badges: [{ src: '', href: '' }], }) @@ -110,6 +112,7 @@ app.get('/colors{/:index}', async (req, res) => { debug('index:', index) const color = getRangedColor(req, index) debug('color:', color) + // noinspection HtmlRequiredLangAttribute res.send(``) }) From 9dc236544e6544ece39459e5cb8e828a16a02c14 Mon Sep 17 00:00:00 2001 From: Shane <6071159+smashedr@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:43:42 -0700 Subject: [PATCH 2/6] Allow POST to PURGE for Cloudflare --- src/api.js | 12 +++++++++++- src/app.js | 25 +++++++++++++++---------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/api.js b/src/api.js index 6880281..27b171b 100644 --- a/src/api.js +++ b/src/api.js @@ -199,7 +199,7 @@ export async function getVTStats(hash) { stats = data?.data?.attributes?.last_analysis_stats } if (!stats) await cacheError(key, 'VT Stats Not Found') - await cacheSet(key, stats, 60 * 60 * 48) + await cacheSet(key, stats, 60 * 60 * 24 * 5) return stats } @@ -279,6 +279,16 @@ export async function incrKey(key) { await client.incr(key) } +// export async function incrPurge(result) { +// const multi = client.multi().incr('purge_count') +// // multi.incr('purge_count') +// if (result) { +// multi.incr('purge_hit') +// } else { +// multi.incr('purge_miss') +// } +// } + export async function sendInflux() { if (!influxClient) return debug('InfluxDB Not Configured.') debug(`Processing Influx: ${new Date().toLocaleString()}`) diff --git a/src/app.js b/src/app.js index ce724a2..78868f3 100644 --- a/src/app.js +++ b/src/app.js @@ -133,8 +133,8 @@ app.get('/colors{/:index}', async (req, res) => { // }) app.all('/vt/:type/:hash', async (req, res, next) => { - if (req.method === 'PURGE') { - debug('PURGE:', req.originalUrl) + if (['PURGE', 'POST'].includes(req.method)) { + debug(`PURGE: ${req.method}`, req.originalUrl) if (!['id', 'sha'].includes(req.params.type)) return next() const hash = req.params.hash.includes(':') ? req.params.hash.split(':')[1] @@ -167,8 +167,8 @@ app.get('/vt/:type/:hash', async (req, res) => { }) app.all('/vt/:owner/:repo/:asset{/:tag}', async (req, res, next) => { - if (req.method === 'PURGE') { - debug('PURGE:', req.originalUrl) + if (['PURGE', 'POST'].includes(req.method)) { + debug(`PURGE: ${req.method}`, req.originalUrl) const tag = req.params.tag || 'latest' const key = `${req.params.owner}/${req.params.repo}/${req.params.asset}/${tag}` return purgeKey(res, key) @@ -189,8 +189,8 @@ app.get('/vt/:owner/:repo/:asset{/:tag}', async (req, res) => { }) app.all('/ghcr/tags/:owner/:package{/:latest}', async (req, res, next) => { - if (req.method === 'PURGE') { - debug('PURGE:', req.originalUrl) + if (['PURGE', 'POST'].includes(req.method)) { + debug(`PURGE: ${req.method}`, req.originalUrl) const key = `ghcr/tags/${req.params.owner}/${req.params.package}/tags/list` return purgeKey(res, key) } @@ -233,8 +233,8 @@ app.get('/ghcr/tags/:owner/:package{/:latest}', async (req, res) => { }) app.all('/ghcr/size/:owner/:package{/:tag}', async (req, res, next) => { - if (req.method === 'PURGE') { - debug('PURGE:', req.originalUrl) + if (['PURGE', 'POST'].includes(req.method)) { + debug(`PURGE: ${req.method}`, req.originalUrl) const tag = req.params.tag ? req.params.tag : 'latest' const key = `ghcr/size/${req.params.owner}/${req.params.package}/${tag}` return purgeKey(res, key) @@ -270,8 +270,8 @@ app.get('/static/:message{/:label}', async (req, res) => { app.all('/:type/:url/:path', async (req, res, next) => { if (!['yaml', 'json'].includes(req.params.type)) return next() - if (req.method === 'PURGE') { - debug('PURGE:', req.originalUrl) + if (['PURGE', 'POST'].includes(req.method)) { + debug(`PURGE: ${req.method}`, req.originalUrl) return purgeKey(res, req.path) } next() @@ -431,6 +431,11 @@ async function purgeKey(res, key) { const result = await cacheDelete(key) debug('result:', result) res.send(result.toString()) + if (result) { + incrKey('purge_hit').catch(console.error) + } else { + incrKey('purge_miss').catch(console.error) + } } /** From 116890f9292b553549c288cfe018a1b7555d6750 Mon Sep 17 00:00:00 2001 From: Shane <6071159+smashedr@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:53:56 -0700 Subject: [PATCH 3/6] Update package.json --- package-lock.json | 146 ++++++++++++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 102 insertions(+), 46 deletions(-) diff --git a/package-lock.json b/package-lock.json index c72e773..7f8fa5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "debug": "^4.4.3", "express": "^5.1.0", "jsonpath": "^1.1.1", - "lucide-static": "^0.548.0", + "lucide-static": "^0.552.0", "node-schedule": "^2.1.1", "nodemon": "^3.1.10", "pug": "^3.0.3", @@ -177,13 +177,26 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", - "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@types/json-schema": "^7.0.15" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -274,19 +287,32 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -355,16 +381,16 @@ } }, "node_modules/@octokit/core": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.5.tgz", - "integrity": "sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "license": "MIT", "dependencies": { "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.2", - "@octokit/request": "^10.0.4", - "@octokit/request-error": "^7.0.1", - "@octokit/types": "^15.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" }, @@ -373,12 +399,12 @@ } }, "node_modules/@octokit/endpoint": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.1.tgz", - "integrity": "sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", + "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", "license": "MIT", "dependencies": { - "@octokit/types": "^15.0.0", + "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" }, "engines": { @@ -386,13 +412,13 @@ } }, "node_modules/@octokit/graphql": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.2.tgz", - "integrity": "sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "license": "MIT", "dependencies": { - "@octokit/request": "^10.0.4", - "@octokit/types": "^15.0.0", + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" }, "engines": { @@ -400,9 +426,9 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", - "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { @@ -420,6 +446,21 @@ "@octokit/core": ">=6" } }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", + "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz", + "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^26.0.0" + } + }, "node_modules/@octokit/plugin-request-log": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", @@ -447,15 +488,30 @@ "@octokit/core": ">=6" } }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", + "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz", + "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^26.0.0" + } + }, "node_modules/@octokit/request": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.5.tgz", - "integrity": "sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.6.tgz", + "integrity": "sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^11.0.1", - "@octokit/request-error": "^7.0.1", - "@octokit/types": "^15.0.0", + "@octokit/endpoint": "^11.0.2", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", "fast-content-type-parse": "^3.0.0", "universal-user-agent": "^7.0.2" }, @@ -464,12 +520,12 @@ } }, "node_modules/@octokit/request-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.1.tgz", - "integrity": "sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.2.tgz", + "integrity": "sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==", "license": "MIT", "dependencies": { - "@octokit/types": "^15.0.0" + "@octokit/types": "^16.0.0" }, "engines": { "node": ">= 20" @@ -491,12 +547,12 @@ } }, "node_modules/@octokit/types": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.1.tgz", - "integrity": "sha512-sdiirM93IYJ9ODDCBgmRPIboLbSkpLa5i+WLuXH8b8Atg+YMLAyLvDDhNWLV4OYd08tlvYfVm/dw88cqHWtw1Q==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^26.0.0" + "@octokit/openapi-types": "^27.0.0" } }, "node_modules/@opentelemetry/api": { @@ -2973,9 +3029,9 @@ "license": "MIT" }, "node_modules/lucide-static": { - "version": "0.548.0", - "resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-0.548.0.tgz", - "integrity": "sha512-gU7B6abtKtsw7DuSl1rsSKybMHja11g6I/2XYS6QLXnhD3jAirO3h4zP1ztV9epcjxiCtfXFIfsfqdD2gN5Icw==", + "version": "0.552.0", + "resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-0.552.0.tgz", + "integrity": "sha512-wL+9EAx8k/4i/w9qGuAwHrrV8SryVsJk+Ug9SErtg18Zq95FMwMXlu4Dhl4RS8C2b1oxFu66p7YK96yrNsm6cg==", "license": "ISC" }, "node_modules/luxon": { diff --git a/package.json b/package.json index eed971f..9c674d9 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "debug": "^4.4.3", "express": "^5.1.0", "jsonpath": "^1.1.1", - "lucide-static": "^0.548.0", + "lucide-static": "^0.552.0", "node-schedule": "^2.1.1", "nodemon": "^3.1.10", "pug": "^3.0.3", From 90f15155e7eb0897e8150d483e5d76756111dd0c Mon Sep 17 00:00:00 2001 From: Shane <6071159+smashedr@users.noreply.github.com> Date: Fri, 31 Oct 2025 12:08:15 -0700 Subject: [PATCH 4/6] Reset Cache Expire on Get --- src/api.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/api.js b/src/api.js index 27b171b..714ff37 100644 --- a/src/api.js +++ b/src/api.js @@ -175,11 +175,13 @@ export async function getVTReleaseStats(req) { */ export async function getVTStats(hash) { const key = `/vt/id/${hash}` + const timeout = 60 * 60 * 24 * 5 debug('key:', key) // NOTE: Duplicate Code - 5 lines const cached = await cacheGet(key) if (cached) { if (cached.errorMessage) throw new Error(cached.errorMessage) + client.expire(key, timeout).catch(console.error) // reset expire on get return cached } debug(`-- CACHE MISS: ${key}`) @@ -199,7 +201,7 @@ export async function getVTStats(hash) { stats = data?.data?.attributes?.last_analysis_stats } if (!stats) await cacheError(key, 'VT Stats Not Found') - await cacheSet(key, stats, 60 * 60 * 24 * 5) + await cacheSet(key, stats, timeout) return stats } From 0af4adbacba959661c9c189272086200c4e4f9e9 Mon Sep 17 00:00:00 2001 From: Shane <6071159+smashedr@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:58:48 -0700 Subject: [PATCH 5/6] Update errorHandler --- src/app.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/app.js b/src/app.js index 78868f3..97b18aa 100644 --- a/src/app.js +++ b/src/app.js @@ -309,16 +309,22 @@ app.use((req, res) => { incrKey('badges_404').catch(console.error) }) -// Handler - Error +// Error Handler +// noinspection JSCheckFunctionSignatures app.use(errorHandler) -// Handler - Sentry Error - NOTE: This only catches errorHandler errors currently... +// Sentry Handler +// NOTE: This only catches errorHandler errors currently... if (Sentry) Sentry.setupExpressErrorHandler(app) -function errorHandler(err, req, res) { +function errorHandler(err, req, res, next) { // console.log('errorHandler:', err) debug('errorHandler - originalUrl:', req.originalUrl) debug('err.message:', err.message) + if (res.headersSent) { + debug('SKIPPING: Headers Sent') + return next(err) + } const data = { message: err.message || 'Unknown Error', color: 'red', From a3f83eb0ceea0032675df5f179f16061b81bdb7d Mon Sep 17 00:00:00 2001 From: Shane <6071159+smashedr@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:13:42 -0700 Subject: [PATCH 6/6] Update package.json --- package-lock.json | 112 ++++++++++++---------------------------------- package.json | 6 +-- 2 files changed, 31 insertions(+), 87 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f8fa5a..55e9cb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "name": "node-badges", "dependencies": { "@influxdata/influxdb-client": "^1.35.0", - "@octokit/rest": "^22.0.0", + "@octokit/rest": "^22.0.1", "@sentry/node": "^10.22.0", "axios": "^1.13.1", "badge-maker": "^5.0.2", @@ -27,8 +27,8 @@ "yaml": "^2.8.1" }, "devDependencies": { - "@eslint/js": "^9.38.0", - "eslint": "^9.38.0", + "@eslint/js": "^9.39.0", + "eslint": "^9.39.0", "prettier": "^3.6.2" } }, @@ -189,7 +189,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { + "node_modules/@eslint/core": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", @@ -202,19 +202,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@eslint/eslintrc": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", @@ -264,9 +251,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "version": "9.39.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.0.tgz", + "integrity": "sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==", "dev": true, "license": "MIT", "engines": { @@ -300,19 +287,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -432,12 +406,12 @@ "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.2.1.tgz", - "integrity": "sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "license": "MIT", "dependencies": { - "@octokit/types": "^15.0.1" + "@octokit/types": "^16.0.0" }, "engines": { "node": ">= 20" @@ -446,21 +420,6 @@ "@octokit/core": ">=6" } }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", - "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz", - "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^26.0.0" - } - }, "node_modules/@octokit/plugin-request-log": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", @@ -474,12 +433,12 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-16.1.1.tgz", - "integrity": "sha512-VztDkhM0ketQYSh5Im3IcKWFZl7VIrrsCaHbDINkdYeiiAsJzjhS2xRFCSJgfN6VOcsoW4laMtsmf3HcNqIimg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", "license": "MIT", "dependencies": { - "@octokit/types": "^15.0.1" + "@octokit/types": "^16.0.0" }, "engines": { "node": ">= 20" @@ -488,21 +447,6 @@ "@octokit/core": ">=6" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz", - "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz", - "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^26.0.0" - } - }, "node_modules/@octokit/request": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.6.tgz", @@ -532,15 +476,15 @@ } }, "node_modules/@octokit/rest": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.0.tgz", - "integrity": "sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==", + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz", + "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==", "license": "MIT", "dependencies": { - "@octokit/core": "^7.0.2", - "@octokit/plugin-paginate-rest": "^13.0.1", + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", "@octokit/plugin-request-log": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^16.0.0" + "@octokit/plugin-rest-endpoint-methods": "^17.0.0" }, "engines": { "node": ">= 20" @@ -2114,20 +2058,20 @@ } }, "node_modules/eslint": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", - "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "version": "9.39.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.0.tgz", + "integrity": "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.1", - "@eslint/core": "^0.16.0", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.38.0", - "@eslint/plugin-kit": "^0.4.0", + "@eslint/js": "9.39.0", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", diff --git a/package.json b/package.json index 9c674d9..c539d46 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@influxdata/influxdb-client": "^1.35.0", - "@octokit/rest": "^22.0.0", + "@octokit/rest": "^22.0.1", "@sentry/node": "^10.22.0", "axios": "^1.13.1", "badge-maker": "^5.0.2", @@ -33,8 +33,8 @@ "yaml": "^2.8.1" }, "devDependencies": { - "@eslint/js": "^9.38.0", - "eslint": "^9.38.0", + "@eslint/js": "^9.39.0", + "eslint": "^9.39.0", "prettier": "^3.6.2" } }