diff --git a/dist/query.js b/dist/query.js index 45e29432..5648e7fc 100644 --- a/dist/query.js +++ b/dist/query.js @@ -87768,18 +87768,13 @@ function throttling(octokit, octokitOptions) { if (typeof connection !== "undefined") { common.connection = connection; } - if (groups.global == null) { - createGroups(Bottleneck2, common); - } const state = Object.assign( { clustering: connection != null, triggersNotification, fallbackSecondaryRateRetryAfter: 60, retryAfterBaseValue: 1e3, - retryLimiter: new Bottleneck2(), - id, - ...groups + id }, octokitOptions.throttle ); @@ -87796,65 +87791,84 @@ function throttling(octokit, octokitOptions) { }) `); } - const events2 = {}; - const emitter = new Bottleneck2.Events(events2); - events2.on("secondary-limit", state.onSecondaryRateLimit); - events2.on("rate-limit", state.onRateLimit); - events2.on( - "error", - (e) => octokit.log.warn("Error in throttling-plugin limit handler", e) - ); - state.retryLimiter.on("failed", async function(error2, info2) { - const [state2, request2, options] = info2.args; - const { pathname } = new URL(options.url, "http://github.test"); - const shouldRetryGraphQL = pathname.startsWith("/graphql") && error2.status !== 401; - if (!(shouldRetryGraphQL || error2.status === 403 || error2.status === 429)) { + let initialized = false; + const initializeBottleneck = () => { + if (initialized) { return; } - const retryCount = ~~request2.retryCount; - request2.retryCount = retryCount; - options.request.retryCount = retryCount; - const { wantRetry, retryAfter = 0 } = await (async function() { - if (/\bsecondary rate\b/i.test(error2.message)) { - const retryAfter2 = Number(error2.response.headers["retry-after"]) || state2.fallbackSecondaryRateRetryAfter; - const wantRetry2 = await emitter.trigger( - "secondary-limit", - retryAfter2, - options, - octokit, - retryCount - ); - return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + initialized = true; + if (groups.global == null) { + createGroups(Bottleneck2, common); + } + state.global = state.global ?? groups.global; + state.auth = state.auth ?? groups.auth; + state.search = state.search ?? groups.search; + state.write = state.write ?? groups.write; + state.notifications = state.notifications ?? groups.notifications; + state.retryLimiter = state.retryLimiter ?? new Bottleneck2(); + const events2 = {}; + const emitter = new Bottleneck2.Events(events2); + events2.on("secondary-limit", state.onSecondaryRateLimit); + events2.on("rate-limit", state.onRateLimit); + events2.on( + "error", + (e) => octokit.log.warn("Error in throttling-plugin limit handler", e) + ); + state.retryLimiter.on("failed", async function(error2, info2) { + const [state2, request2, options] = info2.args; + const { pathname } = new URL(options.url, "http://github.test"); + const shouldRetryGraphQL = pathname.startsWith("/graphql") && error2.status !== 401; + if (!(shouldRetryGraphQL || error2.status === 403 || error2.status === 429)) { + return; } - if (error2.response.headers != null && error2.response.headers["x-ratelimit-remaining"] === "0" || (error2.response.data?.errors ?? []).some( - (error22) => error22.type === "RATE_LIMITED" - )) { - const rateLimitReset = new Date( - ~~error2.response.headers["x-ratelimit-reset"] * 1e3 - ).getTime(); - const retryAfter2 = Math.max( - // Add one second so we retry _after_ the reset time - // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit - Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1, - 0 - ); - const wantRetry2 = await emitter.trigger( - "rate-limit", - retryAfter2, - options, - octokit, - retryCount - ); - return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + const retryCount = ~~request2.retryCount; + request2.retryCount = retryCount; + options.request.retryCount = retryCount; + const { wantRetry, retryAfter = 0 } = await (async function() { + if (/\bsecondary rate\b/i.test(error2.message)) { + const retryAfter2 = Number(error2.response.headers["retry-after"]) || state2.fallbackSecondaryRateRetryAfter; + const wantRetry2 = await emitter.trigger( + "secondary-limit", + retryAfter2, + options, + octokit, + retryCount + ); + return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + } + if (error2.response.headers != null && error2.response.headers["x-ratelimit-remaining"] === "0" || (error2.response.data?.errors ?? []).some( + (error22) => error22.type === "RATE_LIMITED" + )) { + const rateLimitReset = new Date( + ~~error2.response.headers["x-ratelimit-reset"] * 1e3 + ).getTime(); + const retryAfter2 = Math.max( + // Add one second so we retry _after_ the reset time + // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit + Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1, + 0 + ); + const wantRetry2 = await emitter.trigger( + "rate-limit", + retryAfter2, + options, + octokit, + retryCount + ); + return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + } + return {}; + })(); + if (wantRetry) { + request2.retryCount++; + return retryAfter * state2.retryAfterBaseValue; } - return {}; - })(); - if (wantRetry) { - request2.retryCount++; - return retryAfter * state2.retryAfterBaseValue; - } + }); + }; + octokit.hook.wrap("request", (request2, options) => { + initializeBottleneck(); + return wrapRequest2(state, request2, options); }); - octokit.hook.wrap("request", wrapRequest2.bind(null, state)); return {}; } throttling.VERSION = VERSION9; diff --git a/dist/update-repo-task-status.js b/dist/update-repo-task-status.js index 0043ca90..10d15632 100644 --- a/dist/update-repo-task-status.js +++ b/dist/update-repo-task-status.js @@ -56825,18 +56825,13 @@ function throttling(octokit, octokitOptions) { if (typeof connection !== "undefined") { common.connection = connection; } - if (groups.global == null) { - createGroups(Bottleneck2, common); - } const state = Object.assign( { clustering: connection != null, triggersNotification, fallbackSecondaryRateRetryAfter: 60, retryAfterBaseValue: 1e3, - retryLimiter: new Bottleneck2(), - id, - ...groups + id }, octokitOptions.throttle ); @@ -56853,65 +56848,84 @@ function throttling(octokit, octokitOptions) { }) `); } - const events = {}; - const emitter = new Bottleneck2.Events(events); - events.on("secondary-limit", state.onSecondaryRateLimit); - events.on("rate-limit", state.onRateLimit); - events.on( - "error", - (e) => octokit.log.warn("Error in throttling-plugin limit handler", e) - ); - state.retryLimiter.on("failed", async function(error, info) { - const [state2, request2, options] = info.args; - const { pathname } = new URL(options.url, "http://github.test"); - const shouldRetryGraphQL = pathname.startsWith("/graphql") && error.status !== 401; - if (!(shouldRetryGraphQL || error.status === 403 || error.status === 429)) { + let initialized = false; + const initializeBottleneck = () => { + if (initialized) { return; } - const retryCount = ~~request2.retryCount; - request2.retryCount = retryCount; - options.request.retryCount = retryCount; - const { wantRetry, retryAfter = 0 } = await (async function() { - if (/\bsecondary rate\b/i.test(error.message)) { - const retryAfter2 = Number(error.response.headers["retry-after"]) || state2.fallbackSecondaryRateRetryAfter; - const wantRetry2 = await emitter.trigger( - "secondary-limit", - retryAfter2, - options, - octokit, - retryCount - ); - return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + initialized = true; + if (groups.global == null) { + createGroups(Bottleneck2, common); + } + state.global = state.global ?? groups.global; + state.auth = state.auth ?? groups.auth; + state.search = state.search ?? groups.search; + state.write = state.write ?? groups.write; + state.notifications = state.notifications ?? groups.notifications; + state.retryLimiter = state.retryLimiter ?? new Bottleneck2(); + const events = {}; + const emitter = new Bottleneck2.Events(events); + events.on("secondary-limit", state.onSecondaryRateLimit); + events.on("rate-limit", state.onRateLimit); + events.on( + "error", + (e) => octokit.log.warn("Error in throttling-plugin limit handler", e) + ); + state.retryLimiter.on("failed", async function(error, info) { + const [state2, request2, options] = info.args; + const { pathname } = new URL(options.url, "http://github.test"); + const shouldRetryGraphQL = pathname.startsWith("/graphql") && error.status !== 401; + if (!(shouldRetryGraphQL || error.status === 403 || error.status === 429)) { + return; } - if (error.response.headers != null && error.response.headers["x-ratelimit-remaining"] === "0" || (error.response.data?.errors ?? []).some( - (error2) => error2.type === "RATE_LIMITED" - )) { - const rateLimitReset = new Date( - ~~error.response.headers["x-ratelimit-reset"] * 1e3 - ).getTime(); - const retryAfter2 = Math.max( - // Add one second so we retry _after_ the reset time - // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit - Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1, - 0 - ); - const wantRetry2 = await emitter.trigger( - "rate-limit", - retryAfter2, - options, - octokit, - retryCount - ); - return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + const retryCount = ~~request2.retryCount; + request2.retryCount = retryCount; + options.request.retryCount = retryCount; + const { wantRetry, retryAfter = 0 } = await (async function() { + if (/\bsecondary rate\b/i.test(error.message)) { + const retryAfter2 = Number(error.response.headers["retry-after"]) || state2.fallbackSecondaryRateRetryAfter; + const wantRetry2 = await emitter.trigger( + "secondary-limit", + retryAfter2, + options, + octokit, + retryCount + ); + return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + } + if (error.response.headers != null && error.response.headers["x-ratelimit-remaining"] === "0" || (error.response.data?.errors ?? []).some( + (error2) => error2.type === "RATE_LIMITED" + )) { + const rateLimitReset = new Date( + ~~error.response.headers["x-ratelimit-reset"] * 1e3 + ).getTime(); + const retryAfter2 = Math.max( + // Add one second so we retry _after_ the reset time + // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit + Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1, + 0 + ); + const wantRetry2 = await emitter.trigger( + "rate-limit", + retryAfter2, + options, + octokit, + retryCount + ); + return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + } + return {}; + })(); + if (wantRetry) { + request2.retryCount++; + return retryAfter * state2.retryAfterBaseValue; } - return {}; - })(); - if (wantRetry) { - request2.retryCount++; - return retryAfter * state2.retryAfterBaseValue; - } + }); + }; + octokit.hook.wrap("request", (request2, options) => { + initializeBottleneck(); + return wrapRequest2(state, request2, options); }); - octokit.hook.wrap("request", wrapRequest2.bind(null, state)); return {}; } throttling.VERSION = VERSION9; diff --git a/dist/update-repo-task-statuses.js b/dist/update-repo-task-statuses.js index 41ef18cd..de67137c 100644 --- a/dist/update-repo-task-statuses.js +++ b/dist/update-repo-task-statuses.js @@ -56829,18 +56829,13 @@ function throttling(octokit, octokitOptions) { if (typeof connection !== "undefined") { common.connection = connection; } - if (groups.global == null) { - createGroups(Bottleneck2, common); - } const state = Object.assign( { clustering: connection != null, triggersNotification, fallbackSecondaryRateRetryAfter: 60, retryAfterBaseValue: 1e3, - retryLimiter: new Bottleneck2(), - id, - ...groups + id }, octokitOptions.throttle ); @@ -56857,65 +56852,84 @@ function throttling(octokit, octokitOptions) { }) `); } - const events = {}; - const emitter = new Bottleneck2.Events(events); - events.on("secondary-limit", state.onSecondaryRateLimit); - events.on("rate-limit", state.onRateLimit); - events.on( - "error", - (e) => octokit.log.warn("Error in throttling-plugin limit handler", e) - ); - state.retryLimiter.on("failed", async function(error, info) { - const [state2, request2, options] = info.args; - const { pathname } = new URL(options.url, "http://github.test"); - const shouldRetryGraphQL = pathname.startsWith("/graphql") && error.status !== 401; - if (!(shouldRetryGraphQL || error.status === 403 || error.status === 429)) { + let initialized = false; + const initializeBottleneck = () => { + if (initialized) { return; } - const retryCount = ~~request2.retryCount; - request2.retryCount = retryCount; - options.request.retryCount = retryCount; - const { wantRetry, retryAfter = 0 } = await (async function() { - if (/\bsecondary rate\b/i.test(error.message)) { - const retryAfter2 = Number(error.response.headers["retry-after"]) || state2.fallbackSecondaryRateRetryAfter; - const wantRetry2 = await emitter.trigger( - "secondary-limit", - retryAfter2, - options, - octokit, - retryCount - ); - return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + initialized = true; + if (groups.global == null) { + createGroups(Bottleneck2, common); + } + state.global = state.global ?? groups.global; + state.auth = state.auth ?? groups.auth; + state.search = state.search ?? groups.search; + state.write = state.write ?? groups.write; + state.notifications = state.notifications ?? groups.notifications; + state.retryLimiter = state.retryLimiter ?? new Bottleneck2(); + const events = {}; + const emitter = new Bottleneck2.Events(events); + events.on("secondary-limit", state.onSecondaryRateLimit); + events.on("rate-limit", state.onRateLimit); + events.on( + "error", + (e) => octokit.log.warn("Error in throttling-plugin limit handler", e) + ); + state.retryLimiter.on("failed", async function(error, info) { + const [state2, request2, options] = info.args; + const { pathname } = new URL(options.url, "http://github.test"); + const shouldRetryGraphQL = pathname.startsWith("/graphql") && error.status !== 401; + if (!(shouldRetryGraphQL || error.status === 403 || error.status === 429)) { + return; } - if (error.response.headers != null && error.response.headers["x-ratelimit-remaining"] === "0" || (error.response.data?.errors ?? []).some( - (error2) => error2.type === "RATE_LIMITED" - )) { - const rateLimitReset = new Date( - ~~error.response.headers["x-ratelimit-reset"] * 1e3 - ).getTime(); - const retryAfter2 = Math.max( - // Add one second so we retry _after_ the reset time - // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit - Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1, - 0 - ); - const wantRetry2 = await emitter.trigger( - "rate-limit", - retryAfter2, - options, - octokit, - retryCount - ); - return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + const retryCount = ~~request2.retryCount; + request2.retryCount = retryCount; + options.request.retryCount = retryCount; + const { wantRetry, retryAfter = 0 } = await (async function() { + if (/\bsecondary rate\b/i.test(error.message)) { + const retryAfter2 = Number(error.response.headers["retry-after"]) || state2.fallbackSecondaryRateRetryAfter; + const wantRetry2 = await emitter.trigger( + "secondary-limit", + retryAfter2, + options, + octokit, + retryCount + ); + return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + } + if (error.response.headers != null && error.response.headers["x-ratelimit-remaining"] === "0" || (error.response.data?.errors ?? []).some( + (error2) => error2.type === "RATE_LIMITED" + )) { + const rateLimitReset = new Date( + ~~error.response.headers["x-ratelimit-reset"] * 1e3 + ).getTime(); + const retryAfter2 = Math.max( + // Add one second so we retry _after_ the reset time + // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit + Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1, + 0 + ); + const wantRetry2 = await emitter.trigger( + "rate-limit", + retryAfter2, + options, + octokit, + retryCount + ); + return { wantRetry: wantRetry2, retryAfter: retryAfter2 }; + } + return {}; + })(); + if (wantRetry) { + request2.retryCount++; + return retryAfter * state2.retryAfterBaseValue; } - return {}; - })(); - if (wantRetry) { - request2.retryCount++; - return retryAfter * state2.retryAfterBaseValue; - } + }); + }; + octokit.hook.wrap("request", (request2, options) => { + initializeBottleneck(); + return wrapRequest2(state, request2, options); }); - octokit.hook.wrap("request", wrapRequest2.bind(null, state)); return {}; } throttling.VERSION = VERSION9; diff --git a/package-lock.json b/package-lock.json index 56b3b69a..4de23873 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,8 @@ "@actions/io": "^3.0.2", "@actions/tool-cache": "^4.0.0", "@octokit/action": "^8.0.4", - "@octokit/plugin-retry": "^8.1.0", - "@octokit/plugin-throttling": "^11.0.3", + "@octokit/plugin-retry": "^8.1.1", + "@octokit/plugin-throttling": "^11.0.5", "ajv": "8.20.0", "form-data": "^4.0.6", "jszip": "3.10.1", @@ -1080,13 +1080,13 @@ } }, "node_modules/@octokit/plugin-retry": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.1.0.tgz", - "integrity": "sha512-O1FZgXeiGb2sowEr/hYTr6YunGdSAFWnr2fyW39Ah85H8O33ELASQxcvOFF5LE6Tjekcyu2ms4qAzJVhSaJxTw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.1.1.tgz", + "integrity": "sha512-VCVvZ/R1+u3WuiBWpNavZ0mY4aaJNAsENrpBP9aLSR2QyOpQgd7DhM5j4AW7z4MQpnJYgwBPf0XqPQoNBRdQwg==", "license": "MIT", "dependencies": { - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", + "@octokit/request-error": "^7.1.1", + "@octokit/types": "^17.0.0", "bottleneck": "^2.15.3" }, "engines": { @@ -1096,13 +1096,28 @@ "@octokit/core": ">=7" } }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "28.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-28.0.0.tgz", + "integrity": "sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-17.0.0.tgz", + "integrity": "sha512-ByP1v7YL5SMveFPP7+sj0/ZuWCOOg/Chs4NafOMpq6WNIM/hdGY0S7C0TCGDBWu1aGmOxmUIhMx3cO+IdwYZ1Q==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^28.0.0" + } + }, "node_modules/@octokit/plugin-throttling": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", - "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.5.tgz", + "integrity": "sha512-LIdrkrUv+DWbKeg/49rGuFJ3SU0d3hUS+B4MhNZLepBoNUFXms8Ic9edJjrlx+zycqJHjrMRudVpVb/bAXM2Lw==", "license": "MIT", "dependencies": { - "@octokit/types": "^16.0.0", + "@octokit/types": "^17.0.0", "bottleneck": "^2.15.3" }, "engines": { @@ -1112,6 +1127,21 @@ "@octokit/core": "^7.0.0" } }, + "node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { + "version": "28.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-28.0.0.tgz", + "integrity": "sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-17.0.0.tgz", + "integrity": "sha512-ByP1v7YL5SMveFPP7+sj0/ZuWCOOg/Chs4NafOMpq6WNIM/hdGY0S7C0TCGDBWu1aGmOxmUIhMx3cO+IdwYZ1Q==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^28.0.0" + } + }, "node_modules/@octokit/request": { "version": "10.0.7", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz", @@ -1129,17 +1159,32 @@ } }, "node_modules/@octokit/request-error": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", - "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.1.tgz", + "integrity": "sha512-+eaY7G2VVpSf2pc5Gn1+mph837V/d/TYTJAgWL9Tb0ogGYcpN3IlAVFgjL+Vv93F/sevrxkvsYCedtpLdcFLzA==", "license": "MIT", "dependencies": { - "@octokit/types": "^16.0.0" + "@octokit/types": "^17.0.0" }, "engines": { "node": ">= 20" } }, + "node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { + "version": "28.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-28.0.0.tgz", + "integrity": "sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ==", + "license": "MIT" + }, + "node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-17.0.0.tgz", + "integrity": "sha512-ByP1v7YL5SMveFPP7+sj0/ZuWCOOg/Chs4NafOMpq6WNIM/hdGY0S7C0TCGDBWu1aGmOxmUIhMx3cO+IdwYZ1Q==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^28.0.0" + } + }, "node_modules/@octokit/types": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", diff --git a/package.json b/package.json index 7c11100f..c774c870 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "@actions/io": "^3.0.2", "@actions/tool-cache": "^4.0.0", "@octokit/action": "^8.0.4", - "@octokit/plugin-retry": "^8.1.0", - "@octokit/plugin-throttling": "^11.0.3", + "@octokit/plugin-retry": "^8.1.1", + "@octokit/plugin-throttling": "^11.0.5", "ajv": "8.20.0", "form-data": "^4.0.6", "jszip": "3.10.1",