From 4b13b4303c8a636285cef8869c18bbdcb27a1119 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 12:15:58 -0500 Subject: [PATCH 1/9] feat(shared): add PR author field and release notes fetching Add `author` to PullRequestInfo so consumers can identify bot PRs. Add `listReleaseNotesBetween()` to fetch release notes from GitHub Releases API between two semver tags. --- shared/src/github.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ shared/src/index.ts | 1 + 2 files changed, 43 insertions(+) diff --git a/shared/src/github.ts b/shared/src/github.ts index ee07505..9c5d302 100644 --- a/shared/src/github.ts +++ b/shared/src/github.ts @@ -6,6 +6,7 @@ export interface PullRequestInfo { number: number; title: string; body: string | null; + author: string; diff: string; files: PullRequestFile[]; head: { ref: string; sha: string }; @@ -75,6 +76,7 @@ export async function getPullRequest( number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data as unknown as string, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -258,3 +260,43 @@ export async function getRepoTree( type: item.type!, })); } + +export async function listReleaseNotesBetween( + octokit: Octokit, + owner: string, + repo: string, + fromVersion: string, + toVersion: string, +): Promise { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + + const normalize = (v: string) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + + const relevant: { tag: string; body: string }[] = []; + let foundTo = false; + + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) break; + } + + if (relevant.length === 0) return null; + + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } catch { + return null; + } +} diff --git a/shared/src/index.ts b/shared/src/index.ts index a19d3c7..d37e28f 100644 --- a/shared/src/index.ts +++ b/shared/src/index.ts @@ -17,6 +17,7 @@ export { createBranch, getDefaultBranch, getRepoTree, + listReleaseNotesBetween, } from "./github"; export type { PullRequestInfo, From af51edb8ac60c6271097cd40775616d2cf8d0f24 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 12:16:04 -0500 Subject: [PATCH 2/9] fix(dependency-impact): ground analysis in release notes, eliminate filler - Fetch release notes via PR body (bot PRs) or GitHub Releases API - Branch prompt based on whether usage sites were found - With usage: cross-reference release notes against actual code - Without usage: summarize release notes, skip fabricated analysis - Explicitly ban generic advice and speculative breaking changes --- dependency-impact/src/index.ts | 105 ++++++++++++++++++++++++++++----- 1 file changed, 89 insertions(+), 16 deletions(-) diff --git a/dependency-impact/src/index.ts b/dependency-impact/src/index.ts index e32aeb4..1ebca57 100644 --- a/dependency-impact/src/index.ts +++ b/dependency-impact/src/index.ts @@ -10,9 +10,22 @@ import { postComment, getDefaultBranch, getRepoTree, + listReleaseNotesBetween, } from "@gemini-actions/shared"; import { parseDependencyChanges, getImportPatterns } from "./parsers"; +function resolveGitHubRepo(dep: { name: string; ecosystem: string }): { owner: string; repo: string } | null { + if (dep.ecosystem === "go" && dep.name.startsWith("github.com/")) { + const parts = dep.name.replace("github.com/", "").split("/"); + if (parts.length >= 2) return { owner: parts[0], repo: parts[1] }; + } + if (dep.ecosystem === "terraform" && dep.name.startsWith("registry.terraform.io/")) { + const parts = dep.name.replace("registry.terraform.io/", "").split("/"); + if (parts.length >= 2) return { owner: parts[0], repo: `terraform-provider-${parts[1]}` }; + } + return null; +} + async function run(): Promise { try { const prNumber = parseInt(core.getInput("pr_number", { required: true }), 10); @@ -106,16 +119,57 @@ async function run(): Promise { }) .join("\n\n"); - const prompt = `You are a dependency upgrade analyst. A pull request updates the following dependencies. -For each dependency, analyze the impact on the codebase. + const isDependabot = /\[bot\]$/.test(pr.author); + const hasBody = pr.body != null && pr.body.trim().length > 50; + + let releaseNotes: string | null = null; + + if (isDependabot && hasBody) { + releaseNotes = pr.body!; + } else { + for (const dep of depChanges) { + const ghRepo = resolveGitHubRepo(dep); + if (ghRepo) { + const notes = await listReleaseNotesBetween( + octokit, + ghRepo.owner, + ghRepo.repo, + dep.fromVersion, + dep.toVersion, + ); + if (notes) { + releaseNotes = (releaseNotes ?? "") + `\n\n## ${dep.name}\n${notes}`; + } + } + } + if (!releaseNotes && hasBody) { + releaseNotes = pr.body!; + } + } + + const prBodySection = releaseNotes + ? `**Release Notes:**\n${truncateText(releaseNotes.trim(), 15000, "release notes")}` + : "**Release Notes:** No release notes available."; + + const hasUsage = Object.values(usageContext).some(usages => usages.length > 0); + + const depChangesList = depChanges + .map( + (d) => + `- **${d.name}**: ${d.fromVersion} → ${d.toVersion} (${d.ecosystem})`, + ) + .join("\n"); + + let prompt: string; + + if (hasUsage) { + prompt = `You are a dependency upgrade analyst. A pull request updates the following dependencies. +Cross-reference the release notes with actual usage sites in this codebase. **Dependency Changes:** -${depChanges - .map( - (d) => - `- **${d.name}**: ${d.fromVersion} → ${d.toVersion} (${d.ecosystem})`, - ) - .join("\n")} +${depChangesList} + +${prBodySection} **Usage in Codebase:** ${usageSections} @@ -125,14 +179,33 @@ ${usageSections} ${truncateText(pr.diff, 10000, "PR diff")} \`\`\` -For each dependency, provide: -1. **Breaking changes**: Known breaking changes between these versions that affect this codebase -2. **Affected files**: Which files in the codebase use APIs that changed -3. **Migration steps**: Specific steps needed to adapt the codebase (if any) -4. **Risk assessment**: Low / Medium / High risk based on actual usage +Respond with ONLY sections that have content. Skip empty sections entirely. +- **Breaking changes affecting this codebase**: Only mention breaking changes that are confirmed by the release notes AND affect files shown in "Usage in Codebase". Do not speculate. +- **Action required**: Specific code changes needed, referencing actual file paths and line content from the usage context. +- **Risk assessment**: Low / Medium / High with a one-line justification. -Format your response as a markdown report. Be specific — reference actual file paths and API usage from the codebase. -If you don't have enough information about a dependency's changelog, say so and recommend reviewing the release notes manually.`; +RULES: +- Do NOT include generic advice like "review the changelog", "test in staging", "run terraform init", or "pin versions". +- Do NOT fabricate examples, hypothetical scenarios, or breaking changes not confirmed by the release notes. +- If the release notes do not mention breaking changes relevant to the detected usage, say "No breaking changes detected for current usage" and give a risk assessment.`; + } else { + prompt = `You are a dependency upgrade analyst. A pull request updates the following dependencies. +No usage of these dependencies was found in the source files. + +**Dependency Changes:** +${depChangesList} + +${prBodySection} + +Summarize the key highlights from the release notes as a concise bulleted list (max 10 bullets). +End with a one-line risk assessment (Low / Medium / High). + +RULES: +- Do NOT fabricate impact analysis, example scenarios, or migration steps. +- Do NOT reference files or APIs since no usage was found. +- Do NOT include generic advice like "review the changelog", "test in staging", or "pin versions". +- If no release notes are available, say "No release notes available and no usage detected — no action needed." and stop.`; + } const analysis = await generateContent(model, prompt); @@ -142,7 +215,7 @@ If you don't have enough information about a dependency's changelog, say so and ${analysis} --- -*Analyzed ${depChanges.length} dependency change(s) across ${Object.values(usageContext).flat().length} usage site(s) — Generated by [gemini-dependency-impact](https://github.com/dortort/gemini-actions)*`; +*${depChanges.length} dependency change(s) · ${Object.values(usageContext).flat().length} usage site(s) found — Generated by [gemini-dependency-impact](https://github.com/dortort/gemini-actions)*`; await postComment(octokit, owner, repo, prNumber, comment); core.info("Dependency impact analysis posted"); From 2fdfd209e8c14c98bc0f0ec44eefc8975146776b Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 12:16:10 -0500 Subject: [PATCH 3/9] docs(dependency-impact): document release notes sourcing approach --- dependency-impact/README.md | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/dependency-impact/README.md b/dependency-impact/README.md index 5266858..3b9bf67 100644 --- a/dependency-impact/README.md +++ b/dependency-impact/README.md @@ -50,8 +50,25 @@ jobs: ## How it works -1. Fetches the PR diff and parses dependency version changes +1. Fetches the PR diff and parses dependency version changes from lock files and manifests 2. Scans source files (up to 100) for imports of the changed dependencies -3. Extracts the relevant usage lines for context -4. Asks Gemini to analyze breaking changes, affected files, migration steps, and risk level +3. Fetches release notes using a layered approach: + - For bot PRs (Dependabot, Renovate) with a populated body, uses the PR body directly — these bots already aggregate changelogs between versions + - Otherwise, tries the GitHub Releases API for dependencies with resolvable repos (Go modules, Terraform providers) + - Falls back to the PR body if GitHub Releases yields nothing +4. Sends a tailored prompt to Gemini depending on whether usage was found: + - **With usage**: cross-references release notes against actual code. Reports only confirmed breaking changes, required actions, and risk + - **Without usage**: summarizes release notes highlights. No fabricated impact analysis 5. Posts the analysis as a PR comment + +## Release notes sourcing + +The action needs real release notes to produce useful output — without them, any LLM will fill the gap with speculation. Release notes are resolved in priority order: + +| Priority | Source | When used | +|----------|--------|-----------| +| 1 | PR body | PR author is a bot (`[bot]` suffix) and body has meaningful content (>50 chars) | +| 2 | GitHub Releases API | Dependency maps to a GitHub repo (Go modules via path, Terraform providers via registry convention) | +| 3 | PR body (fallback) | GitHub Releases returned nothing but the PR body has content | + +npm and pip packages cannot currently be resolved to GitHub repos automatically. For these ecosystems, release notes come from the PR body or are reported as unavailable. From bfd0a6e13019b62c5504e1672f67246c510eb5d6 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 12:16:16 -0500 Subject: [PATCH 4/9] chore: rebuild dist bundles --- datadog-responder/dist/index.js | 37 +- dependency-impact/dist/index.js | 125 ++- package-lock.json | 1293 +++++++++++++++++++++++++- pr-from-issue/dist/index.js | 37 +- pr-review/dist/index.js | 37 +- repo-qa/dist/index.js | 37 +- shared/dist/github.d.ts | 2 + shared/dist/github.js | 34 + shared/dist/index.d.ts | 2 +- shared/dist/index.js | 3 +- test-failure-diagnosis/dist/index.js | 37 +- 11 files changed, 1599 insertions(+), 45 deletions(-) diff --git a/datadog-responder/dist/index.js b/datadog-responder/dist/index.js index b9e1f29..83150d2 100644 --- a/datadog-responder/dist/index.js +++ b/datadog-responder/dist/index.js @@ -31556,6 +31556,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(__nccwpck_require__(2146)); function getOctokitClient(token) { return github.getOctokit(token); @@ -31591,6 +31592,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -31699,6 +31701,38 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map /***/ }), @@ -31709,7 +31743,7 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = __nccwpck_require__(9700); Object.defineProperty(exports, "createGeminiModel", ({ enumerable: true, get: function () { return gemini_1.createGeminiModel; } })); Object.defineProperty(exports, "generateContent", ({ enumerable: true, get: function () { return gemini_1.generateContent; } })); @@ -31728,6 +31762,7 @@ Object.defineProperty(exports, "createOrUpdateFile", ({ enumerable: true, get: f Object.defineProperty(exports, "createBranch", ({ enumerable: true, get: function () { return github_1.createBranch; } })); Object.defineProperty(exports, "getDefaultBranch", ({ enumerable: true, get: function () { return github_1.getDefaultBranch; } })); Object.defineProperty(exports, "getRepoTree", ({ enumerable: true, get: function () { return github_1.getRepoTree; } })); +Object.defineProperty(exports, "listReleaseNotesBetween", ({ enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } })); //# sourceMappingURL=index.js.map /***/ }), diff --git a/dependency-impact/dist/index.js b/dependency-impact/dist/index.js index d06dce9..fd2a6a8 100644 --- a/dependency-impact/dist/index.js +++ b/dependency-impact/dist/index.js @@ -31556,6 +31556,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(__nccwpck_require__(2146)); function getOctokitClient(token) { return github.getOctokit(token); @@ -31591,6 +31592,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -31699,6 +31701,38 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map /***/ }), @@ -31709,7 +31743,7 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = __nccwpck_require__(9700); Object.defineProperty(exports, "createGeminiModel", ({ enumerable: true, get: function () { return gemini_1.createGeminiModel; } })); Object.defineProperty(exports, "generateContent", ({ enumerable: true, get: function () { return gemini_1.generateContent; } })); @@ -31728,6 +31762,7 @@ Object.defineProperty(exports, "createOrUpdateFile", ({ enumerable: true, get: f Object.defineProperty(exports, "createBranch", ({ enumerable: true, get: function () { return github_1.createBranch; } })); Object.defineProperty(exports, "getDefaultBranch", ({ enumerable: true, get: function () { return github_1.getDefaultBranch; } })); Object.defineProperty(exports, "getRepoTree", ({ enumerable: true, get: function () { return github_1.getRepoTree; } })); +Object.defineProperty(exports, "listReleaseNotesBetween", ({ enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } })); //# sourceMappingURL=index.js.map /***/ }), @@ -31774,6 +31809,19 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); const core = __importStar(__nccwpck_require__(6618)); const shared_1 = __nccwpck_require__(7451); const parsers_1 = __nccwpck_require__(2149); +function resolveGitHubRepo(dep) { + if (dep.ecosystem === "go" && dep.name.startsWith("github.com/")) { + const parts = dep.name.replace("github.com/", "").split("/"); + if (parts.length >= 2) + return { owner: parts[0], repo: parts[1] }; + } + if (dep.ecosystem === "terraform" && dep.name.startsWith("registry.terraform.io/")) { + const parts = dep.name.replace("registry.terraform.io/", "").split("/"); + if (parts.length >= 2) + return { owner: parts[0], repo: `terraform-provider-${parts[1]}` }; + } + return null; +} async function run() { try { const prNumber = parseInt(core.getInput("pr_number", { required: true }), 10); @@ -31839,13 +31887,42 @@ async function run() { return `### ${name}\n${(0, shared_1.truncateText)(joined, maxUsageCharsPerDep, `${name} usage`)}`; }) .join("\n\n"); - const prompt = `You are a dependency upgrade analyst. A pull request updates the following dependencies. -For each dependency, analyze the impact on the codebase. + const isDependabot = /\[bot\]$/.test(pr.author); + const hasBody = pr.body != null && pr.body.trim().length > 50; + let releaseNotes = null; + if (isDependabot && hasBody) { + releaseNotes = pr.body; + } + else { + for (const dep of depChanges) { + const ghRepo = resolveGitHubRepo(dep); + if (ghRepo) { + const notes = await (0, shared_1.listReleaseNotesBetween)(octokit, ghRepo.owner, ghRepo.repo, dep.fromVersion, dep.toVersion); + if (notes) { + releaseNotes = (releaseNotes ?? "") + `\n\n## ${dep.name}\n${notes}`; + } + } + } + if (!releaseNotes && hasBody) { + releaseNotes = pr.body; + } + } + const prBodySection = releaseNotes + ? `**Release Notes:**\n${(0, shared_1.truncateText)(releaseNotes.trim(), 15000, "release notes")}` + : "**Release Notes:** No release notes available."; + const hasUsage = Object.values(usageContext).some(usages => usages.length > 0); + const depChangesList = depChanges + .map((d) => `- **${d.name}**: ${d.fromVersion} → ${d.toVersion} (${d.ecosystem})`) + .join("\n"); + let prompt; + if (hasUsage) { + prompt = `You are a dependency upgrade analyst. A pull request updates the following dependencies. +Cross-reference the release notes with actual usage sites in this codebase. **Dependency Changes:** -${depChanges - .map((d) => `- **${d.name}**: ${d.fromVersion} → ${d.toVersion} (${d.ecosystem})`) - .join("\n")} +${depChangesList} + +${prBodySection} **Usage in Codebase:** ${usageSections} @@ -31855,14 +31932,34 @@ ${usageSections} ${(0, shared_1.truncateText)(pr.diff, 10000, "PR diff")} \`\`\` -For each dependency, provide: -1. **Breaking changes**: Known breaking changes between these versions that affect this codebase -2. **Affected files**: Which files in the codebase use APIs that changed -3. **Migration steps**: Specific steps needed to adapt the codebase (if any) -4. **Risk assessment**: Low / Medium / High risk based on actual usage +Respond with ONLY sections that have content. Skip empty sections entirely. +- **Breaking changes affecting this codebase**: Only mention breaking changes that are confirmed by the release notes AND affect files shown in "Usage in Codebase". Do not speculate. +- **Action required**: Specific code changes needed, referencing actual file paths and line content from the usage context. +- **Risk assessment**: Low / Medium / High with a one-line justification. -Format your response as a markdown report. Be specific — reference actual file paths and API usage from the codebase. -If you don't have enough information about a dependency's changelog, say so and recommend reviewing the release notes manually.`; +RULES: +- Do NOT include generic advice like "review the changelog", "test in staging", "run terraform init", or "pin versions". +- Do NOT fabricate examples, hypothetical scenarios, or breaking changes not confirmed by the release notes. +- If the release notes do not mention breaking changes relevant to the detected usage, say "No breaking changes detected for current usage" and give a risk assessment.`; + } + else { + prompt = `You are a dependency upgrade analyst. A pull request updates the following dependencies. +No usage of these dependencies was found in the source files. + +**Dependency Changes:** +${depChangesList} + +${prBodySection} + +Summarize the key highlights from the release notes as a concise bulleted list (max 10 bullets). +End with a one-line risk assessment (Low / Medium / High). + +RULES: +- Do NOT fabricate impact analysis, example scenarios, or migration steps. +- Do NOT reference files or APIs since no usage was found. +- Do NOT include generic advice like "review the changelog", "test in staging", or "pin versions". +- If no release notes are available, say "No release notes available and no usage detected — no action needed." and stop.`; + } const analysis = await (0, shared_1.generateContent)(model, prompt); // 6. Post the analysis as a comment const comment = `## Gemini Dependency Impact Analysis @@ -31870,7 +31967,7 @@ If you don't have enough information about a dependency's changelog, say so and ${analysis} --- -*Analyzed ${depChanges.length} dependency change(s) across ${Object.values(usageContext).flat().length} usage site(s) — Generated by [gemini-dependency-impact](https://github.com/dortort/gemini-actions)*`; +*${depChanges.length} dependency change(s) · ${Object.values(usageContext).flat().length} usage site(s) found — Generated by [gemini-dependency-impact](https://github.com/dortort/gemini-actions)*`; await (0, shared_1.postComment)(octokit, owner, repo, prNumber, comment); core.info("Dependency impact analysis posted"); } diff --git a/package-lock.json b/package-lock.json index 999a118..806e772 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,8 @@ }, "node_modules/@actions/core": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", "license": "MIT", "dependencies": { "@actions/exec": "^1.1.1", @@ -50,6 +52,8 @@ }, "node_modules/@actions/exec": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", "license": "MIT", "dependencies": { "@actions/io": "^1.0.1" @@ -57,6 +61,8 @@ }, "node_modules/@actions/github": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.1.tgz", + "integrity": "sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw==", "license": "MIT", "dependencies": { "@actions/http-client": "^2.2.0", @@ -70,6 +76,8 @@ }, "node_modules/@actions/http-client": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", "license": "MIT", "dependencies": { "tunnel": "^0.0.6", @@ -78,10 +86,14 @@ }, "node_modules/@actions/io": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", "license": "MIT" }, "node_modules/@emnapi/core": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dev": true, "license": "MIT", "dependencies": { @@ -91,6 +103,8 @@ }, "node_modules/@emnapi/runtime": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, "license": "MIT", "dependencies": { @@ -99,14 +113,86 @@ }, "node_modules/@emnapi/wasi-threads": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, "license": "MIT", "dependencies": { "tslib": "^2.4.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -120,8 +206,316 @@ "node": ">=12" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "license": "MIT", "engines": { "node": ">=14" @@ -133,6 +527,8 @@ }, "node_modules/@google/generative-ai": { "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.21.0.tgz", + "integrity": "sha512-7XhUbtnlkSEZK15kN3t+tzIMxsbKm/dSkKBFalj+20NvPKe1kBY7mR2P7vuijEn+f06z5+A8bVGKO0v39cr6Wg==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -140,6 +536,8 @@ }, "node_modules/@isaacs/balanced-match": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, "license": "MIT", "engines": { @@ -148,6 +546,8 @@ }, "node_modules/@isaacs/brace-expansion": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -159,6 +559,8 @@ }, "node_modules/@jest/diff-sequences": { "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", "dev": true, "license": "MIT", "engines": { @@ -167,6 +569,8 @@ }, "node_modules/@jest/get-type": { "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", "engines": { @@ -175,6 +579,8 @@ }, "node_modules/@jest/schemas": { "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { @@ -184,23 +590,141 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.5.1.tgz", + "integrity": "sha512-DuvOwhXPO6l9W7/zM4/BaAbGTIXFyHVcbbCD1c7HfgZ3VfJPmcE7H4+TuQH0cigHHtpg/eGqV100NQbd7N4zwg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.5.1.tgz", + "integrity": "sha512-81Lb7+rp3Qltpgy33Kc1qxk+8IWqZLhqvdLdRFSVV1FN1pPSJDFKyPjCn9oMpRryNPSJ8DgZDpfIaVVyP85rUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.5.1.tgz", + "integrity": "sha512-Ig8yQN3lSz9R+Zf3NQWcvEnIzwDX4NSeaFtEliPnC3OHlQXGNXbOUfkExa0U0UUgyxa4rgnCgefmwuc12H9q2Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.5.1.tgz", + "integrity": "sha512-C7tGoLnR9MjKLJsLMF2VsKcDChPiygAsw6dSVgU4B650H7sBWmkEHM/QjvyRvkcZuoQBDamS/eVs/UaJu9wNhA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.5.1.tgz", + "integrity": "sha512-GNxei+lwhzhrO9m+nNkibgxLhbkYKyFXPSRpOKLwv9VavNzJn5UmLfKJyhjNQPBOSYuNhiVPbU1Ja/qOBcozYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.5.1.tgz", + "integrity": "sha512-VDJtdJP2nCgS8ommbfWFAKjoZCE51VH7tZyIfh8RFI5fxwoB3Pk6d6f6cmNHI/1t98YI3V7Onuf3Y9KBkYtyfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.5.1.tgz", + "integrity": "sha512-BZ/i+KTplEJmE8ZHKgPGD513Zl86DuSGyRAvbDZ7Qf19Tei7Of6vxW+ypvVDIwmDbyXfe13u54M5gDt8iiqFGQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", + "node_modules/@nx/nx-linux-x64-musl": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.5.1.tgz", + "integrity": "sha512-e0VdiV6fe88Dbhill2gUjYAD9jMhHjYsafGOPR+/uaGMAYPoI1jKur6uPGY+ik6fvwvDFFl0VT2+HACKVn7RoA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "22.5.0", + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.5.1.tgz", + "integrity": "sha512-3vWZO9y7uHKeyepcU55pE8VQTKGome3mLdicvx1TCoKKl0cA3bTR341Jdo2Zl4Waa2ENk7pGQbLWRQ3ZkaA92A==", "cpu": [ "arm64" ], @@ -208,11 +732,27 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" + ] + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.5.1.tgz", + "integrity": "sha512-4e5LduuhpBx96JgD1J3fHUGCwC+/lL+tvXp3UVtjh/AOdINGsyI+scinT3uaI9vcB5GKBcybTxbBZzwcH50w9g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" ] }, "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" @@ -220,6 +760,8 @@ }, "node_modules/@octokit/core": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "license": "MIT", "dependencies": { "@octokit/auth-token": "^4.0.0", @@ -236,6 +778,8 @@ }, "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", @@ -247,6 +791,8 @@ }, "node_modules/@octokit/graphql": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", "license": "MIT", "dependencies": { "@octokit/request": "^8.4.1", @@ -259,10 +805,14 @@ }, "node_modules/@octokit/openapi-types": { "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", + "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==", "license": "MIT", "dependencies": { "@octokit/types": "^12.6.0" @@ -276,10 +826,14 @@ }, "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "license": "MIT", "dependencies": { "@octokit/openapi-types": "^20.0.0" @@ -287,6 +841,8 @@ }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", "license": "MIT", "dependencies": { "@octokit/types": "^12.6.0" @@ -300,10 +856,14 @@ }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", "license": "MIT" }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "license": "MIT", "dependencies": { "@octokit/openapi-types": "^20.0.0" @@ -311,6 +871,8 @@ }, "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", @@ -324,6 +886,8 @@ }, "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", @@ -336,13 +900,45 @@ }, "node_modules/@octokit/types": { "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "license": "MIT", "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", "cpu": [ "arm64" ], @@ -353,13 +949,325 @@ "darwin" ] }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sinclair/typebox": { "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, "license": "MIT" }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "dev": true, "license": "MIT", "dependencies": { @@ -368,11 +1276,15 @@ }, "node_modules/@types/estree": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "20.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz", + "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==", "dev": true, "license": "MIT", "dependencies": { @@ -381,6 +1293,8 @@ }, "node_modules/@vercel/ncc": { "version": "0.38.4", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz", + "integrity": "sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==", "dev": true, "license": "MIT", "bin": { @@ -389,6 +1303,8 @@ }, "node_modules/@vitest/expect": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", + "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", "dev": true, "license": "MIT", "dependencies": { @@ -403,6 +1319,8 @@ }, "node_modules/@vitest/mocker": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", + "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", "dev": true, "license": "MIT", "dependencies": { @@ -428,6 +1346,8 @@ }, "node_modules/@vitest/pretty-format": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -439,6 +1359,8 @@ }, "node_modules/@vitest/runner": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", + "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", "dev": true, "license": "MIT", "dependencies": { @@ -451,6 +1373,8 @@ }, "node_modules/@vitest/snapshot": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -464,6 +1388,8 @@ }, "node_modules/@vitest/spy": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", + "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -475,6 +1401,8 @@ }, "node_modules/@vitest/utils": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { @@ -488,11 +1416,15 @@ }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/@yarnpkg/parsers": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", + "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -505,6 +1437,8 @@ }, "node_modules/@zkochan/js-yaml": { "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -516,6 +1450,8 @@ }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", "engines": { @@ -524,6 +1460,8 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -532,6 +1470,8 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -546,11 +1486,15 @@ }, "node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/assertion-error": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { @@ -559,16 +1503,22 @@ }, "node_modules/async": { "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "node_modules/axios": { "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -579,11 +1529,15 @@ }, "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -603,10 +1557,14 @@ }, "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/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", "dependencies": { @@ -617,6 +1575,8 @@ }, "node_modules/brace-expansion": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -625,6 +1585,8 @@ }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -648,6 +1610,8 @@ }, "node_modules/cac": { "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", "engines": { @@ -656,6 +1620,8 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -668,6 +1634,8 @@ }, "node_modules/chai": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, "license": "MIT", "dependencies": { @@ -683,6 +1651,8 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -698,6 +1668,8 @@ }, "node_modules/check-error": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "dev": true, "license": "MIT", "engines": { @@ -706,6 +1678,8 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", "dependencies": { @@ -717,6 +1691,8 @@ }, "node_modules/cli-spinners": { "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, "license": "MIT", "engines": { @@ -728,6 +1704,8 @@ }, "node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -741,6 +1719,8 @@ }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", "engines": { @@ -749,6 +1729,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -760,11 +1742,15 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -780,6 +1766,8 @@ }, "node_modules/debug": { "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -796,6 +1784,8 @@ }, "node_modules/deep-eql": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, "license": "MIT", "engines": { @@ -804,6 +1794,8 @@ }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", "dependencies": { @@ -815,6 +1807,8 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "license": "MIT", "engines": { @@ -823,6 +1817,8 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -835,10 +1831,14 @@ }, "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/dotenv": { "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -850,6 +1850,8 @@ }, "node_modules/dotenv-expand": { "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -864,6 +1866,8 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { @@ -877,6 +1881,8 @@ }, "node_modules/ejs": { "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -891,11 +1897,15 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", "dependencies": { @@ -904,6 +1914,8 @@ }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "license": "MIT", "dependencies": { @@ -915,6 +1927,8 @@ }, "node_modules/es-define-property": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { @@ -923,6 +1937,8 @@ }, "node_modules/es-errors": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", "engines": { @@ -931,11 +1947,15 @@ }, "node_modules/es-module-lexer": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { @@ -947,6 +1967,8 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { @@ -961,6 +1983,8 @@ }, "node_modules/esbuild": { "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -998,6 +2022,8 @@ }, "node_modules/escalade": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -1006,6 +2032,8 @@ }, "node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -1014,6 +2042,8 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { @@ -1026,6 +2056,8 @@ }, "node_modules/estree-walker": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { @@ -1034,6 +2066,8 @@ }, "node_modules/expect-type": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1042,6 +2076,8 @@ }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "license": "MIT", "dependencies": { @@ -1056,6 +2092,8 @@ }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1064,6 +2102,8 @@ }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", "dependencies": { @@ -1075,6 +2115,8 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { @@ -1083,6 +2125,8 @@ }, "node_modules/follow-redirects": { "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -1102,6 +2146,8 @@ }, "node_modules/form-data": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { @@ -1117,6 +2163,8 @@ }, "node_modules/front-matter": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", "dev": true, "license": "MIT", "dependencies": { @@ -1125,12 +2173,17 @@ }, "node_modules/fs-constants": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, "license": "MIT" }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -1142,6 +2195,8 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -1150,6 +2205,8 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { @@ -1158,6 +2215,8 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1181,6 +2240,8 @@ }, "node_modules/get-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { @@ -1193,6 +2254,8 @@ }, "node_modules/gopd": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { @@ -1204,6 +2267,8 @@ }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -1212,6 +2277,8 @@ }, "node_modules/has-symbols": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -1223,6 +2290,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { @@ -1237,6 +2306,8 @@ }, "node_modules/hasown": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1248,6 +2319,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -1267,6 +2340,8 @@ }, "node_modules/ignore": { "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -1275,11 +2350,15 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "license": "MIT", "bin": { @@ -1294,6 +2373,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -1302,6 +2383,8 @@ }, "node_modules/is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", "engines": { @@ -1310,6 +2393,8 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -1321,6 +2406,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", "dependencies": { @@ -1332,6 +2419,8 @@ }, "node_modules/jake": { "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1348,6 +2437,8 @@ }, "node_modules/jest-diff": { "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", "dependencies": { @@ -1362,6 +2453,8 @@ }, "node_modules/js-yaml": { "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -1374,6 +2467,8 @@ }, "node_modules/js-yaml/node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { @@ -1382,6 +2477,8 @@ }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -1393,11 +2490,15 @@ }, "node_modules/jsonc-parser": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true, "license": "MIT" }, "node_modules/lines-and-columns": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, "license": "MIT", "engines": { @@ -1406,6 +2507,8 @@ }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -1421,11 +2524,15 @@ }, "node_modules/loupe": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1434,6 +2541,8 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { @@ -1442,6 +2551,8 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -1450,6 +2561,8 @@ }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -1461,6 +2574,8 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -1469,6 +2584,8 @@ }, "node_modules/minimatch": { "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -1483,6 +2600,8 @@ }, "node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -1491,11 +2610,15 @@ }, "node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -1513,11 +2636,15 @@ }, "node_modules/node-machine-id": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "dev": true, "license": "MIT" }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { @@ -1528,7 +2655,9 @@ } }, "node_modules/nx": { - "version": "22.5.0", + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-22.5.1.tgz", + "integrity": "sha512-KIQqOSdoshkav9JuoH/+Vp42niA5MTRtACupe+q8CaB7bHiLsWr5nctQVC7ul3NauAmsoqNWH7t5CIi8KgrPIQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1575,16 +2704,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "22.5.0", - "@nx/nx-darwin-x64": "22.5.0", - "@nx/nx-freebsd-x64": "22.5.0", - "@nx/nx-linux-arm-gnueabihf": "22.5.0", - "@nx/nx-linux-arm64-gnu": "22.5.0", - "@nx/nx-linux-arm64-musl": "22.5.0", - "@nx/nx-linux-x64-gnu": "22.5.0", - "@nx/nx-linux-x64-musl": "22.5.0", - "@nx/nx-win32-arm64-msvc": "22.5.0", - "@nx/nx-win32-x64-msvc": "22.5.0" + "@nx/nx-darwin-arm64": "22.5.1", + "@nx/nx-darwin-x64": "22.5.1", + "@nx/nx-freebsd-x64": "22.5.1", + "@nx/nx-linux-arm-gnueabihf": "22.5.1", + "@nx/nx-linux-arm64-gnu": "22.5.1", + "@nx/nx-linux-arm64-musl": "22.5.1", + "@nx/nx-linux-x64-gnu": "22.5.1", + "@nx/nx-linux-x64-musl": "22.5.1", + "@nx/nx-win32-arm64-msvc": "22.5.1", + "@nx/nx-win32-x64-msvc": "22.5.1" }, "peerDependencies": { "@swc-node/register": "1.11.1", @@ -1601,6 +2730,8 @@ }, "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==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -1608,6 +2739,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -1622,6 +2755,8 @@ }, "node_modules/open": { "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1638,6 +2773,8 @@ }, "node_modules/ora": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "license": "MIT", "dependencies": { @@ -1659,6 +2796,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -1667,11 +2806,15 @@ }, "node_modules/pathe": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, "license": "MIT" }, "node_modules/pathval": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { @@ -1680,11 +2823,15 @@ }, "node_modules/picocolors": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/postcss": { "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -1720,6 +2867,8 @@ }, "node_modules/pretty-format": { "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1733,6 +2882,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { @@ -1744,16 +2895,22 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true, "license": "MIT" }, "node_modules/react-is": { "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, "node_modules/readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { @@ -1771,6 +2928,8 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -1779,6 +2938,8 @@ }, "node_modules/resolve.exports": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -1787,6 +2948,8 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", "dependencies": { @@ -1799,6 +2962,8 @@ }, "node_modules/rollup": { "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", "dev": true, "license": "MIT", "dependencies": { @@ -1842,6 +3007,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -1861,6 +3028,8 @@ }, "node_modules/semver": { "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -1872,16 +3041,22 @@ }, "node_modules/siginfo": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/source-map-js": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1890,21 +3065,29 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/stackback": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, "license": "MIT" }, "node_modules/std-env": { "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "dev": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", "dependencies": { @@ -1913,6 +3096,8 @@ }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -1926,6 +3111,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -1937,6 +3124,8 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", "engines": { @@ -1945,6 +3134,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -1956,6 +3147,8 @@ }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1975,16 +3168,22 @@ }, "node_modules/tinybench": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, "license": "MIT" }, "node_modules/tinyexec": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", "dev": true, "license": "MIT" }, "node_modules/tinypool": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -1993,6 +3192,8 @@ }, "node_modules/tinyrainbow": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", "engines": { @@ -2001,6 +3202,8 @@ }, "node_modules/tinyspy": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, "license": "MIT", "engines": { @@ -2009,6 +3212,8 @@ }, "node_modules/tmp": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, "license": "MIT", "engines": { @@ -2017,6 +3222,8 @@ }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -2025,6 +3232,8 @@ }, "node_modules/tsconfig-paths": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "license": "MIT", "dependencies": { @@ -2038,11 +3247,15 @@ }, "node_modules/tslib": { "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, "node_modules/tunnel": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" @@ -2050,6 +3263,8 @@ }, "node_modules/typescript": { "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2062,6 +3277,8 @@ }, "node_modules/undici": { "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" @@ -2072,20 +3289,28 @@ }, "node_modules/undici-types": { "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, "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/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "license": "MIT" }, "node_modules/vite": { "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -2144,6 +3369,8 @@ }, "node_modules/vite-node": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", + "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", "dev": true, "license": "MIT", "dependencies": { @@ -2165,6 +3392,8 @@ }, "node_modules/vitest": { "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", + "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2229,6 +3458,8 @@ }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", "dependencies": { @@ -2237,6 +3468,8 @@ }, "node_modules/why-is-node-running": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { @@ -2252,6 +3485,8 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2268,10 +3503,14 @@ }, "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==", "license": "ISC" }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -2280,6 +3519,8 @@ }, "node_modules/yaml": { "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { @@ -2294,6 +3535,8 @@ }, "node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -2311,6 +3554,8 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { diff --git a/pr-from-issue/dist/index.js b/pr-from-issue/dist/index.js index b85c226..2b6fc5f 100644 --- a/pr-from-issue/dist/index.js +++ b/pr-from-issue/dist/index.js @@ -31556,6 +31556,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(__nccwpck_require__(2146)); function getOctokitClient(token) { return github.getOctokit(token); @@ -31591,6 +31592,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -31699,6 +31701,38 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map /***/ }), @@ -31709,7 +31743,7 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = __nccwpck_require__(9700); Object.defineProperty(exports, "createGeminiModel", ({ enumerable: true, get: function () { return gemini_1.createGeminiModel; } })); Object.defineProperty(exports, "generateContent", ({ enumerable: true, get: function () { return gemini_1.generateContent; } })); @@ -31728,6 +31762,7 @@ Object.defineProperty(exports, "createOrUpdateFile", ({ enumerable: true, get: f Object.defineProperty(exports, "createBranch", ({ enumerable: true, get: function () { return github_1.createBranch; } })); Object.defineProperty(exports, "getDefaultBranch", ({ enumerable: true, get: function () { return github_1.getDefaultBranch; } })); Object.defineProperty(exports, "getRepoTree", ({ enumerable: true, get: function () { return github_1.getRepoTree; } })); +Object.defineProperty(exports, "listReleaseNotesBetween", ({ enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } })); //# sourceMappingURL=index.js.map /***/ }), diff --git a/pr-review/dist/index.js b/pr-review/dist/index.js index d2a7250..c0a72fe 100644 --- a/pr-review/dist/index.js +++ b/pr-review/dist/index.js @@ -31556,6 +31556,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(__nccwpck_require__(2146)); function getOctokitClient(token) { return github.getOctokit(token); @@ -31591,6 +31592,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -31699,6 +31701,38 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map /***/ }), @@ -31709,7 +31743,7 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = __nccwpck_require__(9700); Object.defineProperty(exports, "createGeminiModel", ({ enumerable: true, get: function () { return gemini_1.createGeminiModel; } })); Object.defineProperty(exports, "generateContent", ({ enumerable: true, get: function () { return gemini_1.generateContent; } })); @@ -31728,6 +31762,7 @@ Object.defineProperty(exports, "createOrUpdateFile", ({ enumerable: true, get: f Object.defineProperty(exports, "createBranch", ({ enumerable: true, get: function () { return github_1.createBranch; } })); Object.defineProperty(exports, "getDefaultBranch", ({ enumerable: true, get: function () { return github_1.getDefaultBranch; } })); Object.defineProperty(exports, "getRepoTree", ({ enumerable: true, get: function () { return github_1.getRepoTree; } })); +Object.defineProperty(exports, "listReleaseNotesBetween", ({ enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } })); //# sourceMappingURL=index.js.map /***/ }), diff --git a/repo-qa/dist/index.js b/repo-qa/dist/index.js index 2645253..e96b9ad 100644 --- a/repo-qa/dist/index.js +++ b/repo-qa/dist/index.js @@ -31556,6 +31556,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(__nccwpck_require__(2146)); function getOctokitClient(token) { return github.getOctokit(token); @@ -31591,6 +31592,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -31699,6 +31701,38 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map /***/ }), @@ -31709,7 +31743,7 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = __nccwpck_require__(9700); Object.defineProperty(exports, "createGeminiModel", ({ enumerable: true, get: function () { return gemini_1.createGeminiModel; } })); Object.defineProperty(exports, "generateContent", ({ enumerable: true, get: function () { return gemini_1.generateContent; } })); @@ -31728,6 +31762,7 @@ Object.defineProperty(exports, "createOrUpdateFile", ({ enumerable: true, get: f Object.defineProperty(exports, "createBranch", ({ enumerable: true, get: function () { return github_1.createBranch; } })); Object.defineProperty(exports, "getDefaultBranch", ({ enumerable: true, get: function () { return github_1.getDefaultBranch; } })); Object.defineProperty(exports, "getRepoTree", ({ enumerable: true, get: function () { return github_1.getRepoTree; } })); +Object.defineProperty(exports, "listReleaseNotesBetween", ({ enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } })); //# sourceMappingURL=index.js.map /***/ }), diff --git a/shared/dist/github.d.ts b/shared/dist/github.d.ts index 8a3dd42..2cae44b 100644 --- a/shared/dist/github.d.ts +++ b/shared/dist/github.d.ts @@ -4,6 +4,7 @@ export interface PullRequestInfo { number: number; title: string; body: string | null; + author: string; diff: string; files: PullRequestFile[]; head: { @@ -60,5 +61,6 @@ export declare function getRepoTree(octokit: Octokit, owner: string, repo: strin path: string; type: string; }[]>; +export declare function listReleaseNotesBetween(octokit: Octokit, owner: string, repo: string, fromVersion: string, toVersion: string): Promise; export {}; //# sourceMappingURL=github.d.ts.map \ No newline at end of file diff --git a/shared/dist/github.js b/shared/dist/github.js index cf45ec5..74ff61c 100644 --- a/shared/dist/github.js +++ b/shared/dist/github.js @@ -45,6 +45,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(require("@actions/github")); function getOctokitClient(token) { return github.getOctokit(token); @@ -80,6 +81,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -188,4 +190,36 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map \ No newline at end of file diff --git a/shared/dist/index.d.ts b/shared/dist/index.d.ts index e9e8187..69b1292 100644 --- a/shared/dist/index.d.ts +++ b/shared/dist/index.d.ts @@ -1,4 +1,4 @@ export { createGeminiModel, generateContent, countTokens, truncateText, } from "./gemini"; -export { getOctokitClient, getRepoContext, getIssue, getPullRequest, getFileContent, postComment, createPullRequest, createReview, createOrUpdateFile, createBranch, getDefaultBranch, getRepoTree, } from "./github"; +export { getOctokitClient, getRepoContext, getIssue, getPullRequest, getFileContent, postComment, createPullRequest, createReview, createOrUpdateFile, createBranch, getDefaultBranch, getRepoTree, listReleaseNotesBetween, } from "./github"; export type { PullRequestInfo, PullRequestFile, IssueInfo, ReviewComment, } from "./github"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/shared/dist/index.js b/shared/dist/index.js index 7095dfc..b2b2f72 100644 --- a/shared/dist/index.js +++ b/shared/dist/index.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = require("./gemini"); Object.defineProperty(exports, "createGeminiModel", { enumerable: true, get: function () { return gemini_1.createGeminiModel; } }); Object.defineProperty(exports, "generateContent", { enumerable: true, get: function () { return gemini_1.generateContent; } }); @@ -19,4 +19,5 @@ Object.defineProperty(exports, "createOrUpdateFile", { enumerable: true, get: fu Object.defineProperty(exports, "createBranch", { enumerable: true, get: function () { return github_1.createBranch; } }); Object.defineProperty(exports, "getDefaultBranch", { enumerable: true, get: function () { return github_1.getDefaultBranch; } }); Object.defineProperty(exports, "getRepoTree", { enumerable: true, get: function () { return github_1.getRepoTree; } }); +Object.defineProperty(exports, "listReleaseNotesBetween", { enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/test-failure-diagnosis/dist/index.js b/test-failure-diagnosis/dist/index.js index 6209c81..6002521 100644 --- a/test-failure-diagnosis/dist/index.js +++ b/test-failure-diagnosis/dist/index.js @@ -31556,6 +31556,7 @@ exports.createOrUpdateFile = createOrUpdateFile; exports.createBranch = createBranch; exports.getDefaultBranch = getDefaultBranch; exports.getRepoTree = getRepoTree; +exports.listReleaseNotesBetween = listReleaseNotesBetween; const github = __importStar(__nccwpck_require__(2146)); function getOctokitClient(token) { return github.getOctokit(token); @@ -31591,6 +31592,7 @@ async function getPullRequest(octokit, owner, repo, prNumber) { number: prResponse.data.number, title: prResponse.data.title, body: prResponse.data.body, + author: prResponse.data.user?.login ?? "", diff: diffResponse.data, files: filesResponse.data.map((f) => ({ filename: f.filename, @@ -31699,6 +31701,38 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { type: item.type, })); } +async function listReleaseNotesBetween(octokit, owner, repo, fromVersion, toVersion) { + try { + const { data: releases } = await octokit.rest.repos.listReleases({ + owner, + repo, + per_page: 100, + }); + const normalize = (v) => v.replace(/^v/, ""); + const from = normalize(fromVersion); + const to = normalize(toVersion); + const relevant = []; + let foundTo = false; + for (const release of releases) { + const tag = normalize(release.tag_name); + if (tag === to) + foundTo = true; + if (foundTo && tag !== from) { + if (release.body) { + relevant.push({ tag: release.tag_name, body: release.body }); + } + } + if (tag === from) + break; + } + if (relevant.length === 0) + return null; + return relevant.map((r) => `### ${r.tag}\n${r.body}`).join("\n\n"); + } + catch { + return null; + } +} //# sourceMappingURL=github.js.map /***/ }), @@ -31709,7 +31743,7 @@ async function getRepoTree(octokit, owner, repo, sha, recursive = true) { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; +exports.listReleaseNotesBetween = exports.getRepoTree = exports.getDefaultBranch = exports.createBranch = exports.createOrUpdateFile = exports.createReview = exports.createPullRequest = exports.postComment = exports.getFileContent = exports.getPullRequest = exports.getIssue = exports.getRepoContext = exports.getOctokitClient = exports.truncateText = exports.countTokens = exports.generateContent = exports.createGeminiModel = void 0; var gemini_1 = __nccwpck_require__(9700); Object.defineProperty(exports, "createGeminiModel", ({ enumerable: true, get: function () { return gemini_1.createGeminiModel; } })); Object.defineProperty(exports, "generateContent", ({ enumerable: true, get: function () { return gemini_1.generateContent; } })); @@ -31728,6 +31762,7 @@ Object.defineProperty(exports, "createOrUpdateFile", ({ enumerable: true, get: f Object.defineProperty(exports, "createBranch", ({ enumerable: true, get: function () { return github_1.createBranch; } })); Object.defineProperty(exports, "getDefaultBranch", ({ enumerable: true, get: function () { return github_1.getDefaultBranch; } })); Object.defineProperty(exports, "getRepoTree", ({ enumerable: true, get: function () { return github_1.getRepoTree; } })); +Object.defineProperty(exports, "listReleaseNotesBetween", ({ enumerable: true, get: function () { return github_1.listReleaseNotesBetween; } })); //# sourceMappingURL=index.js.map /***/ }), From bbf8c3931ee1944f6d4883e52fe321509e1e8eb1 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 14:02:53 -0500 Subject: [PATCH 5/9] feat(dependency-impact): add Composer parser for composer.json and composer.lock Parse dependency version changes from composer.json (diff-based, same approach as package.json) and composer.lock (name+version field tracking). Add PHP namespace import patterns for codebase usage scanning. --- dependency-impact/src/parsers.ts | 62 ++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/dependency-impact/src/parsers.ts b/dependency-impact/src/parsers.ts index 812d18f..05eaba5 100644 --- a/dependency-impact/src/parsers.ts +++ b/dependency-impact/src/parsers.ts @@ -33,6 +33,59 @@ export function parseDependencyChanges(diff: string, files: { filename: string; } } + // Parse composer.json changes (Composer) + if (file.filename.endsWith("composer.json")) { + const removed = new Map(); + const added = new Map(); + + for (const line of file.patch.split("\n")) { + const match = line.match(/^([-+])\s*"([^"]+\/[^"]+)":\s*"[~^]?(\d+[^"]*)"/) + if (match) { + if (match[1] === "-") removed.set(match[2], match[3]); + else added.set(match[2], match[3]); + } + } + + for (const [name, toVersion] of added) { + const fromVersion = removed.get(name); + if (fromVersion && fromVersion !== toVersion) { + changes.push({ name, fromVersion, toVersion, ecosystem: "composer" }); + } + } + } + + // Parse composer.lock changes (Composer) + if (file.filename.endsWith("composer.lock")) { + const removed = new Map(); + const added = new Map(); + let removedName = ""; + let addedName = ""; + + for (const line of file.patch.split("\n")) { + const nameMatch = line.match(/^([-+])\s*"name":\s*"([^"]+)"/); + if (nameMatch) { + if (nameMatch[1] === "-") removedName = nameMatch[2]; + else addedName = nameMatch[2]; + } + + const versionMatch = line.match(/^([-+])\s*"version":\s*"v?(\d+[^"]*)"/); + if (versionMatch) { + if (versionMatch[1] === "-") { + removed.set(removedName, versionMatch[2]); + } else { + added.set(addedName, versionMatch[2]); + } + } + } + + for (const [name, toVersion] of added) { + const fromVersion = removed.get(name); + if (fromVersion && fromVersion !== toVersion) { + changes.push({ name, fromVersion, toVersion, ecosystem: "composer" }); + } + } + } + // Parse requirements.txt changes (Python) if (file.filename.endsWith("requirements.txt") || file.filename.endsWith("Pipfile")) { const removed = new Map(); @@ -133,6 +186,15 @@ export function getImportPatterns(depName: string, ecosystem: string): string[] `provider "${shortName}"`, ]; } + case "composer": { + // Convert vendor/package to PascalCase namespace + // e.g., "symfony/console" -> "Symfony\\Console" + const namespace = depName + .split("/") + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join("\\"); + return [`use ${namespace}\\`, `use ${namespace};`]; + } default: return [depName]; } From 9ed62f3f78cbe519e0d62b664a97a0b7920418bc Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 14:02:59 -0500 Subject: [PATCH 6/9] test(dependency-impact): add Composer parser tests Cover composer.json version change detection, composer.lock version tracking, unchanged version ignoring, multiple lock changes, and PHP namespace import pattern generation. --- dependency-impact/src/parsers.test.ts | 96 +++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/dependency-impact/src/parsers.test.ts b/dependency-impact/src/parsers.test.ts index 1e820f8..8d25bd2 100644 --- a/dependency-impact/src/parsers.test.ts +++ b/dependency-impact/src/parsers.test.ts @@ -229,6 +229,93 @@ describe("parseDependencyChanges", () => { }); }); + describe("composer", () => { + it("detects a package version change in composer.json", () => { + const patch = [ + `- "symfony/console": "^6.3"`, + `+ "symfony/console": "^7.0"`, + ].join("\n"); + + const result = parseDependencyChanges("", [ + { filename: "composer.json", patch }, + ]); + + expect(result).toEqual([ + { + name: "symfony/console", + fromVersion: "6.3", + toVersion: "7.0", + ecosystem: "composer", + }, + ]); + }); + + it("detects version changes in composer.lock", () => { + const patch = [ + `- "name": "symfony/console",`, + `- "version": "v6.3.12",`, + `+ "name": "symfony/console",`, + `+ "version": "v7.0.4",`, + ].join("\n"); + + const result = parseDependencyChanges("", [ + { filename: "composer.lock", patch }, + ]); + + expect(result).toEqual([ + { + name: "symfony/console", + fromVersion: "6.3.12", + toVersion: "7.0.4", + ecosystem: "composer", + }, + ]); + }); + + it("ignores unchanged versions in composer.json", () => { + const patch = [ + ` "symfony/console": "^6.3"`, + ].join("\n"); + + const result = parseDependencyChanges("", [ + { filename: "composer.json", patch }, + ]); + + expect(result).toEqual([]); + }); + + it("detects multiple changes in composer.lock", () => { + const patch = [ + `- "name": "symfony/console",`, + `- "version": "v6.3.12",`, + `+ "name": "symfony/console",`, + `+ "version": "v7.0.4",`, + `- "name": "guzzlehttp/guzzle",`, + `- "version": "7.5.0",`, + `+ "name": "guzzlehttp/guzzle",`, + `+ "version": "7.8.1",`, + ].join("\n"); + + const result = parseDependencyChanges("", [ + { filename: "composer.lock", patch }, + ]); + + expect(result).toHaveLength(2); + expect(result).toContainEqual({ + name: "symfony/console", + fromVersion: "6.3.12", + toVersion: "7.0.4", + ecosystem: "composer", + }); + expect(result).toContainEqual({ + name: "guzzlehttp/guzzle", + fromVersion: "7.5.0", + toVersion: "7.8.1", + ecosystem: "composer", + }); + }); + }); + it("returns empty array when changes are not dependency-related", () => { const patch = [ `- "name": "my-app",`, @@ -301,6 +388,15 @@ describe("getImportPatterns", () => { }); }); + describe("composer", () => { + it("returns PHP namespace use patterns", () => { + const patterns = getImportPatterns("symfony/console", "composer"); + + expect(patterns).toContain(`use Symfony\\Console\\`); + expect(patterns).toContain(`use Symfony\\Console;`); + }); + }); + describe("default", () => { it("returns dep name for unknown ecosystems", () => { const patterns = getImportPatterns("some-package", "unknown"); From f8072dd05bbaeec02d1003372a5af48ad13b27e0 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 14:03:05 -0500 Subject: [PATCH 7/9] feat(dependency-impact): resolve npm and Composer packages to GitHub repos Make resolveGitHubRepo async with registry lookups: - npm: fetch repository URL from registry.npmjs.org - Composer: fetch source URL from packagist.org Also add .php to source file scanning extensions. --- dependency-impact/src/index.ts | 42 +++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/dependency-impact/src/index.ts b/dependency-impact/src/index.ts index 1ebca57..6e6ecb8 100644 --- a/dependency-impact/src/index.ts +++ b/dependency-impact/src/index.ts @@ -14,7 +14,7 @@ import { } from "@gemini-actions/shared"; import { parseDependencyChanges, getImportPatterns } from "./parsers"; -function resolveGitHubRepo(dep: { name: string; ecosystem: string }): { owner: string; repo: string } | null { +async function resolveGitHubRepo(dep: { name: string; ecosystem: string }): Promise<{ owner: string; repo: string } | null> { if (dep.ecosystem === "go" && dep.name.startsWith("github.com/")) { const parts = dep.name.replace("github.com/", "").split("/"); if (parts.length >= 2) return { owner: parts[0], repo: parts[1] }; @@ -23,6 +23,42 @@ function resolveGitHubRepo(dep: { name: string; ecosystem: string }): { owner: s const parts = dep.name.replace("registry.terraform.io/", "").split("/"); if (parts.length >= 2) return { owner: parts[0], repo: `terraform-provider-${parts[1]}` }; } + if (dep.ecosystem === "npm") { + try { + const res = await fetch(`https://registry.npmjs.org/${dep.name}`, { signal: AbortSignal.timeout(5000) }); + if (res.ok) { + const data = (await res.json()) as Record; + const url = (data?.repository as Record)?.url; + if (typeof url === "string") { + const cleaned = url.replace(/^git\+/, "").replace(/\.git$/, "").replace(/^git:\/\//, "https://"); + const match = cleaned.match(/github\.com\/([^/]+)\/([^/]+)/); + if (match) return { owner: match[1], repo: match[2] }; + } + } + } catch { + // Registry lookup failed — fall through + } + } + if (dep.ecosystem === "composer") { + try { + const res = await fetch(`https://packagist.org/packages/${dep.name}.json`, { signal: AbortSignal.timeout(5000) }); + if (res.ok) { + const data = (await res.json()) as Record; + const versions = (data?.package as Record)?.versions as Record> | undefined; + if (versions && typeof versions === "object") { + const firstKey = Object.keys(versions)[0]; + const url = (versions[firstKey]?.source as Record)?.url; + if (typeof url === "string") { + const cleaned = url.replace(/\.git$/, ""); + const match = cleaned.match(/github\.com\/([^/]+)\/([^/]+)/); + if (match) return { owner: match[1], repo: match[2] }; + } + } + } + } catch { + // Registry lookup failed — fall through + } + } return null; } @@ -65,7 +101,7 @@ async function run(): Promise { const tree = await getRepoTree(octokit, owner, repo, defaultBranch.sha); const sourceFiles = tree .filter((item) => item.type === "blob") - .filter((item) => /\.(ts|js|tsx|jsx|py|go|java|rb|rs|tf)$/.test(item.path)) + .filter((item) => /\.(ts|js|tsx|jsx|py|go|java|rb|rs|tf|php)$/.test(item.path)) .filter((item) => !item.path.includes("node_modules")) .map((item) => item.path); @@ -128,7 +164,7 @@ async function run(): Promise { releaseNotes = pr.body!; } else { for (const dep of depChanges) { - const ghRepo = resolveGitHubRepo(dep); + const ghRepo = await resolveGitHubRepo(dep); if (ghRepo) { const notes = await listReleaseNotesBetween( octokit, From ad588924129a0d68ab85d1dd03658404ccb75014 Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 14:03:11 -0500 Subject: [PATCH 8/9] docs(dependency-impact): add Composer ecosystem and npm/Composer resolution Update supported ecosystems, workflow trigger paths, and release notes sourcing table. Remove outdated npm/pip resolution caveat. --- dependency-impact/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dependency-impact/README.md b/dependency-impact/README.md index 3b9bf67..af5b2a1 100644 --- a/dependency-impact/README.md +++ b/dependency-impact/README.md @@ -21,6 +21,7 @@ Deterministic tools can tell you a major version changed. Only an LLM can read a - **pip** — `requirements.txt` / `Pipfile` - **Go** — `go.mod` - **Terraform** — `.terraform.lock.hcl` +- **Composer** — `composer.json` / `composer.lock` ## Usage @@ -35,6 +36,8 @@ on: - "requirements.txt" - "go.mod" - ".terraform.lock.hcl" + - "composer.json" + - "composer.lock" jobs: analyze: @@ -54,7 +57,7 @@ jobs: 2. Scans source files (up to 100) for imports of the changed dependencies 3. Fetches release notes using a layered approach: - For bot PRs (Dependabot, Renovate) with a populated body, uses the PR body directly — these bots already aggregate changelogs between versions - - Otherwise, tries the GitHub Releases API for dependencies with resolvable repos (Go modules, Terraform providers) + - Otherwise, tries the GitHub Releases API for dependencies with resolvable repos (Go modules, Terraform providers, npm packages, Composer packages) - Falls back to the PR body if GitHub Releases yields nothing 4. Sends a tailored prompt to Gemini depending on whether usage was found: - **With usage**: cross-references release notes against actual code. Reports only confirmed breaking changes, required actions, and risk @@ -68,7 +71,5 @@ The action needs real release notes to produce useful output — without them, a | Priority | Source | When used | |----------|--------|-----------| | 1 | PR body | PR author is a bot (`[bot]` suffix) and body has meaningful content (>50 chars) | -| 2 | GitHub Releases API | Dependency maps to a GitHub repo (Go modules via path, Terraform providers via registry convention) | +| 2 | GitHub Releases API | Dependency maps to a GitHub repo (Go modules via path, Terraform providers via registry convention, npm via registry lookup, Composer via Packagist lookup) | | 3 | PR body (fallback) | GitHub Releases returned nothing but the PR body has content | - -npm and pip packages cannot currently be resolved to GitHub repos automatically. For these ecosystems, release notes come from the PR body or are reported as unavailable. From 5e89a184374029337c266cd78efcaa9a10f97efe Mon Sep 17 00:00:00 2001 From: Francis Eytan Dortort Date: Mon, 16 Feb 2026 14:03:16 -0500 Subject: [PATCH 9/9] chore(dependency-impact): rebuild dist bundle --- dependency-impact/dist/index.js | 106 +++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/dependency-impact/dist/index.js b/dependency-impact/dist/index.js index fd2a6a8..4895f8e 100644 --- a/dependency-impact/dist/index.js +++ b/dependency-impact/dist/index.js @@ -31809,7 +31809,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); const core = __importStar(__nccwpck_require__(6618)); const shared_1 = __nccwpck_require__(7451); const parsers_1 = __nccwpck_require__(2149); -function resolveGitHubRepo(dep) { +async function resolveGitHubRepo(dep) { if (dep.ecosystem === "go" && dep.name.startsWith("github.com/")) { const parts = dep.name.replace("github.com/", "").split("/"); if (parts.length >= 2) @@ -31820,6 +31820,46 @@ function resolveGitHubRepo(dep) { if (parts.length >= 2) return { owner: parts[0], repo: `terraform-provider-${parts[1]}` }; } + if (dep.ecosystem === "npm") { + try { + const res = await fetch(`https://registry.npmjs.org/${dep.name}`, { signal: AbortSignal.timeout(5000) }); + if (res.ok) { + const data = (await res.json()); + const url = data?.repository?.url; + if (typeof url === "string") { + const cleaned = url.replace(/^git\+/, "").replace(/\.git$/, "").replace(/^git:\/\//, "https://"); + const match = cleaned.match(/github\.com\/([^/]+)\/([^/]+)/); + if (match) + return { owner: match[1], repo: match[2] }; + } + } + } + catch { + // Registry lookup failed — fall through + } + } + if (dep.ecosystem === "composer") { + try { + const res = await fetch(`https://packagist.org/packages/${dep.name}.json`, { signal: AbortSignal.timeout(5000) }); + if (res.ok) { + const data = (await res.json()); + const versions = data?.package?.versions; + if (versions && typeof versions === "object") { + const firstKey = Object.keys(versions)[0]; + const url = versions[firstKey]?.source?.url; + if (typeof url === "string") { + const cleaned = url.replace(/\.git$/, ""); + const match = cleaned.match(/github\.com\/([^/]+)\/([^/]+)/); + if (match) + return { owner: match[1], repo: match[2] }; + } + } + } + } + catch { + // Registry lookup failed — fall through + } + } return null; } async function run() { @@ -31848,7 +31888,7 @@ async function run() { const tree = await (0, shared_1.getRepoTree)(octokit, owner, repo, defaultBranch.sha); const sourceFiles = tree .filter((item) => item.type === "blob") - .filter((item) => /\.(ts|js|tsx|jsx|py|go|java|rb|rs|tf)$/.test(item.path)) + .filter((item) => /\.(ts|js|tsx|jsx|py|go|java|rb|rs|tf|php)$/.test(item.path)) .filter((item) => !item.path.includes("node_modules")) .map((item) => item.path); // 4. Sample source files to find usage of changed dependencies @@ -31895,7 +31935,7 @@ async function run() { } else { for (const dep of depChanges) { - const ghRepo = resolveGitHubRepo(dep); + const ghRepo = await resolveGitHubRepo(dep); if (ghRepo) { const notes = await (0, shared_1.listReleaseNotesBetween)(octokit, ghRepo.owner, ghRepo.repo, dep.fromVersion, dep.toVersion); if (notes) { @@ -32019,6 +32059,57 @@ function parseDependencyChanges(diff, files) { } } } + // Parse composer.json changes (Composer) + if (file.filename.endsWith("composer.json")) { + const removed = new Map(); + const added = new Map(); + for (const line of file.patch.split("\n")) { + const match = line.match(/^([-+])\s*"([^"]+\/[^"]+)":\s*"[~^]?(\d+[^"]*)"/); + if (match) { + if (match[1] === "-") + removed.set(match[2], match[3]); + else + added.set(match[2], match[3]); + } + } + for (const [name, toVersion] of added) { + const fromVersion = removed.get(name); + if (fromVersion && fromVersion !== toVersion) { + changes.push({ name, fromVersion, toVersion, ecosystem: "composer" }); + } + } + } + // Parse composer.lock changes (Composer) + if (file.filename.endsWith("composer.lock")) { + const removed = new Map(); + const added = new Map(); + let removedName = ""; + let addedName = ""; + for (const line of file.patch.split("\n")) { + const nameMatch = line.match(/^([-+])\s*"name":\s*"([^"]+)"/); + if (nameMatch) { + if (nameMatch[1] === "-") + removedName = nameMatch[2]; + else + addedName = nameMatch[2]; + } + const versionMatch = line.match(/^([-+])\s*"version":\s*"v?(\d+[^"]*)"/); + if (versionMatch) { + if (versionMatch[1] === "-") { + removed.set(removedName, versionMatch[2]); + } + else { + added.set(addedName, versionMatch[2]); + } + } + } + for (const [name, toVersion] of added) { + const fromVersion = removed.get(name); + if (fromVersion && fromVersion !== toVersion) { + changes.push({ name, fromVersion, toVersion, ecosystem: "composer" }); + } + } + } // Parse requirements.txt changes (Python) if (file.filename.endsWith("requirements.txt") || file.filename.endsWith("Pipfile")) { const removed = new Map(); @@ -32114,6 +32205,15 @@ function getImportPatterns(depName, ecosystem) { `provider "${shortName}"`, ]; } + case "composer": { + // Convert vendor/package to PascalCase namespace + // e.g., "symfony/console" -> "Symfony\\Console" + const namespace = depName + .split("/") + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join("\\"); + return [`use ${namespace}\\`, `use ${namespace};`]; + } default: return [depName]; }