UNPKG

2.61 kBJavaScriptView Raw
1import { ensureIsTruthyString, normalizeVersion } from './utils';
2const BASE_URL = 'https://github.com/electron/electron/releases/download/';
3const NIGHTLY_BASE_URL = 'https://github.com/electron/nightlies/releases/download/';
4export function getArtifactFileName(details) {
5 ensureIsTruthyString(details, 'artifactName');
6 if (details.isGeneric) {
7 return details.artifactName;
8 }
9 ensureIsTruthyString(details, 'arch');
10 ensureIsTruthyString(details, 'platform');
11 ensureIsTruthyString(details, 'version');
12 return `${[
13 details.artifactName,
14 details.version,
15 details.platform,
16 details.arch,
17 ...(details.artifactSuffix ? [details.artifactSuffix] : []),
18 ].join('-')}.zip`;
19}
20function mirrorVar(name, options, defaultValue) {
21 // Convert camelCase to camel_case for env var reading
22 const snakeName = name.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}_${b}`).toLowerCase();
23 return (
24 // .npmrc
25 process.env[`npm_config_electron_${name.toLowerCase()}`] ||
26 process.env[`NPM_CONFIG_ELECTRON_${snakeName.toUpperCase()}`] ||
27 process.env[`npm_config_electron_${snakeName}`] ||
28 // package.json
29 process.env[`npm_package_config_electron_${name}`] ||
30 process.env[`npm_package_config_electron_${snakeName.toLowerCase()}`] ||
31 // env
32 process.env[`ELECTRON_${snakeName.toUpperCase()}`] ||
33 options[name] ||
34 defaultValue);
35}
36export async function getArtifactRemoteURL(details) {
37 const opts = details.mirrorOptions || {};
38 let base = mirrorVar('mirror', opts, BASE_URL);
39 if (details.version.includes('nightly')) {
40 const nightlyDeprecated = mirrorVar('nightly_mirror', opts, '');
41 if (nightlyDeprecated) {
42 base = nightlyDeprecated;
43 console.warn(`nightly_mirror is deprecated, please use nightlyMirror`);
44 }
45 else {
46 base = mirrorVar('nightlyMirror', opts, NIGHTLY_BASE_URL);
47 }
48 }
49 const path = mirrorVar('customDir', opts, details.version).replace('{{ version }}', details.version.replace(/^v/, ''));
50 const file = mirrorVar('customFilename', opts, getArtifactFileName(details));
51 // Allow customized download URL resolution.
52 if (opts.resolveAssetURL) {
53 const url = await opts.resolveAssetURL(details);
54 return url;
55 }
56 return `${base}${path}/${file}`;
57}
58export function getArtifactVersion(details) {
59 return normalizeVersion(mirrorVar('customVersion', details.mirrorOptions || {}, details.version));
60}
61//# sourceMappingURL=artifact-utils.js.map
\No newline at end of file