"use strict";
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
};
|
Object.defineProperty(exports, "__esModule", { value: true });
|
exports.PrebuildInstall = void 0;
|
const debug_1 = __importDefault(require("debug"));
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
const path_1 = __importDefault(require("path"));
|
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
|
const _1 = require(".");
|
const d = (0, debug_1.default)('electron-rebuild');
|
class PrebuildInstall extends _1.NativeModule {
|
async usesTool() {
|
const dependencies = await this.packageJSONFieldWithDefault('dependencies', {});
|
// eslint-disable-next-line no-prototype-builtins
|
return dependencies.hasOwnProperty('prebuild-install');
|
}
|
async locateBinary() {
|
return (0, _1.locateBinary)(this.modulePath, 'node_modules/prebuild-install/bin.js');
|
}
|
async run(prebuildInstallPath) {
|
await (0, cross_spawn_promise_1.spawn)(process.execPath, [
|
path_1.default.resolve(__dirname, '..', `prebuild-shim.js`),
|
prebuildInstallPath,
|
`--arch=${this.rebuilder.arch}`,
|
`--platform=${this.rebuilder.platform}`,
|
`--tag-prefix=${this.rebuilder.prebuildTagPrefix}`,
|
...await this.getPrebuildInstallRuntimeArgs(),
|
], {
|
cwd: this.modulePath,
|
});
|
}
|
async findPrebuiltModule() {
|
var _a;
|
const prebuildInstallPath = await this.locateBinary();
|
if (prebuildInstallPath) {
|
d(`triggering prebuild download step: ${this.moduleName}`);
|
try {
|
await this.run(prebuildInstallPath);
|
return true;
|
}
|
catch (err) {
|
d('failed to use prebuild-install:', err);
|
if ((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('requires Node-API but Electron')) {
|
throw err;
|
}
|
}
|
}
|
else {
|
d(`could not find prebuild-install relative to: ${this.modulePath}`);
|
}
|
return false;
|
}
|
/**
|
* Whether a prebuild-install-based native module exists.
|
*/
|
async prebuiltModuleExists() {
|
return fs_extra_1.default.pathExists(path_1.default.resolve(this.modulePath, 'prebuilds', `${this.rebuilder.platform}-${this.rebuilder.arch}`, `electron-${this.rebuilder.ABI}.node`));
|
}
|
async getPrebuildInstallRuntimeArgs() {
|
const moduleNapiVersions = await this.getSupportedNapiVersions();
|
if (moduleNapiVersions) {
|
const napiVersion = this.nodeAPI.getNapiVersion(moduleNapiVersions);
|
return [
|
'--runtime=napi',
|
`--target=${napiVersion}`,
|
];
|
}
|
else {
|
return [
|
'--runtime=electron',
|
`--target=${this.rebuilder.electronVersion}`,
|
];
|
}
|
}
|
}
|
exports.PrebuildInstall = PrebuildInstall;
|
//# sourceMappingURL=prebuild-install.js.map
|