Skip to content
Snippets Groups Projects
Select Git revision
  • 88c99bf1f37cad03422087d6bb295d440fd79eac
  • main default protected
  • renovate/main-renovatebot-github-action-43.x
  • next
  • feat/gnupg
  • fix/36615b-branch-reuse-no-cache
  • renovate/main-redis-5.x
  • chore/punycode
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • fix/32307-global-extends-repositories
  • gh-readonly-queue/next/pr-35009-046ebf7cb84ab859f7fefceb5fa53a54ce9736f8
  • 41.45.0
  • 41.44.0
  • 41.43.7
  • 41.43.6
  • 41.43.5
  • 41.43.4
  • 41.43.3
  • 41.43.2
  • 41.43.1
  • 41.43.0
  • 41.42.12
  • 41.42.11
  • 41.42.10
  • 41.42.9
  • 41.42.8
  • 41.42.7
  • 41.42.6
  • 41.42.5
  • 41.42.4
  • 41.42.3
41 results

index.ts

Blame
  • npm.js 7.46 KiB
    // Much of this borrowed from https://github.com/sindresorhus/package-json/blob/master/index.js
    
    const got = require('got');
    const url = require('url');
    const ini = require('ini');
    const delay = require('delay');
    const getRegistryUrl = require('registry-auth-token/registry-url');
    const registryAuthToken = require('registry-auth-token');
    const parse = require('github-url-from-git');
    const { isBase64 } = require('validator');
    
    module.exports = {
      maskToken,
      setNpmrc,
      getDependency,
      resetMemCache,
      resetCache,
    };
    
    let map = new Map();
    
    let memcache = {};
    
    let npmrc = null;
    
    function resetMemCache() {
      logger.debug('resetMemCache()');
      memcache = {};
    }
    
    function resetCache() {
      map = new Map();
      resetMemCache();
    }
    
    // istanbul ignore next
    function maskToken(token) {
      // istanbul ignore if
      if (!token) {
        return token;
      }
      return `${token.substring(0, 2)}${new Array(token.length - 3).join(
        '*'
      )}${token.slice(-2)}`;
    }
    
    function setNpmrc(input, exposeEnv = false) {
      if (input) {
        logger.debug('Setting npmrc');
        npmrc = ini.parse(input);
        // massage _auth to _authToken
        for (const [key, val] of Object.entries(npmrc)) {
          if (key !== '_auth' && key.endsWith('_auth') && isBase64(val)) {
            logger.debug('Massaging _auth to _authToken');
            npmrc[key + 'Token'] = val;
            npmrc.massagedAuth = true;
            delete npmrc[key];
          }
        }
        if (!exposeEnv) {
          return;
        }
        for (const key in npmrc) {
          if (Object.prototype.hasOwnProperty.call(npmrc, key)) {
            npmrc[key] = envReplace(npmrc[key]);
          }
        }
      } else if (npmrc) {
        logger.debug('Resetting npmrc');
        npmrc = null;