UNPKG

igir

Version:

🕹 A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

61 lines (60 loc) • 2.65 kB
import semver from 'semver'; import { LogLevel } from '../console/logLevel.js'; import MultiBar from '../console/multiBar.js'; /** * Check if the current Node.js version has reached EOL and log if it has. */ export default class EndOfLifeChecker { static END_OF_LIFE_DATES = [ [4, new Date('2018-04-30')], [5, new Date('2016-06-30')], [6, new Date('2019-04-30')], [7, new Date('2017-06-30')], [8, new Date('2019-01-31')], [9, new Date('2018-06-30')], [10, new Date('2021-04-30')], [11, new Date('2019-06-30')], [12, new Date('2022-04-30')], [13, new Date('2020-06-01')], [14, new Date('2023-04-30')], [15, new Date('2021-06-01')], [16, new Date('2023-09-11')], [17, new Date('2022-06-01')], [18, new Date('2025-04-30')], [19, new Date('2023-06-01')], [20, new Date('2026-04-30')], [21, new Date('2024-06-01')], [22, new Date('2027-04-30')], [23, new Date('2025-06-01')], [24, new Date('2028-04-30')], ]; logger; constructor(logger) { this.logger = logger; } /** * Check the current Node.js version. */ check(nodejsVersion, now = new Date()) { for (const [majorVersion, endOfLifeDate] of EndOfLifeChecker.END_OF_LIFE_DATES) { if (semver.satisfies(nodejsVersion, `^${majorVersion}`)) { if (now > endOfLifeDate) { // We are past the EOL of a known version, warn and return MultiBar.log(this.logger.formatMessage(LogLevel.WARN, `Node.js v${majorVersion} reached end-of-life on ${endOfLifeDate.toDateString()}, you should update to an actively maintained LTS version`)); return; } if (majorVersion % 2 === 1) { // We are within the support period of a non-LTS version, warn and return MultiBar.log(this.logger.formatMessage(LogLevel.WARN, `Node.js v${majorVersion} has a very short support window (ending on ${endOfLifeDate.toDateString()}), you should consider using an LTS version`)); return; } break; } } const coercedVersion = semver.coerce(nodejsVersion); if (coercedVersion && coercedVersion.major % 2 === 1) { // We are on an unknown non-LTS version, warn and return MultiBar.log(this.logger.formatMessage(LogLevel.WARN, `Node.js v${coercedVersion.major} has a very short support window, you should consider using an LTS version`)); } } }