UNPKG

@dependabot/yarn-lib

Version:

📦🐈 Fast, reliable, and secure dependency management.

179 lines (128 loc) 3.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _asyncToGenerator2; function _load_asyncToGenerator() { return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator')); } var _extends2; function _load_extends() { return _extends2 = _interopRequireDefault(require('babel-runtime/helpers/extends')); } var _misc; function _load_misc() { return _misc = require('../util/misc.js'); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const objectPath = require('object-path'); const path = require('path'); class BaseRegistry { constructor(cwd, registries, requestManager, reporter) { this.reporter = reporter; this.requestManager = requestManager; this.registries = registries; this.config = {}; this.folder = ''; this.token = ''; this.loc = ''; this.cwd = cwd; } // the filename to use for package metadata // // // // // // // absolute folder name to insert modules // relative folder name to put these modules setToken(token) { this.token = token; } getOption(key) { return this.config[key]; } getAvailableRegistries() { const config = this.config; return Object.keys(config).reduce((registries, option) => { if (option === 'registry' || option.split(':')[1] === 'registry') { registries.push(config[option]); } return registries; }, []); } loadConfig() { return Promise.resolve(); } checkOutdated(config, name, range) { return Promise.reject(new Error('unimplemented')); } saveHomeConfig(config) { return Promise.reject(new Error('unimplemented')); } request(pathname, opts = {}) { return this.requestManager.request((0, (_extends2 || _load_extends()).default)({ url: pathname }, opts)); } init(overrides = {}) { var _this = this; return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { _this.mergeEnv('yarn_'); yield _this.loadConfig(); for (var _iterator = Object.keys(overrides), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } const override = _ref; const val = overrides[override]; if (val !== undefined) { _this.config[override] = val; } } _this.loc = path.join(_this.cwd, _this.folder); })(); } static normalizeConfig(config) { for (const key in config) { config[key] = BaseRegistry.normalizeConfigOption(config[key]); } return config; } static normalizeConfigOption(val) { if (val === 'true') { return true; } else if (val === 'false') { return false; } else { return val; } } mergeEnv(prefix) { // try environment variables for (const envKey in process.env) { let key = envKey.toLowerCase(); // only accept keys prefixed with the prefix if (key.indexOf(prefix.toLowerCase()) < 0) { continue; } const val = BaseRegistry.normalizeConfigOption(process.env[envKey]); // remove config prefix key = (0, (_misc || _load_misc()).removePrefix)(key, prefix.toLowerCase()); // replace dunders with dots key = key.replace(/__/g, '.'); // replace underscores with dashes key = key.replace(/_/g, '-'); // set it via a path objectPath.set(this.config, key, val); } } } exports.default = BaseRegistry;