"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Prebuildify = exports.determineNativePrebuildExtension = exports.determineNativePrebuildArch = void 0; const debug_1 = __importDefault(require("debug")); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const arch_1 = require("../arch"); const _1 = require("."); const d = (0, debug_1.default)('electron-rebuild'); function determineNativePrebuildArch(arch) { if (arch === 'armv7l') { return 'arm'; } return arch; } exports.determineNativePrebuildArch = determineNativePrebuildArch; /** * The extension of `prebuildify`-generated native modules, after the last `.`. This value differs * based on whether the target arch is ARM-based. */ function determineNativePrebuildExtension(arch) { switch (arch) { case 'arm64': return 'armv8.node'; case 'armv7l': return 'armv7.node'; } return 'node'; } exports.determineNativePrebuildExtension = determineNativePrebuildExtension; class Prebuildify extends _1.NativeModule { async usesTool() { const devDependencies = await this.packageJSONFieldWithDefault('devDependencies', {}); // eslint-disable-next-line no-prototype-builtins return devDependencies.hasOwnProperty('prebuildify'); } async findPrebuiltModule() { const nodeArch = (0, arch_1.getNodeArch)(this.rebuilder.arch, process.config.variables); d(`Checking for prebuilds for "${this.moduleName}"`); const prebuildsDir = path_1.default.join(this.modulePath, 'prebuilds'); if (!(await fs_extra_1.default.pathExists(prebuildsDir))) { d(`Could not find the prebuilds directory at "${prebuildsDir}"`); return false; } const prebuiltModuleDir = path_1.default.join(prebuildsDir, `${this.rebuilder.platform}-${determineNativePrebuildArch(nodeArch)}`); const nativeExt = determineNativePrebuildExtension(nodeArch); const electronNapiModuleFilename = path_1.default.join(prebuiltModuleDir, `electron.napi.${nativeExt}`); const nodejsNapiModuleFilename = path_1.default.join(prebuiltModuleDir, `node.napi.${nativeExt}`); const abiModuleFilename = path_1.default.join(prebuiltModuleDir, `electron.abi${this.rebuilder.ABI}.${nativeExt}`); if (await fs_extra_1.default.pathExists(electronNapiModuleFilename) || await fs_extra_1.default.pathExists(nodejsNapiModuleFilename)) { this.nodeAPI.ensureElectronSupport(); d(`Found prebuilt Node-API module in ${prebuiltModuleDir}"`); } else if (await fs_extra_1.default.pathExists(abiModuleFilename)) { d(`Found prebuilt module: "${abiModuleFilename}"`); } else { d(`Could not locate "${electronNapiModuleFilename}", "${nodejsNapiModuleFilename}", or "${abiModuleFilename}"`); return false; } return true; } } exports.Prebuildify = Prebuildify; //# sourceMappingURL=prebuildify.js.map