1 | import process from 'node:process';
|
2 |
|
3 | import semver from 'semver';
|
4 |
|
5 | import get from './get.js';
|
6 | import util from './util.js';
|
7 |
|
8 | import nodeManifest from '../package.json' assert { type: 'json' };
|
9 |
|
10 | await postinstall()
|
11 | .catch((error) => {
|
12 | if (error.code === 'EPERM') {
|
13 | console.error('Unable to create symlink since user did not run as Administrator.');
|
14 | }
|
15 | });
|
16 |
|
17 | async function postinstall() {
|
18 | const parsedVersion = semver.parse(nodeManifest.version);
|
19 | let version = [
|
20 | parsedVersion.major,
|
21 | parsedVersion.minor,
|
22 | parsedVersion.patch
|
23 | ].join('.');
|
24 |
|
25 | let flavor = process.env.npm_config_nwjs_build_type || process.env.NWJS_BUILD_TYPE || 'normal';
|
26 |
|
27 | if (typeof parsedVersion?.prerelease?.[0] === 'string') {
|
28 | let prerelease = parsedVersion.prerelease[0].split('-');
|
29 | if (prerelease.length > 1) {
|
30 | prerelease = prerelease.slice(0, -1);
|
31 | }
|
32 | version = [version, ...prerelease].join('-');
|
33 | }
|
34 |
|
35 |
|
36 | if (version.endsWith('-sdk')) {
|
37 | version = version.slice(0, -4);
|
38 | flavor = 'sdk';
|
39 | } else if (version.endsWith('sdk')) {
|
40 | version = version.slice(0, -3);
|
41 | flavor = 'sdk';
|
42 | }
|
43 |
|
44 | const platform = util.PLATFORM_KV[process.env.npm_config_nwjs_platform || process.env.NWJS_PLATFORM || process.platform];
|
45 | const arch = util.ARCH_KV[process.env.npm_config_nwjs_process_arch || process.env.NWJS_ARCH || process.arch];
|
46 | const downloadUrl = process.env.npm_config_nwjs_urlbase || process.env.NWJS_URLBASE || 'https://dl.nwjs.io';
|
47 | const cacheDir = process.env.npm_config_nwjs_cache_dir || process.env.NWJS_CACHE_DIR || '.';
|
48 | const cache = process.env.npm_config_nwjs_cache || process.env.NWJS_CACHE || true;
|
49 | const ffmpeg = process.env.npm_config_nwjs_ffmpeg || process.env.NWJS_FFMPEG || false;
|
50 | const nativeAddon = process.env.npm_config_nwjs_native_addon || process.env.NWJS_NATIVE_ADDON || false;
|
51 |
|
52 | await get({
|
53 | version,
|
54 | flavor,
|
55 | platform,
|
56 | arch,
|
57 | downloadUrl,
|
58 | cacheDir,
|
59 | cache,
|
60 | ffmpeg: ffmpeg,
|
61 | nativeAddon: nativeAddon
|
62 | });
|
63 | }
|