Home / Function/ fetchNpmInfo() — react Function Reference

fetchNpmInfo() — react Function Reference

Architecture documentation for the fetchNpmInfo() function in data.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  c5d4c6f6_8dab_2c72_24cc_7ef4d282c94a["fetchNpmInfo()"]
  60d0c3ed_734d_56fa_7d21_b53dc8d70afe["data.js"]
  c5d4c6f6_8dab_2c72_24cc_7ef4d282c94a -->|defined in| 60d0c3ed_734d_56fa_7d21_b53dc8d70afe
  style c5d4c6f6_8dab_2c72_24cc_7ef4d282c94a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

scripts/tasks/generate-changelog/data.js lines 8–59

async function fetchNpmInfo(packageName, {log}) {
  const npmArgs = ['view', `${packageName}@latest`, '--json'];
  const options = {cwd: repoRoot, maxBuffer: 10 * 1024 * 1024};
  log(`Fetching npm info for ${packageName}...`);
  const {stdout} = await execFileAsync('npm', npmArgs, options);

  let data = stdout.trim();
  if (!data) {
    throw new Error(`npm view returned empty result for ${packageName}`);
  }

  let info = JSON.parse(data);
  if (Array.isArray(info)) {
    info = info[info.length - 1];
  }

  const version = info.version || info['dist-tags']?.latest;
  let gitHead = info.gitHead || null;

  if (!gitHead) {
    const gitHeadResult = await execFileAsync(
      'npm',
      ['view', `${packageName}@${version}`, 'gitHead'],
      {cwd: repoRoot, maxBuffer: 1024 * 1024}
    );
    const possibleGitHead = gitHeadResult.stdout.trim();
    if (
      possibleGitHead &&
      possibleGitHead !== 'undefined' &&
      possibleGitHead !== 'null'
    ) {
      log(`Found gitHead for ${packageName}@${version}: ${possibleGitHead}`);
      gitHead = possibleGitHead;
    }
  }

  if (!version) {
    throw new Error(
      `Unable to determine latest published version for ${packageName}`
    );
  }
  if (!gitHead) {
    throw new Error(
      `Unable to determine git commit for ${packageName}@${version}`
    );
  }

  return {
    publishedVersion: version,
    gitHead,
  };
}

Domain

Subdomains

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free