node-version-use
Version:
Cross-platform solution for using multiple versions of node. Useful for compatibility testing
79 lines • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get findInstalledVersions () {
return findInstalledVersions;
},
get getAllInstalledVersions () {
return getAllInstalledVersions;
}
});
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _compatts = require("../compat.js");
var _compareVersionsts = /*#__PURE__*/ _interop_require_default(require("./compareVersions.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function findInstalledVersions(versionsPath, version) {
if (!_fs.default.existsSync(versionsPath)) {
return [];
}
var normalizedVersion = version.replace(/^v/, '');
var matches = [];
// Try exact matches first
var exactMatches = [
version,
"v".concat(normalizedVersion),
normalizedVersion
];
for(var i = 0; i < exactMatches.length; i++){
var v = exactMatches[i];
var versionPath = _path.default.join(versionsPath, v);
if (_fs.default.existsSync(versionPath) && _fs.default.statSync(versionPath).isDirectory()) {
if (matches.indexOf(v) === -1) {
matches.push(v);
}
}
}
// If we have an exact match, return just that
if (matches.length > 0) {
return matches;
}
// Try partial match (e.g., "20" matches "v20.19.6")
var entries = (0, _compatts.readdirWithTypes)(versionsPath);
for(var j = 0; j < entries.length; j++){
var entry = entries[j];
if (!entry.isDirectory()) continue;
var dirVersion = entry.name.replace(/^v/, '');
if (dirVersion.indexOf("".concat(normalizedVersion, ".")) === 0) {
matches.push(entry.name);
}
}
// Sort by semver (ascending) so highest version is last
return matches.sort(_compareVersionsts.default);
}
function getAllInstalledVersions(versionsPath) {
if (!_fs.default.existsSync(versionsPath)) {
return [];
}
var entries = (0, _compatts.readdirWithTypes)(versionsPath);
var versions = [];
for(var i = 0; i < entries.length; i++){
if (entries[i].isDirectory()) {
versions.push(entries[i].name);
}
}
return versions;
}
/* 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; }