"use strict";
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
};
|
Object.defineProperty(exports, "__esModule", { value: true });
|
exports.locateBinary = exports.NativeModule = void 0;
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
const path_1 = __importDefault(require("path"));
|
const node_api_1 = require("../node-api");
|
const read_package_json_1 = require("../read-package-json");
|
class NativeModule {
|
constructor(rebuilder, modulePath) {
|
this.rebuilder = rebuilder;
|
this.modulePath = modulePath;
|
this.nodeAPI = new node_api_1.NodeAPI(this.moduleName, this.rebuilder.electronVersion);
|
}
|
get moduleName() {
|
if (!this._moduleName) {
|
const basename = path_1.default.basename(this.modulePath);
|
const parentDir = path_1.default.basename(path_1.default.dirname(this.modulePath));
|
if (parentDir.startsWith('@')) {
|
this._moduleName = `${parentDir}/${basename}`;
|
}
|
this._moduleName = basename;
|
}
|
return this._moduleName;
|
}
|
async packageJSONFieldWithDefault(key, defaultValue) {
|
const result = await this.packageJSONField(key);
|
return result === undefined ? defaultValue : result;
|
}
|
async packageJSONField(key) {
|
this.packageJSON || (this.packageJSON = await (0, read_package_json_1.readPackageJson)(this.modulePath));
|
return this.packageJSON[key];
|
}
|
async getSupportedNapiVersions() {
|
const binary = (await this.packageJSONFieldWithDefault('binary', {}));
|
return binary === null || binary === void 0 ? void 0 : binary.napi_versions;
|
}
|
}
|
exports.NativeModule = NativeModule;
|
async function locateBinary(basePath, suffix) {
|
let parentPath = basePath;
|
let testPath;
|
while (testPath !== parentPath) {
|
testPath = parentPath;
|
const checkPath = path_1.default.resolve(testPath, suffix);
|
if (await fs_extra_1.default.pathExists(checkPath)) {
|
return checkPath;
|
}
|
parentPath = path_1.default.resolve(testPath, '..');
|
}
|
return null;
|
}
|
exports.locateBinary = locateBinary;
|
//# sourceMappingURL=index.js.map
|