Skip to content
Snippets Groups Projects
Select Git revision
  • 1968f6ea243a6662c469a734b3ba4b0fff287fc4
  • master default protected
  • gh-pages
  • dependabot/npm_and_yarn/eslint-plugin-jsdoc-51.0.3
  • dependabot/npm_and_yarn/nock-14.0.5
  • dependabot/npm_and_yarn/react-19.1.0
  • dependabot/npm_and_yarn/react-dom-19.1.0
  • server-2025-02-01-6100669a
  • server-2024-11-01-87cba042
  • server-2024-10-01-6875b7c8
  • dependabot/npm_and_yarn/path-to-regexp-8.2.0
  • server-2024-09-01-3d52575c
  • daily-tests-gha2
  • daily-tests-gha
  • server-2023-12-01-92d8fb8e
  • server-2023-11-01-a80c93fd
  • server-2023-10-01-31096085
  • coc-v2
  • server-2023-09-01-8edc3810
  • server-2023-08-01-75858a03
  • server-2023-07-01-02183d8d
  • server-2025-07-01
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • server-2025-06-01
  • server-2025-05-01
  • server-2025-04-03
  • server-2025-03-02
  • server-2025-03-01
  • server-2025-02-02
  • server-2025-01-01
  • server-2024-12-01
  • server-2024-11-02
  • 4.1.0
  • server-2024-09-25
  • server-2024-09-02
  • server-2024-08-01
  • server-2024-07-01
  • 4.0.0
  • server-2024-06-01
41 results

core_server_prometheus-metrics.js.html

Blame
  • nuget.js 1.67 KiB
    const parse = require('github-url-from-git');
    const got = require('got');
    const xmlParser = require('fast-xml-parser');
    const { isVersion, sortVersions } = require('../versioning/semver');
    
    module.exports = {
      getPkgReleases,
    };
    
    async function getPkgReleases(purl) {
      const { fullname: name } = purl;
      logger.trace(`nuget.getPkgReleases(${name})`);
      const pkgUrl = `https://api.nuget.org/v3-flatcontainer/${name.toLowerCase()}/index.json`;
      try {
        const res = (await got(pkgUrl, {
          json: true,
          retries: 5,
        })).body;
        const dep = {
          name,
        };
        dep.releases = res.versions
          .filter(isVersion)
          .sort(sortVersions)
          .map(version => ({ version }));
        // look up nuspec for latest release to get repository
        const url = `https://api.nuget.org/v3-flatcontainer/${name.toLowerCase()}/${res.versions.pop()}/${name.toLowerCase()}.nuspec`;
        try {
          const result = await got(url);
          const nuspec = xmlParser.parse(result.body, { ignoreAttributes: false });
          if (nuspec) {
            const repositoryUrl = parse(
              nuspec.package.metadata.repository['@_url']
            );
            if (repositoryUrl) {
              dep.repositoryUrl = repositoryUrl;
            }
          }
        } catch (err) /* istanbul ignore next */ {
          logger.debug({ dependency: name }, 'Error looking up nuspec');
        }
        logger.trace({ dep }, 'dep');
        return dep;
      } catch (err) {
        if (err.statusCode === 404 || err.code === 'ENOTFOUND') {
          logger.info({ name }, `Dependency lookup failure: not found`);
          logger.debug({
            err,
          });
          return null;
        }
        logger.warn({ err, name }, 'nuget registry failure: Unknown error');
        return null;
      }
    }