Home / Function/ buildChangelogEntries() — react Function Reference

buildChangelogEntries() — react Function Reference

Architecture documentation for the buildChangelogEntries() function in formatters.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  46f41443_754d_e47b_5367_c646cfbb0086["buildChangelogEntries()"]
  9ea677d7_cac5_5d9f_3511_29ba3c0e3110["formatters.js"]
  46f41443_754d_e47b_5367_c646cfbb0086 -->|defined in| 9ea677d7_cac5_5d9f_3511_29ba3c0e3110
  style 46f41443_754d_e47b_5367_c646cfbb0086 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

scripts/tasks/generate-changelog/formatters.js lines 7–102

function buildChangelogEntries({
  packageSpecs,
  commitsByPackage,
  summariesByPackage,
  prMetadata,
}) {
  const entries = [];

  for (let i = 0; i < packageSpecs.length; i++) {
    const spec = packageSpecs[i];
    const version = spec.displayVersion || spec.version;
    const commitsForPackage = commitsByPackage.get(spec.name) || [];

    if (commitsForPackage.length === 0) {
      entries.push({
        package: spec.name,
        version,
        hasChanges: false,
        note: NO_CHANGES_MESSAGE,
        commits: [],
      });
      continue;
    }

    const summaryMap = summariesByPackage.get(spec.name) || new Map();
    const commitEntries = commitsForPackage.map(commit => {
      let summary = summaryMap.get(commit.sha) || commit.subject;
      if (commit.prNumber) {
        const prPattern = new RegExp(`\\s*\\(#${commit.prNumber}\\)$`);
        summary = summary.replace(prPattern, '').trim();
      }

      const commitSha = commit.sha;
      const commitUrl = `https://github.com/facebook/react/commit/${commitSha}`;
      const prNumber = commit.prNumber || null;
      const prUrl = prNumber
        ? `https://github.com/facebook/react/pull/${prNumber}`
        : null;
      const prEntry = prNumber ? prMetadata.get(prNumber) : null;

      const authorLogin = prEntry?.authorLogin || null;
      const authorName = commit.authorName || null;
      const authorEmail = commit.authorEmail || null;

      let authorUrl = null;
      let authorDisplay = authorName || 'unknown author';

      if (authorLogin) {
        authorUrl = `https://github.com/${authorLogin}`;
        authorDisplay = `[@${authorLogin}](${authorUrl})`;
      } else if (authorName && authorName.startsWith('@')) {
        const username = authorName.slice(1);
        authorUrl = `https://github.com/${username}`;
        authorDisplay = `[@${username}](${authorUrl})`;
      }

      const referenceType = prNumber ? 'pr' : 'commit';
      const referenceId = prNumber ? `#${prNumber}` : commitSha.slice(0, 7);
      const referenceUrl = prNumber ? prUrl : commitUrl;
      const referenceLabel = prNumber
        ? `[#${prNumber}](${prUrl})`
        : `commit ${commitSha.slice(0, 7)}`;

      return {
        summary,
        prNumber,
        prUrl,
        commitSha,
        commitUrl,
        author: {
          login: authorLogin,
          name: authorName,
          email: authorEmail,
          url: authorUrl,
          display: authorDisplay,
        },
        reference: {
          type: referenceType,
          id: referenceId,
          url: referenceUrl,
          label: referenceLabel,

Domain

Subdomains

Frequently Asked Questions

What does buildChangelogEntries() do?
buildChangelogEntries() is a function in the react codebase, defined in scripts/tasks/generate-changelog/formatters.js.
Where is buildChangelogEntries() defined?
buildChangelogEntries() is defined in scripts/tasks/generate-changelog/formatters.js at line 7.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free