From afa542e742a93a85f94d866580a40c629620abb8 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 30 Jul 2026 18:43:52 +0200 Subject: [PATCH 1/2] feat: auto-update star count --- .env.example | 4 +- .github/workflows/preview-community.yaml | 12 + .github/workflows/production.yaml | 15 + README.md | 29 +- src/scripts/generate-library-data.ts | 332 +++++++++++++---------- 5 files changed, 237 insertions(+), 155 deletions(-) diff --git a/.env.example b/.env.example index 9b14ae0d..3b926cd6 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1 @@ -GITHUB_APP_ID= -GITHUB_APP_PRIVATE_KEY= -GITHUB_INSTALLATION_ID= +GITHUB_TOKEN= diff --git a/.github/workflows/preview-community.yaml b/.github/workflows/preview-community.yaml index 3e65c101..7abac613 100644 --- a/.github/workflows/preview-community.yaml +++ b/.github/workflows/preview-community.yaml @@ -2,6 +2,8 @@ name: Vercel Preview Community Deployment env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.PREVIEW_VERCEL_PROJECT_ID }} +permissions: + contents: read on: push: branches: @@ -13,6 +15,16 @@ jobs: steps: - name: Checkout the Codebase uses: actions/checkout@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + - name: Install dependencies + run: npm ci + - name: Refresh library star counts + run: npm run generate:library-data + env: + GITHUB_TOKEN: ${{ github.token }} - name: Install Vercel CLI run: npm install --global vercel@latest - name: Deploy on Vercel diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml index 88ba5c88..d6a09edb 100644 --- a/.github/workflows/production.yaml +++ b/.github/workflows/production.yaml @@ -2,11 +2,16 @@ name: Vercel Production Deployment env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} +permissions: + contents: read on: push: branches: - master - production + schedule: + - cron: "0 6 * * 1" + workflow_dispatch: jobs: test: runs-on: ubuntu-latest @@ -44,6 +49,16 @@ jobs: steps: - name: Checkout the Codebase uses: actions/checkout@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + - name: Install dependencies + run: npm ci + - name: Refresh library star counts + run: npm run generate:library-data + env: + GITHUB_TOKEN: ${{ github.token }} - name: Install Vercel CLI run: npm install --global vercel@latest - name: Deploy on Vercel diff --git a/README.md b/README.md index 4ec5770e..3b34f2b3 100644 --- a/README.md +++ b/README.md @@ -22,32 +22,37 @@ This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-opti ## Generate Data for Libraries page -First, create a GitHub Application. +If GitHub CLI is already authenticated, update the library star counts using +your existing credentials: -Generate a private key for the GitHub application. - -Install the application. +```bash +GITHUB_TOKEN="$(gh auth token)" npm run generate:library-data +``` -Generate a `.env` file based on the `.env.example` file: +Alternatively, generate a `.env` file based on the `.env.example` file: ```bash cp .env.example .env ``` -Then, you'll need to add the values with your private key, app id and installation id into the `.env`file: +Then, add your personal GitHub access token to the `.env` file: ```bash -GITHUB_APP_ID= -GITHUB_APP_PRIVATE_KEY= -GITHUB_INSTALLATION_ID= +GITHUB_TOKEN= ``` -Run the `libraries.js` script to generate the `libraries.json` file: +Then run the generator: ```bash -node libraries.js +npm run generate:library-data ``` +Both commands update `src/data/libraries-next.json`. + +Production deployments refresh the star counts automatically using the +workflow's built-in GitHub token. The production workflow also runs every +Monday at 06:00 UTC. + ## Learn More To learn more about Next.js, take a look at the following resources: @@ -65,4 +70,4 @@ Check out our [Next.js deployment documentation](https://nextjs.org/docs/deploym ## License -This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details \ No newline at end of file +This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details diff --git a/src/scripts/generate-library-data.ts b/src/scripts/generate-library-data.ts index bf8e3238..1399941d 100644 --- a/src/scripts/generate-library-data.ts +++ b/src/scripts/generate-library-data.ts @@ -1,203 +1,255 @@ +import { readFile, rename, writeFile } from "node:fs/promises"; +import { join } from "node:path"; import { Octokit } from "octokit"; -import { join } from "path"; -import { createAppAuth } from "@octokit/auth-app"; -import { err, ok, Result } from "neverthrow"; +import { format } from "prettier"; import "dotenv/config"; -import { writeFileSync } from "node:fs"; -import { LibraryCategoryModel } from "@/features/libraries/models/library-category.model"; -import { safeDecodeBase64url } from "@/features/common/services/utils"; - -// TODO: we need to update this with the repository that's going to be public with only the JSON files -const owner = "auth0-developer-hub"; -const repository = "jsonwebtoken.github.io"; -const branch = "chore/update-footer-links"; - -const octokit = new Octokit({ - authStrategy: createAppAuth, - auth: { - appId: process.env.GITHUB_APP_ID, - privateKey: process.env.GITHUB_APP_PRIVATE_KEY, - installationId: process.env.GITHUB_INSTALLATION_ID, - }, -}); - -function numericCompare(a: string, b: string): number { - const lhs = parseInt(a, 10); - const rhs = parseInt(b, 10); - return lhs - rhs; -} +import type { LibraryCategoryModel } from "@/features/libraries/models/library-category.model"; +import type { LibraryModel } from "@/features/libraries/models/library.model"; -async function authenticateGitHubApp(): Promise> { - try { - await octokit.rest.apps.getAuthenticated(); +const DATA_FILE_PATH = join( + process.cwd(), + "src", + "data", + "libraries-next.json", +); +const REQUEST_CONCURRENCY = 8; - return ok(true); - } catch (error) { - console.error(error); +type LibraryDictionary = Record; - return err("Something went wrong when authenticating the GitHub App"); - } +interface GitHubRepository { + owner: string; + repo: string; + fullName: string; } -async function getLanguageJsonFilePaths(): Promise> { - const path = "views/website/libraries"; - - const response = await octokit.rest.repos.getContent({ - owner: owner, - repo: repository, - ref: branch, - path: path, - }); +interface RepositoryLibraries extends GitHubRepository { + libraries: LibraryModel[]; +} - const { data } = response; +function getRequiredEnvironmentVariable(name: string): string { + const value = process.env[name]; - if (!Array.isArray(data)) { - return err("Unable to get language JSON file paths."); + if (!value) { + throw new Error(`Missing required environment variable: ${name}`); } - return ok( - data.filter((file) => file.name.endsWith(".json")).map((file) => file.path), - ); + return value; } -async function getContentLanguage( - filePath: string, -): Promise> { - const contentResponse = await octokit.rest.repos.getContent({ - owner: owner, - repo: repository, - ref: branch, - path: filePath, +function createOctokit(): Octokit { + return new Octokit({ + auth: getRequiredEnvironmentVariable("GITHUB_TOKEN"), }); +} - const { data } = contentResponse; +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} - if (Array.isArray(data)) { - return err(`Invalid content response`); +function assertLibraryDictionary( + value: unknown, +): asserts value is LibraryDictionary { + if (!isRecord(value)) { + throw new Error("Library data must be a JSON object"); } - if (data.type !== "file") { - return err(`Invalid data type in content response`); + for (const [categoryName, category] of Object.entries(value)) { + if (!isRecord(category) || !Array.isArray(category.libs)) { + throw new Error(`Invalid library category: ${categoryName}`); + } } +} + +async function readLibraryDictionary(): Promise { + let source: string; - const { content } = data; + try { + source = await readFile(DATA_FILE_PATH, "utf8"); + } catch (cause) { + throw new Error(`Unable to read ${DATA_FILE_PATH}`, { cause }); + } - const safeDecodeBase64urlResult = safeDecodeBase64url(content); + let dictionary: unknown; - if (safeDecodeBase64urlResult.isErr()) { - return err(safeDecodeBase64urlResult.error); + try { + dictionary = JSON.parse(source); + } catch (cause) { + throw new Error(`Unable to parse ${DATA_FILE_PATH}`, { cause }); } - const decodedContentData = safeDecodeBase64urlResult.value; + assertLibraryDictionary(dictionary); - return ok(JSON.parse(decodedContentData)); + return dictionary; } -async function getCategories(): Promise< - Result -> { - const getLanguageJsonFilePathsResult = await getLanguageJsonFilePaths(); +function parseGitHubRepositoryPath(gitHubRepoPath: string): GitHubRepository { + const [owner, repo] = gitHubRepoPath.split("/"); - if (getLanguageJsonFilePathsResult.isErr()) { - return err(getLanguageJsonFilePathsResult.error); + if (!owner || !repo) { + throw new Error(`Invalid GitHub repository path: ${gitHubRepoPath}`); } - const filePaths = getLanguageJsonFilePathsResult.value.sort(numericCompare); + return { + owner, + repo, + fullName: `${owner}/${repo}`, + }; +} - const categories: LibraryCategoryModel[] = []; +function collectLibrariesByRepository( + dictionary: LibraryDictionary, +): RepositoryLibraries[] { + const repositories = new Map(); - for (let i = 0; i < filePaths.length; i++) { - const filePath = filePaths[i]; + for (const category of Object.values(dictionary)) { + for (const library of category.libs) { + if (!library.gitHubRepoPath) { + continue; + } - const result = await getContentLanguage(filePath); + const repository = parseGitHubRepositoryPath(library.gitHubRepoPath); + const existing = repositories.get(repository.fullName); - if (result.isErr()) { - return err(`No language data available for path: ${filePath}`); + if (existing) { + existing.libraries.push(library); + } else { + repositories.set(repository.fullName, { + ...repository, + libraries: [library], + }); + } } - - categories.push(result.value); } - categories.sort((a: LibraryCategoryModel, b: LibraryCategoryModel) => { - const nameA = a.name.toUpperCase(); // ignore upper and lowercase - const nameB = b.name.toUpperCase(); // ignore upper and lowercase - - if (nameA < nameB) { - return -1; - } - if (nameA > nameB) { - return 1; - } - - return 0; - }); - - return ok(categories); + return Array.from(repositories.values()); } -async function aggregateLibraryStars() { - const isAuthenticated = await authenticateGitHubApp(); +async function authenticateGitHubToken(octokit: Octokit): Promise { + try { + await octokit.rest.rateLimit.get(); + } catch (cause) { + throw new Error("Unable to authenticate GITHUB_TOKEN", { cause }); + } +} - if (isAuthenticated.isOk()) { - const getCategoriesResult = await getCategories(); +async function getStarCount( + octokit: Octokit, + repository: GitHubRepository, +): Promise { + try { + const response = await octokit.rest.repos.get({ + owner: repository.owner, + repo: repository.repo, + }); + + return response.data.stargazers_count; + } catch (cause) { + throw new Error(`Unable to get the star count for ${repository.fullName}`, { + cause, + }); + } +} - if (getCategoriesResult.isErr()) { - console.error(getCategoriesResult.error); +async function getStarCounts( + octokit: Octokit, + repositories: RepositoryLibraries[], +): Promise> { + const starCounts = new Map(); + + for ( + let index = 0; + index < repositories.length; + index += REQUEST_CONCURRENCY + ) { + const batch = repositories.slice(index, index + REQUEST_CONCURRENCY); + const results = await Promise.allSettled( + batch.map(async (repository) => { + const stars = await getStarCount(octokit, repository); + + return [repository.fullName, stars] as const; + }), + ); - return; + for (const result of results) { + if (result.status === "fulfilled") { + const [repository, stars] = result.value; + starCounts.set(repository, stars); + } else { + console.warn( + result.reason instanceof Error + ? result.reason.message + : "Unable to get a repository star count", + ); + } } + } - const categories = getCategoriesResult.value; + return starCounts; +} - for (let i = 0; i < categories.length; i++) { - const category = categories[i]; +function updateStarCounts( + repositories: RepositoryLibraries[], + starCounts: Map, +): number { + let updatedLibraries = 0; - if (!category) { - continue; - } - - for (let j = 0; j < category.libs.length; j++) { - const lib = category.libs[j]; + for (const repository of repositories) { + const stars = starCounts.get(repository.fullName); - if (!lib) { - continue; - } + if (stars === undefined) { + continue; + } - const { gitHubRepoPath } = lib; + for (const library of repository.libraries) { + library.stars = stars; + updatedLibraries += 1; + } + } - if (!gitHubRepoPath) { - continue; - } + return updatedLibraries; +} - const [owner, repo] = gitHubRepoPath.split("/"); +async function writeLibraryDictionary( + dictionary: LibraryDictionary, +): Promise { + const temporaryFilePath = `${DATA_FILE_PATH}.${process.pid}.tmp`; + const output = await format(JSON.stringify(dictionary), { parser: "json" }); - const response = await octokit.rest.repos.get({ owner, repo }); + try { + await writeFile(temporaryFilePath, output, "utf8"); + await rename(temporaryFilePath, DATA_FILE_PATH); + } catch (cause) { + throw new Error(`Unable to write ${DATA_FILE_PATH}`, { cause }); + } +} - lib.stars = response.data.stargazers_count; - } - } +async function main(): Promise { + const dictionary = await readLibraryDictionary(); + const repositories = collectLibrariesByRepository(dictionary); + const octokit = createOctokit(); - const dictionary: { [index: string]: LibraryCategoryModel } = {}; + await authenticateGitHubToken(octokit); - for (let i = 0; i < categories.length; i++) { - const category = categories[i]; + const starCounts = await getStarCounts(octokit, repositories); + const updatedLibraries = updateStarCounts(repositories, starCounts); + const failedRepositories = repositories.length - starCounts.size; - if (dictionary[category.name]) { - continue; - } + await writeLibraryDictionary(dictionary); - dictionary[category.name] = category; - } + console.log( + `Updated ${updatedLibraries} library entries from ${starCounts.size} GitHub repositories.`, + ); - writeFileSync( - join(process.cwd(), "src", "data", "libraries.json"), - JSON.stringify(dictionary, null, 2), + if (failedRepositories > 0) { + console.warn( + `Retained existing star counts for ${failedRepositories} GitHub repositories.`, ); } } -(async () => { - await aggregateLibraryStars(); -})(); +main().catch((error: unknown) => { + console.error(error instanceof Error ? error.message : error); + process.exitCode = 1; +}); From be2bcc2b13c2354ac06373c81d34d455108ea007 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 30 Jul 2026 20:35:46 +0200 Subject: [PATCH 2/2] fixup! feat: auto-update star count --- package-lock.json | 1300 +---------------- package.json | 1 - src/data/libraries-next.json | 321 ++-- .../library-card/library-card.component.tsx | 2 +- src/scripts/generate-library-data.ts | 62 +- 5 files changed, 153 insertions(+), 1533 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc15e73a..54f96347 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,6 @@ "neverthrow": "^8.1.1", "next": "14.2.35", "node-forge": "^1.3.1", - "octokit": "^4.0.2", "prismjs": "^1.29.0", "querystring": "^0.2.0", "react": "^18.3.1", @@ -109,7 +108,6 @@ "version": "7.24.4", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", @@ -2637,7 +2635,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.0.tgz", "integrity": "sha512-xU/lwKdOyfXtQGqn3VnJjlDrmKXEvMi1mgYxVmukEUtVycIz1nh7oQ40bKTd4cA7rLStqu0740pnhGYxGoqsCg==", "license": "MIT", - "peer": true, "dependencies": { "@mdx-js/mdx": "^3.0.0", "source-map": "^0.7.0" @@ -2696,7 +2693,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/mdx": "^2.0.0" }, @@ -2937,997 +2933,6 @@ "node": ">= 8" } }, - "node_modules/@octokit/app": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@octokit/app/-/app-15.1.0.tgz", - "integrity": "sha512-TkBr7QgOmE6ORxvIAhDbZsqPkF7RSqTY4pLTtUQCvr6dTXqvi2fFo46q3h1lxlk/sGMQjqyZ0kEahkD/NyzOHg==", - "dependencies": { - "@octokit/auth-app": "^7.0.0", - "@octokit/auth-unauthenticated": "^6.0.0", - "@octokit/core": "^6.1.2", - "@octokit/oauth-app": "^7.0.0", - "@octokit/plugin-paginate-rest": "^11.0.0", - "@octokit/types": "^13.0.0", - "@octokit/webhooks": "^13.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/auth-token": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", - "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/core": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", - "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", - "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.0.0", - "@octokit/request": "^9.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.0.0", - "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.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/graphql": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", - "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", - "dependencies": { - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/app/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/app/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "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==" - }, - "node_modules/@octokit/auth-app": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-7.1.0.tgz", - "integrity": "sha512-cazGaJPSgeZ8NkVYeM/C5l/6IQ5vZnsI8p1aMucadCkt/bndI+q+VqwrlnWbASRmenjOkf1t1RpCKrif53U8gw==", - "dependencies": { - "@octokit/auth-oauth-app": "^8.1.0", - "@octokit/auth-oauth-user": "^5.1.0", - "@octokit/request": "^9.1.1", - "@octokit/request-error": "^6.1.1", - "@octokit/types": "^13.4.1", - "lru-cache": "^10.0.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.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "node_modules/@octokit/auth-oauth-app": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.1.tgz", - "integrity": "sha512-5UtmxXAvU2wfcHIPPDWzVSAWXVJzG3NWsxb7zCFplCWEmMCArSZV0UQu5jw5goLQXbFyOr5onzEH37UJB3zQQg==", - "dependencies": { - "@octokit/auth-oauth-device": "^7.0.0", - "@octokit/auth-oauth-user": "^5.0.1", - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "node_modules/@octokit/auth-oauth-device": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.1.tgz", - "integrity": "sha512-HWl8lYueHonuyjrKKIup/1tiy0xcmQCdq5ikvMO1YwkNNkxb6DXfrPjrMYItNLyCP/o2H87WuijuE+SlBTT8eg==", - "dependencies": { - "@octokit/oauth-methods": "^5.0.0", - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "node_modules/@octokit/auth-oauth-user": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.1.tgz", - "integrity": "sha512-rRkMz0ErOppdvEfnemHJXgZ9vTPhBuC6yASeFaB7I2yLMd7QpjfrL1mnvRPlyKo+M6eeLxrKanXJ9Qte29SRsw==", - "dependencies": { - "@octokit/auth-oauth-device": "^7.0.1", - "@octokit/oauth-methods": "^5.0.0", - "@octokit/request": "^9.0.1", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-unauthenticated": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-6.1.0.tgz", - "integrity": "sha512-zPSmfrUAcspZH/lOFQnVnvjQZsIvmfApQH6GzJrkIunDooU1Su2qt2FfMTSVPRp7WLTQyC20Kd55lF+mIYaohQ==", - "dependencies": { - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/request-error": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/endpoint": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", - "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", - "license": "MIT", - "dependencies": { - "@octokit/request": "^8.3.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-app": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-7.1.2.tgz", - "integrity": "sha512-4ntCOZIiTozKwuYQroX/ZD722tzMH8Eicv/cgDM/3F3lyrlwENHDv4flTCBpSJbfK546B2SrkKMWB+/HbS84zQ==", - "dependencies": { - "@octokit/auth-oauth-app": "^8.0.0", - "@octokit/auth-oauth-user": "^5.0.1", - "@octokit/auth-unauthenticated": "^6.0.0-beta.1", - "@octokit/core": "^6.0.0", - "@octokit/oauth-authorization-url": "^7.0.0", - "@octokit/oauth-methods": "^5.0.0", - "@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.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", - "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/core": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", - "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", - "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.0.0", - "@octokit/request": "^9.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.0.0", - "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.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/graphql": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", - "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", - "dependencies": { - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/oauth-app/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "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==" - }, - "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==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-methods": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-5.1.2.tgz", - "integrity": "sha512-C5lglRD+sBlbrhCUTxgJAFjWgJlmTx5bQ7Ch0+2uqRjYv7Cfb5xpX4WuSC9UgQna3sqRGBL9EImX9PvTpMaQ7g==", - "dependencies": { - "@octokit/oauth-authorization-url": "^7.0.0", - "@octokit/request": "^9.1.0", - "@octokit/request-error": "^6.1.0", - "@octokit/types": "^13.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/universal-user-agent": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", - "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", - "license": "ISC" - }, - "node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" - }, - "node_modules/@octokit/openapi-webhooks-types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-webhooks-types/-/openapi-webhooks-types-8.2.1.tgz", - "integrity": "sha512-msAU1oTSm0ZmvAE0xDemuF4tVs5i0xNnNGtNmr4EuATi+1Rn8cZDetj6NXioSf5LwnxEc209COa/WOSbjuhLUA==" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", - "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", - "dependencies": { - "@octokit/types": "^13.5.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", - "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", - "dependencies": { - "@octokit/types": "^13.5.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "^5" - } - }, - "node_modules/@octokit/request": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", - "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^9.0.6", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request/node_modules/@octokit/request-error": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", - "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/types": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", - "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", - "dependencies": { - "@octokit/openapi-types": "^22.2.0" - } - }, - "node_modules/@octokit/webhooks": { - "version": "13.2.7", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-13.2.7.tgz", - "integrity": "sha512-sPHCyi9uZuCs1gg0yF53FFocM+GsiiBEhQQV/itGzzQ8gjyv2GMJ1YvgdDY4lC0ePZeiV3juEw4GbS6w1VHhRw==", - "dependencies": { - "@octokit/openapi-webhooks-types": "8.2.1", - "@octokit/request-error": "^6.0.1", - "@octokit/webhooks-methods": "^5.0.0", - "aggregate-error": "^5.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/webhooks-methods": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-5.1.0.tgz", - "integrity": "sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/webhooks/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/@octokit/webhooks/node_modules/@octokit/request-error": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/webhooks/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3944,7 +2949,6 @@ "integrity": "sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "playwright": "1.49.1" }, @@ -6121,7 +5125,6 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -6252,11 +5255,6 @@ "@types/estree": "*" } }, - "node_modules/@types/aws-lambda": { - "version": "8.10.138", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.138.tgz", - "integrity": "sha512-71EHMl70TPWIAsFuHd85NHq6S6T2OOjiisPTrH7RgcjzpJpPh4RQJv7PvVvIxc6PIp8CLV7F9B+TdjcAES5vcA==" - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -6362,7 +5360,6 @@ "version": "18.2.73", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.73.tgz", "integrity": "sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==", - "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -6692,7 +5689,6 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6717,21 +5713,6 @@ "node": ">=0.4.0" } }, - "node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -7126,12 +6107,6 @@ "node": ">=6.0.0" } }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "license": "Apache-2.0" - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -7149,11 +6124,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -7200,7 +6170,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -7421,31 +6390,6 @@ "node": ">= 6" } }, - "node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -7802,12 +6746,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "license": "ISC" - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -8253,7 +7191,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8406,7 +7343,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, - "peer": true, "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -8778,22 +7714,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "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", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9538,17 +8458,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -10383,6 +9292,7 @@ "version": "10.2.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, "engines": { "node": "14 || >=16.14" } @@ -11324,7 +10234,6 @@ "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==", "license": "MIT", - "peer": true, "dependencies": { "@next/env": "14.2.35", "@swc/helpers": "0.5.5", @@ -11565,195 +10474,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/octokit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-4.0.2.tgz", - "integrity": "sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==", - "dependencies": { - "@octokit/app": "^15.0.0", - "@octokit/core": "^6.0.0", - "@octokit/oauth-app": "^7.0.0", - "@octokit/plugin-paginate-graphql": "^5.0.0", - "@octokit/plugin-paginate-rest": "^11.0.0", - "@octokit/plugin-rest-endpoint-methods": "^13.0.0", - "@octokit/plugin-retry": "^7.0.0", - "@octokit/plugin-throttling": "^9.0.0", - "@octokit/request-error": "^6.0.0", - "@octokit/types": "^13.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/octokit/node_modules/@octokit/auth-token": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", - "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/octokit/node_modules/@octokit/core": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", - "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", - "peer": true, - "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.0.0", - "@octokit/request": "^9.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.0.0", - "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.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/octokit/node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/octokit/node_modules/@octokit/graphql": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", - "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", - "dependencies": { - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/octokit/node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "license": "MIT" - }, - "node_modules/octokit/node_modules/@octokit/plugin-paginate-graphql": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-5.2.2.tgz", - "integrity": "sha512-7znSVvlNAOJisCqAnjN1FtEziweOHSjPGAuc5W58NeGNAr/ZB57yCsjQbXDlWsVryA7hHQaEQPcBbJYFawlkyg==", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/octokit/node_modules/@octokit/plugin-retry": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz", - "integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==", - "dependencies": { - "@octokit/request-error": "^6.0.0", - "@octokit/types": "^13.0.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/octokit/node_modules/@octokit/plugin-throttling": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.0.tgz", - "integrity": "sha512-B5YTToSRTzNSeEyssnrT7WwGhpIdbpV9NKIs3KyTWHX6PhpYn7gqF/+lL3BvsASBM3Sg5BAUYk7KZx5p/Ec77w==", - "dependencies": { - "@octokit/types": "^13.0.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "^6.0.0" - } - }, - "node_modules/octokit/node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", - "@octokit/types": "^14.0.0", - "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.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^14.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/octokit/node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/octokit/node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "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==" - }, - "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==" - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } @@ -12020,7 +10745,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -12214,7 +10938,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -12323,7 +11046,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -12862,7 +11584,6 @@ "version": "1.74.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz", "integrity": "sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==", - "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -14088,7 +12809,6 @@ "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14271,17 +12991,6 @@ "url": "https://opencollective.com/unified" } }, - "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==" - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "license": "ISC" - }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", @@ -14389,7 +13098,6 @@ "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -14540,7 +13248,6 @@ "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "1.6.1", "@vitest/runner": "1.6.1", @@ -14817,7 +13524,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", diff --git a/package.json b/package.json index 4f8b87de..d815aafe 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "neverthrow": "^8.1.1", "next": "14.2.35", "node-forge": "^1.3.1", - "octokit": "^4.0.2", "prismjs": "^1.29.0", "querystring": "^0.2.0", "react": "^18.3.1", diff --git a/src/data/libraries-next.json b/src/data/libraries-next.json index 793a6d15..83156759 100644 --- a/src/data/libraries-next.json +++ b/src/data/libraries-next.json @@ -38,8 +38,7 @@ "installCommandMarkdown": [ "Install-Package", "[System.IdentityModel.Tokens.Jwt](https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/)" - ], - "stars": 1021 + ] }, { "minimumVersion": null, @@ -73,8 +72,7 @@ "installCommandMarkdown": [ "Install-Package", "[JWT.NET](https://www.nuget.org/packages/JWT)" - ], - "stars": 2102 + ] }, { "minimumVersion": null, @@ -108,8 +106,7 @@ "installCommandMarkdown": [ "Install-Package", "[jose-jwt](https://www.nuget.org/packages/jose-jwt/)" - ], - "stars": 912 + ] }, { "minimumVersion": null, @@ -140,8 +137,7 @@ "installCommandMarkdown": [ "Install-Package", "[jose-rt](https://www.nuget.org/packages/jose-rt/)" - ], - "stars": 18 + ] }, { "minimumVersion": null, @@ -175,8 +171,7 @@ "installCommandMarkdown": [ "Install-Package", "[Trivial](https://www.nuget.org/packages/Trivial)" - ], - "stars": 34 + ] }, { "minimumVersion": null, @@ -210,8 +205,7 @@ "repoUrl": "https://github.com/ycrumeyrolle/jwt", "installCommandMarkdown": [ "Install-Package [JsonWebToken](https://www.nuget.org/packages/JsonWebToken)" - ], - "stars": 80 + ] } ] }, @@ -253,8 +247,7 @@ "repoUrl": "https://github.com/pintov/1c-jwt", "installCommandMarkdown": [ "git clone https://github.com/pintov/1c-jwt" - ], - "stars": 85 + ] } ] }, @@ -294,8 +287,7 @@ "authorName": "reznikmm", "gitHubRepoPath": "reznikmm/jwt", "repoUrl": "https://github.com/reznikmm/jwt", - "installCommandMarkdown": ["alr get jwt"], - "stars": 10 + "installCommandMarkdown": ["alr get jwt"] } ] }, @@ -343,8 +335,7 @@ "authorName": "Filip Skokan", "gitHubRepoPath": "panva/jose", "repoUrl": "https://github.com/panva/jose", - "installCommandMarkdown": ["npm docs jose"], - "stars": 4980 + "installCommandMarkdown": ["npm docs jose"] } ] }, @@ -386,8 +377,7 @@ "repoUrl": "https://github.com/benmcollins/libjwt", "installCommandMarkdown": [ "git clone [https://github.com/bencollins/libjwt.git](https://github.com/benmcollins/libjwt) && cd libjwt && mkdir build && cd build && cmake .. && cmake --build . --target install" - ], - "stars": 407 + ] }, { "minimumVersion": null, @@ -420,8 +410,7 @@ "repoUrl": "https://github.com/cisco/cjose", "installCommandMarkdown": [ "git clone [https://github.com/cisco/cjose.git](https://github.com/cisco/cjose) && cd cjose && ./configure && make" - ], - "stars": 101 + ] }, { "minimumVersion": null, @@ -457,8 +446,7 @@ "repoUrl": "https://github.com/GlitchedPolygons/l8w8jwt", "installCommandMarkdown": [ "git clone [https://github.com/GlitchedPolygons/l8w8jwt.git](https://github.com/GlitchedPolygons/l8w8jwt)" - ], - "stars": 130 + ] }, { "minimumVersion": null, @@ -491,8 +479,7 @@ "repoUrl": "https://github.com/TomzBench/jsmn-web-tokens", "installCommandMarkdown": [ "git clone [https://github.com/TomzBench/jsmn-web-tokens.git](https://github.com/TomzBench/jsmn-web-tokens) && cd jsmn-web-tokens && cmake . && cmake --build . --target install" - ], - "stars": 9 + ] }, { "minimumVersion": null, @@ -528,8 +515,7 @@ "repoUrl": "https://github.com/babelouest/rhonabwy", "installCommandMarkdown": [ "[Download release package](https://github.com/babelouest/rhonabwy/releases/latest) or [install from source](https://github.com/babelouest/rhonabwy)" - ], - "stars": 43 + ] }, { "minimumVersion": "2.0.0", @@ -565,8 +551,7 @@ "repoUrl": "https://github.com/xmidt-org/cjwt", "installCommandMarkdown": [ "git clone [https://github.com/xmidt-org/cjwt.git](https://github.com/xmidt-org/cjwt)" - ], - "stars": 15 + ] } ] }, @@ -607,8 +592,7 @@ "authorName": "Artur Troian", "gitHubRepoPath": "troian/jwtpp", "repoUrl": "https://github.com/troian/jwtpp", - "installCommandMarkdown": ["git clone https://github.com/troian/jwtpp"], - "stars": 65 + "installCommandMarkdown": ["git clone https://github.com/troian/jwtpp"] }, { "minimumVersion": null, @@ -644,8 +628,7 @@ "repoUrl": "https://github.com/Thalhammer/jwt-cpp", "installCommandMarkdown": [ "git clone https://github.com/Thalhammer/jwt-cpp" - ], - "stars": 804 + ] }, { "minimumVersion": null, @@ -678,8 +661,7 @@ "repoUrl": "https://github.com/arun11299/cpp-jwt", "installCommandMarkdown": [ "git clone https://github.com/arun11299/cpp-jwt" - ], - "stars": 381 + ] }, { "minimumVersion": null, @@ -713,8 +695,7 @@ "repoUrl": "https://github.com/pokowaka/jwt-cpp", "installCommandMarkdown": [ "git clone https://github.com/pokowaka/jwt-cpp" - ], - "stars": 99 + ] }, { "minimumVersion": null, @@ -747,8 +728,7 @@ "repoUrl": "https://github.com/pocoproject/poco", "installCommandMarkdown": [ "git clone https://github.com/pocoproject/poco.git" - ], - "stars": 7992 + ] } ] }, @@ -790,8 +770,7 @@ "repoUrl": "https://github.com/jcberquist/jwt-cfml", "installCommandMarkdown": [ "git clone https://github.com/jcberquist/jwt-cfml" - ], - "stars": 33 + ] } ] }, @@ -831,8 +810,7 @@ "authorName": "Andrey Antukh", "gitHubRepoPath": "funcool/buddy", "repoUrl": "https://github.com/funcool/buddy/", - "installCommandMarkdown": ["lein: [funcool/buddy \"2.0.0\"]"], - "stars": 825 + "installCommandMarkdown": ["lein: [funcool/buddy \"2.0.0\"]"] } ] }, @@ -877,8 +855,7 @@ "repoUrl": "https://github.com/crystal-community/jwt", "installCommandMarkdown": [ "git clone https://github.com/crystal-community/jwt.git" - ], - "stars": 211 + ] } ] }, @@ -918,8 +895,7 @@ "authorName": "olehlong", "gitHubRepoPath": "olehlong/jwtd", "repoUrl": "https://github.com/olehlong/jwtd", - "installCommandMarkdown": ["dub fetch jwtd"], - "stars": 29 + "installCommandMarkdown": ["dub fetch jwtd"] }, { "minimumVersion": null, @@ -950,8 +926,7 @@ "authorName": "zolamk", "gitHubRepoPath": "zolamk/jwt", "repoUrl": "https://github.com/zolamk/jwt", - "installCommandMarkdown": ["dub fetch jwt"], - "stars": 4 + "installCommandMarkdown": ["dub fetch jwt"] } ] }, @@ -994,8 +969,7 @@ "authorName": "Jonas Roussel", "gitHubRepoPath": "jonasroussel/dart_jsonwebtoken", "repoUrl": "https://github.com/jonasroussel/dart_jsonwebtoken", - "installCommandMarkdown": ["dart pub add dart_jsonwebtoken"], - "stars": 81 + "installCommandMarkdown": ["dart pub add dart_jsonwebtoken"] } ] }, @@ -1040,8 +1014,7 @@ "repoUrl": "https://github.com/paolo-rossi/delphi-jose-jwt", "installCommandMarkdown": [ "git clone https://github.com/paolo-rossi/delphi-jose-jwt" - ], - "stars": 435 + ] }, { "minimumVersion": null, @@ -1074,8 +1047,7 @@ "repoUrl": "https://github.com/synopse/mORMot", "installCommandMarkdown": [ "git clone https://github.com/synopse/mORMot" - ], - "stars": 777 + ] } ] }, @@ -1123,8 +1095,7 @@ "authorName": "Filip Skokan", "gitHubRepoPath": "panva/jose", "repoUrl": "https://github.com/panva/jose", - "installCommandMarkdown": ["npm docs jose"], - "stars": 4980 + "installCommandMarkdown": ["npm docs jose"] } ] }, @@ -1166,8 +1137,7 @@ "repoUrl": "https://github.com/garyf/json_web_token_ex", "installCommandMarkdown": [ "defp deps, do: [{:json_web_token, \"~> 0.2.5\"}]" - ], - "stars": 141 + ] }, { "minimumVersion": null, @@ -1199,8 +1169,7 @@ "authorName": "bryanjos", "gitHubRepoPath": "bryanjos/joken", "repoUrl": "https://github.com/bryanjos/joken", - "installCommandMarkdown": ["defp deps, do: [{:joken, \"~> 1.2\"}]"], - "stars": 748 + "installCommandMarkdown": ["defp deps, do: [{:joken, \"~> 1.2\"}]"] }, { "minimumVersion": null, @@ -1230,8 +1199,7 @@ "repoUrl": "https://github.com/ueberauth/guardian", "installCommandMarkdown": [ "defp deps, do: [{:guardian, \"~> 1.0 \"}]" - ], - "stars": 3390 + ] } ] }, @@ -1273,8 +1241,7 @@ "repoUrl": "https://github.com/G-Corp/jwerl", "installCommandMarkdown": [ "git clone https://github.com/G-Corp/jwerl.git" - ], - "stars": 44 + ] } ] }, @@ -1317,8 +1284,7 @@ "repoUrl": "https://github.com/golang-jwt/jwt", "installCommandMarkdown": [ "go get [github.com/golang-jwt/jwt/v5](https://pkg.go.dev/github.com/golang-jwt/jwt/v5)" - ], - "stars": 6587 + ] }, { "minimumVersion": null, @@ -1351,8 +1317,7 @@ "repoUrl": "https://github.com/dvsekhvalnov/jose2go", "installCommandMarkdown": [ "go get [github.com/dvsekhvalnov/jose2go](https://godoc.org/github.com/dvsekhvalnov/jose2go)" - ], - "stars": 184 + ] }, { "minimumVersion": null, @@ -1385,8 +1350,7 @@ "repoUrl": "https://github.com/SermoDigital/jose", "installCommandMarkdown": [ "go get [github.com/SermoDigital/jose](https://godoc.org/github.com/SermoDigital/jose)" - ], - "stars": 914 + ] }, { "minimumVersion": null, @@ -1419,8 +1383,7 @@ "repoUrl": "https://github.com/robbert229/jwt", "installCommandMarkdown": [ "go get [github.com/robbert229/jwt](https://godoc.org/github.com/robbert229/jwt)" - ], - "stars": 105 + ] }, { "minimumVersion": null, @@ -1453,8 +1416,7 @@ "repoUrl": "https://github.com/square/go-jose", "installCommandMarkdown": [ "go get [github.com/square/go-jose](https://godoc.org/github.com/square/go-jose)" - ], - "stars": 1980 + ] }, { "minimumVersion": null, @@ -1489,8 +1451,7 @@ "repoUrl": "https://github.com/lestrrat-go/jwx", "installCommandMarkdown": [ "go get [github.com/lestrrat-go/jwx](https://godoc.org/github.com/lestrrat-go/jwx)" - ], - "stars": 1819 + ] }, { "minimumVersion": null, @@ -1520,8 +1481,7 @@ "repoUrl": "https://github.com/adam-hanna/jwt-auth", "installCommandMarkdown": [ "go get [github.com/adam-hanna/jwt-auth](https://godoc.org/github.com/adam-hanna/jwt-auth)" - ], - "stars": 233 + ] }, { "minimumVersion": null, @@ -1554,8 +1514,7 @@ "repoUrl": "https://github.com/nickvellios/gojwt", "installCommandMarkdown": [ "go get [github.com/nickvellios/gojwt](https://godoc.org/github.com/nickvellios/gojwt)" - ], - "stars": 12 + ] }, { "minimumVersion": null, @@ -1588,8 +1547,7 @@ "repoUrl": "https://github.com/gbrlsnchs/jwt", "installCommandMarkdown": [ "GO111MODULE=on go get [github.com/gbrlsnchs/jwt/v3](https://godoc.org/github.com/gbrlsnchs/jwt)" - ], - "stars": 452 + ] }, { "minimumVersion": null, @@ -1623,8 +1581,7 @@ "repoUrl": "https://github.com/pascaldekloe/jwt", "installCommandMarkdown": [ "go get [github.com/pascaldekloe/jwt](https://godoc.org/github.com/pascaldekloe/jwt)" - ], - "stars": 351 + ] }, { "minimumVersion": null, @@ -1657,8 +1614,7 @@ "repoUrl": "https://github.com/brianvoe/sjwt", "installCommandMarkdown": [ "go get [github.com/brianvoe/sjwt](https://godoc.org/github.com/brianvoe/sjwt)" - ], - "stars": 118 + ] }, { "minimumVersion": "1.12", @@ -1690,8 +1646,7 @@ "authorName": "Oleg Kovalov", "gitHubRepoPath": "cristalhq/jwt", "repoUrl": "https://github.com/cristalhq/jwt", - "installCommandMarkdown": ["go get github.com/cristalhq/jwt"], - "stars": 648 + "installCommandMarkdown": ["go get github.com/cristalhq/jwt"] }, { "minimumVersion": null, @@ -1726,8 +1681,7 @@ "repoUrl": "https://github.com/gilbsgilbs/jwit", "installCommandMarkdown": [ "go get [github.com/gilbsgilbs/jwit](https://pkg.go.dev/github.com/gilbsgilbs/jwit)" - ], - "stars": 5 + ] }, { "minimumVersion": null, @@ -1761,8 +1715,7 @@ "repoUrl": "https://github.com/kataras/jwt", "installCommandMarkdown": [ "go get [github.com/kataras/jwt](https://pkg.go.dev/github.com/kataras/jwt)" - ], - "stars": 194 + ] } ] }, @@ -1804,8 +1757,7 @@ "repoUrl": "https://github.com/kaleidos/grails-security-stateless", "installCommandMarkdown": [ "compile \"org.grails.plugins:security-stateless:0.0.9\"" - ], - "stars": 17 + ] } ] }, @@ -1850,8 +1802,7 @@ "repoUrl": "https://github.com/matteobaccan/HarbourJwt", "installCommandMarkdown": [ "see https://github.com/matteobaccan/HarbourJwt" - ], - "stars": 4 + ] } ] }, @@ -1923,8 +1874,7 @@ "authorName": "Fraser Tweedale", "gitHubRepoPath": "frasertweedale/hs-jose", "repoUrl": "https://github.com/frasertweedale/hs-jose", - "installCommandMarkdown": ["cabal install jose"], - "stars": 122 + "installCommandMarkdown": ["cabal install jose"] } ] }, @@ -1964,8 +1914,7 @@ "authorName": "Kevin Leung", "gitHubRepoPath": "kevinresol/jsonwebtoken", "repoUrl": "https://github.com/kevinresol/jsonwebtoken", - "installCommandMarkdown": ["haxelib install jsonwebtoken"], - "stars": 26 + "installCommandMarkdown": ["haxelib install jsonwebtoken"] } ] }, @@ -2005,8 +1954,7 @@ "authorName": "Auth0", "gitHubRepoPath": "auth0/java-jwt", "repoUrl": "https://github.com/auth0/java-jwt", - "installCommandMarkdown": ["maven: com.auth0 / java-jwt / 3.3.0"], - "stars": 5735 + "installCommandMarkdown": ["maven: com.auth0 / java-jwt / 3.3.0"] }, { "minimumVersion": null, @@ -2108,8 +2056,7 @@ "repoUrl": "https://github.com/jwtk/jjwt", "installCommandMarkdown": [ "maven: io.jsonwebtoken / jjwt-root / 0.11.1" - ], - "stars": 9940 + ] }, { "minimumVersion": null, @@ -2142,8 +2089,7 @@ "repoUrl": "https://github.com/fusionauth/fusionauth-jwt", "installCommandMarkdown": [ "maven: io.fusionauth / fusionauth-jwt / 5.2.2" - ], - "stars": 159 + ] }, { "minimumVersion": null, @@ -2171,8 +2117,7 @@ "authorName": "Vert.x", "gitHubRepoPath": "vert-x3/vertx-auth", "repoUrl": "https://github.com/vert-x3/vertx-auth", - "installCommandMarkdown": ["maven: io.vertx / vertx-auth-jwt / 3.5.1"], - "stars": 10 + "installCommandMarkdown": ["maven: io.vertx / vertx-auth-jwt / 3.5.1"] }, { "minimumVersion": null, @@ -2207,8 +2152,7 @@ "repoUrl": "https://github.com/inverno-io/inverno-mods/tree/master/inverno-security-jose", "installCommandMarkdown": [ "maven: io.inverno.mod / inverno-security-jose / 1.5.2" - ], - "stars": 11 + ] } ] }, @@ -2256,8 +2200,7 @@ "authorName": "Filip Skokan", "gitHubRepoPath": "panva/jose", "repoUrl": "https://github.com/panva/jose", - "installCommandMarkdown": ["npm docs jose"], - "stars": 4980 + "installCommandMarkdown": ["npm docs jose"] }, { "minimumVersion": "3.2.0", @@ -2285,8 +2228,7 @@ "authorName": "Kenji Urushima", "gitHubRepoPath": "kjur/jsrsasign", "repoUrl": "https://github.com/kjur/jsrsasign", - "installCommandMarkdown": ["npm install jsrsasign"], - "stars": 3218 + "installCommandMarkdown": ["npm install jsrsasign"] }, { "minimumVersion": "0.9.4", @@ -2319,8 +2261,7 @@ "authorName": "Cisco Systems", "gitHubRepoPath": "cisco/node-jose", "repoUrl": "https://github.com/cisco/node-jose", - "installCommandMarkdown": ["npm install node-jose"], - "stars": 693 + "installCommandMarkdown": ["npm install node-jose"] } ] }, @@ -2362,8 +2303,7 @@ "repoUrl": "https://github.com/tjcelaya/jwt.q", "installCommandMarkdown": [ "git clone https://github.com/tjcelaya/jwt.q" - ], - "stars": 7 + ] } ] }, @@ -2403,8 +2343,7 @@ "authorName": "PhilJay", "gitHubRepoPath": "PhilJay/JWT", "repoUrl": "https://github.com/PhilJay/JWT", - "installCommandMarkdown": ["maven: com.github.PhilJay / JWT / 1.1.5"], - "stars": 57 + "installCommandMarkdown": ["maven: com.github.PhilJay / JWT / 1.1.5"] }, { "minimumVersion": null, @@ -2438,8 +2377,7 @@ "repoUrl": "https://github.com/nefilim/kJWT", "installCommandMarkdown": [ "maven GAV: io.github.nefilim.kjwt:kjwt-core:0.3.0" - ], - "stars": 78 + ] } ] }, @@ -2484,8 +2422,7 @@ "repoUrl": "https://github.com/cdbattags/lua-resty-jwt", "installCommandMarkdown": [ "luarocks install lua-resty-jwt" - ], - "stars": 155 + ] } ] }, @@ -2528,8 +2465,7 @@ "authorName": "Auth0", "gitHubRepoPath": "auth0/node-jsonwebtoken", "repoUrl": "https://github.com/auth0/node-jsonwebtoken", - "installCommandMarkdown": ["npm install jsonwebtoken"], - "stars": 17446 + "installCommandMarkdown": ["npm install jsonwebtoken"] }, { "minimumVersion": null, @@ -2568,8 +2504,7 @@ "authorName": "Filip Skokan", "gitHubRepoPath": "panva/jose", "repoUrl": "https://github.com/panva/jose", - "installCommandMarkdown": ["npm docs jose"], - "stars": 4980 + "installCommandMarkdown": ["npm docs jose"] }, { "minimumVersion": null, @@ -2603,8 +2538,7 @@ "authorName": "AWS", "gitHubRepoPath": "awslabs/aws-jwt-verify", "repoUrl": "https://github.com/awslabs/aws-jwt-verify", - "installCommandMarkdown": ["npm install aws-jwt-verify"], - "stars": 587 + "installCommandMarkdown": ["npm install aws-jwt-verify"] } ] }, @@ -2644,8 +2578,7 @@ "authorName": "yourkarma & lolgear", "gitHubRepoPath": "yourkarma/JWT", "repoUrl": "https://github.com/yourkarma/JWT", - "installCommandMarkdown": ["pod 'JWT'"], - "stars": 349 + "installCommandMarkdown": ["pod 'JWT'"] } ] }, @@ -2685,8 +2618,7 @@ "authorName": "Ulrik Strid", "gitHubRepoPath": "ulrikstrid/reason-jose", "repoUrl": "https://github.com/ulrikstrid/reason-jose", - "installCommandMarkdown": ["opam install jose"], - "stars": 53 + "installCommandMarkdown": ["opam install jose"] } ] }, @@ -2728,8 +2660,7 @@ "authorName": "Karel Miko", "gitHubRepoPath": "DCIT/perl-Crypt-JWT", "repoUrl": "https://github.com/DCIT/perl-Crypt-JWT", - "installCommandMarkdown": ["cpanm Crypt::JWT"], - "stars": 54 + "installCommandMarkdown": ["cpanm Crypt::JWT"] } ] }, @@ -2771,8 +2702,7 @@ "authorName": "Firebase", "gitHubRepoPath": "firebase/php-jwt", "repoUrl": "https://github.com/firebase/php-jwt", - "installCommandMarkdown": ["composer require firebase/php-jwt"], - "stars": 9259 + "installCommandMarkdown": ["composer require firebase/php-jwt"] }, { "minimumVersion": "4.1.0", @@ -2804,8 +2734,7 @@ "authorName": "Luís Cobucci", "gitHubRepoPath": "lcobucci/jwt", "repoUrl": "https://github.com/lcobucci/jwt", - "installCommandMarkdown": ["composer require lcobucci/jwt"], - "stars": 7206 + "installCommandMarkdown": ["composer require lcobucci/jwt"] }, { "minimumVersion": null, @@ -2836,8 +2765,7 @@ "authorName": "Emarref", "gitHubRepoPath": "emarref/jwt", "repoUrl": "https://github.com/emarref/jwt", - "installCommandMarkdown": ["composer require emarref/jwt"], - "stars": 93 + "installCommandMarkdown": ["composer require emarref/jwt"] }, { "minimumVersion": null, @@ -2868,8 +2796,7 @@ "authorName": "Nov Matake", "gitHubRepoPath": "nov/jose-php", "repoUrl": "https://github.com/nov/jose-php", - "installCommandMarkdown": ["composer require gree/jose"], - "stars": 137 + "installCommandMarkdown": ["composer require gree/jose"] }, { "minimumVersion": null, @@ -2902,8 +2829,7 @@ "authorName": "Spomky", "gitHubRepoPath": "web-token/jwt-framework", "repoUrl": "https://github.com/web-token/jwt-framework", - "installCommandMarkdown": ["composer require web-token/jwt-framework"], - "stars": 864 + "installCommandMarkdown": ["composer require web-token/jwt-framework"] }, { "minimumVersion": null, @@ -2931,8 +2857,7 @@ "authorName": "Vaibhav Pandey", "gitHubRepoPath": "vaibhavpandeyvpz/jweety", "repoUrl": "https://github.com/vaibhavpandeyvpz/jweety", - "installCommandMarkdown": ["composer require vaibhavpandeyvpz/jweety"], - "stars": 9 + "installCommandMarkdown": ["composer require vaibhavpandeyvpz/jweety"] }, { "minimumVersion": null, @@ -2965,8 +2890,7 @@ "repoUrl": "https://github.com/cdoco/php-jwt", "installCommandMarkdown": [ "git clone https://github.com/cdoco/php-jwt" - ], - "stars": 230 + ] }, { "minimumVersion": null, @@ -2997,8 +2921,7 @@ "authorName": "Jitendra Adhikari", "gitHubRepoPath": "adhocore/jwt", "repoUrl": "https://github.com/adhocore/jwt", - "installCommandMarkdown": ["composer require adhocore/jwt"], - "stars": 284 + "installCommandMarkdown": ["composer require adhocore/jwt"] }, { "minimumVersion": "3.3.0", @@ -3032,8 +2955,7 @@ "authorName": "Milad Rahimi", "gitHubRepoPath": "miladrahimi/php-jwt", "repoUrl": "https://github.com/miladrahimi/php-jwt", - "installCommandMarkdown": ["composer require miladrahimi/php-jwt"], - "stars": 71 + "installCommandMarkdown": ["composer require miladrahimi/php-jwt"] }, { "minimumVersion": "7.2.1", @@ -3061,8 +2983,7 @@ "authorName": "Radosław Nowakowski", "gitHubRepoPath": "nowakowskir/php-jwt", "repoUrl": "https://github.com/nowakowskir/php-jwt", - "installCommandMarkdown": ["composer require nowakowskir/php-jwt"], - "stars": 37 + "installCommandMarkdown": ["composer require nowakowskir/php-jwt"] } ] }, @@ -3102,8 +3023,7 @@ "authorName": "Michel Pelletier", "gitHubRepoPath": "michelp/pgjwt", "repoUrl": "https://github.com/michelp/pgjwt", - "installCommandMarkdown": ["CREATE EXTENSION pgjwt;"], - "stars": 354 + "installCommandMarkdown": ["CREATE EXTENSION pgjwt;"] } ] }, @@ -3143,8 +3063,7 @@ "authorName": "Svyatoslav Pidgorny", "gitHubRepoPath": "SP3269/posh-jwt", "repoUrl": "https://github.com/SP3269/posh-jwt", - "installCommandMarkdown": ["Install-Module JWT"], - "stars": 44 + "installCommandMarkdown": ["Install-Module JWT"] }, { "minimumVersion": "6.0.0", @@ -3175,8 +3094,7 @@ "authorName": "Alexander Piepenhagen", "gitHubRepoPath": "DigitalAXPP/jwtPS", "repoUrl": "https://github.com/DigitalAXPP/jwtPS", - "installCommandMarkdown": ["Install-Module jwtPS"], - "stars": 16 + "installCommandMarkdown": ["Install-Module jwtPS"] } ] }, @@ -3218,8 +3136,7 @@ "authorName": "José Padilla", "gitHubRepoPath": "jpadilla/pyjwt", "repoUrl": "https://github.com/jpadilla/pyjwt/", - "installCommandMarkdown": ["pip install pyjwt"], - "stars": 4964 + "installCommandMarkdown": ["pip install pyjwt"] }, { "minimumVersion": null, @@ -3250,8 +3167,7 @@ "authorName": "Michael Davis", "gitHubRepoPath": "mpdavis/python-jose", "repoUrl": "https://github.com/mpdavis/python-jose/", - "installCommandMarkdown": ["pip install python-jose"], - "stars": 1493 + "installCommandMarkdown": ["pip install python-jose"] }, { "minimumVersion": null, @@ -3287,8 +3203,7 @@ "authorName": "Simo Sorce", "gitHubRepoPath": "latchset/jwcrypto", "repoUrl": "https://github.com/latchset/jwcrypto/", - "installCommandMarkdown": ["pip install jwcrypto"], - "stars": 420 + "installCommandMarkdown": ["pip install jwcrypto"] }, { "minimumVersion": null, @@ -3321,8 +3236,7 @@ "authorName": "Hsiaoming Yang", "gitHubRepoPath": "lepture/authlib", "repoUrl": "https://github.com/lepture/authlib", - "installCommandMarkdown": ["pip install authlib"], - "stars": 4334 + "installCommandMarkdown": ["pip install authlib"] } ] }, @@ -3362,8 +3276,7 @@ "authorName": "Lindsay & Rudat", "gitHubRepoPath": "progrium/ruby-jwt", "repoUrl": "https://github.com/progrium/ruby-jwt", - "installCommandMarkdown": ["gem install jwt"], - "stars": 3561 + "installCommandMarkdown": ["gem install jwt"] }, { "minimumVersion": null, @@ -3394,8 +3307,7 @@ "authorName": "Fleshman", "gitHubRepoPath": "garyf/json_web_token", "repoUrl": "https://github.com/garyf/json_web_token", - "installCommandMarkdown": ["gem install json_web_token"], - "stars": 60 + "installCommandMarkdown": ["gem install json_web_token"] }, { "minimumVersion": null, @@ -3428,8 +3340,7 @@ "authorName": "Nov Matake", "gitHubRepoPath": "nov/json-jwt", "repoUrl": "https://github.com/nov/json-jwt", - "installCommandMarkdown": ["gem install json-jwt"], - "stars": 296 + "installCommandMarkdown": ["gem install json-jwt"] }, { "minimumVersion": null, @@ -3457,8 +3368,7 @@ "authorName": "Andrew Bennett", "gitHubRepoPath": "potatosalad/ruby-jose", "repoUrl": "https://github.com/potatosalad/ruby-jose", - "installCommandMarkdown": ["gem install jose"], - "stars": 63 + "installCommandMarkdown": ["gem install jose"] } ] }, @@ -3500,8 +3410,7 @@ "repoUrl": "https://github.com/GildedHonour/rust-jwt", "installCommandMarkdown": [ "cargo: name = \"frank_jwt\" version = \"*\"" - ], - "stars": 250 + ] }, { "minimumVersion": null, @@ -3534,8 +3443,7 @@ "repoUrl": "https://github.com/Keats/jsonwebtoken", "installCommandMarkdown": [ "cargo: name = \"jsonwebtoken\" version = \"*\"" - ], - "stars": 1583 + ] }, { "minimumVersion": null, @@ -3570,8 +3478,7 @@ "repoUrl": "https://github.com/JadedBlueEyes/jsonwebtoken", "installCommandMarkdown": [ "cargo: name = \"jsonwebtoken-rustcrypto\" version = \"*\"" - ], - "stars": 4 + ] }, { "minimumVersion": null, @@ -3602,8 +3509,7 @@ "authorName": "Yong Wen Chua", "gitHubRepoPath": "lawliet89/biscuit", "repoUrl": "https://github.com/lawliet89/biscuit", - "installCommandMarkdown": ["Cargo.toml: biscuit = \"*\""], - "stars": 181 + "installCommandMarkdown": ["Cargo.toml: biscuit = \"*\""] }, { "minimumVersion": null, @@ -3634,8 +3540,7 @@ "authorName": "Robert Bragg", "gitHubRepoPath": "rib/jsonwebtokens", "repoUrl": "https://github.com/rib/jsonwebtokens", - "installCommandMarkdown": ["Cargo.toml: jsonwebtokens = \"*\""], - "stars": 44 + "installCommandMarkdown": ["Cargo.toml: jsonwebtokens = \"*\""] } ] }, @@ -3677,8 +3582,7 @@ "repoUrl": "https://github.com/jasongoodwin/authentikat-jwt", "installCommandMarkdown": [ "sbt: \"com.jason-goodwin\" %% \"authentikat-jwt\" % \"0.4.5\"" - ], - "stars": 134 + ] }, { "minimumVersion": null, @@ -3709,8 +3613,7 @@ "authorName": "pauldijou", "gitHubRepoPath": "pauldijou/jwt-scala", "repoUrl": "https://github.com/pauldijou/jwt-scala", - "installCommandMarkdown": ["sbt: \"pdi\" %% \"jwt-core\" % \"0.14.1\""], - "stars": 663 + "installCommandMarkdown": ["sbt: \"pdi\" %% \"jwt-core\" % \"0.14.1\""] }, { "minimumVersion": null, @@ -3743,8 +3646,7 @@ "repoUrl": "https://github.com/iain-logan/jwt", "installCommandMarkdown": [ "libraryDependencies += \"io.igl\" %% \"jwt\" % \"1.2.2\"" - ], - "stars": 48 + ] }, { "minimumVersion": null, @@ -3777,8 +3679,7 @@ "repoUrl": "https://github.com/janjaali/spray-jwt", "installCommandMarkdown": [ "libraryDependencies += \"com.github.janjaali\" %% \"spray-jwt\" % \"1.0.0\"" - ], - "stars": 3 + ] }, { "minimumVersion": null, @@ -3811,8 +3712,7 @@ "repoUrl": "https://github.com/blackdoor/jose", "installCommandMarkdown": [ "sbt: libraryDependencies += "black.door" %% "jose" % "0.2.2"\nmill: ivy"black.door::jose:0.2.2"" - ], - "stars": 15 + ] } ] }, @@ -3852,8 +3752,7 @@ "authorName": "Kyle Fuller", "gitHubRepoPath": "kylef/JSONWebToken.swift", "repoUrl": "https://github.com/kylef/JSONWebToken.swift", - "installCommandMarkdown": ["pod 'JSONWebToken'"], - "stars": 763 + "installCommandMarkdown": ["pod 'JSONWebToken'"] }, { "minimumVersion": null, @@ -3886,8 +3785,7 @@ "repoUrl": "https://github.com/vapor/jwt-kit", "installCommandMarkdown": [ ".package(url: \"https://github.com/vapor/jwt-kit.git\", from: \"4.0.0\")" - ], - "stars": 169 + ] }, { "minimumVersion": null, @@ -3918,8 +3816,7 @@ "authorName": "Wstunes", "gitHubRepoPath": "Wstunes/SwiftyJWT", "repoUrl": "https://github.com/Wstunes/SwiftyJWT", - "installCommandMarkdown": ["pod 'SwiftyJWT'"], - "stars": 48 + "installCommandMarkdown": ["pod 'SwiftyJWT'"] }, { "minimumVersion": null, @@ -3952,8 +3849,7 @@ "repoUrl": "https://github.com/IBM-Swift/Swift-JWT", "installCommandMarkdown": [ ".package(url:\"https://github.com/IBM-Swift/Swift-JWT\", from: \"3.5.0\")" - ], - "stars": 548 + ] }, { "minimumVersion": null, @@ -3984,8 +3880,7 @@ "authorName": "Airside", "gitHubRepoPath": "airsidemobile/JOSESwift", "repoUrl": "https://github.com/airsidemobile/JOSESwift", - "installCommandMarkdown": ["pod 'JOSESwift'"], - "stars": 191 + "installCommandMarkdown": ["pod 'JOSESwift'"] }, { "minimumVersion": null, @@ -4021,8 +3916,7 @@ "repoUrl": "https://github.com/beatt83/jose-swift", "installCommandMarkdown": [ ".package(url: \"https://github.com/beatt83/jose-swift.git\", from: \"2.4.0\")" - ], - "stars": 21 + ] }, { "minimumVersion": null, @@ -4058,8 +3952,7 @@ "repoUrl": "https://github.com/amosavian/JWSETKit", "installCommandMarkdown": [ ".package(url: \"https://github.com/amosavian/JWSETKit\", from: \"2.0.0\")" - ], - "stars": 67 + ] } ] } diff --git a/src/features/libraries/components/library-card/library-card.component.tsx b/src/features/libraries/components/library-card/library-card.component.tsx index da15be47..1d875f12 100644 --- a/src/features/libraries/components/library-card/library-card.component.tsx +++ b/src/features/libraries/components/library-card/library-card.component.tsx @@ -140,7 +140,7 @@ export const LibraryCardComponent: React.FC = ({ )}
- {support && ( + {stars != null && (
{stars} diff --git a/src/scripts/generate-library-data.ts b/src/scripts/generate-library-data.ts index 1399941d..c3747b6a 100644 --- a/src/scripts/generate-library-data.ts +++ b/src/scripts/generate-library-data.ts @@ -1,6 +1,5 @@ import { readFile, rename, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { Octokit } from "octokit"; import { format } from "prettier"; import "dotenv/config"; @@ -14,6 +13,7 @@ const DATA_FILE_PATH = join( "data", "libraries-next.json", ); +const GITHUB_API_URL = "https://api.github.com"; const REQUEST_CONCURRENCY = 8; type LibraryDictionary = Record; @@ -38,12 +38,6 @@ function getRequiredEnvironmentVariable(name: string): string { return value; } -function createOctokit(): Octokit { - return new Octokit({ - auth: getRequiredEnvironmentVariable("GITHUB_TOKEN"), - }); -} - function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null && !Array.isArray(value); } @@ -126,25 +120,51 @@ function collectLibrariesByRepository( return Array.from(repositories.values()); } -async function authenticateGitHubToken(octokit: Octokit): Promise { +async function requestGitHubApi( + token: string, + path: string, +): Promise { + const response = await fetch(new URL(path, GITHUB_API_URL), { + headers: { + Accept: "application/vnd.github+json", + Authorization: `Bearer ${token}`, + "User-Agent": "jsonwebtoken.github.io", + "X-GitHub-Api-Version": "2022-11-28", + }, + }); + + if (!response.ok) { + throw new Error( + `GitHub API request failed with ${response.status} ${response.statusText}`, + ); + } + + return response; +} + +async function authenticateGitHubToken(token: string): Promise { try { - await octokit.rest.rateLimit.get(); + await requestGitHubApi(token, "/rate_limit"); } catch (cause) { throw new Error("Unable to authenticate GITHUB_TOKEN", { cause }); } } async function getStarCount( - octokit: Octokit, + token: string, repository: GitHubRepository, ): Promise { try { - const response = await octokit.rest.repos.get({ - owner: repository.owner, - repo: repository.repo, - }); + const owner = encodeURIComponent(repository.owner); + const repo = encodeURIComponent(repository.repo); + const response = await requestGitHubApi(token, `/repos/${owner}/${repo}`); + const data: unknown = await response.json(); + + if (!isRecord(data) || typeof data.stargazers_count !== "number") { + throw new Error("GitHub API response has no star count"); + } - return response.data.stargazers_count; + return data.stargazers_count; } catch (cause) { throw new Error(`Unable to get the star count for ${repository.fullName}`, { cause, @@ -153,7 +173,7 @@ async function getStarCount( } async function getStarCounts( - octokit: Octokit, + token: string, repositories: RepositoryLibraries[], ): Promise> { const starCounts = new Map(); @@ -166,7 +186,7 @@ async function getStarCounts( const batch = repositories.slice(index, index + REQUEST_CONCURRENCY); const results = await Promise.allSettled( batch.map(async (repository) => { - const stars = await getStarCount(octokit, repository); + const stars = await getStarCount(token, repository); return [repository.fullName, stars] as const; }), @@ -228,11 +248,11 @@ async function writeLibraryDictionary( async function main(): Promise { const dictionary = await readLibraryDictionary(); const repositories = collectLibrariesByRepository(dictionary); - const octokit = createOctokit(); + const token = getRequiredEnvironmentVariable("GITHUB_TOKEN"); - await authenticateGitHubToken(octokit); + await authenticateGitHubToken(token); - const starCounts = await getStarCounts(octokit, repositories); + const starCounts = await getStarCounts(token, repositories); const updatedLibraries = updateStarCounts(repositories, starCounts); const failedRepositories = repositories.length - starCounts.size; @@ -244,7 +264,7 @@ async function main(): Promise { if (failedRepositories > 0) { console.warn( - `Retained existing star counts for ${failedRepositories} GitHub repositories.`, + `Skipped ${failedRepositories} GitHub repositories whose star counts could not be fetched.`, ); } }