kamiazya/ngx-face-api-js

View on GitHub
projects/ngx-face-api-js/schematics/util/npmjs.ts

Summary

Maintainability
A
1 hr
Test Coverage
import { get } from 'http';

export interface NpmRegistryPackage {
  name: string;
  version: string;
}

export function getLatestNodeVersion(
  packageName: string,
): Promise<NpmRegistryPackage> {
  const DEFAULT_VERSION = 'latest';

  return new Promise(resolve => {
    return get(`http://registry.npmjs.org/${packageName}`, res => {
      let rawData = '';
      res.on('data', chunk => (rawData += chunk));
      res.on('end', () => {
        try {
          const response = JSON.parse(rawData);
          const latestVersion =
            (response &&
              response['dist-tags'] &&
              response['dist-tags'].latest) ||
            {};

          resolve(buildPackage(response.name || packageName, latestVersion));
        } catch (e) {
          resolve(buildPackage(packageName));
        }
      });
    }).on('error', () => resolve(buildPackage(packageName)));
  });

  function buildPackage(
    name: string,
    version: string = DEFAULT_VERSION,
  ): NpmRegistryPackage {
    return { name, version };
  }
}