dce-dev-wizard
Version:
Wizard for managing development apps at Harvard DCE.
55 lines • 2.45 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Get the current LTS Node version from the Node.js website.
* @author Gabe Abrams
* @returns major version of Node.js (e.g. 22) or null if not found
*/
const getCurrentEvenLTSNodeVersion = () => __awaiter(void 0, void 0, void 0, function* () {
// Get node versions
let nodeVersions = [];
let retries = 3;
while (retries > 0) {
try {
const nodeVersionsResponse = yield fetch('https://nodejs.org/download/release/index.json');
nodeVersions = yield nodeVersionsResponse.json();
break;
}
catch (error) {
retries -= 1;
if (retries === 0) {
throw error;
}
}
}
if (nodeVersions.length === 0) {
throw new Error('Unable to fetch Node.js versions from the Node.js website.');
}
let currentEvenMajorLTSVersion = null;
nodeVersions.forEach((version) => {
const versionParts = version.version.split('.');
const majorVersion = Number.parseInt(versionParts[0].replace('v', ''), 10);
const isEven = (majorVersion % 2 === 0);
const isLTS = (version.lts !== false);
if (isLTS && isEven) {
// Check if this is the first even major LTS version
// or if it's greater than the current one
if (!currentEvenMajorLTSVersion || majorVersion > currentEvenMajorLTSVersion) {
// Update the current even major LTS version
currentEvenMajorLTSVersion = majorVersion;
}
}
});
return currentEvenMajorLTSVersion;
});
exports.default = getCurrentEvenLTSNodeVersion;
//# sourceMappingURL=getCurrentEvenLTSNodeVersion.js.map