UNPKG

hashon

Version:

Encrypt, decrypt and hash JSON data with AES and SHA — made for secure local files and syncing.

69 lines (56 loc) 2.63 kB
// versionStatus.js: const fs = require('fs'); const path = require('path'); const semver = require('semver'); // Direkt en async IIFE (Immediately Invoked Function Expression) // för att kunna använda await på import() av ESM-modulen 'latest-version' (async function printStatus() { // Dynamisk import av latest-version och hämta default-exporten const latestVersion = (await import('latest-version')).default; // Läs in package.json för att hämta namn och version på paketet const pkgPath = path.resolve(__dirname, 'package.json'); const pkgJson = fs.readFileSync(pkgPath, 'utf-8'); const { version: currentVersion, name: packageName } = JSON.parse(pkgJson); let latest; try { // Hämta den senaste versionen från npm-registret via latest-version latest = await latestVersion(packageName); } catch (err) { console.error('❌ Failed to fetch latest version from npm:', err.message); return; } // Bestäm status för den nuvarande versionen jämfört med senaste versionen const status = determineStatus(currentVersion, latest); // Terminalfärger för olika status const colors = { Latest: '\x1b[32m', // Grön för senaste version Supported: '\x1b[33m', // Gul för stödjda äldre patchar Outdated: '\x1b[35m', // Lila för äldre minor versioner Deprecated: '\x1b[31m',// Röd för deprecated versioner (för gamla minor) Unknown: '\x1b[0m' // Återställ standardfärg }; // Återställningssekvens för terminalfärg const resetColor = '\x1b[0m'; // Skriv ut status med färg i terminalen console.log(`${colors[status] || resetColor}Version ${currentVersion} is ${status}${resetColor}`); })(); // Funktion som avgör status mellan nuvarande och senaste versionen function determineStatus(current, latest) { // Kontrollera att versionerna är giltiga semver-strängar if (!semver.valid(current) || !semver.valid(latest)) return 'Unknown'; // Om versionerna är exakt lika är den senaste installerad if (semver.eq(current, latest)) return 'Latest'; // Parsar major och minor versioner const cur = semver.parse(current); const lat = semver.parse(latest); // Om major och minor är samma men patch är äldre -> Supported if (cur.major === lat.major && cur.minor === lat.minor && semver.lt(current, latest)) { return 'Supported'; } // Om versionen är äldre än senaste minors första patch -> Deprecated if (semver.lt(current, `${lat.major}.${lat.minor}.0`)) { return 'Deprecated'; } // Annars är versionen för gammal men inte riktigt deprecated -> Outdated return 'Outdated'; }