Home / File/ formatters.js — react Source File

formatters.js — react Source File

Architecture documentation for formatters.js, a javascript file in the react codebase.

Entity Profile

Relationship Graph

Source Code

'use strict';

const {toCsvRow} = require('./utils');

const NO_CHANGES_MESSAGE = 'No changes since the last release.';

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})`;
// ... (169 more lines)

Domain

Subdomains

Frequently Asked Questions

What does formatters.js do?
formatters.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Optimization subdomain.
What functions are defined in formatters.js?
formatters.js defines 2 function(s): buildChangelogEntries, renderChangelog.
Where is formatters.js in the architecture?
formatters.js is located at scripts/tasks/generate-changelog/formatters.js (domain: BabelCompiler, subdomain: Optimization, directory: scripts/tasks/generate-changelog).

Analyze Your Own Codebase

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

Try Supermodel Free