UNPKG

@salesforce/plugin-trust

Version:

validate a digital signature for a npm package

48 lines 1.94 kB
import { Lifecycle } from '@salesforce/core'; import { NpmModule } from '../shared/npmCommand.js'; export const hook = (options) => Promise.all([registryCheck(options)]); const registryCheck = async (options) => { const pluginName = '@salesforce/plugin-trust'; // find npm install const npm = new NpmModule(''); const env = process.env.npm_config_registry ?? process.env.NPM_CONFIG_REGISTRY; if (env) { options.doctor.addSuggestion(`using npm registry ${env} from environment variable`); } const config = npm.run('config get registry').stdout.trim(); if (config) { options.doctor.addSuggestion(`using npm registry ${config} from npm config`); } await Promise.all([ ...new Set([ // npm and yarn registries 'https://registry.npmjs.org', 'https://registry.yarnpkg.com', env ?? config, ]), ] // incase customRegistry is undefined, prevent printing an extra line .filter((u) => u) .map(async (url) => { try { const results = npm.ping(url); // timeout after 5000ms, error if (!results || results.time > 5000) { // to trigger the catch/fail below throw Error; } await Lifecycle.getInstance().emit('Doctor:diagnostic', { testName: `[${pluginName}] can ping: ${url}`, status: 'pass', }); } catch (e) { await Lifecycle.getInstance().emit('Doctor:diagnostic', { testName: `[${pluginName}] can't ping: ${url}`, status: 'fail', }); options.doctor.addSuggestion(`Cannot ping ${url} - potential network configuration error, check proxies, firewalls, environment variables. Verify this by running 'npm ping ${url}'`); } })); }; //# sourceMappingURL=diagnostics.js.map