@@ -95857,6 +95857,24 @@ var __webpack_exports__ = {};
9585795857 return null;
9585895858 }
9585995859 }
95860+ async findPRsByCommit(commitHash) {
95861+ const { owner, repo } = this.repository;
95862+ try {
95863+ const { data: prs } = await this.octokit.rest.repos.listPullRequestsAssociatedWithCommit({
95864+ owner,
95865+ repo,
95866+ commit_sha: commitHash
95867+ });
95868+ return prs.map((pr)=>({
95869+ number: pr.number,
95870+ title: pr.title,
95871+ url: pr.html_url
95872+ }));
95873+ } catch (error) {
95874+ console.warn(`⚠️ Failed to find PRs for commit ${commitHash}: ${error}`);
95875+ return [];
95876+ }
95877+ }
9586095878 async updateOrCreateComment(prNumber, body) {
9586195879 const { owner, repo } = this.repository;
9586295880 const commentPrefix = '## Rsdoctor Bundle Diff Analysis';
@@ -96114,10 +96132,20 @@ var __webpack_exports__ = {};
9611496132 emoji: '📉'
9611596133 };
9611696134 }
96117- function generateProjectMarkdown(projectName, filePath, current, baseline) {
96135+ function generateProjectMarkdown(projectName, filePath, current, baseline, baselineCommitHash, baselinePRs ) {
9611896136 let markdown = `### 📁 ${projectName}\n\n`;
9611996137 markdown += `**Path:** \`${filePath}\`\n\n`;
96120- if (!baseline) markdown += '> ⚠️ **No baseline data found** - Unable to perform comparison analysis\n\n';
96138+ if (baseline) {
96139+ if (baselineCommitHash) {
96140+ const commitLink = `${process.env.GITHUB_SERVER_URL || 'https://github.com'}/${process.env.GITHUB_REPOSITORY}/commit/${baselineCommitHash}`;
96141+ let baselineInfo = `> 📌 **Baseline Commit:** [\`${baselineCommitHash}\`](${commitLink})`;
96142+ if (baselinePRs && baselinePRs.length > 0) {
96143+ const prLinks = baselinePRs.map((pr)=>`[#${pr.number}](${pr.url})`).join(', ');
96144+ baselineInfo += ` | **PR:** ${prLinks}`;
96145+ }
96146+ markdown += `${baselineInfo}\n\n`;
96147+ }
96148+ } else markdown += '> ⚠️ **No baseline data found** - Unable to perform comparison analysis\n\n';
9612196149 markdown += '| Metric | Current | Baseline | Change |\n';
9612296150 markdown += '|--------|---------|----------|--------|\n';
9612396151 markdown += `| 📊 Total Size | ${formatBytes(current.totalSize)} | ${baseline ? formatBytes(baseline.totalSize) : '-'} | ${baseline ? calculateDiff(current.totalSize, baseline.totalSize).value : '-'} |\n`;
@@ -96128,9 +96156,19 @@ var __webpack_exports__ = {};
9612896156 markdown += '\n';
9612996157 return markdown;
9613096158 }
96131- async function generateBundleAnalysisReport(current, baseline, writeSummary = true) {
96132- if (baseline) await core.summary.addSeparator();
96133- else await core.summary.addRaw('> ⚠️ **No baseline data found** - Unable to perform comparison analysis').addSeparator();
96159+ async function generateBundleAnalysisReport(current, baseline, writeSummary = true, baselineCommitHash, baselinePRs) {
96160+ if (baseline) {
96161+ if (baselineCommitHash) {
96162+ const commitLink = `${process.env.GITHUB_SERVER_URL || 'https://github.com'}/${process.env.GITHUB_REPOSITORY}/commit/${baselineCommitHash}`;
96163+ let baselineInfo = `> 📌 **Baseline Commit:** [\`${baselineCommitHash}\`](${commitLink})`;
96164+ if (baselinePRs && baselinePRs.length > 0) {
96165+ const prLinks = baselinePRs.map((pr)=>`[#${pr.number}](${pr.url})`).join(', ');
96166+ baselineInfo += ` | **PR:** ${prLinks}`;
96167+ }
96168+ await core.summary.addRaw(baselineInfo);
96169+ }
96170+ await core.summary.addSeparator();
96171+ } else await core.summary.addRaw('> ⚠️ **No baseline data found** - Unable to perform comparison analysis').addSeparator();
9613496172 const mainTable = [
9613596173 [
9613696174 {
@@ -96418,6 +96456,7 @@ var __webpack_exports__ = {};
9641896456 }
9641996457 report.current = currentBundleAnalysis;
9642096458 let baselineJsonPath = null;
96459+ let baselinePRs = [];
9642196460 if (targetCommitHash) try {
9642296461 console.log(`📥 Attempting to download baseline for ${projectName}...`);
9642396462 const downloadResult = await downloadArtifactByCommitHash(targetCommitHash, fileName, fullPath);
@@ -96426,6 +96465,17 @@ var __webpack_exports__ = {};
9642696465 const baselineBundleAnalysis = parseRsdoctorData(baselineJsonPath);
9642796466 if (baselineBundleAnalysis) {
9642896467 report.baseline = baselineBundleAnalysis;
96468+ report.baselineCommitHash = targetCommitHash;
96469+ try {
96470+ const githubService = new GitHubService();
96471+ baselinePRs = await githubService.findPRsByCommit(targetCommitHash);
96472+ if (baselinePRs.length > 0) {
96473+ report.baselinePRs = baselinePRs;
96474+ console.log(`📎 Found ${baselinePRs.length} PR(s) associated with baseline commit ${targetCommitHash}`);
96475+ }
96476+ } catch (prError) {
96477+ console.log(`ℹ️ Could not find PRs for baseline commit: ${prError}`);
96478+ }
9642996479 console.log(`✅ Successfully downloaded and parsed baseline for ${projectName}`);
9643096480 }
9643196481 } catch (downloadError) {
@@ -96540,13 +96590,13 @@ var __webpack_exports__ = {};
9654096590 }
9654196591 if (projectReports.length > 0) if (1 === projectReports.length) {
9654296592 const report = projectReports[0];
96543- if (report.current) await generateBundleAnalysisReport(report.current);
96593+ if (report.current) await generateBundleAnalysisReport(report.current, void 0, true, null, void 0 );
9654496594 } else {
9654596595 await core.summary.addHeading('📦 Monorepo Bundle Analysis', 2);
9654696596 for (const report of projectReports)if (report.current) {
9654796597 await core.summary.addHeading(`📁 ${report.projectName}`, 3);
9654896598 await core.summary.addRaw(`**Path:** \`${report.filePath}\``);
96549- await generateBundleAnalysisReport(report.current, void 0, false);
96599+ await generateBundleAnalysisReport(report.current, void 0, false, null, void 0 );
9655096600 }
9655196601 await core.summary.write();
9655296602 }
@@ -96558,13 +96608,13 @@ var __webpack_exports__ = {};
9655896608 }
9655996609 if (projectReports.length > 0) if (1 === projectReports.length) {
9656096610 const report = projectReports[0];
96561- if (report.current) await generateBundleAnalysisReport(report.current, report.baseline || void 0);
96611+ if (report.current) await generateBundleAnalysisReport(report.current, report.baseline || void 0, true, report.baselineCommitHash, report.baselinePRs );
9656296612 } else {
9656396613 await core.summary.addHeading('📦 Monorepo Bundle Analysis', 2);
9656496614 for (const report of projectReports)if (report.current) {
9656596615 await core.summary.addHeading(`📁 ${report.projectName}`, 3);
9656696616 await core.summary.addRaw(`**Path:** \`${report.filePath}\``);
96567- await generateBundleAnalysisReport(report.current, report.baseline || void 0, false);
96617+ await generateBundleAnalysisReport(report.current, report.baseline || void 0, false, report.baselineCommitHash, report.baselinePRs );
9656896618 }
9656996619 await core.summary.write();
9657096620 }
@@ -96574,7 +96624,7 @@ var __webpack_exports__ = {};
9657496624 let commentBody = '## Rsdoctor Bundle Diff Analysis\n\n';
9657596625 if (projectReports.length > 1) commentBody += `Found ${projectReports.length} project(s) in monorepo.\n\n`;
9657696626 for (const report of projectReports)if (report.current) {
96577- commentBody += generateProjectMarkdown(report.projectName, report.filePath, report.current, report.baseline || void 0);
96627+ commentBody += generateProjectMarkdown(report.projectName, report.filePath, report.current, report.baseline || void 0, report.baselineCommitHash, report.baselinePRs );
9657896628 if (report.diffHtmlArtifactId) {
9657996629 const artifactDownloadLink = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}/artifacts/${report.diffHtmlArtifactId}`;
9658096630 commentBody += `\n📦 **Download Diff Report**: [${report.projectName} Bundle Diff](${artifactDownloadLink})\n\n`;
0 commit comments