diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index 95f04eb68d..e1b94d3ae5 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -838,6 +838,387 @@
"node": ">=12.4.0"
}
},
+ "node_modules/@octokit/app": {
+ "version": "15.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/app/-/app-15.1.4.tgz",
+ "integrity": "sha512-PM1MqlPAnItjQIKWRmSoJu02+m7Eif4Am3w5C+Ctkw0//QETWMbW2ejBZhcw3aS7wRcFSbS+lH3NoYm614aZVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-app": "^7.1.5",
+ "@octokit/auth-unauthenticated": "^6.1.2",
+ "@octokit/core": "^6.1.4",
+ "@octokit/oauth-app": "^7.1.6",
+ "@octokit/plugin-paginate-rest": "^11.4.2",
+ "@octokit/types": "^13.6.2",
+ "@octokit/webhooks": "^13.6.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/auth-token": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
+ "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/core": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz",
+ "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^5.0.0",
+ "@octokit/graphql": "^8.1.2",
+ "@octokit/request": "^9.2.1",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "before-after-hook": "^3.0.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/graphql": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz",
+ "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^9.2.2",
+ "@octokit/types": "^13.8.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest": {
+ "version": "11.4.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.2.tgz",
+ "integrity": "sha512-BXJ7XPCTDXFF+wxcg/zscfgw2O/iDPtNSkwwR1W1W5c4Mb3zav/M2XvxQ23nVmKj7jpweB4g8viMeCQdm7LMVA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.7.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/app/node_modules/before-after-hook": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
+ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@octokit/app/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
+ "node_modules/@octokit/auth-app": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-7.1.5.tgz",
+ "integrity": "sha512-boklS4E6LpbA3nRx+SU2fRKRGZJdOGoSZne/i3Y0B5rfHOcGwFgcXrwDLdtbv4igfDSnAkZaoNBv1GYjPDKRNw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-oauth-app": "^8.1.3",
+ "@octokit/auth-oauth-user": "^5.1.3",
+ "@octokit/request": "^9.2.1",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.8.0",
+ "toad-cache": "^3.7.0",
+ "universal-github-app-jwt": "^2.2.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-app/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-app/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-app/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-app/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
+ "node_modules/@octokit/auth-oauth-app": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.3.tgz",
+ "integrity": "sha512-4e6OjVe5rZ8yBe8w7byBjpKtSXFuro7gqeGAAZc7QYltOF8wB93rJl2FE0a4U1Mt88xxPv/mS+25/0DuLk0Ewg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-oauth-device": "^7.1.3",
+ "@octokit/auth-oauth-user": "^5.1.3",
+ "@octokit/request": "^9.2.1",
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-app/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
+ "node_modules/@octokit/auth-oauth-device": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.3.tgz",
+ "integrity": "sha512-BECO/N4B/Uikj0w3GCvjf/odMujtYTP3q82BJSjxC2J3rxTEiZIJ+z2xnRlDb0IE9dQSaTgRqUPVOieSbFcVzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/oauth-methods": "^5.1.4",
+ "@octokit/request": "^9.2.1",
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-device/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
+ "node_modules/@octokit/auth-oauth-user": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.3.tgz",
+ "integrity": "sha512-zNPByPn9K7TC+OOHKGxU+MxrE9SZAN11UHYEFLsK2NRn3akJN2LHRl85q+Eypr3tuB2GrKx3rfj2phJdkYCvzw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-oauth-device": "^7.1.3",
+ "@octokit/oauth-methods": "^5.1.3",
+ "@octokit/request": "^9.2.1",
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-user/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
"node_modules/@octokit/auth-token": {
"version": "2.5.0",
"license": "MIT",
@@ -856,6 +1237,31 @@
"@octokit/openapi-types": "^12.11.0"
}
},
+ "node_modules/@octokit/auth-unauthenticated": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-6.1.2.tgz",
+ "integrity": "sha512-07DlUGcz/AAVdzu3EYfi/dOyMSHp9YsOxPl/MPmtlVXWiD//GlV8HgZsPhud94DEyx+RfrW0wSl46Lx+AWbOlg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
"node_modules/@octokit/core": {
"version": "3.6.0",
"license": "MIT",
@@ -920,10 +1326,200 @@
"@octokit/openapi-types": "^12.11.0"
}
},
+ "node_modules/@octokit/oauth-app": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-7.1.6.tgz",
+ "integrity": "sha512-OMcMzY2WFARg80oJNFwWbY51TBUfLH4JGTy119cqiDawSFXSIBujxmpXiKbGWQlvfn0CxE6f7/+c6+Kr5hI2YA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-oauth-app": "^8.1.3",
+ "@octokit/auth-oauth-user": "^5.1.3",
+ "@octokit/auth-unauthenticated": "^6.1.2",
+ "@octokit/core": "^6.1.4",
+ "@octokit/oauth-authorization-url": "^7.1.1",
+ "@octokit/oauth-methods": "^5.1.4",
+ "@types/aws-lambda": "^8.10.83",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/@octokit/auth-token": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
+ "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/@octokit/core": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz",
+ "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^5.0.0",
+ "@octokit/graphql": "^8.1.2",
+ "@octokit/request": "^9.2.1",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "before-after-hook": "^3.0.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/@octokit/graphql": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz",
+ "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^9.2.2",
+ "@octokit/types": "^13.8.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-app/node_modules/before-after-hook": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
+ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@octokit/oauth-app/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
+ "node_modules/@octokit/oauth-authorization-url": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-7.1.1.tgz",
+ "integrity": "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-5.1.4.tgz",
+ "integrity": "sha512-Jc/ycnePClOvO1WL7tlC+TRxOFtyJBGuTDsL4dzXNiVZvzZdrPuNw7zHI3qJSUX2n6RLXE5L0SkFmYyNaVUFoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/oauth-authorization-url": "^7.0.0",
+ "@octokit/request": "^9.2.1",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
"node_modules/@octokit/openapi-types": {
"version": "18.0.0",
"license": "MIT"
},
+ "node_modules/@octokit/openapi-webhooks-types": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-webhooks-types/-/openapi-webhooks-types-9.1.0.tgz",
+ "integrity": "sha512-bO1D2jLdU8qEvqmbWjNxJzDYSFT4wesiYKIKP6f4LaM0XUGtn/0LBv/20hu9YqcnpdX38X5o/xANTMtIAqdwYw==",
+ "license": "MIT"
+ },
"node_modules/@octokit/plugin-paginate-rest": {
"version": "2.21.3",
"license": "MIT",
@@ -1068,6 +1664,41 @@
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
"license": "MIT"
},
+ "node_modules/@octokit/webhooks": {
+ "version": "13.6.1",
+ "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-13.6.1.tgz",
+ "integrity": "sha512-vk0jnc5k0/mLMUI4IA9LfSYkLs3OHtfa7B3h4aRG6to912V3wIG8lS/wKwatwYxRkAug4oE8is0ERRI8pzoYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-webhooks-types": "9.1.0",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/webhooks-methods": "^5.1.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/webhooks-methods": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-5.1.1.tgz",
+ "integrity": "sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/webhooks/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
"node_modules/@open-draft/deferred-promise": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
@@ -1258,6 +1889,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/aws-lambda": {
+ "version": "8.10.147",
+ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.147.tgz",
+ "integrity": "sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew==",
+ "license": "MIT"
+ },
"node_modules/@types/color-name": {
"version": "1.1.1",
"dev": true,
@@ -4308,6 +4945,22 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
+ "node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"license": "MIT"
@@ -5968,6 +6621,196 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/octokit": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/octokit/-/octokit-4.1.2.tgz",
+ "integrity": "sha512-0kcTxJOK3yQrJsRb8wKa28hlTze4QOz4sLuUnfXXnhboDhFKgv8LxS86tFwbsafDW9JZ08ByuVAE8kQbYJIZkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/app": "^15.1.4",
+ "@octokit/core": "^6.1.4",
+ "@octokit/oauth-app": "^7.1.6",
+ "@octokit/plugin-paginate-graphql": "^5.2.4",
+ "@octokit/plugin-paginate-rest": "^11.4.2",
+ "@octokit/plugin-rest-endpoint-methods": "^13.3.1",
+ "@octokit/plugin-retry": "^7.1.4",
+ "@octokit/plugin-throttling": "^9.4.0",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.7.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/auth-token": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
+ "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/core": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz",
+ "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^5.0.0",
+ "@octokit/graphql": "^8.1.2",
+ "@octokit/request": "^9.2.1",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "before-after-hook": "^3.0.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/endpoint": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/graphql": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz",
+ "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^9.2.2",
+ "@octokit/types": "^13.8.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/plugin-paginate-graphql": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-5.2.4.tgz",
+ "integrity": "sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/plugin-paginate-rest": {
+ "version": "11.4.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.2.tgz",
+ "integrity": "sha512-BXJ7XPCTDXFF+wxcg/zscfgw2O/iDPtNSkwwR1W1W5c4Mb3zav/M2XvxQ23nVmKj7jpweB4g8viMeCQdm7LMVA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.7.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "13.3.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz",
+ "integrity": "sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.8.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/plugin-retry": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.4.tgz",
+ "integrity": "sha512-7AIP4p9TttKN7ctygG4BtR7rrB0anZqoU9ThXFk8nETqIfvgPUANTSYHqWYknK7W3isw59LpZeLI8pcEwiJdRg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "bottleneck": "^2.15.3"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/plugin-throttling": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.4.0.tgz",
+ "integrity": "sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.7.0",
+ "bottleneck": "^2.15.3"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": "^6.1.3"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/request": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/@octokit/request-error": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/octokit/node_modules/before-after-hook": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
+ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/octokit/node_modules/universal-user-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
+ "license": "ISC"
+ },
"node_modules/once": {
"version": "1.4.0",
"license": "ISC",
@@ -7235,6 +8078,15 @@
"node": ">=8.0"
}
},
+ "node_modules/toad-cache": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
+ "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/tr46": {
"version": "0.0.3",
"license": "MIT"
@@ -7604,6 +8456,12 @@
"version": "5.26.5",
"license": "MIT"
},
+ "node_modules/universal-github-app-jwt": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-2.2.0.tgz",
+ "integrity": "sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==",
+ "license": "MIT"
+ },
"node_modules/universal-user-agent": {
"version": "6.0.0",
"license": "ISC"
diff --git a/node_modules/@octokit/app/LICENSE b/node_modules/@octokit/app/LICENSE
new file mode 100644
index 0000000000..af5366d0d0
--- /dev/null
+++ b/node_modules/@octokit/app/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/README.md b/node_modules/@octokit/app/README.md
new file mode 100644
index 0000000000..09c486e6af
--- /dev/null
+++ b/node_modules/@octokit/app/README.md
@@ -0,0 +1,440 @@
+# app.js
+
+> GitHub App toolset for Node.js
+
+[](https://www.npmjs.com/package/@octokit/app)
+[](https://github.com/octokit/app.js/actions?workflow=Test)
+
+
+
+- [Usage](#usage)
+- [`App.defaults(options)`](#appdefaultsoptions)
+- [Constructor](#constructor)
+- [API](#api)
+ - [`app.octokit`](#appoctokit)
+ - [`app.log`](#applog)
+ - [`app.getInstallationOctokit`](#appgetinstallationoctokit)
+ - [`app.eachInstallation`](#appeachinstallation)
+ - [`app.eachRepository`](#appeachrepository)
+ - [`app.getInstallationUrl`](#appgetinstallationurl)
+ - [`app.webhooks`](#appwebhooks)
+ - [`app.oauth`](#appoauth)
+- [Middlewares](#middlewares)
+ - [`createNodeMiddleware(app, options)`](#createnodemiddlewareapp-options)
+- [Contributing](#contributing)
+- [License](#license)
+
+
+
+## Usage
+
+
+
+
+
+Browsers
+
+
+
+`@octokit/app` is not meant for browser usage.
+
+
+
+
+Node
+
+
+
+Install with `npm install @octokit/app`
+
+```js
+const { App, createNodeMiddleware } = require("@octokit/app");
+```
+
+
+
+
+
+> [!IMPORTANT]
+> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`.
+>
+> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
+> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus)
+
+```js
+const app = new App({
+ appId: 123,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ oauth: {
+ clientId: "0123",
+ clientSecret: "0123secret",
+ },
+ webhooks: {
+ secret: "secret",
+ },
+});
+
+const { data } = await app.octokit.request("/app");
+console.log("authenticated as %s", data.name);
+for await (const { installation } of app.eachInstallation.iterator()) {
+ for await (const { octokit, repository } of app.eachRepository.iterator({
+ installationId: installation.id,
+ })) {
+ await octokit.request("POST /repos/{owner}/{repo}/dispatches", {
+ owner: repository.owner.login,
+ repo: repository.name,
+ event_type: "my_event",
+ });
+ }
+}
+
+app.webhooks.on("issues.opened", async ({ octokit, payload }) => {
+ await octokit.request(
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/comments",
+ {
+ owner: payload.repository.owner.login,
+ repo: payload.repository.name,
+ issue_number: payload.issue.number,
+ body: "Hello World!",
+ },
+ );
+});
+
+app.oauth.on("token", async ({ token, octokit }) => {
+ const { data } = await octokit.request("GET /user");
+ console.log(`Token retrieved for ${data.login}`);
+});
+
+require("http").createServer(createNodeMiddleware(app)).listen(3000);
+// can now receive requests at /api/github/*
+```
+
+## `App.defaults(options)`
+
+Create a new `App` with custom defaults for the [constructor options](#constructor-options)
+
+```js
+const MyApp = App.defaults({
+ Octokit: MyOctokit,
+});
+const app = new MyApp({ clientId, clientSecret });
+// app.octokit is now an instance of MyOctokit
+```
+
+## Constructor
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ appId
+
+
+ number
+
+
+ Required . Find the App ID on the app’s about page in settings.
+
+
+
+
+ privateKey
+
+
+ string
+
+
+ Required . Content of the *.pem
file you downloaded from the app’s about page. You can generate a new private key if needed.
+
+
+
+
+ Octokit
+
+
+ Constructor
+
+
+
+You can pass in your own Octokit constructor with custom defaults and plugins. Note that `authStrategy` will be always be set to `createAppAuth` from [`@octokit/auth-app`](https://github.com/octokit/auth-app.js).
+
+For usage with enterprise, set `baseUrl` to the hostname + `/api/v3`. Example:
+
+```js
+const { Octokit } = require("@octokit/core");
+new App({
+ appId: 123,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ oauth: {
+ clientId: 123,
+ clientSecret: "secret",
+ },
+ webhooks: {
+ secret: "secret",
+ },
+ Octokit: Octokit.defaults({
+ baseUrl: "https://ghe.my-company.com/api/v3",
+ }),
+});
+```
+
+Defaults to [`@octokit/core`](https://github.com/octokit/core.js).
+
+
+
+
+ log
+
+
+ object
+
+
+ Used for internal logging. Defaults to console
.
+
+
+
+
+ webhooks.secret
+
+
+ string
+
+
+ Required. Secret as configured in the GitHub App's settings.
+
+
+
+
+ webhooks.transform
+
+
+ function
+
+
+ Only relevant for `app.webhooks.on`. Transform emitted event before calling handlers. Can be asynchronous.
+
+
+
+
+ oauth.clientId
+
+
+ number
+
+
+ Find the OAuth Client ID on the app’s about page in settings.
+
+
+
+
+ oauth.clientSecret
+
+
+ number
+
+
+ Find the OAuth Client Secret on the app’s about page in settings.
+
+
+
+
+ oauth.allowSignup
+
+
+ boolean
+
+
+ Sets the default value for app.oauth.getAuthorizationUrl(options)
.
+
+
+
+
+
+## API
+
+### `app.octokit`
+
+Octokit instance. Uses the [`Octokit` constructor option](#constructor-option-octokit) if passed.
+
+### `app.log`
+
+See https://github.com/octokit/core.js#logging. Customize using the [`log` constructor option](#constructor-option-log).
+
+### `app.getInstallationOctokit`
+
+```js
+const octokit = await app.getInstallationOctokit(123);
+```
+
+### `app.eachInstallation`
+
+```js
+for await (const { octokit, installation } of app.eachInstallation.iterator()) { /* ... */ }
+await app.eachInstallation(({ octokit, installation }) => /* ... */)
+```
+
+### `app.eachRepository`
+
+```js
+for await (const { octokit, repository } of app.eachRepository.iterator()) { /* ... */ }
+await app.eachRepository(({ octokit, repository }) => /* ... */)
+```
+
+Optionally pass installation ID to iterate through all repositories in one installation
+
+```js
+for await (const { octokit, repository } of app.eachRepository.iterator({ installationId })) { /* ... */ }
+await app.eachRepository({ installationId }, ({ octokit, repository }) => /* ... */)
+```
+
+### `app.getInstallationUrl`
+
+```js
+const installationUrl = await app.getInstallationUrl();
+return res.redirect(installationUrl);
+```
+
+Optionally pass the ID of a GitHub organization or user to request installation on that specific target.
+
+If the user will be sent to a redirect URL after installation (such as if you request user authorization during installation), you can also supply a `state` string that will be included in the query of the post-install redirect.
+
+```js
+const installationUrl = await app.getInstallationUrl({ state, target_id });
+return res.redirect(installationUrl);
+```
+
+### `app.webhooks`
+
+An [`@octokit/webhooks` instance](https://github.com/octokit/webhooks.js/#readme)
+
+### `app.oauth`
+
+An [`@octokit/oauth-app` instance](https://github.com/octokit/oauth-app.js/#readme)
+
+## Middlewares
+
+A middleware is a method or set of methods to handle requests for common environments.
+
+By default, all middlewares expose the following routes
+
+| Route | Route Description |
+| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `POST /api/github/webhooks` | Endpoint to receive GitHub Webhook Event requests |
+| `GET /api/github/oauth/login` | Redirects to GitHub's authorization endpoint. Accepts optional `?state` query parameter. |
+| `GET /api/github/oauth/callback` | The client's redirect endpoint. This is where the `token` event gets triggered |
+| `POST /api/github/oauth/token` | Exchange an authorization code for an OAuth Access token. If successful, the `token` event gets triggered. |
+| `GET /api/github/oauth/token` | Check if token is valid. Must authenticate using token in `Authorization` header. Uses GitHub's [`POST /applications/{client_id}/token`](https://developer.github.com/v3/apps/oauth_applications/#check-a-token) endpoint |
+| `PATCH /api/github/oauth/token` | Resets a token (invalidates current one, returns new token). Must authenticate using token in `Authorization` header. Uses GitHub's [`PATCH /applications/{client_id}/token`](https://developer.github.com/v3/apps/oauth_applications/#reset-a-token) endpoint. |
+| `DELETE /api/github/oauth/token` | Invalidates current token, basically the equivalent of a logout. Must authenticate using token in `Authorization` header. |
+| `DELETE /api/github/oauth/grant` | Revokes the user's grant, basically the equivalent of an uninstall. must authenticate using token in `Authorization` header. |
+
+### `createNodeMiddleware(app, options)`
+
+Middleware for Node's built in http server or [`express`](https://expressjs.com/).
+
+```js
+const { App, createNodeMiddleware } = require("@octokit/app");
+
+const app = new App({
+ appId: 123,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ oauth: {
+ clientId: "0123",
+ clientSecret: "0123secret",
+ },
+ webhooks: {
+ secret: "secret",
+ },
+});
+
+const middleware = createNodeMiddleware(app);
+require("http")
+ .createServer(async (req, res) => {
+ // `middleware` returns `false` when `req` is unhandled (beyond `/api/github`)
+ if (await middleware(req, res)) return;
+ res.writeHead(404);
+ res.end();
+ })
+ .listen(3000);
+// can now receive user authorization callbacks at /api/github/*
+```
+
+The middleware returned from `createNodeMiddleware` can also serve as an
+`Express.js` middleware directly.
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ app
+
+
+ App instance
+
+
+ Required .
+
+
+
+
+ options.pathPrefix
+
+
+ string
+
+
+
+All exposed paths will be prefixed with the provided prefix. Defaults to `"/api/github"`
+
+
+
+
+
+ log
+
+ object
+
+
+
+
+Used for internal logging. Defaults to [`console`](https://developer.mozilla.org/en-US/docs/Web/API/console) with `debug` and `info` doing nothing.
+
+
+
+
+
+
+
+## Contributing
+
+See [CONTRIBUTING.md](CONTRIBUTING.md)
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/dist-node/index.js b/node_modules/@octokit/app/dist-node/index.js
new file mode 100644
index 0000000000..51f97350da
--- /dev/null
+++ b/node_modules/@octokit/app/dist-node/index.js
@@ -0,0 +1,341 @@
+// pkg/dist-src/index.js
+import { Octokit as OctokitCore } from "@octokit/core";
+import { createAppAuth as createAppAuth3 } from "@octokit/auth-app";
+import { OAuthApp } from "@octokit/oauth-app";
+
+// pkg/dist-src/version.js
+var VERSION = "15.1.4";
+
+// pkg/dist-src/webhooks.js
+import { createAppAuth } from "@octokit/auth-app";
+import { createUnauthenticatedAuth } from "@octokit/auth-unauthenticated";
+import { Webhooks } from "@octokit/webhooks";
+function webhooks(appOctokit, options) {
+ return new Webhooks({
+ secret: options.secret,
+ transform: async (event) => {
+ if (!("installation" in event.payload) || typeof event.payload.installation !== "object") {
+ const octokit2 = new appOctokit.constructor({
+ authStrategy: createUnauthenticatedAuth,
+ auth: {
+ reason: `"installation" key missing in webhook event payload`
+ }
+ });
+ return {
+ ...event,
+ octokit: octokit2
+ };
+ }
+ const installationId = event.payload.installation.id;
+ const octokit = await appOctokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ return new auth.octokit.constructor({
+ ...auth.octokitOptions,
+ authStrategy: createAppAuth,
+ ...{
+ auth: {
+ ...auth,
+ installationId
+ }
+ }
+ });
+ }
+ });
+ octokit.hook.before("request", (options2) => {
+ options2.headers["x-github-delivery"] = event.id;
+ });
+ return {
+ ...event,
+ octokit
+ };
+ }
+ });
+}
+
+// pkg/dist-src/each-installation.js
+import { composePaginateRest } from "@octokit/plugin-paginate-rest";
+
+// pkg/dist-src/get-installation-octokit.js
+import { createAppAuth as createAppAuth2 } from "@octokit/auth-app";
+async function getInstallationOctokit(app, installationId) {
+ return app.octokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ const options = {
+ ...auth.octokitOptions,
+ authStrategy: createAppAuth2,
+ ...{ auth: { ...auth, installationId } }
+ };
+ return new auth.octokit.constructor(options);
+ }
+ });
+}
+
+// pkg/dist-src/each-installation.js
+function eachInstallationFactory(app) {
+ return Object.assign(eachInstallation.bind(null, app), {
+ iterator: eachInstallationIterator.bind(null, app)
+ });
+}
+async function eachInstallation(app, callback) {
+ const i = eachInstallationIterator(app)[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ await callback(result.value);
+ result = await i.next();
+ }
+}
+function eachInstallationIterator(app) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = composePaginateRest.iterator(
+ app.octokit,
+ "GET /app/installations"
+ );
+ for await (const { data: installations } of iterator) {
+ for (const installation of installations) {
+ const installationOctokit = await getInstallationOctokit(
+ app,
+ installation.id
+ );
+ yield { octokit: installationOctokit, installation };
+ }
+ }
+ }
+ };
+}
+
+// pkg/dist-src/each-repository.js
+import { composePaginateRest as composePaginateRest2 } from "@octokit/plugin-paginate-rest";
+function eachRepositoryFactory(app) {
+ return Object.assign(eachRepository.bind(null, app), {
+ iterator: eachRepositoryIterator.bind(null, app)
+ });
+}
+async function eachRepository(app, queryOrCallback, callback) {
+ const i = eachRepositoryIterator(
+ app,
+ callback ? queryOrCallback : void 0
+ )[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ if (callback) {
+ await callback(result.value);
+ } else {
+ await queryOrCallback(result.value);
+ }
+ result = await i.next();
+ }
+}
+function singleInstallationIterator(app, installationId) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ yield {
+ octokit: await app.getInstallationOctokit(installationId)
+ };
+ }
+ };
+}
+function eachRepositoryIterator(app, query) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();
+ for await (const { octokit } of iterator) {
+ const repositoriesIterator = composePaginateRest2.iterator(
+ octokit,
+ "GET /installation/repositories"
+ );
+ for await (const { data: repositories } of repositoriesIterator) {
+ for (const repository of repositories) {
+ yield { octokit, repository };
+ }
+ }
+ }
+ }
+ };
+}
+
+// pkg/dist-src/get-installation-url.js
+function getInstallationUrlFactory(app) {
+ let installationUrlBasePromise;
+ return async function getInstallationUrl(options = {}) {
+ if (!installationUrlBasePromise) {
+ installationUrlBasePromise = getInstallationUrlBase(app);
+ }
+ const installationUrlBase = await installationUrlBasePromise;
+ const installationUrl = new URL(installationUrlBase);
+ if (options.target_id !== void 0) {
+ installationUrl.pathname += "/permissions";
+ installationUrl.searchParams.append(
+ "target_id",
+ options.target_id.toFixed()
+ );
+ }
+ if (options.state !== void 0) {
+ installationUrl.searchParams.append("state", options.state);
+ }
+ return installationUrl.href;
+ };
+}
+async function getInstallationUrlBase(app) {
+ const { data: appInfo } = await app.octokit.request("GET /app");
+ if (!appInfo) {
+ throw new Error("[@octokit/app] unable to fetch metadata for app");
+ }
+ return `${appInfo.html_url}/installations/new`;
+}
+
+// pkg/dist-src/middleware/node/index.js
+import {
+ createNodeMiddleware as oauthNodeMiddleware,
+ sendNodeResponse,
+ unknownRouteResponse
+} from "@octokit/oauth-app";
+import { createNodeMiddleware as webhooksNodeMiddleware } from "@octokit/webhooks";
+function noop() {
+}
+function createNodeMiddleware(app, options = {}) {
+ const log = Object.assign(
+ {
+ debug: noop,
+ info: noop,
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ const optionsWithDefaults = {
+ pathPrefix: "/api/github",
+ ...options,
+ log
+ };
+ const webhooksMiddleware = webhooksNodeMiddleware(app.webhooks, {
+ path: optionsWithDefaults.pathPrefix + "/webhooks",
+ log
+ });
+ const oauthMiddleware = oauthNodeMiddleware(app.oauth, {
+ pathPrefix: optionsWithDefaults.pathPrefix + "/oauth"
+ });
+ return middleware.bind(
+ null,
+ optionsWithDefaults.pathPrefix,
+ webhooksMiddleware,
+ oauthMiddleware
+ );
+}
+async function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {
+ const { pathname } = new URL(request.url, "http://localhost");
+ if (pathname.startsWith(`${pathPrefix}/`)) {
+ if (pathname === `${pathPrefix}/webhooks`) {
+ webhooksMiddleware(request, response);
+ } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {
+ oauthMiddleware(request, response);
+ } else {
+ sendNodeResponse(unknownRouteResponse(request), response);
+ }
+ return true;
+ } else {
+ next?.();
+ return false;
+ }
+}
+
+// pkg/dist-src/index.js
+var App = class {
+ static VERSION = VERSION;
+ static defaults(defaults) {
+ const AppWithDefaults = class extends this {
+ constructor(...args) {
+ super({
+ ...defaults,
+ ...args[0]
+ });
+ }
+ };
+ return AppWithDefaults;
+ }
+ octokit;
+ // @ts-ignore calling app.webhooks will throw a helpful error when options.webhooks is not set
+ webhooks;
+ // @ts-ignore calling app.oauth will throw a helpful error when options.oauth is not set
+ oauth;
+ getInstallationOctokit;
+ eachInstallation;
+ eachRepository;
+ getInstallationUrl;
+ log;
+ constructor(options) {
+ const Octokit = options.Octokit || OctokitCore;
+ const authOptions = Object.assign(
+ {
+ appId: options.appId,
+ privateKey: options.privateKey
+ },
+ options.oauth ? {
+ clientId: options.oauth.clientId,
+ clientSecret: options.oauth.clientSecret
+ } : {}
+ );
+ const octokitOptions = {
+ authStrategy: createAppAuth3,
+ auth: authOptions
+ };
+ if ("log" in options && typeof options.log !== "undefined") {
+ octokitOptions.log = options.log;
+ }
+ this.octokit = new Octokit(octokitOptions);
+ this.log = Object.assign(
+ {
+ debug: () => {
+ },
+ info: () => {
+ },
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ if (options.webhooks) {
+ this.webhooks = webhooks(this.octokit, options.webhooks);
+ } else {
+ Object.defineProperty(this, "webhooks", {
+ get() {
+ throw new Error("[@octokit/app] webhooks option not set");
+ }
+ });
+ }
+ if (options.oauth) {
+ this.oauth = new OAuthApp({
+ ...options.oauth,
+ clientType: "github-app",
+ Octokit
+ });
+ } else {
+ Object.defineProperty(this, "oauth", {
+ get() {
+ throw new Error(
+ "[@octokit/app] oauth.clientId / oauth.clientSecret options are not set"
+ );
+ }
+ });
+ }
+ this.getInstallationOctokit = getInstallationOctokit.bind(
+ null,
+ this
+ );
+ this.eachInstallation = eachInstallationFactory(
+ this
+ );
+ this.eachRepository = eachRepositoryFactory(
+ this
+ );
+ this.getInstallationUrl = getInstallationUrlFactory(this);
+ }
+};
+export {
+ App,
+ createNodeMiddleware
+};
diff --git a/node_modules/@octokit/app/dist-node/index.js.map b/node_modules/@octokit/app/dist-node/index.js.map
new file mode 100644
index 0000000000..47f364b4c7
--- /dev/null
+++ b/node_modules/@octokit/app/dist-node/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/webhooks.js", "../dist-src/each-installation.js", "../dist-src/get-installation-octokit.js", "../dist-src/each-repository.js", "../dist-src/get-installation-url.js", "../dist-src/middleware/node/index.js"],
+ "sourcesContent": ["import { Octokit as OctokitCore } from \"@octokit/core\";\nimport { createAppAuth } from \"@octokit/auth-app\";\nimport { OAuthApp } from \"@octokit/oauth-app\";\nimport { VERSION } from \"./version.js\";\nimport { webhooks } from \"./webhooks.js\";\nimport { eachInstallationFactory } from \"./each-installation.js\";\nimport { eachRepositoryFactory } from \"./each-repository.js\";\nimport { getInstallationOctokit } from \"./get-installation-octokit.js\";\nimport { getInstallationUrlFactory } from \"./get-installation-url.js\";\nclass App {\n static VERSION = VERSION;\n static defaults(defaults) {\n const AppWithDefaults = class extends this {\n constructor(...args) {\n super({\n ...defaults,\n ...args[0]\n });\n }\n };\n return AppWithDefaults;\n }\n octokit;\n // @ts-ignore calling app.webhooks will throw a helpful error when options.webhooks is not set\n webhooks;\n // @ts-ignore calling app.oauth will throw a helpful error when options.oauth is not set\n oauth;\n getInstallationOctokit;\n eachInstallation;\n eachRepository;\n getInstallationUrl;\n log;\n constructor(options) {\n const Octokit = options.Octokit || OctokitCore;\n const authOptions = Object.assign(\n {\n appId: options.appId,\n privateKey: options.privateKey\n },\n options.oauth ? {\n clientId: options.oauth.clientId,\n clientSecret: options.oauth.clientSecret\n } : {}\n );\n const octokitOptions = {\n authStrategy: createAppAuth,\n auth: authOptions\n };\n if (\"log\" in options && typeof options.log !== \"undefined\") {\n octokitOptions.log = options.log;\n }\n this.octokit = new Octokit(octokitOptions);\n this.log = Object.assign(\n {\n debug: () => {\n },\n info: () => {\n },\n warn: console.warn.bind(console),\n error: console.error.bind(console)\n },\n options.log\n );\n if (options.webhooks) {\n this.webhooks = webhooks(this.octokit, options.webhooks);\n } else {\n Object.defineProperty(this, \"webhooks\", {\n get() {\n throw new Error(\"[@octokit/app] webhooks option not set\");\n }\n });\n }\n if (options.oauth) {\n this.oauth = new OAuthApp({\n ...options.oauth,\n clientType: \"github-app\",\n Octokit\n });\n } else {\n Object.defineProperty(this, \"oauth\", {\n get() {\n throw new Error(\n \"[@octokit/app] oauth.clientId / oauth.clientSecret options are not set\"\n );\n }\n });\n }\n this.getInstallationOctokit = getInstallationOctokit.bind(\n null,\n this\n );\n this.eachInstallation = eachInstallationFactory(\n this\n );\n this.eachRepository = eachRepositoryFactory(\n this\n );\n this.getInstallationUrl = getInstallationUrlFactory(this);\n }\n}\nimport { createNodeMiddleware } from \"./middleware/node/index.js\";\nexport {\n App,\n createNodeMiddleware\n};\n", "const VERSION = \"15.1.4\";\nexport {\n VERSION\n};\n", "import { createAppAuth } from \"@octokit/auth-app\";\nimport { createUnauthenticatedAuth } from \"@octokit/auth-unauthenticated\";\nimport { Webhooks } from \"@octokit/webhooks\";\nfunction webhooks(appOctokit, options) {\n return new Webhooks({\n secret: options.secret,\n transform: async (event) => {\n if (!(\"installation\" in event.payload) || typeof event.payload.installation !== \"object\") {\n const octokit2 = new appOctokit.constructor({\n authStrategy: createUnauthenticatedAuth,\n auth: {\n reason: `\"installation\" key missing in webhook event payload`\n }\n });\n return {\n ...event,\n octokit: octokit2\n };\n }\n const installationId = event.payload.installation.id;\n const octokit = await appOctokit.auth({\n type: \"installation\",\n installationId,\n factory(auth) {\n return new auth.octokit.constructor({\n ...auth.octokitOptions,\n authStrategy: createAppAuth,\n ...{\n auth: {\n ...auth,\n installationId\n }\n }\n });\n }\n });\n octokit.hook.before(\"request\", (options2) => {\n options2.headers[\"x-github-delivery\"] = event.id;\n });\n return {\n ...event,\n octokit\n };\n }\n });\n}\nexport {\n webhooks\n};\n", "import { composePaginateRest } from \"@octokit/plugin-paginate-rest\";\nimport { getInstallationOctokit } from \"./get-installation-octokit.js\";\nfunction eachInstallationFactory(app) {\n return Object.assign(eachInstallation.bind(null, app), {\n iterator: eachInstallationIterator.bind(null, app)\n });\n}\nasync function eachInstallation(app, callback) {\n const i = eachInstallationIterator(app)[Symbol.asyncIterator]();\n let result = await i.next();\n while (!result.done) {\n await callback(result.value);\n result = await i.next();\n }\n}\nfunction eachInstallationIterator(app) {\n return {\n async *[Symbol.asyncIterator]() {\n const iterator = composePaginateRest.iterator(\n app.octokit,\n \"GET /app/installations\"\n );\n for await (const { data: installations } of iterator) {\n for (const installation of installations) {\n const installationOctokit = await getInstallationOctokit(\n app,\n installation.id\n );\n yield { octokit: installationOctokit, installation };\n }\n }\n }\n };\n}\nexport {\n eachInstallation,\n eachInstallationFactory,\n eachInstallationIterator\n};\n", "import { createAppAuth } from \"@octokit/auth-app\";\nasync function getInstallationOctokit(app, installationId) {\n return app.octokit.auth({\n type: \"installation\",\n installationId,\n factory(auth) {\n const options = {\n ...auth.octokitOptions,\n authStrategy: createAppAuth,\n ...{ auth: { ...auth, installationId } }\n };\n return new auth.octokit.constructor(options);\n }\n });\n}\nexport {\n getInstallationOctokit\n};\n", "import { composePaginateRest } from \"@octokit/plugin-paginate-rest\";\nfunction eachRepositoryFactory(app) {\n return Object.assign(eachRepository.bind(null, app), {\n iterator: eachRepositoryIterator.bind(null, app)\n });\n}\nasync function eachRepository(app, queryOrCallback, callback) {\n const i = eachRepositoryIterator(\n app,\n callback ? queryOrCallback : void 0\n )[Symbol.asyncIterator]();\n let result = await i.next();\n while (!result.done) {\n if (callback) {\n await callback(result.value);\n } else {\n await queryOrCallback(result.value);\n }\n result = await i.next();\n }\n}\nfunction singleInstallationIterator(app, installationId) {\n return {\n async *[Symbol.asyncIterator]() {\n yield {\n octokit: await app.getInstallationOctokit(installationId)\n };\n }\n };\n}\nfunction eachRepositoryIterator(app, query) {\n return {\n async *[Symbol.asyncIterator]() {\n const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();\n for await (const { octokit } of iterator) {\n const repositoriesIterator = composePaginateRest.iterator(\n octokit,\n \"GET /installation/repositories\"\n );\n for await (const { data: repositories } of repositoriesIterator) {\n for (const repository of repositories) {\n yield { octokit, repository };\n }\n }\n }\n }\n };\n}\nexport {\n eachRepository,\n eachRepositoryFactory,\n eachRepositoryIterator\n};\n", "function getInstallationUrlFactory(app) {\n let installationUrlBasePromise;\n return async function getInstallationUrl(options = {}) {\n if (!installationUrlBasePromise) {\n installationUrlBasePromise = getInstallationUrlBase(app);\n }\n const installationUrlBase = await installationUrlBasePromise;\n const installationUrl = new URL(installationUrlBase);\n if (options.target_id !== void 0) {\n installationUrl.pathname += \"/permissions\";\n installationUrl.searchParams.append(\n \"target_id\",\n options.target_id.toFixed()\n );\n }\n if (options.state !== void 0) {\n installationUrl.searchParams.append(\"state\", options.state);\n }\n return installationUrl.href;\n };\n}\nasync function getInstallationUrlBase(app) {\n const { data: appInfo } = await app.octokit.request(\"GET /app\");\n if (!appInfo) {\n throw new Error(\"[@octokit/app] unable to fetch metadata for app\");\n }\n return `${appInfo.html_url}/installations/new`;\n}\nexport {\n getInstallationUrlFactory\n};\n", "import {\n createNodeMiddleware as oauthNodeMiddleware,\n sendNodeResponse,\n unknownRouteResponse\n} from \"@octokit/oauth-app\";\nimport { createNodeMiddleware as webhooksNodeMiddleware } from \"@octokit/webhooks\";\nfunction noop() {\n}\nfunction createNodeMiddleware(app, options = {}) {\n const log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: console.warn.bind(console),\n error: console.error.bind(console)\n },\n options.log\n );\n const optionsWithDefaults = {\n pathPrefix: \"/api/github\",\n ...options,\n log\n };\n const webhooksMiddleware = webhooksNodeMiddleware(app.webhooks, {\n path: optionsWithDefaults.pathPrefix + \"/webhooks\",\n log\n });\n const oauthMiddleware = oauthNodeMiddleware(app.oauth, {\n pathPrefix: optionsWithDefaults.pathPrefix + \"/oauth\"\n });\n return middleware.bind(\n null,\n optionsWithDefaults.pathPrefix,\n webhooksMiddleware,\n oauthMiddleware\n );\n}\nasync function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {\n const { pathname } = new URL(request.url, \"http://localhost\");\n if (pathname.startsWith(`${pathPrefix}/`)) {\n if (pathname === `${pathPrefix}/webhooks`) {\n webhooksMiddleware(request, response);\n } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {\n oauthMiddleware(request, response);\n } else {\n sendNodeResponse(unknownRouteResponse(request), response);\n }\n return true;\n } else {\n next?.();\n return false;\n }\n}\nexport {\n createNodeMiddleware,\n middleware\n};\n"],
+ "mappings": "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",
+ "names": ["createAppAuth", "createAppAuth", "composePaginateRest", "createAppAuth"]
+}
diff --git a/node_modules/@octokit/app/dist-src/each-installation.js b/node_modules/@octokit/app/dist-src/each-installation.js
new file mode 100644
index 0000000000..70abc8fa40
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/each-installation.js
@@ -0,0 +1,39 @@
+import { composePaginateRest } from "@octokit/plugin-paginate-rest";
+import { getInstallationOctokit } from "./get-installation-octokit.js";
+function eachInstallationFactory(app) {
+ return Object.assign(eachInstallation.bind(null, app), {
+ iterator: eachInstallationIterator.bind(null, app)
+ });
+}
+async function eachInstallation(app, callback) {
+ const i = eachInstallationIterator(app)[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ await callback(result.value);
+ result = await i.next();
+ }
+}
+function eachInstallationIterator(app) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = composePaginateRest.iterator(
+ app.octokit,
+ "GET /app/installations"
+ );
+ for await (const { data: installations } of iterator) {
+ for (const installation of installations) {
+ const installationOctokit = await getInstallationOctokit(
+ app,
+ installation.id
+ );
+ yield { octokit: installationOctokit, installation };
+ }
+ }
+ }
+ };
+}
+export {
+ eachInstallation,
+ eachInstallationFactory,
+ eachInstallationIterator
+};
diff --git a/node_modules/@octokit/app/dist-src/each-repository.js b/node_modules/@octokit/app/dist-src/each-repository.js
new file mode 100644
index 0000000000..7c61ea5596
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/each-repository.js
@@ -0,0 +1,53 @@
+import { composePaginateRest } from "@octokit/plugin-paginate-rest";
+function eachRepositoryFactory(app) {
+ return Object.assign(eachRepository.bind(null, app), {
+ iterator: eachRepositoryIterator.bind(null, app)
+ });
+}
+async function eachRepository(app, queryOrCallback, callback) {
+ const i = eachRepositoryIterator(
+ app,
+ callback ? queryOrCallback : void 0
+ )[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ if (callback) {
+ await callback(result.value);
+ } else {
+ await queryOrCallback(result.value);
+ }
+ result = await i.next();
+ }
+}
+function singleInstallationIterator(app, installationId) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ yield {
+ octokit: await app.getInstallationOctokit(installationId)
+ };
+ }
+ };
+}
+function eachRepositoryIterator(app, query) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();
+ for await (const { octokit } of iterator) {
+ const repositoriesIterator = composePaginateRest.iterator(
+ octokit,
+ "GET /installation/repositories"
+ );
+ for await (const { data: repositories } of repositoriesIterator) {
+ for (const repository of repositories) {
+ yield { octokit, repository };
+ }
+ }
+ }
+ }
+ };
+}
+export {
+ eachRepository,
+ eachRepositoryFactory,
+ eachRepositoryIterator
+};
diff --git a/node_modules/@octokit/app/dist-src/get-installation-octokit.js b/node_modules/@octokit/app/dist-src/get-installation-octokit.js
new file mode 100644
index 0000000000..d4b9afbea7
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/get-installation-octokit.js
@@ -0,0 +1,18 @@
+import { createAppAuth } from "@octokit/auth-app";
+async function getInstallationOctokit(app, installationId) {
+ return app.octokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ const options = {
+ ...auth.octokitOptions,
+ authStrategy: createAppAuth,
+ ...{ auth: { ...auth, installationId } }
+ };
+ return new auth.octokit.constructor(options);
+ }
+ });
+}
+export {
+ getInstallationOctokit
+};
diff --git a/node_modules/@octokit/app/dist-src/get-installation-url.js b/node_modules/@octokit/app/dist-src/get-installation-url.js
new file mode 100644
index 0000000000..3a8f98496a
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/get-installation-url.js
@@ -0,0 +1,31 @@
+function getInstallationUrlFactory(app) {
+ let installationUrlBasePromise;
+ return async function getInstallationUrl(options = {}) {
+ if (!installationUrlBasePromise) {
+ installationUrlBasePromise = getInstallationUrlBase(app);
+ }
+ const installationUrlBase = await installationUrlBasePromise;
+ const installationUrl = new URL(installationUrlBase);
+ if (options.target_id !== void 0) {
+ installationUrl.pathname += "/permissions";
+ installationUrl.searchParams.append(
+ "target_id",
+ options.target_id.toFixed()
+ );
+ }
+ if (options.state !== void 0) {
+ installationUrl.searchParams.append("state", options.state);
+ }
+ return installationUrl.href;
+ };
+}
+async function getInstallationUrlBase(app) {
+ const { data: appInfo } = await app.octokit.request("GET /app");
+ if (!appInfo) {
+ throw new Error("[@octokit/app] unable to fetch metadata for app");
+ }
+ return `${appInfo.html_url}/installations/new`;
+}
+export {
+ getInstallationUrlFactory
+};
diff --git a/node_modules/@octokit/app/dist-src/index.js b/node_modules/@octokit/app/dist-src/index.js
new file mode 100644
index 0000000000..eb190c8934
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/index.js
@@ -0,0 +1,105 @@
+import { Octokit as OctokitCore } from "@octokit/core";
+import { createAppAuth } from "@octokit/auth-app";
+import { OAuthApp } from "@octokit/oauth-app";
+import { VERSION } from "./version.js";
+import { webhooks } from "./webhooks.js";
+import { eachInstallationFactory } from "./each-installation.js";
+import { eachRepositoryFactory } from "./each-repository.js";
+import { getInstallationOctokit } from "./get-installation-octokit.js";
+import { getInstallationUrlFactory } from "./get-installation-url.js";
+class App {
+ static VERSION = VERSION;
+ static defaults(defaults) {
+ const AppWithDefaults = class extends this {
+ constructor(...args) {
+ super({
+ ...defaults,
+ ...args[0]
+ });
+ }
+ };
+ return AppWithDefaults;
+ }
+ octokit;
+ // @ts-ignore calling app.webhooks will throw a helpful error when options.webhooks is not set
+ webhooks;
+ // @ts-ignore calling app.oauth will throw a helpful error when options.oauth is not set
+ oauth;
+ getInstallationOctokit;
+ eachInstallation;
+ eachRepository;
+ getInstallationUrl;
+ log;
+ constructor(options) {
+ const Octokit = options.Octokit || OctokitCore;
+ const authOptions = Object.assign(
+ {
+ appId: options.appId,
+ privateKey: options.privateKey
+ },
+ options.oauth ? {
+ clientId: options.oauth.clientId,
+ clientSecret: options.oauth.clientSecret
+ } : {}
+ );
+ const octokitOptions = {
+ authStrategy: createAppAuth,
+ auth: authOptions
+ };
+ if ("log" in options && typeof options.log !== "undefined") {
+ octokitOptions.log = options.log;
+ }
+ this.octokit = new Octokit(octokitOptions);
+ this.log = Object.assign(
+ {
+ debug: () => {
+ },
+ info: () => {
+ },
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ if (options.webhooks) {
+ this.webhooks = webhooks(this.octokit, options.webhooks);
+ } else {
+ Object.defineProperty(this, "webhooks", {
+ get() {
+ throw new Error("[@octokit/app] webhooks option not set");
+ }
+ });
+ }
+ if (options.oauth) {
+ this.oauth = new OAuthApp({
+ ...options.oauth,
+ clientType: "github-app",
+ Octokit
+ });
+ } else {
+ Object.defineProperty(this, "oauth", {
+ get() {
+ throw new Error(
+ "[@octokit/app] oauth.clientId / oauth.clientSecret options are not set"
+ );
+ }
+ });
+ }
+ this.getInstallationOctokit = getInstallationOctokit.bind(
+ null,
+ this
+ );
+ this.eachInstallation = eachInstallationFactory(
+ this
+ );
+ this.eachRepository = eachRepositoryFactory(
+ this
+ );
+ this.getInstallationUrl = getInstallationUrlFactory(this);
+ }
+}
+import { createNodeMiddleware } from "./middleware/node/index.js";
+export {
+ App,
+ createNodeMiddleware
+};
diff --git a/node_modules/@octokit/app/dist-src/middleware/node/index.js b/node_modules/@octokit/app/dist-src/middleware/node/index.js
new file mode 100644
index 0000000000..56529da255
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/middleware/node/index.js
@@ -0,0 +1,57 @@
+import {
+ createNodeMiddleware as oauthNodeMiddleware,
+ sendNodeResponse,
+ unknownRouteResponse
+} from "@octokit/oauth-app";
+import { createNodeMiddleware as webhooksNodeMiddleware } from "@octokit/webhooks";
+function noop() {
+}
+function createNodeMiddleware(app, options = {}) {
+ const log = Object.assign(
+ {
+ debug: noop,
+ info: noop,
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ const optionsWithDefaults = {
+ pathPrefix: "/api/github",
+ ...options,
+ log
+ };
+ const webhooksMiddleware = webhooksNodeMiddleware(app.webhooks, {
+ path: optionsWithDefaults.pathPrefix + "/webhooks",
+ log
+ });
+ const oauthMiddleware = oauthNodeMiddleware(app.oauth, {
+ pathPrefix: optionsWithDefaults.pathPrefix + "/oauth"
+ });
+ return middleware.bind(
+ null,
+ optionsWithDefaults.pathPrefix,
+ webhooksMiddleware,
+ oauthMiddleware
+ );
+}
+async function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {
+ const { pathname } = new URL(request.url, "http://localhost");
+ if (pathname.startsWith(`${pathPrefix}/`)) {
+ if (pathname === `${pathPrefix}/webhooks`) {
+ webhooksMiddleware(request, response);
+ } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {
+ oauthMiddleware(request, response);
+ } else {
+ sendNodeResponse(unknownRouteResponse(request), response);
+ }
+ return true;
+ } else {
+ next?.();
+ return false;
+ }
+}
+export {
+ createNodeMiddleware,
+ middleware
+};
diff --git a/node_modules/@octokit/app/dist-src/version.js b/node_modules/@octokit/app/dist-src/version.js
new file mode 100644
index 0000000000..3e02ac5c30
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "15.1.4";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/app/dist-src/webhooks.js b/node_modules/@octokit/app/dist-src/webhooks.js
new file mode 100644
index 0000000000..fefd443ee7
--- /dev/null
+++ b/node_modules/@octokit/app/dist-src/webhooks.js
@@ -0,0 +1,49 @@
+import { createAppAuth } from "@octokit/auth-app";
+import { createUnauthenticatedAuth } from "@octokit/auth-unauthenticated";
+import { Webhooks } from "@octokit/webhooks";
+function webhooks(appOctokit, options) {
+ return new Webhooks({
+ secret: options.secret,
+ transform: async (event) => {
+ if (!("installation" in event.payload) || typeof event.payload.installation !== "object") {
+ const octokit2 = new appOctokit.constructor({
+ authStrategy: createUnauthenticatedAuth,
+ auth: {
+ reason: `"installation" key missing in webhook event payload`
+ }
+ });
+ return {
+ ...event,
+ octokit: octokit2
+ };
+ }
+ const installationId = event.payload.installation.id;
+ const octokit = await appOctokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ return new auth.octokit.constructor({
+ ...auth.octokitOptions,
+ authStrategy: createAppAuth,
+ ...{
+ auth: {
+ ...auth,
+ installationId
+ }
+ }
+ });
+ }
+ });
+ octokit.hook.before("request", (options2) => {
+ options2.headers["x-github-delivery"] = event.id;
+ });
+ return {
+ ...event,
+ octokit
+ };
+ }
+ });
+}
+export {
+ webhooks
+};
diff --git a/node_modules/@octokit/app/dist-types/each-installation.d.ts b/node_modules/@octokit/app/dist-types/each-installation.d.ts
new file mode 100644
index 0000000000..7537f77f43
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/each-installation.d.ts
@@ -0,0 +1,122 @@
+import type { Octokit } from "@octokit/core";
+import type { App } from "./index.js";
+import type { EachInstallationFunction, EachInstallationInterface } from "./types.js";
+export declare function eachInstallationFactory(app: App): EachInstallationInterface;
+export declare function eachInstallation(app: App, callback: EachInstallationFunction): Promise;
+export declare function eachInstallationIterator(app: App): {
+ [Symbol.asyncIterator](): AsyncGenerator<{
+ octokit: Octokit;
+ installation: {
+ id: number;
+ account: ({
+ name?: string | null;
+ email?: string | null;
+ login: string;
+ id: number;
+ node_id: string;
+ avatar_url: string;
+ gravatar_id: string | null;
+ url: string;
+ html_url: string;
+ followers_url: string;
+ following_url: string;
+ gists_url: string;
+ starred_url: string;
+ subscriptions_url: string;
+ organizations_url: string;
+ repos_url: string;
+ events_url: string;
+ received_events_url: string;
+ type: string;
+ site_admin: boolean;
+ starred_at?: string;
+ } & {
+ description?: string | null;
+ html_url: string;
+ website_url?: string | null;
+ id: number;
+ node_id: string;
+ name: string;
+ slug: string;
+ created_at: string | null;
+ updated_at: string | null;
+ avatar_url: string;
+ }) | null;
+ repository_selection: "all" | "selected";
+ access_tokens_url: string;
+ repositories_url: string;
+ html_url: string;
+ app_id: number;
+ target_id: number;
+ target_type: string;
+ permissions: {
+ actions?: "read" | "write";
+ administration?: "read" | "write";
+ checks?: "read" | "write";
+ contents?: "read" | "write";
+ deployments?: "read" | "write";
+ environments?: "read" | "write";
+ issues?: "read" | "write";
+ metadata?: "read" | "write";
+ packages?: "read" | "write";
+ pages?: "read" | "write";
+ pull_requests?: "read" | "write";
+ repository_hooks?: "read" | "write";
+ repository_projects?: "read" | "write" | "admin";
+ secret_scanning_alerts?: "read" | "write";
+ secrets?: "read" | "write";
+ security_events?: "read" | "write";
+ single_file?: "read" | "write";
+ statuses?: "read" | "write";
+ vulnerability_alerts?: "read" | "write";
+ workflows?: "write";
+ members?: "read" | "write";
+ organization_administration?: "read" | "write";
+ organization_custom_roles?: "read" | "write";
+ organization_announcement_banners?: "read" | "write";
+ organization_hooks?: "read" | "write";
+ organization_personal_access_tokens?: "read" | "write";
+ organization_personal_access_token_requests?: "read" | "write";
+ organization_plan?: "read";
+ organization_projects?: "read" | "write" | "admin";
+ organization_packages?: "read" | "write";
+ organization_secrets?: "read" | "write";
+ organization_self_hosted_runners?: "read" | "write";
+ organization_user_blocking?: "read" | "write";
+ team_discussions?: "read" | "write";
+ };
+ events: string[];
+ created_at: string;
+ updated_at: string;
+ single_file_name: string | null;
+ has_multiple_single_files?: boolean;
+ single_file_paths?: string[];
+ app_slug: string;
+ suspended_by: {
+ name?: string | null;
+ email?: string | null;
+ login: string;
+ id: number;
+ node_id: string;
+ avatar_url: string;
+ gravatar_id: string | null;
+ url: string;
+ html_url: string;
+ followers_url: string;
+ following_url: string;
+ gists_url: string;
+ starred_url: string;
+ subscriptions_url: string;
+ organizations_url: string;
+ repos_url: string;
+ events_url: string;
+ received_events_url: string;
+ type: string;
+ site_admin: boolean;
+ starred_at?: string;
+ } | null;
+ suspended_at: string | null;
+ contact_email?: string | null;
+ };
+ }, void, unknown>;
+};
diff --git a/node_modules/@octokit/app/dist-types/each-repository.d.ts b/node_modules/@octokit/app/dist-types/each-repository.d.ts
new file mode 100644
index 0000000000..d16ad0cde0
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/each-repository.d.ts
@@ -0,0 +1,113 @@
+import type { Octokit } from "@octokit/core";
+import type { App } from "./index.js";
+import type { EachRepositoryFunction, EachRepositoryInterface, EachRepositoryQuery } from "./types.js";
+export declare function eachRepositoryFactory(app: App): EachRepositoryInterface;
+export declare function eachRepository(app: App, queryOrCallback: EachRepositoryQuery | EachRepositoryFunction, callback?: EachRepositoryFunction): Promise;
+export declare function eachRepositoryIterator(app: App, query?: EachRepositoryQuery): {
+ [Symbol.asyncIterator](): AsyncGenerator<{
+ octokit: Octokit;
+ repository: {
+ id: number;
+ node_id: string;
+ name: string;
+ full_name: string;
+ license: import("@octokit/openapi-types").components["schemas"]["nullable-license-simple"];
+ forks: number;
+ permissions?: {
+ admin: boolean;
+ pull: boolean;
+ triage?: boolean;
+ push: boolean;
+ maintain?: boolean;
+ };
+ owner: import("@octokit/openapi-types").components["schemas"]["simple-user"];
+ private: boolean;
+ html_url: string;
+ description: string | null;
+ fork: boolean;
+ url: string;
+ archive_url: string;
+ assignees_url: string;
+ blobs_url: string;
+ branches_url: string;
+ collaborators_url: string;
+ comments_url: string;
+ commits_url: string;
+ compare_url: string;
+ contents_url: string;
+ contributors_url: string;
+ deployments_url: string;
+ downloads_url: string;
+ events_url: string;
+ forks_url: string;
+ git_commits_url: string;
+ git_refs_url: string;
+ git_tags_url: string;
+ git_url: string;
+ issue_comment_url: string;
+ issue_events_url: string;
+ issues_url: string;
+ keys_url: string;
+ labels_url: string;
+ languages_url: string;
+ merges_url: string;
+ milestones_url: string;
+ notifications_url: string;
+ pulls_url: string;
+ releases_url: string;
+ ssh_url: string;
+ stargazers_url: string;
+ statuses_url: string;
+ subscribers_url: string;
+ subscription_url: string;
+ tags_url: string;
+ teams_url: string;
+ trees_url: string;
+ clone_url: string;
+ mirror_url: string | null;
+ hooks_url: string;
+ svn_url: string;
+ homepage: string | null;
+ language: string | null;
+ forks_count: number;
+ stargazers_count: number;
+ watchers_count: number;
+ size: number;
+ default_branch: string;
+ open_issues_count: number;
+ is_template?: boolean;
+ topics?: string[];
+ has_issues: boolean;
+ has_projects: boolean;
+ has_wiki: boolean;
+ has_pages: boolean;
+ has_downloads: boolean;
+ has_discussions?: boolean;
+ archived: boolean;
+ disabled: boolean;
+ visibility?: string;
+ pushed_at: string | null;
+ created_at: string | null;
+ updated_at: string | null;
+ allow_rebase_merge?: boolean;
+ temp_clone_token?: string;
+ allow_squash_merge?: boolean;
+ allow_auto_merge?: boolean;
+ delete_branch_on_merge?: boolean;
+ allow_update_branch?: boolean;
+ use_squash_pr_title_as_default?: boolean;
+ squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
+ squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
+ merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
+ merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
+ allow_merge_commit?: boolean;
+ allow_forking?: boolean;
+ web_commit_signoff_required?: boolean;
+ open_issues: number;
+ watchers: number;
+ master_branch?: string;
+ starred_at?: string;
+ anonymous_access_enabled?: boolean;
+ };
+ }, void, unknown>;
+};
diff --git a/node_modules/@octokit/app/dist-types/get-installation-octokit.d.ts b/node_modules/@octokit/app/dist-types/get-installation-octokit.d.ts
new file mode 100644
index 0000000000..c4069158a7
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/get-installation-octokit.d.ts
@@ -0,0 +1,3 @@
+import type { Octokit } from "@octokit/core";
+import type { App } from "./index.js";
+export declare function getInstallationOctokit(app: App, installationId: number): Promise;
diff --git a/node_modules/@octokit/app/dist-types/get-installation-url.d.ts b/node_modules/@octokit/app/dist-types/get-installation-url.d.ts
new file mode 100644
index 0000000000..a6186b7075
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/get-installation-url.d.ts
@@ -0,0 +1,3 @@
+import type { App } from "./index.js";
+import type { GetInstallationUrlOptions } from "./types.js";
+export declare function getInstallationUrlFactory(app: App): (options?: GetInstallationUrlOptions) => Promise;
diff --git a/node_modules/@octokit/app/dist-types/index.d.ts b/node_modules/@octokit/app/dist-types/index.d.ts
new file mode 100644
index 0000000000..2c66cba8a4
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/index.d.ts
@@ -0,0 +1,55 @@
+import { Octokit as OctokitCore } from "@octokit/core";
+import { OAuthApp } from "@octokit/oauth-app";
+import type { Webhooks } from "@octokit/webhooks";
+import type { Options, ConstructorOptions, EachInstallationInterface, EachRepositoryInterface, GetInstallationOctokitInterface, GetInstallationUrlInterface } from "./types.js";
+export type { EachInstallationInterface, EachRepositoryInterface, GetInstallationOctokitInterface, GetInstallationUrlInterface, } from "./types.js";
+type Constructor = new (...args: any[]) => T;
+type OctokitType = TOptions["Octokit"] extends typeof OctokitCore ? InstanceType : OctokitCore;
+type OctokitClassType = TOptions["Octokit"] extends typeof OctokitCore ? TOptions["Octokit"] : typeof OctokitCore;
+export declare class App {
+ static VERSION: string;
+ static defaults>>(this: S, defaults: Partial): ({
+ new (...args: any[]): {
+ octokit: OctokitType;
+ webhooks: Webhooks<{
+ octokit: OctokitType;
+ }>;
+ oauth: OAuthApp<{
+ clientType: "github-app";
+ Octokit: OctokitClassType;
+ }>;
+ getInstallationOctokit: GetInstallationOctokitInterface>;
+ eachInstallation: EachInstallationInterface>;
+ eachRepository: EachRepositoryInterface>;
+ getInstallationUrl: GetInstallationUrlInterface;
+ log: {
+ debug: (message: string, additionalInfo?: object) => void;
+ info: (message: string, additionalInfo?: object) => void;
+ warn: (message: string, additionalInfo?: object) => void;
+ error: (message: string, additionalInfo?: object) => void;
+ [key: string]: unknown;
+ };
+ };
+ } & S) & typeof this;
+ octokit: OctokitType;
+ webhooks: Webhooks<{
+ octokit: OctokitType;
+ }>;
+ oauth: OAuthApp<{
+ clientType: "github-app";
+ Octokit: OctokitClassType;
+ }>;
+ getInstallationOctokit: GetInstallationOctokitInterface>;
+ eachInstallation: EachInstallationInterface>;
+ eachRepository: EachRepositoryInterface>;
+ getInstallationUrl: GetInstallationUrlInterface;
+ log: {
+ debug: (message: string, additionalInfo?: object) => void;
+ info: (message: string, additionalInfo?: object) => void;
+ warn: (message: string, additionalInfo?: object) => void;
+ error: (message: string, additionalInfo?: object) => void;
+ [key: string]: unknown;
+ };
+ constructor(options: ConstructorOptions);
+}
+export { createNodeMiddleware } from "./middleware/node/index.js";
diff --git a/node_modules/@octokit/app/dist-types/middleware/node/index.d.ts b/node_modules/@octokit/app/dist-types/middleware/node/index.d.ts
new file mode 100644
index 0000000000..065a8151cf
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/middleware/node/index.d.ts
@@ -0,0 +1,11 @@
+type IncomingMessage = any;
+type ServerResponse = any;
+import type { App } from "../../index.js";
+import type { Options } from "../../types.js";
+export type MiddlewareOptions = {
+ pathPrefix?: string;
+ log?: Options["log"];
+};
+export declare function createNodeMiddleware(app: App, options?: MiddlewareOptions): (request: any, response: any, next?: Function | undefined) => Promise;
+export declare function middleware(pathPrefix: string, webhooksMiddleware: any, oauthMiddleware: any, request: IncomingMessage, response: ServerResponse, next?: Function): Promise;
+export {};
diff --git a/node_modules/@octokit/app/dist-types/types.d.ts b/node_modules/@octokit/app/dist-types/types.d.ts
new file mode 100644
index 0000000000..ce38fa397e
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/types.d.ts
@@ -0,0 +1,58 @@
+import type { Octokit } from "@octokit/core";
+import type { Endpoints } from "@octokit/types";
+export type Options = {
+ appId?: number | string;
+ privateKey?: string;
+ webhooks?: {
+ secret: string;
+ };
+ oauth?: {
+ clientId: string;
+ clientSecret: string;
+ allowSignup?: boolean;
+ };
+ Octokit?: typeof Octokit;
+ log?: {
+ debug: (...data: any[]) => void;
+ info: (...data: any[]) => void;
+ warn: (...data: any[]) => void;
+ error: (...data: any[]) => void;
+ };
+};
+export type ConstructorOptions = TOptions & {
+ appId: number | string;
+ privateKey: string;
+};
+export type InstallationFunctionOptions = {
+ octokit: O;
+ installation: Endpoints["GET /app/installations"]["response"]["data"][0];
+};
+export type EachInstallationFunction = (options: InstallationFunctionOptions) => unknown | Promise;
+export interface EachInstallationInterface {
+ (callback: EachInstallationFunction): Promise;
+ iterator: () => AsyncIterable>;
+}
+type EachRepositoryFunctionOptions = {
+ octokit: O;
+ repository: Endpoints["GET /installation/repositories"]["response"]["data"]["repositories"][0];
+};
+export type EachRepositoryFunction = (options: EachRepositoryFunctionOptions) => unknown | Promise;
+export type EachRepositoryQuery = {
+ installationId: number;
+};
+export interface EachRepositoryInterface {
+ (callback: EachRepositoryFunction): Promise;
+ (query: EachRepositoryQuery, callback: EachRepositoryFunction): Promise;
+ iterator: (query?: EachRepositoryQuery) => AsyncIterable>;
+}
+export interface GetInstallationOctokitInterface {
+ (installationId: number): Promise;
+}
+export interface GetInstallationUrlOptions {
+ state?: string;
+ target_id?: number;
+}
+export interface GetInstallationUrlInterface {
+ (options?: GetInstallationUrlOptions): Promise;
+}
+export {};
diff --git a/node_modules/@octokit/app/dist-types/version.d.ts b/node_modules/@octokit/app/dist-types/version.d.ts
new file mode 100644
index 0000000000..61c89d2236
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "15.1.4";
diff --git a/node_modules/@octokit/app/dist-types/webhooks.d.ts b/node_modules/@octokit/app/dist-types/webhooks.d.ts
new file mode 100644
index 0000000000..3c8a9fc2a2
--- /dev/null
+++ b/node_modules/@octokit/app/dist-types/webhooks.d.ts
@@ -0,0 +1,6 @@
+import type { Octokit } from "@octokit/core";
+import { Webhooks, type EmitterWebhookEvent } from "@octokit/webhooks";
+import type { Options } from "./types.js";
+export declare function webhooks(appOctokit: Octokit, options: Required["webhooks"]): Webhooks;
diff --git a/node_modules/@octokit/app/dist-web/index.js b/node_modules/@octokit/app/dist-web/index.js
new file mode 100644
index 0000000000..51f97350da
--- /dev/null
+++ b/node_modules/@octokit/app/dist-web/index.js
@@ -0,0 +1,341 @@
+// pkg/dist-src/index.js
+import { Octokit as OctokitCore } from "@octokit/core";
+import { createAppAuth as createAppAuth3 } from "@octokit/auth-app";
+import { OAuthApp } from "@octokit/oauth-app";
+
+// pkg/dist-src/version.js
+var VERSION = "15.1.4";
+
+// pkg/dist-src/webhooks.js
+import { createAppAuth } from "@octokit/auth-app";
+import { createUnauthenticatedAuth } from "@octokit/auth-unauthenticated";
+import { Webhooks } from "@octokit/webhooks";
+function webhooks(appOctokit, options) {
+ return new Webhooks({
+ secret: options.secret,
+ transform: async (event) => {
+ if (!("installation" in event.payload) || typeof event.payload.installation !== "object") {
+ const octokit2 = new appOctokit.constructor({
+ authStrategy: createUnauthenticatedAuth,
+ auth: {
+ reason: `"installation" key missing in webhook event payload`
+ }
+ });
+ return {
+ ...event,
+ octokit: octokit2
+ };
+ }
+ const installationId = event.payload.installation.id;
+ const octokit = await appOctokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ return new auth.octokit.constructor({
+ ...auth.octokitOptions,
+ authStrategy: createAppAuth,
+ ...{
+ auth: {
+ ...auth,
+ installationId
+ }
+ }
+ });
+ }
+ });
+ octokit.hook.before("request", (options2) => {
+ options2.headers["x-github-delivery"] = event.id;
+ });
+ return {
+ ...event,
+ octokit
+ };
+ }
+ });
+}
+
+// pkg/dist-src/each-installation.js
+import { composePaginateRest } from "@octokit/plugin-paginate-rest";
+
+// pkg/dist-src/get-installation-octokit.js
+import { createAppAuth as createAppAuth2 } from "@octokit/auth-app";
+async function getInstallationOctokit(app, installationId) {
+ return app.octokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ const options = {
+ ...auth.octokitOptions,
+ authStrategy: createAppAuth2,
+ ...{ auth: { ...auth, installationId } }
+ };
+ return new auth.octokit.constructor(options);
+ }
+ });
+}
+
+// pkg/dist-src/each-installation.js
+function eachInstallationFactory(app) {
+ return Object.assign(eachInstallation.bind(null, app), {
+ iterator: eachInstallationIterator.bind(null, app)
+ });
+}
+async function eachInstallation(app, callback) {
+ const i = eachInstallationIterator(app)[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ await callback(result.value);
+ result = await i.next();
+ }
+}
+function eachInstallationIterator(app) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = composePaginateRest.iterator(
+ app.octokit,
+ "GET /app/installations"
+ );
+ for await (const { data: installations } of iterator) {
+ for (const installation of installations) {
+ const installationOctokit = await getInstallationOctokit(
+ app,
+ installation.id
+ );
+ yield { octokit: installationOctokit, installation };
+ }
+ }
+ }
+ };
+}
+
+// pkg/dist-src/each-repository.js
+import { composePaginateRest as composePaginateRest2 } from "@octokit/plugin-paginate-rest";
+function eachRepositoryFactory(app) {
+ return Object.assign(eachRepository.bind(null, app), {
+ iterator: eachRepositoryIterator.bind(null, app)
+ });
+}
+async function eachRepository(app, queryOrCallback, callback) {
+ const i = eachRepositoryIterator(
+ app,
+ callback ? queryOrCallback : void 0
+ )[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ if (callback) {
+ await callback(result.value);
+ } else {
+ await queryOrCallback(result.value);
+ }
+ result = await i.next();
+ }
+}
+function singleInstallationIterator(app, installationId) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ yield {
+ octokit: await app.getInstallationOctokit(installationId)
+ };
+ }
+ };
+}
+function eachRepositoryIterator(app, query) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();
+ for await (const { octokit } of iterator) {
+ const repositoriesIterator = composePaginateRest2.iterator(
+ octokit,
+ "GET /installation/repositories"
+ );
+ for await (const { data: repositories } of repositoriesIterator) {
+ for (const repository of repositories) {
+ yield { octokit, repository };
+ }
+ }
+ }
+ }
+ };
+}
+
+// pkg/dist-src/get-installation-url.js
+function getInstallationUrlFactory(app) {
+ let installationUrlBasePromise;
+ return async function getInstallationUrl(options = {}) {
+ if (!installationUrlBasePromise) {
+ installationUrlBasePromise = getInstallationUrlBase(app);
+ }
+ const installationUrlBase = await installationUrlBasePromise;
+ const installationUrl = new URL(installationUrlBase);
+ if (options.target_id !== void 0) {
+ installationUrl.pathname += "/permissions";
+ installationUrl.searchParams.append(
+ "target_id",
+ options.target_id.toFixed()
+ );
+ }
+ if (options.state !== void 0) {
+ installationUrl.searchParams.append("state", options.state);
+ }
+ return installationUrl.href;
+ };
+}
+async function getInstallationUrlBase(app) {
+ const { data: appInfo } = await app.octokit.request("GET /app");
+ if (!appInfo) {
+ throw new Error("[@octokit/app] unable to fetch metadata for app");
+ }
+ return `${appInfo.html_url}/installations/new`;
+}
+
+// pkg/dist-src/middleware/node/index.js
+import {
+ createNodeMiddleware as oauthNodeMiddleware,
+ sendNodeResponse,
+ unknownRouteResponse
+} from "@octokit/oauth-app";
+import { createNodeMiddleware as webhooksNodeMiddleware } from "@octokit/webhooks";
+function noop() {
+}
+function createNodeMiddleware(app, options = {}) {
+ const log = Object.assign(
+ {
+ debug: noop,
+ info: noop,
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ const optionsWithDefaults = {
+ pathPrefix: "/api/github",
+ ...options,
+ log
+ };
+ const webhooksMiddleware = webhooksNodeMiddleware(app.webhooks, {
+ path: optionsWithDefaults.pathPrefix + "/webhooks",
+ log
+ });
+ const oauthMiddleware = oauthNodeMiddleware(app.oauth, {
+ pathPrefix: optionsWithDefaults.pathPrefix + "/oauth"
+ });
+ return middleware.bind(
+ null,
+ optionsWithDefaults.pathPrefix,
+ webhooksMiddleware,
+ oauthMiddleware
+ );
+}
+async function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {
+ const { pathname } = new URL(request.url, "http://localhost");
+ if (pathname.startsWith(`${pathPrefix}/`)) {
+ if (pathname === `${pathPrefix}/webhooks`) {
+ webhooksMiddleware(request, response);
+ } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {
+ oauthMiddleware(request, response);
+ } else {
+ sendNodeResponse(unknownRouteResponse(request), response);
+ }
+ return true;
+ } else {
+ next?.();
+ return false;
+ }
+}
+
+// pkg/dist-src/index.js
+var App = class {
+ static VERSION = VERSION;
+ static defaults(defaults) {
+ const AppWithDefaults = class extends this {
+ constructor(...args) {
+ super({
+ ...defaults,
+ ...args[0]
+ });
+ }
+ };
+ return AppWithDefaults;
+ }
+ octokit;
+ // @ts-ignore calling app.webhooks will throw a helpful error when options.webhooks is not set
+ webhooks;
+ // @ts-ignore calling app.oauth will throw a helpful error when options.oauth is not set
+ oauth;
+ getInstallationOctokit;
+ eachInstallation;
+ eachRepository;
+ getInstallationUrl;
+ log;
+ constructor(options) {
+ const Octokit = options.Octokit || OctokitCore;
+ const authOptions = Object.assign(
+ {
+ appId: options.appId,
+ privateKey: options.privateKey
+ },
+ options.oauth ? {
+ clientId: options.oauth.clientId,
+ clientSecret: options.oauth.clientSecret
+ } : {}
+ );
+ const octokitOptions = {
+ authStrategy: createAppAuth3,
+ auth: authOptions
+ };
+ if ("log" in options && typeof options.log !== "undefined") {
+ octokitOptions.log = options.log;
+ }
+ this.octokit = new Octokit(octokitOptions);
+ this.log = Object.assign(
+ {
+ debug: () => {
+ },
+ info: () => {
+ },
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ if (options.webhooks) {
+ this.webhooks = webhooks(this.octokit, options.webhooks);
+ } else {
+ Object.defineProperty(this, "webhooks", {
+ get() {
+ throw new Error("[@octokit/app] webhooks option not set");
+ }
+ });
+ }
+ if (options.oauth) {
+ this.oauth = new OAuthApp({
+ ...options.oauth,
+ clientType: "github-app",
+ Octokit
+ });
+ } else {
+ Object.defineProperty(this, "oauth", {
+ get() {
+ throw new Error(
+ "[@octokit/app] oauth.clientId / oauth.clientSecret options are not set"
+ );
+ }
+ });
+ }
+ this.getInstallationOctokit = getInstallationOctokit.bind(
+ null,
+ this
+ );
+ this.eachInstallation = eachInstallationFactory(
+ this
+ );
+ this.eachRepository = eachRepositoryFactory(
+ this
+ );
+ this.getInstallationUrl = getInstallationUrlFactory(this);
+ }
+};
+export {
+ App,
+ createNodeMiddleware
+};
diff --git a/node_modules/@octokit/app/dist-web/index.js.map b/node_modules/@octokit/app/dist-web/index.js.map
new file mode 100644
index 0000000000..47f364b4c7
--- /dev/null
+++ b/node_modules/@octokit/app/dist-web/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/webhooks.js", "../dist-src/each-installation.js", "../dist-src/get-installation-octokit.js", "../dist-src/each-repository.js", "../dist-src/get-installation-url.js", "../dist-src/middleware/node/index.js"],
+ "sourcesContent": ["import { Octokit as OctokitCore } from \"@octokit/core\";\nimport { createAppAuth } from \"@octokit/auth-app\";\nimport { OAuthApp } from \"@octokit/oauth-app\";\nimport { VERSION } from \"./version.js\";\nimport { webhooks } from \"./webhooks.js\";\nimport { eachInstallationFactory } from \"./each-installation.js\";\nimport { eachRepositoryFactory } from \"./each-repository.js\";\nimport { getInstallationOctokit } from \"./get-installation-octokit.js\";\nimport { getInstallationUrlFactory } from \"./get-installation-url.js\";\nclass App {\n static VERSION = VERSION;\n static defaults(defaults) {\n const AppWithDefaults = class extends this {\n constructor(...args) {\n super({\n ...defaults,\n ...args[0]\n });\n }\n };\n return AppWithDefaults;\n }\n octokit;\n // @ts-ignore calling app.webhooks will throw a helpful error when options.webhooks is not set\n webhooks;\n // @ts-ignore calling app.oauth will throw a helpful error when options.oauth is not set\n oauth;\n getInstallationOctokit;\n eachInstallation;\n eachRepository;\n getInstallationUrl;\n log;\n constructor(options) {\n const Octokit = options.Octokit || OctokitCore;\n const authOptions = Object.assign(\n {\n appId: options.appId,\n privateKey: options.privateKey\n },\n options.oauth ? {\n clientId: options.oauth.clientId,\n clientSecret: options.oauth.clientSecret\n } : {}\n );\n const octokitOptions = {\n authStrategy: createAppAuth,\n auth: authOptions\n };\n if (\"log\" in options && typeof options.log !== \"undefined\") {\n octokitOptions.log = options.log;\n }\n this.octokit = new Octokit(octokitOptions);\n this.log = Object.assign(\n {\n debug: () => {\n },\n info: () => {\n },\n warn: console.warn.bind(console),\n error: console.error.bind(console)\n },\n options.log\n );\n if (options.webhooks) {\n this.webhooks = webhooks(this.octokit, options.webhooks);\n } else {\n Object.defineProperty(this, \"webhooks\", {\n get() {\n throw new Error(\"[@octokit/app] webhooks option not set\");\n }\n });\n }\n if (options.oauth) {\n this.oauth = new OAuthApp({\n ...options.oauth,\n clientType: \"github-app\",\n Octokit\n });\n } else {\n Object.defineProperty(this, \"oauth\", {\n get() {\n throw new Error(\n \"[@octokit/app] oauth.clientId / oauth.clientSecret options are not set\"\n );\n }\n });\n }\n this.getInstallationOctokit = getInstallationOctokit.bind(\n null,\n this\n );\n this.eachInstallation = eachInstallationFactory(\n this\n );\n this.eachRepository = eachRepositoryFactory(\n this\n );\n this.getInstallationUrl = getInstallationUrlFactory(this);\n }\n}\nimport { createNodeMiddleware } from \"./middleware/node/index.js\";\nexport {\n App,\n createNodeMiddleware\n};\n", "const VERSION = \"15.1.4\";\nexport {\n VERSION\n};\n", "import { createAppAuth } from \"@octokit/auth-app\";\nimport { createUnauthenticatedAuth } from \"@octokit/auth-unauthenticated\";\nimport { Webhooks } from \"@octokit/webhooks\";\nfunction webhooks(appOctokit, options) {\n return new Webhooks({\n secret: options.secret,\n transform: async (event) => {\n if (!(\"installation\" in event.payload) || typeof event.payload.installation !== \"object\") {\n const octokit2 = new appOctokit.constructor({\n authStrategy: createUnauthenticatedAuth,\n auth: {\n reason: `\"installation\" key missing in webhook event payload`\n }\n });\n return {\n ...event,\n octokit: octokit2\n };\n }\n const installationId = event.payload.installation.id;\n const octokit = await appOctokit.auth({\n type: \"installation\",\n installationId,\n factory(auth) {\n return new auth.octokit.constructor({\n ...auth.octokitOptions,\n authStrategy: createAppAuth,\n ...{\n auth: {\n ...auth,\n installationId\n }\n }\n });\n }\n });\n octokit.hook.before(\"request\", (options2) => {\n options2.headers[\"x-github-delivery\"] = event.id;\n });\n return {\n ...event,\n octokit\n };\n }\n });\n}\nexport {\n webhooks\n};\n", "import { composePaginateRest } from \"@octokit/plugin-paginate-rest\";\nimport { getInstallationOctokit } from \"./get-installation-octokit.js\";\nfunction eachInstallationFactory(app) {\n return Object.assign(eachInstallation.bind(null, app), {\n iterator: eachInstallationIterator.bind(null, app)\n });\n}\nasync function eachInstallation(app, callback) {\n const i = eachInstallationIterator(app)[Symbol.asyncIterator]();\n let result = await i.next();\n while (!result.done) {\n await callback(result.value);\n result = await i.next();\n }\n}\nfunction eachInstallationIterator(app) {\n return {\n async *[Symbol.asyncIterator]() {\n const iterator = composePaginateRest.iterator(\n app.octokit,\n \"GET /app/installations\"\n );\n for await (const { data: installations } of iterator) {\n for (const installation of installations) {\n const installationOctokit = await getInstallationOctokit(\n app,\n installation.id\n );\n yield { octokit: installationOctokit, installation };\n }\n }\n }\n };\n}\nexport {\n eachInstallation,\n eachInstallationFactory,\n eachInstallationIterator\n};\n", "import { createAppAuth } from \"@octokit/auth-app\";\nasync function getInstallationOctokit(app, installationId) {\n return app.octokit.auth({\n type: \"installation\",\n installationId,\n factory(auth) {\n const options = {\n ...auth.octokitOptions,\n authStrategy: createAppAuth,\n ...{ auth: { ...auth, installationId } }\n };\n return new auth.octokit.constructor(options);\n }\n });\n}\nexport {\n getInstallationOctokit\n};\n", "import { composePaginateRest } from \"@octokit/plugin-paginate-rest\";\nfunction eachRepositoryFactory(app) {\n return Object.assign(eachRepository.bind(null, app), {\n iterator: eachRepositoryIterator.bind(null, app)\n });\n}\nasync function eachRepository(app, queryOrCallback, callback) {\n const i = eachRepositoryIterator(\n app,\n callback ? queryOrCallback : void 0\n )[Symbol.asyncIterator]();\n let result = await i.next();\n while (!result.done) {\n if (callback) {\n await callback(result.value);\n } else {\n await queryOrCallback(result.value);\n }\n result = await i.next();\n }\n}\nfunction singleInstallationIterator(app, installationId) {\n return {\n async *[Symbol.asyncIterator]() {\n yield {\n octokit: await app.getInstallationOctokit(installationId)\n };\n }\n };\n}\nfunction eachRepositoryIterator(app, query) {\n return {\n async *[Symbol.asyncIterator]() {\n const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();\n for await (const { octokit } of iterator) {\n const repositoriesIterator = composePaginateRest.iterator(\n octokit,\n \"GET /installation/repositories\"\n );\n for await (const { data: repositories } of repositoriesIterator) {\n for (const repository of repositories) {\n yield { octokit, repository };\n }\n }\n }\n }\n };\n}\nexport {\n eachRepository,\n eachRepositoryFactory,\n eachRepositoryIterator\n};\n", "function getInstallationUrlFactory(app) {\n let installationUrlBasePromise;\n return async function getInstallationUrl(options = {}) {\n if (!installationUrlBasePromise) {\n installationUrlBasePromise = getInstallationUrlBase(app);\n }\n const installationUrlBase = await installationUrlBasePromise;\n const installationUrl = new URL(installationUrlBase);\n if (options.target_id !== void 0) {\n installationUrl.pathname += \"/permissions\";\n installationUrl.searchParams.append(\n \"target_id\",\n options.target_id.toFixed()\n );\n }\n if (options.state !== void 0) {\n installationUrl.searchParams.append(\"state\", options.state);\n }\n return installationUrl.href;\n };\n}\nasync function getInstallationUrlBase(app) {\n const { data: appInfo } = await app.octokit.request(\"GET /app\");\n if (!appInfo) {\n throw new Error(\"[@octokit/app] unable to fetch metadata for app\");\n }\n return `${appInfo.html_url}/installations/new`;\n}\nexport {\n getInstallationUrlFactory\n};\n", "import {\n createNodeMiddleware as oauthNodeMiddleware,\n sendNodeResponse,\n unknownRouteResponse\n} from \"@octokit/oauth-app\";\nimport { createNodeMiddleware as webhooksNodeMiddleware } from \"@octokit/webhooks\";\nfunction noop() {\n}\nfunction createNodeMiddleware(app, options = {}) {\n const log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: console.warn.bind(console),\n error: console.error.bind(console)\n },\n options.log\n );\n const optionsWithDefaults = {\n pathPrefix: \"/api/github\",\n ...options,\n log\n };\n const webhooksMiddleware = webhooksNodeMiddleware(app.webhooks, {\n path: optionsWithDefaults.pathPrefix + \"/webhooks\",\n log\n });\n const oauthMiddleware = oauthNodeMiddleware(app.oauth, {\n pathPrefix: optionsWithDefaults.pathPrefix + \"/oauth\"\n });\n return middleware.bind(\n null,\n optionsWithDefaults.pathPrefix,\n webhooksMiddleware,\n oauthMiddleware\n );\n}\nasync function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {\n const { pathname } = new URL(request.url, \"http://localhost\");\n if (pathname.startsWith(`${pathPrefix}/`)) {\n if (pathname === `${pathPrefix}/webhooks`) {\n webhooksMiddleware(request, response);\n } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {\n oauthMiddleware(request, response);\n } else {\n sendNodeResponse(unknownRouteResponse(request), response);\n }\n return true;\n } else {\n next?.();\n return false;\n }\n}\nexport {\n createNodeMiddleware,\n middleware\n};\n"],
+ "mappings": "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",
+ "names": ["createAppAuth", "createAppAuth", "composePaginateRest", "createAppAuth"]
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/auth-token/LICENSE
new file mode 100644
index 0000000000..ef2c18ee5b
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/README.md b/node_modules/@octokit/app/node_modules/@octokit/auth-token/README.md
new file mode 100644
index 0000000000..f94e2f2880
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/README.md
@@ -0,0 +1,284 @@
+# auth-token.js
+
+> GitHub API token authentication for browsers and Node.js
+
+[](https://www.npmjs.com/package/@octokit/auth-token)
+[](https://github.com/octokit/auth-token.js/actions?query=workflow%3ATest)
+
+`@octokit/auth-token` is the simplest of [GitHub’s authentication strategies](https://github.com/octokit/auth.js).
+
+It is useful if you want to support multiple authentication strategies, as it’s API is compatible with its sibling packages for [basic](https://github.com/octokit/auth-basic.js), [GitHub App](https://github.com/octokit/auth-app.js) and [OAuth app](https://github.com/octokit/auth.js) authentication.
+
+
+
+- [Usage](#usage)
+- [`createTokenAuth(token) options`](#createtokenauthtoken-options)
+- [`auth()`](#auth)
+- [Authentication object](#authentication-object)
+- [`auth.hook(request, route, options)` or `auth.hook(request, options)`](#authhookrequest-route-options-or-authhookrequest-options)
+- [Find more information](#find-more-information)
+ - [Find out what scopes are enabled for oauth tokens](#find-out-what-scopes-are-enabled-for-oauth-tokens)
+ - [Find out if token is a personal access token or if it belongs to an OAuth app](#find-out-if-token-is-a-personal-access-token-or-if-it-belongs-to-an-oauth-app)
+ - [Find out what permissions are enabled for a repository](#find-out-what-permissions-are-enabled-for-a-repository)
+ - [Use token for git operations](#use-token-for-git-operations)
+- [License](#license)
+
+
+
+## Usage
+
+
+
+
+Browsers
+
+
+Load `@octokit/auth-token` directly from [esm.sh](https://esm.sh)
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/auth-token
+
+```js
+import { createTokenAuth } from "@octokit/auth-token";
+```
+
+
+
+
+
+```js
+const auth = createTokenAuth("ghp_PersonalAccessToken01245678900000000");
+const authentication = await auth();
+// {
+// type: 'token',
+// token: 'ghp_PersonalAccessToken01245678900000000',
+// tokenType: 'oauth'
+// }
+```
+
+## `createTokenAuth(token) options`
+
+The `createTokenAuth` method accepts a single argument of type string, which is the token. The passed token can be one of the following:
+
+- [Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)
+- [OAuth access token](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/)
+- [GITHUB_TOKEN provided to GitHub Actions](https://developer.github.com/actions/creating-github-actions/accessing-the-runtime-environment/#environment-variables)
+- Installation access token ([server-to-server](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation))
+- User authentication for installation ([user-to-server](https://docs.github.com/en/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps))
+
+Examples
+
+```js
+// Personal access token or OAuth access token
+createTokenAuth("ghp_PersonalAccessToken01245678900000000");
+// {
+// type: 'token',
+// token: 'ghp_PersonalAccessToken01245678900000000',
+// tokenType: 'oauth'
+// }
+
+// Installation access token or GitHub Action token
+createTokenAuth("ghs_InstallallationOrActionToken00000000");
+// {
+// type: 'token',
+// token: 'ghs_InstallallationOrActionToken00000000',
+// tokenType: 'installation'
+// }
+
+// Installation access token or GitHub Action token
+createTokenAuth("ghu_InstallationUserToServer000000000000");
+// {
+// type: 'token',
+// token: 'ghu_InstallationUserToServer000000000000',
+// tokenType: 'user-to-server'
+// }
+```
+
+## `auth()`
+
+The `auth()` method has no options. It returns a promise which resolves with the the authentication object.
+
+## Authentication object
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ "token"
+
+
+
+
+ token
+
+
+ string
+
+
+ The provided token.
+
+
+
+
+ tokenType
+
+
+ string
+
+
+ Can be either "oauth"
for personal access tokens and OAuth tokens, "installation"
for installation access tokens (includes GITHUB_TOKEN
provided to GitHub Actions), "app"
for a GitHub App JSON Web Token, or "user-to-server"
for a user authentication token through an app installation.
+
+
+
+
+
+## `auth.hook(request, route, options)` or `auth.hook(request, options)`
+
+`auth.hook()` hooks directly into the request life cycle. It authenticates the request using the provided token.
+
+The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The `route`/`options` parameters are the same as for the [`request()` method](https://github.com/octokit/request.js#request).
+
+`auth.hook()` can be called directly to send an authenticated request
+
+```js
+const { data: authorizations } = await auth.hook(
+ request,
+ "GET /authorizations",
+);
+```
+
+Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request).
+
+```js
+const requestWithAuth = request.defaults({
+ request: {
+ hook: auth.hook,
+ },
+});
+
+const { data: authorizations } = await requestWithAuth("GET /authorizations");
+```
+
+## Find more information
+
+`auth()` does not send any requests, it only transforms the provided token string into an authentication object.
+
+Here is a list of things you can do to retrieve further information
+
+### Find out what scopes are enabled for oauth tokens
+
+Note that this does not work for installations. There is no way to retrieve permissions based on an installation access tokens.
+
+```js
+const TOKEN = "ghp_PersonalAccessToken01245678900000000";
+
+const auth = createTokenAuth(TOKEN);
+const authentication = await auth();
+
+const response = await request("HEAD /");
+const scopes = response.headers["x-oauth-scopes"].split(/,\s+/);
+
+if (scopes.length) {
+ console.log(
+ `"${TOKEN}" has ${scopes.length} scopes enabled: ${scopes.join(", ")}`,
+ );
+} else {
+ console.log(`"${TOKEN}" has no scopes enabled`);
+}
+```
+
+### Find out if token is a personal access token or if it belongs to an OAuth app
+
+```js
+const TOKEN = "ghp_PersonalAccessToken01245678900000000";
+
+const auth = createTokenAuth(TOKEN);
+const authentication = await auth();
+
+const response = await request("HEAD /");
+const clientId = response.headers["x-oauth-client-id"];
+
+if (clientId) {
+ console.log(
+ `"${token}" is an OAuth token, its app’s client_id is ${clientId}.`,
+ );
+} else {
+ console.log(`"${token}" is a personal access token`);
+}
+```
+
+### Find out what permissions are enabled for a repository
+
+Note that the `permissions` key is not set when authenticated using an installation access token.
+
+```js
+const TOKEN = "ghp_PersonalAccessToken01245678900000000";
+
+const auth = createTokenAuth(TOKEN);
+const authentication = await auth();
+
+const response = await request("GET /repos/{owner}/{repo}", {
+ owner: "octocat",
+ repo: "hello-world",
+});
+
+console.log(response.data.permissions);
+// {
+// admin: true,
+// push: true,
+// pull: true
+// }
+```
+
+### Use token for git operations
+
+Both OAuth and installation access tokens can be used for git operations. However, when using with an installation, [the token must be prefixed with `x-access-token`](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation).
+
+This example is using the [`execa`](https://github.com/sindresorhus/execa) package to run a `git push` command.
+
+```js
+const TOKEN = "ghp_PersonalAccessToken01245678900000000";
+
+const auth = createTokenAuth(TOKEN);
+const { token, tokenType } = await auth();
+const tokenWithPrefix =
+ tokenType === "installation" ? `x-access-token:${token}` : token;
+
+const repositoryUrl = `https://${tokenWithPrefix}@github.com/octocat/hello-world.git`;
+
+const { stdout } = await execa("git", ["push", repositoryUrl]);
+console.log(stdout);
+```
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-bundle/index.js b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-bundle/index.js
new file mode 100644
index 0000000000..4d68bcf7c3
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-bundle/index.js
@@ -0,0 +1,55 @@
+// pkg/dist-src/is-jwt.js
+var b64url = "(?:[a-zA-Z0-9_-]+)";
+var sep = "\\.";
+var jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);
+var isJWT = jwtRE.test.bind(jwtRE);
+
+// pkg/dist-src/auth.js
+async function auth(token) {
+ const isApp = isJWT(token);
+ const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_");
+ const isUserToServer = token.startsWith("ghu_");
+ const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
+ return {
+ type: "token",
+ token,
+ tokenType
+ };
+}
+
+// pkg/dist-src/with-authorization-prefix.js
+function withAuthorizationPrefix(token) {
+ if (token.split(/\./).length === 3) {
+ return `bearer ${token}`;
+ }
+ return `token ${token}`;
+}
+
+// pkg/dist-src/hook.js
+async function hook(token, request, route, parameters) {
+ const endpoint = request.endpoint.merge(
+ route,
+ parameters
+ );
+ endpoint.headers.authorization = withAuthorizationPrefix(token);
+ return request(endpoint);
+}
+
+// pkg/dist-src/index.js
+var createTokenAuth = function createTokenAuth2(token) {
+ if (!token) {
+ throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
+ }
+ if (typeof token !== "string") {
+ throw new Error(
+ "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
+ );
+ }
+ token = token.replace(/^(token|bearer) +/i, "");
+ return Object.assign(auth.bind(null, token), {
+ hook: hook.bind(null, token)
+ });
+};
+export {
+ createTokenAuth
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-bundle/index.js.map b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-bundle/index.js.map
new file mode 100644
index 0000000000..57157db5d9
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-bundle/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/is-jwt.js", "../dist-src/auth.js", "../dist-src/with-authorization-prefix.js", "../dist-src/hook.js", "../dist-src/index.js"],
+ "sourcesContent": ["const b64url = \"(?:[a-zA-Z0-9_-]+)\";\nconst sep = \"\\\\.\";\nconst jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);\nconst isJWT = jwtRE.test.bind(jwtRE);\nexport {\n isJWT\n};\n", "import { isJWT } from \"./is-jwt.js\";\nasync function auth(token) {\n const isApp = isJWT(token);\n const isInstallation = token.startsWith(\"v1.\") || token.startsWith(\"ghs_\");\n const isUserToServer = token.startsWith(\"ghu_\");\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\nexport {\n auth\n};\n", "function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\nexport {\n withAuthorizationPrefix\n};\n", "import { withAuthorizationPrefix } from \"./with-authorization-prefix.js\";\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\nexport {\n hook\n};\n", "import { auth } from \"./auth.js\";\nimport { hook } from \"./hook.js\";\nconst createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n"],
+ "mappings": ";AAAA,IAAM,SAAS;AACf,IAAM,MAAM;AACZ,IAAM,QAAQ,IAAI,OAAO,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG;AACpE,IAAM,QAAQ,MAAM,KAAK,KAAK,KAAK;;;ACFnC,eAAe,KAAK,OAAO;AACzB,QAAM,QAAQ,MAAM,KAAK;AACzB,QAAM,iBAAiB,MAAM,WAAW,KAAK,KAAK,MAAM,WAAW,MAAM;AACzE,QAAM,iBAAiB,MAAM,WAAW,MAAM;AAC9C,QAAM,YAAY,QAAQ,QAAQ,iBAAiB,iBAAiB,iBAAiB,mBAAmB;AACxG,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;;;ACXA,SAAS,wBAAwB,OAAO;AACtC,MAAI,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG;AAClC,WAAO,UAAU,KAAK;AAAA,EACxB;AACA,SAAO,SAAS,KAAK;AACvB;;;ACJA,eAAe,KAAK,OAAO,SAAS,OAAO,YAAY;AACrD,QAAM,WAAW,QAAQ,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ,gBAAgB,wBAAwB,KAAK;AAC9D,SAAO,QAAQ,QAAQ;AACzB;;;ACNA,IAAM,kBAAkB,SAAS,iBAAiB,OAAO;AACvD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,UAAQ,MAAM,QAAQ,sBAAsB,EAAE;AAC9C,SAAO,OAAO,OAAO,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC3C,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC7B,CAAC;AACH;",
+ "names": []
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/auth.js b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/auth.js
new file mode 100644
index 0000000000..587f523506
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/auth.js
@@ -0,0 +1,15 @@
+import { isJWT } from "./is-jwt.js";
+async function auth(token) {
+ const isApp = isJWT(token);
+ const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_");
+ const isUserToServer = token.startsWith("ghu_");
+ const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
+ return {
+ type: "token",
+ token,
+ tokenType
+ };
+}
+export {
+ auth
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/hook.js b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/hook.js
new file mode 100644
index 0000000000..be336adf56
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/hook.js
@@ -0,0 +1,12 @@
+import { withAuthorizationPrefix } from "./with-authorization-prefix.js";
+async function hook(token, request, route, parameters) {
+ const endpoint = request.endpoint.merge(
+ route,
+ parameters
+ );
+ endpoint.headers.authorization = withAuthorizationPrefix(token);
+ return request(endpoint);
+}
+export {
+ hook
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/index.js
new file mode 100644
index 0000000000..a68cea6eeb
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/index.js
@@ -0,0 +1,19 @@
+import { auth } from "./auth.js";
+import { hook } from "./hook.js";
+const createTokenAuth = function createTokenAuth2(token) {
+ if (!token) {
+ throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
+ }
+ if (typeof token !== "string") {
+ throw new Error(
+ "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
+ );
+ }
+ token = token.replace(/^(token|bearer) +/i, "");
+ return Object.assign(auth.bind(null, token), {
+ hook: hook.bind(null, token)
+ });
+};
+export {
+ createTokenAuth
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/is-jwt.js b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/is-jwt.js
new file mode 100644
index 0000000000..833dad7822
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/is-jwt.js
@@ -0,0 +1,7 @@
+const b64url = "(?:[a-zA-Z0-9_-]+)";
+const sep = "\\.";
+const jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);
+const isJWT = jwtRE.test.bind(jwtRE);
+export {
+ isJWT
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
new file mode 100644
index 0000000000..02a4bb5eba
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js
@@ -0,0 +1,9 @@
+function withAuthorizationPrefix(token) {
+ if (token.split(/\./).length === 3) {
+ return `bearer ${token}`;
+ }
+ return `token ${token}`;
+}
+export {
+ withAuthorizationPrefix
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/auth.d.ts b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/auth.d.ts
new file mode 100644
index 0000000000..63985288eb
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/auth.d.ts
@@ -0,0 +1,2 @@
+import type { Token, Authentication } from "./types.js";
+export declare function auth(token: Token): Promise;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/hook.d.ts b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/hook.d.ts
new file mode 100644
index 0000000000..cf969654bb
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/hook.d.ts
@@ -0,0 +1,2 @@
+import type { AnyResponse, EndpointOptions, RequestInterface, RequestParameters, Route, Token } from "./types.js";
+export declare function hook(token: Token, request: RequestInterface, route: Route | EndpointOptions, parameters?: RequestParameters): Promise;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/index.d.ts b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/index.d.ts
new file mode 100644
index 0000000000..9f8a318e92
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/index.d.ts
@@ -0,0 +1,7 @@
+import type { StrategyInterface, Token, Authentication } from "./types.js";
+export type Types = {
+ StrategyOptions: Token;
+ AuthOptions: never;
+ Authentication: Authentication;
+};
+export declare const createTokenAuth: StrategyInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/is-jwt.d.ts b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/is-jwt.d.ts
new file mode 100644
index 0000000000..3d3ff8141b
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/is-jwt.d.ts
@@ -0,0 +1 @@
+export declare const isJWT: (string: string) => boolean;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/types.d.ts b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/types.d.ts
new file mode 100644
index 0000000000..c3e1ae0ef3
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/types.d.ts
@@ -0,0 +1,33 @@
+import type * as OctokitTypes from "@octokit/types";
+export type AnyResponse = OctokitTypes.OctokitResponse;
+export type StrategyInterface = OctokitTypes.StrategyInterface<[
+ Token
+], [
+], Authentication>;
+export type EndpointDefaults = OctokitTypes.EndpointDefaults;
+export type EndpointOptions = OctokitTypes.EndpointOptions;
+export type RequestParameters = OctokitTypes.RequestParameters;
+export type RequestInterface = OctokitTypes.RequestInterface;
+export type Route = OctokitTypes.Route;
+export type Token = string;
+export type OAuthTokenAuthentication = {
+ type: "token";
+ tokenType: "oauth";
+ token: Token;
+};
+export type InstallationTokenAuthentication = {
+ type: "token";
+ tokenType: "installation";
+ token: Token;
+};
+export type AppAuthentication = {
+ type: "token";
+ tokenType: "app";
+ token: Token;
+};
+export type UserToServerAuthentication = {
+ type: "token";
+ tokenType: "user-to-server";
+ token: Token;
+};
+export type Authentication = OAuthTokenAuthentication | InstallationTokenAuthentication | AppAuthentication | UserToServerAuthentication;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
new file mode 100644
index 0000000000..2e52c31db4
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/dist-types/with-authorization-prefix.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Prefix token for usage in the Authorization header
+ *
+ * @param token OAuth token or JSON Web Token
+ */
+export declare function withAuthorizationPrefix(token: string): string;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/auth-token/package.json b/node_modules/@octokit/app/node_modules/@octokit/auth-token/package.json
new file mode 100644
index 0000000000..c07fa98b54
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/auth-token/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@octokit/auth-token",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "type": "module",
+ "version": "5.1.2",
+ "description": "GitHub API token authentication for browsers and Node.js",
+ "repository": "github:octokit/auth-token.js",
+ "keywords": [
+ "github",
+ "octokit",
+ "authentication",
+ "api"
+ ],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "devDependencies": {
+ "@octokit/request": "^9.0.0",
+ "@octokit/tsconfig": "^4.0.0",
+ "@octokit/types": "^13.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.24.0",
+ "fetch-mock": "^11.0.0",
+ "glob": "^11.0.0",
+ "prettier": "3.4.2",
+ "semantic-release": "^24.0.0",
+ "typescript": "^5.3.0",
+ "vitest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "./dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-bundle/index.js",
+ "default": "./dist-bundle/index.js"
+ },
+ "./types": {
+ "types": "./dist-types/index.d.ts"
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/core/LICENSE
new file mode 100644
index 0000000000..ef2c18ee5b
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/README.md b/node_modules/@octokit/app/node_modules/@octokit/core/README.md
new file mode 100644
index 0000000000..ed4c070029
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/README.md
@@ -0,0 +1,457 @@
+# core.js
+
+> Extendable client for GitHub's REST & GraphQL APIs
+
+[](https://www.npmjs.com/package/@octokit/core)
+[](https://github.com/octokit/core.js/actions?query=workflow%3ATest+branch%3Amain)
+
+
+
+- [Usage](#usage)
+ - [REST API example](#rest-api-example)
+ - [GraphQL example](#graphql-example)
+- [Options](#options)
+- [Defaults](#defaults)
+- [Authentication](#authentication)
+- [Logging](#logging)
+- [Hooks](#hooks)
+- [Plugins](#plugins)
+- [Build your own Octokit with Plugins and Defaults](#build-your-own-octokit-with-plugins-and-defaults)
+- [LICENSE](#license)
+
+
+
+If you need a minimalistic library to utilize GitHub's [REST API](https://developer.github.com/v3/) and [GraphQL API](https://developer.github.com/v4/) which you can extend with plugins as needed, then `@octokit/core` is a great starting point.
+
+If you don't need the Plugin API then using [`@octokit/request`](https://github.com/octokit/request.js/) or [`@octokit/graphql`](https://github.com/octokit/graphql.js/) directly is a good alternative.
+
+## Usage
+
+
+
+
+Browsers
+
+Load @octokit/core
directly from esm.sh
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/core
+
+```js
+import { Octokit } from "@octokit/core";
+```
+
+
+
+
+
+As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json`. See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
+
+### REST API example
+
+```js
+// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
+const octokit = new Octokit({ auth: `personal-access-token123` });
+
+const response = await octokit.request("GET /orgs/{org}/repos", {
+ org: "octokit",
+ type: "private",
+});
+```
+
+See [`@octokit/request`](https://github.com/octokit/request.js) for full documentation of the `.request` method.
+
+### GraphQL example
+
+```js
+const octokit = new Octokit({ auth: `secret123` });
+
+const response = await octokit.graphql(
+ `query ($login: String!) {
+ organization(login: $login) {
+ repositories(privacy: PRIVATE) {
+ totalCount
+ }
+ }
+ }`,
+ { login: "octokit" },
+);
+```
+
+See [`@octokit/graphql`](https://github.com/octokit/graphql.js) for full documentation of the `.graphql` method.
+
+## Options
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ options.authStrategy
+
+
+ Function
+
+
+ Defaults to @octokit/auth-token
. See Authentication below for examples.
+
+
+
+
+ options.auth
+
+
+ String
or Object
+
+
+ See Authentication below for examples.
+
+
+
+
+ options.baseUrl
+
+
+ String
+
+
+
+When using with GitHub Enterprise Server, set `options.baseUrl` to the root URL of the API. For example, if your GitHub Enterprise Server's hostname is `github.acme-inc.com`, then set `options.baseUrl` to `https://github.acme-inc.com/api/v3`. Example
+
+```js
+const octokit = new Octokit({
+ baseUrl: "https://github.acme-inc.com/api/v3",
+});
+```
+
+
+
+
+ options.previews
+
+
+ Array of Strings
+
+
+
+Some REST API endpoints require preview headers to be set, or enable
+additional features. Preview headers can be set on a per-request basis, e.g.
+
+```js
+octokit.request("POST /repos/{owner}/{repo}/pulls", {
+ mediaType: {
+ previews: ["shadow-cat"],
+ },
+ owner,
+ repo,
+ title: "My pull request",
+ base: "main",
+ head: "my-feature",
+ draft: true,
+});
+```
+
+You can also set previews globally, by setting the `options.previews` option on the constructor. Example:
+
+```js
+const octokit = new Octokit({
+ previews: ["shadow-cat"],
+});
+```
+
+
+
+
+ options.request
+
+
+ Object
+
+
+
+Set a default request timeout (`options.request.timeout`) or an [`http(s).Agent`](https://nodejs.org/api/http.html#http_class_http_agent) e.g. for proxy usage (Node only, `options.request.agent`).
+
+There are more `options.request.*` options, see [`@octokit/request` options](https://github.com/octokit/request.js#request). `options.request` can also be set on a per-request basis.
+
+
+
+
+ options.timeZone
+
+
+ String
+
+
+
+Sets the `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
+
+```js
+const octokit = new Octokit({
+ timeZone: "America/Los_Angeles",
+});
+```
+
+The time zone header will determine the timezone used for generating the timestamp when creating commits. See [GitHub's Timezones documentation](https://developer.github.com/v3/#timezones).
+
+
+
+
+ options.userAgent
+
+
+ String
+
+
+
+A custom user agent string for your app or library. Example
+
+```js
+const octokit = new Octokit({
+ userAgent: "my-app/v1.2.3",
+});
+```
+
+
+
+
+
+## Defaults
+
+You can create a new Octokit class with customized default options.
+
+```js
+const MyOctokit = Octokit.defaults({
+ auth: "personal-access-token123",
+ baseUrl: "https://github.acme-inc.com/api/v3",
+ userAgent: "my-app/v1.2.3",
+});
+const octokit1 = new MyOctokit();
+const octokit2 = new MyOctokit();
+```
+
+If you pass additional options to your new constructor, the options will be merged shallowly.
+
+```js
+const MyOctokit = Octokit.defaults({
+ foo: {
+ opt1: 1,
+ },
+});
+const octokit = new MyOctokit({
+ foo: {
+ opt2: 1,
+ },
+});
+// options will be { foo: { opt2: 1 }}
+```
+
+If you need a deep or conditional merge, you can pass a function instead.
+
+```js
+const MyOctokit = Octokit.defaults((options) => {
+ return {
+ foo: Object.assign({}, options.foo, { opt1: 1 }),
+ };
+});
+const octokit = new MyOctokit({
+ foo: { opt2: 1 },
+});
+// options will be { foo: { opt1: 1, opt2: 1 }}
+```
+
+Be careful about mutating the `options` object in the `Octokit.defaults` callback, as it can have unforeseen consequences.
+
+## Authentication
+
+Authentication is optional for some REST API endpoints accessing public data, but is required for GraphQL queries. Using authentication also increases your [API rate limit](https://developer.github.com/v3/#rate-limiting).
+
+By default, Octokit authenticates using the [token authentication strategy](https://github.com/octokit/auth-token.js). Pass in a token using `options.auth`. It can be a personal access token, an OAuth token, an installation access token or a JSON Web Token for GitHub App authentication. The `Authorization` header will be set according to the type of token.
+
+```js
+import { Octokit } from "@octokit/core";
+
+const octokit = new Octokit({
+ auth: "mypersonalaccesstoken123",
+});
+
+const { data } = await octokit.request("/user");
+```
+
+To use a different authentication strategy, set `options.authStrategy`. A list of authentication strategies is available at [octokit/authentication-strategies.js](https://github.com/octokit/authentication-strategies.js/#readme).
+
+Example
+
+```js
+import { Octokit } from "@octokit/core";
+import { createAppAuth } from "@octokit/auth-app";
+
+const appOctokit = new Octokit({
+ authStrategy: createAppAuth,
+ auth: {
+ appId: 123,
+ privateKey: process.env.PRIVATE_KEY,
+ },
+});
+
+const { data } = await appOctokit.request("/app");
+```
+
+The `.auth()` method returned by the current authentication strategy can be accessed at `octokit.auth()`. Example
+
+```js
+const { token } = await appOctokit.auth({
+ type: "installation",
+ installationId: 123,
+});
+```
+
+## Logging
+
+There are four built-in log methods
+
+1. `octokit.log.debug(message[, additionalInfo])`
+1. `octokit.log.info(message[, additionalInfo])`
+1. `octokit.log.warn(message[, additionalInfo])`
+1. `octokit.log.error(message[, additionalInfo])`
+
+They can be configured using the [`log` client option](client-options). By default, `octokit.log.debug()` and `octokit.log.info()` are no-ops, while the other two call `console.warn()` and `console.error()` respectively.
+
+This is useful if you build reusable [plugins](#plugins).
+
+If you would like to make the log level configurable using an environment variable or external option, we recommend the [console-log-level](https://github.com/watson/console-log-level) package. Example
+
+```js
+import consoleLogLevel from "console-log-level";
+const octokit = new Octokit({
+ log: consoleLogLevel({ level: "info" }),
+});
+```
+
+## Hooks
+
+You can customize Octokit's request lifecycle with hooks.
+
+```js
+octokit.hook.before("request", async (options) => {
+ validate(options);
+});
+octokit.hook.after("request", async (response, options) => {
+ console.log(`${options.method} ${options.url}: ${response.status}`);
+});
+octokit.hook.error("request", async (error, options) => {
+ if (error.status === 304) {
+ return findInCache(error.response.headers.etag);
+ }
+
+ throw error;
+});
+octokit.hook.wrap("request", async (request, options) => {
+ // add logic before, after, catch errors or replace the request altogether
+ return request(options);
+});
+```
+
+See [before-after-hook](https://github.com/gr2m/before-after-hook#readme) for more documentation on hooks.
+
+## Plugins
+
+Octokit’s functionality can be extended using plugins. The `Octokit.plugin()` method accepts a plugin (or many) and returns a new constructor.
+
+A plugin is a function which gets two arguments:
+
+1. the current instance
+2. the options passed to the constructor.
+
+In order to extend `octokit`'s API, the plugin must return an object with the new methods. Please refrain from adding methods directly to the `octokit` instance, especialy if you depend on keys that do not exist in `@octokit/core`, such as `octokit.rest`.
+
+```js
+// index.js
+import { Octokit } from "@octokit/core";
+import myPlugin from "./lib/my-plugin.js";
+import octokitPluginExample from "octokit-plugin-example";
+const MyOctokit = Octokit.plugin(
+ myPlugin,
+ octokitPluginExample
+);
+
+const octokit = new MyOctokit({ greeting: "Moin moin" });
+octokit.helloWorld(); // logs "Moin moin, world!"
+octokit.request("GET /"); // logs "GET / - 200 in 123ms"
+
+// lib/my-plugin.js
+const plugin = (octokit, options = { greeting: "Hello" }) => {
+ // hook into the request lifecycle
+ octokit.hook.wrap("request", async (request, options) => {
+ const time = Date.now();
+ const response = await request(options);
+ console.log(
+ `${options.method} ${options.url} – ${response.status} in ${Date.now() -
+ time}ms`
+ );
+ return response;
+ });
+
+ // add a custom method
+ return {
+ helloWorld: () => console.log(`${options.greeting}, world!`);
+ }
+};
+export default plugin;
+```
+
+## Build your own Octokit with Plugins and Defaults
+
+You can build your own Octokit class with preset default options and plugins. In fact, this is mostly how the `@octokit/` modules work, such as [`@octokit/action`](https://github.com/octokit/action.js):
+
+```js
+import { Octokit } from "@octokit/core";
+import { paginateRest } from "@octokit/plugin-paginate-rest";
+import { throttling } from "@octokit/plugin-throttling";
+import { retry } from "@octokit/plugin-retry";
+import { createActionAuth } from "@octokit/auth-action";
+const MyActionOctokit = Octokit.plugin(
+ paginateRest,
+ throttling,
+ retry,
+).defaults({
+ throttle: {
+ onAbuseLimit: (retryAfter, options) => {
+ /* ... */
+ },
+ onRateLimit: (retryAfter, options) => {
+ /* ... */
+ },
+ },
+ authStrategy: createActionAuth,
+ userAgent: `my-octokit-action/v1.2.3`,
+});
+
+const octokit = new MyActionOctokit();
+const installations = await octokit.paginate("GET /app/installations");
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/core/dist-src/index.js
new file mode 100644
index 0000000000..1f48266d92
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/dist-src/index.js
@@ -0,0 +1,134 @@
+import { getUserAgent } from "universal-user-agent";
+import Hook from "before-after-hook";
+import { request } from "@octokit/request";
+import { withCustomRequest } from "@octokit/graphql";
+import { createTokenAuth } from "@octokit/auth-token";
+import { VERSION } from "./version.js";
+const noop = () => {
+};
+const consoleWarn = console.warn.bind(console);
+const consoleError = console.error.bind(console);
+const userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;
+class Octokit {
+ static VERSION = VERSION;
+ static defaults(defaults) {
+ const OctokitWithDefaults = class extends this {
+ constructor(...args) {
+ const options = args[0] || {};
+ if (typeof defaults === "function") {
+ super(defaults(options));
+ return;
+ }
+ super(
+ Object.assign(
+ {},
+ defaults,
+ options,
+ options.userAgent && defaults.userAgent ? {
+ userAgent: `${options.userAgent} ${defaults.userAgent}`
+ } : null
+ )
+ );
+ }
+ };
+ return OctokitWithDefaults;
+ }
+ static plugins = [];
+ /**
+ * Attach a plugin (or many) to your Octokit instance.
+ *
+ * @example
+ * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
+ */
+ static plugin(...newPlugins) {
+ const currentPlugins = this.plugins;
+ const NewOctokit = class extends this {
+ static plugins = currentPlugins.concat(
+ newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
+ );
+ };
+ return NewOctokit;
+ }
+ constructor(options = {}) {
+ const hook = new Hook.Collection();
+ const requestDefaults = {
+ baseUrl: request.endpoint.DEFAULTS.baseUrl,
+ headers: {},
+ request: Object.assign({}, options.request, {
+ // @ts-ignore internal usage only, no need to type
+ hook: hook.bind(null, "request")
+ }),
+ mediaType: {
+ previews: [],
+ format: ""
+ }
+ };
+ requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
+ if (options.baseUrl) {
+ requestDefaults.baseUrl = options.baseUrl;
+ }
+ if (options.previews) {
+ requestDefaults.mediaType.previews = options.previews;
+ }
+ if (options.timeZone) {
+ requestDefaults.headers["time-zone"] = options.timeZone;
+ }
+ this.request = request.defaults(requestDefaults);
+ this.graphql = withCustomRequest(this.request).defaults(requestDefaults);
+ this.log = Object.assign(
+ {
+ debug: noop,
+ info: noop,
+ warn: consoleWarn,
+ error: consoleError
+ },
+ options.log
+ );
+ this.hook = hook;
+ if (!options.authStrategy) {
+ if (!options.auth) {
+ this.auth = async () => ({
+ type: "unauthenticated"
+ });
+ } else {
+ const auth = createTokenAuth(options.auth);
+ hook.wrap("request", auth.hook);
+ this.auth = auth;
+ }
+ } else {
+ const { authStrategy, ...otherOptions } = options;
+ const auth = authStrategy(
+ Object.assign(
+ {
+ request: this.request,
+ log: this.log,
+ // we pass the current octokit instance as well as its constructor options
+ // to allow for authentication strategies that return a new octokit instance
+ // that shares the same internal state as the current one. The original
+ // requirement for this was the "event-octokit" authentication strategy
+ // of https://github.com/probot/octokit-auth-probot.
+ octokit: this,
+ octokitOptions: otherOptions
+ },
+ options.auth
+ )
+ );
+ hook.wrap("request", auth.hook);
+ this.auth = auth;
+ }
+ const classConstructor = this.constructor;
+ for (let i = 0; i < classConstructor.plugins.length; ++i) {
+ Object.assign(this, classConstructor.plugins[i](this, options));
+ }
+ }
+ // assigned during constructor
+ request;
+ graphql;
+ log;
+ hook;
+ // TODO: type `octokit.auth` based on passed options.authStrategy
+ auth;
+}
+export {
+ Octokit
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/dist-src/version.js b/node_modules/@octokit/app/node_modules/@octokit/core/dist-src/version.js
new file mode 100644
index 0000000000..b34e312bdc
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "6.1.4";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/index.d.ts b/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/index.d.ts
new file mode 100644
index 0000000000..3f7a1da3e9
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/index.d.ts
@@ -0,0 +1,31 @@
+import type { HookCollection } from "before-after-hook";
+import { request } from "@octokit/request";
+import { type graphql } from "@octokit/graphql";
+import type { Constructor, Hooks, OctokitOptions, OctokitPlugin, ReturnTypeOf, UnionToIntersection } from "./types.js";
+export type { OctokitOptions } from "./types.js";
+export declare class Octokit {
+ static VERSION: string;
+ static defaults>(this: S, defaults: OctokitOptions | Function): S;
+ static plugins: OctokitPlugin[];
+ /**
+ * Attach a plugin (or many) to your Octokit instance.
+ *
+ * @example
+ * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
+ */
+ static plugin & {
+ plugins: any[];
+ }, T extends OctokitPlugin[]>(this: S, ...newPlugins: T): S & Constructor>>;
+ constructor(options?: OctokitOptions);
+ request: typeof request;
+ graphql: typeof graphql;
+ log: {
+ debug: (message: string, additionalInfo?: object) => any;
+ info: (message: string, additionalInfo?: object) => any;
+ warn: (message: string, additionalInfo?: object) => any;
+ error: (message: string, additionalInfo?: object) => any;
+ [key: string]: any;
+ };
+ hook: HookCollection;
+ auth: (...args: unknown[]) => Promise;
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/types.d.ts b/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/types.d.ts
new file mode 100644
index 0000000000..7696e524c0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/types.d.ts
@@ -0,0 +1,44 @@
+import type * as OctokitTypes from "@octokit/types";
+import type { RequestError } from "@octokit/request-error";
+import type { Octokit } from "./index.js";
+export type RequestParameters = OctokitTypes.RequestParameters;
+export interface OctokitOptions {
+ authStrategy?: any;
+ auth?: any;
+ userAgent?: string;
+ previews?: string[];
+ baseUrl?: string;
+ log?: {
+ debug: (message: string) => unknown;
+ info: (message: string) => unknown;
+ warn: (message: string) => unknown;
+ error: (message: string) => unknown;
+ };
+ request?: OctokitTypes.RequestRequestOptions;
+ timeZone?: string;
+ [option: string]: any;
+}
+export type Constructor = new (...args: any[]) => T;
+export type ReturnTypeOf = T extends AnyFunction ? ReturnType : T extends AnyFunction[] ? UnionToIntersection, void>> : never;
+/**
+ * @author https://stackoverflow.com/users/2887218/jcalz
+ * @see https://stackoverflow.com/a/50375286/10325032
+ */
+export type UnionToIntersection = (Union extends any ? (argument: Union) => void : never) extends (argument: infer Intersection) => void ? Intersection : never;
+type AnyFunction = (...args: any) => any;
+export type OctokitPlugin = (octokit: Octokit, options: OctokitOptions) => {
+ [key: string]: any;
+} | void;
+export type Hooks = {
+ request: {
+ Options: Required;
+ Result: OctokitTypes.OctokitResponse;
+ Error: RequestError | Error;
+ };
+ [key: string]: {
+ Options: unknown;
+ Result: unknown;
+ Error: unknown;
+ };
+};
+export {};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/version.d.ts b/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/version.d.ts
new file mode 100644
index 0000000000..abc42b0b5f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "6.1.4";
diff --git a/node_modules/@octokit/app/node_modules/@octokit/core/package.json b/node_modules/@octokit/app/node_modules/@octokit/core/package.json
new file mode 100644
index 0000000000..3d12b3ac6f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/core/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "@octokit/core",
+ "version": "6.1.4",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "type": "module",
+ "description": "Extendable client for GitHub's REST & GraphQL APIs",
+ "repository": "github:octokit/core.js",
+ "keywords": [
+ "octokit",
+ "github",
+ "api",
+ "sdk",
+ "toolkit"
+ ],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^5.0.0",
+ "@octokit/graphql": "^8.1.2",
+ "@octokit/request": "^9.2.1",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "before-after-hook": "^3.0.2",
+ "universal-user-agent": "^7.0.0"
+ },
+ "devDependencies": {
+ "@octokit/auth-action": "^5.0.0",
+ "@octokit/auth-app": "^7.0.0",
+ "@octokit/auth-oauth-app": "^8.0.0",
+ "@octokit/tsconfig": "^4.0.0",
+ "@sinonjs/fake-timers": "^14.0.0",
+ "@types/lolex": "^5.1.0",
+ "@types/node": "^22.0.0",
+ "@types/sinonjs__fake-timers": "^8.1.5",
+ "@vitest/coverage-v8": "^3.0.5",
+ "esbuild": "^0.25.0",
+ "fetch-mock": "^12.0.0",
+ "glob": "^11.0.0",
+ "prettier": "3.4.2",
+ "proxy": "^2.0.0",
+ "semantic-release": "^24.0.0",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "typescript": "^5.0.0",
+ "undici": "^6.0.0",
+ "vitest": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "./dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-src/index.js",
+ "default": "./dist-src/index.js"
+ },
+ "./types": {
+ "types": "./dist-types/types.d.ts"
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/endpoint/LICENSE
new file mode 100644
index 0000000000..af5366d0d0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/README.md b/node_modules/@octokit/app/node_modules/@octokit/endpoint/README.md
new file mode 100644
index 0000000000..164f60d1ee
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/README.md
@@ -0,0 +1,412 @@
+# endpoint.js
+
+> Turns GitHub REST API endpoints into generic request options
+
+[](https://www.npmjs.com/package/@octokit/endpoint)
+[](https://github.com/octokit/endpoint.js/actions/workflows/test.yml?query=branch%3Amain)
+
+`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library.
+
+
+
+
+
+- [Usage](#usage)
+- [API](#api)
+ - [`endpoint(route, options)` or `endpoint(options)`](#endpointroute-options-or-endpointoptions)
+ - [`endpoint.defaults()`](#endpointdefaults)
+ - [`endpoint.DEFAULTS`](#endpointdefaults)
+ - [`endpoint.merge(route, options)` or `endpoint.merge(options)`](#endpointmergeroute-options-or-endpointmergeoptions)
+ - [`endpoint.parse()`](#endpointparse)
+- [Special cases](#special-cases)
+ - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly)
+ - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
+- [LICENSE](#license)
+
+
+
+## Usage
+
+
+
+
+Browsers
+
+Load @octokit/endpoint
directly from esm.sh
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/endpoint
+
+```js
+import { endpoint } from "@octokit/endpoint";
+```
+
+
+
+
+
+Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories)
+
+```js
+const requestOptions = endpoint("GET /orgs/{org}/repos", {
+ headers: {
+ authorization: "token 0000000000000000000000000000000000000001",
+ },
+ org: "octokit",
+ type: "private",
+});
+```
+
+The resulting `requestOptions` looks as follows
+
+```json
+{
+ "method": "GET",
+ "url": "https://api.github.com/orgs/octokit/repos?type=private",
+ "headers": {
+ "accept": "application/vnd.github.v3+json",
+ "authorization": "token 0000000000000000000000000000000000000001",
+ "user-agent": "octokit/endpoint.js v1.2.3"
+ }
+}
+```
+
+You can pass `requestOptions` to common request libraries
+
+```js
+const { url, ...options } = requestOptions;
+// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
+fetch(url, options);
+// using with request (https://github.com/request/request)
+request(requestOptions);
+// using with got (https://github.com/sindresorhus/got)
+got[options.method](url, options);
+// using with axios
+axios(requestOptions);
+```
+
+> [!IMPORTANT]
+> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json`. See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
+
+## API
+
+### `endpoint(route, options)` or `endpoint(options)`
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ route
+
+
+ String
+
+
+ If set, it has to be a string consisting of URL and the request method, e.g., GET /orgs/{org}
. If it’s set to a URL, only the method defaults to GET
.
+
+
+
+
+ options.method
+
+
+ String
+
+
+ Required unless route
is set. Any supported http verb . Defaults to GET
.
+
+
+
+
+ options.url
+
+
+ String
+
+
+ Required unless route
is set. A path or full URL which may contain :variable
or {variable}
placeholders,
+ e.g., /orgs/{org}/repos
. The url
is parsed using url-template .
+
+
+
+
+ options.baseUrl
+
+
+ String
+
+
+ Defaults to https://api.github.com
.
+
+
+
+
+ options.headers
+
+
+ Object
+
+
+ Custom headers. Passed headers are merged with defaults:
+ headers['user-agent']
defaults to octokit-endpoint.js/1.2.3
(where 1.2.3
is the released version) .
+ headers['accept']
defaults to application/vnd.github.v3+json
.
+
+
+
+
+ options.mediaType.format
+
+
+ String
+
+
+ Media type param, such as raw
, diff
, or text+json
. See Media Types . Setting options.mediaType.format
will amend the headers.accept
value.
+
+
+
+
+ options.data
+
+
+ Any
+
+
+ Set request body directly instead of setting it to JSON based on additional parameters. See "The data
parameter" below.
+
+
+
+
+ options.request
+
+
+ Object
+
+
+ Pass custom meta information for the request. The request
object will be returned as is.
+
+
+
+
+
+All other options will be passed depending on the `method` and `url` options.
+
+1. If the option key has a placeholder in the `url`, it will be used as the replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`.
+2. If the `method` is `GET` or `HEAD`, the option is passed as a query parameter.
+3. Otherwise, the parameter is passed in the request body as a JSON key.
+
+**Result**
+
+`endpoint()` is a synchronous method and returns an object with the following keys:
+
+
+
+
+
+ key
+
+
+ type
+
+
+ description
+
+
+
+
+
+ method
+ String
+ The http method. Always lowercase.
+
+
+ url
+ String
+ The url with placeholders replaced with passed parameters.
+
+
+ headers
+ Object
+ All header names are lowercased.
+
+
+ body
+ Any
+ The request body if one is present. Only for PATCH
, POST
, PUT
, DELETE
requests.
+
+
+ request
+ Object
+ Request meta option, it will be returned as it was passed into endpoint()
+
+
+
+
+### `endpoint.defaults()`
+
+Override or set default options. Example:
+
+```js
+const request = require("request");
+const myEndpoint = require("@octokit/endpoint").defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+ headers: {
+ "user-agent": "myApp/1.2.3",
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+ org: "my-project",
+ per_page: 100,
+});
+
+request(myEndpoint(`GET /orgs/{org}/repos`));
+```
+
+You can call `.defaults()` again on the returned method, the defaults will cascade.
+
+```js
+const myProjectEndpoint = endpoint.defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+ headers: {
+ "user-agent": "myApp/1.2.3",
+ },
+ org: "my-project",
+});
+const myProjectEndpointWithAuth = myProjectEndpoint.defaults({
+ headers: {
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+});
+```
+
+`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`,
+`org` and `headers['authorization']` on top of `headers['accept']` that is set
+by the global default.
+
+### `endpoint.DEFAULTS`
+
+The current default options.
+
+```js
+endpoint.DEFAULTS.baseUrl; // https://api.github.com
+const myEndpoint = endpoint.defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+});
+myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3
+```
+
+### `endpoint.merge(route, options)` or `endpoint.merge(options)`
+
+Get the defaulted endpoint options, but without parsing them into request options:
+
+```js
+const myProjectEndpoint = endpoint.defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+ headers: {
+ "user-agent": "myApp/1.2.3",
+ },
+ org: "my-project",
+});
+myProjectEndpoint.merge("GET /orgs/{org}/repos", {
+ headers: {
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+ org: "my-secret-project",
+ type: "private",
+});
+
+// {
+// baseUrl: 'https://github-enterprise.acme-inc.com/api/v3',
+// method: 'GET',
+// url: '/orgs/{org}/repos',
+// headers: {
+// accept: 'application/vnd.github.v3+json',
+// authorization: `token 0000000000000000000000000000000000000001`,
+// 'user-agent': 'myApp/1.2.3'
+// },
+// org: 'my-secret-project',
+// type: 'private'
+// }
+```
+
+### `endpoint.parse()`
+
+Stateless method to turn endpoint options into request options. Calling
+`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
+
+## Special cases
+
+
+
+### The `data` parameter – set request body directly
+
+Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter.
+
+```js
+const options = endpoint("POST /markdown/raw", {
+ data: "Hello world github/linguist#1 **cool**, and #1!",
+ headers: {
+ accept: "text/html;charset=utf-8",
+ "content-type": "text/plain",
+ },
+});
+
+// options is
+// {
+// method: 'post',
+// url: 'https://api.github.com/markdown/raw',
+// headers: {
+// accept: 'text/html;charset=utf-8',
+// 'content-type': 'text/plain',
+// 'user-agent': userAgent
+// },
+// body: 'Hello world github/linguist#1 **cool**, and #1!'
+// }
+```
+
+### Set parameters for both the URL/query and the request body
+
+There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
+
+Example
+
+```js
+endpoint(
+ "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
+ {
+ name: "example.zip",
+ label: "short description",
+ headers: {
+ "content-type": "text/plain",
+ "content-length": 14,
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+ data: "Hello, world!",
+ },
+);
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-bundle/index.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-bundle/index.js
new file mode 100644
index 0000000000..77f055c151
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-bundle/index.js
@@ -0,0 +1,346 @@
+// pkg/dist-src/defaults.js
+import { getUserAgent } from "universal-user-agent";
+
+// pkg/dist-src/version.js
+var VERSION = "0.0.0-development";
+
+// pkg/dist-src/defaults.js
+var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
+var DEFAULTS = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent
+ },
+ mediaType: {
+ format: ""
+ }
+};
+
+// pkg/dist-src/util/lowercase-keys.js
+function lowercaseKeys(object) {
+ if (!object) {
+ return {};
+ }
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
+}
+
+// pkg/dist-src/util/is-plain-object.js
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null) return false;
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
+ const proto = Object.getPrototypeOf(value);
+ if (proto === null) return true;
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
+}
+
+// pkg/dist-src/util/merge-deep.js
+function mergeDeep(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject(options[key])) {
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
+ else result[key] = mergeDeep(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
+ }
+ });
+ return result;
+}
+
+// pkg/dist-src/util/remove-undefined-properties.js
+function removeUndefinedProperties(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
+ }
+ return obj;
+}
+
+// pkg/dist-src/merge.js
+function merge(defaults, route, options) {
+ if (typeof route === "string") {
+ let [method, url] = route.split(" ");
+ options = Object.assign(url ? { method, url } : { url: method }, options);
+ } else {
+ options = Object.assign({}, route);
+ }
+ options.headers = lowercaseKeys(options.headers);
+ removeUndefinedProperties(options);
+ removeUndefinedProperties(options.headers);
+ const mergedOptions = mergeDeep(defaults || {}, options);
+ if (options.url === "/graphql") {
+ if (defaults && defaults.mediaType.previews?.length) {
+ mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
+ (preview) => !mergedOptions.mediaType.previews.includes(preview)
+ ).concat(mergedOptions.mediaType.previews);
+ }
+ mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
+ }
+ return mergedOptions;
+}
+
+// pkg/dist-src/util/add-query-parameters.js
+function addQueryParameters(url, parameters) {
+ const separator = /\?/.test(url) ? "&" : "?";
+ const names = Object.keys(parameters);
+ if (names.length === 0) {
+ return url;
+ }
+ return url + separator + names.map((name) => {
+ if (name === "q") {
+ return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
+ }
+ return `${name}=${encodeURIComponent(parameters[name])}`;
+ }).join("&");
+}
+
+// pkg/dist-src/util/extract-url-variable-names.js
+var urlVariableRegex = /\{[^{}}]+\}/g;
+function removeNonChars(variableName) {
+ return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+}
+
+// pkg/dist-src/util/omit.js
+function omit(object, keysToOmit) {
+ const result = { __proto__: null };
+ for (const key of Object.keys(object)) {
+ if (keysToOmit.indexOf(key) === -1) {
+ result[key] = object[key];
+ }
+ }
+ return result;
+}
+
+// pkg/dist-src/util/url-template.js
+function encodeReserved(str) {
+ return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
+ if (!/%[0-9A-Fa-f]/.test(part)) {
+ part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
+ }
+ return part;
+ }).join("");
+}
+function encodeUnreserved(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
+}
+function encodeValue(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
+ if (key) {
+ return encodeUnreserved(key) + "=" + value;
+ } else {
+ return value;
+ }
+}
+function isDefined(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined(value) && value !== "") {
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
+ value = value.toString();
+ if (modifier && modifier !== "*") {
+ value = value.substring(0, parseInt(modifier, 10));
+ }
+ result.push(
+ encodeValue(operator, value, isKeyOperator(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined).forEach(function(value2) {
+ result.push(
+ encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined(value[k])) {
+ result.push(encodeValue(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined).forEach(function(value2) {
+ tmp.push(encodeValue(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined(value[k])) {
+ tmp.push(encodeUnreserved(k));
+ tmp.push(encodeValue(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator(operator)) {
+ result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
+ }
+ }
+ } else {
+ if (operator === ";") {
+ if (isDefined(value)) {
+ result.push(encodeUnreserved(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved(key) + "=");
+ } else if (value === "") {
+ result.push("");
+ }
+ }
+ return result;
+}
+function parseUrl(template) {
+ return {
+ expand: expand.bind(null, template)
+ };
+}
+function expand(template, context) {
+ var operators = ["+", "#", ".", "/", ";", "?", "&"];
+ template = template.replace(
+ /\{([^\{\}]+)\}|([^\{\}]+)/g,
+ function(_, expression, literal) {
+ if (expression) {
+ let operator = "";
+ const values = [];
+ if (operators.indexOf(expression.charAt(0)) !== -1) {
+ operator = expression.charAt(0);
+ expression = expression.substr(1);
+ }
+ expression.split(/,/g).forEach(function(variable) {
+ var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
+ values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+ });
+ if (operator && operator !== "+") {
+ var separator = ",";
+ if (operator === "?") {
+ separator = "&";
+ } else if (operator !== "#") {
+ separator = operator;
+ }
+ return (values.length !== 0 ? operator : "") + values.join(separator);
+ } else {
+ return values.join(",");
+ }
+ } else {
+ return encodeReserved(literal);
+ }
+ }
+ );
+ if (template === "/") {
+ return template;
+ } else {
+ return template.replace(/\/$/, "");
+ }
+}
+
+// pkg/dist-src/parse.js
+function parse(options) {
+ let method = options.method.toUpperCase();
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
+ let headers = Object.assign({}, options.headers);
+ let body;
+ let parameters = omit(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames(url);
+ url = parseUrl(url).expand(parameters);
+ if (!/^http/.test(url)) {
+ url = options.baseUrl + url;
+ }
+ const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
+ const remainingParameters = omit(parameters, omittedParameters);
+ const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
+ if (!isBinaryRequest) {
+ if (options.mediaType.format) {
+ headers.accept = headers.accept.split(/,/).map(
+ (format) => format.replace(
+ /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
+ `application/vnd$1$2.${options.mediaType.format}`
+ )
+ ).join(",");
+ }
+ if (url.endsWith("/graphql")) {
+ if (options.mediaType.previews?.length) {
+ const previewsFromAcceptHeader = headers.accept.match(/(? {
+ const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
+ return `application/vnd.github.${preview}-preview${format}`;
+ }).join(",");
+ }
+ }
+ }
+ if (["GET", "HEAD"].includes(method)) {
+ url = addQueryParameters(url, remainingParameters);
+ } else {
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+
+// pkg/dist-src/endpoint-with-defaults.js
+function endpointWithDefaults(defaults, route, options) {
+ return parse(merge(defaults, route, options));
+}
+
+// pkg/dist-src/with-defaults.js
+function withDefaults(oldDefaults, newDefaults) {
+ const DEFAULTS2 = merge(oldDefaults, newDefaults);
+ const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
+ return Object.assign(endpoint2, {
+ DEFAULTS: DEFAULTS2,
+ defaults: withDefaults.bind(null, DEFAULTS2),
+ merge: merge.bind(null, DEFAULTS2),
+ parse
+ });
+}
+
+// pkg/dist-src/index.js
+var endpoint = withDefaults(null, DEFAULTS);
+export {
+ endpoint
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-bundle/index.js.map b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-bundle/index.js.map
new file mode 100644
index 0000000000..a4189c6090
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-bundle/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/defaults.js", "../dist-src/version.js", "../dist-src/util/lowercase-keys.js", "../dist-src/util/is-plain-object.js", "../dist-src/util/merge-deep.js", "../dist-src/util/remove-undefined-properties.js", "../dist-src/merge.js", "../dist-src/util/add-query-parameters.js", "../dist-src/util/extract-url-variable-names.js", "../dist-src/util/omit.js", "../dist-src/util/url-template.js", "../dist-src/parse.js", "../dist-src/endpoint-with-defaults.js", "../dist-src/with-defaults.js", "../dist-src/index.js"],
+ "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version.js\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nconst DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\nexport {\n DEFAULTS\n};\n", "const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\nexport {\n lowercaseKeys\n};\n", "function isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n isPlainObject\n};\n", "import { isPlainObject } from \"./is-plain-object.js\";\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\nexport {\n mergeDeep\n};\n", "function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\nexport {\n removeUndefinedProperties\n};\n", "import { lowercaseKeys } from \"./util/lowercase-keys.js\";\nimport { mergeDeep } from \"./util/merge-deep.js\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties.js\";\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\nexport {\n merge\n};\n", "function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\nexport {\n addQueryParameters\n};\n", "const urlVariableRegex = /\\{[^{}}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/(?:^\\W+)|(?:(? a.concat(b), []);\n}\nexport {\n extractUrlVariableNames\n};\n", "function omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\nexport {\n omit\n};\n", "function encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\nexport {\n parseUrl\n};\n", "import { addQueryParameters } from \"./util/add-query-parameters.js\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names.js\";\nimport { omit } from \"./util/omit.js\";\nimport { parseUrl } from \"./util/url-template.js\";\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/(? {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\nexport {\n parse\n};\n", "import { DEFAULTS } from \"./defaults.js\";\nimport { merge } from \"./merge.js\";\nimport { parse } from \"./parse.js\";\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\nexport {\n endpointWithDefaults\n};\n", "import { endpointWithDefaults } from \"./endpoint-with-defaults.js\";\nimport { merge } from \"./merge.js\";\nimport { parse } from \"./parse.js\";\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse\n });\n}\nexport {\n withDefaults\n};\n", "import { withDefaults } from \"./with-defaults.js\";\nimport { DEFAULTS } from \"./defaults.js\";\nconst endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n"],
+ "mappings": "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",
+ "names": ["DEFAULTS", "endpoint"]
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/defaults.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/defaults.js
new file mode 100644
index 0000000000..5f65ced4d8
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/defaults.js
@@ -0,0 +1,17 @@
+import { getUserAgent } from "universal-user-agent";
+import { VERSION } from "./version.js";
+const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
+const DEFAULTS = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent
+ },
+ mediaType: {
+ format: ""
+ }
+};
+export {
+ DEFAULTS
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
new file mode 100644
index 0000000000..e67c9e5f05
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
@@ -0,0 +1,9 @@
+import { DEFAULTS } from "./defaults.js";
+import { merge } from "./merge.js";
+import { parse } from "./parse.js";
+function endpointWithDefaults(defaults, route, options) {
+ return parse(merge(defaults, route, options));
+}
+export {
+ endpointWithDefaults
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/index.js
new file mode 100644
index 0000000000..7d60502d06
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/index.js
@@ -0,0 +1,6 @@
+import { withDefaults } from "./with-defaults.js";
+import { DEFAULTS } from "./defaults.js";
+const endpoint = withDefaults(null, DEFAULTS);
+export {
+ endpoint
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/merge.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/merge.js
new file mode 100644
index 0000000000..cf1b37ef6c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/merge.js
@@ -0,0 +1,27 @@
+import { lowercaseKeys } from "./util/lowercase-keys.js";
+import { mergeDeep } from "./util/merge-deep.js";
+import { removeUndefinedProperties } from "./util/remove-undefined-properties.js";
+function merge(defaults, route, options) {
+ if (typeof route === "string") {
+ let [method, url] = route.split(" ");
+ options = Object.assign(url ? { method, url } : { url: method }, options);
+ } else {
+ options = Object.assign({}, route);
+ }
+ options.headers = lowercaseKeys(options.headers);
+ removeUndefinedProperties(options);
+ removeUndefinedProperties(options.headers);
+ const mergedOptions = mergeDeep(defaults || {}, options);
+ if (options.url === "/graphql") {
+ if (defaults && defaults.mediaType.previews?.length) {
+ mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
+ (preview) => !mergedOptions.mediaType.previews.includes(preview)
+ ).concat(mergedOptions.mediaType.previews);
+ }
+ mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
+ }
+ return mergedOptions;
+}
+export {
+ merge
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/parse.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/parse.js
new file mode 100644
index 0000000000..f3df8176a0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/parse.js
@@ -0,0 +1,70 @@
+import { addQueryParameters } from "./util/add-query-parameters.js";
+import { extractUrlVariableNames } from "./util/extract-url-variable-names.js";
+import { omit } from "./util/omit.js";
+import { parseUrl } from "./util/url-template.js";
+function parse(options) {
+ let method = options.method.toUpperCase();
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
+ let headers = Object.assign({}, options.headers);
+ let body;
+ let parameters = omit(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames(url);
+ url = parseUrl(url).expand(parameters);
+ if (!/^http/.test(url)) {
+ url = options.baseUrl + url;
+ }
+ const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
+ const remainingParameters = omit(parameters, omittedParameters);
+ const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
+ if (!isBinaryRequest) {
+ if (options.mediaType.format) {
+ headers.accept = headers.accept.split(/,/).map(
+ (format) => format.replace(
+ /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
+ `application/vnd$1$2.${options.mediaType.format}`
+ )
+ ).join(",");
+ }
+ if (url.endsWith("/graphql")) {
+ if (options.mediaType.previews?.length) {
+ const previewsFromAcceptHeader = headers.accept.match(/(? {
+ const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
+ return `application/vnd.github.${preview}-preview${format}`;
+ }).join(",");
+ }
+ }
+ }
+ if (["GET", "HEAD"].includes(method)) {
+ url = addQueryParameters(url, remainingParameters);
+ } else {
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+export {
+ parse
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
new file mode 100644
index 0000000000..6bdf7367c0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
@@ -0,0 +1,16 @@
+function addQueryParameters(url, parameters) {
+ const separator = /\?/.test(url) ? "&" : "?";
+ const names = Object.keys(parameters);
+ if (names.length === 0) {
+ return url;
+ }
+ return url + separator + names.map((name) => {
+ if (name === "q") {
+ return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
+ }
+ return `${name}=${encodeURIComponent(parameters[name])}`;
+ }).join("&");
+}
+export {
+ addQueryParameters
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
new file mode 100644
index 0000000000..bd909773f8
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
@@ -0,0 +1,14 @@
+const urlVariableRegex = /\{[^{}}]+\}/g;
+function removeNonChars(variableName) {
+ return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+}
+export {
+ extractUrlVariableNames
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
new file mode 100644
index 0000000000..6ae73a6c3d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/is-plain-object.js
@@ -0,0 +1,11 @@
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null) return false;
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
+ const proto = Object.getPrototypeOf(value);
+ if (proto === null) return true;
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
+}
+export {
+ isPlainObject
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
new file mode 100644
index 0000000000..9bd7bb9910
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
@@ -0,0 +1,12 @@
+function lowercaseKeys(object) {
+ if (!object) {
+ return {};
+ }
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
+}
+export {
+ lowercaseKeys
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
new file mode 100644
index 0000000000..bbfef8703c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
@@ -0,0 +1,16 @@
+import { isPlainObject } from "./is-plain-object.js";
+function mergeDeep(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject(options[key])) {
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
+ else result[key] = mergeDeep(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
+ }
+ });
+ return result;
+}
+export {
+ mergeDeep
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/omit.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/omit.js
new file mode 100644
index 0000000000..aceffe25ef
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/omit.js
@@ -0,0 +1,12 @@
+function omit(object, keysToOmit) {
+ const result = { __proto__: null };
+ for (const key of Object.keys(object)) {
+ if (keysToOmit.indexOf(key) === -1) {
+ result[key] = object[key];
+ }
+ }
+ return result;
+}
+export {
+ omit
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
new file mode 100644
index 0000000000..8653027c8d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js
@@ -0,0 +1,11 @@
+function removeUndefinedProperties(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
+ }
+ return obj;
+}
+export {
+ removeUndefinedProperties
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/url-template.js
new file mode 100644
index 0000000000..f70aa5c733
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/util/url-template.js
@@ -0,0 +1,133 @@
+function encodeReserved(str) {
+ return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
+ if (!/%[0-9A-Fa-f]/.test(part)) {
+ part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
+ }
+ return part;
+ }).join("");
+}
+function encodeUnreserved(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
+}
+function encodeValue(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
+ if (key) {
+ return encodeUnreserved(key) + "=" + value;
+ } else {
+ return value;
+ }
+}
+function isDefined(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined(value) && value !== "") {
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
+ value = value.toString();
+ if (modifier && modifier !== "*") {
+ value = value.substring(0, parseInt(modifier, 10));
+ }
+ result.push(
+ encodeValue(operator, value, isKeyOperator(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined).forEach(function(value2) {
+ result.push(
+ encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined(value[k])) {
+ result.push(encodeValue(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined).forEach(function(value2) {
+ tmp.push(encodeValue(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined(value[k])) {
+ tmp.push(encodeUnreserved(k));
+ tmp.push(encodeValue(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator(operator)) {
+ result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
+ }
+ }
+ } else {
+ if (operator === ";") {
+ if (isDefined(value)) {
+ result.push(encodeUnreserved(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved(key) + "=");
+ } else if (value === "") {
+ result.push("");
+ }
+ }
+ return result;
+}
+function parseUrl(template) {
+ return {
+ expand: expand.bind(null, template)
+ };
+}
+function expand(template, context) {
+ var operators = ["+", "#", ".", "/", ";", "?", "&"];
+ template = template.replace(
+ /\{([^\{\}]+)\}|([^\{\}]+)/g,
+ function(_, expression, literal) {
+ if (expression) {
+ let operator = "";
+ const values = [];
+ if (operators.indexOf(expression.charAt(0)) !== -1) {
+ operator = expression.charAt(0);
+ expression = expression.substr(1);
+ }
+ expression.split(/,/g).forEach(function(variable) {
+ var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
+ values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+ });
+ if (operator && operator !== "+") {
+ var separator = ",";
+ if (operator === "?") {
+ separator = "&";
+ } else if (operator !== "#") {
+ separator = operator;
+ }
+ return (values.length !== 0 ? operator : "") + values.join(separator);
+ } else {
+ return values.join(",");
+ }
+ } else {
+ return encodeReserved(literal);
+ }
+ }
+ );
+ if (template === "/") {
+ return template;
+ } else {
+ return template.replace(/\/$/, "");
+ }
+}
+export {
+ parseUrl
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/version.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/version.js
new file mode 100644
index 0000000000..ee99f79ca0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "10.1.3";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/with-defaults.js
new file mode 100644
index 0000000000..5551d42b39
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-src/with-defaults.js
@@ -0,0 +1,16 @@
+import { endpointWithDefaults } from "./endpoint-with-defaults.js";
+import { merge } from "./merge.js";
+import { parse } from "./parse.js";
+function withDefaults(oldDefaults, newDefaults) {
+ const DEFAULTS = merge(oldDefaults, newDefaults);
+ const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
+ return Object.assign(endpoint, {
+ DEFAULTS,
+ defaults: withDefaults.bind(null, DEFAULTS),
+ merge: merge.bind(null, DEFAULTS),
+ parse
+ });
+}
+export {
+ withDefaults
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
new file mode 100644
index 0000000000..d65e889bc1
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
@@ -0,0 +1,2 @@
+import type { EndpointDefaults } from "@octokit/types";
+export declare const DEFAULTS: EndpointDefaults;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
new file mode 100644
index 0000000000..ec25627cd2
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
@@ -0,0 +1,3 @@
+import type { EndpointOptions, RequestParameters, Route } from "@octokit/types";
+import { DEFAULTS } from "./defaults.js";
+export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/index.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/index.d.ts
new file mode 100644
index 0000000000..1ede136671
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/index.d.ts
@@ -0,0 +1 @@
+export declare const endpoint: import("@octokit/types").EndpointInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/merge.d.ts
new file mode 100644
index 0000000000..f583981205
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/merge.d.ts
@@ -0,0 +1,2 @@
+import type { EndpointDefaults, RequestParameters, Route } from "@octokit/types";
+export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/parse.d.ts
new file mode 100644
index 0000000000..5d0927ae8c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/parse.d.ts
@@ -0,0 +1,2 @@
+import type { EndpointDefaults, RequestOptions } from "@octokit/types";
+export declare function parse(options: EndpointDefaults): RequestOptions;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
new file mode 100644
index 0000000000..4b192ac41d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
@@ -0,0 +1,4 @@
+export declare function addQueryParameters(url: string, parameters: {
+ [x: string]: string | undefined;
+ q?: string;
+}): string;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
new file mode 100644
index 0000000000..93586d4db5
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
@@ -0,0 +1 @@
+export declare function extractUrlVariableNames(url: string): string[];
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
new file mode 100644
index 0000000000..004fa4bf52
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/is-plain-object.d.ts
@@ -0,0 +1 @@
+export declare function isPlainObject(value: unknown): value is Object;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
new file mode 100644
index 0000000000..1daf307362
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
@@ -0,0 +1,5 @@
+export declare function lowercaseKeys(object?: {
+ [key: string]: any;
+}): {
+ [key: string]: any;
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
new file mode 100644
index 0000000000..914411cf92
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
@@ -0,0 +1 @@
+export declare function mergeDeep(defaults: any, options: any): object;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
new file mode 100644
index 0000000000..06927d6bdf
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
@@ -0,0 +1,5 @@
+export declare function omit(object: {
+ [key: string]: any;
+}, keysToOmit: string[]): {
+ [key: string]: any;
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
new file mode 100644
index 0000000000..92d8d85053
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/remove-undefined-properties.d.ts
@@ -0,0 +1 @@
+export declare function removeUndefinedProperties(obj: any): any;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
new file mode 100644
index 0000000000..5d967cab3c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
@@ -0,0 +1,3 @@
+export declare function parseUrl(template: string): {
+ expand: (context: object) => string;
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/version.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/version.d.ts
new file mode 100644
index 0000000000..169c4ac784
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "10.1.3";
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
new file mode 100644
index 0000000000..e09354c56f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
@@ -0,0 +1,2 @@
+import type { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types";
+export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/endpoint/package.json b/node_modules/@octokit/app/node_modules/@octokit/endpoint/package.json
new file mode 100644
index 0000000000..d19a5a7567
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/endpoint/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@octokit/endpoint",
+ "version": "10.1.3",
+ "type": "module",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "description": "Turns REST API endpoints into generic request options",
+ "repository": "github:octokit/endpoint.js",
+ "keywords": [
+ "octokit",
+ "github",
+ "api",
+ "rest"
+ ],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "devDependencies": {
+ "@octokit/tsconfig": "^4.0.0",
+ "@types/node": "^22.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "glob": "^11.0.0",
+ "prettier": "3.4.2",
+ "semantic-release": "^24.0.0",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "typescript": "^5.0.0",
+ "vitest": "^3.0.0"
+ },
+ "dependencies": {
+ "@octokit/types": "^13.6.2",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "./dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-bundle/index.js",
+ "default": "./dist-bundle/index.js"
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/graphql/LICENSE
new file mode 100644
index 0000000000..af5366d0d0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/README.md b/node_modules/@octokit/app/node_modules/@octokit/graphql/README.md
new file mode 100644
index 0000000000..074cb056f3
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/README.md
@@ -0,0 +1,408 @@
+# graphql.js
+
+> GitHub GraphQL API client for browsers and Node
+
+[](https://www.npmjs.com/package/@octokit/graphql)
+[](https://github.com/octokit/graphql.js/actions?query=workflow%3ATest+branch%3Amain)
+
+
+
+- [Usage](#usage)
+ - [Send a simple query](#send-a-simple-query)
+ - [Authentication](#authentication)
+ - [Variables](#variables)
+ - [Pass query together with headers and variables](#pass-query-together-with-headers-and-variables)
+ - [Use with GitHub Enterprise](#use-with-github-enterprise)
+ - [Use custom `@octokit/request` instance](#use-custom-octokitrequest-instance)
+- [TypeScript](#typescript)
+ - [Additional Types](#additional-types)
+- [Errors](#errors)
+- [Partial responses](#partial-responses)
+- [Writing tests](#writing-tests)
+- [License](#license)
+
+
+
+## Usage
+
+
+
+
+Browsers
+
+
+Load `@octokit/graphql` directly from [esm.sh](https://esm.sh)
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/graphql
+
+```js
+import { graphql } from "@octokit/graphql";
+```
+
+
+
+
+
+### Send a simple query
+
+```js
+const { repository } = await graphql(
+ `
+ {
+ repository(owner: "octokit", name: "graphql.js") {
+ issues(last: 3) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }
+ `,
+ {
+ headers: {
+ authorization: `token secret123`,
+ },
+ },
+);
+```
+
+### Authentication
+
+The simplest way to authenticate a request is to set the `Authorization` header, e.g. to a [personal access token](https://github.com/settings/tokens/).
+
+```js
+const graphqlWithAuth = graphql.defaults({
+ headers: {
+ authorization: `token secret123`,
+ },
+});
+const { repository } = await graphqlWithAuth(`
+ {
+ repository(owner: "octokit", name: "graphql.js") {
+ issues(last: 3) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }
+`);
+```
+
+For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js).
+
+```js
+const { createAppAuth } = await import("@octokit/auth-app");
+const auth = createAppAuth({
+ appId: process.env.APP_ID,
+ privateKey: process.env.PRIVATE_KEY,
+ installationId: 123,
+});
+const graphqlWithAuth = graphql.defaults({
+ request: {
+ hook: auth.hook,
+ },
+});
+
+const { repository } = await graphqlWithAuth(
+ `{
+ repository(owner: "octokit", name: "graphql.js") {
+ issues(last: 3) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }`,
+);
+```
+
+### Variables
+
+⚠️ Do not use [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) in the query strings as they make your code vulnerable to query injection attacks (see [#2](https://github.com/octokit/graphql.js/issues/2)). Use variables instead:
+
+```js
+const { repository } = await graphql(
+ `
+ query lastIssues($owner: String!, $repo: String!, $num: Int = 3) {
+ repository(owner: $owner, name: $repo) {
+ issues(last: $num) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }
+ `,
+ {
+ owner: "octokit",
+ repo: "graphql.js",
+ headers: {
+ authorization: `token secret123`,
+ },
+ },
+);
+```
+
+### Pass query together with headers and variables
+
+```js
+import { graphql } from("@octokit/graphql");
+const { repository } = await graphql({
+ query: `query lastIssues($owner: String!, $repo: String!, $num: Int = 3) {
+ repository(owner: $owner, name: $repo) {
+ issues(last: $num) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }`,
+ owner: "octokit",
+ repo: "graphql.js",
+ headers: {
+ authorization: `token secret123`,
+ },
+});
+```
+
+### Use with GitHub Enterprise
+
+```js
+import { graphql } from "@octokit/graphql";
+graphql = graphql.defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api",
+ headers: {
+ authorization: `token secret123`,
+ },
+});
+const { repository } = await graphql(`
+ {
+ repository(owner: "acme-project", name: "acme-repo") {
+ issues(last: 3) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }
+`);
+```
+
+### Use custom `@octokit/request` instance
+
+```js
+import { request } from "@octokit/request";
+import { withCustomRequest } from "@octokit/graphql";
+
+let requestCounter = 0;
+const myRequest = request.defaults({
+ headers: {
+ authorization: "bearer secret123",
+ },
+ request: {
+ hook(request, options) {
+ requestCounter++;
+ return request(options);
+ },
+ },
+});
+const myGraphql = withCustomRequest(myRequest);
+await request("/");
+await myGraphql(`
+ {
+ repository(owner: "acme-project", name: "acme-repo") {
+ issues(last: 3) {
+ edges {
+ node {
+ title
+ }
+ }
+ }
+ }
+ }
+`);
+// requestCounter is now 2
+```
+
+## TypeScript
+
+`@octokit/graphql` is exposing proper types for its usage with TypeScript projects.
+
+### Additional Types
+
+Additionally, `GraphQlQueryResponseData` has been exposed to users:
+
+```ts
+import type { GraphQlQueryResponseData } from "@octokit/graphql";
+```
+
+## Errors
+
+In case of a GraphQL error, `error.message` is set to a combined message describing all errors returned by the endpoint.
+All errors can be accessed at `error.errors`. `error.request` has the request options such as query, variables and headers set for easier debugging.
+
+```js
+import { graphql, GraphqlResponseError } from "@octokit/graphql";
+graphql = graphql.defaults({
+ headers: {
+ authorization: `token secret123`,
+ },
+});
+const query = `{
+ viewer {
+ bioHtml
+ }
+}`;
+
+try {
+ const result = await graphql(query);
+} catch (error) {
+ if (error instanceof GraphqlResponseError) {
+ // do something with the error, allowing you to detect a graphql response error,
+ // compared to accidentally catching unrelated errors.
+
+ // server responds with an object like the following (as an example)
+ // class GraphqlResponseError {
+ // "headers": {
+ // "status": "403",
+ // },
+ // "data": null,
+ // "errors": [{
+ // "message": "Field 'bioHtml' doesn't exist on type 'User'",
+ // "locations": [{
+ // "line": 3,
+ // "column": 5
+ // }]
+ // }]
+ // }
+
+ console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } }
+ console.log(error.message); // Field 'bioHtml' doesn't exist on type 'User'
+ } else {
+ // handle non-GraphQL error
+ }
+}
+```
+
+## Partial responses
+
+A GraphQL query may respond with partial data accompanied by errors. In this case we will throw an error but the partial data will still be accessible through `error.data`
+
+```js
+import { graphql } from "@octokit/graphql";
+graphql = graphql.defaults({
+ headers: {
+ authorization: `token secret123`,
+ },
+});
+const query = `{
+ repository(name: "probot", owner: "probot") {
+ name
+ ref(qualifiedName: "master") {
+ target {
+ ... on Commit {
+ history(first: 25, after: "invalid cursor") {
+ nodes {
+ message
+ }
+ }
+ }
+ }
+ }
+ }
+}`;
+
+try {
+ const result = await graphql(query);
+} catch (error) {
+ // server responds with
+ // {
+ // "data": {
+ // "repository": {
+ // "name": "probot",
+ // "ref": null
+ // }
+ // },
+ // "errors": [
+ // {
+ // "type": "INVALID_CURSOR_ARGUMENTS",
+ // "path": [
+ // "repository",
+ // "ref",
+ // "target",
+ // "history"
+ // ],
+ // "locations": [
+ // {
+ // "line": 7,
+ // "column": 11
+ // }
+ // ],
+ // "message": "`invalid cursor` does not appear to be a valid cursor."
+ // }
+ // ]
+ // }
+
+ console.log("Request failed:", error.request); // { query, variables: {}, headers: { authorization: 'token secret123' } }
+ console.log(error.message); // `invalid cursor` does not appear to be a valid cursor.
+ console.log(error.data); // { repository: { name: 'probot', ref: null } }
+}
+```
+
+## Writing tests
+
+You can pass a replacement for [the built-in fetch implementation](https://github.com/bitinn/node-fetch) as `request.fetch` option. For example, using [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/) works great to write tests
+
+```js
+import assert from "assert";
+import fetchMock from "fetch-mock";
+
+import { graphql } from "@octokit/graphql";
+
+graphql("{ viewer { login } }", {
+ headers: {
+ authorization: "token secret123",
+ },
+ request: {
+ fetch: fetchMock
+ .sandbox()
+ .post("https://api.github.com/graphql", (url, options) => {
+ assert.strictEqual(options.headers.authorization, "token secret123");
+ assert.strictEqual(
+ options.body,
+ '{"query":"{ viewer { login } }"}',
+ "Sends correct query",
+ );
+ return { data: {} };
+ }),
+ },
+});
+```
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-bundle/index.js b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-bundle/index.js
new file mode 100644
index 0000000000..da0ade5900
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-bundle/index.js
@@ -0,0 +1,129 @@
+// pkg/dist-src/index.js
+import { request } from "@octokit/request";
+import { getUserAgent } from "universal-user-agent";
+
+// pkg/dist-src/version.js
+var VERSION = "0.0.0-development";
+
+// pkg/dist-src/with-defaults.js
+import { request as Request2 } from "@octokit/request";
+
+// pkg/dist-src/graphql.js
+import { request as Request } from "@octokit/request";
+
+// pkg/dist-src/error.js
+function _buildMessageForResponseErrors(data) {
+ return `Request failed due to following response errors:
+` + data.errors.map((e) => ` - ${e.message}`).join("\n");
+}
+var GraphqlResponseError = class extends Error {
+ constructor(request2, headers, response) {
+ super(_buildMessageForResponseErrors(response));
+ this.request = request2;
+ this.headers = headers;
+ this.response = response;
+ this.errors = response.errors;
+ this.data = response.data;
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+ }
+ name = "GraphqlResponseError";
+ errors;
+ data;
+};
+
+// pkg/dist-src/graphql.js
+var NON_VARIABLE_OPTIONS = [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "query",
+ "mediaType",
+ "operationName"
+];
+var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
+var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
+function graphql(request2, query, options) {
+ if (options) {
+ if (typeof query === "string" && "query" in options) {
+ return Promise.reject(
+ new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
+ );
+ }
+ for (const key in options) {
+ if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
+ return Promise.reject(
+ new Error(
+ `[@octokit/graphql] "${key}" cannot be used as variable name`
+ )
+ );
+ }
+ }
+ const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
+ const requestOptions = Object.keys(
+ parsedOptions
+ ).reduce((result, key) => {
+ if (NON_VARIABLE_OPTIONS.includes(key)) {
+ result[key] = parsedOptions[key];
+ return result;
+ }
+ if (!result.variables) {
+ result.variables = {};
+ }
+ result.variables[key] = parsedOptions[key];
+ return result;
+ }, {});
+ const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
+ if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
+ requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
+ }
+ return request2(requestOptions).then((response) => {
+ if (response.data.errors) {
+ const headers = {};
+ for (const key of Object.keys(response.headers)) {
+ headers[key] = response.headers[key];
+ }
+ throw new GraphqlResponseError(
+ requestOptions,
+ headers,
+ response.data
+ );
+ }
+ return response.data.data;
+ });
+}
+
+// pkg/dist-src/with-defaults.js
+function withDefaults(request2, newDefaults) {
+ const newRequest = request2.defaults(newDefaults);
+ const newApi = (query, options) => {
+ return graphql(newRequest, query, options);
+ };
+ return Object.assign(newApi, {
+ defaults: withDefaults.bind(null, newRequest),
+ endpoint: newRequest.endpoint
+ });
+}
+
+// pkg/dist-src/index.js
+var graphql2 = withDefaults(request, {
+ headers: {
+ "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`
+ },
+ method: "POST",
+ url: "/graphql"
+});
+function withCustomRequest(customRequest) {
+ return withDefaults(customRequest, {
+ method: "POST",
+ url: "/graphql"
+ });
+}
+export {
+ GraphqlResponseError,
+ graphql2 as graphql,
+ withCustomRequest
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-bundle/index.js.map b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-bundle/index.js.map
new file mode 100644
index 0000000000..3f41bc3d1f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-bundle/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/with-defaults.js", "../dist-src/graphql.js", "../dist-src/error.js"],
+ "sourcesContent": ["import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version.js\";\nimport { withDefaults } from \"./with-defaults.js\";\nconst graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nimport { GraphqlResponseError } from \"./error.js\";\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n};\n", "const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql.js\";\nfunction withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\nexport {\n withDefaults\n};\n", "import { request as Request } from \"@octokit/request\";\nimport { GraphqlResponseError } from \"./error.js\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n \"operationName\"\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\nexport {\n graphql\n};\n", "function _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nclass GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n name = \"GraphqlResponseError\";\n errors;\n data;\n}\nexport {\n GraphqlResponseError\n};\n"],
+ "mappings": "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",
+ "names": ["Request", "request", "request", "request", "graphql"]
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/error.js b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/error.js
new file mode 100644
index 0000000000..e899b5afc8
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/error.js
@@ -0,0 +1,23 @@
+function _buildMessageForResponseErrors(data) {
+ return `Request failed due to following response errors:
+` + data.errors.map((e) => ` - ${e.message}`).join("\n");
+}
+class GraphqlResponseError extends Error {
+ constructor(request, headers, response) {
+ super(_buildMessageForResponseErrors(response));
+ this.request = request;
+ this.headers = headers;
+ this.response = response;
+ this.errors = response.errors;
+ this.data = response.data;
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+ }
+ name = "GraphqlResponseError";
+ errors;
+ data;
+}
+export {
+ GraphqlResponseError
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/graphql.js b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/graphql.js
new file mode 100644
index 0000000000..391a594789
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/graphql.js
@@ -0,0 +1,66 @@
+import { request as Request } from "@octokit/request";
+import { GraphqlResponseError } from "./error.js";
+const NON_VARIABLE_OPTIONS = [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "query",
+ "mediaType",
+ "operationName"
+];
+const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
+const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
+function graphql(request, query, options) {
+ if (options) {
+ if (typeof query === "string" && "query" in options) {
+ return Promise.reject(
+ new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
+ );
+ }
+ for (const key in options) {
+ if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
+ return Promise.reject(
+ new Error(
+ `[@octokit/graphql] "${key}" cannot be used as variable name`
+ )
+ );
+ }
+ }
+ const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
+ const requestOptions = Object.keys(
+ parsedOptions
+ ).reduce((result, key) => {
+ if (NON_VARIABLE_OPTIONS.includes(key)) {
+ result[key] = parsedOptions[key];
+ return result;
+ }
+ if (!result.variables) {
+ result.variables = {};
+ }
+ result.variables[key] = parsedOptions[key];
+ return result;
+ }, {});
+ const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;
+ if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
+ requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
+ }
+ return request(requestOptions).then((response) => {
+ if (response.data.errors) {
+ const headers = {};
+ for (const key of Object.keys(response.headers)) {
+ headers[key] = response.headers[key];
+ }
+ throw new GraphqlResponseError(
+ requestOptions,
+ headers,
+ response.data
+ );
+ }
+ return response.data.data;
+ });
+}
+export {
+ graphql
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/index.js
new file mode 100644
index 0000000000..c3e5446757
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/index.js
@@ -0,0 +1,23 @@
+import { request } from "@octokit/request";
+import { getUserAgent } from "universal-user-agent";
+import { VERSION } from "./version.js";
+import { withDefaults } from "./with-defaults.js";
+const graphql = withDefaults(request, {
+ headers: {
+ "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`
+ },
+ method: "POST",
+ url: "/graphql"
+});
+import { GraphqlResponseError } from "./error.js";
+function withCustomRequest(customRequest) {
+ return withDefaults(customRequest, {
+ method: "POST",
+ url: "/graphql"
+ });
+}
+export {
+ GraphqlResponseError,
+ graphql,
+ withCustomRequest
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/version.js b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/version.js
new file mode 100644
index 0000000000..c53103a665
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "8.2.1";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/with-defaults.js b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/with-defaults.js
new file mode 100644
index 0000000000..2e7dd5895d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-src/with-defaults.js
@@ -0,0 +1,15 @@
+import { request as Request } from "@octokit/request";
+import { graphql } from "./graphql.js";
+function withDefaults(request, newDefaults) {
+ const newRequest = request.defaults(newDefaults);
+ const newApi = (query, options) => {
+ return graphql(newRequest, query, options);
+ };
+ return Object.assign(newApi, {
+ defaults: withDefaults.bind(null, newRequest),
+ endpoint: newRequest.endpoint
+ });
+}
+export {
+ withDefaults
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/error.d.ts b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/error.d.ts
new file mode 100644
index 0000000000..722b9e0a4f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/error.d.ts
@@ -0,0 +1,13 @@
+import type { ResponseHeaders } from "@octokit/types";
+import type { GraphQlEndpointOptions, GraphQlQueryResponse } from "./types.js";
+type ServerResponseData = Required>;
+export declare class GraphqlResponseError extends Error {
+ readonly request: GraphQlEndpointOptions;
+ readonly headers: ResponseHeaders;
+ readonly response: ServerResponseData;
+ name: string;
+ readonly errors: GraphQlQueryResponse["errors"];
+ readonly data: ResponseData;
+ constructor(request: GraphQlEndpointOptions, headers: ResponseHeaders, response: ServerResponseData);
+}
+export {};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/graphql.d.ts b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/graphql.d.ts
new file mode 100644
index 0000000000..f21fe222a4
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/graphql.d.ts
@@ -0,0 +1,3 @@
+import { request as Request } from "@octokit/request";
+import type { RequestParameters, GraphQlQueryResponseData } from "./types.js";
+export declare function graphql(request: typeof Request, query: string | RequestParameters, options?: RequestParameters): Promise;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/index.d.ts b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/index.d.ts
new file mode 100644
index 0000000000..94f3bf2704
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/index.d.ts
@@ -0,0 +1,5 @@
+import { request } from "@octokit/request";
+export declare const graphql: import("./types.js").graphql;
+export type { GraphQlQueryResponseData } from "./types.js";
+export { GraphqlResponseError } from "./error.js";
+export declare function withCustomRequest(customRequest: typeof request): import("./types.js").graphql;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/types.d.ts b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/types.d.ts
new file mode 100644
index 0000000000..ceba025816
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/types.d.ts
@@ -0,0 +1,55 @@
+import type { EndpointOptions, RequestParameters as RequestParametersType, EndpointInterface } from "@octokit/types";
+export type GraphQlEndpointOptions = EndpointOptions & {
+ variables?: {
+ [key: string]: unknown;
+ };
+};
+export type RequestParameters = RequestParametersType;
+export type Query = string;
+export interface graphql {
+ /**
+ * Sends a GraphQL query request based on endpoint options
+ * The GraphQL query must be specified in `options`.
+ *
+ * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ */
+ (options: RequestParameters): GraphQlResponse;
+ /**
+ * Sends a GraphQL query request based on endpoint options
+ *
+ * @param {string} query GraphQL query. Example: `'query { viewer { login } }'`.
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ */
+ (query: Query, parameters?: RequestParameters): GraphQlResponse;
+ /**
+ * Returns a new `endpoint` with updated route and parameters
+ */
+ defaults: (newDefaults: RequestParameters) => graphql;
+ /**
+ * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint}
+ */
+ endpoint: EndpointInterface;
+}
+export type GraphQlResponse = Promise;
+export type GraphQlQueryResponseData = {
+ [key: string]: any;
+};
+export type GraphQlQueryResponse = {
+ data: ResponseData;
+ errors?: [
+ {
+ type: string;
+ message: string;
+ path: [string];
+ extensions: {
+ [key: string]: any;
+ };
+ locations: [
+ {
+ line: number;
+ column: number;
+ }
+ ];
+ }
+ ];
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/version.d.ts b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/version.d.ts
new file mode 100644
index 0000000000..1217c90962
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "8.2.1";
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
new file mode 100644
index 0000000000..964486872c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/dist-types/with-defaults.d.ts
@@ -0,0 +1,3 @@
+import { request as Request } from "@octokit/request";
+import type { graphql as ApiInterface, RequestParameters } from "./types.js";
+export declare function withDefaults(request: typeof Request, newDefaults: RequestParameters): ApiInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/graphql/package.json b/node_modules/@octokit/app/node_modules/@octokit/graphql/package.json
new file mode 100644
index 0000000000..5ad514183a
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/graphql/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "@octokit/graphql",
+ "version": "8.2.1",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "type": "module",
+ "description": "GitHub GraphQL API client for browsers and Node",
+ "repository": "github:octokit/graphql.js",
+ "keywords": [
+ "octokit",
+ "github",
+ "api",
+ "graphql"
+ ],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^9.2.2",
+ "@octokit/types": "^13.8.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "devDependencies": {
+ "@octokit/tsconfig": "^4.0.0",
+ "@types/fetch-mock": "^7.2.5",
+ "@types/node": "^22.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "fetch-mock": "^12.0.0",
+ "glob": "^11.0.0",
+ "prettier": "3.4.2",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "typescript": "^5.3.0",
+ "vitest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "./dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-bundle/index.js",
+ "default": "./dist-bundle/index.js"
+ },
+ "./types": {
+ "types": "./dist-types/types.d.ts"
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/LICENSE
new file mode 100644
index 0000000000..57bee5f182
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/LICENSE
@@ -0,0 +1,7 @@
+MIT License Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/README.md b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/README.md
new file mode 100644
index 0000000000..5443892b05
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/README.md
@@ -0,0 +1,272 @@
+# plugin-paginate-rest.js
+
+> Octokit plugin to paginate REST API endpoint responses
+
+[](https://www.npmjs.com/package/@octokit/plugin-paginate-rest)
+[](https://github.com/octokit/plugin-paginate-rest.js/actions?workflow=Test)
+
+## Usage
+
+
+
+
+Browsers
+
+
+Load `@octokit/plugin-paginate-rest` and [`@octokit/core`](https://github.com/octokit/core.js) (or core-compatible module) directly from [esm.sh](https://esm.sh)
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with `npm install @octokit/core @octokit/plugin-paginate-rest`. Optionally replace `@octokit/core` with a core-compatible module
+
+```js
+import { Octokit } from "@octokit/core";
+import {
+ paginateRest,
+ composePaginateRest,
+} from "@octokit/plugin-paginate-rest";
+```
+
+
+
+
+
+```js
+const MyOctokit = Octokit.plugin(paginateRest);
+const octokit = new MyOctokit({ auth: "secret123" });
+
+// See https://developer.github.com/v3/issues/#list-issues-for-a-repository
+const issues = await octokit.paginate("GET /repos/{owner}/{repo}/issues", {
+ owner: "octocat",
+ repo: "hello-world",
+ since: "2010-10-01",
+ per_page: 100,
+});
+```
+
+If you want to utilize the pagination methods in another plugin, use `composePaginateRest`.
+
+```js
+function myPlugin(octokit, options) {
+ return {
+ allStars({owner, repo}) => {
+ return composePaginateRest(
+ octokit,
+ "GET /repos/{owner}/{repo}/stargazers",
+ {owner, repo }
+ )
+ }
+ }
+}
+```
+
+> [!IMPORTANT]
+> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json`. See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
+
+## `octokit.paginate()`
+
+The `paginateRest` plugin adds a new `octokit.paginate()` method which accepts the same parameters as [`octokit.request`](https://github.com/octokit/request.js#request). Only "List ..." endpoints such as [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) are supporting pagination. Their [response includes a Link header](https://developer.github.com/v3/issues/#response-1). For other endpoints, `octokit.paginate()` behaves the same as `octokit.request()`.
+
+The `per_page` parameter is usually defaulting to `30`, and can be set to up to `100`, which helps retrieving a big amount of data without hitting the rate limits too soon.
+
+An optional `mapFunction` can be passed to map each page response to a new value, usually an array with only the data you need. This can help to reduce memory usage, as only the relevant data has to be kept in memory until the pagination is complete.
+
+```js
+const issueTitles = await octokit.paginate(
+ "GET /repos/{owner}/{repo}/issues",
+ {
+ owner: "octocat",
+ repo: "hello-world",
+ since: "2010-10-01",
+ per_page: 100,
+ },
+ (response) => response.data.map((issue) => issue.title),
+);
+```
+
+The `mapFunction` gets a 2nd argument `done` which can be called to end the pagination early.
+
+```js
+const issues = await octokit.paginate(
+ "GET /repos/{owner}/{repo}/issues",
+ {
+ owner: "octocat",
+ repo: "hello-world",
+ since: "2010-10-01",
+ per_page: 100,
+ },
+ (response, done) => {
+ if (response.data.find((issue) => issue.title.includes("something"))) {
+ done();
+ }
+ return response.data;
+ },
+);
+```
+
+Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/):
+
+```js
+const issues = await octokit.paginate(octokit.rest.issues.listForRepo, {
+ owner: "octocat",
+ repo: "hello-world",
+ since: "2010-10-01",
+ per_page: 100,
+});
+```
+
+## `octokit.paginate.iterator()`
+
+If your target runtime environments supports async iterators (such as most modern browsers and Node 10+), you can iterate through each response
+
+```js
+const parameters = {
+ owner: "octocat",
+ repo: "hello-world",
+ since: "2010-10-01",
+ per_page: 100,
+};
+for await (const response of octokit.paginate.iterator(
+ "GET /repos/{owner}/{repo}/issues",
+ parameters,
+)) {
+ // do whatever you want with each response, break out of the loop, etc.
+ const issues = response.data;
+ console.log("%d issues found", issues.length);
+}
+```
+
+Alternatively you can pass a `request` method as first argument. This is great when using in combination with [`@octokit/plugin-rest-endpoint-methods`](https://github.com/octokit/plugin-rest-endpoint-methods.js/):
+
+```js
+const parameters = {
+ owner: "octocat",
+ repo: "hello-world",
+ since: "2010-10-01",
+ per_page: 100,
+};
+for await (const response of octokit.paginate.iterator(
+ octokit.rest.issues.listForRepo,
+ parameters,
+)) {
+ // do whatever you want with each response, break out of the loop, etc.
+ const issues = response.data;
+ console.log("%d issues found", issues.length);
+}
+```
+
+## `composePaginateRest` and `composePaginateRest.iterator`
+
+The `compose*` methods work just like their `octokit.*` counterparts described above, with the differenct that both methods require an `octokit` instance to be passed as first argument
+
+## How it works
+
+`octokit.paginate()` wraps `octokit.request()`. As long as a `rel="next"` link value is present in the response's `Link` header, it sends another request for that URL, and so on.
+
+Most of GitHub's paginating REST API endpoints return an array, but there are a few exceptions which return an object with a key that includes the items array. For example:
+
+- [Search repositories](https://developer.github.com/v3/search/#example) (key `items`)
+- [List check runs for a specific ref](https://developer.github.com/v3/checks/runs/#response-3) (key: `check_runs`)
+- [List check suites for a specific ref](https://developer.github.com/v3/checks/suites/#response-1) (key: `check_suites`)
+- [List repositories](https://developer.github.com/v3/apps/installations/#list-repositories) for an installation (key: `repositories`)
+- [List installations for a user](https://developer.github.com/v3/apps/installations/#response-1) (key `installations`)
+
+`octokit.paginate()` is working around these inconsistencies so you don't have to worry about it.
+
+If a response is lacking the `Link` header, `octokit.paginate()` still resolves with an array, even if the response returns a single object.
+
+## Types
+
+The plugin also exposes some types and runtime type guards for TypeScript projects.
+
+
+
+
+Types
+
+
+```typescript
+import {
+ PaginateInterface,
+ PaginatingEndpoints,
+} from "@octokit/plugin-paginate-rest";
+```
+
+
+
+Guards
+
+
+```typescript
+import { isPaginatingEndpoint } from "@octokit/plugin-paginate-rest";
+```
+
+
+
+
+
+### PaginateInterface
+
+An `interface` that declares all the overloads of the `.paginate` method.
+
+### PaginatingEndpoints
+
+An `interface` which describes all API endpoints supported by the plugin. Some overloads of `.paginate()` method and `composePaginateRest()` function depend on `PaginatingEndpoints`, using the `keyof PaginatingEndpoints` as a type for one of its arguments.
+
+```typescript
+import { Octokit } from "@octokit/core";
+import {
+ PaginatingEndpoints,
+ composePaginateRest,
+} from "@octokit/plugin-paginate-rest";
+
+type DataType = "data" extends keyof T ? T["data"] : unknown;
+
+async function myPaginatePlugin(
+ octokit: Octokit,
+ endpoint: E,
+ parameters?: PaginatingEndpoints[E]["parameters"],
+): Promise> {
+ return await composePaginateRest(octokit, endpoint, parameters);
+}
+```
+
+### isPaginatingEndpoint
+
+A type guard, `isPaginatingEndpoint(arg)` returns `true` if `arg` is one of the keys in `PaginatingEndpoints` (is `keyof PaginatingEndpoints`).
+
+```typescript
+import { Octokit } from "@octokit/core";
+import {
+ isPaginatingEndpoint,
+ composePaginateRest,
+} from "@octokit/plugin-paginate-rest";
+
+async function myPlugin(octokit: Octokit, arg: unknown) {
+ if (isPaginatingEndpoint(arg)) {
+ return await composePaginateRest(octokit, arg);
+ }
+ // ...
+}
+```
+
+## Contributing
+
+See [CONTRIBUTING.md](CONTRIBUTING.md)
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js
new file mode 100644
index 0000000000..e5de04f8aa
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js
@@ -0,0 +1,384 @@
+// pkg/dist-src/version.js
+var VERSION = "0.0.0-development";
+
+// pkg/dist-src/normalize-paginated-list-response.js
+function normalizePaginatedListResponse(response) {
+ if (!response.data) {
+ return {
+ ...response,
+ data: []
+ };
+ }
+ const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
+ if (!responseNeedsNormalization) return response;
+ const incompleteResults = response.data.incomplete_results;
+ const repositorySelection = response.data.repository_selection;
+ const totalCount = response.data.total_count;
+ delete response.data.incomplete_results;
+ delete response.data.repository_selection;
+ delete response.data.total_count;
+ const namespaceKey = Object.keys(response.data)[0];
+ const data = response.data[namespaceKey];
+ response.data = data;
+ if (typeof incompleteResults !== "undefined") {
+ response.data.incomplete_results = incompleteResults;
+ }
+ if (typeof repositorySelection !== "undefined") {
+ response.data.repository_selection = repositorySelection;
+ }
+ response.data.total_count = totalCount;
+ return response;
+}
+
+// pkg/dist-src/iterator.js
+function iterator(octokit, route, parameters) {
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
+ const requestMethod = typeof route === "function" ? route : octokit.request;
+ const method = options.method;
+ const headers = options.headers;
+ let url = options.url;
+ return {
+ [Symbol.asyncIterator]: () => ({
+ async next() {
+ if (!url) return { done: true };
+ try {
+ const response = await requestMethod({ method, url, headers });
+ const normalizedResponse = normalizePaginatedListResponse(response);
+ url = ((normalizedResponse.headers.link || "").match(
+ /<([^<>]+)>;\s*rel="next"/
+ ) || [])[1];
+ return { value: normalizedResponse };
+ } catch (error) {
+ if (error.status !== 409) throw error;
+ url = "";
+ return {
+ value: {
+ status: 200,
+ headers: {},
+ data: []
+ }
+ };
+ }
+ }
+ })
+ };
+}
+
+// pkg/dist-src/paginate.js
+function paginate(octokit, route, parameters, mapFn) {
+ if (typeof parameters === "function") {
+ mapFn = parameters;
+ parameters = void 0;
+ }
+ return gather(
+ octokit,
+ [],
+ iterator(octokit, route, parameters)[Symbol.asyncIterator](),
+ mapFn
+ );
+}
+function gather(octokit, results, iterator2, mapFn) {
+ return iterator2.next().then((result) => {
+ if (result.done) {
+ return results;
+ }
+ let earlyExit = false;
+ function done() {
+ earlyExit = true;
+ }
+ results = results.concat(
+ mapFn ? mapFn(result.value, done) : result.value.data
+ );
+ if (earlyExit) {
+ return results;
+ }
+ return gather(octokit, results, iterator2, mapFn);
+ });
+}
+
+// pkg/dist-src/compose-paginate.js
+var composePaginateRest = Object.assign(paginate, {
+ iterator
+});
+
+// pkg/dist-src/generated/paginating-endpoints.js
+var paginatingEndpoints = [
+ "GET /advisories",
+ "GET /app/hook/deliveries",
+ "GET /app/installation-requests",
+ "GET /app/installations",
+ "GET /assignments/{assignment_id}/accepted_assignments",
+ "GET /classrooms",
+ "GET /classrooms/{classroom_id}/assignments",
+ "GET /enterprises/{enterprise}/code-security/configurations",
+ "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories",
+ "GET /enterprises/{enterprise}/dependabot/alerts",
+ "GET /enterprises/{enterprise}/secret-scanning/alerts",
+ "GET /events",
+ "GET /gists",
+ "GET /gists/public",
+ "GET /gists/starred",
+ "GET /gists/{gist_id}/comments",
+ "GET /gists/{gist_id}/commits",
+ "GET /gists/{gist_id}/forks",
+ "GET /installation/repositories",
+ "GET /issues",
+ "GET /licenses",
+ "GET /marketplace_listing/plans",
+ "GET /marketplace_listing/plans/{plan_id}/accounts",
+ "GET /marketplace_listing/stubbed/plans",
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
+ "GET /networks/{owner}/{repo}/events",
+ "GET /notifications",
+ "GET /organizations",
+ "GET /orgs/{org}/actions/cache/usage-by-repository",
+ "GET /orgs/{org}/actions/permissions/repositories",
+ "GET /orgs/{org}/actions/runner-groups",
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories",
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners",
+ "GET /orgs/{org}/actions/runners",
+ "GET /orgs/{org}/actions/secrets",
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/actions/variables",
+ "GET /orgs/{org}/actions/variables/{name}/repositories",
+ "GET /orgs/{org}/attestations/{subject_digest}",
+ "GET /orgs/{org}/blocks",
+ "GET /orgs/{org}/code-scanning/alerts",
+ "GET /orgs/{org}/code-security/configurations",
+ "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories",
+ "GET /orgs/{org}/codespaces",
+ "GET /orgs/{org}/codespaces/secrets",
+ "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/copilot/billing/seats",
+ "GET /orgs/{org}/copilot/metrics",
+ "GET /orgs/{org}/copilot/usage",
+ "GET /orgs/{org}/dependabot/alerts",
+ "GET /orgs/{org}/dependabot/secrets",
+ "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/events",
+ "GET /orgs/{org}/failed_invitations",
+ "GET /orgs/{org}/hooks",
+ "GET /orgs/{org}/hooks/{hook_id}/deliveries",
+ "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}",
+ "GET /orgs/{org}/insights/api/subject-stats",
+ "GET /orgs/{org}/insights/api/user-stats/{user_id}",
+ "GET /orgs/{org}/installations",
+ "GET /orgs/{org}/invitations",
+ "GET /orgs/{org}/invitations/{invitation_id}/teams",
+ "GET /orgs/{org}/issues",
+ "GET /orgs/{org}/members",
+ "GET /orgs/{org}/members/{username}/codespaces",
+ "GET /orgs/{org}/migrations",
+ "GET /orgs/{org}/migrations/{migration_id}/repositories",
+ "GET /orgs/{org}/organization-roles/{role_id}/teams",
+ "GET /orgs/{org}/organization-roles/{role_id}/users",
+ "GET /orgs/{org}/outside_collaborators",
+ "GET /orgs/{org}/packages",
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
+ "GET /orgs/{org}/personal-access-token-requests",
+ "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
+ "GET /orgs/{org}/personal-access-tokens",
+ "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
+ "GET /orgs/{org}/private-registries",
+ "GET /orgs/{org}/projects",
+ "GET /orgs/{org}/properties/values",
+ "GET /orgs/{org}/public_members",
+ "GET /orgs/{org}/repos",
+ "GET /orgs/{org}/rulesets",
+ "GET /orgs/{org}/rulesets/rule-suites",
+ "GET /orgs/{org}/secret-scanning/alerts",
+ "GET /orgs/{org}/security-advisories",
+ "GET /orgs/{org}/team/{team_slug}/copilot/metrics",
+ "GET /orgs/{org}/team/{team_slug}/copilot/usage",
+ "GET /orgs/{org}/teams",
+ "GET /orgs/{org}/teams/{team_slug}/discussions",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
+ "GET /orgs/{org}/teams/{team_slug}/invitations",
+ "GET /orgs/{org}/teams/{team_slug}/members",
+ "GET /orgs/{org}/teams/{team_slug}/projects",
+ "GET /orgs/{org}/teams/{team_slug}/repos",
+ "GET /orgs/{org}/teams/{team_slug}/teams",
+ "GET /projects/columns/{column_id}/cards",
+ "GET /projects/{project_id}/collaborators",
+ "GET /projects/{project_id}/columns",
+ "GET /repos/{owner}/{repo}/actions/artifacts",
+ "GET /repos/{owner}/{repo}/actions/caches",
+ "GET /repos/{owner}/{repo}/actions/organization-secrets",
+ "GET /repos/{owner}/{repo}/actions/organization-variables",
+ "GET /repos/{owner}/{repo}/actions/runners",
+ "GET /repos/{owner}/{repo}/actions/runs",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
+ "GET /repos/{owner}/{repo}/actions/secrets",
+ "GET /repos/{owner}/{repo}/actions/variables",
+ "GET /repos/{owner}/{repo}/actions/workflows",
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
+ "GET /repos/{owner}/{repo}/activity",
+ "GET /repos/{owner}/{repo}/assignees",
+ "GET /repos/{owner}/{repo}/attestations/{subject_digest}",
+ "GET /repos/{owner}/{repo}/branches",
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
+ "GET /repos/{owner}/{repo}/code-scanning/alerts",
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
+ "GET /repos/{owner}/{repo}/code-scanning/analyses",
+ "GET /repos/{owner}/{repo}/codespaces",
+ "GET /repos/{owner}/{repo}/codespaces/devcontainers",
+ "GET /repos/{owner}/{repo}/codespaces/secrets",
+ "GET /repos/{owner}/{repo}/collaborators",
+ "GET /repos/{owner}/{repo}/comments",
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/commits",
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
+ "GET /repos/{owner}/{repo}/commits/{ref}/status",
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
+ "GET /repos/{owner}/{repo}/contributors",
+ "GET /repos/{owner}/{repo}/dependabot/alerts",
+ "GET /repos/{owner}/{repo}/dependabot/secrets",
+ "GET /repos/{owner}/{repo}/deployments",
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
+ "GET /repos/{owner}/{repo}/environments",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables",
+ "GET /repos/{owner}/{repo}/events",
+ "GET /repos/{owner}/{repo}/forks",
+ "GET /repos/{owner}/{repo}/hooks",
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
+ "GET /repos/{owner}/{repo}/invitations",
+ "GET /repos/{owner}/{repo}/issues",
+ "GET /repos/{owner}/{repo}/issues/comments",
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/issues/events",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
+ "GET /repos/{owner}/{repo}/keys",
+ "GET /repos/{owner}/{repo}/labels",
+ "GET /repos/{owner}/{repo}/milestones",
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
+ "GET /repos/{owner}/{repo}/notifications",
+ "GET /repos/{owner}/{repo}/pages/builds",
+ "GET /repos/{owner}/{repo}/projects",
+ "GET /repos/{owner}/{repo}/pulls",
+ "GET /repos/{owner}/{repo}/pulls/comments",
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
+ "GET /repos/{owner}/{repo}/releases",
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
+ "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
+ "GET /repos/{owner}/{repo}/rules/branches/{branch}",
+ "GET /repos/{owner}/{repo}/rulesets",
+ "GET /repos/{owner}/{repo}/rulesets/rule-suites",
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts",
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
+ "GET /repos/{owner}/{repo}/security-advisories",
+ "GET /repos/{owner}/{repo}/stargazers",
+ "GET /repos/{owner}/{repo}/subscribers",
+ "GET /repos/{owner}/{repo}/tags",
+ "GET /repos/{owner}/{repo}/teams",
+ "GET /repos/{owner}/{repo}/topics",
+ "GET /repositories",
+ "GET /search/code",
+ "GET /search/commits",
+ "GET /search/issues",
+ "GET /search/labels",
+ "GET /search/repositories",
+ "GET /search/topics",
+ "GET /search/users",
+ "GET /teams/{team_id}/discussions",
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments",
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+ "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
+ "GET /teams/{team_id}/invitations",
+ "GET /teams/{team_id}/members",
+ "GET /teams/{team_id}/projects",
+ "GET /teams/{team_id}/repos",
+ "GET /teams/{team_id}/teams",
+ "GET /user/blocks",
+ "GET /user/codespaces",
+ "GET /user/codespaces/secrets",
+ "GET /user/emails",
+ "GET /user/followers",
+ "GET /user/following",
+ "GET /user/gpg_keys",
+ "GET /user/installations",
+ "GET /user/installations/{installation_id}/repositories",
+ "GET /user/issues",
+ "GET /user/keys",
+ "GET /user/marketplace_purchases",
+ "GET /user/marketplace_purchases/stubbed",
+ "GET /user/memberships/orgs",
+ "GET /user/migrations",
+ "GET /user/migrations/{migration_id}/repositories",
+ "GET /user/orgs",
+ "GET /user/packages",
+ "GET /user/packages/{package_type}/{package_name}/versions",
+ "GET /user/public_emails",
+ "GET /user/repos",
+ "GET /user/repository_invitations",
+ "GET /user/social_accounts",
+ "GET /user/ssh_signing_keys",
+ "GET /user/starred",
+ "GET /user/subscriptions",
+ "GET /user/teams",
+ "GET /users",
+ "GET /users/{username}/attestations/{subject_digest}",
+ "GET /users/{username}/events",
+ "GET /users/{username}/events/orgs/{org}",
+ "GET /users/{username}/events/public",
+ "GET /users/{username}/followers",
+ "GET /users/{username}/following",
+ "GET /users/{username}/gists",
+ "GET /users/{username}/gpg_keys",
+ "GET /users/{username}/keys",
+ "GET /users/{username}/orgs",
+ "GET /users/{username}/packages",
+ "GET /users/{username}/projects",
+ "GET /users/{username}/received_events",
+ "GET /users/{username}/received_events/public",
+ "GET /users/{username}/repos",
+ "GET /users/{username}/social_accounts",
+ "GET /users/{username}/ssh_signing_keys",
+ "GET /users/{username}/starred",
+ "GET /users/{username}/subscriptions"
+];
+
+// pkg/dist-src/paginating-endpoints.js
+function isPaginatingEndpoint(arg) {
+ if (typeof arg === "string") {
+ return paginatingEndpoints.includes(arg);
+ } else {
+ return false;
+ }
+}
+
+// pkg/dist-src/index.js
+function paginateRest(octokit) {
+ return {
+ paginate: Object.assign(paginate.bind(null, octokit), {
+ iterator: iterator.bind(null, octokit)
+ })
+ };
+}
+paginateRest.VERSION = VERSION;
+export {
+ composePaginateRest,
+ isPaginatingEndpoint,
+ paginateRest,
+ paginatingEndpoints
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js.map b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js.map
new file mode 100644
index 0000000000..2c3413a5b3
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/version.js", "../dist-src/normalize-paginated-list-response.js", "../dist-src/iterator.js", "../dist-src/paginate.js", "../dist-src/compose-paginate.js", "../dist-src/generated/paginating-endpoints.js", "../dist-src/paginating-endpoints.js", "../dist-src/index.js"],
+ "sourcesContent": ["const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "function normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization) return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\nexport {\n normalizePaginatedListResponse\n};\n", "import { normalizePaginatedListResponse } from \"./normalize-paginated-list-response.js\";\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url) return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^<>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409) throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\nexport {\n iterator\n};\n", "import { iterator } from \"./iterator.js\";\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\nexport {\n paginate\n};\n", "import { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nconst composePaginateRest = Object.assign(paginate, {\n iterator\n});\nexport {\n composePaginateRest\n};\n", "const paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/code-security/configurations\",\n \"GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runner-groups\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\",\n \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/attestations/{subject_digest}\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/code-security/configurations\",\n \"GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/copilot/metrics\",\n \"GET /orgs/{org}/copilot/usage\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}\",\n \"GET /orgs/{org}/insights/api/subject-stats\",\n \"GET /orgs/{org}/insights/api/user-stats/{user_id}\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/private-registries\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/metrics\",\n \"GET /orgs/{org}/team/{team_slug}/copilot/usage\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/attestations/{subject_digest}\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/secrets\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/variables\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/attestations/{subject_digest}\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\nexport {\n paginatingEndpoints\n};\n", "import {\n paginatingEndpoints\n} from \"./generated/paginating-endpoints.js\";\nimport { paginatingEndpoints as paginatingEndpoints2 } from \"./generated/paginating-endpoints.js\";\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\nexport {\n isPaginatingEndpoint,\n paginatingEndpoints2 as paginatingEndpoints\n};\n", "import { VERSION } from \"./version.js\";\nimport { paginate } from \"./paginate.js\";\nimport { iterator } from \"./iterator.js\";\nimport { composePaginateRest } from \"./compose-paginate.js\";\nimport {\n isPaginatingEndpoint,\n paginatingEndpoints\n} from \"./paginating-endpoints.js\";\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\nexport {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n};\n"],
+ "mappings": "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ACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC1PA,SAAS,qBAAqB,KAAK;AACjC,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,oBAAoB,SAAS,GAAG;AAAA,EACzC,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACFA,SAAS,aAAa,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM,OAAO,GAAG;AAAA,MACpD,UAAU,SAAS,KAAK,MAAM,OAAO;AAAA,IACvC,CAAC;AAAA,EACH;AACF;AACA,aAAa,UAAU;",
+ "names": []
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
new file mode 100644
index 0000000000..f3a6537aa3
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/compose-paginate.js
@@ -0,0 +1,8 @@
+import { paginate } from "./paginate.js";
+import { iterator } from "./iterator.js";
+const composePaginateRest = Object.assign(paginate, {
+ iterator
+});
+export {
+ composePaginateRest
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
new file mode 100644
index 0000000000..9f2ad98a78
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js
@@ -0,0 +1,258 @@
+const paginatingEndpoints = [
+ "GET /advisories",
+ "GET /app/hook/deliveries",
+ "GET /app/installation-requests",
+ "GET /app/installations",
+ "GET /assignments/{assignment_id}/accepted_assignments",
+ "GET /classrooms",
+ "GET /classrooms/{classroom_id}/assignments",
+ "GET /enterprises/{enterprise}/code-security/configurations",
+ "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories",
+ "GET /enterprises/{enterprise}/dependabot/alerts",
+ "GET /enterprises/{enterprise}/secret-scanning/alerts",
+ "GET /events",
+ "GET /gists",
+ "GET /gists/public",
+ "GET /gists/starred",
+ "GET /gists/{gist_id}/comments",
+ "GET /gists/{gist_id}/commits",
+ "GET /gists/{gist_id}/forks",
+ "GET /installation/repositories",
+ "GET /issues",
+ "GET /licenses",
+ "GET /marketplace_listing/plans",
+ "GET /marketplace_listing/plans/{plan_id}/accounts",
+ "GET /marketplace_listing/stubbed/plans",
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
+ "GET /networks/{owner}/{repo}/events",
+ "GET /notifications",
+ "GET /organizations",
+ "GET /orgs/{org}/actions/cache/usage-by-repository",
+ "GET /orgs/{org}/actions/permissions/repositories",
+ "GET /orgs/{org}/actions/runner-groups",
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories",
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners",
+ "GET /orgs/{org}/actions/runners",
+ "GET /orgs/{org}/actions/secrets",
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/actions/variables",
+ "GET /orgs/{org}/actions/variables/{name}/repositories",
+ "GET /orgs/{org}/attestations/{subject_digest}",
+ "GET /orgs/{org}/blocks",
+ "GET /orgs/{org}/code-scanning/alerts",
+ "GET /orgs/{org}/code-security/configurations",
+ "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories",
+ "GET /orgs/{org}/codespaces",
+ "GET /orgs/{org}/codespaces/secrets",
+ "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/copilot/billing/seats",
+ "GET /orgs/{org}/copilot/metrics",
+ "GET /orgs/{org}/copilot/usage",
+ "GET /orgs/{org}/dependabot/alerts",
+ "GET /orgs/{org}/dependabot/secrets",
+ "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/events",
+ "GET /orgs/{org}/failed_invitations",
+ "GET /orgs/{org}/hooks",
+ "GET /orgs/{org}/hooks/{hook_id}/deliveries",
+ "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}",
+ "GET /orgs/{org}/insights/api/subject-stats",
+ "GET /orgs/{org}/insights/api/user-stats/{user_id}",
+ "GET /orgs/{org}/installations",
+ "GET /orgs/{org}/invitations",
+ "GET /orgs/{org}/invitations/{invitation_id}/teams",
+ "GET /orgs/{org}/issues",
+ "GET /orgs/{org}/members",
+ "GET /orgs/{org}/members/{username}/codespaces",
+ "GET /orgs/{org}/migrations",
+ "GET /orgs/{org}/migrations/{migration_id}/repositories",
+ "GET /orgs/{org}/organization-roles/{role_id}/teams",
+ "GET /orgs/{org}/organization-roles/{role_id}/users",
+ "GET /orgs/{org}/outside_collaborators",
+ "GET /orgs/{org}/packages",
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
+ "GET /orgs/{org}/personal-access-token-requests",
+ "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
+ "GET /orgs/{org}/personal-access-tokens",
+ "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
+ "GET /orgs/{org}/private-registries",
+ "GET /orgs/{org}/projects",
+ "GET /orgs/{org}/properties/values",
+ "GET /orgs/{org}/public_members",
+ "GET /orgs/{org}/repos",
+ "GET /orgs/{org}/rulesets",
+ "GET /orgs/{org}/rulesets/rule-suites",
+ "GET /orgs/{org}/secret-scanning/alerts",
+ "GET /orgs/{org}/security-advisories",
+ "GET /orgs/{org}/team/{team_slug}/copilot/metrics",
+ "GET /orgs/{org}/team/{team_slug}/copilot/usage",
+ "GET /orgs/{org}/teams",
+ "GET /orgs/{org}/teams/{team_slug}/discussions",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
+ "GET /orgs/{org}/teams/{team_slug}/invitations",
+ "GET /orgs/{org}/teams/{team_slug}/members",
+ "GET /orgs/{org}/teams/{team_slug}/projects",
+ "GET /orgs/{org}/teams/{team_slug}/repos",
+ "GET /orgs/{org}/teams/{team_slug}/teams",
+ "GET /projects/columns/{column_id}/cards",
+ "GET /projects/{project_id}/collaborators",
+ "GET /projects/{project_id}/columns",
+ "GET /repos/{owner}/{repo}/actions/artifacts",
+ "GET /repos/{owner}/{repo}/actions/caches",
+ "GET /repos/{owner}/{repo}/actions/organization-secrets",
+ "GET /repos/{owner}/{repo}/actions/organization-variables",
+ "GET /repos/{owner}/{repo}/actions/runners",
+ "GET /repos/{owner}/{repo}/actions/runs",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
+ "GET /repos/{owner}/{repo}/actions/secrets",
+ "GET /repos/{owner}/{repo}/actions/variables",
+ "GET /repos/{owner}/{repo}/actions/workflows",
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
+ "GET /repos/{owner}/{repo}/activity",
+ "GET /repos/{owner}/{repo}/assignees",
+ "GET /repos/{owner}/{repo}/attestations/{subject_digest}",
+ "GET /repos/{owner}/{repo}/branches",
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
+ "GET /repos/{owner}/{repo}/code-scanning/alerts",
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
+ "GET /repos/{owner}/{repo}/code-scanning/analyses",
+ "GET /repos/{owner}/{repo}/codespaces",
+ "GET /repos/{owner}/{repo}/codespaces/devcontainers",
+ "GET /repos/{owner}/{repo}/codespaces/secrets",
+ "GET /repos/{owner}/{repo}/collaborators",
+ "GET /repos/{owner}/{repo}/comments",
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/commits",
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
+ "GET /repos/{owner}/{repo}/commits/{ref}/status",
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
+ "GET /repos/{owner}/{repo}/contributors",
+ "GET /repos/{owner}/{repo}/dependabot/alerts",
+ "GET /repos/{owner}/{repo}/dependabot/secrets",
+ "GET /repos/{owner}/{repo}/deployments",
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
+ "GET /repos/{owner}/{repo}/environments",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables",
+ "GET /repos/{owner}/{repo}/events",
+ "GET /repos/{owner}/{repo}/forks",
+ "GET /repos/{owner}/{repo}/hooks",
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
+ "GET /repos/{owner}/{repo}/invitations",
+ "GET /repos/{owner}/{repo}/issues",
+ "GET /repos/{owner}/{repo}/issues/comments",
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/issues/events",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
+ "GET /repos/{owner}/{repo}/keys",
+ "GET /repos/{owner}/{repo}/labels",
+ "GET /repos/{owner}/{repo}/milestones",
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
+ "GET /repos/{owner}/{repo}/notifications",
+ "GET /repos/{owner}/{repo}/pages/builds",
+ "GET /repos/{owner}/{repo}/projects",
+ "GET /repos/{owner}/{repo}/pulls",
+ "GET /repos/{owner}/{repo}/pulls/comments",
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
+ "GET /repos/{owner}/{repo}/releases",
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
+ "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
+ "GET /repos/{owner}/{repo}/rules/branches/{branch}",
+ "GET /repos/{owner}/{repo}/rulesets",
+ "GET /repos/{owner}/{repo}/rulesets/rule-suites",
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts",
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
+ "GET /repos/{owner}/{repo}/security-advisories",
+ "GET /repos/{owner}/{repo}/stargazers",
+ "GET /repos/{owner}/{repo}/subscribers",
+ "GET /repos/{owner}/{repo}/tags",
+ "GET /repos/{owner}/{repo}/teams",
+ "GET /repos/{owner}/{repo}/topics",
+ "GET /repositories",
+ "GET /search/code",
+ "GET /search/commits",
+ "GET /search/issues",
+ "GET /search/labels",
+ "GET /search/repositories",
+ "GET /search/topics",
+ "GET /search/users",
+ "GET /teams/{team_id}/discussions",
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments",
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+ "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
+ "GET /teams/{team_id}/invitations",
+ "GET /teams/{team_id}/members",
+ "GET /teams/{team_id}/projects",
+ "GET /teams/{team_id}/repos",
+ "GET /teams/{team_id}/teams",
+ "GET /user/blocks",
+ "GET /user/codespaces",
+ "GET /user/codespaces/secrets",
+ "GET /user/emails",
+ "GET /user/followers",
+ "GET /user/following",
+ "GET /user/gpg_keys",
+ "GET /user/installations",
+ "GET /user/installations/{installation_id}/repositories",
+ "GET /user/issues",
+ "GET /user/keys",
+ "GET /user/marketplace_purchases",
+ "GET /user/marketplace_purchases/stubbed",
+ "GET /user/memberships/orgs",
+ "GET /user/migrations",
+ "GET /user/migrations/{migration_id}/repositories",
+ "GET /user/orgs",
+ "GET /user/packages",
+ "GET /user/packages/{package_type}/{package_name}/versions",
+ "GET /user/public_emails",
+ "GET /user/repos",
+ "GET /user/repository_invitations",
+ "GET /user/social_accounts",
+ "GET /user/ssh_signing_keys",
+ "GET /user/starred",
+ "GET /user/subscriptions",
+ "GET /user/teams",
+ "GET /users",
+ "GET /users/{username}/attestations/{subject_digest}",
+ "GET /users/{username}/events",
+ "GET /users/{username}/events/orgs/{org}",
+ "GET /users/{username}/events/public",
+ "GET /users/{username}/followers",
+ "GET /users/{username}/following",
+ "GET /users/{username}/gists",
+ "GET /users/{username}/gpg_keys",
+ "GET /users/{username}/keys",
+ "GET /users/{username}/orgs",
+ "GET /users/{username}/packages",
+ "GET /users/{username}/projects",
+ "GET /users/{username}/received_events",
+ "GET /users/{username}/received_events/public",
+ "GET /users/{username}/repos",
+ "GET /users/{username}/social_accounts",
+ "GET /users/{username}/ssh_signing_keys",
+ "GET /users/{username}/starred",
+ "GET /users/{username}/subscriptions"
+];
+export {
+ paginatingEndpoints
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
new file mode 100644
index 0000000000..02a5b1097b
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/index.js
@@ -0,0 +1,22 @@
+import { VERSION } from "./version.js";
+import { paginate } from "./paginate.js";
+import { iterator } from "./iterator.js";
+import { composePaginateRest } from "./compose-paginate.js";
+import {
+ isPaginatingEndpoint,
+ paginatingEndpoints
+} from "./paginating-endpoints.js";
+function paginateRest(octokit) {
+ return {
+ paginate: Object.assign(paginate.bind(null, octokit), {
+ iterator: iterator.bind(null, octokit)
+ })
+ };
+}
+paginateRest.VERSION = VERSION;
+export {
+ composePaginateRest,
+ isPaginatingEndpoint,
+ paginateRest,
+ paginatingEndpoints
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
new file mode 100644
index 0000000000..24ec2e296d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/iterator.js
@@ -0,0 +1,36 @@
+import { normalizePaginatedListResponse } from "./normalize-paginated-list-response.js";
+function iterator(octokit, route, parameters) {
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
+ const requestMethod = typeof route === "function" ? route : octokit.request;
+ const method = options.method;
+ const headers = options.headers;
+ let url = options.url;
+ return {
+ [Symbol.asyncIterator]: () => ({
+ async next() {
+ if (!url) return { done: true };
+ try {
+ const response = await requestMethod({ method, url, headers });
+ const normalizedResponse = normalizePaginatedListResponse(response);
+ url = ((normalizedResponse.headers.link || "").match(
+ /<([^<>]+)>;\s*rel="next"/
+ ) || [])[1];
+ return { value: normalizedResponse };
+ } catch (error) {
+ if (error.status !== 409) throw error;
+ url = "";
+ return {
+ value: {
+ status: 200,
+ headers: {},
+ data: []
+ }
+ };
+ }
+ }
+ })
+ };
+}
+export {
+ iterator
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
new file mode 100644
index 0000000000..e8cec690b1
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/normalize-paginated-list-response.js
@@ -0,0 +1,30 @@
+function normalizePaginatedListResponse(response) {
+ if (!response.data) {
+ return {
+ ...response,
+ data: []
+ };
+ }
+ const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
+ if (!responseNeedsNormalization) return response;
+ const incompleteResults = response.data.incomplete_results;
+ const repositorySelection = response.data.repository_selection;
+ const totalCount = response.data.total_count;
+ delete response.data.incomplete_results;
+ delete response.data.repository_selection;
+ delete response.data.total_count;
+ const namespaceKey = Object.keys(response.data)[0];
+ const data = response.data[namespaceKey];
+ response.data = data;
+ if (typeof incompleteResults !== "undefined") {
+ response.data.incomplete_results = incompleteResults;
+ }
+ if (typeof repositorySelection !== "undefined") {
+ response.data.repository_selection = repositorySelection;
+ }
+ response.data.total_count = totalCount;
+ return response;
+}
+export {
+ normalizePaginatedListResponse
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
new file mode 100644
index 0000000000..0e888b99f2
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/paginate.js
@@ -0,0 +1,34 @@
+import { iterator } from "./iterator.js";
+function paginate(octokit, route, parameters, mapFn) {
+ if (typeof parameters === "function") {
+ mapFn = parameters;
+ parameters = void 0;
+ }
+ return gather(
+ octokit,
+ [],
+ iterator(octokit, route, parameters)[Symbol.asyncIterator](),
+ mapFn
+ );
+}
+function gather(octokit, results, iterator2, mapFn) {
+ return iterator2.next().then((result) => {
+ if (result.done) {
+ return results;
+ }
+ let earlyExit = false;
+ function done() {
+ earlyExit = true;
+ }
+ results = results.concat(
+ mapFn ? mapFn(result.value, done) : result.value.data
+ );
+ if (earlyExit) {
+ return results;
+ }
+ return gather(octokit, results, iterator2, mapFn);
+ });
+}
+export {
+ paginate
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
new file mode 100644
index 0000000000..f9a110a87e
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/paginating-endpoints.js
@@ -0,0 +1,15 @@
+import {
+ paginatingEndpoints
+} from "./generated/paginating-endpoints.js";
+import { paginatingEndpoints as paginatingEndpoints2 } from "./generated/paginating-endpoints.js";
+function isPaginatingEndpoint(arg) {
+ if (typeof arg === "string") {
+ return paginatingEndpoints.includes(arg);
+ } else {
+ return false;
+ }
+}
+export {
+ isPaginatingEndpoint,
+ paginatingEndpoints2 as paginatingEndpoints
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
new file mode 100644
index 0000000000..98aad311f4
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "11.4.2";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
new file mode 100644
index 0000000000..484eadb25e
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts
@@ -0,0 +1,2 @@
+import type { ComposePaginateInterface } from "./types.js";
+export declare const composePaginateRest: ComposePaginateInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
new file mode 100644
index 0000000000..d6efdfad3d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts
@@ -0,0 +1,1897 @@
+import type { Endpoints } from "@octokit/types";
+export interface PaginatingEndpoints {
+ /**
+ * @see https://docs.github.com/rest/security-advisories/global-advisories#list-global-security-advisories
+ */
+ "GET /advisories": {
+ parameters: Endpoints["GET /advisories"]["parameters"];
+ response: Endpoints["GET /advisories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/webhooks#list-deliveries-for-an-app-webhook
+ */
+ "GET /app/hook/deliveries": {
+ parameters: Endpoints["GET /app/hook/deliveries"]["parameters"];
+ response: Endpoints["GET /app/hook/deliveries"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/apps#list-installation-requests-for-the-authenticated-app
+ */
+ "GET /app/installation-requests": {
+ parameters: Endpoints["GET /app/installation-requests"]["parameters"];
+ response: Endpoints["GET /app/installation-requests"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/enterprise-server@3.9/rest/apps/apps#list-installations-for-the-authenticated-app
+ */
+ "GET /app/installations": {
+ parameters: Endpoints["GET /app/installations"]["parameters"];
+ response: Endpoints["GET /app/installations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/classroom/classroom#list-accepted-assignments-for-an-assignment
+ */
+ "GET /assignments/{assignment_id}/accepted_assignments": {
+ parameters: Endpoints["GET /assignments/{assignment_id}/accepted_assignments"]["parameters"];
+ response: Endpoints["GET /assignments/{assignment_id}/accepted_assignments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/classroom/classroom#list-classrooms
+ */
+ "GET /classrooms": {
+ parameters: Endpoints["GET /classrooms"]["parameters"];
+ response: Endpoints["GET /classrooms"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/classroom/classroom#list-assignments-for-a-classroom
+ */
+ "GET /classrooms/{classroom_id}/assignments": {
+ parameters: Endpoints["GET /classrooms/{classroom_id}/assignments"]["parameters"];
+ response: Endpoints["GET /classrooms/{classroom_id}/assignments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/code-security/configurations": {
+ parameters: Endpoints["GET /enterprises/{enterprise}/code-security/configurations"]["parameters"];
+ response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-an-enterprise-code-security-configuration
+ */
+ "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories": {
+ parameters: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"]["parameters"];
+ response: Endpoints["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/dependabot/alerts": {
+ parameters: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["parameters"];
+ response: Endpoints["GET /enterprises/{enterprise}/dependabot/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/secret-scanning/alerts": {
+ parameters: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["parameters"];
+ response: Endpoints["GET /enterprises/{enterprise}/secret-scanning/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-public-events
+ */
+ "GET /events": {
+ parameters: Endpoints["GET /events"]["parameters"];
+ response: Endpoints["GET /events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/gists#list-gists-for-the-authenticated-user
+ */
+ "GET /gists": {
+ parameters: Endpoints["GET /gists"]["parameters"];
+ response: Endpoints["GET /gists"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/gists#list-public-gists
+ */
+ "GET /gists/public": {
+ parameters: Endpoints["GET /gists/public"]["parameters"];
+ response: Endpoints["GET /gists/public"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/gists#list-starred-gists
+ */
+ "GET /gists/starred": {
+ parameters: Endpoints["GET /gists/starred"]["parameters"];
+ response: Endpoints["GET /gists/starred"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/comments#list-gist-comments
+ */
+ "GET /gists/{gist_id}/comments": {
+ parameters: Endpoints["GET /gists/{gist_id}/comments"]["parameters"];
+ response: Endpoints["GET /gists/{gist_id}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/gists#list-gist-commits
+ */
+ "GET /gists/{gist_id}/commits": {
+ parameters: Endpoints["GET /gists/{gist_id}/commits"]["parameters"];
+ response: Endpoints["GET /gists/{gist_id}/commits"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/gists#list-gist-forks
+ */
+ "GET /gists/{gist_id}/forks": {
+ parameters: Endpoints["GET /gists/{gist_id}/forks"]["parameters"];
+ response: Endpoints["GET /gists/{gist_id}/forks"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-app-installation
+ */
+ "GET /installation/repositories": {
+ parameters: Endpoints["GET /installation/repositories"]["parameters"];
+ response: Endpoints["GET /installation/repositories"]["response"] & {
+ data: Endpoints["GET /installation/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/issues#list-issues-assigned-to-the-authenticated-user
+ */
+ "GET /issues": {
+ parameters: Endpoints["GET /issues"]["parameters"];
+ response: Endpoints["GET /issues"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/licenses/licenses#get-all-commonly-used-licenses
+ */
+ "GET /licenses": {
+ parameters: Endpoints["GET /licenses"]["parameters"];
+ response: Endpoints["GET /licenses"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/marketplace#list-plans
+ */
+ "GET /marketplace_listing/plans": {
+ parameters: Endpoints["GET /marketplace_listing/plans"]["parameters"];
+ response: Endpoints["GET /marketplace_listing/plans"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan
+ */
+ "GET /marketplace_listing/plans/{plan_id}/accounts": {
+ parameters: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["parameters"];
+ response: Endpoints["GET /marketplace_listing/plans/{plan_id}/accounts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/marketplace#list-plans-stubbed
+ */
+ "GET /marketplace_listing/stubbed/plans": {
+ parameters: Endpoints["GET /marketplace_listing/stubbed/plans"]["parameters"];
+ response: Endpoints["GET /marketplace_listing/stubbed/plans"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/marketplace#list-accounts-for-a-plan-stubbed
+ */
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": {
+ parameters: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["parameters"];
+ response: Endpoints["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-network-of-repositories
+ */
+ "GET /networks/{owner}/{repo}/events": {
+ parameters: Endpoints["GET /networks/{owner}/{repo}/events"]["parameters"];
+ response: Endpoints["GET /networks/{owner}/{repo}/events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user
+ */
+ "GET /notifications": {
+ parameters: Endpoints["GET /notifications"]["parameters"];
+ response: Endpoints["GET /notifications"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/orgs#list-organizations
+ */
+ "GET /organizations": {
+ parameters: Endpoints["GET /organizations"]["parameters"];
+ response: Endpoints["GET /organizations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization
+ */
+ "GET /orgs/{org}/actions/cache/usage-by-repository": {
+ parameters: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/cache/usage-by-repository"]["response"]["data"]["repository_cache_usages"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization
+ */
+ "GET /orgs/{org}/actions/permissions/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/permissions/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-self-hosted-runner-groups-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups": {
+ parameters: Endpoints["GET /orgs/{org}/actions/runner-groups"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/runner-groups"]["response"]["data"]["runner_groups"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-repository-access-to-a-self-hosted-runner-group-in-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/self-hosted-runner-groups#list-self-hosted-runners-in-a-group-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": {
+ parameters: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners"]["response"]["data"]["runners"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runners": {
+ parameters: Endpoints["GET /orgs/{org}/actions/runners"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/runners"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/runners"]["response"]["data"]["runners"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/secrets#list-organization-secrets
+ */
+ "GET /orgs/{org}/actions/secrets": {
+ parameters: Endpoints["GET /orgs/{org}/actions/secrets"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/secrets"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/secrets#list-selected-repositories-for-an-organization-secret
+ */
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/variables#list-organization-variables
+ */
+ "GET /orgs/{org}/actions/variables": {
+ parameters: Endpoints["GET /orgs/{org}/actions/variables"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/variables"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/variables"]["response"]["data"]["variables"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/variables#list-selected-repositories-for-an-organization-variable
+ */
+ "GET /orgs/{org}/actions/variables/{name}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/actions/variables/{name}/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/orgs#list-attestations
+ */
+ "GET /orgs/{org}/attestations/{subject_digest}": {
+ parameters: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/attestations/{subject_digest}"]["response"]["data"]["attestations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/blocking#list-users-blocked-by-an-organization
+ */
+ "GET /orgs/{org}/blocks": {
+ parameters: Endpoints["GET /orgs/{org}/blocks"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/blocks"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization
+ */
+ "GET /orgs/{org}/code-scanning/alerts": {
+ parameters: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/code-scanning/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-organization
+ */
+ "GET /orgs/{org}/code-security/configurations": {
+ parameters: Endpoints["GET /orgs/{org}/code-security/configurations"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/code-security/configurations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-a-code-security-configuration
+ */
+ "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-the-organization
+ */
+ "GET /orgs/{org}/codespaces": {
+ parameters: Endpoints["GET /orgs/{org}/codespaces"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/codespaces"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/codespaces"]["response"]["data"]["codespaces"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/organization-secrets#list-organization-secrets
+ */
+ "GET /orgs/{org}/codespaces/secrets": {
+ parameters: Endpoints["GET /orgs/{org}/codespaces/secrets"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/codespaces/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/organization-secrets#list-selected-repositories-for-an-organization-secret
+ */
+ "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization
+ */
+ "GET /orgs/{org}/copilot/billing/seats": {
+ parameters: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/copilot/billing/seats"]["response"]["data"]["seats"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-an-organization
+ */
+ "GET /orgs/{org}/copilot/metrics": {
+ parameters: Endpoints["GET /orgs/{org}/copilot/metrics"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/copilot/metrics"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/copilot/copilot-usage#get-a-summary-of-copilot-usage-for-organization-members
+ */
+ "GET /orgs/{org}/copilot/usage": {
+ parameters: Endpoints["GET /orgs/{org}/copilot/usage"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/copilot/usage"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization
+ */
+ "GET /orgs/{org}/dependabot/alerts": {
+ parameters: Endpoints["GET /orgs/{org}/dependabot/alerts"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/dependabot/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/dependabot/secrets#list-organization-secrets
+ */
+ "GET /orgs/{org}/dependabot/secrets": {
+ parameters: Endpoints["GET /orgs/{org}/dependabot/secrets"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/dependabot/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/dependabot/secrets#list-selected-repositories-for-an-organization-secret
+ */
+ "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-public-organization-events
+ */
+ "GET /orgs/{org}/events": {
+ parameters: Endpoints["GET /orgs/{org}/events"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/members#list-failed-organization-invitations
+ */
+ "GET /orgs/{org}/failed_invitations": {
+ parameters: Endpoints["GET /orgs/{org}/failed_invitations"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/failed_invitations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/webhooks#list-organization-webhooks
+ */
+ "GET /orgs/{org}/hooks": {
+ parameters: Endpoints["GET /orgs/{org}/hooks"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/hooks"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/webhooks#list-deliveries-for-an-organization-webhook
+ */
+ "GET /orgs/{org}/hooks/{hook_id}/deliveries": {
+ parameters: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/hooks/{hook_id}/deliveries"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/api-insights#get-route-stats-by-actor
+ */
+ "GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}": {
+ parameters: Endpoints["GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/api-insights#get-subject-stats
+ */
+ "GET /orgs/{org}/insights/api/subject-stats": {
+ parameters: Endpoints["GET /orgs/{org}/insights/api/subject-stats"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/insights/api/subject-stats"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/api-insights#get-user-stats
+ */
+ "GET /orgs/{org}/insights/api/user-stats/{user_id}": {
+ parameters: Endpoints["GET /orgs/{org}/insights/api/user-stats/{user_id}"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/insights/api/user-stats/{user_id}"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/orgs#list-app-installations-for-an-organization
+ */
+ "GET /orgs/{org}/installations": {
+ parameters: Endpoints["GET /orgs/{org}/installations"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/installations"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/installations"]["response"]["data"]["installations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/members#list-pending-organization-invitations
+ */
+ "GET /orgs/{org}/invitations": {
+ parameters: Endpoints["GET /orgs/{org}/invitations"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/invitations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/members#list-organization-invitation-teams
+ */
+ "GET /orgs/{org}/invitations/{invitation_id}/teams": {
+ parameters: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/invitations/{invitation_id}/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/issues#list-organization-issues-assigned-to-the-authenticated-user
+ */
+ "GET /orgs/{org}/issues": {
+ parameters: Endpoints["GET /orgs/{org}/issues"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/issues"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/members#list-organization-members
+ */
+ "GET /orgs/{org}/members": {
+ parameters: Endpoints["GET /orgs/{org}/members"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/members"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/organizations#list-codespaces-for-a-user-in-organization
+ */
+ "GET /orgs/{org}/members/{username}/codespaces": {
+ parameters: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/members/{username}/codespaces"]["response"]["data"]["codespaces"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/migrations/orgs#list-organization-migrations
+ */
+ "GET /orgs/{org}/migrations": {
+ parameters: Endpoints["GET /orgs/{org}/migrations"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/migrations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/migrations/orgs#list-repositories-in-an-organization-migration
+ */
+ "GET /orgs/{org}/migrations/{migration_id}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/migrations/{migration_id}/repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/organization-roles#list-teams-that-are-assigned-to-an-organization-role
+ */
+ "GET /orgs/{org}/organization-roles/{role_id}/teams": {
+ parameters: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/teams"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/organization-roles#list-users-that-are-assigned-to-an-organization-role
+ */
+ "GET /orgs/{org}/organization-roles/{role_id}/users": {
+ parameters: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/users"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/organization-roles/{role_id}/users"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/outside-collaborators#list-outside-collaborators-for-an-organization
+ */
+ "GET /orgs/{org}/outside_collaborators": {
+ parameters: Endpoints["GET /orgs/{org}/outside_collaborators"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/outside_collaborators"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/packages/packages#list-packages-for-an-organization
+ */
+ "GET /orgs/{org}/packages": {
+ parameters: Endpoints["GET /orgs/{org}/packages"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/packages"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization
+ */
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": {
+ parameters: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens
+ */
+ "GET /orgs/{org}/personal-access-token-requests": {
+ parameters: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/personal-access-token-requests"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-requested-to-be-accessed-by-a-fine-grained-personal-access-token
+ */
+ "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-fine-grained-personal-access-tokens-with-access-to-organization-resources
+ */
+ "GET /orgs/{org}/personal-access-tokens": {
+ parameters: Endpoints["GET /orgs/{org}/personal-access-tokens"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/personal-access-tokens"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/personal-access-tokens#list-repositories-a-fine-grained-personal-access-token-has-access-to
+ */
+ "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories": {
+ parameters: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/private-registries/organization-configurations#list-private-registries-for-an-organization
+ */
+ "GET /orgs/{org}/private-registries": {
+ parameters: Endpoints["GET /orgs/{org}/private-registries"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/private-registries"]["response"] & {
+ data: Endpoints["GET /orgs/{org}/private-registries"]["response"]["data"]["configurations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/projects/projects#list-organization-projects
+ */
+ "GET /orgs/{org}/projects": {
+ parameters: Endpoints["GET /orgs/{org}/projects"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/projects"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/custom-properties#list-custom-property-values-for-organization-repositories
+ */
+ "GET /orgs/{org}/properties/values": {
+ parameters: Endpoints["GET /orgs/{org}/properties/values"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/properties/values"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/members#list-public-organization-members
+ */
+ "GET /orgs/{org}/public_members": {
+ parameters: Endpoints["GET /orgs/{org}/public_members"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/public_members"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-organization-repositories
+ */
+ "GET /orgs/{org}/repos": {
+ parameters: Endpoints["GET /orgs/{org}/repos"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/repos"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets
+ */
+ "GET /orgs/{org}/rulesets": {
+ parameters: Endpoints["GET /orgs/{org}/rulesets"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/rulesets"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/rule-suites#list-organization-rule-suites
+ */
+ "GET /orgs/{org}/rulesets/rule-suites": {
+ parameters: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/rulesets/rule-suites"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-an-organization
+ */
+ "GET /orgs/{org}/secret-scanning/alerts": {
+ parameters: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/secret-scanning/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories-for-an-organization
+ */
+ "GET /orgs/{org}/security-advisories": {
+ parameters: Endpoints["GET /orgs/{org}/security-advisories"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/security-advisories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-a-team
+ */
+ "GET /orgs/{org}/team/{team_slug}/copilot/metrics": {
+ parameters: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/metrics"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/metrics"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/copilot/copilot-usage#get-a-summary-of-copilot-usage-for-a-team
+ */
+ "GET /orgs/{org}/team/{team_slug}/copilot/usage": {
+ parameters: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/usage"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/team/{team_slug}/copilot/usage"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-teams
+ */
+ "GET /orgs/{org}/teams": {
+ parameters: Endpoints["GET /orgs/{org}/teams"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/discussions#list-discussions
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations
+ */
+ "GET /orgs/{org}/teams/{team_slug}/invitations": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/invitations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/members#list-team-members
+ */
+ "GET /orgs/{org}/teams/{team_slug}/members": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/members"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-team-projects
+ */
+ "GET /orgs/{org}/teams/{team_slug}/projects": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/projects"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-team-repositories
+ */
+ "GET /orgs/{org}/teams/{team_slug}/repos": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/repos"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-child-teams
+ */
+ "GET /orgs/{org}/teams/{team_slug}/teams": {
+ parameters: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["parameters"];
+ response: Endpoints["GET /orgs/{org}/teams/{team_slug}/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/projects/cards#list-project-cards
+ */
+ "GET /projects/columns/{column_id}/cards": {
+ parameters: Endpoints["GET /projects/columns/{column_id}/cards"]["parameters"];
+ response: Endpoints["GET /projects/columns/{column_id}/cards"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/projects/collaborators#list-project-collaborators
+ */
+ "GET /projects/{project_id}/collaborators": {
+ parameters: Endpoints["GET /projects/{project_id}/collaborators"]["parameters"];
+ response: Endpoints["GET /projects/{project_id}/collaborators"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/projects/columns#list-project-columns
+ */
+ "GET /projects/{project_id}/columns": {
+ parameters: Endpoints["GET /projects/{project_id}/columns"]["parameters"];
+ response: Endpoints["GET /projects/{project_id}/columns"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/artifacts#list-artifacts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/artifacts": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/artifacts"]["response"]["data"]["artifacts"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/caches": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/caches"]["response"]["data"]["actions_caches"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/secrets#list-repository-organization-secrets
+ */
+ "GET /repos/{owner}/{repo}/actions/organization-secrets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/organization-secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/variables#list-repository-organization-variables
+ */
+ "GET /repos/{owner}/{repo}/actions/organization-variables": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/organization-variables"]["response"]["data"]["variables"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/runners": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/runners"]["response"]["data"]["runners"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/runs": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/runs"]["response"]["data"]["workflow_runs"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/artifacts#list-workflow-run-artifacts
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"]["response"]["data"]["artifacts"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run-attempt
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"]["response"]["data"]["jobs"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"]["response"]["data"]["jobs"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/secrets#list-repository-secrets
+ */
+ "GET /repos/{owner}/{repo}/actions/secrets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/variables#list-repository-variables
+ */
+ "GET /repos/{owner}/{repo}/actions/variables": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/variables"]["response"]["data"]["variables"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/workflows#list-repository-workflows
+ */
+ "GET /repos/{owner}/{repo}/actions/workflows": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows"]["response"]["data"]["workflows"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow
+ */
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"]["response"]["data"]["workflow_runs"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-repository-activities
+ */
+ "GET /repos/{owner}/{repo}/activity": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/activity"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/activity"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/assignees#list-assignees
+ */
+ "GET /repos/{owner}/{repo}/assignees": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/assignees"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/assignees"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-attestations
+ */
+ "GET /repos/{owner}/{repo}/attestations/{subject_digest}": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/attestations/{subject_digest}"]["response"]["data"]["attestations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/branches/branches#list-branches
+ */
+ "GET /repos/{owner}/{repo}/branches": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/branches"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/branches"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/checks/runs#list-check-run-annotations
+ */
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/checks/runs#list-check-runs-in-a-check-suite
+ */
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"]["response"]["data"]["check_runs"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/alerts": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/analyses": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/code-scanning/analyses"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-in-a-repository-for-the-authenticated-user
+ */
+ "GET /repos/{owner}/{repo}/codespaces": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/codespaces"]["response"]["data"]["codespaces"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/codespaces#list-devcontainer-configurations-in-a-repository-for-the-authenticated-user
+ */
+ "GET /repos/{owner}/{repo}/codespaces/devcontainers": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/codespaces/devcontainers"]["response"]["data"]["devcontainers"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/repository-secrets#list-repository-secrets
+ */
+ "GET /repos/{owner}/{repo}/codespaces/secrets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/codespaces/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators
+ */
+ "GET /repos/{owner}/{repo}/collaborators": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/collaborators"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/commits/comments#list-commit-comments-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-commit-comment
+ */
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/commits/commits#list-commits
+ */
+ "GET /repos/{owner}/{repo}/commits": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/commits/comments#list-commit-comments
+ */
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit
+ */
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/checks/runs#list-check-runs-for-a-git-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"]["response"]["data"]["check_runs"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/checks/suites#list-check-suites-for-a-git-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"]["response"]["data"]["check_suites"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/commits/statuses#get-the-combined-status-for-a-specific-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/status": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/status"]["response"]["data"]["statuses"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/commits/statuses#list-commit-statuses-for-a-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/commits/{ref}/statuses"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-repository-contributors
+ */
+ "GET /repos/{owner}/{repo}/contributors": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/contributors"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/contributors"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/dependabot/alerts": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/dependabot/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/dependabot/secrets#list-repository-secrets
+ */
+ "GET /repos/{owner}/{repo}/dependabot/secrets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/dependabot/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/deployments/deployments#list-deployments
+ */
+ "GET /repos/{owner}/{repo}/deployments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/deployments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/deployments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/deployments/statuses#list-deployment-statuses
+ */
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/deployments/environments#list-environments
+ */
+ "GET /repos/{owner}/{repo}/environments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/environments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/environments"]["response"]["data"]["environments"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/deployments/branch-policies#list-deployment-branch-policies
+ */
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"]["response"]["data"]["branch_policies"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/deployments/protection-rules#list-custom-deployment-rule-integrations-available-for-an-environment
+ */
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"]["response"]["data"]["available_custom_deployment_protection_rule_integrations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/secrets#list-environment-secrets
+ */
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/actions/variables#list-environment-variables
+ */
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/variables": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"]["response"]["data"]["variables"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-repository-events
+ */
+ "GET /repos/{owner}/{repo}/events": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/events"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/forks#list-forks
+ */
+ "GET /repos/{owner}/{repo}/forks": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/forks"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/forks"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/webhooks#list-repository-webhooks
+ */
+ "GET /repos/{owner}/{repo}/hooks": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/hooks"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/hooks"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/webhooks#list-deliveries-for-a-repository-webhook
+ */
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations
+ */
+ "GET /repos/{owner}/{repo}/invitations": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/invitations"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/invitations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/issues#list-repository-issues
+ */
+ "GET /repos/{owner}/{repo}/issues": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/comments#list-issue-comments-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/issues/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue-comment
+ */
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/issues/events": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/comments#list-issue-comments
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/events#list-issue-events
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/events": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/labels#list-labels-for-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/sub-issues#list-sub-issues
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/timeline#list-timeline-events-for-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/deploy-keys/deploy-keys#list-deploy-keys
+ */
+ "GET /repos/{owner}/{repo}/keys": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/keys"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/labels#list-labels-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/labels": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/labels"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/labels"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/milestones#list-milestones
+ */
+ "GET /repos/{owner}/{repo}/milestones": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/milestones"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/milestones"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/labels#list-labels-for-issues-in-a-milestone
+ */
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user
+ */
+ "GET /repos/{owner}/{repo}/notifications": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/notifications"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/notifications"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pages/pages#list-apiname-pages-builds
+ */
+ "GET /repos/{owner}/{repo}/pages/builds": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pages/builds"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/projects/projects#list-repository-projects
+ */
+ "GET /repos/{owner}/{repo}/projects": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/projects"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/projects"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests
+ */
+ "GET /repos/{owner}/{repo}/pulls": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/comments#list-review-comments-in-a-repository
+ */
+ "GET /repos/{owner}/{repo}/pulls/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-pull-request-review-comment
+ */
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/comments#list-review-comments-on-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/pulls#list-pull-requests-files
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/reviews#list-reviews-for-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/pulls/reviews#list-comments-for-a-pull-request-review
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/releases/releases#list-releases
+ */
+ "GET /repos/{owner}/{repo}/releases": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/releases"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/releases"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/releases/assets#list-release-assets
+ */
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/assets"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-release
+ */
+ "GET /repos/{owner}/{repo}/releases/{release_id}/reactions": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/rules#get-rules-for-a-branch
+ */
+ "GET /repos/{owner}/{repo}/rules/branches/{branch}": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/rules/branches/{branch}"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/rules#get-all-repository-rulesets
+ */
+ "GET /repos/{owner}/{repo}/rulesets": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/rulesets"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/rule-suites#list-repository-rule-suites
+ */
+ "GET /repos/{owner}/{repo}/rulesets/rule-suites": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/rulesets/rule-suites"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-secret-scanning-alerts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/secret-scanning/secret-scanning#list-locations-for-a-secret-scanning-alert
+ */
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/security-advisories/repository-advisories#list-repository-security-advisories
+ */
+ "GET /repos/{owner}/{repo}/security-advisories": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/security-advisories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/starring#list-stargazers
+ */
+ "GET /repos/{owner}/{repo}/stargazers": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/stargazers"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/watching#list-watchers
+ */
+ "GET /repos/{owner}/{repo}/subscribers": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/subscribers"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-repository-tags
+ */
+ "GET /repos/{owner}/{repo}/tags": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/tags"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/tags"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-repository-teams
+ */
+ "GET /repos/{owner}/{repo}/teams": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/teams"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#get-all-repository-topics
+ */
+ "GET /repos/{owner}/{repo}/topics": {
+ parameters: Endpoints["GET /repos/{owner}/{repo}/topics"]["parameters"];
+ response: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"] & {
+ data: Endpoints["GET /repos/{owner}/{repo}/topics"]["response"]["data"]["names"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-public-repositories
+ */
+ "GET /repositories": {
+ parameters: Endpoints["GET /repositories"]["parameters"];
+ response: Endpoints["GET /repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-code
+ */
+ "GET /search/code": {
+ parameters: Endpoints["GET /search/code"]["parameters"];
+ response: Endpoints["GET /search/code"]["response"] & {
+ data: Endpoints["GET /search/code"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-commits
+ */
+ "GET /search/commits": {
+ parameters: Endpoints["GET /search/commits"]["parameters"];
+ response: Endpoints["GET /search/commits"]["response"] & {
+ data: Endpoints["GET /search/commits"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-issues-and-pull-requests
+ */
+ "GET /search/issues": {
+ parameters: Endpoints["GET /search/issues"]["parameters"];
+ response: Endpoints["GET /search/issues"]["response"] & {
+ data: Endpoints["GET /search/issues"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-labels
+ */
+ "GET /search/labels": {
+ parameters: Endpoints["GET /search/labels"]["parameters"];
+ response: Endpoints["GET /search/labels"]["response"] & {
+ data: Endpoints["GET /search/labels"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-repositories
+ */
+ "GET /search/repositories": {
+ parameters: Endpoints["GET /search/repositories"]["parameters"];
+ response: Endpoints["GET /search/repositories"]["response"] & {
+ data: Endpoints["GET /search/repositories"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-topics
+ */
+ "GET /search/topics": {
+ parameters: Endpoints["GET /search/topics"]["parameters"];
+ response: Endpoints["GET /search/topics"]["response"] & {
+ data: Endpoints["GET /search/topics"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/search/search#search-users
+ */
+ "GET /search/users": {
+ parameters: Endpoints["GET /search/users"]["parameters"];
+ response: Endpoints["GET /search/users"]["response"] & {
+ data: Endpoints["GET /search/users"]["response"]["data"]["items"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/discussions#list-discussions-legacy
+ */
+ "GET /teams/{team_id}/discussions": {
+ parameters: Endpoints["GET /teams/{team_id}/discussions"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/discussions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/discussion-comments#list-discussion-comments-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments": {
+ parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": {
+ parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/reactions": {
+ parameters: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/discussions/{discussion_number}/reactions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/members#list-pending-team-invitations-legacy
+ */
+ "GET /teams/{team_id}/invitations": {
+ parameters: Endpoints["GET /teams/{team_id}/invitations"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/invitations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/members#list-team-members-legacy
+ */
+ "GET /teams/{team_id}/members": {
+ parameters: Endpoints["GET /teams/{team_id}/members"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/members"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-team-projects-legacy
+ */
+ "GET /teams/{team_id}/projects": {
+ parameters: Endpoints["GET /teams/{team_id}/projects"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/projects"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-team-repositories-legacy
+ */
+ "GET /teams/{team_id}/repos": {
+ parameters: Endpoints["GET /teams/{team_id}/repos"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/repos"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-child-teams-legacy
+ */
+ "GET /teams/{team_id}/teams": {
+ parameters: Endpoints["GET /teams/{team_id}/teams"]["parameters"];
+ response: Endpoints["GET /teams/{team_id}/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/blocking#list-users-blocked-by-the-authenticated-user
+ */
+ "GET /user/blocks": {
+ parameters: Endpoints["GET /user/blocks"]["parameters"];
+ response: Endpoints["GET /user/blocks"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/codespaces#list-codespaces-for-the-authenticated-user
+ */
+ "GET /user/codespaces": {
+ parameters: Endpoints["GET /user/codespaces"]["parameters"];
+ response: Endpoints["GET /user/codespaces"]["response"] & {
+ data: Endpoints["GET /user/codespaces"]["response"]["data"]["codespaces"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/codespaces/secrets#list-secrets-for-the-authenticated-user
+ */
+ "GET /user/codespaces/secrets": {
+ parameters: Endpoints["GET /user/codespaces/secrets"]["parameters"];
+ response: Endpoints["GET /user/codespaces/secrets"]["response"] & {
+ data: Endpoints["GET /user/codespaces/secrets"]["response"]["data"]["secrets"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/users/emails#list-email-addresses-for-the-authenticated-user
+ */
+ "GET /user/emails": {
+ parameters: Endpoints["GET /user/emails"]["parameters"];
+ response: Endpoints["GET /user/emails"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/followers#list-followers-of-the-authenticated-user
+ */
+ "GET /user/followers": {
+ parameters: Endpoints["GET /user/followers"]["parameters"];
+ response: Endpoints["GET /user/followers"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/followers#list-the-people-the-authenticated-user-follows
+ */
+ "GET /user/following": {
+ parameters: Endpoints["GET /user/following"]["parameters"];
+ response: Endpoints["GET /user/following"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-the-authenticated-user
+ */
+ "GET /user/gpg_keys": {
+ parameters: Endpoints["GET /user/gpg_keys"]["parameters"];
+ response: Endpoints["GET /user/gpg_keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/installations#list-app-installations-accessible-to-the-user-access-token
+ */
+ "GET /user/installations": {
+ parameters: Endpoints["GET /user/installations"]["parameters"];
+ response: Endpoints["GET /user/installations"]["response"] & {
+ data: Endpoints["GET /user/installations"]["response"]["data"]["installations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/installations#list-repositories-accessible-to-the-user-access-token
+ */
+ "GET /user/installations/{installation_id}/repositories": {
+ parameters: Endpoints["GET /user/installations/{installation_id}/repositories"]["parameters"];
+ response: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"] & {
+ data: Endpoints["GET /user/installations/{installation_id}/repositories"]["response"]["data"]["repositories"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/issues/issues#list-user-account-issues-assigned-to-the-authenticated-user
+ */
+ "GET /user/issues": {
+ parameters: Endpoints["GET /user/issues"]["parameters"];
+ response: Endpoints["GET /user/issues"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/keys#list-public-ssh-keys-for-the-authenticated-user
+ */
+ "GET /user/keys": {
+ parameters: Endpoints["GET /user/keys"]["parameters"];
+ response: Endpoints["GET /user/keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user
+ */
+ "GET /user/marketplace_purchases": {
+ parameters: Endpoints["GET /user/marketplace_purchases"]["parameters"];
+ response: Endpoints["GET /user/marketplace_purchases"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/apps/marketplace#list-subscriptions-for-the-authenticated-user-stubbed
+ */
+ "GET /user/marketplace_purchases/stubbed": {
+ parameters: Endpoints["GET /user/marketplace_purchases/stubbed"]["parameters"];
+ response: Endpoints["GET /user/marketplace_purchases/stubbed"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/members#list-organization-memberships-for-the-authenticated-user
+ */
+ "GET /user/memberships/orgs": {
+ parameters: Endpoints["GET /user/memberships/orgs"]["parameters"];
+ response: Endpoints["GET /user/memberships/orgs"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/migrations/users#list-user-migrations
+ */
+ "GET /user/migrations": {
+ parameters: Endpoints["GET /user/migrations"]["parameters"];
+ response: Endpoints["GET /user/migrations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/migrations/users#list-repositories-for-a-user-migration
+ */
+ "GET /user/migrations/{migration_id}/repositories": {
+ parameters: Endpoints["GET /user/migrations/{migration_id}/repositories"]["parameters"];
+ response: Endpoints["GET /user/migrations/{migration_id}/repositories"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user
+ */
+ "GET /user/orgs": {
+ parameters: Endpoints["GET /user/orgs"]["parameters"];
+ response: Endpoints["GET /user/orgs"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/packages/packages#list-packages-for-the-authenticated-users-namespace
+ */
+ "GET /user/packages": {
+ parameters: Endpoints["GET /user/packages"]["parameters"];
+ response: Endpoints["GET /user/packages"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-the-authenticated-user
+ */
+ "GET /user/packages/{package_type}/{package_name}/versions": {
+ parameters: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["parameters"];
+ response: Endpoints["GET /user/packages/{package_type}/{package_name}/versions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/emails#list-public-email-addresses-for-the-authenticated-user
+ */
+ "GET /user/public_emails": {
+ parameters: Endpoints["GET /user/public_emails"]["parameters"];
+ response: Endpoints["GET /user/public_emails"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-repositories-for-the-authenticated-user
+ */
+ "GET /user/repos": {
+ parameters: Endpoints["GET /user/repos"]["parameters"];
+ response: Endpoints["GET /user/repos"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/collaborators/invitations#list-repository-invitations-for-the-authenticated-user
+ */
+ "GET /user/repository_invitations": {
+ parameters: Endpoints["GET /user/repository_invitations"]["parameters"];
+ response: Endpoints["GET /user/repository_invitations"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-the-authenticated-user
+ */
+ "GET /user/social_accounts": {
+ parameters: Endpoints["GET /user/social_accounts"]["parameters"];
+ response: Endpoints["GET /user/social_accounts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-the-authenticated-user
+ */
+ "GET /user/ssh_signing_keys": {
+ parameters: Endpoints["GET /user/ssh_signing_keys"]["parameters"];
+ response: Endpoints["GET /user/ssh_signing_keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-the-authenticated-user
+ */
+ "GET /user/starred": {
+ parameters: Endpoints["GET /user/starred"]["parameters"];
+ response: Endpoints["GET /user/starred"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-the-authenticated-user
+ */
+ "GET /user/subscriptions": {
+ parameters: Endpoints["GET /user/subscriptions"]["parameters"];
+ response: Endpoints["GET /user/subscriptions"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/teams/teams#list-teams-for-the-authenticated-user
+ */
+ "GET /user/teams": {
+ parameters: Endpoints["GET /user/teams"]["parameters"];
+ response: Endpoints["GET /user/teams"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/users#list-users
+ */
+ "GET /users": {
+ parameters: Endpoints["GET /users"]["parameters"];
+ response: Endpoints["GET /users"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/attestations#list-attestations
+ */
+ "GET /users/{username}/attestations/{subject_digest}": {
+ parameters: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["parameters"];
+ response: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["response"] & {
+ data: Endpoints["GET /users/{username}/attestations/{subject_digest}"]["response"]["data"]["attestations"];
+ };
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-events-for-the-authenticated-user
+ */
+ "GET /users/{username}/events": {
+ parameters: Endpoints["GET /users/{username}/events"]["parameters"];
+ response: Endpoints["GET /users/{username}/events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-organization-events-for-the-authenticated-user
+ */
+ "GET /users/{username}/events/orgs/{org}": {
+ parameters: Endpoints["GET /users/{username}/events/orgs/{org}"]["parameters"];
+ response: Endpoints["GET /users/{username}/events/orgs/{org}"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-public-events-for-a-user
+ */
+ "GET /users/{username}/events/public": {
+ parameters: Endpoints["GET /users/{username}/events/public"]["parameters"];
+ response: Endpoints["GET /users/{username}/events/public"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/followers#list-followers-of-a-user
+ */
+ "GET /users/{username}/followers": {
+ parameters: Endpoints["GET /users/{username}/followers"]["parameters"];
+ response: Endpoints["GET /users/{username}/followers"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/followers#list-the-people-a-user-follows
+ */
+ "GET /users/{username}/following": {
+ parameters: Endpoints["GET /users/{username}/following"]["parameters"];
+ response: Endpoints["GET /users/{username}/following"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/gists/gists#list-gists-for-a-user
+ */
+ "GET /users/{username}/gists": {
+ parameters: Endpoints["GET /users/{username}/gists"]["parameters"];
+ response: Endpoints["GET /users/{username}/gists"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/gpg-keys#list-gpg-keys-for-a-user
+ */
+ "GET /users/{username}/gpg_keys": {
+ parameters: Endpoints["GET /users/{username}/gpg_keys"]["parameters"];
+ response: Endpoints["GET /users/{username}/gpg_keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/keys#list-public-keys-for-a-user
+ */
+ "GET /users/{username}/keys": {
+ parameters: Endpoints["GET /users/{username}/keys"]["parameters"];
+ response: Endpoints["GET /users/{username}/keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/orgs/orgs#list-organizations-for-a-user
+ */
+ "GET /users/{username}/orgs": {
+ parameters: Endpoints["GET /users/{username}/orgs"]["parameters"];
+ response: Endpoints["GET /users/{username}/orgs"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/packages/packages#list-packages-for-a-user
+ */
+ "GET /users/{username}/packages": {
+ parameters: Endpoints["GET /users/{username}/packages"]["parameters"];
+ response: Endpoints["GET /users/{username}/packages"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/projects/projects#list-user-projects
+ */
+ "GET /users/{username}/projects": {
+ parameters: Endpoints["GET /users/{username}/projects"]["parameters"];
+ response: Endpoints["GET /users/{username}/projects"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-events-received-by-the-authenticated-user
+ */
+ "GET /users/{username}/received_events": {
+ parameters: Endpoints["GET /users/{username}/received_events"]["parameters"];
+ response: Endpoints["GET /users/{username}/received_events"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/events#list-public-events-received-by-a-user
+ */
+ "GET /users/{username}/received_events/public": {
+ parameters: Endpoints["GET /users/{username}/received_events/public"]["parameters"];
+ response: Endpoints["GET /users/{username}/received_events/public"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/repos/repos#list-repositories-for-a-user
+ */
+ "GET /users/{username}/repos": {
+ parameters: Endpoints["GET /users/{username}/repos"]["parameters"];
+ response: Endpoints["GET /users/{username}/repos"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/social-accounts#list-social-accounts-for-a-user
+ */
+ "GET /users/{username}/social_accounts": {
+ parameters: Endpoints["GET /users/{username}/social_accounts"]["parameters"];
+ response: Endpoints["GET /users/{username}/social_accounts"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-a-user
+ */
+ "GET /users/{username}/ssh_signing_keys": {
+ parameters: Endpoints["GET /users/{username}/ssh_signing_keys"]["parameters"];
+ response: Endpoints["GET /users/{username}/ssh_signing_keys"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/starring#list-repositories-starred-by-a-user
+ */
+ "GET /users/{username}/starred": {
+ parameters: Endpoints["GET /users/{username}/starred"]["parameters"];
+ response: Endpoints["GET /users/{username}/starred"]["response"];
+ };
+ /**
+ * @see https://docs.github.com/rest/activity/watching#list-repositories-watched-by-a-user
+ */
+ "GET /users/{username}/subscriptions": {
+ parameters: Endpoints["GET /users/{username}/subscriptions"]["parameters"];
+ response: Endpoints["GET /users/{username}/subscriptions"]["response"];
+ };
+}
+export declare const paginatingEndpoints: (keyof PaginatingEndpoints)[];
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
new file mode 100644
index 0000000000..4a5c6a715a
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts
@@ -0,0 +1,15 @@
+import type { Octokit } from "@octokit/core";
+import type { PaginateInterface } from "./types.js";
+export type { PaginateInterface, PaginatingEndpoints } from "./types.js";
+export { composePaginateRest } from "./compose-paginate.js";
+export { isPaginatingEndpoint, paginatingEndpoints, } from "./paginating-endpoints.js";
+/**
+ * @param octokit Octokit instance
+ * @param options Options passed to Octokit constructor
+ */
+export declare function paginateRest(octokit: Octokit): {
+ paginate: PaginateInterface;
+};
+export declare namespace paginateRest {
+ var VERSION: string;
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
new file mode 100644
index 0000000000..ac6a42bbc9
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/iterator.d.ts
@@ -0,0 +1,3 @@
+import type { Octokit } from "@octokit/core";
+import type { RequestInterface, RequestParameters, Route } from "./types.js";
+export declare function iterator(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters): AsyncIterable;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
new file mode 100644
index 0000000000..4b15bf004c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/normalize-paginated-list-response.d.ts
@@ -0,0 +1,18 @@
+/**
+ * Some “list” response that can be paginated have a different response structure
+ *
+ * They have a `total_count` key in the response (search also has `incomplete_results`,
+ * /installation/repositories also has `repository_selection`), as well as a key with
+ * the list of the items which name varies from endpoint to endpoint.
+ *
+ * Octokit normalizes these responses so that paginated results are always returned following
+ * the same structure. One challenge is that if the list response has only one page, no Link
+ * header is provided, so this header alone is not sufficient to check wether a response is
+ * paginated or not.
+ *
+ * We check if a "total_count" key is present in the response data, but also make sure that
+ * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
+ * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
+ */
+import type { OctokitResponse } from "./types.js";
+export declare function normalizePaginatedListResponse(response: OctokitResponse): OctokitResponse;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
new file mode 100644
index 0000000000..4132a30500
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/paginate.d.ts
@@ -0,0 +1,3 @@
+import type { Octokit } from "@octokit/core";
+import type { MapFunction, PaginationResults, RequestParameters, Route, RequestInterface } from "./types.js";
+export declare function paginate(octokit: Octokit, route: Route | RequestInterface, parameters?: RequestParameters, mapFn?: MapFunction): Promise;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
new file mode 100644
index 0000000000..22cd65d880
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts
@@ -0,0 +1,3 @@
+import { type PaginatingEndpoints } from "./generated/paginating-endpoints.js";
+export { paginatingEndpoints } from "./generated/paginating-endpoints.js";
+export declare function isPaginatingEndpoint(arg: unknown): arg is keyof PaginatingEndpoints;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
new file mode 100644
index 0000000000..39a3504c66
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts
@@ -0,0 +1,247 @@
+import type { Octokit } from "@octokit/core";
+import type * as OctokitTypes from "@octokit/types";
+export type { EndpointOptions, RequestInterface, OctokitResponse, RequestParameters, Route, } from "@octokit/types";
+export type { PaginatingEndpoints } from "./generated/paginating-endpoints.js";
+import type { PaginatingEndpoints } from "./generated/paginating-endpoints.js";
+type KnownKeys = Extract<{
+ [K in keyof T]: string extends K ? never : number extends K ? never : K;
+} extends {
+ [_ in keyof T]: infer U;
+} ? U : never, Exclude>;
+type KeysMatching = {
+ [K in keyof T]: T[K] extends V ? K : never;
+}[keyof T];
+type KnownKeysMatching = KeysMatching>, V>;
+type GetResultsType = T extends {
+ data: any[];
+} ? T["data"] : T extends {
+ data: object;
+} ? T["data"][KnownKeysMatching] : never;
+type GetPaginationKeys = T extends {
+ data: any[];
+} ? T : T extends {
+ data: object;
+} ? Pick> : never;
+type NormalizeResponse = Omit & {
+ data: GetResultsType & GetPaginationKeys;
+};
+type DataType = "data" extends keyof T ? T["data"] : unknown;
+export interface MapFunction>, M = unknown[]> {
+ (response: T, done: () => void): M;
+}
+export type PaginationResults = T[];
+export interface PaginateInterface {
+ /**
+ * Paginate a request using endpoint options and map each response to a custom array
+ *
+ * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ * @param {function} mapFn Optional method to map each response to a custom array
+ */
+ (options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>;
+ /**
+ * Paginate a request using endpoint options
+ *
+ * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (options: OctokitTypes.EndpointOptions): Promise>;
+ /**
+ * Paginate a request using a known endpoint route string and map each response to a custom array
+ *
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {function} mapFn Optional method to map each response to a custom array
+ */
+ (route: R, mapFn: MapFunction): Promise;
+ /**
+ * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array
+ *
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ * @param {function} mapFn Optional method to map each response to a custom array
+ */
+ (route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise;
+ /**
+ * Paginate a request using an known endpoint route string
+ *
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>;
+ /**
+ * Paginate a request using an unknown endpoint route string
+ *
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise;
+ /**
+ * Paginate a request using an endpoint method and a map function
+ *
+ * @param {string} request Request method (`octokit.request` or `@octokit/request`)
+ * @param {function} mapFn? Optional method to map each response to a custom array
+ */
+ (request: R, mapFn: MapFunction>, M>): Promise;
+ /**
+ * Paginate a request using an endpoint method, parameters, and a map function
+ *
+ * @param {string} request Request method (`octokit.request` or `@octokit/request`)
+ * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ * @param {function} mapFn? Optional method to map each response to a custom array
+ */
+ (request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise;
+ /**
+ * Paginate a request using an endpoint method and parameters
+ *
+ * @param {string} request Request method (`octokit.request` or `@octokit/request`)
+ * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (request: R, parameters?: Parameters[0]): Promise>["data"]>;
+ iterator: {
+ /**
+ * Get an async iterator to paginate a request using endpoint options
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (options: OctokitTypes.EndpointOptions): AsyncIterable>>;
+ /**
+ * Get an async iterator to paginate a request using a known endpoint route string and optional parameters
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterable>>;
+ /**
+ * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterable>>;
+ /**
+ * Get an async iterator to paginate a request using a request method and optional parameters
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ * @param {string} request `@octokit/request` or `octokit.request` method
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (request: R, parameters?: Parameters[0]): AsyncIterable>>;
+ };
+}
+export interface ComposePaginateInterface {
+ /**
+ * Paginate a request using endpoint options and map each response to a custom array
+ *
+ * @param {object} octokit Octokit instance
+ * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ * @param {function} mapFn Optional method to map each response to a custom array
+ */
+ (octokit: Octokit, options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>;
+ /**
+ * Paginate a request using endpoint options
+ *
+ * @param {object} octokit Octokit instance
+ * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, options: OctokitTypes.EndpointOptions): Promise>;
+ /**
+ * Paginate a request using a known endpoint route string and map each response to a custom array
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {function} mapFn Optional method to map each response to a custom array
+ */
+ (octokit: Octokit, route: R, mapFn: MapFunction): Promise;
+ /**
+ * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ * @param {function} mapFn Optional method to map each response to a custom array
+ */
+ (octokit: Octokit, route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise;
+ /**
+ * Paginate a request using an known endpoint route string
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>;
+ /**
+ * Paginate a request using an unknown endpoint route string
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise;
+ /**
+ * Paginate a request using an endpoint method and a map function
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} request Request method (`octokit.request` or `@octokit/request`)
+ * @param {function} mapFn? Optional method to map each response to a custom array
+ */
+ (octokit: Octokit, request: R, mapFn: MapFunction>, M>): Promise;
+ /**
+ * Paginate a request using an endpoint method, parameters, and a map function
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} request Request method (`octokit.request` or `@octokit/request`)
+ * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ * @param {function} mapFn? Optional method to map each response to a custom array
+ */
+ (octokit: Octokit, request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise;
+ /**
+ * Paginate a request using an endpoint method and parameters
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} request Request method (`octokit.request` or `@octokit/request`)
+ * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, request: R, parameters?: Parameters[0]): Promise>["data"]>;
+ iterator: {
+ /**
+ * Get an async iterator to paginate a request using endpoint options
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ *
+ * @param {object} octokit Octokit instance
+ * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, options: OctokitTypes.EndpointOptions): AsyncIterable>>;
+ /**
+ * Get an async iterator to paginate a request using a known endpoint route string and optional parameters
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterable>>;
+ /**
+ * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterable>>;
+ /**
+ * Get an async iterator to paginate a request using a request method and optional parameters
+ *
+ * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of
+ *
+ * @param {object} octokit Octokit instance
+ * @param {string} request `@octokit/request` or `octokit.request` method
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.format`, `request`, or `baseUrl`.
+ */
+ (octokit: Octokit, request: R, parameters?: Parameters[0]): AsyncIterable>>;
+ };
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
new file mode 100644
index 0000000000..3987e0a159
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "11.4.2";
diff --git a/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/package.json b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/package.json
new file mode 100644
index 0000000000..cef5e6ea8b
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/plugin-paginate-rest/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "@octokit/plugin-paginate-rest",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "type": "module",
+ "version": "11.4.2",
+ "description": "Octokit plugin to paginate REST API endpoint responses",
+ "repository": "github:octokit/plugin-paginate-rest.js",
+ "keywords": [
+ "github",
+ "api",
+ "sdk",
+ "toolkit"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.7.0"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ },
+ "devDependencies": {
+ "@octokit/core": "^6.1.3",
+ "@octokit/plugin-rest-endpoint-methods": "^13.3.0",
+ "@octokit/tsconfig": "^4.0.0",
+ "@types/node": "^22.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "fetch-mock": "^12.0.0",
+ "github-openapi-graphql-query": "^4.0.0",
+ "glob": "^11.0.0",
+ "npm-run-all2": "^7.0.0",
+ "prettier": "3.5.1",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "typescript": "^5.0.0",
+ "vitest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-bundle/index.js",
+ "default": "./dist-bundle/index.js"
+ },
+ "./types": {
+ "types": "./dist-types/.d.ts"
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request-error/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/request-error/LICENSE
new file mode 100644
index 0000000000..ef2c18ee5b
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request-error/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request-error/README.md b/node_modules/@octokit/app/node_modules/@octokit/request-error/README.md
new file mode 100644
index 0000000000..df15c6d35a
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request-error/README.md
@@ -0,0 +1,93 @@
+# request-error.js
+
+> Error class for Octokit request errors
+
+[](https://www.npmjs.com/package/@octokit/request-error)
+[](https://github.com/octokit/request-error.js/actions?query=workflow%3ATest)
+
+## Usage
+
+
+
+
+Browsers
+
+Load @octokit/request-error
directly from esm.sh
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/request-error
+
+```js
+import { RequestError } from "@octokit/request-error";
+```
+
+
+
+
+
+> [!IMPORTANT]
+> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`.
+>
+> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
+> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus)
+
+```js
+const error = new RequestError("Oops", 500, {
+ request: {
+ method: "POST",
+ url: "https://api.github.com/foo",
+ body: {
+ bar: "baz",
+ },
+ headers: {
+ authorization: "token secret123",
+ },
+ },
+ response: {
+ status: 500,
+ url: "https://api.github.com/foo",
+ headers: {
+ "x-github-request-id": "1:2:3:4",
+ },
+ data: {
+ foo: "bar",
+ },
+ },
+});
+
+error.message; // Oops
+error.status; // 500
+error.request; // { method, url, headers, body }
+error.response; // { url, status, headers, data }
+```
+
+### Usage with Octokit
+
+```js
+try {
+ // your code here that sends at least one Octokit request
+ await octokit.request("GET /");
+} catch (error) {
+ // Octokit errors always have a `error.status` property which is the http response code
+ if (error.status) {
+ // handle Octokit error
+ } else {
+ // handle all other errors
+ throw error;
+ }
+}
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request-error/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/request-error/dist-src/index.js
new file mode 100644
index 0000000000..3e97aa3514
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request-error/dist-src/index.js
@@ -0,0 +1,40 @@
+class RequestError extends Error {
+ name;
+ /**
+ * http status code
+ */
+ status;
+ /**
+ * Request options that lead to the error.
+ */
+ request;
+ /**
+ * Response object if a response was received
+ */
+ response;
+ constructor(message, statusCode, options) {
+ super(message);
+ this.name = "HttpError";
+ this.status = Number.parseInt(statusCode);
+ if (Number.isNaN(this.status)) {
+ this.status = 0;
+ }
+ if ("response" in options) {
+ this.response = options.response;
+ }
+ const requestCopy = Object.assign({}, options.request);
+ if (options.request.headers.authorization) {
+ requestCopy.headers = Object.assign({}, options.request.headers, {
+ authorization: options.request.headers.authorization.replace(
+ /(? | undefined;
+ constructor(message: string, statusCode: number, options: RequestErrorOptions);
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request-error/dist-types/types.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request-error/dist-types/types.d.ts
new file mode 100644
index 0000000000..8b5aa3f217
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request-error/dist-types/types.d.ts
@@ -0,0 +1,5 @@
+import type { RequestOptions, OctokitResponse } from "@octokit/types";
+export type RequestErrorOptions = {
+ response?: OctokitResponse | undefined;
+ request: RequestOptions;
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request-error/package.json b/node_modules/@octokit/app/node_modules/@octokit/request-error/package.json
new file mode 100644
index 0000000000..385a367c15
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request-error/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "@octokit/request-error",
+ "version": "6.1.7",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "type": "module",
+ "description": "Error class for Octokit request errors",
+ "repository": "github:octokit/request-error.js",
+ "keywords": [
+ "octokit",
+ "github",
+ "api",
+ "error"
+ ],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^13.6.2"
+ },
+ "devDependencies": {
+ "@octokit/tsconfig": "^4.0.0",
+ "@types/node": "^22.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "glob": "^11.0.0",
+ "prettier": "3.4.2",
+ "tinybench": "^3.0.0",
+ "typescript": "^5.0.0",
+ "vitest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "./dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-src/index.js",
+ "default": "./dist-src/index.js"
+ }
+ },
+ "sideEffects": false,
+ "unpkg": "dist-src/index.js"
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/LICENSE b/node_modules/@octokit/app/node_modules/@octokit/request/LICENSE
new file mode 100644
index 0000000000..af5366d0d0
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/README.md b/node_modules/@octokit/app/node_modules/@octokit/request/README.md
new file mode 100644
index 0000000000..be3e1cccef
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/README.md
@@ -0,0 +1,579 @@
+# request.js
+
+> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node
+
+[](https://www.npmjs.com/package/@octokit/request)
+[](https://github.com/octokit/request.js/actions?query=workflow%3ATest+branch%3Amain)
+
+`@octokit/request` is a request library for browsers & node that makes it easier
+to interact with [GitHub’s REST API](https://developer.github.com/v3/) and
+[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint).
+
+It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse
+the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). You can pass a custom `fetch` function using the `options.request.fetch` option, see below.
+
+
+
+
+
+- [request.js](#requestjs)
+ - [Features](#features)
+ - [Usage](#usage)
+ - [REST API example](#rest-api-example)
+ - [GraphQL example](#graphql-example)
+ - [Alternative: pass `method` \& `url` as part of options](#alternative-pass-method--url-as-part-of-options)
+ - [Authentication](#authentication)
+ - [request()](#request)
+ - [`request.defaults()`](#requestdefaults)
+ - [`request.endpoint`](#requestendpoint)
+ - [Special cases](#special-cases)
+ - [The `data` parameter – set request body directly](#the-data-parameter--set-request-body-directly)
+ - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
+ - [Set a custom Agent to your requests](#set-a-custom-agent-to-your-requests)
+ - [LICENSE](#license)
+
+
+
+## Features
+
+🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes
+
+```js
+request("POST /repos/{owner}/{repo}/issues/{number}/labels", {
+ mediaType: {
+ previews: ["symmetra"],
+ },
+ owner: "octokit",
+ repo: "request.js",
+ number: 1,
+ labels: ["🐛 bug"],
+});
+```
+
+👶 [Small bundle size](https://bundlephobia.com/result?p=@octokit/request@5.0.3) (\<4kb minified + gzipped)
+
+😎 [Authenticate](#authentication) with any of [GitHubs Authentication Strategies](https://github.com/octokit/auth.js).
+
+👍 Sensible defaults
+
+- `baseUrl`: `https://api.github.com`
+- `headers.accept`: `application/vnd.github.v3+json`
+- `headers['user-agent']`: `octokit-request.js/ `, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)`
+
+👌 Simple to test: mock requests by passing a custom fetch method.
+
+🧐 Simple to debug: Sets `error.request` to request options causing the error (with redacted credentials).
+
+## Usage
+
+
+
+
+Browsers
+
+Load @octokit/request
directly from esm.sh
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/request
+
+```js
+import { request } from "@octokit/request";
+```
+
+
+
+
+
+### REST API example
+
+```js
+// Following GitHub docs formatting:
+// https://developer.github.com/v3/repos/#list-organization-repositories
+const result = await request("GET /orgs/{org}/repos", {
+ headers: {
+ authorization: "token 0000000000000000000000000000000000000001",
+ },
+ org: "octokit",
+ type: "private",
+});
+
+console.log(`${result.data.length} repos found.`);
+```
+
+### GraphQL example
+
+For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/octokit/graphql.js#readme)
+
+```js
+const result = await request("POST /graphql", {
+ headers: {
+ authorization: "token 0000000000000000000000000000000000000001",
+ },
+ query: `query ($login: String!) {
+ organization(login: $login) {
+ repositories(privacy: PRIVATE) {
+ totalCount
+ }
+ }
+ }`,
+ variables: {
+ login: "octokit",
+ },
+});
+```
+
+### Alternative: pass `method` & `url` as part of options
+
+Alternatively, pass in a method and a url
+
+```js
+const result = await request({
+ method: "GET",
+ url: "/orgs/{org}/repos",
+ headers: {
+ authorization: "token 0000000000000000000000000000000000000001",
+ },
+ org: "octokit",
+ type: "private",
+});
+```
+
+## Authentication
+
+The simplest way to authenticate a request is to set the `Authorization` header directly, e.g. to a [personal access token](https://github.com/settings/tokens/).
+
+```js
+const requestWithAuth = request.defaults({
+ headers: {
+ authorization: "token 0000000000000000000000000000000000000001",
+ },
+});
+const result = await requestWithAuth("GET /user");
+```
+
+For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js).
+
+```js
+import { createAppAuth } from "@octokit/auth-app";
+const auth = createAppAuth({
+ appId: process.env.APP_ID,
+ privateKey: process.env.PRIVATE_KEY,
+ installationId: 123,
+});
+const requestWithAuth = request.defaults({
+ request: {
+ hook: auth.hook,
+ },
+ mediaType: {
+ previews: ["machine-man"],
+ },
+});
+
+const { data: app } = await requestWithAuth("GET /app");
+const { data: app } = await requestWithAuth(
+ "POST /repos/{owner}/{repo}/issues",
+ {
+ owner: "octocat",
+ repo: "hello-world",
+ title: "Hello from the engine room",
+ },
+);
+```
+
+## request()
+
+`request(route, options)` or `request(options)`.
+
+**Options**
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+ route
+
+
+ String
+
+
+ **Required**. If route
is set it has to be a string consisting of the request method and URL, e.g. GET /orgs/{org}
+
+
+
+
+ options.baseUrl
+
+
+ String
+
+
+ The base URL that route
or url
will be prefixed with, if they use relative paths. Defaults to https://api.github.com
.
+
+
+
+ options.headers
+
+
+ Object
+
+
+ Custom headers. Passed headers are merged with defaults:
+ headers['user-agent']
defaults to octokit-rest.js/1.2.3
(where 1.2.3
is the released version) .
+ headers['accept']
defaults to application/vnd.github.v3+json
. Use options.mediaType.{format,previews}
to request API previews and custom media types.
+
+
+
+
+ options.method
+
+
+ String
+
+
+ Any supported http verb , case-insensitive. Defaults to Get
.
+
+
+
+
+ options.mediaType.format
+
+
+ String
+
+
+ Media type param, such as `raw`, `html`, or `full`. See Media Types .
+
+
+
+
+ options.mediaType.previews
+
+
+ Array of strings
+
+
+ Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See GraphQL Schema Previews .
+ Note that these only apply to GraphQL requests and have no effect on REST routes.
+
+
+
+
+ options.url
+
+
+ String
+
+
+ **Required**. A path or full URL which may contain :variable
or {variable}
placeholders,
+ e.g. /orgs/{org}/repos
. The url
is parsed using url-template .
+
+
+
+
+ options.data
+
+
+ Any
+
+
+ Set request body directly instead of setting it to JSON based on additional parameters. See "The `data` parameter" below.
+
+
+
+
+
+ options.request.fetch
+
+
+ Function
+
+
+ Custom replacement for fetch . Useful for testing or request hooks.
+
+
+
+
+ options.request.hook
+
+
+ Function
+
+
+ Function with the signature hook(request, endpointOptions)
, where endpointOptions
are the parsed options as returned by endpoint.merge()
, and request
is request()
. This option works great in conjunction with before-after-hook .
+
+
+
+
+ options.request.signal
+
+
+ new AbortController().signal
+
+
+ Use an AbortController
instance to cancel a request. In node you can only cancel streamed requests.
+
+
+
+ options.request.log
+
+
+ object
+
+
+ Used for internal logging. Defaults to console
.
+
+
+
+
+ options.request.parseSuccessResponseBody
+
+
+ boolean
+
+
+ If set to false
the returned `response` will be passed through from `fetch`. This is useful to stream response.body when downloading files from the GitHub API.
+
+
+
+
+All other options except `options.request.*` will be passed depending on the `method` and `url` options.
+
+1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/{org}/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`
+2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter
+3. Otherwise the parameter is passed in the request body as JSON key.
+
+**Result**
+
+`request` returns a promise. If the request was successful, the promise resolves with an object containing 4 keys:
+
+
+
+
+
+ key
+
+
+ type
+
+
+ description
+
+
+
+
+ status
+ Integer
+ Response status status
+
+
+ url
+ String
+ URL of response. If a request results in redirects, this is the final URL. You can send a HEAD
request to retrieve it without loading the full response body.
+
+
+ headers
+ Object
+ All response headers
+
+
+ data
+ Any
+ The response body as returned from server. If the response is JSON then it will be parsed into an object
+
+
+
+If an error occurs, the promise is rejected with an `error` object containing 3 keys to help with debugging:
+
+- `error.status` The http response status code
+- `error.request` The request options such as `method`, `url` and `data`
+- `error.response` The http response object with `url`, `headers`, and `data`
+
+If the error is due to an `AbortSignal` being used, the resulting `AbortError` is bubbled up to the caller.
+
+## `request.defaults()`
+
+Override or set default options. Example:
+
+```js
+import { request } from "@octokit/request";
+const myrequest = request.defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+ headers: {
+ "user-agent": "myApp/1.2.3",
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+ org: "my-project",
+ per_page: 100,
+});
+
+myrequest(`GET /orgs/{org}/repos`);
+```
+
+You can call `.defaults()` again on the returned method, the defaults will cascade.
+
+```js
+const myProjectRequest = request.defaults({
+ baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+ headers: {
+ "user-agent": "myApp/1.2.3",
+ },
+ org: "my-project",
+});
+const myProjectRequestWithAuth = myProjectRequest.defaults({
+ headers: {
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+});
+```
+
+`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`,
+`org` and `headers['authorization']` on top of `headers['accept']` that is set
+by the global default.
+
+## `request.endpoint`
+
+See https://github.com/octokit/endpoint.js. Example
+
+```js
+const options = request.endpoint("GET /orgs/{org}/repos", {
+ org: "my-project",
+ type: "private",
+});
+
+// {
+// method: 'GET',
+// url: 'https://api.github.com/orgs/my-project/repos?type=private',
+// headers: {
+// accept: 'application/vnd.github.v3+json',
+// authorization: 'token 0000000000000000000000000000000000000001',
+// 'user-agent': 'octokit/endpoint.js v1.2.3'
+// }
+// }
+```
+
+All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used:
+
+- [`octokitRequest.endpoint()`](#endpoint)
+- [`octokitRequest.endpoint.defaults()`](#endpointdefaults)
+- [`octokitRequest.endpoint.merge()`](#endpointdefaults)
+- [`octokitRequest.endpoint.parse()`](#endpointmerge)
+
+## Special cases
+
+
+
+### The `data` parameter – set request body directly
+
+Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter.
+
+```js
+const response = await request("POST /markdown/raw", {
+ data: "Hello world github/linguist#1 **cool**, and #1!",
+ headers: {
+ accept: "text/html;charset=utf-8",
+ "content-type": "text/plain",
+ },
+});
+
+// Request is sent as
+//
+// {
+// method: 'post',
+// url: 'https://api.github.com/markdown/raw',
+// headers: {
+// accept: 'text/html;charset=utf-8',
+// 'content-type': 'text/plain',
+// 'user-agent': userAgent
+// },
+// body: 'Hello world github/linguist#1 **cool**, and #1!'
+// }
+//
+// not as
+//
+// {
+// ...
+// body: '{"data": "Hello world github/linguist#1 **cool**, and #1!"}'
+// }
+```
+
+### Set parameters for both the URL/query and the request body
+
+There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
+
+Example
+
+```js
+request(
+ "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
+ {
+ name: "example.zip",
+ label: "short description",
+ headers: {
+ "content-type": "text/plain",
+ "content-length": 14,
+ authorization: `token 0000000000000000000000000000000000000001`,
+ },
+ data: "Hello, world!",
+ },
+);
+```
+
+### Set a custom Agent to your requests
+
+The way to pass a custom `Agent` to requests is by creating a custom `fetch` function and pass it as `options.request.fetch`. A good example can be [undici's `fetch` implementation](https://undici.nodejs.org/#/?id=undicifetchinput-init-promise).
+
+Example ([See example in CodeSandbox](https://codesandbox.io/p/sandbox/nifty-stitch-wdlwlf))
+
+```js
+import { request } from "@octokit/request";
+import { fetch as undiciFetch, Agent } from "undici";
+
+/** @type {typeof import("undici").fetch} */
+const myFetch = (url, options) => {
+ return undiciFetch(url, {
+ ...options,
+ dispatcher: new Agent({
+ keepAliveTimeout: 10,
+ keepAliveMaxTimeout: 10,
+ }),
+ });
+};
+
+const { data } = await request("GET /users/{username}", {
+ username: "octocat",
+ headers: {
+ "X-GitHub-Api-Version": "2022-11-28",
+ },
+ options: {
+ request: {
+ fetch: myFetch,
+ },
+ },
+});
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-bundle/index.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-bundle/index.js
new file mode 100644
index 0000000000..af8271c2af
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-bundle/index.js
@@ -0,0 +1,196 @@
+// pkg/dist-src/index.js
+import { endpoint } from "@octokit/endpoint";
+
+// pkg/dist-src/defaults.js
+import { getUserAgent } from "universal-user-agent";
+
+// pkg/dist-src/version.js
+var VERSION = "0.0.0-development";
+
+// pkg/dist-src/defaults.js
+var defaults_default = {
+ headers: {
+ "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
+ }
+};
+
+// pkg/dist-src/fetch-wrapper.js
+import { safeParse } from "fast-content-type-parse";
+
+// pkg/dist-src/is-plain-object.js
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null) return false;
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
+ const proto = Object.getPrototypeOf(value);
+ if (proto === null) return true;
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
+}
+
+// pkg/dist-src/fetch-wrapper.js
+import { RequestError } from "@octokit/request-error";
+async function fetchWrapper(requestOptions) {
+ const fetch = requestOptions.request?.fetch || globalThis.fetch;
+ if (!fetch) {
+ throw new Error(
+ "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
+ );
+ }
+ const log = requestOptions.request?.log || console;
+ const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
+ const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
+ const requestHeaders = Object.fromEntries(
+ Object.entries(requestOptions.headers).map(([name, value]) => [
+ name,
+ String(value)
+ ])
+ );
+ let fetchResponse;
+ try {
+ fetchResponse = await fetch(requestOptions.url, {
+ method: requestOptions.method,
+ body,
+ redirect: requestOptions.request?.redirect,
+ headers: requestHeaders,
+ signal: requestOptions.request?.signal,
+ // duplex must be set if request.body is ReadableStream or Async Iterables.
+ // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
+ ...requestOptions.body && { duplex: "half" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ message = error.message;
+ if (error.name === "TypeError" && "cause" in error) {
+ if (error.cause instanceof Error) {
+ message = error.cause.message;
+ } else if (typeof error.cause === "string") {
+ message = error.cause;
+ }
+ }
+ }
+ const requestError = new RequestError(message, 500, {
+ request: requestOptions
+ });
+ requestError.cause = error;
+ throw requestError;
+ }
+ const status = fetchResponse.status;
+ const url = fetchResponse.url;
+ const responseHeaders = {};
+ for (const [key, value] of fetchResponse.headers) {
+ responseHeaders[key] = value;
+ }
+ const octokitResponse = {
+ url,
+ status,
+ headers: responseHeaders,
+ data: ""
+ };
+ if ("deprecation" in responseHeaders) {
+ const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/);
+ const deprecationLink = matches && matches.pop();
+ log.warn(
+ `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
+ );
+ }
+ if (status === 204 || status === 205) {
+ return octokitResponse;
+ }
+ if (requestOptions.method === "HEAD") {
+ if (status < 400) {
+ return octokitResponse;
+ }
+ throw new RequestError(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status === 304) {
+ octokitResponse.data = await getResponseData(fetchResponse);
+ throw new RequestError("Not modified", status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status >= 400) {
+ octokitResponse.data = await getResponseData(fetchResponse);
+ throw new RequestError(toErrorMessage(octokitResponse.data), status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
+ return octokitResponse;
+}
+async function getResponseData(response) {
+ const contentType = response.headers.get("content-type");
+ if (!contentType) {
+ return response.text().catch(() => "");
+ }
+ const mimetype = safeParse(contentType);
+ if (isJSONResponse(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ }
+}
+function isJSONResponse(mimetype) {
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
+}
+function toErrorMessage(data) {
+ if (typeof data === "string") {
+ return data;
+ }
+ if (data instanceof ArrayBuffer) {
+ return "Unknown error";
+ }
+ if ("message" in data) {
+ const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : "";
+ return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`;
+ }
+ return `Unknown error: ${JSON.stringify(data)}`;
+}
+
+// pkg/dist-src/with-defaults.js
+function withDefaults(oldEndpoint, newDefaults) {
+ const endpoint2 = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint2.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper(endpoint2.parse(endpointOptions));
+ }
+ const request2 = (route2, parameters2) => {
+ return fetchWrapper(
+ endpoint2.parse(endpoint2.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request2, {
+ endpoint: endpoint2,
+ defaults: withDefaults.bind(null, endpoint2)
+ });
+ return endpointOptions.request.hook(request2, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint: endpoint2,
+ defaults: withDefaults.bind(null, endpoint2)
+ });
+}
+
+// pkg/dist-src/index.js
+var request = withDefaults(endpoint, defaults_default);
+export {
+ request
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-bundle/index.js.map b/node_modules/@octokit/app/node_modules/@octokit/request/dist-bundle/index.js.map
new file mode 100644
index 0000000000..9949af2b46
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-bundle/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/index.js", "../dist-src/defaults.js", "../dist-src/version.js", "../dist-src/fetch-wrapper.js", "../dist-src/is-plain-object.js", "../dist-src/with-defaults.js"],
+ "sourcesContent": ["import { endpoint } from \"@octokit/endpoint\";\nimport defaults from \"./defaults.js\";\nimport withDefaults from \"./with-defaults.js\";\nconst request = withDefaults(endpoint, defaults);\nexport {\n request\n};\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version.js\";\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\nexport {\n defaults_default as default\n};\n", "const VERSION = \"0.0.0-development\";\nexport {\n VERSION\n};\n", "import { safeParse } from \"fast-content-type-parse\";\nimport { isPlainObject } from \"./is-plain-object.js\";\nimport { RequestError } from \"@octokit/request-error\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(() => \"\");\n }\n const mimetype = safeParse(contentType);\n if (isJSONResponse(mimetype)) {\n let text = \"\";\n try {\n text = await response.text();\n return JSON.parse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || mimetype.parameters.charset?.toLowerCase() === \"utf-8\") {\n return response.text().catch(() => \"\");\n } else {\n return response.arrayBuffer().catch(() => new ArrayBuffer(0));\n }\n}\nfunction isJSONResponse(mimetype) {\n return mimetype.type === \"application/json\" || mimetype.type === \"application/scim+json\";\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (\"message\" in data) {\n const suffix = \"documentation_url\" in data ? ` - ${data.documentation_url}` : \"\";\n return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\nexport {\n fetchWrapper as default\n};\n", "function isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\nexport {\n isPlainObject\n};\n", "import fetchWrapper from \"./fetch-wrapper.js\";\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route2, parameters2) => {\n return fetchWrapper(\n endpoint.parse(endpoint.merge(route2, parameters2))\n );\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n}\nexport {\n withDefaults as default\n};\n"],
+ "mappings": "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",
+ "names": ["endpoint", "request"]
+}
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/defaults.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/defaults.js
new file mode 100644
index 0000000000..33b14b0ab8
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/defaults.js
@@ -0,0 +1,10 @@
+import { getUserAgent } from "universal-user-agent";
+import { VERSION } from "./version.js";
+var defaults_default = {
+ headers: {
+ "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
+ }
+};
+export {
+ defaults_default as default
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/fetch-wrapper.js
new file mode 100644
index 0000000000..ca64d8e2b5
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/fetch-wrapper.js
@@ -0,0 +1,140 @@
+import { safeParse } from "fast-content-type-parse";
+import { isPlainObject } from "./is-plain-object.js";
+import { RequestError } from "@octokit/request-error";
+async function fetchWrapper(requestOptions) {
+ const fetch = requestOptions.request?.fetch || globalThis.fetch;
+ if (!fetch) {
+ throw new Error(
+ "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
+ );
+ }
+ const log = requestOptions.request?.log || console;
+ const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
+ const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
+ const requestHeaders = Object.fromEntries(
+ Object.entries(requestOptions.headers).map(([name, value]) => [
+ name,
+ String(value)
+ ])
+ );
+ let fetchResponse;
+ try {
+ fetchResponse = await fetch(requestOptions.url, {
+ method: requestOptions.method,
+ body,
+ redirect: requestOptions.request?.redirect,
+ headers: requestHeaders,
+ signal: requestOptions.request?.signal,
+ // duplex must be set if request.body is ReadableStream or Async Iterables.
+ // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
+ ...requestOptions.body && { duplex: "half" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ message = error.message;
+ if (error.name === "TypeError" && "cause" in error) {
+ if (error.cause instanceof Error) {
+ message = error.cause.message;
+ } else if (typeof error.cause === "string") {
+ message = error.cause;
+ }
+ }
+ }
+ const requestError = new RequestError(message, 500, {
+ request: requestOptions
+ });
+ requestError.cause = error;
+ throw requestError;
+ }
+ const status = fetchResponse.status;
+ const url = fetchResponse.url;
+ const responseHeaders = {};
+ for (const [key, value] of fetchResponse.headers) {
+ responseHeaders[key] = value;
+ }
+ const octokitResponse = {
+ url,
+ status,
+ headers: responseHeaders,
+ data: ""
+ };
+ if ("deprecation" in responseHeaders) {
+ const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/);
+ const deprecationLink = matches && matches.pop();
+ log.warn(
+ `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
+ );
+ }
+ if (status === 204 || status === 205) {
+ return octokitResponse;
+ }
+ if (requestOptions.method === "HEAD") {
+ if (status < 400) {
+ return octokitResponse;
+ }
+ throw new RequestError(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status === 304) {
+ octokitResponse.data = await getResponseData(fetchResponse);
+ throw new RequestError("Not modified", status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status >= 400) {
+ octokitResponse.data = await getResponseData(fetchResponse);
+ throw new RequestError(toErrorMessage(octokitResponse.data), status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
+ return octokitResponse;
+}
+async function getResponseData(response) {
+ const contentType = response.headers.get("content-type");
+ if (!contentType) {
+ return response.text().catch(() => "");
+ }
+ const mimetype = safeParse(contentType);
+ if (isJSONResponse(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ }
+}
+function isJSONResponse(mimetype) {
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
+}
+function toErrorMessage(data) {
+ if (typeof data === "string") {
+ return data;
+ }
+ if (data instanceof ArrayBuffer) {
+ return "Unknown error";
+ }
+ if ("message" in data) {
+ const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : "";
+ return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`;
+ }
+ return `Unknown error: ${JSON.stringify(data)}`;
+}
+export {
+ fetchWrapper as default
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/index.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/index.js
new file mode 100644
index 0000000000..42dfe6cff5
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/index.js
@@ -0,0 +1,7 @@
+import { endpoint } from "@octokit/endpoint";
+import defaults from "./defaults.js";
+import withDefaults from "./with-defaults.js";
+const request = withDefaults(endpoint, defaults);
+export {
+ request
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/is-plain-object.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/is-plain-object.js
new file mode 100644
index 0000000000..6ae73a6c3d
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/is-plain-object.js
@@ -0,0 +1,11 @@
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null) return false;
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
+ const proto = Object.getPrototypeOf(value);
+ if (proto === null) return true;
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
+}
+export {
+ isPlainObject
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/version.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/version.js
new file mode 100644
index 0000000000..9acd8329a3
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "9.2.2";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/with-defaults.js b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/with-defaults.js
new file mode 100644
index 0000000000..b2dd7ad6b9
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-src/with-defaults.js
@@ -0,0 +1,27 @@
+import fetchWrapper from "./fetch-wrapper.js";
+function withDefaults(oldEndpoint, newDefaults) {
+ const endpoint = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper(endpoint.parse(endpointOptions));
+ }
+ const request = (route2, parameters2) => {
+ return fetchWrapper(
+ endpoint.parse(endpoint.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request, {
+ endpoint,
+ defaults: withDefaults.bind(null, endpoint)
+ });
+ return endpointOptions.request.hook(request, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint,
+ defaults: withDefaults.bind(null, endpoint)
+ });
+}
+export {
+ withDefaults as default
+};
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/defaults.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/defaults.d.ts
new file mode 100644
index 0000000000..ddf2ca0dea
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/defaults.d.ts
@@ -0,0 +1,6 @@
+declare const _default: {
+ headers: {
+ "user-agent": string;
+ };
+};
+export default _default;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
new file mode 100644
index 0000000000..880643c29a
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
@@ -0,0 +1,2 @@
+import type { EndpointInterface, OctokitResponse } from "@octokit/types";
+export default function fetchWrapper(requestOptions: ReturnType): Promise>;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/index.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/index.d.ts
new file mode 100644
index 0000000000..1030809f9e
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/index.d.ts
@@ -0,0 +1 @@
+export declare const request: import("@octokit/types").RequestInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/is-plain-object.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
new file mode 100644
index 0000000000..004fa4bf52
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/is-plain-object.d.ts
@@ -0,0 +1 @@
+export declare function isPlainObject(value: unknown): value is Object;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/version.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/version.d.ts
new file mode 100644
index 0000000000..b27d7d03fc
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "9.2.2";
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/with-defaults.d.ts
new file mode 100644
index 0000000000..4300682f02
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/dist-types/with-defaults.d.ts
@@ -0,0 +1,2 @@
+import type { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types";
+export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface;
diff --git a/node_modules/@octokit/app/node_modules/@octokit/request/package.json b/node_modules/@octokit/app/node_modules/@octokit/request/package.json
new file mode 100644
index 0000000000..e7b87a33ef
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/@octokit/request/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "@octokit/request",
+ "version": "9.2.2",
+ "type": "module",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "description": "Send parameterized requests to GitHub's APIs with sensible defaults in browsers and Node",
+ "repository": "github:octokit/request.js",
+ "keywords": [
+ "octokit",
+ "github",
+ "api",
+ "request"
+ ],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.3",
+ "@octokit/request-error": "^6.1.7",
+ "@octokit/types": "^13.6.2",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "devDependencies": {
+ "@octokit/auth-app": "^7.0.0",
+ "@octokit/tsconfig": "^4.0.0",
+ "@types/node": "^22.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "fetch-mock": "^12.0.0",
+ "glob": "^11.0.0",
+ "prettier": "3.5.1",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "typescript": "^5.0.0",
+ "undici": "^6.19.2",
+ "vitest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-bundle/index.js",
+ "default": "./dist-bundle/index.js"
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/LICENSE b/node_modules/@octokit/app/node_modules/before-after-hook/LICENSE
new file mode 100644
index 0000000000..225063c34c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2018 Gregor Martynus and other contributors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/README.md b/node_modules/@octokit/app/node_modules/before-after-hook/README.md
new file mode 100644
index 0000000000..6e67ffa56f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/README.md
@@ -0,0 +1,679 @@
+# before-after-hook
+
+> asynchronous hooks for internal functionality
+
+[](https://www.npmjs.com/package/before-after-hook)
+[](https://github.com/gr2m/before-after-hook/actions/workflows/test.yml)
+
+## Usage
+
+
+
+
+Browsers
+
+Load before-after-hook
directly from cdn.skypack.dev
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install before-after-hook
+
+```js
+import Hook from "before-after-hook";
+```
+
+
+
+
+
+### Singular hook
+
+```js
+// instantiate singular hook API
+const hook = new Hook.Singular();
+
+// Create a hook
+async function getData(options) {
+ try {
+ const result = await hook(fetchFromDatabase, options);
+ return handleData(result);
+ } catch (error) {
+ return handleGetError(error);
+ }
+}
+
+// register before/error/after hooks.
+// The methods can be async or return a promise
+hook.before(beforeHook);
+hook.error(errorHook);
+hook.after(afterHook);
+
+getData({ id: 123 });
+```
+
+### Hook collection
+
+```js
+// instantiate hook collection API
+const hookCollection = new Hook.Collection();
+
+// Create a hook
+async function getData(options) {
+ try {
+ const result = await hookCollection("get", fetchFromDatabase, options);
+ return handleData(result);
+ } catch (error) {
+ return handleGetError(error);
+ }
+}
+
+// register before/error/after hooks.
+// The methods can be async or return a promise
+hookCollection.before("get", beforeHook);
+hookCollection.error("get", errorHook);
+hookCollection.after("get", afterHook);
+
+getData({ id: 123 });
+```
+
+### Hook.Singular vs Hook.Collection
+
+There's no fundamental difference between the `Hook.Singular` and `Hook.Collection` hooks except for the fact that a hook from a collection requires you to pass along the name. Therefore the following explanation applies to both code snippets as described above.
+
+The methods are executed in the following order
+
+1. `beforeHook`
+2. `fetchFromDatabase`
+3. `afterHook`
+4. `handleData`
+
+`beforeHook` can mutate `options` before it’s passed to `fetchFromDatabase`.
+
+If an error is thrown in `beforeHook` or `fetchFromDatabase` then `errorHook` is
+called next.
+
+If `afterHook` throws an error then `handleGetError` is called instead
+of `handleData`.
+
+If `errorHook` throws an error then `handleGetError` is called next, otherwise
+`afterHook` and `handleData`.
+
+You can also use `hook.wrap` to achieve the same thing as shown above (collection example):
+
+```js
+hookCollection.wrap("get", async (getData, options) => {
+ await beforeHook(options);
+
+ try {
+ const result = getData(options);
+ } catch (error) {
+ await errorHook(error, options);
+ }
+
+ await afterHook(result, options);
+});
+```
+
+## API
+
+- [Singular Hook Constructor](#singular-hook-api)
+- [Hook Collection Constructor](#hook-collection-api)
+
+## Singular hook API
+
+- [Singular constructor](#singular-constructor)
+- [hook.api](#singular-api)
+- [hook()](#singular-api)
+- [hook.before()](#singular-api)
+- [hook.error()](#singular-api)
+- [hook.after()](#singular-api)
+- [hook.wrap()](#singular-api)
+- [hook.remove()](#singular-api)
+
+### Singular constructor
+
+The `Hook.Singular` constructor has no options and returns a `hook` instance with the
+methods below:
+
+```js
+const hook = new Hook.Singular();
+```
+
+Using the singular hook is recommended for [TypeScript](#typescript)
+
+### Singular API
+
+The singular hook is a reference to a single hook. This means that there's no need to pass along any identifier (such as a `name` as can be seen in the [Hook.Collection API](#hookcollectionapi)).
+
+The API of a singular hook is exactly the same as a collection hook and we therefore suggest you read the [Hook.Collection API](#hookcollectionapi) and leave out any use of the `name` argument. Just skip it like described in this example:
+
+```js
+const hook = new Hook.Singular();
+
+// good
+hook.before(beforeHook);
+hook.after(afterHook);
+hook(fetchFromDatabase, options);
+
+// bad
+hook.before("get", beforeHook);
+hook.after("get", afterHook);
+hook("get", fetchFromDatabase, options);
+```
+
+## Hook collection API
+
+- [Collection constructor](#collection-constructor)
+- [hookCollection.api](#hookcollectionapi)
+- [hookCollection()](#hookcollection)
+- [hookCollection.before()](#hookcollectionbefore)
+- [hookCollection.error()](#hookcollectionerror)
+- [hookCollection.after()](#hookcollectionafter)
+- [hookCollection.wrap()](#hookcollectionwrap)
+- [hookCollection.remove()](#hookcollectionremove)
+
+### Collection constructor
+
+The `Hook.Collection` constructor has no options and returns a `hookCollection` instance with the
+methods below
+
+```js
+const hookCollection = new Hook.Collection();
+```
+
+### hookCollection.api
+
+Use the `api` property to return the public API:
+
+- [hookCollection.before()](#hookcollectionbefore)
+- [hookCollection.after()](#hookcollectionafter)
+- [hookCollection.error()](#hookcollectionerror)
+- [hookCollection.wrap()](#hookcollectionwrap)
+- [hookCollection.remove()](#hookcollectionremove)
+
+That way you don’t need to expose the [hookCollection()](#hookcollection) method to consumers of your library
+
+### hookCollection()
+
+Invoke before and after hooks. Returns a promise.
+
+```js
+hookCollection(nameOrNames, method /*, options */);
+```
+
+
+
+
+ Argument
+ Type
+ Description
+ Required
+
+
+
+ name
+ String or Array of Strings
+ Hook name, for example 'save'
. Or an array of names, see example below.
+ Yes
+
+
+ method
+ Function
+ Callback to be executed after all before hooks finished execution successfully. options
is passed as first argument
+ Yes
+
+
+ options
+ Object
+ Will be passed to all before hooks as reference, so they can mutate it
+ No, defaults to empty object ({}
)
+
+
+
+Resolves with whatever `method` returns or resolves with.
+Rejects with error that is thrown or rejected with by
+
+1. Any of the before hooks, whichever rejects / throws first
+2. `method`
+3. Any of the after hooks, whichever rejects / throws first
+
+Simple Example
+
+```js
+hookCollection(
+ "save",
+ (record) => {
+ return store.save(record);
+ },
+ record
+);
+// shorter: hookCollection('save', store.save, record)
+
+hookCollection.before("save", function addTimestamps(record) {
+ const now = new Date().toISOString();
+ if (record.createdAt) {
+ record.updatedAt = now;
+ } else {
+ record.createdAt = now;
+ }
+});
+```
+
+Example defining multiple hooks at once.
+
+```js
+hookCollection(
+ ["add", "save"],
+ (record) => {
+ return store.save(record);
+ },
+ record
+);
+
+hookCollection.before("add", function addTimestamps(record) {
+ if (!record.type) {
+ throw new Error("type property is required");
+ }
+});
+
+hookCollection.before("save", function addTimestamps(record) {
+ if (!record.type) {
+ throw new Error("type property is required");
+ }
+});
+```
+
+Defining multiple hooks is helpful if you have similar methods for which you want to define separate hooks, but also an additional hook that gets called for all at once. The example above is equal to this:
+
+```js
+hookCollection(
+ "add",
+ (record) => {
+ return hookCollection(
+ "save",
+ (record) => {
+ return store.save(record);
+ },
+ record
+ );
+ },
+ record
+);
+```
+
+### hookCollection.before()
+
+Add before hook for given name.
+
+```js
+hookCollection.before(name, method);
+```
+
+
+
+
+ Argument
+ Type
+ Description
+ Required
+
+
+
+ name
+ String
+ Hook name, for example 'save'
+ Yes
+
+
+ method
+ Function
+
+ Executed before the wrapped method. Called with the hook’s
+ options
argument. Before hooks can mutate the passed options
+ before they are passed to the wrapped method.
+
+ Yes
+
+
+
+Example
+
+```js
+hookCollection.before("save", function validate(record) {
+ if (!record.name) {
+ throw new Error("name property is required");
+ }
+});
+```
+
+### hookCollection.error()
+
+Add error hook for given name.
+
+```js
+hookCollection.error(name, method);
+```
+
+
+
+
+ Argument
+ Type
+ Description
+ Required
+
+
+
+ name
+ String
+ Hook name, for example 'save'
+ Yes
+
+
+ method
+ Function
+
+ Executed when an error occurred in either the wrapped method or a
+ before
hook. Called with the thrown error
+ and the hook’s options
argument. The first method
+ which does not throw an error will set the result that the after hook
+ methods will receive.
+
+ Yes
+
+
+
+Example
+
+```js
+hookCollection.error("save", (error, options) => {
+ if (error.ignore) return;
+ throw error;
+});
+```
+
+### hookCollection.after()
+
+Add after hook for given name.
+
+```js
+hookCollection.after(name, method);
+```
+
+
+
+
+ Argument
+ Type
+ Description
+ Required
+
+
+
+ name
+ String
+ Hook name, for example 'save'
+ Yes
+
+
+ method
+ Function
+
+ Executed after wrapped method. Called with what the wrapped method
+ resolves with the hook’s options
argument.
+
+ Yes
+
+
+
+Example
+
+```js
+hookCollection.after("save", (result, options) => {
+ if (result.updatedAt) {
+ app.emit("update", result);
+ } else {
+ app.emit("create", result);
+ }
+});
+```
+
+### hookCollection.wrap()
+
+Add wrap hook for given name.
+
+```js
+hookCollection.wrap(name, method);
+```
+
+
+
+
+ Argument
+ Type
+ Description
+ Required
+
+
+
+ name
+ String
+ Hook name, for example 'save'
+ Yes
+
+
+ method
+ Function
+
+ Receives both the wrapped method and the passed options as arguments so it can add logic before and after the wrapped method, it can handle errors and even replace the wrapped method altogether
+
+ Yes
+
+
+
+Example
+
+```js
+hookCollection.wrap("save", async (saveInDatabase, options) => {
+ if (!record.name) {
+ throw new Error("name property is required");
+ }
+
+ try {
+ const result = await saveInDatabase(options);
+
+ if (result.updatedAt) {
+ app.emit("update", result);
+ } else {
+ app.emit("create", result);
+ }
+
+ return result;
+ } catch (error) {
+ if (error.ignore) return;
+ throw error;
+ }
+});
+```
+
+See also: [Test mock example](examples/test-mock-example.md)
+
+### hookCollection.remove()
+
+Removes hook for given name.
+
+```js
+hookCollection.remove(name, hookMethod);
+```
+
+
+
+
+ Argument
+ Type
+ Description
+ Required
+
+
+
+ name
+ String
+ Hook name, for example 'save'
+ Yes
+
+
+ beforeHookMethod
+ Function
+
+ Same function that was previously passed to hookCollection.before()
, hookCollection.error()
, hookCollection.after()
or hookCollection.wrap()
+
+ Yes
+
+
+
+Example
+
+```js
+hookCollection.remove("save", validateRecord);
+```
+
+## TypeScript
+
+This library contains type definitions for TypeScript.
+
+### Type support for `Singular`:
+
+```ts
+import Hook from "before-after-hook";
+
+type TOptions = { foo: string }; // type for options
+type TResult = { bar: number }; // type for result
+type TError = Error; // type for error
+
+const hook = new Hook.Singular();
+
+hook.before((options) => {
+ // `options.foo` has `string` type
+
+ // not allowed
+ options.foo = 42;
+
+ // allowed
+ options.foo = "Forty-Two";
+});
+
+const hookedMethod = hook(
+ (options) => {
+ // `options.foo` has `string` type
+
+ // not allowed, because it does not satisfy the `R` type
+ return { foo: 42 };
+
+ // allowed
+ return { bar: 42 };
+ },
+ { foo: "Forty-Two" }
+);
+```
+
+You can choose not to pass the types for options, result or error. So, these are completely valid:
+
+```ts
+const hook = new Hook.Singular();
+const hook = new Hook.Singular();
+const hook = new Hook.Singular();
+```
+
+In these cases, the omitted types will implicitly be `any`.
+
+### Type support for `Collection`:
+
+`Collection` also has strict type support. You can use it like this:
+
+```ts
+import { Hook } from "before-after-hook";
+
+type HooksType = {
+ add: {
+ Options: { type: string };
+ Result: { id: number };
+ Error: Error;
+ };
+ save: {
+ Options: { type: string };
+ Result: { id: number };
+ };
+ read: {
+ Options: { id: number; foo: number };
+ };
+ destroy: {
+ Options: { id: number; foo: string };
+ };
+};
+
+const hooks = new Hook.Collection();
+
+hooks.before("destroy", (options) => {
+ // `options.id` has `number` type
+});
+
+hooks.error("add", (err, options) => {
+ // `options.type` has `string` type
+ // `err` is `instanceof Error`
+});
+
+hooks.error("save", (err, options) => {
+ // `options.type` has `string` type
+ // `err` has type `any`
+});
+
+hooks.after("save", (result, options) => {
+ // `options.type` has `string` type
+ // `result.id` has `number` type
+});
+```
+
+You can choose not to pass the types altogether. In that case, everything will implicitly be `any`:
+
+```ts
+const hook = new Hook.Collection();
+```
+
+Alternative imports:
+
+```ts
+import { Singular, Collection } from "before-after-hook";
+
+const hook = new Singular();
+const hooks = new Collection();
+```
+
+## Upgrading to 1.4
+
+Since version 1.4 the `Hook` constructor has been deprecated in favor of returning `Hook.Singular` in an upcoming breaking release.
+
+Version 1.4 is still 100% backwards-compatible, but if you want to continue using hook collections, we recommend using the `Hook.Collection` constructor instead before the next release.
+
+For even more details, check out [the PR](https://github.com/gr2m/before-after-hook/pull/52).
+
+## See also
+
+If `before-after-hook` is not for you, have a look at one of these alternatives:
+
+- https://github.com/keystonejs/grappling-hook
+- https://github.com/sebelga/promised-hooks
+- https://github.com/bnoguchi/hooks-js
+- https://github.com/cb1kenobi/hook-emitter
+
+## License
+
+[Apache 2.0](LICENSE)
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/index.d.ts b/node_modules/@octokit/app/node_modules/before-after-hook/index.d.ts
new file mode 100644
index 0000000000..1f69f0ae6e
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/index.d.ts
@@ -0,0 +1,174 @@
+type HookMethod = (
+ options: Options
+) => Result | Promise;
+
+type BeforeHook = (options: Options) => void | Promise;
+type ErrorHook = (
+ error: Error,
+ options: Options
+) => unknown | Promise;
+type AfterHook = (
+ result: Result,
+ options: Options
+) => void | Promise;
+type WrapHook = (
+ hookMethod: HookMethod,
+ options: Options
+) => Result | Promise;
+
+type AnyHook =
+ | BeforeHook
+ | ErrorHook
+ | AfterHook
+ | WrapHook;
+
+type TypeStoreKey = "Options" | "Result" | "Error";
+type TypeStore = { [key in TypeStoreKey]?: any };
+type GetType<
+ TStore extends TypeStore,
+ TKey extends TypeStoreKey
+> = TKey extends keyof TStore ? TStore[TKey] : any;
+
+export interface HookCollection<
+ HooksType extends Record = Record<
+ string,
+ { Options: any; Result: any; Error: any }
+ >,
+ HookName extends keyof HooksType = keyof HooksType
+> {
+ /**
+ * Invoke before and after hooks
+ */
+ (
+ name: Name | Name[],
+ hookMethod: HookMethod<
+ GetType,
+ GetType
+ >,
+ options?: GetType
+ ): Promise>;
+ /**
+ * Add `before` hook for given `name`
+ */
+ before(
+ name: Name,
+ beforeHook: BeforeHook>
+ ): void;
+ /**
+ * Add `error` hook for given `name`
+ */
+ error(
+ name: Name,
+ errorHook: ErrorHook<
+ GetType,
+ GetType
+ >
+ ): void;
+ /**
+ * Add `after` hook for given `name`
+ */
+ after(
+ name: Name,
+ afterHook: AfterHook<
+ GetType,
+ GetType
+ >
+ ): void;
+ /**
+ * Add `wrap` hook for given `name`
+ */
+ wrap(
+ name: Name,
+ wrapHook: WrapHook<
+ GetType,
+ GetType
+ >
+ ): void;
+ /**
+ * Remove added hook for given `name`
+ */
+ remove(
+ name: Name,
+ hook: AnyHook<
+ GetType,
+ GetType,
+ GetType
+ >
+ ): void;
+ /**
+ * Public API
+ */
+ api: Pick<
+ HookCollection,
+ "before" | "error" | "after" | "wrap" | "remove"
+ >;
+}
+
+export interface HookSingular {
+ /**
+ * Invoke before and after hooks
+ */
+ (hookMethod: HookMethod, options?: Options): Promise;
+ /**
+ * Add `before` hook
+ */
+ before(beforeHook: BeforeHook): void;
+ /**
+ * Add `error` hook
+ */
+ error(errorHook: ErrorHook): void;
+ /**
+ * Add `after` hook
+ */
+ after(afterHook: AfterHook): void;
+ /**
+ * Add `wrap` hook
+ */
+ wrap(wrapHook: WrapHook): void;
+ /**
+ * Remove added hook
+ */
+ remove(hook: AnyHook): void;
+ /**
+ * Public API
+ */
+ api: Pick<
+ HookSingular,
+ "before" | "error" | "after" | "wrap" | "remove"
+ >;
+}
+
+type Collection = new <
+ HooksType extends Record = Record
+>() => HookCollection;
+type Singular = new <
+ Options = unknown,
+ Result = unknown,
+ Error = unknown
+>() => HookSingular;
+
+interface Hook {
+ /**
+ * Creates a collection of hooks
+ */
+ Collection: Collection;
+
+ /**
+ * Creates a nameless hook that supports strict typings
+ */
+ Singular: Singular;
+}
+
+declare const Hook: {
+ /**
+ * Creates a collection of hooks
+ */
+ Collection: Collection;
+
+ /**
+ * Creates a nameless hook that supports strict typings
+ */
+ Singular: Singular;
+};
+
+export default Hook;
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/index.js b/node_modules/@octokit/app/node_modules/before-after-hook/index.js
new file mode 100644
index 0000000000..444f99d037
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/index.js
@@ -0,0 +1,45 @@
+// @ts-check
+
+import { register } from "./lib/register.js";
+import { addHook } from "./lib/add.js";
+import { removeHook } from "./lib/remove.js";
+
+// bind with array of arguments: https://stackoverflow.com/a/21792913
+const bind = Function.bind;
+const bindable = bind.bind(bind);
+
+function bindApi(hook, state, name) {
+ const removeHookRef = bindable(removeHook, null).apply(
+ null,
+ name ? [state, name] : [state]
+ );
+ hook.api = { remove: removeHookRef };
+ hook.remove = removeHookRef;
+ ["before", "error", "after", "wrap"].forEach((kind) => {
+ const args = name ? [state, kind, name] : [state, kind];
+ hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
+ });
+}
+
+function Singular() {
+ const singularHookName = Symbol("Singular");
+ const singularHookState = {
+ registry: {},
+ };
+ const singularHook = register.bind(null, singularHookState, singularHookName);
+ bindApi(singularHook, singularHookState, singularHookName);
+ return singularHook;
+}
+
+function Collection() {
+ const state = {
+ registry: {},
+ };
+
+ const hook = register.bind(null, state);
+ bindApi(hook, state);
+
+ return hook;
+}
+
+export default { Singular, Collection };
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/lib/add.js b/node_modules/@octokit/app/node_modules/before-after-hook/lib/add.js
new file mode 100644
index 0000000000..f19ee7133e
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/lib/add.js
@@ -0,0 +1,46 @@
+// @ts-check
+
+export function addHook(state, kind, name, hook) {
+ const orig = hook;
+ if (!state.registry[name]) {
+ state.registry[name] = [];
+ }
+
+ if (kind === "before") {
+ hook = (method, options) => {
+ return Promise.resolve()
+ .then(orig.bind(null, options))
+ .then(method.bind(null, options));
+ };
+ }
+
+ if (kind === "after") {
+ hook = (method, options) => {
+ let result;
+ return Promise.resolve()
+ .then(method.bind(null, options))
+ .then((result_) => {
+ result = result_;
+ return orig(result, options);
+ })
+ .then(() => {
+ return result;
+ });
+ };
+ }
+
+ if (kind === "error") {
+ hook = (method, options) => {
+ return Promise.resolve()
+ .then(method.bind(null, options))
+ .catch((error) => {
+ return orig(error, options);
+ });
+ };
+ }
+
+ state.registry[name].push({
+ hook: hook,
+ orig: orig,
+ });
+}
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/lib/register.js b/node_modules/@octokit/app/node_modules/before-after-hook/lib/register.js
new file mode 100644
index 0000000000..cc4e3018d6
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/lib/register.js
@@ -0,0 +1,27 @@
+// @ts-check
+
+export function register(state, name, method, options) {
+ if (typeof method !== "function") {
+ throw new Error("method for before hook must be a function");
+ }
+
+ if (!options) {
+ options = {};
+ }
+
+ if (Array.isArray(name)) {
+ return name.reverse().reduce((callback, name) => {
+ return register.bind(null, state, name, callback, options);
+ }, method)();
+ }
+
+ return Promise.resolve().then(() => {
+ if (!state.registry[name]) {
+ return method(options);
+ }
+
+ return state.registry[name].reduce((method, registered) => {
+ return registered.hook.bind(null, method, options);
+ }, method)();
+ });
+}
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/lib/remove.js b/node_modules/@octokit/app/node_modules/before-after-hook/lib/remove.js
new file mode 100644
index 0000000000..e844890bcc
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/lib/remove.js
@@ -0,0 +1,19 @@
+// @ts-check
+
+export function removeHook(state, name, method) {
+ if (!state.registry[name]) {
+ return;
+ }
+
+ const index = state.registry[name]
+ .map((registered) => {
+ return registered.orig;
+ })
+ .indexOf(method);
+
+ if (index === -1) {
+ return;
+ }
+
+ state.registry[name].splice(index, 1);
+}
diff --git a/node_modules/@octokit/app/node_modules/before-after-hook/package.json b/node_modules/@octokit/app/node_modules/before-after-hook/package.json
new file mode 100644
index 0000000000..f23f655dbe
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/before-after-hook/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "before-after-hook",
+ "type": "module",
+ "version": "3.0.2",
+ "description": "asynchronous before/error/after hooks for internal functionality",
+ "exports": "./index.js",
+ "types": "./index.d.ts",
+ "files": [
+ "index.js",
+ "index.d.ts",
+ "lib"
+ ],
+ "scripts": {
+ "test": "npm run test:code && npm run test:tsc && npm run test:tsd && npm run lint",
+ "test:code": "c8 --100 ava test/*.test.js",
+ "test:tsc": "tsc --allowJs --noEmit --esModuleInterop --skipLibCheck --lib es2020 index.js",
+ "test:tsd": "tsd",
+ "lint": "prettier --check \"*.{js,json,ts,md}\" \".github/**/*.yml\"",
+ "lint:fix": "prettier --write \"*.{js,json,ts,md}\" \".github/**/*.yml\"",
+ "coverage": "c8 report --reporter html",
+ "postcoverage": "open-cli coverage/index.html"
+ },
+ "repository": "github:gr2m/before-after-hook",
+ "keywords": [
+ "hook",
+ "hooks",
+ "api"
+ ],
+ "author": "Gregor Martynus",
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "ava": "^4.3.3",
+ "c8": "^7.12.0",
+ "prettier": "^2.0.0",
+ "sinon": "^14.0.1",
+ "tsd": "^0.24.1",
+ "typescript": "^4.8.4"
+ },
+ "release": {
+ "branches": [
+ "+([0-9]).x",
+ "main",
+ "next",
+ {
+ "name": "beta",
+ "prerelease": true
+ }
+ ]
+ },
+ "renovate": {
+ "extends": [
+ "github>gr2m/.github"
+ ]
+ }
+}
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/release.yml b/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/release.yml
new file mode 100644
index 0000000000..1f75564eb2
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/release.yml
@@ -0,0 +1,22 @@
+name: Release
+"on":
+ push:
+ branches:
+ - master
+ - next
+ - beta
+ - "*.x"
+jobs:
+ release:
+ name: release
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: lts/*
+ - run: npm ci
+ - run: npx semantic-release
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/test.yml b/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/test.yml
new file mode 100644
index 0000000000..439cb0ef39
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/test.yml
@@ -0,0 +1,38 @@
+name: Test
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types:
+ - opened
+ - synchronize
+
+jobs:
+ test_matrix:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ node_version:
+ - 12
+ - 14
+ - 16
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js ${{ matrix.node_version }}
+ uses: uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node_version }}
+ cache: npm
+ - run: npm ci
+ - run: npm run test:code
+
+ test:
+ runs-on: ubuntu-latest
+ needs: test_matrix
+ steps:
+ - uses: actions/checkout@v2
+ - run: npm ci
+ - run: npm run lint
+ - run: npm run test:types
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/update-prettier.yml b/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/update-prettier.yml
new file mode 100644
index 0000000000..d740d657ec
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/.github/workflows/update-prettier.yml
@@ -0,0 +1,25 @@
+name: Update Prettier
+"on":
+ push:
+ branches:
+ - renovate/prettier-*
+jobs:
+ update_prettier:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ version: 12
+ cache: npm
+ node-version: 16
+ - run: npm ci
+ - run: npm run lint:fix
+ - uses: gr2m/create-or-update-pull-request-action@v1.x
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ title: Prettier updated
+ body: An update to prettier required updates to your code.
+ branch: ${{ github.ref }}
+ commit-message: "style: prettier"
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/CODE_OF_CONDUCT.md b/node_modules/@octokit/app/node_modules/universal-user-agent/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000..dad5ddc09a
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/CODE_OF_CONDUCT.md
@@ -0,0 +1,74 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of experience,
+nationality, personal appearance, race, religion, or sexual identity and
+orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+- The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at opensource+coc@martynus.net. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at [https://contributor-covenant.org/version/1/4][version]
+
+[homepage]: https://contributor-covenant.org
+[version]: https://contributor-covenant.org/version/1/4/
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/LICENSE.md b/node_modules/@octokit/app/node_modules/universal-user-agent/LICENSE.md
new file mode 100644
index 0000000000..e1d0d65518
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/LICENSE.md
@@ -0,0 +1,7 @@
+# [ISC License](https://spdx.org/licenses/ISC)
+
+Copyright (c) 2018-2021, Gregor Martynus (https://github.com/gr2m)
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/README.md b/node_modules/@octokit/app/node_modules/universal-user-agent/README.md
new file mode 100644
index 0000000000..f0f48cb14f
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/README.md
@@ -0,0 +1,19 @@
+# universal-user-agent
+
+> Get a user agent string across all JavaScript Runtime Environments
+
+[](https://www.npmjs.com/package/universal-user-agent)
+[](https://github.com/gr2m/universal-user-agent/actions/workflows/test.yml?query=workflow%3ATest)
+
+```js
+import { getUserAgent } from "universal-user-agent";
+
+const userAgent = getUserAgent();
+// userAgent will look like this
+// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
+// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
+```
+
+## License
+
+[ISC](LICENSE.md)
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/index.d.ts b/node_modules/@octokit/app/node_modules/universal-user-agent/index.d.ts
new file mode 100644
index 0000000000..6e60db812c
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/index.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Returns a User Agent String based on the current environment (Browser, Node, Deno, etc).
+ */
+export function getUserAgent(): string;
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/index.js b/node_modules/@octokit/app/node_modules/universal-user-agent/index.js
new file mode 100644
index 0000000000..83bb81febb
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/index.js
@@ -0,0 +1,13 @@
+export function getUserAgent() {
+ if (typeof navigator === "object" && "userAgent" in navigator) {
+ return navigator.userAgent;
+ }
+
+ if (typeof process === "object" && process.version !== undefined) {
+ return `Node.js/${process.version.substr(1)} (${process.platform}; ${
+ process.arch
+ })`;
+ }
+
+ return "";
+}
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/index.test-d.ts b/node_modules/@octokit/app/node_modules/universal-user-agent/index.test-d.ts
new file mode 100644
index 0000000000..00bbfc6de6
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/index.test-d.ts
@@ -0,0 +1,5 @@
+import { expectType } from "tsd";
+
+import { getUserAgent } from "./index.js";
+
+expectType(getUserAgent());
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/package.json b/node_modules/@octokit/app/node_modules/universal-user-agent/package.json
new file mode 100644
index 0000000000..0386f75282
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "universal-user-agent",
+ "version": "7.0.2",
+ "type": "module",
+ "description": "Get a user agent string across all JavaScript Runtime Environments",
+ "exports": "./index.js",
+ "types": "index.d.ts",
+ "repository": "github:gr2m/universal-user-agent",
+ "keywords": [],
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "ISC",
+ "scripts": {
+ "lint": "prettier --check '*.{js,json,md}'",
+ "lint:fix": "prettier --write '*.{js,json,md}'",
+ "test": "npm run test:code && npm run test:types",
+ "test:code": "node test.js",
+ "test:types": "tsd"
+ },
+ "devDependencies": {
+ "prettier": "^2.0.0",
+ "tsd": "^0.17.0"
+ }
+}
diff --git a/node_modules/@octokit/app/node_modules/universal-user-agent/test.js b/node_modules/@octokit/app/node_modules/universal-user-agent/test.js
new file mode 100644
index 0000000000..c24cdc77f6
--- /dev/null
+++ b/node_modules/@octokit/app/node_modules/universal-user-agent/test.js
@@ -0,0 +1,8 @@
+import assert from "node:assert";
+
+import { getUserAgent } from "./index.js";
+
+assert(getUserAgent instanceof Function, "getUserAgent is a function");
+assert.equal(typeof getUserAgent(), "string", "getUserAgent returns a string");
+
+console.log("ok");
diff --git a/node_modules/@octokit/app/package.json b/node_modules/@octokit/app/package.json
new file mode 100644
index 0000000000..7a99c8d1f5
--- /dev/null
+++ b/node_modules/@octokit/app/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "@octokit/app",
+ "publishConfig": {
+ "access": "public",
+ "provenance": true
+ },
+ "type": "module",
+ "version": "15.1.4",
+ "description": "GitHub Apps toolset for Node.js",
+ "main": "./dist-node/index.js",
+ "repository": "github:octokit/app.js",
+ "author": "Gregor Martynus (https://github.com/gr2m)",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-app": "^7.1.5",
+ "@octokit/auth-unauthenticated": "^6.1.2",
+ "@octokit/core": "^6.1.4",
+ "@octokit/oauth-app": "^7.1.6",
+ "@octokit/plugin-paginate-rest": "^11.4.2",
+ "@octokit/types": "^13.6.2",
+ "@octokit/webhooks": "^13.6.1"
+ },
+ "devDependencies": {
+ "@octokit/tsconfig": "^4.0.0",
+ "@types/node": "^22.0.0",
+ "@vitest/coverage-v8": "^3.0.0",
+ "esbuild": "^0.25.0",
+ "express": "^4.17.1",
+ "fetch-mock": "^12.0.0",
+ "glob": "^10.0.0",
+ "mockdate": "^3.0.2",
+ "prettier": "3.5.1",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "typescript": "^5.0.0",
+ "vitest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "files": [
+ "dist-*/**",
+ "bin/**"
+ ],
+ "types": "./dist-types/index.d.ts",
+ "exports": {
+ ".": {
+ "node": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-node/index.js"
+ },
+ "browser": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-web/index.js"
+ },
+ "default": {
+ "types": "./dist-types/index.d.ts",
+ "import": "./dist-node/index.js"
+ }
+ }
+ },
+ "sideEffects": false
+}
diff --git a/node_modules/@octokit/auth-app/LICENSE b/node_modules/@octokit/auth-app/LICENSE
new file mode 100644
index 0000000000..ef2c18ee5b
--- /dev/null
+++ b/node_modules/@octokit/auth-app/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@octokit/auth-app/README.md b/node_modules/@octokit/auth-app/README.md
new file mode 100644
index 0000000000..24c81ce4cd
--- /dev/null
+++ b/node_modules/@octokit/auth-app/README.md
@@ -0,0 +1,1396 @@
+# auth-app.js
+
+> GitHub App authentication for JavaScript
+
+[](https://www.npmjs.com/package/@octokit/auth-app)
+[](https://github.com/octokit/auth-app.js/actions?query=workflow%3ATest)
+
+`@octokit/auth-app` implements authentication for GitHub Apps using [JSON Web Token](https://jwt.io/), installation access tokens, and OAuth user-to-server access tokens.
+
+
+
+- [Standalone usage](#standalone-usage)
+ - [Authenticate as GitHub App (JSON Web Token)](#authenticate-as-github-app-json-web-token)
+ - [Authenticate as OAuth App (client ID/client secret)](#authenticate-as-oauth-app-client-idclient-secret)
+ - [Authenticate as installation](#authenticate-as-installation)
+ - [Authenticate as user](#authenticate-as-user)
+- [Usage with Octokit](#usage-with-octokit)
+- [`createAppAuth(options)` or `new Octokit({ auth })`](#createappauthoptions-or-new-octokit-auth-)
+- [`auth(options)` or `octokit.auth(options)`](#authoptions-or-octokitauthoptions)
+ - [JSON Web Token (JWT) Authentication](#json-web-token-jwt-authentication)
+ - [OAuth App authentication](#oauth-app-authentication)
+ - [Installation authentication](#installation-authentication)
+ - [User authentication (web flow)](#user-authentication-web-flow)
+ - [User authentication (device flow)](#user-authentication-device-flow)
+- [Authentication object](#authentication-object)
+ - [JSON Web Token (JWT) authentication](#json-web-token-jwt-authentication)
+ - [OAuth App authentication](#oauth-app-authentication-1)
+ - [Installation access token authentication](#installation-access-token-authentication)
+ - [GitHub APP user authentication token with expiring disabled](#github-app-user-authentication-token-with-expiring-disabled)
+ - [GitHub APP user authentication token with expiring enabled](#github-app-user-authentication-token-with-expiring-enabled)
+- [`auth.hook(request, route, parameters)` or `auth.hook(request, options)`](#authhookrequest-route-parameters-or-authhookrequest-options)
+- [Types](#types)
+- [Implementation details](#implementation-details)
+- [License](#license)
+
+
+
+## Standalone usage
+
+
+
+
+Browsers
+
+
+⚠️ `@octokit/auth-app` is not meant for usage in the browser. A private key and client secret must not be exposed to users.
+
+The private keys provided by GitHub are in `PKCS#1` format, but the WebCrypto API only supports `PKCS#8`. You need to convert it first:
+
+```shell
+openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private-key.pem -out private-key-pkcs8.key
+```
+
+The OAuth APIs to create user-to-server tokens cannot be used because they do not have CORS enabled.
+
+If you know what you are doing, load `@octokit/auth-app` directly from [esm.sh](https://esm.sh)
+
+```html
+
+```
+
+
+
+Node
+
+
+Install with npm install @octokit/auth-app
+
+```js
+import { createAppAuth } from "@octokit/auth-app";
+```
+
+
+
+
+
+> [!IMPORTANT]
+> As we use [conditional exports](https://nodejs.org/api/packages.html#conditional-exports), you will need to adapt your `tsconfig.json` by setting `"moduleResolution": "node16", "module": "node16"`.
+>
+> See the TypeScript docs on [package.json "exports"](https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports).
+> See this [helpful guide on transitioning to ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from [@sindresorhus](https://github.com/sindresorhus)
+
+### Authenticate as GitHub App (JSON Web Token)
+
+```js
+const auth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "lv1.1234567890abcdef",
+ clientSecret: "1234567890abcdef12341234567890abcdef1234",
+});
+
+// Retrieve JSON Web Token (JWT) to authenticate as app
+const appAuthentication = await auth({ type: "app" });
+```
+
+resolves with
+
+```json
+{
+ "type": "app",
+ "token": "jsonwebtoken123",
+ "appId": 123,
+ "expiresAt": "2018-07-07T00:09:30.000Z"
+}
+```
+
+### Authenticate as OAuth App (client ID/client secret)
+
+The [OAuth Application APIs](https://docs.github.com/en/rest/reference/apps#oauth-applications-api) require the app to authenticate using clientID/client as Basic Authentication
+
+```js
+const auth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "lv1.1234567890abcdef",
+ clientSecret: "1234567890abcdef12341234567890abcdef1234",
+});
+
+const appAuthentication = await auth({
+ type: "oauth-app",
+});
+```
+
+resolves with
+
+```json
+{
+ "type": "oauth-app",
+ "clientId": "lv1.1234567890abcdef",
+ "clientSecret": "1234567890abcdef1234567890abcdef12345678",
+ "headers": {
+ "authorization": "basic bHYxLjEyMzQ1Njc4OTBhYmNkZWY6MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3OA=="
+ }
+}
+```
+
+### Authenticate as installation
+
+```js
+const auth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "lv1.1234567890abcdef",
+ clientSecret: "1234567890abcdef12341234567890abcdef1234",
+});
+
+// Retrieve installation access token
+const installationAuthentication = await auth({
+ type: "installation",
+ installationId: 123,
+});
+```
+
+resolves with
+
+```json
+{
+ "type": "token",
+ "tokenType": "installation",
+ "token": "token123",
+ "installationId": 123,
+ "createdAt": "2018-07-07T00:00:00.000Z",
+ "expiresAt": "2018-07-07T00:59:00.000Z"
+}
+```
+
+### Authenticate as user
+
+```js
+const auth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "lv1.1234567890abcdef",
+ clientSecret: "1234567890abcdef12341234567890abcdef1234",
+});
+
+// Retrieve an oauth-access token
+const userAuthentication = await auth({ type: "oauth-user", code: "123456" });
+```
+
+Resolves with
+
+```json
+{
+ "type": "token",
+ "tokenType": "oauth",
+ "token": "token123"
+}
+```
+
+## Usage with Octokit
+
+
+
+
+
+Browsers
+
+
+
+⚠️ `@octokit/auth-app` is not meant for usage in the browser. A private key and client secret must not be exposed to users.
+
+The private keys provided by GitHub are in `PKCS#1` format, but the WebCrypto API only supports `PKCS#8`. You need to convert it first:
+
+```shell
+openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private-key.pem -out private-key-pkcs8.key
+```
+
+The OAuth APIs to create user-to-server tokens cannot be used because they do not have CORS enabled.
+
+If you know what you are doing, load `@octokit/auth-app` and `@octokit/core` (or a compatible module) directly from [esm.sh](https://esm.sh)
+
+```html
+
+```
+
+
+
+
+Node
+
+
+
+Install with `npm install @octokit/core @octokit/auth-app`. Optionally replace `@octokit/core` with a compatible module
+
+```js
+import { Octokit } from "@octokit/core";
+import { createAppAuth, createOAuthUserAuth } from "@octokit/auth-app";
+```
+
+
+
+
+
+```js
+const appOctokit = new Octokit({
+ authStrategy: createAppAuth,
+ auth: {
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "1234567890abcdef1234",
+ clientSecret: "1234567890abcdef1234567890abcdef12345678",
+ },
+});
+
+// Send requests as GitHub App
+const { slug } = await appOctokit.request("GET /app");
+console.log("authenticated as %s", slug);
+
+// Send requests as OAuth App
+await appOctokit.request("POST /application/{client_id}/token", {
+ client_id: "1234567890abcdef1234",
+ access_token: "existingtoken123",
+});
+console.log("token is valid");
+
+// create a new octokit instance that is authenticated as the user
+const userOctokit = await appOctokit.auth({
+ type: "oauth-user",
+ code: "code123",
+ factory: (options) => {
+ return new Octokit({
+ authStrategy: createOAuthUserAuth,
+ auth: options,
+ });
+ },
+});
+
+// Exchanges the code for the user access token authentication on first request
+// and caches the authentication for successive requests
+const {
+ data: { login },
+} = await userOctokit.request("GET /user");
+console.log("Hello, %s!", login);
+```
+
+In order to create an `octokit` instance that is authenticated as an installation, with automated installation token refresh, set `installationId` as `auth` option
+
+```js
+const installationOctokit = new Octokit({
+ authStrategy: createAppAuth,
+ auth: {
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ installationId: 123,
+ },
+});
+
+// transparently creates an installation access token the first time it is needed
+// and refreshes it when it expires
+await installationOctokit.request("POST /repos/{owner}/{repo}/issues", {
+ owner: "octocat",
+ repo: "hello-world",
+ title: "title",
+});
+```
+
+## `createAppAuth(options)` or `new Octokit({ auth })`
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ appId
+
+
+ number
+
+
+ Required . Find App ID on the app’s about page in settings.
+
+
+
+
+ privateKey
+
+
+ string
+
+
+ Required . Content of the *.pem
file you downloaded from the app’s about page. You can generate a new private key if needed. If your private key contains escaped newlines (`\\n`), they will be automatically replaced with actual newlines.
+
+
+
+
+ installationId
+
+
+ number
+
+
+ Default installationId
to be used when calling auth({ type: "installation" })
.
+
+
+
+
+ clientId
+
+
+ string
+
+
+ The client ID of the GitHub App.
+
+
+
+
+ clientSecret
+
+
+ string
+
+
+ A client secret for the GitHub App.
+
+
+
+
+ request
+
+
+ function
+
+
+
+Automatically set to `octokit.request` when using with an `Octokit` constructor.
+
+For standalone usage, you can pass in your own [`@octokit/request`](https://github.com/octokit/request.js) instance. For usage with enterprise, set `baseUrl` to the hostname + `/api/v3`. Example:
+
+```js
+import { request } from "@octokit/request";
+createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ request: request.defaults({
+ baseUrl: "https://ghe.my-company.com/api/v3",
+ }),
+});
+```
+
+
+
+
+ cache
+
+
+ object
+
+
+ Installation tokens expire after an hour. By default, @octokit/auth-app
is caching up to 15000 tokens simultaneously using lru-cache . You can pass your own cache implementation by passing options.cache.{get,set}
to the constructor. Example:
+
+```js
+const CACHE = {};
+createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ cache: {
+ async get(key) {
+ return CACHE[key];
+ },
+ async set(key, value) {
+ CACHE[key] = value;
+ },
+ },
+});
+```
+
+
+
+
+ log
+
+
+ object
+
+
+ You can pass in your preferred logging tool by passing option.log
to the constructor. If you would like to make the log level configurable using an environment variable or external option, we recommend the console-log-level package. For example:
+
+```js
+import consoleLogLevel from "console-log-level";
+createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ log: consoleLogLevel({ level: "info" }),
+});
+```
+
+
+
+
+
+## `auth(options)` or `octokit.auth(options)`
+
+The async `auth()` method accepts different options depending on your use case
+
+### JSON Web Token (JWT) Authentication
+
+Authenticate as the GitHub app to list installations, repositories, and create installation access tokens.
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ Required . Must be either "app"
.
+
+
+
+
+
+### OAuth App authentication
+
+Create, reset, refresh, delete OAuth user-to-server tokens
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ Required . Must be either "oauth-app"
.
+
+
+
+
+
+### Installation authentication
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ Required . Must be "installation"
.
+
+
+
+
+ installationId
+
+
+ number
+
+
+ Required unless a default installationId
was passed to createAppAuth()
. ID of installation to retrieve authentication for.
+
+
+
+
+ repositoryIds
+
+
+ array of numbers
+
+
+ The id
of the repositories that the installation token can access. Also known as a databaseID
when querying the repository object in GitHub's GraphQL API. This option is **(recommended)** over repositoryNames
when needing to limit the scope of the access token, due to repositoryNames
having the possibility of changing. Additionally, you should only include either repositoryIds
or repositoryNames
, but not both.
+
+
+
+
+ repositoryNames
+
+
+ array of strings
+
+
+ The name
of the repositories that the installation token can access. As mentioned in the repositoryIds
description, you should only include either repositoryIds
or repositoryNames
, but not both.
+
+
+
+
+ permissions
+
+
+ object
+
+
+ The permissions granted to the access token. The permissions object includes the permission names and their access type. For a complete list of permissions and allowable values, see GitHub App permissions .
+
+
+
+
+ factory
+
+
+ function
+
+
+
+The `auth({type: "installation", installationId, factory })` call with resolve with whatever the factory function returns. The `factory` function will be called with all the strategy option that `auth` was created with, plus the additional options passed to `auth`, besides `type` and `factory`.
+
+For example, you can create a new `auth` instance for an installation which shares the internal state (especially the access token cache) with the calling `auth` instance:
+
+```js
+const appAuth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+});
+
+const installationAuth123 = await appAuth({
+ type: "installation",
+ installationId: 123,
+ factory: createAppAuth,
+});
+```
+
+
+
+
+
+ refresh
+
+
+ boolean
+
+
+
+Installation tokens expire after one hour. By default, tokens are cached and returned from cache until expired. To bypass and update a cached token for the given `installationId`, set `refresh` to `true`.
+
+Defaults to `false`.
+
+
+
+
+
+
+### User authentication (web flow)
+
+Exchange code received from the web flow redirect described in [step 2 of GitHub's OAuth web flow](https://docs.github.com/en/developers/apps/authorizing-oauth-apps#web-application-flow)
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ Required . Must be "oauth-user"
.
+
+
+
+
+ factory
+
+
+ function
+
+
+
+The `auth({type: "oauth-user", factory })` call with resolve with whatever the factory function returns. The `factory` function will be called with all the strategy option that `auth` was created with, plus the additional options passed to `auth`, besides `type` and `factory`.
+
+For example, you can create a new `auth` instance for an installation which shares the internal state (especially the access token cache) with the calling `auth` instance:
+
+```js
+import { createAppAuth, createOAuthUserAuth } from "@octokit/auth-oauth-app";
+
+const appAuth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "lv1.1234567890abcdef",
+ clientSecret: "1234567890abcdef1234567890abcdef12345678",
+});
+
+const userAuth = await appAuth({
+ type: "oauth-user",
+ code,
+ factory: createOAuthUserAuth,
+});
+
+// will create token upon first call, then cache authentication for successive calls,
+// until token needs to be refreshed (if enabled for the GitHub App)
+const authentication = await userAuth();
+```
+
+
+
+
+
+ code
+
+
+ string
+
+
+ The authorization code
which was passed as query parameter to the callback URL from the OAuth web application flow .
+
+
+
+
+ redirectUrl
+
+
+ string
+
+
+ The URL in your application where users are sent after authorization. See redirect urls .
+
+
+
+
+ state
+
+
+ string
+
+
+ The unguessable random string you provided in Step 1 of the OAuth web application flow .
+
+
+
+
+
+### User authentication (device flow)
+
+Create a token using [GitHub's device flow](https://docs.github.com/en/developers/apps/authorizing-oauth-apps#device-flow).
+
+The device flow does not require a client secret, but it is required as strategy option for `@octokit/auth-app`, even for the device flow. If you want to implement the device flow without requiring a client secret, use [`@octokit/auth-oauth-device`](https://github.com/octokit/auth-oauth-device.js#readme).
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ Required . Must be "oauth-user"
.
+
+
+
+
+ onVerification
+
+
+ function
+
+
+
+**Required**. A function that is called once the device and user codes were retrieved.
+
+The `onVerification()` callback can be used to pause until the user completes step 2, which might result in a better user experience.
+
+```js
+const auth = auth({
+ type: "oauth-user",
+ onVerification(verification) {
+ console.log("Open %s", verification.verification_uri);
+ console.log("Enter code: %s", verification.user_code);
+ await prompt("press enter when you are ready to continue");
+ },
+});
+```
+
+
+
+
+
+ factory
+
+
+ function
+
+
+
+The `auth({type: "oauth-user", factory })` call with resolve with whatever the factory function returns. The `factory` function will be called with all the strategy option that `auth` was created with, plus the additional options passed to `auth`, besides `type` and `factory`.
+
+For example, you can create a new `auth` instance for an installation which shares the internal state (especially the access token cache) with the calling `auth` instance:
+
+```js
+import { createAppAuth, createOAuthUserAuth } from "@octokit/auth-oauth-app";
+
+const appAuth = createAppAuth({
+ appId: 1,
+ privateKey: "-----BEGIN PRIVATE KEY-----\n...",
+ clientId: "lv1.1234567890abcdef",
+ clientSecret: "1234567890abcdef1234567890abcdef12345678",
+});
+
+const userAuth = await appAuth({
+ type: "oauth-user",
+ code,
+ factory: createOAuthUserAuth,
+});
+
+// will create token upon first call, then cache authentication for successive calls,
+// until token needs to be refreshed (if enabled for the GitHub App)
+const authentication = await userAuth();
+```
+
+
+
+
+
+
+## Authentication object
+
+Depending on on the `auth()` call, the resulting authentication object can be one of
+
+1. JSON Web Token (JWT) authentication
+1. OAuth App authentication
+1. Installation access token authentication
+1. GitHub APP user authentication token with expiring disabled
+1. GitHub APP user authentication token with expiring enabled
+
+### JSON Web Token (JWT) authentication
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ "app"
+
+
+
+
+ token
+
+
+ string
+
+
+ The JSON Web Token (JWT) to authenticate as the app.
+
+
+
+
+ appId
+
+
+ number
+
+
+ GitHub App database ID.
+
+
+
+
+ expiresAt
+
+
+ string
+
+
+ Timestamp in UTC format, e.g. "2018-07-07T00:09:30.000Z"
. A Date object can be created using new Date(authentication.expiresAt)
.
+
+
+
+
+
+### OAuth App authentication
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ "oauth-app"
+
+
+
+
+ clientType
+
+
+ string
+
+
+ "github-app"
+
+
+
+
+ clientId
+
+
+ string
+
+
+ The client ID as passed to the constructor.
+
+
+
+
+ clientSecret
+
+
+ string
+
+
+ The client secret as passed to the constructor.
+
+
+
+
+ headers
+
+
+ object
+
+
+ { authorization }
.
+
+
+
+
+
+### Installation access token authentication
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ "token"
+
+
+
+
+ token
+
+
+ string
+
+
+ The installation access token.
+
+
+
+
+ tokenType
+
+
+ string
+
+
+ "installation"
+
+
+
+
+ installationId
+
+
+ number
+
+
+ Installation database ID.
+
+
+
+
+ createdAt
+
+
+ string
+
+
+ Timestamp in UTC format, e.g. "2018-07-07T00:00:00.000Z"
. A Date object can be created using new Date(authentication.expiresAt)
.
+
+
+
+
+ expiresAt
+
+
+ string
+
+
+ Timestamp in UTC format, e.g. "2018-07-07T00:59:00.000Z"
. A Date object can be created using new Date(authentication.expiresAt)
.
+
+
+
+
+ repositoryIds
+
+
+ array of numbers
+
+
+ Only present if repositoryIds
option passed to auth(options)
.
+
+
+
+
+ repositoryNames
+
+
+ array of strings
+
+
+ Only present if repositoryNames
option passed to auth(options)
.
+
+
+
+
+ permissions
+
+
+ object
+
+
+ An object where keys are the permission name and the value is either "read"
or "write"
. See the list of all GitHub App Permissions .
+
+
+
+
+ singleFileName
+
+
+ string
+
+
+ If the single file permission is enabled, the singleFileName
property is set to the path of the accessible file.
+
+
+
+
+
+### GitHub APP user authentication token with expiring disabled
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ "token"
+
+
+
+
+ tokenType
+
+
+ string
+
+
+ "oauth"
+
+
+
+
+ clientType
+
+
+ string
+
+
+ "github-app"
+
+
+
+
+ clientId
+
+
+ string
+
+
+ The app's Client ID
+
+
+
+
+ clientSecret
+
+
+ string
+
+
+ One of the app's client secrets
+
+
+
+
+ token
+
+
+ string
+
+
+ The user access token
+
+
+
+
+
+### GitHub APP user authentication token with expiring enabled
+
+
+
+
+
+ name
+
+
+ type
+
+
+ description
+
+
+
+
+
+
+ type
+
+
+ string
+
+
+ "token"
+
+
+
+
+ tokenType
+
+
+ string
+
+
+ "oauth"
+
+
+
+
+ clientType
+
+
+ string
+
+
+ "github-app"
+
+
+
+
+ clientId
+
+
+ string
+
+
+ The app's Client ID
+
+
+
+
+ clientSecret
+
+
+ string
+
+
+ One of the app's client secrets
+
+
+
+
+ token
+
+
+ string
+
+
+ The user access token
+
+
+
+
+ refreshToken
+
+
+ string
+
+
+ The refresh token
+
+
+
+
+ expiresAt
+
+
+ string
+
+
+ Date timestamp in ISO 8601 standard. Example: 2022-01-01T08:00:0.000Z
+
+
+
+
+ refreshTokenExpiresAt
+
+
+ string
+
+
+ Date timestamp in ISO 8601 standard. Example: 2021-07-01T00:00:0.000Z
+
+
+
+
+
+## `auth.hook(request, route, parameters)` or `auth.hook(request, options)`
+
+`auth.hook()` hooks directly into the request life cycle. It amends the request to authenticate either as app or as installation based on the request URL. Although the `"machine-man"` preview has graduated to the official API, https://developer.github.com/changes/2020-08-20-graduate-machine-man-and-sailor-v-previews/, it is still required in versions of GitHub Enterprise up to 2.21 so it automatically sets the `"machine-man"` preview for all endpoints requiring JWT authentication.
+
+The `request` option is an instance of [`@octokit/request`](https://github.com/octokit/request.js#readme). The arguments are the same as for the [`request()` method](https://github.com/octokit/request.js#request).
+
+`auth.hook()` can be called directly to send an authenticated request
+
+```js
+const { data: installations } = await auth.hook(
+ request,
+ "GET /app/installations",
+);
+```
+
+Or it can be passed as option to [`request()`](https://github.com/octokit/request.js#request).
+
+```js
+const requestWithAuth = request.defaults({
+ request: {
+ hook: auth.hook,
+ },
+});
+
+const { data: installations } = await requestWithAuth("GET /app/installations");
+```
+
+Note that `auth.hook()` does not create and set an OAuth authentication token. But you can use [`@octokit/auth-oauth-app`](https://github.com/octokit/auth-oauth-app.js#readme) for that functionality. And if you don't plan on sending requests to routes that require authentication with `client_id` and `client_secret`, you can just retrieve the token and then create a new instance of [`request()`](https://github.com/octokit/request.js#request) with the authentication header set:
+
+```js
+const { token } = await auth({
+ type: "oauth-user",
+ code: "123456",
+});
+const requestWithAuth = request.defaults({
+ headers: {
+ authentication: `token ${token}`,
+ },
+});
+```
+
+## Types
+
+```ts
+import {
+ // strategy options
+ StrategyOptions,
+ // auth options
+ AuthOptions,
+ AppAuthOptions,
+ OAuthAppAuthOptions,
+ InstallationAuthOptions,
+ OAuthWebFlowAuthOptions,
+ OAuthDeviceFlowAuthOptions,
+ // authentication objects
+ Authentication,
+ AppAuthentication,
+ OAuthAppAuthentication,
+ InstallationAccessTokenAuthentication,
+ GitHubAppUserAuthentication,
+ GitHubAppUserAuthenticationWithExpiration,
+} from "@octokit/auth-app";
+```
+
+## Implementation details
+
+When creating a JSON Web Token, it sets the "issued at time" (iat) to 30s in the past as we have seen people running situations where the GitHub API claimed the iat would be in future. It turned out the clocks on the different machine were not in sync.
+
+Installation access tokens are valid for 60 minutes. This library invalidates them after 59 minutes to account for request delays.
+
+All OAuth features are implemented internally using [@octokit/auth-oauth-app](https://github.com/octokit/auth-oauth-app.js/#readme).
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/@octokit/auth-app/dist-node/index.js b/node_modules/@octokit/auth-app/dist-node/index.js
new file mode 100644
index 0000000000..af7120ed77
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-node/index.js
@@ -0,0 +1,461 @@
+// pkg/dist-src/index.js
+import { getUserAgent } from "universal-user-agent";
+import { request as defaultRequest } from "@octokit/request";
+import { createOAuthAppAuth } from "@octokit/auth-oauth-app";
+
+// pkg/dist-src/get-app-authentication.js
+import githubAppJwt from "universal-github-app-jwt";
+async function getAppAuthentication({
+ appId,
+ privateKey,
+ timeDifference
+}) {
+ try {
+ const authOptions = {
+ id: appId,
+ privateKey
+ };
+ if (timeDifference) {
+ Object.assign(authOptions, {
+ now: Math.floor(Date.now() / 1e3) + timeDifference
+ });
+ }
+ const appAuthentication = await githubAppJwt(authOptions);
+ return {
+ type: "app",
+ token: appAuthentication.token,
+ appId: appAuthentication.appId,
+ expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString()
+ };
+ } catch (error) {
+ if (privateKey === "-----BEGIN RSA PRIVATE KEY-----") {
+ throw new Error(
+ "The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'"
+ );
+ } else {
+ throw error;
+ }
+ }
+}
+
+// pkg/dist-src/cache.js
+import { Lru } from "toad-cache";
+function getCache() {
+ return new Lru(
+ // cache max. 15000 tokens, that will use less than 10mb memory
+ 15e3,
+ // Cache for 1 minute less than GitHub expiry
+ 1e3 * 60 * 59
+ );
+}
+async function get(cache, options) {
+ const cacheKey = optionsToCacheKey(options);
+ const result = await cache.get(cacheKey);
+ if (!result) {
+ return;
+ }
+ const [
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissionsString,
+ singleFileName
+ ] = result.split("|");
+ const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => {
+ if (/!$/.test(string)) {
+ permissions2[string.slice(0, -1)] = "write";
+ } else {
+ permissions2[string] = "read";
+ }
+ return permissions2;
+ }, {});
+ return {
+ token,
+ createdAt,
+ expiresAt,
+ permissions,
+ repositoryIds: options.repositoryIds,
+ repositoryNames: options.repositoryNames,
+ singleFileName,
+ repositorySelection
+ };
+}
+async function set(cache, options, data) {
+ const key = optionsToCacheKey(options);
+ const permissionsString = options.permissions ? "" : Object.keys(data.permissions).map(
+ (name) => `${name}${data.permissions[name] === "write" ? "!" : ""}`
+ ).join(",");
+ const value = [
+ data.token,
+ data.createdAt,
+ data.expiresAt,
+ data.repositorySelection,
+ permissionsString,
+ data.singleFileName
+ ].join("|");
+ await cache.set(key, value);
+}
+function optionsToCacheKey({
+ installationId,
+ permissions = {},
+ repositoryIds = [],
+ repositoryNames = []
+}) {
+ const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === "read" ? name : `${name}!`).join(",");
+ const repositoryIdsString = repositoryIds.sort().join(",");
+ const repositoryNamesString = repositoryNames.join(",");
+ return [
+ installationId,
+ repositoryIdsString,
+ repositoryNamesString,
+ permissionsString
+ ].filter(Boolean).join("|");
+}
+
+// pkg/dist-src/to-token-authentication.js
+function toTokenAuthentication({
+ installationId,
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames,
+ singleFileName
+}) {
+ return Object.assign(
+ {
+ type: "token",
+ tokenType: "installation",
+ token,
+ installationId,
+ permissions,
+ createdAt,
+ expiresAt,
+ repositorySelection
+ },
+ repositoryIds ? { repositoryIds } : null,
+ repositoryNames ? { repositoryNames } : null,
+ singleFileName ? { singleFileName } : null
+ );
+}
+
+// pkg/dist-src/get-installation-authentication.js
+async function getInstallationAuthentication(state, options, customRequest) {
+ const installationId = Number(options.installationId || state.installationId);
+ if (!installationId) {
+ throw new Error(
+ "[@octokit/auth-app] installationId option is required for installation authentication."
+ );
+ }
+ if (options.factory) {
+ const { type, factory, oauthApp, ...factoryAuthOptions } = {
+ ...state,
+ ...options
+ };
+ return factory(factoryAuthOptions);
+ }
+ const optionsWithInstallationTokenFromState = Object.assign(
+ { installationId },
+ options
+ );
+ if (!options.refresh) {
+ const result = await get(
+ state.cache,
+ optionsWithInstallationTokenFromState
+ );
+ if (result) {
+ const {
+ token: token2,
+ createdAt: createdAt2,
+ expiresAt: expiresAt2,
+ permissions: permissions2,
+ repositoryIds: repositoryIds2,
+ repositoryNames: repositoryNames2,
+ singleFileName: singleFileName2,
+ repositorySelection: repositorySelection2
+ } = result;
+ return toTokenAuthentication({
+ installationId,
+ token: token2,
+ createdAt: createdAt2,
+ expiresAt: expiresAt2,
+ permissions: permissions2,
+ repositorySelection: repositorySelection2,
+ repositoryIds: repositoryIds2,
+ repositoryNames: repositoryNames2,
+ singleFileName: singleFileName2
+ });
+ }
+ }
+ const appAuthentication = await getAppAuthentication(state);
+ const request = customRequest || state.request;
+ const payload = {
+ installation_id: installationId,
+ mediaType: {
+ previews: ["machine-man"]
+ },
+ headers: {
+ authorization: `bearer ${appAuthentication.token}`
+ }
+ };
+ if (options.repositoryIds) {
+ Object.assign(payload, { repository_ids: options.repositoryIds });
+ }
+ if (options.repositoryNames) {
+ Object.assign(payload, {
+ repositories: options.repositoryNames
+ });
+ }
+ if (options.permissions) {
+ Object.assign(payload, { permissions: options.permissions });
+ }
+ const {
+ data: {
+ token,
+ expires_at: expiresAt,
+ repositories,
+ permissions: permissionsOptional,
+ repository_selection: repositorySelectionOptional,
+ single_file: singleFileName
+ }
+ } = await request(
+ "POST /app/installations/{installation_id}/access_tokens",
+ payload
+ );
+ const permissions = permissionsOptional || {};
+ const repositorySelection = repositorySelectionOptional || "all";
+ const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0;
+ const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0;
+ const createdAt = (/* @__PURE__ */ new Date()).toISOString();
+ const cacheOptions = {
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames
+ };
+ if (singleFileName) {
+ Object.assign(payload, { singleFileName });
+ }
+ await set(state.cache, optionsWithInstallationTokenFromState, cacheOptions);
+ const cacheData = {
+ installationId,
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames
+ };
+ if (singleFileName) {
+ Object.assign(cacheData, { singleFileName });
+ }
+ return toTokenAuthentication(cacheData);
+}
+
+// pkg/dist-src/auth.js
+async function auth(state, authOptions) {
+ switch (authOptions.type) {
+ case "app":
+ return getAppAuthentication(state);
+ case "oauth-app":
+ return state.oauthApp({ type: "oauth-app" });
+ case "installation":
+ authOptions;
+ return getInstallationAuthentication(state, {
+ ...authOptions,
+ type: "installation"
+ });
+ case "oauth-user":
+ return state.oauthApp(authOptions);
+ default:
+ throw new Error(`Invalid auth type: ${authOptions.type}`);
+ }
+}
+
+// pkg/dist-src/hook.js
+import { requiresBasicAuth } from "@octokit/auth-oauth-user";
+import { RequestError } from "@octokit/request-error";
+
+// pkg/dist-src/requires-app-auth.js
+var PATHS = [
+ "/app",
+ "/app/hook/config",
+ "/app/hook/deliveries",
+ "/app/hook/deliveries/{delivery_id}",
+ "/app/hook/deliveries/{delivery_id}/attempts",
+ "/app/installations",
+ "/app/installations/{installation_id}",
+ "/app/installations/{installation_id}/access_tokens",
+ "/app/installations/{installation_id}/suspended",
+ "/app/installation-requests",
+ "/marketplace_listing/accounts/{account_id}",
+ "/marketplace_listing/plan",
+ "/marketplace_listing/plans",
+ "/marketplace_listing/plans/{plan_id}/accounts",
+ "/marketplace_listing/stubbed/accounts/{account_id}",
+ "/marketplace_listing/stubbed/plan",
+ "/marketplace_listing/stubbed/plans",
+ "/marketplace_listing/stubbed/plans/{plan_id}/accounts",
+ "/orgs/{org}/installation",
+ "/repos/{owner}/{repo}/installation",
+ "/users/{username}/installation"
+];
+function routeMatcher(paths) {
+ const regexes = paths.map(
+ (p) => p.split("/").map((c) => c.startsWith("{") ? "(?:.+?)" : c).join("/")
+ );
+ const regex = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})$`;
+ return new RegExp(regex, "i");
+}
+var REGEX = routeMatcher(PATHS);
+function requiresAppAuth(url) {
+ return !!url && REGEX.test(url.split("?")[0]);
+}
+
+// pkg/dist-src/hook.js
+var FIVE_SECONDS_IN_MS = 5 * 1e3;
+function isNotTimeSkewError(error) {
+ return !(error.message.match(
+ /'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/
+ ) || error.message.match(
+ /'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/
+ ));
+}
+async function hook(state, request, route, parameters) {
+ const endpoint = request.endpoint.merge(route, parameters);
+ const url = endpoint.url;
+ if (/\/login\/oauth\/access_token$/.test(url)) {
+ return request(endpoint);
+ }
+ if (requiresAppAuth(url.replace(request.endpoint.DEFAULTS.baseUrl, ""))) {
+ const { token: token2 } = await getAppAuthentication(state);
+ endpoint.headers.authorization = `bearer ${token2}`;
+ let response;
+ try {
+ response = await request(endpoint);
+ } catch (error) {
+ if (isNotTimeSkewError(error)) {
+ throw error;
+ }
+ if (typeof error.response.headers.date === "undefined") {
+ throw error;
+ }
+ const diff = Math.floor(
+ (Date.parse(error.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3
+ );
+ state.log.warn(error.message);
+ state.log.warn(
+ `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.`
+ );
+ const { token: token3 } = await getAppAuthentication({
+ ...state,
+ timeDifference: diff
+ });
+ endpoint.headers.authorization = `bearer ${token3}`;
+ return request(endpoint);
+ }
+ return response;
+ }
+ if (requiresBasicAuth(url)) {
+ const authentication = await state.oauthApp({ type: "oauth-app" });
+ endpoint.headers.authorization = authentication.headers.authorization;
+ return request(endpoint);
+ }
+ const { token, createdAt } = await getInstallationAuthentication(
+ state,
+ // @ts-expect-error TBD
+ {},
+ request.defaults({ baseUrl: endpoint.baseUrl })
+ );
+ endpoint.headers.authorization = `token ${token}`;
+ return sendRequestWithRetries(
+ state,
+ request,
+ endpoint,
+ createdAt
+ );
+}
+async function sendRequestWithRetries(state, request, options, createdAt, retries = 0) {
+ const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);
+ try {
+ return await request(options);
+ } catch (error) {
+ if (error.status !== 401) {
+ throw error;
+ }
+ if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) {
+ if (retries > 0) {
+ error.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;
+ }
+ throw error;
+ }
+ ++retries;
+ const awaitTime = retries * 1e3;
+ state.log.warn(
+ `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`
+ );
+ await new Promise((resolve) => setTimeout(resolve, awaitTime));
+ return sendRequestWithRetries(state, request, options, createdAt, retries);
+ }
+}
+
+// pkg/dist-src/version.js
+var VERSION = "7.1.5";
+
+// pkg/dist-src/index.js
+import { createOAuthUserAuth } from "@octokit/auth-oauth-user";
+function createAppAuth(options) {
+ if (!options.appId) {
+ throw new Error("[@octokit/auth-app] appId option is required");
+ }
+ if (!options.privateKey) {
+ throw new Error("[@octokit/auth-app] privateKey option is required");
+ }
+ if ("installationId" in options && !options.installationId) {
+ throw new Error(
+ "[@octokit/auth-app] installationId is set to a falsy value"
+ );
+ }
+ const log = Object.assign(
+ {
+ warn: console.warn.bind(console)
+ },
+ options.log
+ );
+ const request = options.request || defaultRequest.defaults({
+ headers: {
+ "user-agent": `octokit-auth-app.js/${VERSION} ${getUserAgent()}`
+ }
+ });
+ const state = Object.assign(
+ {
+ request,
+ cache: getCache()
+ },
+ options,
+ options.installationId ? { installationId: Number(options.installationId) } : {},
+ {
+ log,
+ oauthApp: createOAuthAppAuth({
+ clientType: "github-app",
+ clientId: options.clientId || "",
+ clientSecret: options.clientSecret || "",
+ request
+ })
+ }
+ );
+ return Object.assign(auth.bind(null, state), {
+ hook: hook.bind(null, state)
+ });
+}
+export {
+ createAppAuth,
+ createOAuthUserAuth
+};
diff --git a/node_modules/@octokit/auth-app/dist-node/index.js.map b/node_modules/@octokit/auth-app/dist-node/index.js.map
new file mode 100644
index 0000000000..2736660a5f
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-node/index.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../dist-src/index.js", "../dist-src/get-app-authentication.js", "../dist-src/cache.js", "../dist-src/to-token-authentication.js", "../dist-src/get-installation-authentication.js", "../dist-src/auth.js", "../dist-src/hook.js", "../dist-src/requires-app-auth.js", "../dist-src/version.js"],
+ "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { request as defaultRequest } from \"@octokit/request\";\nimport { createOAuthAppAuth } from \"@octokit/auth-oauth-app\";\nimport { auth } from \"./auth.js\";\nimport { hook } from \"./hook.js\";\nimport { getCache } from \"./cache.js\";\nimport { VERSION } from \"./version.js\";\nimport { createOAuthUserAuth } from \"@octokit/auth-oauth-user\";\nfunction createAppAuth(options) {\n if (!options.appId) {\n throw new Error(\"[@octokit/auth-app] appId option is required\");\n }\n if (!options.privateKey) {\n throw new Error(\"[@octokit/auth-app] privateKey option is required\");\n }\n if (\"installationId\" in options && !options.installationId) {\n throw new Error(\n \"[@octokit/auth-app] installationId is set to a falsy value\"\n );\n }\n const log = Object.assign(\n {\n warn: console.warn.bind(console)\n },\n options.log\n );\n const request = options.request || defaultRequest.defaults({\n headers: {\n \"user-agent\": `octokit-auth-app.js/${VERSION} ${getUserAgent()}`\n }\n });\n const state = Object.assign(\n {\n request,\n cache: getCache()\n },\n options,\n options.installationId ? { installationId: Number(options.installationId) } : {},\n {\n log,\n oauthApp: createOAuthAppAuth({\n clientType: \"github-app\",\n clientId: options.clientId || \"\",\n clientSecret: options.clientSecret || \"\",\n request\n })\n }\n );\n return Object.assign(auth.bind(null, state), {\n hook: hook.bind(null, state)\n });\n}\nexport {\n createAppAuth,\n createOAuthUserAuth\n};\n", "import githubAppJwt from \"universal-github-app-jwt\";\nasync function getAppAuthentication({\n appId,\n privateKey,\n timeDifference\n}) {\n try {\n const authOptions = {\n id: appId,\n privateKey\n };\n if (timeDifference) {\n Object.assign(authOptions, {\n now: Math.floor(Date.now() / 1e3) + timeDifference\n });\n }\n const appAuthentication = await githubAppJwt(authOptions);\n return {\n type: \"app\",\n token: appAuthentication.token,\n appId: appAuthentication.appId,\n expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString()\n };\n } catch (error) {\n if (privateKey === \"-----BEGIN RSA PRIVATE KEY-----\") {\n throw new Error(\n \"The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\\n'\"\n );\n } else {\n throw error;\n }\n }\n}\nexport {\n getAppAuthentication\n};\n", "import { Lru } from \"toad-cache\";\nfunction getCache() {\n return new Lru(\n // cache max. 15000 tokens, that will use less than 10mb memory\n 15e3,\n // Cache for 1 minute less than GitHub expiry\n 1e3 * 60 * 59\n );\n}\nasync function get(cache, options) {\n const cacheKey = optionsToCacheKey(options);\n const result = await cache.get(cacheKey);\n if (!result) {\n return;\n }\n const [\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissionsString,\n singleFileName\n ] = result.split(\"|\");\n const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => {\n if (/!$/.test(string)) {\n permissions2[string.slice(0, -1)] = \"write\";\n } else {\n permissions2[string] = \"read\";\n }\n return permissions2;\n }, {});\n return {\n token,\n createdAt,\n expiresAt,\n permissions,\n repositoryIds: options.repositoryIds,\n repositoryNames: options.repositoryNames,\n singleFileName,\n repositorySelection\n };\n}\nasync function set(cache, options, data) {\n const key = optionsToCacheKey(options);\n const permissionsString = options.permissions ? \"\" : Object.keys(data.permissions).map(\n (name) => `${name}${data.permissions[name] === \"write\" ? \"!\" : \"\"}`\n ).join(\",\");\n const value = [\n data.token,\n data.createdAt,\n data.expiresAt,\n data.repositorySelection,\n permissionsString,\n data.singleFileName\n ].join(\"|\");\n await cache.set(key, value);\n}\nfunction optionsToCacheKey({\n installationId,\n permissions = {},\n repositoryIds = [],\n repositoryNames = []\n}) {\n const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === \"read\" ? name : `${name}!`).join(\",\");\n const repositoryIdsString = repositoryIds.sort().join(\",\");\n const repositoryNamesString = repositoryNames.join(\",\");\n return [\n installationId,\n repositoryIdsString,\n repositoryNamesString,\n permissionsString\n ].filter(Boolean).join(\"|\");\n}\nexport {\n get,\n getCache,\n set\n};\n", "function toTokenAuthentication({\n installationId,\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissions,\n repositoryIds,\n repositoryNames,\n singleFileName\n}) {\n return Object.assign(\n {\n type: \"token\",\n tokenType: \"installation\",\n token,\n installationId,\n permissions,\n createdAt,\n expiresAt,\n repositorySelection\n },\n repositoryIds ? { repositoryIds } : null,\n repositoryNames ? { repositoryNames } : null,\n singleFileName ? { singleFileName } : null\n );\n}\nexport {\n toTokenAuthentication\n};\n", "import { get, set } from \"./cache.js\";\nimport { getAppAuthentication } from \"./get-app-authentication.js\";\nimport { toTokenAuthentication } from \"./to-token-authentication.js\";\nasync function getInstallationAuthentication(state, options, customRequest) {\n const installationId = Number(options.installationId || state.installationId);\n if (!installationId) {\n throw new Error(\n \"[@octokit/auth-app] installationId option is required for installation authentication.\"\n );\n }\n if (options.factory) {\n const { type, factory, oauthApp, ...factoryAuthOptions } = {\n ...state,\n ...options\n };\n return factory(factoryAuthOptions);\n }\n const optionsWithInstallationTokenFromState = Object.assign(\n { installationId },\n options\n );\n if (!options.refresh) {\n const result = await get(\n state.cache,\n optionsWithInstallationTokenFromState\n );\n if (result) {\n const {\n token: token2,\n createdAt: createdAt2,\n expiresAt: expiresAt2,\n permissions: permissions2,\n repositoryIds: repositoryIds2,\n repositoryNames: repositoryNames2,\n singleFileName: singleFileName2,\n repositorySelection: repositorySelection2\n } = result;\n return toTokenAuthentication({\n installationId,\n token: token2,\n createdAt: createdAt2,\n expiresAt: expiresAt2,\n permissions: permissions2,\n repositorySelection: repositorySelection2,\n repositoryIds: repositoryIds2,\n repositoryNames: repositoryNames2,\n singleFileName: singleFileName2\n });\n }\n }\n const appAuthentication = await getAppAuthentication(state);\n const request = customRequest || state.request;\n const payload = {\n installation_id: installationId,\n mediaType: {\n previews: [\"machine-man\"]\n },\n headers: {\n authorization: `bearer ${appAuthentication.token}`\n }\n };\n if (options.repositoryIds) {\n Object.assign(payload, { repository_ids: options.repositoryIds });\n }\n if (options.repositoryNames) {\n Object.assign(payload, {\n repositories: options.repositoryNames\n });\n }\n if (options.permissions) {\n Object.assign(payload, { permissions: options.permissions });\n }\n const {\n data: {\n token,\n expires_at: expiresAt,\n repositories,\n permissions: permissionsOptional,\n repository_selection: repositorySelectionOptional,\n single_file: singleFileName\n }\n } = await request(\n \"POST /app/installations/{installation_id}/access_tokens\",\n payload\n );\n const permissions = permissionsOptional || {};\n const repositorySelection = repositorySelectionOptional || \"all\";\n const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0;\n const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0;\n const createdAt = (/* @__PURE__ */ new Date()).toISOString();\n const cacheOptions = {\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissions,\n repositoryIds,\n repositoryNames\n };\n if (singleFileName) {\n Object.assign(payload, { singleFileName });\n }\n await set(state.cache, optionsWithInstallationTokenFromState, cacheOptions);\n const cacheData = {\n installationId,\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissions,\n repositoryIds,\n repositoryNames\n };\n if (singleFileName) {\n Object.assign(cacheData, { singleFileName });\n }\n return toTokenAuthentication(cacheData);\n}\nexport {\n getInstallationAuthentication\n};\n", "import { getAppAuthentication } from \"./get-app-authentication.js\";\nimport { getInstallationAuthentication } from \"./get-installation-authentication.js\";\nasync function auth(state, authOptions) {\n switch (authOptions.type) {\n case \"app\":\n return getAppAuthentication(state);\n case \"oauth-app\":\n return state.oauthApp({ type: \"oauth-app\" });\n case \"installation\":\n authOptions;\n return getInstallationAuthentication(state, {\n ...authOptions,\n type: \"installation\"\n });\n case \"oauth-user\":\n return state.oauthApp(authOptions);\n default:\n throw new Error(`Invalid auth type: ${authOptions.type}`);\n }\n}\nexport {\n auth\n};\n", "import { requiresBasicAuth } from \"@octokit/auth-oauth-user\";\nimport { RequestError } from \"@octokit/request-error\";\nimport { getAppAuthentication } from \"./get-app-authentication.js\";\nimport { getInstallationAuthentication } from \"./get-installation-authentication.js\";\nimport { requiresAppAuth } from \"./requires-app-auth.js\";\nconst FIVE_SECONDS_IN_MS = 5 * 1e3;\nfunction isNotTimeSkewError(error) {\n return !(error.message.match(\n /'Expiration time' claim \\('exp'\\) must be a numeric value representing the future time at which the assertion expires/\n ) || error.message.match(\n /'Issued at' claim \\('iat'\\) must be an Integer representing the time that the assertion was issued/\n ));\n}\nasync function hook(state, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n const url = endpoint.url;\n if (/\\/login\\/oauth\\/access_token$/.test(url)) {\n return request(endpoint);\n }\n if (requiresAppAuth(url.replace(request.endpoint.DEFAULTS.baseUrl, \"\"))) {\n const { token: token2 } = await getAppAuthentication(state);\n endpoint.headers.authorization = `bearer ${token2}`;\n let response;\n try {\n response = await request(endpoint);\n } catch (error) {\n if (isNotTimeSkewError(error)) {\n throw error;\n }\n if (typeof error.response.headers.date === \"undefined\") {\n throw error;\n }\n const diff = Math.floor(\n (Date.parse(error.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3\n );\n state.log.warn(error.message);\n state.log.warn(\n `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.`\n );\n const { token: token3 } = await getAppAuthentication({\n ...state,\n timeDifference: diff\n });\n endpoint.headers.authorization = `bearer ${token3}`;\n return request(endpoint);\n }\n return response;\n }\n if (requiresBasicAuth(url)) {\n const authentication = await state.oauthApp({ type: \"oauth-app\" });\n endpoint.headers.authorization = authentication.headers.authorization;\n return request(endpoint);\n }\n const { token, createdAt } = await getInstallationAuthentication(\n state,\n // @ts-expect-error TBD\n {},\n request.defaults({ baseUrl: endpoint.baseUrl })\n );\n endpoint.headers.authorization = `token ${token}`;\n return sendRequestWithRetries(\n state,\n request,\n endpoint,\n createdAt\n );\n}\nasync function sendRequestWithRetries(state, request, options, createdAt, retries = 0) {\n const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);\n try {\n return await request(options);\n } catch (error) {\n if (error.status !== 401) {\n throw error;\n }\n if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) {\n if (retries > 0) {\n error.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;\n }\n throw error;\n }\n ++retries;\n const awaitTime = retries * 1e3;\n state.log.warn(\n `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`\n );\n await new Promise((resolve) => setTimeout(resolve, awaitTime));\n return sendRequestWithRetries(state, request, options, createdAt, retries);\n }\n}\nexport {\n hook\n};\n", "const PATHS = [\n \"/app\",\n \"/app/hook/config\",\n \"/app/hook/deliveries\",\n \"/app/hook/deliveries/{delivery_id}\",\n \"/app/hook/deliveries/{delivery_id}/attempts\",\n \"/app/installations\",\n \"/app/installations/{installation_id}\",\n \"/app/installations/{installation_id}/access_tokens\",\n \"/app/installations/{installation_id}/suspended\",\n \"/app/installation-requests\",\n \"/marketplace_listing/accounts/{account_id}\",\n \"/marketplace_listing/plan\",\n \"/marketplace_listing/plans\",\n \"/marketplace_listing/plans/{plan_id}/accounts\",\n \"/marketplace_listing/stubbed/accounts/{account_id}\",\n \"/marketplace_listing/stubbed/plan\",\n \"/marketplace_listing/stubbed/plans\",\n \"/marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"/orgs/{org}/installation\",\n \"/repos/{owner}/{repo}/installation\",\n \"/users/{username}/installation\"\n];\nfunction routeMatcher(paths) {\n const regexes = paths.map(\n (p) => p.split(\"/\").map((c) => c.startsWith(\"{\") ? \"(?:.+?)\" : c).join(\"/\")\n );\n const regex = `^(?:${regexes.map((r) => `(?:${r})`).join(\"|\")})$`;\n return new RegExp(regex, \"i\");\n}\nconst REGEX = routeMatcher(PATHS);\nfunction requiresAppAuth(url) {\n return !!url && REGEX.test(url.split(\"?\")[0]);\n}\nexport {\n requiresAppAuth\n};\n", "const VERSION = \"7.1.5\";\nexport {\n VERSION\n};\n"],
+ "mappings": "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",
+ "names": []
+}
diff --git a/node_modules/@octokit/auth-app/dist-src/auth.js b/node_modules/@octokit/auth-app/dist-src/auth.js
new file mode 100644
index 0000000000..42e98079df
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/auth.js
@@ -0,0 +1,23 @@
+import { getAppAuthentication } from "./get-app-authentication.js";
+import { getInstallationAuthentication } from "./get-installation-authentication.js";
+async function auth(state, authOptions) {
+ switch (authOptions.type) {
+ case "app":
+ return getAppAuthentication(state);
+ case "oauth-app":
+ return state.oauthApp({ type: "oauth-app" });
+ case "installation":
+ authOptions;
+ return getInstallationAuthentication(state, {
+ ...authOptions,
+ type: "installation"
+ });
+ case "oauth-user":
+ return state.oauthApp(authOptions);
+ default:
+ throw new Error(`Invalid auth type: ${authOptions.type}`);
+ }
+}
+export {
+ auth
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/cache.js b/node_modules/@octokit/auth-app/dist-src/cache.js
new file mode 100644
index 0000000000..8299186a0e
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/cache.js
@@ -0,0 +1,78 @@
+import { Lru } from "toad-cache";
+function getCache() {
+ return new Lru(
+ // cache max. 15000 tokens, that will use less than 10mb memory
+ 15e3,
+ // Cache for 1 minute less than GitHub expiry
+ 1e3 * 60 * 59
+ );
+}
+async function get(cache, options) {
+ const cacheKey = optionsToCacheKey(options);
+ const result = await cache.get(cacheKey);
+ if (!result) {
+ return;
+ }
+ const [
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissionsString,
+ singleFileName
+ ] = result.split("|");
+ const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => {
+ if (/!$/.test(string)) {
+ permissions2[string.slice(0, -1)] = "write";
+ } else {
+ permissions2[string] = "read";
+ }
+ return permissions2;
+ }, {});
+ return {
+ token,
+ createdAt,
+ expiresAt,
+ permissions,
+ repositoryIds: options.repositoryIds,
+ repositoryNames: options.repositoryNames,
+ singleFileName,
+ repositorySelection
+ };
+}
+async function set(cache, options, data) {
+ const key = optionsToCacheKey(options);
+ const permissionsString = options.permissions ? "" : Object.keys(data.permissions).map(
+ (name) => `${name}${data.permissions[name] === "write" ? "!" : ""}`
+ ).join(",");
+ const value = [
+ data.token,
+ data.createdAt,
+ data.expiresAt,
+ data.repositorySelection,
+ permissionsString,
+ data.singleFileName
+ ].join("|");
+ await cache.set(key, value);
+}
+function optionsToCacheKey({
+ installationId,
+ permissions = {},
+ repositoryIds = [],
+ repositoryNames = []
+}) {
+ const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === "read" ? name : `${name}!`).join(",");
+ const repositoryIdsString = repositoryIds.sort().join(",");
+ const repositoryNamesString = repositoryNames.join(",");
+ return [
+ installationId,
+ repositoryIdsString,
+ repositoryNamesString,
+ permissionsString
+ ].filter(Boolean).join("|");
+}
+export {
+ get,
+ getCache,
+ set
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/get-app-authentication.js b/node_modules/@octokit/auth-app/dist-src/get-app-authentication.js
new file mode 100644
index 0000000000..9fda5c1466
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/get-app-authentication.js
@@ -0,0 +1,36 @@
+import githubAppJwt from "universal-github-app-jwt";
+async function getAppAuthentication({
+ appId,
+ privateKey,
+ timeDifference
+}) {
+ try {
+ const authOptions = {
+ id: appId,
+ privateKey
+ };
+ if (timeDifference) {
+ Object.assign(authOptions, {
+ now: Math.floor(Date.now() / 1e3) + timeDifference
+ });
+ }
+ const appAuthentication = await githubAppJwt(authOptions);
+ return {
+ type: "app",
+ token: appAuthentication.token,
+ appId: appAuthentication.appId,
+ expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString()
+ };
+ } catch (error) {
+ if (privateKey === "-----BEGIN RSA PRIVATE KEY-----") {
+ throw new Error(
+ "The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'"
+ );
+ } else {
+ throw error;
+ }
+ }
+}
+export {
+ getAppAuthentication
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/get-installation-authentication.js b/node_modules/@octokit/auth-app/dist-src/get-installation-authentication.js
new file mode 100644
index 0000000000..bc083c9c04
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/get-installation-authentication.js
@@ -0,0 +1,121 @@
+import { get, set } from "./cache.js";
+import { getAppAuthentication } from "./get-app-authentication.js";
+import { toTokenAuthentication } from "./to-token-authentication.js";
+async function getInstallationAuthentication(state, options, customRequest) {
+ const installationId = Number(options.installationId || state.installationId);
+ if (!installationId) {
+ throw new Error(
+ "[@octokit/auth-app] installationId option is required for installation authentication."
+ );
+ }
+ if (options.factory) {
+ const { type, factory, oauthApp, ...factoryAuthOptions } = {
+ ...state,
+ ...options
+ };
+ return factory(factoryAuthOptions);
+ }
+ const optionsWithInstallationTokenFromState = Object.assign(
+ { installationId },
+ options
+ );
+ if (!options.refresh) {
+ const result = await get(
+ state.cache,
+ optionsWithInstallationTokenFromState
+ );
+ if (result) {
+ const {
+ token: token2,
+ createdAt: createdAt2,
+ expiresAt: expiresAt2,
+ permissions: permissions2,
+ repositoryIds: repositoryIds2,
+ repositoryNames: repositoryNames2,
+ singleFileName: singleFileName2,
+ repositorySelection: repositorySelection2
+ } = result;
+ return toTokenAuthentication({
+ installationId,
+ token: token2,
+ createdAt: createdAt2,
+ expiresAt: expiresAt2,
+ permissions: permissions2,
+ repositorySelection: repositorySelection2,
+ repositoryIds: repositoryIds2,
+ repositoryNames: repositoryNames2,
+ singleFileName: singleFileName2
+ });
+ }
+ }
+ const appAuthentication = await getAppAuthentication(state);
+ const request = customRequest || state.request;
+ const payload = {
+ installation_id: installationId,
+ mediaType: {
+ previews: ["machine-man"]
+ },
+ headers: {
+ authorization: `bearer ${appAuthentication.token}`
+ }
+ };
+ if (options.repositoryIds) {
+ Object.assign(payload, { repository_ids: options.repositoryIds });
+ }
+ if (options.repositoryNames) {
+ Object.assign(payload, {
+ repositories: options.repositoryNames
+ });
+ }
+ if (options.permissions) {
+ Object.assign(payload, { permissions: options.permissions });
+ }
+ const {
+ data: {
+ token,
+ expires_at: expiresAt,
+ repositories,
+ permissions: permissionsOptional,
+ repository_selection: repositorySelectionOptional,
+ single_file: singleFileName
+ }
+ } = await request(
+ "POST /app/installations/{installation_id}/access_tokens",
+ payload
+ );
+ const permissions = permissionsOptional || {};
+ const repositorySelection = repositorySelectionOptional || "all";
+ const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0;
+ const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0;
+ const createdAt = (/* @__PURE__ */ new Date()).toISOString();
+ const cacheOptions = {
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames
+ };
+ if (singleFileName) {
+ Object.assign(payload, { singleFileName });
+ }
+ await set(state.cache, optionsWithInstallationTokenFromState, cacheOptions);
+ const cacheData = {
+ installationId,
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames
+ };
+ if (singleFileName) {
+ Object.assign(cacheData, { singleFileName });
+ }
+ return toTokenAuthentication(cacheData);
+}
+export {
+ getInstallationAuthentication
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/hook.js b/node_modules/@octokit/auth-app/dist-src/hook.js
new file mode 100644
index 0000000000..e5ab01ea7b
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/hook.js
@@ -0,0 +1,93 @@
+import { requiresBasicAuth } from "@octokit/auth-oauth-user";
+import { RequestError } from "@octokit/request-error";
+import { getAppAuthentication } from "./get-app-authentication.js";
+import { getInstallationAuthentication } from "./get-installation-authentication.js";
+import { requiresAppAuth } from "./requires-app-auth.js";
+const FIVE_SECONDS_IN_MS = 5 * 1e3;
+function isNotTimeSkewError(error) {
+ return !(error.message.match(
+ /'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/
+ ) || error.message.match(
+ /'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/
+ ));
+}
+async function hook(state, request, route, parameters) {
+ const endpoint = request.endpoint.merge(route, parameters);
+ const url = endpoint.url;
+ if (/\/login\/oauth\/access_token$/.test(url)) {
+ return request(endpoint);
+ }
+ if (requiresAppAuth(url.replace(request.endpoint.DEFAULTS.baseUrl, ""))) {
+ const { token: token2 } = await getAppAuthentication(state);
+ endpoint.headers.authorization = `bearer ${token2}`;
+ let response;
+ try {
+ response = await request(endpoint);
+ } catch (error) {
+ if (isNotTimeSkewError(error)) {
+ throw error;
+ }
+ if (typeof error.response.headers.date === "undefined") {
+ throw error;
+ }
+ const diff = Math.floor(
+ (Date.parse(error.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3
+ );
+ state.log.warn(error.message);
+ state.log.warn(
+ `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.`
+ );
+ const { token: token3 } = await getAppAuthentication({
+ ...state,
+ timeDifference: diff
+ });
+ endpoint.headers.authorization = `bearer ${token3}`;
+ return request(endpoint);
+ }
+ return response;
+ }
+ if (requiresBasicAuth(url)) {
+ const authentication = await state.oauthApp({ type: "oauth-app" });
+ endpoint.headers.authorization = authentication.headers.authorization;
+ return request(endpoint);
+ }
+ const { token, createdAt } = await getInstallationAuthentication(
+ state,
+ // @ts-expect-error TBD
+ {},
+ request.defaults({ baseUrl: endpoint.baseUrl })
+ );
+ endpoint.headers.authorization = `token ${token}`;
+ return sendRequestWithRetries(
+ state,
+ request,
+ endpoint,
+ createdAt
+ );
+}
+async function sendRequestWithRetries(state, request, options, createdAt, retries = 0) {
+ const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);
+ try {
+ return await request(options);
+ } catch (error) {
+ if (error.status !== 401) {
+ throw error;
+ }
+ if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) {
+ if (retries > 0) {
+ error.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;
+ }
+ throw error;
+ }
+ ++retries;
+ const awaitTime = retries * 1e3;
+ state.log.warn(
+ `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`
+ );
+ await new Promise((resolve) => setTimeout(resolve, awaitTime));
+ return sendRequestWithRetries(state, request, options, createdAt, retries);
+ }
+}
+export {
+ hook
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/index.js b/node_modules/@octokit/auth-app/dist-src/index.js
new file mode 100644
index 0000000000..25f76d99e6
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/index.js
@@ -0,0 +1,56 @@
+import { getUserAgent } from "universal-user-agent";
+import { request as defaultRequest } from "@octokit/request";
+import { createOAuthAppAuth } from "@octokit/auth-oauth-app";
+import { auth } from "./auth.js";
+import { hook } from "./hook.js";
+import { getCache } from "./cache.js";
+import { VERSION } from "./version.js";
+import { createOAuthUserAuth } from "@octokit/auth-oauth-user";
+function createAppAuth(options) {
+ if (!options.appId) {
+ throw new Error("[@octokit/auth-app] appId option is required");
+ }
+ if (!options.privateKey) {
+ throw new Error("[@octokit/auth-app] privateKey option is required");
+ }
+ if ("installationId" in options && !options.installationId) {
+ throw new Error(
+ "[@octokit/auth-app] installationId is set to a falsy value"
+ );
+ }
+ const log = Object.assign(
+ {
+ warn: console.warn.bind(console)
+ },
+ options.log
+ );
+ const request = options.request || defaultRequest.defaults({
+ headers: {
+ "user-agent": `octokit-auth-app.js/${VERSION} ${getUserAgent()}`
+ }
+ });
+ const state = Object.assign(
+ {
+ request,
+ cache: getCache()
+ },
+ options,
+ options.installationId ? { installationId: Number(options.installationId) } : {},
+ {
+ log,
+ oauthApp: createOAuthAppAuth({
+ clientType: "github-app",
+ clientId: options.clientId || "",
+ clientSecret: options.clientSecret || "",
+ request
+ })
+ }
+ );
+ return Object.assign(auth.bind(null, state), {
+ hook: hook.bind(null, state)
+ });
+}
+export {
+ createAppAuth,
+ createOAuthUserAuth
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/requires-app-auth.js b/node_modules/@octokit/auth-app/dist-src/requires-app-auth.js
new file mode 100644
index 0000000000..5e61d37cc2
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/requires-app-auth.js
@@ -0,0 +1,37 @@
+const PATHS = [
+ "/app",
+ "/app/hook/config",
+ "/app/hook/deliveries",
+ "/app/hook/deliveries/{delivery_id}",
+ "/app/hook/deliveries/{delivery_id}/attempts",
+ "/app/installations",
+ "/app/installations/{installation_id}",
+ "/app/installations/{installation_id}/access_tokens",
+ "/app/installations/{installation_id}/suspended",
+ "/app/installation-requests",
+ "/marketplace_listing/accounts/{account_id}",
+ "/marketplace_listing/plan",
+ "/marketplace_listing/plans",
+ "/marketplace_listing/plans/{plan_id}/accounts",
+ "/marketplace_listing/stubbed/accounts/{account_id}",
+ "/marketplace_listing/stubbed/plan",
+ "/marketplace_listing/stubbed/plans",
+ "/marketplace_listing/stubbed/plans/{plan_id}/accounts",
+ "/orgs/{org}/installation",
+ "/repos/{owner}/{repo}/installation",
+ "/users/{username}/installation"
+];
+function routeMatcher(paths) {
+ const regexes = paths.map(
+ (p) => p.split("/").map((c) => c.startsWith("{") ? "(?:.+?)" : c).join("/")
+ );
+ const regex = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})$`;
+ return new RegExp(regex, "i");
+}
+const REGEX = routeMatcher(PATHS);
+function requiresAppAuth(url) {
+ return !!url && REGEX.test(url.split("?")[0]);
+}
+export {
+ requiresAppAuth
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/to-token-authentication.js b/node_modules/@octokit/auth-app/dist-src/to-token-authentication.js
new file mode 100644
index 0000000000..9ba6e034b7
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/to-token-authentication.js
@@ -0,0 +1,30 @@
+function toTokenAuthentication({
+ installationId,
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames,
+ singleFileName
+}) {
+ return Object.assign(
+ {
+ type: "token",
+ tokenType: "installation",
+ token,
+ installationId,
+ permissions,
+ createdAt,
+ expiresAt,
+ repositorySelection
+ },
+ repositoryIds ? { repositoryIds } : null,
+ repositoryNames ? { repositoryNames } : null,
+ singleFileName ? { singleFileName } : null
+ );
+}
+export {
+ toTokenAuthentication
+};
diff --git a/node_modules/@octokit/auth-app/dist-src/version.js b/node_modules/@octokit/auth-app/dist-src/version.js
new file mode 100644
index 0000000000..ef7b88a24e
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-src/version.js
@@ -0,0 +1,4 @@
+const VERSION = "7.1.5";
+export {
+ VERSION
+};
diff --git a/node_modules/@octokit/auth-app/dist-types/auth.d.ts b/node_modules/@octokit/auth-app/dist-types/auth.d.ts
new file mode 100644
index 0000000000..64bd069a64
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-types/auth.d.ts
@@ -0,0 +1,20 @@
+import type * as OAuthAppAuth from "@octokit/auth-oauth-app";
+import type { State, AppAuthOptions, AppAuthentication, OAuthAppAuthentication, OAuthAppAuthOptions, InstallationAuthOptions, InstallationAccessTokenAuthentication, GitHubAppUserAuthentication, GitHubAppUserAuthenticationWithExpiration, OAuthWebFlowAuthOptions, OAuthDeviceFlowAuthOptions } from "./types.js";
+/** GitHub App authentication */
+export declare function auth(state: State, authOptions: AppAuthOptions): Promise;
+/** OAuth App authentication */
+export declare function auth(state: State, authOptions: OAuthAppAuthOptions): Promise;
+/** Installation authentication */
+export declare function auth(state: State, authOptions: InstallationAuthOptions): Promise;
+/** User Authentication via OAuth web flow */
+export declare function auth(state: State, authOptions: OAuthWebFlowAuthOptions): Promise;
+/** GitHub App Web flow with `factory` option */
+export declare function auth(state: State, authOptions: OAuthWebFlowAuthOptions & {
+ factory: OAuthAppAuth.FactoryGitHubWebFlow;
+}): Promise;
+/** User Authentication via OAuth Device flow */
+export declare function auth(state: State, authOptions: OAuthDeviceFlowAuthOptions): Promise;
+/** GitHub App Device flow with `factory` option */
+export declare function auth(state: State, authOptions: OAuthDeviceFlowAuthOptions & {
+ factory: OAuthAppAuth.FactoryGitHubDeviceFlow;
+}): Promise;
diff --git a/node_modules/@octokit/auth-app/dist-types/cache.d.ts b/node_modules/@octokit/auth-app/dist-types/cache.d.ts
new file mode 100644
index 0000000000..a4ada33f94
--- /dev/null
+++ b/node_modules/@octokit/auth-app/dist-types/cache.d.ts
@@ -0,0 +1,5 @@
+import { Lru } from "toad-cache";
+import type { InstallationAuthOptions, Cache, CacheData, InstallationAccessTokenData } from "./types.js";
+export declare function getCache(): Lru;
+export declare function get(cache: Cache, options: InstallationAuthOptions): Promise