node-exec-path
Version:
Helpers for node executable paths
55 lines • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return satisfiesSemverSync;
}
});
var _envpathkey = /*#__PURE__*/ _interop_require_default(require("env-path-key"));
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
var _module = /*#__PURE__*/ _interop_require_default(require("module"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _semver = /*#__PURE__*/ _interop_require_default(require("semver"));
var _url = /*#__PURE__*/ _interop_require_default(require("url"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
var pathDelimiter = _path.default.delimiter ? _path.default.delimiter : isWindows ? ';' : ':';
var NODE = isWindows ? 'node.exe' : 'node';
var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
var existsSync = function(test) {
try {
(_fs.default.accessSync || _fs.default.statSync)(test);
return true;
} catch (_) {
return false;
}
};
var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename);
// Worker MUST always load from dist/cjs/ for old Node compatibility (works from both cjs and esm)
var processVersion = _path.default.join(__dirname, '..', 'cjs', 'workers', 'processVersion.js');
var functionExec = null; // break dependencies
function satisfiesSemverSync(versionString) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
if (!functionExec) functionExec = _require('function-exec-sync'); // break dependencies
var env = options.env || process.env;
var pathKey = (0, _envpathkey.default)(env);
var envPaths = env[pathKey].split(pathDelimiter);
for(var i = 0; i < envPaths.length; i++){
var envPath = envPaths[i];
var execPath = _path.default.join(envPath, NODE);
if (!existsSync(execPath)) continue;
var version = functionExec({
execPath: execPath
}, processVersion);
if (_semver.default.satisfies(version, versionString)) return execPath;
}
return null;
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }