node-version-use 2.1.5 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/default.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { mkdirpSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\nimport loadNodeVersionInstall from '../lib/loadNodeVersionInstall.ts';\n\n/**\n * nvu default [version]\n *\n * Set or display the global default Node version.\n * This is used when no .nvmrc or .nvurc is found in the project.\n */\nexport default function defaultCmd(args: string[]): void {\n var defaultFilePath = path.join(storagePath, 'default');\n var versionsPath = path.join(storagePath, 'installed');\n\n // If no version provided, display current default\n if (args.length === 0) {\n if (fs.existsSync(defaultFilePath)) {\n var currentVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n console.log(`Current default: ${currentVersion}`);\n } else {\n console.log('No default version set.');\n console.log('Usage: nvu default <version>');\n }\n exit(0);\n return;\n }\n\n var version = args[0].trim();\n\n // Validate version format (basic check, indexOf for Node 0.8+ compat)\n if (!version || version.indexOf('-') === 0) {\n console.log('Usage: nvu default <version>');\n console.log('Example: nvu default 20');\n exit(1);\n return;\n }\n\n // Ensure storage directory exists\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n\n // Check if any installed versions match\n var matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length > 0) {\n // Version is installed - resolve to exact and set default\n setDefaultToExact(defaultFilePath, matches);\n } else {\n // Version not installed - auto-install it\n console.log(`Node ${version} is not installed. Installing...`);\n autoInstallAndSetDefault(version, versionsPath, defaultFilePath);\n }\n}\n\n/**\n * Set the default to the highest matching installed version\n */\nfunction setDefaultToExact(defaultFilePath: string, matches: string[]): void {\n // matches are sorted by findInstalledVersions, take the last (highest)\n var exactVersion = matches[matches.length - 1];\n\n // Ensure it has v prefix for consistency\n if (exactVersion.indexOf('v') !== 0) {\n exactVersion = `v${exactVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${exactVersion}\\n`, 'utf8');\n console.log(`Default Node version set to: ${exactVersion}`);\n\n exit(0);\n}\n\n/**\n * Auto-install the version and then set it as default\n */\nfunction autoInstallAndSetDefault(version: string, versionsPath: string, defaultFilePath: string): void {\n loadNodeVersionInstall((err, nodeVersionInstall) => {\n if (err || !nodeVersionInstall) {\n console.error('Failed to load node-version-install:', err ? err.message : 'Module not available');\n exit(1);\n return;\n }\n\n nodeVersionInstall(\n version,\n {\n installPath: versionsPath,\n },\n (installErr, results) => {\n if (installErr) {\n console.error(`Failed to install Node ${version}:`, installErr.message);\n exit(1);\n return;\n }\n\n // Get the installed version from results\n var installedVersion: string;\n if (results && results.length > 0) {\n installedVersion = results[0].version;\n } else {\n // Fallback: re-scan installed versions\n var matches = findInstalledVersions(versionsPath, version);\n if (matches.length === 0) {\n console.error('Installation completed but version not found');\n exit(1);\n return;\n }\n installedVersion = matches[matches.length - 1];\n }\n\n // Ensure it has v prefix for consistency\n if (installedVersion.indexOf('v') !== 0) {\n installedVersion = `v${installedVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${installedVersion}\\n`, 'utf8');\n console.log(`Node ${installedVersion} installed successfully.`);\n console.log(`Default Node version set to: ${installedVersion}`);\n\n exit(0);\n }\n );\n });\n}\n"],"names":["defaultCmd","args","defaultFilePath","path","join","storagePath","versionsPath","length","fs","existsSync","currentVersion","readFileSync","trim","console","log","exit","version","indexOf","mkdirpSync","matches","findInstalledVersions","setDefaultToExact","autoInstallAndSetDefault","exactVersion","writeFileSync","loadNodeVersionInstall","err","nodeVersionInstall","error","message","installPath","installErr","results","installedVersion"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/default.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { mkdirpSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\nimport loadNodeVersionInstall from '../lib/loadNodeVersionInstall.ts';\n\n/**\n * nvu default [version]\n *\n * Set or display the global default Node version.\n * This is used when no .nvmrc or .nvurc is found in the project.\n */\nexport default function defaultCmd(args: string[]): void {\n const defaultFilePath = path.join(storagePath, 'default');\n const versionsPath = path.join(storagePath, 'installed');\n\n // If no version provided, display current default\n if (args.length === 0) {\n if (fs.existsSync(defaultFilePath)) {\n const currentVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n console.log(`Current default: ${currentVersion}`);\n } else {\n console.log('No default version set.');\n console.log('Usage: nvu default <version>');\n }\n exit(0);\n return;\n }\n\n const version = args[0].trim();\n\n // Validate version format (basic check, indexOf for Node 0.8+ compat)\n if (!version || version.indexOf('-') === 0) {\n console.log('Usage: nvu default <version>');\n console.log('Example: nvu default 20');\n exit(1);\n return;\n }\n\n // Ensure storage directory exists\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n\n // Check if any installed versions match\n const matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length > 0) {\n // Version is installed - resolve to exact and set default\n setDefaultToExact(defaultFilePath, matches);\n } else {\n // Version not installed - auto-install it\n console.log(`Node ${version} is not installed. Installing...`);\n autoInstallAndSetDefault(version, versionsPath, defaultFilePath);\n }\n}\n\n/**\n * Set the default to the highest matching installed version\n */\nfunction setDefaultToExact(defaultFilePath: string, matches: string[]): void {\n // matches are sorted by findInstalledVersions, take the last (highest)\n let exactVersion = matches[matches.length - 1];\n\n // Ensure it has v prefix for consistency\n if (exactVersion.indexOf('v') !== 0) {\n exactVersion = `v${exactVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${exactVersion}\\n`, 'utf8');\n console.log(`Default Node version set to: ${exactVersion}`);\n\n exit(0);\n}\n\n/**\n * Auto-install the version and then set it as default\n */\nfunction autoInstallAndSetDefault(version: string, versionsPath: string, defaultFilePath: string): void {\n loadNodeVersionInstall((err, nodeVersionInstall) => {\n if (err || !nodeVersionInstall) {\n console.error('Failed to load node-version-install:', err ? err.message : 'Module not available');\n exit(1);\n return;\n }\n\n nodeVersionInstall(\n version,\n {\n installPath: versionsPath,\n },\n (installErr, results) => {\n if (installErr) {\n console.error(`Failed to install Node ${version}:`, installErr.message);\n exit(1);\n return;\n }\n\n // Get the installed version from results\n let installedVersion: string;\n if (results && results.length > 0) {\n installedVersion = results[0].version;\n } else {\n // Fallback: re-scan installed versions\n const matches = findInstalledVersions(versionsPath, version);\n if (matches.length === 0) {\n console.error('Installation completed but version not found');\n exit(1);\n return;\n }\n installedVersion = matches[matches.length - 1];\n }\n\n // Ensure it has v prefix for consistency\n if (installedVersion.indexOf('v') !== 0) {\n installedVersion = `v${installedVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${installedVersion}\\n`, 'utf8');\n console.log(`Node ${installedVersion} installed successfully.`);\n console.log(`Default Node version set to: ${installedVersion}`);\n\n exit(0);\n }\n );\n });\n}\n"],"names":["defaultCmd","args","defaultFilePath","path","join","storagePath","versionsPath","length","fs","existsSync","currentVersion","readFileSync","trim","console","log","exit","version","indexOf","mkdirpSync","matches","findInstalledVersions","setDefaultToExact","autoInstallAndSetDefault","exactVersion","writeFileSync","loadNodeVersionInstall","err","nodeVersionInstall","error","message","installPath","installErr","results","installedVersion"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/list.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\n\n/**\n * nvu list\n *\n * List all installed Node versions.\n */\nexport default function listCmd(_args: string[]): void {\n var versionsPath = path.join(storagePath, 'installed');\n\n // Check if versions directory exists\n if (!fs.existsSync(versionsPath)) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Read all directories in versions folder\n var entries = readdirWithTypes(versionsPath);\n var versions = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);\n\n if (versions.length === 0) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Get the current default\n const defaultFilePath = path.join(storagePath, 'default');\n let defaultVersion = '';\n if (fs.existsSync(defaultFilePath)) {\n defaultVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n }\n\n // Sort versions (simple string sort, could be improved with semver)\n versions.sort((a, b) => {\n const aParts = a.split('.').map((n) => parseInt(n, 10) || 0);\n const bParts = b.split('.').map((n) => parseInt(n, 10) || 0);\n for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n const aVal = aParts[i] || 0;\n const bVal = bParts[i] || 0;\n if (aVal !== bVal) return bVal - aVal; // Descending order\n }\n return 0;\n });\n\n console.log('Installed Node versions:');\n for (let i = 0; i < versions.length; i++) {\n const version = versions[i];\n const isDefault = version === defaultVersion || `v${version}` === defaultVersion || version === `v${defaultVersion}`;\n const marker = isDefault ? ' (default)' : '';\n console.log(` ${version}${marker}`);\n }\n exit(0);\n}\n"],"names":["listCmd","_args","versionsPath","path","join","storagePath","fs","existsSync","console","log","exit","entries","readdirWithTypes","versions","filter","entry","isDirectory","map","name","length","defaultFilePath","defaultVersion","readFileSync","trim","sort","a","b","aParts","split","n","parseInt","bParts","i","Math","max","aVal","bVal","version","isDefault","marker"],"mappings":";;;;+BAMA;;;;CAIC,GACD;;;eAAwBA;;;iEAXP;yDACF;2DACE;wBACgB;2BACL;;;;;;AAOb,SAASA,QAAQC,KAAe;IAC7C,IAAIC,eAAeC,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAE1C,qCAAqC;IACrC,IAAI,CAACC,WAAE,CAACC,UAAU,CAACL,eAAe;QAChCM,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,0CAA0C;IAC1C,IAAIC,UAAUC,IAAAA,0BAAgB,EAACV;IAC/B,IAAIW,WAAWF,QAAQG,MAAM,CAAC,SAACC;eAAUA,MAAMC,WAAW;OAAIC,GAAG,CAAC,SAACF;eAAUA,MAAMG,IAAI;;IAEvF,IAAIL,SAASM,MAAM,KAAK,GAAG;QACzBX,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,0BAA0B;IAC1B,IAAMU,kBAAkBjB,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAC/C,IAAIgB,iBAAiB;IACrB,IAAIf,WAAE,CAACC,UAAU,CAACa,kBAAkB;QAClCC,iBAAiBf,WAAE,CAACgB,YAAY,CAACF,iBAAiB,QAAQG,IAAI;IAChE;IAEA,oEAAoE;IACpEV,SAASW,IAAI,CAAC,SAACC,GAAGC;QAChB,IAAMC,SAASF,EAAEG,KAAK,CAAC,KAAKX,GAAG,CAAC,SAACY;mBAAMC,SAASD,GAAG,OAAO;;QAC1D,IAAME,SAASL,EAAEE,KAAK,CAAC,KAAKX,GAAG,CAAC,SAACY;mBAAMC,SAASD,GAAG,OAAO;;QAC1D,IAAK,IAAIG,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACP,OAAOR,MAAM,EAAEY,OAAOZ,MAAM,GAAGa,IAAK;YAC/D,IAAMG,OAAOR,MAAM,CAACK,EAAE,IAAI;YAC1B,IAAMI,OAAOL,MAAM,CAACC,EAAE,IAAI;YAC1B,IAAIG,SAASC,MAAM,OAAOA,OAAOD,MAAM,mBAAmB;QAC5D;QACA,OAAO;IACT;IAEA3B,QAAQC,GAAG,CAAC;IACZ,IAAK,IAAIuB,IAAI,GAAGA,IAAInB,SAASM,MAAM,EAAEa,IAAK;QACxC,IAAMK,UAAUxB,QAAQ,CAACmB,EAAE;QAC3B,IAAMM,YAAYD,YAAYhB,kBAAkB,AAAC,IAAW,OAARgB,aAAchB,kBAAkBgB,YAAY,AAAC,IAAkB,OAAfhB;QACpG,IAAMkB,SAASD,YAAY,eAAe;QAC1C9B,QAAQC,GAAG,CAAC,AAAC,KAAc8B,OAAVF,SAAiB,OAAPE;IAC7B;IACA7B,IAAAA,mBAAI,EAAC;AACP"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/list.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\n\n/**\n * nvu list\n *\n * List all installed Node versions.\n */\nexport default function listCmd(_args: string[]): void {\n const versionsPath = path.join(storagePath, 'installed');\n\n // Check if versions directory exists\n if (!fs.existsSync(versionsPath)) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Read all directories in versions folder\n const entries = readdirWithTypes(versionsPath);\n const versions = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);\n\n if (versions.length === 0) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Get the current default\n const defaultFilePath = path.join(storagePath, 'default');\n let defaultVersion = '';\n if (fs.existsSync(defaultFilePath)) {\n defaultVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n }\n\n // Sort versions (simple string sort, could be improved with semver)\n versions.sort((a, b) => {\n const aParts = a.split('.').map((n) => parseInt(n, 10) || 0);\n const bParts = b.split('.').map((n) => parseInt(n, 10) || 0);\n for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n const aVal = aParts[i] || 0;\n const bVal = bParts[i] || 0;\n if (aVal !== bVal) return bVal - aVal; // Descending order\n }\n return 0;\n });\n\n console.log('Installed Node versions:');\n for (let i = 0; i < versions.length; i++) {\n const version = versions[i];\n const isDefault = version === defaultVersion || `v${version}` === defaultVersion || version === `v${defaultVersion}`;\n const marker = isDefault ? ' (default)' : '';\n console.log(` ${version}${marker}`);\n }\n exit(0);\n}\n"],"names":["listCmd","_args","versionsPath","path","join","storagePath","fs","existsSync","console","log","exit","entries","readdirWithTypes","versions","filter","entry","isDirectory","map","name","length","defaultFilePath","defaultVersion","readFileSync","trim","sort","a","b","aParts","split","n","parseInt","bParts","i","Math","max","aVal","bVal","version","isDefault","marker"],"mappings":";;;;+BAMA;;;;CAIC,GACD;;;eAAwBA;;;iEAXP;yDACF;2DACE;wBACgB;2BACL;;;;;;AAOb,SAASA,QAAQC,KAAe;IAC7C,IAAMC,eAAeC,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAE5C,qCAAqC;IACrC,IAAI,CAACC,WAAE,CAACC,UAAU,CAACL,eAAe;QAChCM,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,0CAA0C;IAC1C,IAAMC,UAAUC,IAAAA,0BAAgB,EAACV;IACjC,IAAMW,WAAWF,QAAQG,MAAM,CAAC,SAACC;eAAUA,MAAMC,WAAW;OAAIC,GAAG,CAAC,SAACF;eAAUA,MAAMG,IAAI;;IAEzF,IAAIL,SAASM,MAAM,KAAK,GAAG;QACzBX,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,0BAA0B;IAC1B,IAAMU,kBAAkBjB,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAC/C,IAAIgB,iBAAiB;IACrB,IAAIf,WAAE,CAACC,UAAU,CAACa,kBAAkB;QAClCC,iBAAiBf,WAAE,CAACgB,YAAY,CAACF,iBAAiB,QAAQG,IAAI;IAChE;IAEA,oEAAoE;IACpEV,SAASW,IAAI,CAAC,SAACC,GAAGC;QAChB,IAAMC,SAASF,EAAEG,KAAK,CAAC,KAAKX,GAAG,CAAC,SAACY;mBAAMC,SAASD,GAAG,OAAO;;QAC1D,IAAME,SAASL,EAAEE,KAAK,CAAC,KAAKX,GAAG,CAAC,SAACY;mBAAMC,SAASD,GAAG,OAAO;;QAC1D,IAAK,IAAIG,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACP,OAAOR,MAAM,EAAEY,OAAOZ,MAAM,GAAGa,IAAK;YAC/D,IAAMG,OAAOR,MAAM,CAACK,EAAE,IAAI;YAC1B,IAAMI,OAAOL,MAAM,CAACC,EAAE,IAAI;YAC1B,IAAIG,SAASC,MAAM,OAAOA,OAAOD,MAAM,mBAAmB;QAC5D;QACA,OAAO;IACT;IAEA3B,QAAQC,GAAG,CAAC;IACZ,IAAK,IAAIuB,IAAI,GAAGA,IAAInB,SAASM,MAAM,EAAEa,IAAK;QACxC,IAAMK,UAAUxB,QAAQ,CAACmB,EAAE;QAC3B,IAAMM,YAAYD,YAAYhB,kBAAkB,AAAC,IAAW,OAARgB,aAAchB,kBAAkBgB,YAAY,AAAC,IAAkB,OAAfhB;QACpG,IAAMkB,SAASD,YAAY,eAAe;QAC1C9B,QAAQC,GAAG,CAAC,AAAC,KAAc8B,OAAVF,SAAiB,OAAPE;IAC7B;IACA7B,IAAAA,mBAAI,EAAC;AACP"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/setup.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport url from 'url';\nimport { mkdirpSync, readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\nvar __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n/**\n * nvu setup [--shims]\n *\n * Install/reinstall nvu binaries to ~/.nvu/bin\n * With --shims: create shims for existing global packages\n */\nexport default function setupCmd(args: string[]): void {\n var binDir = path.join(storagePath, 'bin');\n\n // Create directories\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n if (!fs.existsSync(binDir)) {\n mkdirpSync(binDir);\n }\n\n // Check for --shims flag\n var hasShimsFlag = false;\n for (var i = 0; i < args.length; i++) {\n if (args[i] === '--shims') {\n hasShimsFlag = true;\n break;\n }\n }\n\n if (hasShimsFlag) {\n createShimsForGlobalPackages(binDir);\n return;\n }\n\n // Find the postinstall script relative to this module\n var postinstallPath = path.join(__dirname, '..', '..', '..', 'scripts', 'postinstall.cjs');\n\n if (fs.existsSync(postinstallPath)) {\n // Run the postinstall script\n try {\n execSync(`node \"${postinstallPath}\"`, { stdio: 'inherit' });\n } catch (_err) {\n // postinstall handles its own errors gracefully\n }\n } else {\n console.log('Setup script not found.');\n console.log('Try reinstalling: npm install -g node-version-use');\n exit(1);\n }\n}\n\n/**\n * Create shims for all global packages in the default Node version\n */\nfunction createShimsForGlobalPackages(binDir: string): void {\n // Read default version\n var defaultPath = path.join(storagePath, 'default');\n if (!fs.existsSync(defaultPath)) {\n console.log('No default Node version set.');\n console.log('Set one with: nvu default <version>');\n exit(1);\n return;\n }\n\n var defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n var versionsDir = path.join(storagePath, 'installed');\n\n // Resolve to exact version\n var matches = findInstalledVersions(versionsDir, defaultVersion);\n if (matches.length === 0) {\n console.log(`Default version ${defaultVersion} is not installed.`);\n exit(1);\n return;\n }\n\n var resolvedVersion = matches[matches.length - 1];\n var nodeBinDir = path.join(versionsDir, resolvedVersion, 'bin');\n\n if (!fs.existsSync(nodeBinDir)) {\n console.log(`No bin directory found for ${resolvedVersion}`);\n exit(1);\n return;\n }\n\n // Get the node shim to copy from\n var nodeShim = path.join(binDir, 'node');\n if (!fs.existsSync(nodeShim)) {\n console.log('Node shim not found. Run: nvu setup');\n exit(1);\n return;\n }\n\n // Scan binaries in Node's bin directory\n var entries = readdirWithTypes(nodeBinDir);\n var created = 0;\n var skipped = 0;\n\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n var name = entry.name;\n\n // Skip our routing shims (node/npm/npx) - don't overwrite them\n if (name === 'node' || name === 'npm' || name === 'npx') {\n continue;\n }\n\n var shimPath = path.join(binDir, name);\n\n // Skip if shim already exists\n if (fs.existsSync(shimPath)) {\n skipped++;\n continue;\n }\n\n // Copy the node shim\n try {\n var shimContent = fs.readFileSync(nodeShim);\n fs.writeFileSync(shimPath, shimContent);\n fs.chmodSync(shimPath, 493); // 0755\n console.log(`Created shim: ${name}`);\n created++;\n } catch (err) {\n console.error(`Failed to create shim for ${name}: ${(err as Error).message}`);\n }\n }\n\n console.log('');\n console.log(`Done. Created ${created} shims, skipped ${skipped} (already exist).`);\n exit(0);\n}\n"],"names":["setupCmd","__dirname","path","dirname","__filename","url","fileURLToPath","args","binDir","join","storagePath","fs","existsSync","mkdirpSync","hasShimsFlag","i","length","createShimsForGlobalPackages","postinstallPath","execSync","stdio","_err","console","log","exit","defaultPath","defaultVersion","readFileSync","trim","versionsDir","matches","findInstalledVersions","resolvedVersion","nodeBinDir","nodeShim","entries","readdirWithTypes","created","skipped","entry","name","shimPath","shimContent","writeFileSync","chmodSync","err","error","message"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/setup.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport url from 'url';\nimport { mkdirpSync, readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n/**\n * nvu setup [--shims]\n *\n * Install/reinstall nvu binaries to ~/.nvu/bin\n * With --shims: create shims for existing global packages\n */\nexport default function setupCmd(args: string[]): void {\n const binDir = path.join(storagePath, 'bin');\n\n // Create directories\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n if (!fs.existsSync(binDir)) {\n mkdirpSync(binDir);\n }\n\n // Check for --shims flag\n let hasShimsFlag = false;\n for (let i = 0; i < args.length; i++) {\n if (args[i] === '--shims') {\n hasShimsFlag = true;\n break;\n }\n }\n\n if (hasShimsFlag) {\n createShimsForGlobalPackages(binDir);\n return;\n }\n\n // Find the postinstall script relative to this module\n const postinstallPath = path.join(__dirname, '..', '..', '..', 'scripts', 'postinstall.cjs');\n\n if (fs.existsSync(postinstallPath)) {\n // Run the postinstall script\n try {\n execSync(`node \"${postinstallPath}\"`, { stdio: 'inherit' });\n } catch (_err) {\n // postinstall handles its own errors gracefully\n }\n } else {\n console.log('Setup script not found.');\n console.log('Try reinstalling: npm install -g node-version-use');\n exit(1);\n }\n}\n\n/**\n * Create shims for all global packages in the default Node version\n */\nfunction createShimsForGlobalPackages(binDir: string): void {\n // Read default version\n const defaultPath = path.join(storagePath, 'default');\n if (!fs.existsSync(defaultPath)) {\n console.log('No default Node version set.');\n console.log('Set one with: nvu default <version>');\n exit(1);\n return;\n }\n\n const defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n const versionsDir = path.join(storagePath, 'installed');\n\n // Resolve to exact version\n const matches = findInstalledVersions(versionsDir, defaultVersion);\n if (matches.length === 0) {\n console.log(`Default version ${defaultVersion} is not installed.`);\n exit(1);\n return;\n }\n\n const resolvedVersion = matches[matches.length - 1];\n const nodeBinDir = path.join(versionsDir, resolvedVersion, 'bin');\n\n if (!fs.existsSync(nodeBinDir)) {\n console.log(`No bin directory found for ${resolvedVersion}`);\n exit(1);\n return;\n }\n\n // Get the node shim to copy from\n const nodeShim = path.join(binDir, 'node');\n if (!fs.existsSync(nodeShim)) {\n console.log('Node shim not found. Run: nvu setup');\n exit(1);\n return;\n }\n\n // Scan binaries in Node's bin directory\n const entries = readdirWithTypes(nodeBinDir);\n let created = 0;\n let skipped = 0;\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n const name = entry.name;\n\n // Skip our routing shims (node/npm/npx) - don't overwrite them\n if (name === 'node' || name === 'npm' || name === 'npx') {\n continue;\n }\n\n const shimPath = path.join(binDir, name);\n\n // Skip if shim already exists\n if (fs.existsSync(shimPath)) {\n skipped++;\n continue;\n }\n\n // Copy the node shim\n try {\n const shimContent = fs.readFileSync(nodeShim);\n fs.writeFileSync(shimPath, shimContent);\n fs.chmodSync(shimPath, 493); // 0755\n console.log(`Created shim: ${name}`);\n created++;\n } catch (err) {\n console.error(`Failed to create shim for ${name}: ${(err as Error).message}`);\n }\n }\n\n console.log('');\n console.log(`Done. Created ${created} shims, skipped ${skipped} (already exist).`);\n exit(0);\n}\n"],"names":["setupCmd","__dirname","path","dirname","__filename","url","fileURLToPath","args","binDir","join","storagePath","fs","existsSync","mkdirpSync","hasShimsFlag","i","length","createShimsForGlobalPackages","postinstallPath","execSync","stdio","_err","console","log","exit","defaultPath","defaultVersion","readFileSync","trim","versionsDir","matches","findInstalledVersions","resolvedVersion","nodeBinDir","nodeShim","entries","readdirWithTypes","created","skipped","entry","name","shimPath","shimContent","writeFileSync","chmodSync","err","error","message"],"mappings":";;;;+BAWA;;;;;CAKC,GACD;;;eAAwBA;;;6BAjBC;iEACR;yDACF;2DACE;0DACD;wBAC6B;2BACjB;uCACU;;;;;;AAEtC,IAAMC,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAQnF,SAASN,SAASO,IAAc;IAC7C,IAAMC,SAASN,aAAI,CAACO,IAAI,CAACC,wBAAW,EAAE;IAEtC,qBAAqB;IACrB,IAAI,CAACC,WAAE,CAACC,UAAU,CAACF,wBAAW,GAAG;QAC/BG,IAAAA,oBAAU,EAACH,wBAAW;IACxB;IACA,IAAI,CAACC,WAAE,CAACC,UAAU,CAACJ,SAAS;QAC1BK,IAAAA,oBAAU,EAACL;IACb;IAEA,yBAAyB;IACzB,IAAIM,eAAe;IACnB,IAAK,IAAIC,IAAI,GAAGA,IAAIR,KAAKS,MAAM,EAAED,IAAK;QACpC,IAAIR,IAAI,CAACQ,EAAE,KAAK,WAAW;YACzBD,eAAe;YACf;QACF;IACF;IAEA,IAAIA,cAAc;QAChBG,6BAA6BT;QAC7B;IACF;IAEA,sDAAsD;IACtD,IAAMU,kBAAkBhB,aAAI,CAACO,IAAI,CAACR,WAAW,MAAM,MAAM,MAAM,WAAW;IAE1E,IAAIU,WAAE,CAACC,UAAU,CAACM,kBAAkB;QAClC,6BAA6B;QAC7B,IAAI;YACFC,IAAAA,uBAAQ,EAAC,AAAC,SAAwB,OAAhBD,iBAAgB,MAAI;gBAAEE,OAAO;YAAU;QAC3D,EAAE,OAAOC,MAAM;QACb,gDAAgD;QAClD;IACF,OAAO;QACLC,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;IACP;AACF;AAEA;;CAEC,GACD,SAASP,6BAA6BT,MAAc;IAClD,uBAAuB;IACvB,IAAMiB,cAAcvB,aAAI,CAACO,IAAI,CAACC,wBAAW,EAAE;IAC3C,IAAI,CAACC,WAAE,CAACC,UAAU,CAACa,cAAc;QAC/BH,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAME,iBAAiBf,WAAE,CAACgB,YAAY,CAACF,aAAa,QAAQG,IAAI;IAChE,IAAMC,cAAc3B,aAAI,CAACO,IAAI,CAACC,wBAAW,EAAE;IAE3C,2BAA2B;IAC3B,IAAMoB,UAAUC,IAAAA,8CAAqB,EAACF,aAAaH;IACnD,IAAII,QAAQd,MAAM,KAAK,GAAG;QACxBM,QAAQC,GAAG,CAAC,AAAC,mBAAiC,OAAfG,gBAAe;QAC9CF,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAMQ,kBAAkBF,OAAO,CAACA,QAAQd,MAAM,GAAG,EAAE;IACnD,IAAMiB,aAAa/B,aAAI,CAACO,IAAI,CAACoB,aAAaG,iBAAiB;IAE3D,IAAI,CAACrB,WAAE,CAACC,UAAU,CAACqB,aAAa;QAC9BX,QAAQC,GAAG,CAAC,AAAC,8BAA6C,OAAhBS;QAC1CR,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,iCAAiC;IACjC,IAAMU,WAAWhC,aAAI,CAACO,IAAI,CAACD,QAAQ;IACnC,IAAI,CAACG,WAAE,CAACC,UAAU,CAACsB,WAAW;QAC5BZ,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,wCAAwC;IACxC,IAAMW,UAAUC,IAAAA,0BAAgB,EAACH;IACjC,IAAII,UAAU;IACd,IAAIC,UAAU;IAEd,IAAK,IAAIvB,IAAI,GAAGA,IAAIoB,QAAQnB,MAAM,EAAED,IAAK;QACvC,IAAMwB,QAAQJ,OAAO,CAACpB,EAAE;QACxB,IAAMyB,OAAOD,MAAMC,IAAI;QAEvB,+DAA+D;QAC/D,IAAIA,SAAS,UAAUA,SAAS,SAASA,SAAS,OAAO;YACvD;QACF;QAEA,IAAMC,WAAWvC,aAAI,CAACO,IAAI,CAACD,QAAQgC;QAEnC,8BAA8B;QAC9B,IAAI7B,WAAE,CAACC,UAAU,CAAC6B,WAAW;YAC3BH;YACA;QACF;QAEA,qBAAqB;QACrB,IAAI;YACF,IAAMI,cAAc/B,WAAE,CAACgB,YAAY,CAACO;YACpCvB,WAAE,CAACgC,aAAa,CAACF,UAAUC;YAC3B/B,WAAE,CAACiC,SAAS,CAACH,UAAU,MAAM,OAAO;YACpCnB,QAAQC,GAAG,CAAC,AAAC,iBAAqB,OAALiB;YAC7BH;QACF,EAAE,OAAOQ,KAAK;YACZvB,QAAQwB,KAAK,CAAC,AAAC,6BAAqC,OAATN,MAAK,MAA2B,OAAvB,AAACK,IAAcE,OAAO;QAC5E;IACF;IAEAzB,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,AAAC,iBAA0Ce,OAA1BD,SAAQ,oBAA0B,OAARC,SAAQ;IAC/Dd,IAAAA,mBAAI,EAAC;AACP"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/uninstall.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { rmSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions, getAllInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu uninstall <version>\n *\n * Remove an installed Node version.\n */\nexport default function uninstallCmd(args: string[]): void {\n if (args.length === 0) {\n console.log('Usage: nvu uninstall <version>');\n console.log('Example: nvu uninstall 20');\n console.log(' nvu uninstall v20.19.6');\n exit(1);\n return;\n }\n\n var version = args[0].trim();\n var versionsPath = path.join(storagePath, 'installed');\n\n // Find all matching installed versions\n var matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length === 0) {\n console.log(`Node ${version} is not installed.`);\n console.log('');\n console.log('Installed versions:');\n listInstalledVersions(versionsPath);\n exit(1);\n return;\n }\n\n if (matches.length > 1) {\n console.log(`Multiple versions match \"${version}\":`);\n for (var i = 0; i < matches.length; i++) {\n console.log(` ${matches[i]}`);\n }\n console.log('');\n console.log('Please specify the exact version to uninstall.');\n exit(1);\n return;\n }\n\n var installedVersion = matches[0];\n var versionPath = path.join(versionsPath, installedVersion);\n\n // Check if this is the current default (exact match since we store exact versions)\n var defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n var defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n\n // Normalize both for comparison\n var normalizedDefault = defaultVersion.replace(/^v/, '');\n var normalizedInstalled = installedVersion.replace(/^v/, '');\n\n if (normalizedInstalled === normalizedDefault) {\n console.error(`Cannot uninstall default version ${installedVersion}.`);\n console.error('');\n console.error('Change your default first:');\n console.error(' nvu default <version>');\n exit(1);\n return;\n }\n }\n\n // Remove the version directory\n try {\n rmSync(versionPath);\n console.log(`Removed Node ${installedVersion}`);\n } catch (err) {\n console.error(`Failed to remove Node ${installedVersion}:`, (err as Error).message);\n exit(1);\n return;\n }\n\n exit(0);\n}\n\n/**\n * List installed versions for user reference\n */\nfunction listInstalledVersions(versionsPath: string): void {\n var versions = getAllInstalledVersions(versionsPath);\n\n if (versions.length === 0) {\n console.log(' (none)');\n } else {\n for (var i = 0; i < versions.length; i++) {\n console.log(` ${versions[i]}`);\n }\n }\n}\n"],"names":["uninstallCmd","args","length","console","log","exit","version","trim","versionsPath","path","join","storagePath","matches","findInstalledVersions","listInstalledVersions","i","installedVersion","versionPath","defaultPath","fs","existsSync","defaultVersion","readFileSync","normalizedDefault","replace","normalizedInstalled","error","rmSync","err","message","versions","getAllInstalledVersions"],"mappings":";;;;+BAOA;;;;CAIC,GACD;;;eAAwBA;;;iEAZP;yDACF;2DACE;wBACM;2BACK;uCACmC;;;;;;AAOhD,SAASA,aAAaC,IAAc;IACjD,IAAIA,KAAKC,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAIC,UAAUL,IAAI,CAAC,EAAE,CAACM,IAAI;IAC1B,IAAIC,eAAeC,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAE1C,uCAAuC;IACvC,IAAIC,UAAUC,IAAAA,8CAAqB,EAACL,cAAcF;IAElD,IAAIM,QAAQV,MAAM,KAAK,GAAG;QACxBC,QAAQC,GAAG,CAAC,AAAC,QAAe,OAARE,SAAQ;QAC5BH,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZU,sBAAsBN;QACtBH,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAIO,QAAQV,MAAM,GAAG,GAAG;QACtBC,QAAQC,GAAG,CAAC,AAAC,4BAAmC,OAARE,SAAQ;QAChD,IAAK,IAAIS,IAAI,GAAGA,IAAIH,QAAQV,MAAM,EAAEa,IAAK;YACvCZ,QAAQC,GAAG,CAAC,AAAC,KAAe,OAAXQ,OAAO,CAACG,EAAE;QAC7B;QACAZ,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAIW,mBAAmBJ,OAAO,CAAC,EAAE;IACjC,IAAIK,cAAcR,aAAI,CAACC,IAAI,CAACF,cAAcQ;IAE1C,mFAAmF;IACnF,IAAIE,cAAcT,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IACzC,IAAIQ,WAAE,CAACC,UAAU,CAACF,cAAc;QAC9B,IAAIG,iBAAiBF,WAAE,CAACG,YAAY,CAACJ,aAAa,QAAQX,IAAI;QAE9D,gCAAgC;QAChC,IAAIgB,oBAAoBF,eAAeG,OAAO,CAAC,MAAM;QACrD,IAAIC,sBAAsBT,iBAAiBQ,OAAO,CAAC,MAAM;QAEzD,IAAIC,wBAAwBF,mBAAmB;YAC7CpB,QAAQuB,KAAK,CAAC,AAAC,oCAAoD,OAAjBV,kBAAiB;YACnEb,QAAQuB,KAAK,CAAC;YACdvB,QAAQuB,KAAK,CAAC;YACdvB,QAAQuB,KAAK,CAAC;YACdrB,IAAAA,mBAAI,EAAC;YACL;QACF;IACF;IAEA,+BAA+B;IAC/B,IAAI;QACFsB,IAAAA,gBAAM,EAACV;QACPd,QAAQC,GAAG,CAAC,AAAC,gBAAgC,OAAjBY;IAC9B,EAAE,OAAOY,KAAK;QACZzB,QAAQuB,KAAK,CAAC,AAAC,yBAAyC,OAAjBV,kBAAiB,MAAI,AAACY,IAAcC,OAAO;QAClFxB,IAAAA,mBAAI,EAAC;QACL;IACF;IAEAA,IAAAA,mBAAI,EAAC;AACP;AAEA;;CAEC,GACD,SAASS,sBAAsBN,YAAoB;IACjD,IAAIsB,WAAWC,IAAAA,gDAAuB,EAACvB;IAEvC,IAAIsB,SAAS5B,MAAM,KAAK,GAAG;QACzBC,QAAQC,GAAG,CAAC;IACd,OAAO;QACL,IAAK,IAAIW,IAAI,GAAGA,IAAIe,SAAS5B,MAAM,EAAEa,IAAK;YACxCZ,QAAQC,GAAG,CAAC,AAAC,KAAgB,OAAZ0B,QAAQ,CAACf,EAAE;QAC9B;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/uninstall.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { rmSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions, getAllInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu uninstall <version>\n *\n * Remove an installed Node version.\n */\nexport default function uninstallCmd(args: string[]): void {\n if (args.length === 0) {\n console.log('Usage: nvu uninstall <version>');\n console.log('Example: nvu uninstall 20');\n console.log(' nvu uninstall v20.19.6');\n exit(1);\n return;\n }\n\n const version = args[0].trim();\n const versionsPath = path.join(storagePath, 'installed');\n\n // Find all matching installed versions\n const matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length === 0) {\n console.log(`Node ${version} is not installed.`);\n console.log('');\n console.log('Installed versions:');\n listInstalledVersions(versionsPath);\n exit(1);\n return;\n }\n\n if (matches.length > 1) {\n console.log(`Multiple versions match \"${version}\":`);\n for (let i = 0; i < matches.length; i++) {\n console.log(` ${matches[i]}`);\n }\n console.log('');\n console.log('Please specify the exact version to uninstall.');\n exit(1);\n return;\n }\n\n const installedVersion = matches[0];\n const versionPath = path.join(versionsPath, installedVersion);\n\n // Check if this is the current default (exact match since we store exact versions)\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n const defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n\n // Normalize both for comparison\n const normalizedDefault = defaultVersion.replace(/^v/, '');\n const normalizedInstalled = installedVersion.replace(/^v/, '');\n\n if (normalizedInstalled === normalizedDefault) {\n console.error(`Cannot uninstall default version ${installedVersion}.`);\n console.error('');\n console.error('Change your default first:');\n console.error(' nvu default <version>');\n exit(1);\n return;\n }\n }\n\n // Remove the version directory\n try {\n rmSync(versionPath);\n console.log(`Removed Node ${installedVersion}`);\n } catch (err) {\n console.error(`Failed to remove Node ${installedVersion}:`, (err as Error).message);\n exit(1);\n return;\n }\n\n exit(0);\n}\n\n/**\n * List installed versions for user reference\n */\nfunction listInstalledVersions(versionsPath: string): void {\n const versions = getAllInstalledVersions(versionsPath);\n\n if (versions.length === 0) {\n console.log(' (none)');\n } else {\n for (let i = 0; i < versions.length; i++) {\n console.log(` ${versions[i]}`);\n }\n }\n}\n"],"names":["uninstallCmd","args","length","console","log","exit","version","trim","versionsPath","path","join","storagePath","matches","findInstalledVersions","listInstalledVersions","i","installedVersion","versionPath","defaultPath","fs","existsSync","defaultVersion","readFileSync","normalizedDefault","replace","normalizedInstalled","error","rmSync","err","message","versions","getAllInstalledVersions"],"mappings":";;;;+BAOA;;;;CAIC,GACD;;;eAAwBA;;;iEAZP;yDACF;2DACE;wBACM;2BACK;uCACmC;;;;;;AAOhD,SAASA,aAAaC,IAAc;IACjD,IAAIA,KAAKC,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAMC,UAAUL,IAAI,CAAC,EAAE,CAACM,IAAI;IAC5B,IAAMC,eAAeC,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAE5C,uCAAuC;IACvC,IAAMC,UAAUC,IAAAA,8CAAqB,EAACL,cAAcF;IAEpD,IAAIM,QAAQV,MAAM,KAAK,GAAG;QACxBC,QAAQC,GAAG,CAAC,AAAC,QAAe,OAARE,SAAQ;QAC5BH,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZU,sBAAsBN;QACtBH,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAIO,QAAQV,MAAM,GAAG,GAAG;QACtBC,QAAQC,GAAG,CAAC,AAAC,4BAAmC,OAARE,SAAQ;QAChD,IAAK,IAAIS,IAAI,GAAGA,IAAIH,QAAQV,MAAM,EAAEa,IAAK;YACvCZ,QAAQC,GAAG,CAAC,AAAC,KAAe,OAAXQ,OAAO,CAACG,EAAE;QAC7B;QACAZ,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAMW,mBAAmBJ,OAAO,CAAC,EAAE;IACnC,IAAMK,cAAcR,aAAI,CAACC,IAAI,CAACF,cAAcQ;IAE5C,mFAAmF;IACnF,IAAME,cAAcT,aAAI,CAACC,IAAI,CAACC,wBAAW,EAAE;IAC3C,IAAIQ,WAAE,CAACC,UAAU,CAACF,cAAc;QAC9B,IAAMG,iBAAiBF,WAAE,CAACG,YAAY,CAACJ,aAAa,QAAQX,IAAI;QAEhE,gCAAgC;QAChC,IAAMgB,oBAAoBF,eAAeG,OAAO,CAAC,MAAM;QACvD,IAAMC,sBAAsBT,iBAAiBQ,OAAO,CAAC,MAAM;QAE3D,IAAIC,wBAAwBF,mBAAmB;YAC7CpB,QAAQuB,KAAK,CAAC,AAAC,oCAAoD,OAAjBV,kBAAiB;YACnEb,QAAQuB,KAAK,CAAC;YACdvB,QAAQuB,KAAK,CAAC;YACdvB,QAAQuB,KAAK,CAAC;YACdrB,IAAAA,mBAAI,EAAC;YACL;QACF;IACF;IAEA,+BAA+B;IAC/B,IAAI;QACFsB,IAAAA,gBAAM,EAACV;QACPd,QAAQC,GAAG,CAAC,AAAC,gBAAgC,OAAjBY;IAC9B,EAAE,OAAOY,KAAK;QACZzB,QAAQuB,KAAK,CAAC,AAAC,yBAAyC,OAAjBV,kBAAiB,MAAI,AAACY,IAAcC,OAAO;QAClFxB,IAAAA,mBAAI,EAAC;QACL;IACF;IAEAA,IAAAA,mBAAI,EAAC;AACP;AAEA;;CAEC,GACD,SAASS,sBAAsBN,YAAoB;IACjD,IAAMsB,WAAWC,IAAAA,gDAAuB,EAACvB;IAEzC,IAAIsB,SAAS5B,MAAM,KAAK,GAAG;QACzBC,QAAQC,GAAG,CAAC;IACd,OAAO;QACL,IAAK,IAAIW,IAAI,GAAGA,IAAIe,SAAS5B,MAAM,EAAEa,IAAK;YACxCZ,QAAQC,GAAG,CAAC,AAAC,KAAgB,OAAZ0B,QAAQ,CAACf,EAAE;QAC9B;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/which.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu which\n *\n * Show which Node binary would be used based on current directory.\n * This simulates what the nvu binary would do.\n */\nexport default function whichCmd(_args: string[]): void {\n const cwd = process.cwd();\n\n // Resolve version using the same logic as the nvu binary\n const version = resolveVersion(cwd);\n\n if (!version) {\n console.log('No Node version configured for this directory.');\n console.log('');\n console.log('To configure a version:');\n console.log(' nvu local <version> - Set version for this project');\n console.log(' nvu default <version> - Set global default');\n exit(1);\n return;\n }\n\n // Resolve partial version to exact installed version\n var versionsPath = path.join(storagePath, 'installed');\n var matches = findInstalledVersions(versionsPath, version);\n var resolvedVersion = matches.length > 0 ? matches[matches.length - 1] : null;\n\n // Display version (show resolution if different)\n if (resolvedVersion && resolvedVersion !== version && resolvedVersion !== `v${version}`) {\n console.log(`Version: ${version} \\u2192 ${resolvedVersion}`);\n } else {\n console.log(`Version: ${resolvedVersion || version}`);\n }\n console.log(`Source: ${getVersionSource(cwd)}`);\n\n if (resolvedVersion) {\n var actualVersionPath = path.join(versionsPath, resolvedVersion);\n var nodePath = path.join(actualVersionPath, 'bin', 'node');\n console.log(`Binary: ${nodePath}`);\n if (fs.existsSync(nodePath)) {\n console.log('Status: Installed');\n } else {\n console.log('Status: Directory exists but binary not found');\n }\n } else {\n console.log(`Status: Not installed (run: nvu install ${version})`);\n }\n\n exit(0);\n}\n\n/**\n * Resolve version from config files (mirrors nvu binary logic)\n */\nfunction resolveVersion(cwd: string): string | null {\n // Walk up directories looking for .nvurc or .nvmrc\n let dir = cwd;\n while (true) {\n // Check .nvurc first\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return fs.readFileSync(nvurcPath, 'utf8').trim();\n }\n\n // Check .nvmrc\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return fs.readFileSync(nvmrcPath, 'utf8').trim();\n }\n\n // Move to parent\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n // Check global default\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return fs.readFileSync(defaultPath, 'utf8').trim();\n }\n\n return null;\n}\n\n/**\n * Determine the source of the version (for display)\n */\nfunction getVersionSource(cwd: string): string {\n let dir = cwd;\n while (true) {\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return nvurcPath;\n }\n\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return nvmrcPath;\n }\n\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return `${defaultPath} (global default)`;\n }\n\n return 'none';\n}\n"],"names":["whichCmd","_args","cwd","process","version","resolveVersion","console","log","exit","versionsPath","path","join","storagePath","matches","findInstalledVersions","resolvedVersion","length","getVersionSource","actualVersionPath","nodePath","fs","existsSync","dir","nvurcPath","readFileSync","trim","nvmrcPath","parent","dirname","defaultPath"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/which.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu which\n *\n * Show which Node binary would be used based on current directory.\n * This simulates what the nvu binary would do.\n */\nexport default function whichCmd(_args: string[]): void {\n const cwd = process.cwd();\n\n // Resolve version using the same logic as the nvu binary\n const version = resolveVersion(cwd);\n\n if (!version) {\n console.log('No Node version configured for this directory.');\n console.log('');\n console.log('To configure a version:');\n console.log(' nvu local <version> - Set version for this project');\n console.log(' nvu default <version> - Set global default');\n exit(1);\n return;\n }\n\n // Resolve partial version to exact installed version\n const versionsPath = path.join(storagePath, 'installed');\n const matches = findInstalledVersions(versionsPath, version);\n const resolvedVersion = matches.length > 0 ? matches[matches.length - 1] : null;\n\n // Display version (show resolution if different)\n if (resolvedVersion && resolvedVersion !== version && resolvedVersion !== `v${version}`) {\n console.log(`Version: ${version} \\u2192 ${resolvedVersion}`);\n } else {\n console.log(`Version: ${resolvedVersion || version}`);\n }\n console.log(`Source: ${getVersionSource(cwd)}`);\n\n if (resolvedVersion) {\n const actualVersionPath = path.join(versionsPath, resolvedVersion);\n const nodePath = path.join(actualVersionPath, 'bin', 'node');\n console.log(`Binary: ${nodePath}`);\n if (fs.existsSync(nodePath)) {\n console.log('Status: Installed');\n } else {\n console.log('Status: Directory exists but binary not found');\n }\n } else {\n console.log(`Status: Not installed (run: nvu install ${version})`);\n }\n\n exit(0);\n}\n\n/**\n * Resolve version from config files (mirrors nvu binary logic)\n */\nfunction resolveVersion(cwd: string): string | null {\n // Walk up directories looking for .nvurc or .nvmrc\n let dir = cwd;\n while (true) {\n // Check .nvurc first\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return fs.readFileSync(nvurcPath, 'utf8').trim();\n }\n\n // Check .nvmrc\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return fs.readFileSync(nvmrcPath, 'utf8').trim();\n }\n\n // Move to parent\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n // Check global default\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return fs.readFileSync(defaultPath, 'utf8').trim();\n }\n\n return null;\n}\n\n/**\n * Determine the source of the version (for display)\n */\nfunction getVersionSource(cwd: string): string {\n let dir = cwd;\n while (true) {\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return nvurcPath;\n }\n\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return nvmrcPath;\n }\n\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return `${defaultPath} (global default)`;\n }\n\n return 'none';\n}\n"],"names":["whichCmd","_args","cwd","process","version","resolveVersion","console","log","exit","versionsPath","path","join","storagePath","matches","findInstalledVersions","resolvedVersion","length","getVersionSource","actualVersionPath","nodePath","fs","existsSync","dir","nvurcPath","readFileSync","trim","nvmrcPath","parent","dirname","defaultPath"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport fs from 'fs';\nimport _Module from 'module';\nimport os from 'os';\nimport path from 'path';\n\n// Use existing require in CJS, or createRequire in ESM (Node 12.2+)\nvar _require = typeof require === 'undefined' ? _Module.createRequire(import.meta.url) : require;\n\nvar hasHomedir = typeof os.homedir === 'function';\n\nexport function homedir(): string {\n if (hasHomedir) {\n return os.homedir();\n }\n var home = _require('homedir-polyfill');\n return home();\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nvar hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n var len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * Recursive mkdir for Node.js 0.8+\n */\nexport function mkdirpSync(dir: string): void {\n var mkdirp = _require('mkdirp-classic');\n mkdirp.sync(dir);\n}\n\n/**\n * Recursive rm for Node.js 0.8+\n */\nexport function rmSync(dir: string): void {\n var safeRmSync = _require('fs-remove-compat').safeRmSync;\n safeRmSync(dir);\n}\n\n/**\n * Read directory entries with types for Node.js 0.8+\n * Returns array of {name, isDirectory()}\n */\nexport interface DirEntry {\n name: string;\n isDirectory(): boolean;\n}\n\nexport function readdirWithTypes(dir: string): DirEntry[] {\n var names = fs.readdirSync(dir);\n return names.map((name) => {\n var fullPath = path.join(dir, name);\n var stat: fs.Stats;\n try {\n stat = fs.statSync(fullPath);\n } catch (_e) {\n // If stat fails, treat as non-directory\n return { name: name, isDirectory: () => false };\n }\n return {\n name: name,\n isDirectory: () => stat.isDirectory(),\n };\n });\n}\n"],"names":["homedir","mkdirpSync","readdirWithTypes","rmSync","stringEndsWith","_require","require","_Module","createRequire","hasHomedir","os","home","hasEndsWith","String","prototype","endsWith","str","search","position","len","undefined","length","lastIndexOf","dir","mkdirp","sync","safeRmSync","names","fs","readdirSync","map","name","fullPath","path","join","stat","statSync","_e","isDirectory"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QAWeA;eAAAA;;QA0BAC;eAAAA;;QAsBAC;eAAAA;;QAdAC;eAAAA;;QAnBAC;eAAAA;;;yDAzBD;6DACK;yDACL;2DACE;;;;;;AAEjB,oEAAoE;AACpE,IAAIC,WAAW,OAAOC,YAAY,cAAcC,eAAO,CAACC,aAAa,CAAC,uDAAmBF;AAEzF,IAAIG,aAAa,OAAOC,WAAE,CAACV,OAAO,KAAK;AAEhC,SAASA;IACd,IAAIS,YAAY;QACd,OAAOC,WAAE,CAACV,OAAO;IACnB;IACA,IAAIW,OAAON,SAAS;IACpB,OAAOM;AACT;AAEA;;;;CAIC,GACD,IAAIC,cAAc,OAAOC,OAAOC,SAAS,CAACC,QAAQ,KAAK;AAEhD,SAASX,eAAeY,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIN,aAAa;QACf,OAAOI,IAAID,QAAQ,CAACE,QAAQC;IAC9B;IACA,IAAIC,MAAMD,aAAaE,YAAYJ,IAAIK,MAAM,GAAGH;IAChD,OAAOF,IAAIM,WAAW,CAACL,YAAYE,MAAMF,OAAOI,MAAM;AACxD;AAKO,SAASpB,WAAWsB,GAAW;IACpC,IAAIC,SAASnB,SAAS;IACtBmB,OAAOC,IAAI,CAACF;AACd;AAKO,SAASpB,OAAOoB,GAAW;IAChC,IAAIG,aAAarB,SAAS,oBAAoBqB,UAAU;IACxDA,WAAWH;AACb;AAWO,SAASrB,iBAAiBqB,GAAW;IAC1C,IAAII,QAAQC,WAAE,CAACC,WAAW,CAACN;IAC3B,OAAOI,MAAMG,GAAG,CAAC,SAACC;QAChB,IAAIC,WAAWC,aAAI,CAACC,IAAI,CAACX,KAAKQ;QAC9B,IAAII;QACJ,IAAI;YACFA,OAAOP,WAAE,CAACQ,QAAQ,CAACJ;QACrB,EAAE,OAAOK,IAAI;YACX,wCAAwC;YACxC,OAAO;gBAAEN,MAAMA;gBAAMO,aAAa;2BAAM;;YAAM;QAChD;QACA,OAAO;YACLP,MAAMA;YACNO,aAAa;uBAAMH,KAAKG,WAAW;;QACrC;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport fs from 'fs';\nimport _Module from 'module';\nimport os from 'os';\nimport path from 'path';\n\n// Use existing require in CJS, or createRequire in ESM (Node 12.2+)\nconst _require = typeof require === 'undefined' ? _Module.createRequire(import.meta.url) : require;\n\nconst hasHomedir = typeof os.homedir === 'function';\n\nexport function homedir(): string {\n if (hasHomedir) {\n return os.homedir();\n }\n const home = _require('homedir-polyfill');\n return home();\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nconst hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n const len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * Recursive mkdir for Node.js 0.8+\n */\nexport function mkdirpSync(dir: string): void {\n const mkdirp = _require('mkdirp-classic');\n mkdirp.sync(dir);\n}\n\n/**\n * Recursive rm for Node.js 0.8+\n */\nexport function rmSync(dir: string): void {\n const safeRmSync = _require('fs-remove-compat').safeRmSync;\n safeRmSync(dir);\n}\n\n/**\n * Read directory entries with types for Node.js 0.8+\n * Returns array of {name, isDirectory()}\n */\nexport interface DirEntry {\n name: string;\n isDirectory(): boolean;\n}\n\nexport function readdirWithTypes(dir: string): DirEntry[] {\n const names = fs.readdirSync(dir);\n return names.map((name) => {\n const fullPath = path.join(dir, name);\n let stat: fs.Stats;\n try {\n stat = fs.statSync(fullPath);\n } catch (_e) {\n // If stat fails, treat as non-directory\n return { name: name, isDirectory: () => false };\n }\n return {\n name: name,\n isDirectory: () => stat.isDirectory(),\n };\n });\n}\n"],"names":["homedir","mkdirpSync","readdirWithTypes","rmSync","stringEndsWith","_require","require","_Module","createRequire","hasHomedir","os","home","hasEndsWith","String","prototype","endsWith","str","search","position","len","undefined","length","lastIndexOf","dir","mkdirp","sync","safeRmSync","names","fs","readdirSync","map","name","fullPath","path","join","stat","statSync","_e","isDirectory"],"mappings":"AAAA;;;CAGC;;;;;;;;;;;QAWeA;eAAAA;;QA0BAC;eAAAA;;QAsBAC;eAAAA;;QAdAC;eAAAA;;QAnBAC;eAAAA;;;yDAzBD;6DACK;yDACL;2DACE;;;;;;AAEjB,oEAAoE;AACpE,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAO,CAACC,aAAa,CAAC,uDAAmBF;AAE3F,IAAMG,aAAa,OAAOC,WAAE,CAACV,OAAO,KAAK;AAElC,SAASA;IACd,IAAIS,YAAY;QACd,OAAOC,WAAE,CAACV,OAAO;IACnB;IACA,IAAMW,OAAON,SAAS;IACtB,OAAOM;AACT;AAEA;;;;CAIC,GACD,IAAMC,cAAc,OAAOC,OAAOC,SAAS,CAACC,QAAQ,KAAK;AAElD,SAASX,eAAeY,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIN,aAAa;QACf,OAAOI,IAAID,QAAQ,CAACE,QAAQC;IAC9B;IACA,IAAMC,MAAMD,aAAaE,YAAYJ,IAAIK,MAAM,GAAGH;IAClD,OAAOF,IAAIM,WAAW,CAACL,YAAYE,MAAMF,OAAOI,MAAM;AACxD;AAKO,SAASpB,WAAWsB,GAAW;IACpC,IAAMC,SAASnB,SAAS;IACxBmB,OAAOC,IAAI,CAACF;AACd;AAKO,SAASpB,OAAOoB,GAAW;IAChC,IAAMG,aAAarB,SAAS,oBAAoBqB,UAAU;IAC1DA,WAAWH;AACb;AAWO,SAASrB,iBAAiBqB,GAAW;IAC1C,IAAMI,QAAQC,WAAE,CAACC,WAAW,CAACN;IAC7B,OAAOI,MAAMG,GAAG,CAAC,SAACC;QAChB,IAAMC,WAAWC,aAAI,CAACC,IAAI,CAACX,KAAKQ;QAChC,IAAII;QACJ,IAAI;YACFA,OAAOP,WAAE,CAACQ,QAAQ,CAACJ;QACrB,EAAE,OAAOK,IAAI;YACX,wCAAwC;YACxC,OAAO;gBAAEN,MAAMA;gBAAMO,aAAa;2BAAM;;YAAM;QAChD;QACA,OAAO;YACLP,MAAMA;YACNO,aAAa;uBAAMH,KAAKG,WAAW;;QACrC;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/findInstalledVersions.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\n\n/**\n * Compare two semver version strings (e.g., \"20.19.0\" vs \"20.9.1\")\n * Returns: negative if a < b, positive if a > b, 0 if equal\n */\nfunction compareVersions(a: string, b: string): number {\n var aParts = a.replace(/^v/, '').split('.');\n var bParts = b.replace(/^v/, '').split('.');\n var len = Math.max(aParts.length, bParts.length);\n\n for (var i = 0; i < len; i++) {\n var aNum = parseInt(aParts[i], 10) || 0;\n var bNum = parseInt(bParts[i], 10) || 0;\n if (aNum !== bNum) {\n return aNum - bNum;\n }\n }\n return 0;\n}\n\n/**\n * Find all installed versions matching the given version string\n * Results are sorted in ascending semver order (lowest first, highest last)\n */\nexport function findInstalledVersions(versionsPath: string, version: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n var normalizedVersion = version.replace(/^v/, '');\n var matches: string[] = [];\n\n // Try exact matches first\n var exactMatches = [version, `v${normalizedVersion}`, normalizedVersion];\n for (var i = 0; i < exactMatches.length; i++) {\n var v = exactMatches[i];\n var versionPath = path.join(versionsPath, v);\n if (fs.existsSync(versionPath) && fs.statSync(versionPath).isDirectory()) {\n if (matches.indexOf(v) === -1) {\n matches.push(v);\n }\n }\n }\n\n // If we have an exact match, return just that\n if (matches.length > 0) {\n return matches;\n }\n\n // Try partial match (e.g., \"20\" matches \"v20.19.6\")\n var entries = readdirWithTypes(versionsPath);\n for (var j = 0; j < entries.length; j++) {\n var entry = entries[j];\n if (!entry.isDirectory()) continue;\n var dirVersion = entry.name.replace(/^v/, '');\n if (dirVersion.indexOf(`${normalizedVersion}.`) === 0) {\n matches.push(entry.name);\n }\n }\n\n // Sort by semver (ascending) so highest version is last\n matches.sort(compareVersions);\n\n return matches;\n}\n\n/**\n * Get all installed versions\n */\nexport function getAllInstalledVersions(versionsPath: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n var entries = readdirWithTypes(versionsPath);\n var versions: string[] = [];\n for (var i = 0; i < entries.length; i++) {\n if (entries[i].isDirectory()) {\n versions.push(entries[i].name);\n }\n }\n\n return versions;\n}\n"],"names":["findInstalledVersions","getAllInstalledVersions","compareVersions","a","b","aParts","replace","split","bParts","len","Math","max","length","i","aNum","parseInt","bNum","versionsPath","version","fs","existsSync","normalizedVersion","matches","exactMatches","v","versionPath","path","join","statSync","isDirectory","indexOf","push","entries","readdirWithTypes","j","entry","dirVersion","name","sort","versions"],"mappings":";;;;;;;;;;;QA2BgBA;eAAAA;;QA6CAC;eAAAA;;;yDAxED;2DACE;wBACgB;;;;;;AAEjC;;;CAGC,GACD,SAASC,gBAAgBC,CAAS,EAAEC,CAAS;IAC3C,IAAIC,SAASF,EAAEG,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACvC,IAAIC,SAASJ,EAAEE,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACvC,IAAIE,MAAMC,KAAKC,GAAG,CAACN,OAAOO,MAAM,EAAEJ,OAAOI,MAAM;IAE/C,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,KAAKI,IAAK;QAC5B,IAAIC,OAAOC,SAASV,MAAM,CAACQ,EAAE,EAAE,OAAO;QACtC,IAAIG,OAAOD,SAASP,MAAM,CAACK,EAAE,EAAE,OAAO;QACtC,IAAIC,SAASE,MAAM;YACjB,OAAOF,OAAOE;QAChB;IACF;IACA,OAAO;AACT;AAMO,SAAShB,sBAAsBiB,YAAoB,EAAEC,OAAe;IACzE,IAAI,CAACC,WAAE,CAACC,UAAU,CAACH,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,IAAII,oBAAoBH,QAAQZ,OAAO,CAAC,MAAM;IAC9C,IAAIgB,UAAoB,EAAE;IAE1B,0BAA0B;IAC1B,IAAIC,eAAe;QAACL;QAAU,IAAqB,OAAlBG;QAAqBA;KAAkB;IACxE,IAAK,IAAIR,IAAI,GAAGA,IAAIU,aAAaX,MAAM,EAAEC,IAAK;QAC5C,IAAIW,IAAID,YAAY,CAACV,EAAE;QACvB,IAAIY,cAAcC,aAAI,CAACC,IAAI,CAACV,cAAcO;QAC1C,IAAIL,WAAE,CAACC,UAAU,CAACK,gBAAgBN,WAAE,CAACS,QAAQ,CAACH,aAAaI,WAAW,IAAI;YACxE,IAAIP,QAAQQ,OAAO,CAACN,OAAO,CAAC,GAAG;gBAC7BF,QAAQS,IAAI,CAACP;YACf;QACF;IACF;IAEA,8CAA8C;IAC9C,IAAIF,QAAQV,MAAM,GAAG,GAAG;QACtB,OAAOU;IACT;IAEA,oDAAoD;IACpD,IAAIU,UAAUC,IAAAA,0BAAgB,EAAChB;IAC/B,IAAK,IAAIiB,IAAI,GAAGA,IAAIF,QAAQpB,MAAM,EAAEsB,IAAK;QACvC,IAAIC,QAAQH,OAAO,CAACE,EAAE;QACtB,IAAI,CAACC,MAAMN,WAAW,IAAI;QAC1B,IAAIO,aAAaD,MAAME,IAAI,CAAC/B,OAAO,CAAC,MAAM;QAC1C,IAAI8B,WAAWN,OAAO,CAAC,AAAC,GAAoB,OAAlBT,mBAAkB,UAAQ,GAAG;YACrDC,QAAQS,IAAI,CAACI,MAAME,IAAI;QACzB;IACF;IAEA,wDAAwD;IACxDf,QAAQgB,IAAI,CAACpC;IAEb,OAAOoB;AACT;AAKO,SAASrB,wBAAwBgB,YAAoB;IAC1D,IAAI,CAACE,WAAE,CAACC,UAAU,CAACH,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,IAAIe,UAAUC,IAAAA,0BAAgB,EAAChB;IAC/B,IAAIsB,WAAqB,EAAE;IAC3B,IAAK,IAAI1B,IAAI,GAAGA,IAAImB,QAAQpB,MAAM,EAAEC,IAAK;QACvC,IAAImB,OAAO,CAACnB,EAAE,CAACgB,WAAW,IAAI;YAC5BU,SAASR,IAAI,CAACC,OAAO,CAACnB,EAAE,CAACwB,IAAI;QAC/B;IACF;IAEA,OAAOE;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/findInstalledVersions.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\n\n/**\n * Compare two semver version strings (e.g., \"20.19.0\" vs \"20.9.1\")\n * Returns: negative if a < b, positive if a > b, 0 if equal\n */\nfunction compareVersions(a: string, b: string): number {\n const aParts = a.replace(/^v/, '').split('.');\n const bParts = b.replace(/^v/, '').split('.');\n const len = Math.max(aParts.length, bParts.length);\n\n for (let i = 0; i < len; i++) {\n const aNum = parseInt(aParts[i], 10) || 0;\n const bNum = parseInt(bParts[i], 10) || 0;\n if (aNum !== bNum) {\n return aNum - bNum;\n }\n }\n return 0;\n}\n\n/**\n * Find all installed versions matching the given version string\n * Results are sorted in ascending semver order (lowest first, highest last)\n */\nexport function findInstalledVersions(versionsPath: string, version: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n const normalizedVersion = version.replace(/^v/, '');\n const matches: string[] = [];\n\n // Try exact matches first\n const exactMatches = [version, `v${normalizedVersion}`, normalizedVersion];\n for (let i = 0; i < exactMatches.length; i++) {\n const v = exactMatches[i];\n const versionPath = path.join(versionsPath, v);\n if (fs.existsSync(versionPath) && fs.statSync(versionPath).isDirectory()) {\n if (matches.indexOf(v) === -1) {\n matches.push(v);\n }\n }\n }\n\n // If we have an exact match, return just that\n if (matches.length > 0) {\n return matches;\n }\n\n // Try partial match (e.g., \"20\" matches \"v20.19.6\")\n const entries = readdirWithTypes(versionsPath);\n for (let j = 0; j < entries.length; j++) {\n const entry = entries[j];\n if (!entry.isDirectory()) continue;\n const dirVersion = entry.name.replace(/^v/, '');\n if (dirVersion.indexOf(`${normalizedVersion}.`) === 0) {\n matches.push(entry.name);\n }\n }\n\n // Sort by semver (ascending) so highest version is last\n matches.sort(compareVersions);\n\n return matches;\n}\n\n/**\n * Get all installed versions\n */\nexport function getAllInstalledVersions(versionsPath: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n const entries = readdirWithTypes(versionsPath);\n const versions: string[] = [];\n for (let i = 0; i < entries.length; i++) {\n if (entries[i].isDirectory()) {\n versions.push(entries[i].name);\n }\n }\n\n return versions;\n}\n"],"names":["findInstalledVersions","getAllInstalledVersions","compareVersions","a","b","aParts","replace","split","bParts","len","Math","max","length","i","aNum","parseInt","bNum","versionsPath","version","fs","existsSync","normalizedVersion","matches","exactMatches","v","versionPath","path","join","statSync","isDirectory","indexOf","push","entries","readdirWithTypes","j","entry","dirVersion","name","sort","versions"],"mappings":";;;;;;;;;;;QA2BgBA;eAAAA;;QA6CAC;eAAAA;;;yDAxED;2DACE;wBACgB;;;;;;AAEjC;;;CAGC,GACD,SAASC,gBAAgBC,CAAS,EAAEC,CAAS;IAC3C,IAAMC,SAASF,EAAEG,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACzC,IAAMC,SAASJ,EAAEE,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACzC,IAAME,MAAMC,KAAKC,GAAG,CAACN,OAAOO,MAAM,EAAEJ,OAAOI,MAAM;IAEjD,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,KAAKI,IAAK;QAC5B,IAAMC,OAAOC,SAASV,MAAM,CAACQ,EAAE,EAAE,OAAO;QACxC,IAAMG,OAAOD,SAASP,MAAM,CAACK,EAAE,EAAE,OAAO;QACxC,IAAIC,SAASE,MAAM;YACjB,OAAOF,OAAOE;QAChB;IACF;IACA,OAAO;AACT;AAMO,SAAShB,sBAAsBiB,YAAoB,EAAEC,OAAe;IACzE,IAAI,CAACC,WAAE,CAACC,UAAU,CAACH,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,IAAMI,oBAAoBH,QAAQZ,OAAO,CAAC,MAAM;IAChD,IAAMgB,UAAoB,EAAE;IAE5B,0BAA0B;IAC1B,IAAMC,eAAe;QAACL;QAAU,IAAqB,OAAlBG;QAAqBA;KAAkB;IAC1E,IAAK,IAAIR,IAAI,GAAGA,IAAIU,aAAaX,MAAM,EAAEC,IAAK;QAC5C,IAAMW,IAAID,YAAY,CAACV,EAAE;QACzB,IAAMY,cAAcC,aAAI,CAACC,IAAI,CAACV,cAAcO;QAC5C,IAAIL,WAAE,CAACC,UAAU,CAACK,gBAAgBN,WAAE,CAACS,QAAQ,CAACH,aAAaI,WAAW,IAAI;YACxE,IAAIP,QAAQQ,OAAO,CAACN,OAAO,CAAC,GAAG;gBAC7BF,QAAQS,IAAI,CAACP;YACf;QACF;IACF;IAEA,8CAA8C;IAC9C,IAAIF,QAAQV,MAAM,GAAG,GAAG;QACtB,OAAOU;IACT;IAEA,oDAAoD;IACpD,IAAMU,UAAUC,IAAAA,0BAAgB,EAAChB;IACjC,IAAK,IAAIiB,IAAI,GAAGA,IAAIF,QAAQpB,MAAM,EAAEsB,IAAK;QACvC,IAAMC,QAAQH,OAAO,CAACE,EAAE;QACxB,IAAI,CAACC,MAAMN,WAAW,IAAI;QAC1B,IAAMO,aAAaD,MAAME,IAAI,CAAC/B,OAAO,CAAC,MAAM;QAC5C,IAAI8B,WAAWN,OAAO,CAAC,AAAC,GAAoB,OAAlBT,mBAAkB,UAAQ,GAAG;YACrDC,QAAQS,IAAI,CAACI,MAAME,IAAI;QACzB;IACF;IAEA,wDAAwD;IACxDf,QAAQgB,IAAI,CAACpC;IAEb,OAAOoB;AACT;AAKO,SAASrB,wBAAwBgB,YAAoB;IAC1D,IAAI,CAACE,WAAE,CAACC,UAAU,CAACH,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,IAAMe,UAAUC,IAAAA,0BAAgB,EAAChB;IACjC,IAAMsB,WAAqB,EAAE;IAC7B,IAAK,IAAI1B,IAAI,GAAGA,IAAImB,QAAQpB,MAAM,EAAEC,IAAK;QACvC,IAAImB,OAAO,CAACnB,EAAE,CAACgB,WAAW,IAAI;YAC5BU,SAASR,IAAI,CAACC,OAAO,CAACnB,EAAE,CAACwB,IAAI;QAC/B;IACF;IAEA,OAAOE;AACT"}
@@ -11,12 +11,12 @@ import loadNodeVersionInstall from '../lib/loadNodeVersionInstall.js';
11
11
  * Set or display the global default Node version.
12
12
  * This is used when no .nvmrc or .nvurc is found in the project.
13
13
  */ export default function defaultCmd(args) {
14
- var defaultFilePath = path.join(storagePath, 'default');
15
- var versionsPath = path.join(storagePath, 'installed');
14
+ const defaultFilePath = path.join(storagePath, 'default');
15
+ const versionsPath = path.join(storagePath, 'installed');
16
16
  // If no version provided, display current default
17
17
  if (args.length === 0) {
18
18
  if (fs.existsSync(defaultFilePath)) {
19
- var currentVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();
19
+ const currentVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();
20
20
  console.log(`Current default: ${currentVersion}`);
21
21
  } else {
22
22
  console.log('No default version set.');
@@ -25,7 +25,7 @@ import loadNodeVersionInstall from '../lib/loadNodeVersionInstall.js';
25
25
  exit(0);
26
26
  return;
27
27
  }
28
- var version = args[0].trim();
28
+ const version = args[0].trim();
29
29
  // Validate version format (basic check, indexOf for Node 0.8+ compat)
30
30
  if (!version || version.indexOf('-') === 0) {
31
31
  console.log('Usage: nvu default <version>');
@@ -38,7 +38,7 @@ import loadNodeVersionInstall from '../lib/loadNodeVersionInstall.js';
38
38
  mkdirpSync(storagePath);
39
39
  }
40
40
  // Check if any installed versions match
41
- var matches = findInstalledVersions(versionsPath, version);
41
+ const matches = findInstalledVersions(versionsPath, version);
42
42
  if (matches.length > 0) {
43
43
  // Version is installed - resolve to exact and set default
44
44
  setDefaultToExact(defaultFilePath, matches);
@@ -52,7 +52,7 @@ import loadNodeVersionInstall from '../lib/loadNodeVersionInstall.js';
52
52
  * Set the default to the highest matching installed version
53
53
  */ function setDefaultToExact(defaultFilePath, matches) {
54
54
  // matches are sorted by findInstalledVersions, take the last (highest)
55
- var exactVersion = matches[matches.length - 1];
55
+ let exactVersion = matches[matches.length - 1];
56
56
  // Ensure it has v prefix for consistency
57
57
  if (exactVersion.indexOf('v') !== 0) {
58
58
  exactVersion = `v${exactVersion}`;
@@ -80,12 +80,12 @@ import loadNodeVersionInstall from '../lib/loadNodeVersionInstall.js';
80
80
  return;
81
81
  }
82
82
  // Get the installed version from results
83
- var installedVersion;
83
+ let installedVersion;
84
84
  if (results && results.length > 0) {
85
85
  installedVersion = results[0].version;
86
86
  } else {
87
87
  // Fallback: re-scan installed versions
88
- var matches = findInstalledVersions(versionsPath, version);
88
+ const matches = findInstalledVersions(versionsPath, version);
89
89
  if (matches.length === 0) {
90
90
  console.error('Installation completed but version not found');
91
91
  exit(1);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/default.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { mkdirpSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\nimport loadNodeVersionInstall from '../lib/loadNodeVersionInstall.ts';\n\n/**\n * nvu default [version]\n *\n * Set or display the global default Node version.\n * This is used when no .nvmrc or .nvurc is found in the project.\n */\nexport default function defaultCmd(args: string[]): void {\n var defaultFilePath = path.join(storagePath, 'default');\n var versionsPath = path.join(storagePath, 'installed');\n\n // If no version provided, display current default\n if (args.length === 0) {\n if (fs.existsSync(defaultFilePath)) {\n var currentVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n console.log(`Current default: ${currentVersion}`);\n } else {\n console.log('No default version set.');\n console.log('Usage: nvu default <version>');\n }\n exit(0);\n return;\n }\n\n var version = args[0].trim();\n\n // Validate version format (basic check, indexOf for Node 0.8+ compat)\n if (!version || version.indexOf('-') === 0) {\n console.log('Usage: nvu default <version>');\n console.log('Example: nvu default 20');\n exit(1);\n return;\n }\n\n // Ensure storage directory exists\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n\n // Check if any installed versions match\n var matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length > 0) {\n // Version is installed - resolve to exact and set default\n setDefaultToExact(defaultFilePath, matches);\n } else {\n // Version not installed - auto-install it\n console.log(`Node ${version} is not installed. Installing...`);\n autoInstallAndSetDefault(version, versionsPath, defaultFilePath);\n }\n}\n\n/**\n * Set the default to the highest matching installed version\n */\nfunction setDefaultToExact(defaultFilePath: string, matches: string[]): void {\n // matches are sorted by findInstalledVersions, take the last (highest)\n var exactVersion = matches[matches.length - 1];\n\n // Ensure it has v prefix for consistency\n if (exactVersion.indexOf('v') !== 0) {\n exactVersion = `v${exactVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${exactVersion}\\n`, 'utf8');\n console.log(`Default Node version set to: ${exactVersion}`);\n\n exit(0);\n}\n\n/**\n * Auto-install the version and then set it as default\n */\nfunction autoInstallAndSetDefault(version: string, versionsPath: string, defaultFilePath: string): void {\n loadNodeVersionInstall((err, nodeVersionInstall) => {\n if (err || !nodeVersionInstall) {\n console.error('Failed to load node-version-install:', err ? err.message : 'Module not available');\n exit(1);\n return;\n }\n\n nodeVersionInstall(\n version,\n {\n installPath: versionsPath,\n },\n (installErr, results) => {\n if (installErr) {\n console.error(`Failed to install Node ${version}:`, installErr.message);\n exit(1);\n return;\n }\n\n // Get the installed version from results\n var installedVersion: string;\n if (results && results.length > 0) {\n installedVersion = results[0].version;\n } else {\n // Fallback: re-scan installed versions\n var matches = findInstalledVersions(versionsPath, version);\n if (matches.length === 0) {\n console.error('Installation completed but version not found');\n exit(1);\n return;\n }\n installedVersion = matches[matches.length - 1];\n }\n\n // Ensure it has v prefix for consistency\n if (installedVersion.indexOf('v') !== 0) {\n installedVersion = `v${installedVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${installedVersion}\\n`, 'utf8');\n console.log(`Node ${installedVersion} installed successfully.`);\n console.log(`Default Node version set to: ${installedVersion}`);\n\n exit(0);\n }\n );\n });\n}\n"],"names":["exit","fs","path","mkdirpSync","storagePath","findInstalledVersions","loadNodeVersionInstall","defaultCmd","args","defaultFilePath","join","versionsPath","length","existsSync","currentVersion","readFileSync","trim","console","log","version","indexOf","matches","setDefaultToExact","autoInstallAndSetDefault","exactVersion","writeFileSync","err","nodeVersionInstall","error","message","installPath","installErr","results","installedVersion"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/default.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { mkdirpSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\nimport loadNodeVersionInstall from '../lib/loadNodeVersionInstall.ts';\n\n/**\n * nvu default [version]\n *\n * Set or display the global default Node version.\n * This is used when no .nvmrc or .nvurc is found in the project.\n */\nexport default function defaultCmd(args: string[]): void {\n const defaultFilePath = path.join(storagePath, 'default');\n const versionsPath = path.join(storagePath, 'installed');\n\n // If no version provided, display current default\n if (args.length === 0) {\n if (fs.existsSync(defaultFilePath)) {\n const currentVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n console.log(`Current default: ${currentVersion}`);\n } else {\n console.log('No default version set.');\n console.log('Usage: nvu default <version>');\n }\n exit(0);\n return;\n }\n\n const version = args[0].trim();\n\n // Validate version format (basic check, indexOf for Node 0.8+ compat)\n if (!version || version.indexOf('-') === 0) {\n console.log('Usage: nvu default <version>');\n console.log('Example: nvu default 20');\n exit(1);\n return;\n }\n\n // Ensure storage directory exists\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n\n // Check if any installed versions match\n const matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length > 0) {\n // Version is installed - resolve to exact and set default\n setDefaultToExact(defaultFilePath, matches);\n } else {\n // Version not installed - auto-install it\n console.log(`Node ${version} is not installed. Installing...`);\n autoInstallAndSetDefault(version, versionsPath, defaultFilePath);\n }\n}\n\n/**\n * Set the default to the highest matching installed version\n */\nfunction setDefaultToExact(defaultFilePath: string, matches: string[]): void {\n // matches are sorted by findInstalledVersions, take the last (highest)\n let exactVersion = matches[matches.length - 1];\n\n // Ensure it has v prefix for consistency\n if (exactVersion.indexOf('v') !== 0) {\n exactVersion = `v${exactVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${exactVersion}\\n`, 'utf8');\n console.log(`Default Node version set to: ${exactVersion}`);\n\n exit(0);\n}\n\n/**\n * Auto-install the version and then set it as default\n */\nfunction autoInstallAndSetDefault(version: string, versionsPath: string, defaultFilePath: string): void {\n loadNodeVersionInstall((err, nodeVersionInstall) => {\n if (err || !nodeVersionInstall) {\n console.error('Failed to load node-version-install:', err ? err.message : 'Module not available');\n exit(1);\n return;\n }\n\n nodeVersionInstall(\n version,\n {\n installPath: versionsPath,\n },\n (installErr, results) => {\n if (installErr) {\n console.error(`Failed to install Node ${version}:`, installErr.message);\n exit(1);\n return;\n }\n\n // Get the installed version from results\n let installedVersion: string;\n if (results && results.length > 0) {\n installedVersion = results[0].version;\n } else {\n // Fallback: re-scan installed versions\n const matches = findInstalledVersions(versionsPath, version);\n if (matches.length === 0) {\n console.error('Installation completed but version not found');\n exit(1);\n return;\n }\n installedVersion = matches[matches.length - 1];\n }\n\n // Ensure it has v prefix for consistency\n if (installedVersion.indexOf('v') !== 0) {\n installedVersion = `v${installedVersion}`;\n }\n\n // Write the exact version\n fs.writeFileSync(defaultFilePath, `${installedVersion}\\n`, 'utf8');\n console.log(`Node ${installedVersion} installed successfully.`);\n console.log(`Default Node version set to: ${installedVersion}`);\n\n exit(0);\n }\n );\n });\n}\n"],"names":["exit","fs","path","mkdirpSync","storagePath","findInstalledVersions","loadNodeVersionInstall","defaultCmd","args","defaultFilePath","join","versionsPath","length","existsSync","currentVersion","readFileSync","trim","console","log","version","indexOf","matches","setDefaultToExact","autoInstallAndSetDefault","exactVersion","writeFileSync","err","nodeVersionInstall","error","message","installPath","installErr","results","installedVersion"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { storagePath } from '../constants.js';
8
8
  *
9
9
  * List all installed Node versions.
10
10
  */ export default function listCmd(_args) {
11
- var versionsPath = path.join(storagePath, 'installed');
11
+ const versionsPath = path.join(storagePath, 'installed');
12
12
  // Check if versions directory exists
13
13
  if (!fs.existsSync(versionsPath)) {
14
14
  console.log('No Node versions installed.');
@@ -17,8 +17,8 @@ import { storagePath } from '../constants.js';
17
17
  return;
18
18
  }
19
19
  // Read all directories in versions folder
20
- var entries = readdirWithTypes(versionsPath);
21
- var versions = entries.filter((entry)=>entry.isDirectory()).map((entry)=>entry.name);
20
+ const entries = readdirWithTypes(versionsPath);
21
+ const versions = entries.filter((entry)=>entry.isDirectory()).map((entry)=>entry.name);
22
22
  if (versions.length === 0) {
23
23
  console.log('No Node versions installed.');
24
24
  console.log('Install a version: nvu install <version>');
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/list.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\n\n/**\n * nvu list\n *\n * List all installed Node versions.\n */\nexport default function listCmd(_args: string[]): void {\n var versionsPath = path.join(storagePath, 'installed');\n\n // Check if versions directory exists\n if (!fs.existsSync(versionsPath)) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Read all directories in versions folder\n var entries = readdirWithTypes(versionsPath);\n var versions = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);\n\n if (versions.length === 0) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Get the current default\n const defaultFilePath = path.join(storagePath, 'default');\n let defaultVersion = '';\n if (fs.existsSync(defaultFilePath)) {\n defaultVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n }\n\n // Sort versions (simple string sort, could be improved with semver)\n versions.sort((a, b) => {\n const aParts = a.split('.').map((n) => parseInt(n, 10) || 0);\n const bParts = b.split('.').map((n) => parseInt(n, 10) || 0);\n for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n const aVal = aParts[i] || 0;\n const bVal = bParts[i] || 0;\n if (aVal !== bVal) return bVal - aVal; // Descending order\n }\n return 0;\n });\n\n console.log('Installed Node versions:');\n for (let i = 0; i < versions.length; i++) {\n const version = versions[i];\n const isDefault = version === defaultVersion || `v${version}` === defaultVersion || version === `v${defaultVersion}`;\n const marker = isDefault ? ' (default)' : '';\n console.log(` ${version}${marker}`);\n }\n exit(0);\n}\n"],"names":["exit","fs","path","readdirWithTypes","storagePath","listCmd","_args","versionsPath","join","existsSync","console","log","entries","versions","filter","entry","isDirectory","map","name","length","defaultFilePath","defaultVersion","readFileSync","trim","sort","a","b","aParts","split","n","parseInt","bParts","i","Math","max","aVal","bVal","version","isDefault","marker"],"mappings":"AAAA,OAAOA,UAAU,cAAc;AAC/B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAASC,WAAW,QAAQ,kBAAkB;AAE9C;;;;CAIC,GACD,eAAe,SAASC,QAAQC,KAAe;IAC7C,IAAIC,eAAeL,KAAKM,IAAI,CAACJ,aAAa;IAE1C,qCAAqC;IACrC,IAAI,CAACH,GAAGQ,UAAU,CAACF,eAAe;QAChCG,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,0CAA0C;IAC1C,IAAIY,UAAUT,iBAAiBI;IAC/B,IAAIM,WAAWD,QAAQE,MAAM,CAAC,CAACC,QAAUA,MAAMC,WAAW,IAAIC,GAAG,CAAC,CAACF,QAAUA,MAAMG,IAAI;IAEvF,IAAIL,SAASM,MAAM,KAAK,GAAG;QACzBT,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,0BAA0B;IAC1B,MAAMoB,kBAAkBlB,KAAKM,IAAI,CAACJ,aAAa;IAC/C,IAAIiB,iBAAiB;IACrB,IAAIpB,GAAGQ,UAAU,CAACW,kBAAkB;QAClCC,iBAAiBpB,GAAGqB,YAAY,CAACF,iBAAiB,QAAQG,IAAI;IAChE;IAEA,oEAAoE;IACpEV,SAASW,IAAI,CAAC,CAACC,GAAGC;QAChB,MAAMC,SAASF,EAAEG,KAAK,CAAC,KAAKX,GAAG,CAAC,CAACY,IAAMC,SAASD,GAAG,OAAO;QAC1D,MAAME,SAASL,EAAEE,KAAK,CAAC,KAAKX,GAAG,CAAC,CAACY,IAAMC,SAASD,GAAG,OAAO;QAC1D,IAAK,IAAIG,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACP,OAAOR,MAAM,EAAEY,OAAOZ,MAAM,GAAGa,IAAK;YAC/D,MAAMG,OAAOR,MAAM,CAACK,EAAE,IAAI;YAC1B,MAAMI,OAAOL,MAAM,CAACC,EAAE,IAAI;YAC1B,IAAIG,SAASC,MAAM,OAAOA,OAAOD,MAAM,mBAAmB;QAC5D;QACA,OAAO;IACT;IAEAzB,QAAQC,GAAG,CAAC;IACZ,IAAK,IAAIqB,IAAI,GAAGA,IAAInB,SAASM,MAAM,EAAEa,IAAK;QACxC,MAAMK,UAAUxB,QAAQ,CAACmB,EAAE;QAC3B,MAAMM,YAAYD,YAAYhB,kBAAkB,CAAC,CAAC,EAAEgB,SAAS,KAAKhB,kBAAkBgB,YAAY,CAAC,CAAC,EAAEhB,gBAAgB;QACpH,MAAMkB,SAASD,YAAY,eAAe;QAC1C5B,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAE0B,UAAUE,QAAQ;IACrC;IACAvC,KAAK;AACP"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/list.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\n\n/**\n * nvu list\n *\n * List all installed Node versions.\n */\nexport default function listCmd(_args: string[]): void {\n const versionsPath = path.join(storagePath, 'installed');\n\n // Check if versions directory exists\n if (!fs.existsSync(versionsPath)) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Read all directories in versions folder\n const entries = readdirWithTypes(versionsPath);\n const versions = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);\n\n if (versions.length === 0) {\n console.log('No Node versions installed.');\n console.log('Install a version: nvu install <version>');\n exit(0);\n return;\n }\n\n // Get the current default\n const defaultFilePath = path.join(storagePath, 'default');\n let defaultVersion = '';\n if (fs.existsSync(defaultFilePath)) {\n defaultVersion = fs.readFileSync(defaultFilePath, 'utf8').trim();\n }\n\n // Sort versions (simple string sort, could be improved with semver)\n versions.sort((a, b) => {\n const aParts = a.split('.').map((n) => parseInt(n, 10) || 0);\n const bParts = b.split('.').map((n) => parseInt(n, 10) || 0);\n for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n const aVal = aParts[i] || 0;\n const bVal = bParts[i] || 0;\n if (aVal !== bVal) return bVal - aVal; // Descending order\n }\n return 0;\n });\n\n console.log('Installed Node versions:');\n for (let i = 0; i < versions.length; i++) {\n const version = versions[i];\n const isDefault = version === defaultVersion || `v${version}` === defaultVersion || version === `v${defaultVersion}`;\n const marker = isDefault ? ' (default)' : '';\n console.log(` ${version}${marker}`);\n }\n exit(0);\n}\n"],"names":["exit","fs","path","readdirWithTypes","storagePath","listCmd","_args","versionsPath","join","existsSync","console","log","entries","versions","filter","entry","isDirectory","map","name","length","defaultFilePath","defaultVersion","readFileSync","trim","sort","a","b","aParts","split","n","parseInt","bParts","i","Math","max","aVal","bVal","version","isDefault","marker"],"mappings":"AAAA,OAAOA,UAAU,cAAc;AAC/B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAASC,WAAW,QAAQ,kBAAkB;AAE9C;;;;CAIC,GACD,eAAe,SAASC,QAAQC,KAAe;IAC7C,MAAMC,eAAeL,KAAKM,IAAI,CAACJ,aAAa;IAE5C,qCAAqC;IACrC,IAAI,CAACH,GAAGQ,UAAU,CAACF,eAAe;QAChCG,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,0CAA0C;IAC1C,MAAMY,UAAUT,iBAAiBI;IACjC,MAAMM,WAAWD,QAAQE,MAAM,CAAC,CAACC,QAAUA,MAAMC,WAAW,IAAIC,GAAG,CAAC,CAACF,QAAUA,MAAMG,IAAI;IAEzF,IAAIL,SAASM,MAAM,KAAK,GAAG;QACzBT,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,0BAA0B;IAC1B,MAAMoB,kBAAkBlB,KAAKM,IAAI,CAACJ,aAAa;IAC/C,IAAIiB,iBAAiB;IACrB,IAAIpB,GAAGQ,UAAU,CAACW,kBAAkB;QAClCC,iBAAiBpB,GAAGqB,YAAY,CAACF,iBAAiB,QAAQG,IAAI;IAChE;IAEA,oEAAoE;IACpEV,SAASW,IAAI,CAAC,CAACC,GAAGC;QAChB,MAAMC,SAASF,EAAEG,KAAK,CAAC,KAAKX,GAAG,CAAC,CAACY,IAAMC,SAASD,GAAG,OAAO;QAC1D,MAAME,SAASL,EAAEE,KAAK,CAAC,KAAKX,GAAG,CAAC,CAACY,IAAMC,SAASD,GAAG,OAAO;QAC1D,IAAK,IAAIG,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACP,OAAOR,MAAM,EAAEY,OAAOZ,MAAM,GAAGa,IAAK;YAC/D,MAAMG,OAAOR,MAAM,CAACK,EAAE,IAAI;YAC1B,MAAMI,OAAOL,MAAM,CAACC,EAAE,IAAI;YAC1B,IAAIG,SAASC,MAAM,OAAOA,OAAOD,MAAM,mBAAmB;QAC5D;QACA,OAAO;IACT;IAEAzB,QAAQC,GAAG,CAAC;IACZ,IAAK,IAAIqB,IAAI,GAAGA,IAAInB,SAASM,MAAM,EAAEa,IAAK;QACxC,MAAMK,UAAUxB,QAAQ,CAACmB,EAAE;QAC3B,MAAMM,YAAYD,YAAYhB,kBAAkB,CAAC,CAAC,EAAEgB,SAAS,KAAKhB,kBAAkBgB,YAAY,CAAC,CAAC,EAAEhB,gBAAgB;QACpH,MAAMkB,SAASD,YAAY,eAAe;QAC1C5B,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAE0B,UAAUE,QAAQ;IACrC;IACAvC,KAAK;AACP"}
@@ -6,14 +6,14 @@ import url from 'url';
6
6
  import { mkdirpSync, readdirWithTypes } from '../compat.js';
7
7
  import { storagePath } from '../constants.js';
8
8
  import { findInstalledVersions } from '../lib/findInstalledVersions.js';
9
- var __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
9
+ const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
10
10
  /**
11
11
  * nvu setup [--shims]
12
12
  *
13
13
  * Install/reinstall nvu binaries to ~/.nvu/bin
14
14
  * With --shims: create shims for existing global packages
15
15
  */ export default function setupCmd(args) {
16
- var binDir = path.join(storagePath, 'bin');
16
+ const binDir = path.join(storagePath, 'bin');
17
17
  // Create directories
18
18
  if (!fs.existsSync(storagePath)) {
19
19
  mkdirpSync(storagePath);
@@ -22,8 +22,8 @@ var __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : ur
22
22
  mkdirpSync(binDir);
23
23
  }
24
24
  // Check for --shims flag
25
- var hasShimsFlag = false;
26
- for(var i = 0; i < args.length; i++){
25
+ let hasShimsFlag = false;
26
+ for(let i = 0; i < args.length; i++){
27
27
  if (args[i] === '--shims') {
28
28
  hasShimsFlag = true;
29
29
  break;
@@ -34,7 +34,7 @@ var __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : ur
34
34
  return;
35
35
  }
36
36
  // Find the postinstall script relative to this module
37
- var postinstallPath = path.join(__dirname, '..', '..', '..', 'scripts', 'postinstall.cjs');
37
+ const postinstallPath = path.join(__dirname, '..', '..', '..', 'scripts', 'postinstall.cjs');
38
38
  if (fs.existsSync(postinstallPath)) {
39
39
  // Run the postinstall script
40
40
  try {
@@ -54,48 +54,48 @@ var __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : ur
54
54
  * Create shims for all global packages in the default Node version
55
55
  */ function createShimsForGlobalPackages(binDir) {
56
56
  // Read default version
57
- var defaultPath = path.join(storagePath, 'default');
57
+ const defaultPath = path.join(storagePath, 'default');
58
58
  if (!fs.existsSync(defaultPath)) {
59
59
  console.log('No default Node version set.');
60
60
  console.log('Set one with: nvu default <version>');
61
61
  exit(1);
62
62
  return;
63
63
  }
64
- var defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();
65
- var versionsDir = path.join(storagePath, 'installed');
64
+ const defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();
65
+ const versionsDir = path.join(storagePath, 'installed');
66
66
  // Resolve to exact version
67
- var matches = findInstalledVersions(versionsDir, defaultVersion);
67
+ const matches = findInstalledVersions(versionsDir, defaultVersion);
68
68
  if (matches.length === 0) {
69
69
  console.log(`Default version ${defaultVersion} is not installed.`);
70
70
  exit(1);
71
71
  return;
72
72
  }
73
- var resolvedVersion = matches[matches.length - 1];
74
- var nodeBinDir = path.join(versionsDir, resolvedVersion, 'bin');
73
+ const resolvedVersion = matches[matches.length - 1];
74
+ const nodeBinDir = path.join(versionsDir, resolvedVersion, 'bin');
75
75
  if (!fs.existsSync(nodeBinDir)) {
76
76
  console.log(`No bin directory found for ${resolvedVersion}`);
77
77
  exit(1);
78
78
  return;
79
79
  }
80
80
  // Get the node shim to copy from
81
- var nodeShim = path.join(binDir, 'node');
81
+ const nodeShim = path.join(binDir, 'node');
82
82
  if (!fs.existsSync(nodeShim)) {
83
83
  console.log('Node shim not found. Run: nvu setup');
84
84
  exit(1);
85
85
  return;
86
86
  }
87
87
  // Scan binaries in Node's bin directory
88
- var entries = readdirWithTypes(nodeBinDir);
89
- var created = 0;
90
- var skipped = 0;
91
- for(var i = 0; i < entries.length; i++){
92
- var entry = entries[i];
93
- var name = entry.name;
88
+ const entries = readdirWithTypes(nodeBinDir);
89
+ let created = 0;
90
+ let skipped = 0;
91
+ for(let i = 0; i < entries.length; i++){
92
+ const entry = entries[i];
93
+ const name = entry.name;
94
94
  // Skip our routing shims (node/npm/npx) - don't overwrite them
95
95
  if (name === 'node' || name === 'npm' || name === 'npx') {
96
96
  continue;
97
97
  }
98
- var shimPath = path.join(binDir, name);
98
+ const shimPath = path.join(binDir, name);
99
99
  // Skip if shim already exists
100
100
  if (fs.existsSync(shimPath)) {
101
101
  skipped++;
@@ -103,7 +103,7 @@ var __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : ur
103
103
  }
104
104
  // Copy the node shim
105
105
  try {
106
- var shimContent = fs.readFileSync(nodeShim);
106
+ const shimContent = fs.readFileSync(nodeShim);
107
107
  fs.writeFileSync(shimPath, shimContent);
108
108
  fs.chmodSync(shimPath, 493); // 0755
109
109
  console.log(`Created shim: ${name}`);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/setup.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport url from 'url';\nimport { mkdirpSync, readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\nvar __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n/**\n * nvu setup [--shims]\n *\n * Install/reinstall nvu binaries to ~/.nvu/bin\n * With --shims: create shims for existing global packages\n */\nexport default function setupCmd(args: string[]): void {\n var binDir = path.join(storagePath, 'bin');\n\n // Create directories\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n if (!fs.existsSync(binDir)) {\n mkdirpSync(binDir);\n }\n\n // Check for --shims flag\n var hasShimsFlag = false;\n for (var i = 0; i < args.length; i++) {\n if (args[i] === '--shims') {\n hasShimsFlag = true;\n break;\n }\n }\n\n if (hasShimsFlag) {\n createShimsForGlobalPackages(binDir);\n return;\n }\n\n // Find the postinstall script relative to this module\n var postinstallPath = path.join(__dirname, '..', '..', '..', 'scripts', 'postinstall.cjs');\n\n if (fs.existsSync(postinstallPath)) {\n // Run the postinstall script\n try {\n execSync(`node \"${postinstallPath}\"`, { stdio: 'inherit' });\n } catch (_err) {\n // postinstall handles its own errors gracefully\n }\n } else {\n console.log('Setup script not found.');\n console.log('Try reinstalling: npm install -g node-version-use');\n exit(1);\n }\n}\n\n/**\n * Create shims for all global packages in the default Node version\n */\nfunction createShimsForGlobalPackages(binDir: string): void {\n // Read default version\n var defaultPath = path.join(storagePath, 'default');\n if (!fs.existsSync(defaultPath)) {\n console.log('No default Node version set.');\n console.log('Set one with: nvu default <version>');\n exit(1);\n return;\n }\n\n var defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n var versionsDir = path.join(storagePath, 'installed');\n\n // Resolve to exact version\n var matches = findInstalledVersions(versionsDir, defaultVersion);\n if (matches.length === 0) {\n console.log(`Default version ${defaultVersion} is not installed.`);\n exit(1);\n return;\n }\n\n var resolvedVersion = matches[matches.length - 1];\n var nodeBinDir = path.join(versionsDir, resolvedVersion, 'bin');\n\n if (!fs.existsSync(nodeBinDir)) {\n console.log(`No bin directory found for ${resolvedVersion}`);\n exit(1);\n return;\n }\n\n // Get the node shim to copy from\n var nodeShim = path.join(binDir, 'node');\n if (!fs.existsSync(nodeShim)) {\n console.log('Node shim not found. Run: nvu setup');\n exit(1);\n return;\n }\n\n // Scan binaries in Node's bin directory\n var entries = readdirWithTypes(nodeBinDir);\n var created = 0;\n var skipped = 0;\n\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n var name = entry.name;\n\n // Skip our routing shims (node/npm/npx) - don't overwrite them\n if (name === 'node' || name === 'npm' || name === 'npx') {\n continue;\n }\n\n var shimPath = path.join(binDir, name);\n\n // Skip if shim already exists\n if (fs.existsSync(shimPath)) {\n skipped++;\n continue;\n }\n\n // Copy the node shim\n try {\n var shimContent = fs.readFileSync(nodeShim);\n fs.writeFileSync(shimPath, shimContent);\n fs.chmodSync(shimPath, 493); // 0755\n console.log(`Created shim: ${name}`);\n created++;\n } catch (err) {\n console.error(`Failed to create shim for ${name}: ${(err as Error).message}`);\n }\n }\n\n console.log('');\n console.log(`Done. Created ${created} shims, skipped ${skipped} (already exist).`);\n exit(0);\n}\n"],"names":["execSync","exit","fs","path","url","mkdirpSync","readdirWithTypes","storagePath","findInstalledVersions","__dirname","dirname","__filename","fileURLToPath","setupCmd","args","binDir","join","existsSync","hasShimsFlag","i","length","createShimsForGlobalPackages","postinstallPath","stdio","_err","console","log","defaultPath","defaultVersion","readFileSync","trim","versionsDir","matches","resolvedVersion","nodeBinDir","nodeShim","entries","created","skipped","entry","name","shimPath","shimContent","writeFileSync","chmodSync","err","error","message"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/setup.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport url from 'url';\nimport { mkdirpSync, readdirWithTypes } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n/**\n * nvu setup [--shims]\n *\n * Install/reinstall nvu binaries to ~/.nvu/bin\n * With --shims: create shims for existing global packages\n */\nexport default function setupCmd(args: string[]): void {\n const binDir = path.join(storagePath, 'bin');\n\n // Create directories\n if (!fs.existsSync(storagePath)) {\n mkdirpSync(storagePath);\n }\n if (!fs.existsSync(binDir)) {\n mkdirpSync(binDir);\n }\n\n // Check for --shims flag\n let hasShimsFlag = false;\n for (let i = 0; i < args.length; i++) {\n if (args[i] === '--shims') {\n hasShimsFlag = true;\n break;\n }\n }\n\n if (hasShimsFlag) {\n createShimsForGlobalPackages(binDir);\n return;\n }\n\n // Find the postinstall script relative to this module\n const postinstallPath = path.join(__dirname, '..', '..', '..', 'scripts', 'postinstall.cjs');\n\n if (fs.existsSync(postinstallPath)) {\n // Run the postinstall script\n try {\n execSync(`node \"${postinstallPath}\"`, { stdio: 'inherit' });\n } catch (_err) {\n // postinstall handles its own errors gracefully\n }\n } else {\n console.log('Setup script not found.');\n console.log('Try reinstalling: npm install -g node-version-use');\n exit(1);\n }\n}\n\n/**\n * Create shims for all global packages in the default Node version\n */\nfunction createShimsForGlobalPackages(binDir: string): void {\n // Read default version\n const defaultPath = path.join(storagePath, 'default');\n if (!fs.existsSync(defaultPath)) {\n console.log('No default Node version set.');\n console.log('Set one with: nvu default <version>');\n exit(1);\n return;\n }\n\n const defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n const versionsDir = path.join(storagePath, 'installed');\n\n // Resolve to exact version\n const matches = findInstalledVersions(versionsDir, defaultVersion);\n if (matches.length === 0) {\n console.log(`Default version ${defaultVersion} is not installed.`);\n exit(1);\n return;\n }\n\n const resolvedVersion = matches[matches.length - 1];\n const nodeBinDir = path.join(versionsDir, resolvedVersion, 'bin');\n\n if (!fs.existsSync(nodeBinDir)) {\n console.log(`No bin directory found for ${resolvedVersion}`);\n exit(1);\n return;\n }\n\n // Get the node shim to copy from\n const nodeShim = path.join(binDir, 'node');\n if (!fs.existsSync(nodeShim)) {\n console.log('Node shim not found. Run: nvu setup');\n exit(1);\n return;\n }\n\n // Scan binaries in Node's bin directory\n const entries = readdirWithTypes(nodeBinDir);\n let created = 0;\n let skipped = 0;\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n const name = entry.name;\n\n // Skip our routing shims (node/npm/npx) - don't overwrite them\n if (name === 'node' || name === 'npm' || name === 'npx') {\n continue;\n }\n\n const shimPath = path.join(binDir, name);\n\n // Skip if shim already exists\n if (fs.existsSync(shimPath)) {\n skipped++;\n continue;\n }\n\n // Copy the node shim\n try {\n const shimContent = fs.readFileSync(nodeShim);\n fs.writeFileSync(shimPath, shimContent);\n fs.chmodSync(shimPath, 493); // 0755\n console.log(`Created shim: ${name}`);\n created++;\n } catch (err) {\n console.error(`Failed to create shim for ${name}: ${(err as Error).message}`);\n }\n }\n\n console.log('');\n console.log(`Done. Created ${created} shims, skipped ${skipped} (already exist).`);\n exit(0);\n}\n"],"names":["execSync","exit","fs","path","url","mkdirpSync","readdirWithTypes","storagePath","findInstalledVersions","__dirname","dirname","__filename","fileURLToPath","setupCmd","args","binDir","join","existsSync","hasShimsFlag","i","length","createShimsForGlobalPackages","postinstallPath","stdio","_err","console","log","defaultPath","defaultVersion","readFileSync","trim","versionsDir","matches","resolvedVersion","nodeBinDir","nodeShim","entries","created","skipped","entry","name","shimPath","shimContent","writeFileSync","chmodSync","err","error","message"],"mappings":"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"}
@@ -16,10 +16,10 @@ import { findInstalledVersions, getAllInstalledVersions } from '../lib/findInsta
16
16
  exit(1);
17
17
  return;
18
18
  }
19
- var version = args[0].trim();
20
- var versionsPath = path.join(storagePath, 'installed');
19
+ const version = args[0].trim();
20
+ const versionsPath = path.join(storagePath, 'installed');
21
21
  // Find all matching installed versions
22
- var matches = findInstalledVersions(versionsPath, version);
22
+ const matches = findInstalledVersions(versionsPath, version);
23
23
  if (matches.length === 0) {
24
24
  console.log(`Node ${version} is not installed.`);
25
25
  console.log('');
@@ -30,7 +30,7 @@ import { findInstalledVersions, getAllInstalledVersions } from '../lib/findInsta
30
30
  }
31
31
  if (matches.length > 1) {
32
32
  console.log(`Multiple versions match "${version}":`);
33
- for(var i = 0; i < matches.length; i++){
33
+ for(let i = 0; i < matches.length; i++){
34
34
  console.log(` ${matches[i]}`);
35
35
  }
36
36
  console.log('');
@@ -38,15 +38,15 @@ import { findInstalledVersions, getAllInstalledVersions } from '../lib/findInsta
38
38
  exit(1);
39
39
  return;
40
40
  }
41
- var installedVersion = matches[0];
42
- var versionPath = path.join(versionsPath, installedVersion);
41
+ const installedVersion = matches[0];
42
+ const versionPath = path.join(versionsPath, installedVersion);
43
43
  // Check if this is the current default (exact match since we store exact versions)
44
- var defaultPath = path.join(storagePath, 'default');
44
+ const defaultPath = path.join(storagePath, 'default');
45
45
  if (fs.existsSync(defaultPath)) {
46
- var defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();
46
+ const defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();
47
47
  // Normalize both for comparison
48
- var normalizedDefault = defaultVersion.replace(/^v/, '');
49
- var normalizedInstalled = installedVersion.replace(/^v/, '');
48
+ const normalizedDefault = defaultVersion.replace(/^v/, '');
49
+ const normalizedInstalled = installedVersion.replace(/^v/, '');
50
50
  if (normalizedInstalled === normalizedDefault) {
51
51
  console.error(`Cannot uninstall default version ${installedVersion}.`);
52
52
  console.error('');
@@ -70,11 +70,11 @@ import { findInstalledVersions, getAllInstalledVersions } from '../lib/findInsta
70
70
  /**
71
71
  * List installed versions for user reference
72
72
  */ function listInstalledVersions(versionsPath) {
73
- var versions = getAllInstalledVersions(versionsPath);
73
+ const versions = getAllInstalledVersions(versionsPath);
74
74
  if (versions.length === 0) {
75
75
  console.log(' (none)');
76
76
  } else {
77
- for(var i = 0; i < versions.length; i++){
77
+ for(let i = 0; i < versions.length; i++){
78
78
  console.log(` ${versions[i]}`);
79
79
  }
80
80
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/uninstall.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { rmSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions, getAllInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu uninstall <version>\n *\n * Remove an installed Node version.\n */\nexport default function uninstallCmd(args: string[]): void {\n if (args.length === 0) {\n console.log('Usage: nvu uninstall <version>');\n console.log('Example: nvu uninstall 20');\n console.log(' nvu uninstall v20.19.6');\n exit(1);\n return;\n }\n\n var version = args[0].trim();\n var versionsPath = path.join(storagePath, 'installed');\n\n // Find all matching installed versions\n var matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length === 0) {\n console.log(`Node ${version} is not installed.`);\n console.log('');\n console.log('Installed versions:');\n listInstalledVersions(versionsPath);\n exit(1);\n return;\n }\n\n if (matches.length > 1) {\n console.log(`Multiple versions match \"${version}\":`);\n for (var i = 0; i < matches.length; i++) {\n console.log(` ${matches[i]}`);\n }\n console.log('');\n console.log('Please specify the exact version to uninstall.');\n exit(1);\n return;\n }\n\n var installedVersion = matches[0];\n var versionPath = path.join(versionsPath, installedVersion);\n\n // Check if this is the current default (exact match since we store exact versions)\n var defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n var defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n\n // Normalize both for comparison\n var normalizedDefault = defaultVersion.replace(/^v/, '');\n var normalizedInstalled = installedVersion.replace(/^v/, '');\n\n if (normalizedInstalled === normalizedDefault) {\n console.error(`Cannot uninstall default version ${installedVersion}.`);\n console.error('');\n console.error('Change your default first:');\n console.error(' nvu default <version>');\n exit(1);\n return;\n }\n }\n\n // Remove the version directory\n try {\n rmSync(versionPath);\n console.log(`Removed Node ${installedVersion}`);\n } catch (err) {\n console.error(`Failed to remove Node ${installedVersion}:`, (err as Error).message);\n exit(1);\n return;\n }\n\n exit(0);\n}\n\n/**\n * List installed versions for user reference\n */\nfunction listInstalledVersions(versionsPath: string): void {\n var versions = getAllInstalledVersions(versionsPath);\n\n if (versions.length === 0) {\n console.log(' (none)');\n } else {\n for (var i = 0; i < versions.length; i++) {\n console.log(` ${versions[i]}`);\n }\n }\n}\n"],"names":["exit","fs","path","rmSync","storagePath","findInstalledVersions","getAllInstalledVersions","uninstallCmd","args","length","console","log","version","trim","versionsPath","join","matches","listInstalledVersions","i","installedVersion","versionPath","defaultPath","existsSync","defaultVersion","readFileSync","normalizedDefault","replace","normalizedInstalled","error","err","message","versions"],"mappings":"AAAA,OAAOA,UAAU,cAAc;AAC/B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,qBAAqB,EAAEC,uBAAuB,QAAQ,kCAAkC;AAEjG;;;;CAIC,GACD,eAAe,SAASC,aAAaC,IAAc;IACjD,IAAIA,KAAKC,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,IAAIY,UAAUJ,IAAI,CAAC,EAAE,CAACK,IAAI;IAC1B,IAAIC,eAAeZ,KAAKa,IAAI,CAACX,aAAa;IAE1C,uCAAuC;IACvC,IAAIY,UAAUX,sBAAsBS,cAAcF;IAElD,IAAII,QAAQP,MAAM,KAAK,GAAG;QACxBC,QAAQC,GAAG,CAAC,CAAC,KAAK,EAAEC,QAAQ,kBAAkB,CAAC;QAC/CF,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZM,sBAAsBH;QACtBd,KAAK;QACL;IACF;IAEA,IAAIgB,QAAQP,MAAM,GAAG,GAAG;QACtBC,QAAQC,GAAG,CAAC,CAAC,yBAAyB,EAAEC,QAAQ,EAAE,CAAC;QACnD,IAAK,IAAIM,IAAI,GAAGA,IAAIF,QAAQP,MAAM,EAAES,IAAK;YACvCR,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAEK,OAAO,CAACE,EAAE,EAAE;QAC/B;QACAR,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,IAAImB,mBAAmBH,OAAO,CAAC,EAAE;IACjC,IAAII,cAAclB,KAAKa,IAAI,CAACD,cAAcK;IAE1C,mFAAmF;IACnF,IAAIE,cAAcnB,KAAKa,IAAI,CAACX,aAAa;IACzC,IAAIH,GAAGqB,UAAU,CAACD,cAAc;QAC9B,IAAIE,iBAAiBtB,GAAGuB,YAAY,CAACH,aAAa,QAAQR,IAAI;QAE9D,gCAAgC;QAChC,IAAIY,oBAAoBF,eAAeG,OAAO,CAAC,MAAM;QACrD,IAAIC,sBAAsBR,iBAAiBO,OAAO,CAAC,MAAM;QAEzD,IAAIC,wBAAwBF,mBAAmB;YAC7Cf,QAAQkB,KAAK,CAAC,CAAC,iCAAiC,EAAET,iBAAiB,CAAC,CAAC;YACrET,QAAQkB,KAAK,CAAC;YACdlB,QAAQkB,KAAK,CAAC;YACdlB,QAAQkB,KAAK,CAAC;YACd5B,KAAK;YACL;QACF;IACF;IAEA,+BAA+B;IAC/B,IAAI;QACFG,OAAOiB;QACPV,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEQ,kBAAkB;IAChD,EAAE,OAAOU,KAAK;QACZnB,QAAQkB,KAAK,CAAC,CAAC,sBAAsB,EAAET,iBAAiB,CAAC,CAAC,EAAE,AAACU,IAAcC,OAAO;QAClF9B,KAAK;QACL;IACF;IAEAA,KAAK;AACP;AAEA;;CAEC,GACD,SAASiB,sBAAsBH,YAAoB;IACjD,IAAIiB,WAAWzB,wBAAwBQ;IAEvC,IAAIiB,SAAStB,MAAM,KAAK,GAAG;QACzBC,QAAQC,GAAG,CAAC;IACd,OAAO;QACL,IAAK,IAAIO,IAAI,GAAGA,IAAIa,SAAStB,MAAM,EAAES,IAAK;YACxCR,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAEoB,QAAQ,CAACb,EAAE,EAAE;QAChC;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/uninstall.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { rmSync } from '../compat.ts';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions, getAllInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu uninstall <version>\n *\n * Remove an installed Node version.\n */\nexport default function uninstallCmd(args: string[]): void {\n if (args.length === 0) {\n console.log('Usage: nvu uninstall <version>');\n console.log('Example: nvu uninstall 20');\n console.log(' nvu uninstall v20.19.6');\n exit(1);\n return;\n }\n\n const version = args[0].trim();\n const versionsPath = path.join(storagePath, 'installed');\n\n // Find all matching installed versions\n const matches = findInstalledVersions(versionsPath, version);\n\n if (matches.length === 0) {\n console.log(`Node ${version} is not installed.`);\n console.log('');\n console.log('Installed versions:');\n listInstalledVersions(versionsPath);\n exit(1);\n return;\n }\n\n if (matches.length > 1) {\n console.log(`Multiple versions match \"${version}\":`);\n for (let i = 0; i < matches.length; i++) {\n console.log(` ${matches[i]}`);\n }\n console.log('');\n console.log('Please specify the exact version to uninstall.');\n exit(1);\n return;\n }\n\n const installedVersion = matches[0];\n const versionPath = path.join(versionsPath, installedVersion);\n\n // Check if this is the current default (exact match since we store exact versions)\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n const defaultVersion = fs.readFileSync(defaultPath, 'utf8').trim();\n\n // Normalize both for comparison\n const normalizedDefault = defaultVersion.replace(/^v/, '');\n const normalizedInstalled = installedVersion.replace(/^v/, '');\n\n if (normalizedInstalled === normalizedDefault) {\n console.error(`Cannot uninstall default version ${installedVersion}.`);\n console.error('');\n console.error('Change your default first:');\n console.error(' nvu default <version>');\n exit(1);\n return;\n }\n }\n\n // Remove the version directory\n try {\n rmSync(versionPath);\n console.log(`Removed Node ${installedVersion}`);\n } catch (err) {\n console.error(`Failed to remove Node ${installedVersion}:`, (err as Error).message);\n exit(1);\n return;\n }\n\n exit(0);\n}\n\n/**\n * List installed versions for user reference\n */\nfunction listInstalledVersions(versionsPath: string): void {\n const versions = getAllInstalledVersions(versionsPath);\n\n if (versions.length === 0) {\n console.log(' (none)');\n } else {\n for (let i = 0; i < versions.length; i++) {\n console.log(` ${versions[i]}`);\n }\n }\n}\n"],"names":["exit","fs","path","rmSync","storagePath","findInstalledVersions","getAllInstalledVersions","uninstallCmd","args","length","console","log","version","trim","versionsPath","join","matches","listInstalledVersions","i","installedVersion","versionPath","defaultPath","existsSync","defaultVersion","readFileSync","normalizedDefault","replace","normalizedInstalled","error","err","message","versions"],"mappings":"AAAA,OAAOA,UAAU,cAAc;AAC/B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,qBAAqB,EAAEC,uBAAuB,QAAQ,kCAAkC;AAEjG;;;;CAIC,GACD,eAAe,SAASC,aAAaC,IAAc;IACjD,IAAIA,KAAKC,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,MAAMY,UAAUJ,IAAI,CAAC,EAAE,CAACK,IAAI;IAC5B,MAAMC,eAAeZ,KAAKa,IAAI,CAACX,aAAa;IAE5C,uCAAuC;IACvC,MAAMY,UAAUX,sBAAsBS,cAAcF;IAEpD,IAAII,QAAQP,MAAM,KAAK,GAAG;QACxBC,QAAQC,GAAG,CAAC,CAAC,KAAK,EAAEC,QAAQ,kBAAkB,CAAC;QAC/CF,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZM,sBAAsBH;QACtBd,KAAK;QACL;IACF;IAEA,IAAIgB,QAAQP,MAAM,GAAG,GAAG;QACtBC,QAAQC,GAAG,CAAC,CAAC,yBAAyB,EAAEC,QAAQ,EAAE,CAAC;QACnD,IAAK,IAAIM,IAAI,GAAGA,IAAIF,QAAQP,MAAM,EAAES,IAAK;YACvCR,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAEK,OAAO,CAACE,EAAE,EAAE;QAC/B;QACAR,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZX,KAAK;QACL;IACF;IAEA,MAAMmB,mBAAmBH,OAAO,CAAC,EAAE;IACnC,MAAMI,cAAclB,KAAKa,IAAI,CAACD,cAAcK;IAE5C,mFAAmF;IACnF,MAAME,cAAcnB,KAAKa,IAAI,CAACX,aAAa;IAC3C,IAAIH,GAAGqB,UAAU,CAACD,cAAc;QAC9B,MAAME,iBAAiBtB,GAAGuB,YAAY,CAACH,aAAa,QAAQR,IAAI;QAEhE,gCAAgC;QAChC,MAAMY,oBAAoBF,eAAeG,OAAO,CAAC,MAAM;QACvD,MAAMC,sBAAsBR,iBAAiBO,OAAO,CAAC,MAAM;QAE3D,IAAIC,wBAAwBF,mBAAmB;YAC7Cf,QAAQkB,KAAK,CAAC,CAAC,iCAAiC,EAAET,iBAAiB,CAAC,CAAC;YACrET,QAAQkB,KAAK,CAAC;YACdlB,QAAQkB,KAAK,CAAC;YACdlB,QAAQkB,KAAK,CAAC;YACd5B,KAAK;YACL;QACF;IACF;IAEA,+BAA+B;IAC/B,IAAI;QACFG,OAAOiB;QACPV,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEQ,kBAAkB;IAChD,EAAE,OAAOU,KAAK;QACZnB,QAAQkB,KAAK,CAAC,CAAC,sBAAsB,EAAET,iBAAiB,CAAC,CAAC,EAAE,AAACU,IAAcC,OAAO;QAClF9B,KAAK;QACL;IACF;IAEAA,KAAK;AACP;AAEA;;CAEC,GACD,SAASiB,sBAAsBH,YAAoB;IACjD,MAAMiB,WAAWzB,wBAAwBQ;IAEzC,IAAIiB,SAAStB,MAAM,KAAK,GAAG;QACzBC,QAAQC,GAAG,CAAC;IACd,OAAO;QACL,IAAK,IAAIO,IAAI,GAAGA,IAAIa,SAAStB,MAAM,EAAES,IAAK;YACxCR,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAEoB,QAAQ,CAACb,EAAE,EAAE;QAChC;IACF;AACF"}
@@ -22,9 +22,9 @@ import { findInstalledVersions } from '../lib/findInstalledVersions.js';
22
22
  return;
23
23
  }
24
24
  // Resolve partial version to exact installed version
25
- var versionsPath = path.join(storagePath, 'installed');
26
- var matches = findInstalledVersions(versionsPath, version);
27
- var resolvedVersion = matches.length > 0 ? matches[matches.length - 1] : null;
25
+ const versionsPath = path.join(storagePath, 'installed');
26
+ const matches = findInstalledVersions(versionsPath, version);
27
+ const resolvedVersion = matches.length > 0 ? matches[matches.length - 1] : null;
28
28
  // Display version (show resolution if different)
29
29
  if (resolvedVersion && resolvedVersion !== version && resolvedVersion !== `v${version}`) {
30
30
  console.log(`Version: ${version} \u2192 ${resolvedVersion}`);
@@ -33,8 +33,8 @@ import { findInstalledVersions } from '../lib/findInstalledVersions.js';
33
33
  }
34
34
  console.log(`Source: ${getVersionSource(cwd)}`);
35
35
  if (resolvedVersion) {
36
- var actualVersionPath = path.join(versionsPath, resolvedVersion);
37
- var nodePath = path.join(actualVersionPath, 'bin', 'node');
36
+ const actualVersionPath = path.join(versionsPath, resolvedVersion);
37
+ const nodePath = path.join(actualVersionPath, 'bin', 'node');
38
38
  console.log(`Binary: ${nodePath}`);
39
39
  if (fs.existsSync(nodePath)) {
40
40
  console.log('Status: Installed');
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/which.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu which\n *\n * Show which Node binary would be used based on current directory.\n * This simulates what the nvu binary would do.\n */\nexport default function whichCmd(_args: string[]): void {\n const cwd = process.cwd();\n\n // Resolve version using the same logic as the nvu binary\n const version = resolveVersion(cwd);\n\n if (!version) {\n console.log('No Node version configured for this directory.');\n console.log('');\n console.log('To configure a version:');\n console.log(' nvu local <version> - Set version for this project');\n console.log(' nvu default <version> - Set global default');\n exit(1);\n return;\n }\n\n // Resolve partial version to exact installed version\n var versionsPath = path.join(storagePath, 'installed');\n var matches = findInstalledVersions(versionsPath, version);\n var resolvedVersion = matches.length > 0 ? matches[matches.length - 1] : null;\n\n // Display version (show resolution if different)\n if (resolvedVersion && resolvedVersion !== version && resolvedVersion !== `v${version}`) {\n console.log(`Version: ${version} \\u2192 ${resolvedVersion}`);\n } else {\n console.log(`Version: ${resolvedVersion || version}`);\n }\n console.log(`Source: ${getVersionSource(cwd)}`);\n\n if (resolvedVersion) {\n var actualVersionPath = path.join(versionsPath, resolvedVersion);\n var nodePath = path.join(actualVersionPath, 'bin', 'node');\n console.log(`Binary: ${nodePath}`);\n if (fs.existsSync(nodePath)) {\n console.log('Status: Installed');\n } else {\n console.log('Status: Directory exists but binary not found');\n }\n } else {\n console.log(`Status: Not installed (run: nvu install ${version})`);\n }\n\n exit(0);\n}\n\n/**\n * Resolve version from config files (mirrors nvu binary logic)\n */\nfunction resolveVersion(cwd: string): string | null {\n // Walk up directories looking for .nvurc or .nvmrc\n let dir = cwd;\n while (true) {\n // Check .nvurc first\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return fs.readFileSync(nvurcPath, 'utf8').trim();\n }\n\n // Check .nvmrc\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return fs.readFileSync(nvmrcPath, 'utf8').trim();\n }\n\n // Move to parent\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n // Check global default\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return fs.readFileSync(defaultPath, 'utf8').trim();\n }\n\n return null;\n}\n\n/**\n * Determine the source of the version (for display)\n */\nfunction getVersionSource(cwd: string): string {\n let dir = cwd;\n while (true) {\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return nvurcPath;\n }\n\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return nvmrcPath;\n }\n\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return `${defaultPath} (global default)`;\n }\n\n return 'none';\n}\n"],"names":["exit","fs","path","storagePath","findInstalledVersions","whichCmd","_args","cwd","process","version","resolveVersion","console","log","versionsPath","join","matches","resolvedVersion","length","getVersionSource","actualVersionPath","nodePath","existsSync","dir","nvurcPath","readFileSync","trim","nvmrcPath","parent","dirname","defaultPath"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/commands/which.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport path from 'path';\nimport { storagePath } from '../constants.ts';\nimport { findInstalledVersions } from '../lib/findInstalledVersions.ts';\n\n/**\n * nvu which\n *\n * Show which Node binary would be used based on current directory.\n * This simulates what the nvu binary would do.\n */\nexport default function whichCmd(_args: string[]): void {\n const cwd = process.cwd();\n\n // Resolve version using the same logic as the nvu binary\n const version = resolveVersion(cwd);\n\n if (!version) {\n console.log('No Node version configured for this directory.');\n console.log('');\n console.log('To configure a version:');\n console.log(' nvu local <version> - Set version for this project');\n console.log(' nvu default <version> - Set global default');\n exit(1);\n return;\n }\n\n // Resolve partial version to exact installed version\n const versionsPath = path.join(storagePath, 'installed');\n const matches = findInstalledVersions(versionsPath, version);\n const resolvedVersion = matches.length > 0 ? matches[matches.length - 1] : null;\n\n // Display version (show resolution if different)\n if (resolvedVersion && resolvedVersion !== version && resolvedVersion !== `v${version}`) {\n console.log(`Version: ${version} \\u2192 ${resolvedVersion}`);\n } else {\n console.log(`Version: ${resolvedVersion || version}`);\n }\n console.log(`Source: ${getVersionSource(cwd)}`);\n\n if (resolvedVersion) {\n const actualVersionPath = path.join(versionsPath, resolvedVersion);\n const nodePath = path.join(actualVersionPath, 'bin', 'node');\n console.log(`Binary: ${nodePath}`);\n if (fs.existsSync(nodePath)) {\n console.log('Status: Installed');\n } else {\n console.log('Status: Directory exists but binary not found');\n }\n } else {\n console.log(`Status: Not installed (run: nvu install ${version})`);\n }\n\n exit(0);\n}\n\n/**\n * Resolve version from config files (mirrors nvu binary logic)\n */\nfunction resolveVersion(cwd: string): string | null {\n // Walk up directories looking for .nvurc or .nvmrc\n let dir = cwd;\n while (true) {\n // Check .nvurc first\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return fs.readFileSync(nvurcPath, 'utf8').trim();\n }\n\n // Check .nvmrc\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return fs.readFileSync(nvmrcPath, 'utf8').trim();\n }\n\n // Move to parent\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n // Check global default\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return fs.readFileSync(defaultPath, 'utf8').trim();\n }\n\n return null;\n}\n\n/**\n * Determine the source of the version (for display)\n */\nfunction getVersionSource(cwd: string): string {\n let dir = cwd;\n while (true) {\n const nvurcPath = path.join(dir, '.nvurc');\n if (fs.existsSync(nvurcPath)) {\n return nvurcPath;\n }\n\n const nvmrcPath = path.join(dir, '.nvmrc');\n if (fs.existsSync(nvmrcPath)) {\n return nvmrcPath;\n }\n\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n const defaultPath = path.join(storagePath, 'default');\n if (fs.existsSync(defaultPath)) {\n return `${defaultPath} (global default)`;\n }\n\n return 'none';\n}\n"],"names":["exit","fs","path","storagePath","findInstalledVersions","whichCmd","_args","cwd","process","version","resolveVersion","console","log","versionsPath","join","matches","resolvedVersion","length","getVersionSource","actualVersionPath","nodePath","existsSync","dir","nvurcPath","readFileSync","trim","nvmrcPath","parent","dirname","defaultPath"],"mappings":"AAAA,OAAOA,UAAU,cAAc;AAC/B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,qBAAqB,QAAQ,kCAAkC;AAExE;;;;;CAKC,GACD,eAAe,SAASC,SAASC,KAAe;IAC9C,MAAMC,MAAMC,QAAQD,GAAG;IAEvB,yDAAyD;IACzD,MAAME,UAAUC,eAAeH;IAE/B,IAAI,CAACE,SAAS;QACZE,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZD,QAAQC,GAAG,CAAC;QACZZ,KAAK;QACL;IACF;IAEA,qDAAqD;IACrD,MAAMa,eAAeX,KAAKY,IAAI,CAACX,aAAa;IAC5C,MAAMY,UAAUX,sBAAsBS,cAAcJ;IACpD,MAAMO,kBAAkBD,QAAQE,MAAM,GAAG,IAAIF,OAAO,CAACA,QAAQE,MAAM,GAAG,EAAE,GAAG;IAE3E,iDAAiD;IACjD,IAAID,mBAAmBA,oBAAoBP,WAAWO,oBAAoB,CAAC,CAAC,EAAEP,SAAS,EAAE;QACvFE,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEH,QAAQ,QAAQ,EAAEO,iBAAiB;IAC7D,OAAO;QACLL,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEI,mBAAmBP,SAAS;IACtD;IACAE,QAAQC,GAAG,CAAC,CAAC,QAAQ,EAAEM,iBAAiBX,MAAM;IAE9C,IAAIS,iBAAiB;QACnB,MAAMG,oBAAoBjB,KAAKY,IAAI,CAACD,cAAcG;QAClD,MAAMI,WAAWlB,KAAKY,IAAI,CAACK,mBAAmB,OAAO;QACrDR,QAAQC,GAAG,CAAC,CAAC,QAAQ,EAAEQ,UAAU;QACjC,IAAInB,GAAGoB,UAAU,CAACD,WAAW;YAC3BT,QAAQC,GAAG,CAAC;QACd,OAAO;YACLD,QAAQC,GAAG,CAAC;QACd;IACF,OAAO;QACLD,QAAQC,GAAG,CAAC,CAAC,wCAAwC,EAAEH,QAAQ,CAAC,CAAC;IACnE;IAEAT,KAAK;AACP;AAEA;;CAEC,GACD,SAASU,eAAeH,GAAW;IACjC,mDAAmD;IACnD,IAAIe,MAAMf;IACV,MAAO,KAAM;QACX,qBAAqB;QACrB,MAAMgB,YAAYrB,KAAKY,IAAI,CAACQ,KAAK;QACjC,IAAIrB,GAAGoB,UAAU,CAACE,YAAY;YAC5B,OAAOtB,GAAGuB,YAAY,CAACD,WAAW,QAAQE,IAAI;QAChD;QAEA,eAAe;QACf,MAAMC,YAAYxB,KAAKY,IAAI,CAACQ,KAAK;QACjC,IAAIrB,GAAGoB,UAAU,CAACK,YAAY;YAC5B,OAAOzB,GAAGuB,YAAY,CAACE,WAAW,QAAQD,IAAI;QAChD;QAEA,iBAAiB;QACjB,MAAME,SAASzB,KAAK0B,OAAO,CAACN;QAC5B,IAAIK,WAAWL,KAAK;QACpBA,MAAMK;IACR;IAEA,uBAAuB;IACvB,MAAME,cAAc3B,KAAKY,IAAI,CAACX,aAAa;IAC3C,IAAIF,GAAGoB,UAAU,CAACQ,cAAc;QAC9B,OAAO5B,GAAGuB,YAAY,CAACK,aAAa,QAAQJ,IAAI;IAClD;IAEA,OAAO;AACT;AAEA;;CAEC,GACD,SAASP,iBAAiBX,GAAW;IACnC,IAAIe,MAAMf;IACV,MAAO,KAAM;QACX,MAAMgB,YAAYrB,KAAKY,IAAI,CAACQ,KAAK;QACjC,IAAIrB,GAAGoB,UAAU,CAACE,YAAY;YAC5B,OAAOA;QACT;QAEA,MAAMG,YAAYxB,KAAKY,IAAI,CAACQ,KAAK;QACjC,IAAIrB,GAAGoB,UAAU,CAACK,YAAY;YAC5B,OAAOA;QACT;QAEA,MAAMC,SAASzB,KAAK0B,OAAO,CAACN;QAC5B,IAAIK,WAAWL,KAAK;QACpBA,MAAMK;IACR;IAEA,MAAME,cAAc3B,KAAKY,IAAI,CAACX,aAAa;IAC3C,IAAIF,GAAGoB,UAAU,CAACQ,cAAc;QAC9B,OAAO,GAAGA,YAAY,iBAAiB,CAAC;IAC1C;IAEA,OAAO;AACT"}
@@ -6,44 +6,44 @@ import _Module from 'module';
6
6
  import os from 'os';
7
7
  import path from 'path';
8
8
  // Use existing require in CJS, or createRequire in ESM (Node 12.2+)
9
- var _require = typeof require === 'undefined' ? _Module.createRequire(import.meta.url) : require;
10
- var hasHomedir = typeof os.homedir === 'function';
9
+ const _require = typeof require === 'undefined' ? _Module.createRequire(import.meta.url) : require;
10
+ const hasHomedir = typeof os.homedir === 'function';
11
11
  export function homedir() {
12
12
  if (hasHomedir) {
13
13
  return os.homedir();
14
14
  }
15
- var home = _require('homedir-polyfill');
15
+ const home = _require('homedir-polyfill');
16
16
  return home();
17
17
  }
18
18
  /**
19
19
  * String.prototype.endsWith wrapper for Node.js 0.8+
20
20
  * - Uses native endsWith on Node 4.0+ / ES2015+
21
21
  * - Falls back to lastIndexOf on Node 0.8-3.x
22
- */ var hasEndsWith = typeof String.prototype.endsWith === 'function';
22
+ */ const hasEndsWith = typeof String.prototype.endsWith === 'function';
23
23
  export function stringEndsWith(str, search, position) {
24
24
  if (hasEndsWith) {
25
25
  return str.endsWith(search, position);
26
26
  }
27
- var len = position === undefined ? str.length : position;
27
+ const len = position === undefined ? str.length : position;
28
28
  return str.lastIndexOf(search) === len - search.length;
29
29
  }
30
30
  /**
31
31
  * Recursive mkdir for Node.js 0.8+
32
32
  */ export function mkdirpSync(dir) {
33
- var mkdirp = _require('mkdirp-classic');
33
+ const mkdirp = _require('mkdirp-classic');
34
34
  mkdirp.sync(dir);
35
35
  }
36
36
  /**
37
37
  * Recursive rm for Node.js 0.8+
38
38
  */ export function rmSync(dir) {
39
- var safeRmSync = _require('fs-remove-compat').safeRmSync;
39
+ const safeRmSync = _require('fs-remove-compat').safeRmSync;
40
40
  safeRmSync(dir);
41
41
  }
42
42
  export function readdirWithTypes(dir) {
43
- var names = fs.readdirSync(dir);
43
+ const names = fs.readdirSync(dir);
44
44
  return names.map((name)=>{
45
- var fullPath = path.join(dir, name);
46
- var stat;
45
+ const fullPath = path.join(dir, name);
46
+ let stat;
47
47
  try {
48
48
  stat = fs.statSync(fullPath);
49
49
  } catch (_e) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport fs from 'fs';\nimport _Module from 'module';\nimport os from 'os';\nimport path from 'path';\n\n// Use existing require in CJS, or createRequire in ESM (Node 12.2+)\nvar _require = typeof require === 'undefined' ? _Module.createRequire(import.meta.url) : require;\n\nvar hasHomedir = typeof os.homedir === 'function';\n\nexport function homedir(): string {\n if (hasHomedir) {\n return os.homedir();\n }\n var home = _require('homedir-polyfill');\n return home();\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nvar hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n var len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * Recursive mkdir for Node.js 0.8+\n */\nexport function mkdirpSync(dir: string): void {\n var mkdirp = _require('mkdirp-classic');\n mkdirp.sync(dir);\n}\n\n/**\n * Recursive rm for Node.js 0.8+\n */\nexport function rmSync(dir: string): void {\n var safeRmSync = _require('fs-remove-compat').safeRmSync;\n safeRmSync(dir);\n}\n\n/**\n * Read directory entries with types for Node.js 0.8+\n * Returns array of {name, isDirectory()}\n */\nexport interface DirEntry {\n name: string;\n isDirectory(): boolean;\n}\n\nexport function readdirWithTypes(dir: string): DirEntry[] {\n var names = fs.readdirSync(dir);\n return names.map((name) => {\n var fullPath = path.join(dir, name);\n var stat: fs.Stats;\n try {\n stat = fs.statSync(fullPath);\n } catch (_e) {\n // If stat fails, treat as non-directory\n return { name: name, isDirectory: () => false };\n }\n return {\n name: name,\n isDirectory: () => stat.isDirectory(),\n };\n });\n}\n"],"names":["fs","_Module","os","path","_require","require","createRequire","url","hasHomedir","homedir","home","hasEndsWith","String","prototype","endsWith","stringEndsWith","str","search","position","len","undefined","length","lastIndexOf","mkdirpSync","dir","mkdirp","sync","rmSync","safeRmSync","readdirWithTypes","names","readdirSync","map","name","fullPath","join","stat","statSync","_e","isDirectory"],"mappings":"AAAA;;;CAGC,GACD,OAAOA,QAAQ,KAAK;AACpB,OAAOC,aAAa,SAAS;AAC7B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AAExB,oEAAoE;AACpE,IAAIC,WAAW,OAAOC,YAAY,cAAcJ,QAAQK,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAEzF,IAAIG,aAAa,OAAON,GAAGO,OAAO,KAAK;AAEvC,OAAO,SAASA;IACd,IAAID,YAAY;QACd,OAAON,GAAGO,OAAO;IACnB;IACA,IAAIC,OAAON,SAAS;IACpB,OAAOM;AACT;AAEA;;;;CAIC,GACD,IAAIC,cAAc,OAAOC,OAAOC,SAAS,CAACC,QAAQ,KAAK;AAEvD,OAAO,SAASC,eAAeC,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIP,aAAa;QACf,OAAOK,IAAIF,QAAQ,CAACG,QAAQC;IAC9B;IACA,IAAIC,MAAMD,aAAaE,YAAYJ,IAAIK,MAAM,GAAGH;IAChD,OAAOF,IAAIM,WAAW,CAACL,YAAYE,MAAMF,OAAOI,MAAM;AACxD;AAEA;;CAEC,GACD,OAAO,SAASE,WAAWC,GAAW;IACpC,IAAIC,SAASrB,SAAS;IACtBqB,OAAOC,IAAI,CAACF;AACd;AAEA;;CAEC,GACD,OAAO,SAASG,OAAOH,GAAW;IAChC,IAAII,aAAaxB,SAAS,oBAAoBwB,UAAU;IACxDA,WAAWJ;AACb;AAWA,OAAO,SAASK,iBAAiBL,GAAW;IAC1C,IAAIM,QAAQ9B,GAAG+B,WAAW,CAACP;IAC3B,OAAOM,MAAME,GAAG,CAAC,CAACC;QAChB,IAAIC,WAAW/B,KAAKgC,IAAI,CAACX,KAAKS;QAC9B,IAAIG;QACJ,IAAI;YACFA,OAAOpC,GAAGqC,QAAQ,CAACH;QACrB,EAAE,OAAOI,IAAI;YACX,wCAAwC;YACxC,OAAO;gBAAEL,MAAMA;gBAAMM,aAAa,IAAM;YAAM;QAChD;QACA,OAAO;YACLN,MAAMA;YACNM,aAAa,IAAMH,KAAKG,WAAW;QACrC;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/compat.ts"],"sourcesContent":["/**\n * Compatibility Layer for Node.js 0.8+\n * Local to this package - contains only needed functions.\n */\nimport fs from 'fs';\nimport _Module from 'module';\nimport os from 'os';\nimport path from 'path';\n\n// Use existing require in CJS, or createRequire in ESM (Node 12.2+)\nconst _require = typeof require === 'undefined' ? _Module.createRequire(import.meta.url) : require;\n\nconst hasHomedir = typeof os.homedir === 'function';\n\nexport function homedir(): string {\n if (hasHomedir) {\n return os.homedir();\n }\n const home = _require('homedir-polyfill');\n return home();\n}\n\n/**\n * String.prototype.endsWith wrapper for Node.js 0.8+\n * - Uses native endsWith on Node 4.0+ / ES2015+\n * - Falls back to lastIndexOf on Node 0.8-3.x\n */\nconst hasEndsWith = typeof String.prototype.endsWith === 'function';\n\nexport function stringEndsWith(str: string, search: string, position?: number): boolean {\n if (hasEndsWith) {\n return str.endsWith(search, position);\n }\n const len = position === undefined ? str.length : position;\n return str.lastIndexOf(search) === len - search.length;\n}\n\n/**\n * Recursive mkdir for Node.js 0.8+\n */\nexport function mkdirpSync(dir: string): void {\n const mkdirp = _require('mkdirp-classic');\n mkdirp.sync(dir);\n}\n\n/**\n * Recursive rm for Node.js 0.8+\n */\nexport function rmSync(dir: string): void {\n const safeRmSync = _require('fs-remove-compat').safeRmSync;\n safeRmSync(dir);\n}\n\n/**\n * Read directory entries with types for Node.js 0.8+\n * Returns array of {name, isDirectory()}\n */\nexport interface DirEntry {\n name: string;\n isDirectory(): boolean;\n}\n\nexport function readdirWithTypes(dir: string): DirEntry[] {\n const names = fs.readdirSync(dir);\n return names.map((name) => {\n const fullPath = path.join(dir, name);\n let stat: fs.Stats;\n try {\n stat = fs.statSync(fullPath);\n } catch (_e) {\n // If stat fails, treat as non-directory\n return { name: name, isDirectory: () => false };\n }\n return {\n name: name,\n isDirectory: () => stat.isDirectory(),\n };\n });\n}\n"],"names":["fs","_Module","os","path","_require","require","createRequire","url","hasHomedir","homedir","home","hasEndsWith","String","prototype","endsWith","stringEndsWith","str","search","position","len","undefined","length","lastIndexOf","mkdirpSync","dir","mkdirp","sync","rmSync","safeRmSync","readdirWithTypes","names","readdirSync","map","name","fullPath","join","stat","statSync","_e","isDirectory"],"mappings":"AAAA;;;CAGC,GACD,OAAOA,QAAQ,KAAK;AACpB,OAAOC,aAAa,SAAS;AAC7B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AAExB,oEAAoE;AACpE,MAAMC,WAAW,OAAOC,YAAY,cAAcJ,QAAQK,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE3F,MAAMG,aAAa,OAAON,GAAGO,OAAO,KAAK;AAEzC,OAAO,SAASA;IACd,IAAID,YAAY;QACd,OAAON,GAAGO,OAAO;IACnB;IACA,MAAMC,OAAON,SAAS;IACtB,OAAOM;AACT;AAEA;;;;CAIC,GACD,MAAMC,cAAc,OAAOC,OAAOC,SAAS,CAACC,QAAQ,KAAK;AAEzD,OAAO,SAASC,eAAeC,GAAW,EAAEC,MAAc,EAAEC,QAAiB;IAC3E,IAAIP,aAAa;QACf,OAAOK,IAAIF,QAAQ,CAACG,QAAQC;IAC9B;IACA,MAAMC,MAAMD,aAAaE,YAAYJ,IAAIK,MAAM,GAAGH;IAClD,OAAOF,IAAIM,WAAW,CAACL,YAAYE,MAAMF,OAAOI,MAAM;AACxD;AAEA;;CAEC,GACD,OAAO,SAASE,WAAWC,GAAW;IACpC,MAAMC,SAASrB,SAAS;IACxBqB,OAAOC,IAAI,CAACF;AACd;AAEA;;CAEC,GACD,OAAO,SAASG,OAAOH,GAAW;IAChC,MAAMI,aAAaxB,SAAS,oBAAoBwB,UAAU;IAC1DA,WAAWJ;AACb;AAWA,OAAO,SAASK,iBAAiBL,GAAW;IAC1C,MAAMM,QAAQ9B,GAAG+B,WAAW,CAACP;IAC7B,OAAOM,MAAME,GAAG,CAAC,CAACC;QAChB,MAAMC,WAAW/B,KAAKgC,IAAI,CAACX,KAAKS;QAChC,IAAIG;QACJ,IAAI;YACFA,OAAOpC,GAAGqC,QAAQ,CAACH;QACrB,EAAE,OAAOI,IAAI;YACX,wCAAwC;YACxC,OAAO;gBAAEL,MAAMA;gBAAMM,aAAa,IAAM;YAAM;QAChD;QACA,OAAO;YACLN,MAAMA;YACNM,aAAa,IAAMH,KAAKG,WAAW;QACrC;IACF;AACF"}
@@ -5,12 +5,12 @@ import { readdirWithTypes } from '../compat.js';
5
5
  * Compare two semver version strings (e.g., "20.19.0" vs "20.9.1")
6
6
  * Returns: negative if a < b, positive if a > b, 0 if equal
7
7
  */ function compareVersions(a, b) {
8
- var aParts = a.replace(/^v/, '').split('.');
9
- var bParts = b.replace(/^v/, '').split('.');
10
- var len = Math.max(aParts.length, bParts.length);
11
- for(var i = 0; i < len; i++){
12
- var aNum = parseInt(aParts[i], 10) || 0;
13
- var bNum = parseInt(bParts[i], 10) || 0;
8
+ const aParts = a.replace(/^v/, '').split('.');
9
+ const bParts = b.replace(/^v/, '').split('.');
10
+ const len = Math.max(aParts.length, bParts.length);
11
+ for(let i = 0; i < len; i++){
12
+ const aNum = parseInt(aParts[i], 10) || 0;
13
+ const bNum = parseInt(bParts[i], 10) || 0;
14
14
  if (aNum !== bNum) {
15
15
  return aNum - bNum;
16
16
  }
@@ -24,17 +24,17 @@ import { readdirWithTypes } from '../compat.js';
24
24
  if (!fs.existsSync(versionsPath)) {
25
25
  return [];
26
26
  }
27
- var normalizedVersion = version.replace(/^v/, '');
28
- var matches = [];
27
+ const normalizedVersion = version.replace(/^v/, '');
28
+ const matches = [];
29
29
  // Try exact matches first
30
- var exactMatches = [
30
+ const exactMatches = [
31
31
  version,
32
32
  `v${normalizedVersion}`,
33
33
  normalizedVersion
34
34
  ];
35
- for(var i = 0; i < exactMatches.length; i++){
36
- var v = exactMatches[i];
37
- var versionPath = path.join(versionsPath, v);
35
+ for(let i = 0; i < exactMatches.length; i++){
36
+ const v = exactMatches[i];
37
+ const versionPath = path.join(versionsPath, v);
38
38
  if (fs.existsSync(versionPath) && fs.statSync(versionPath).isDirectory()) {
39
39
  if (matches.indexOf(v) === -1) {
40
40
  matches.push(v);
@@ -46,11 +46,11 @@ import { readdirWithTypes } from '../compat.js';
46
46
  return matches;
47
47
  }
48
48
  // Try partial match (e.g., "20" matches "v20.19.6")
49
- var entries = readdirWithTypes(versionsPath);
50
- for(var j = 0; j < entries.length; j++){
51
- var entry = entries[j];
49
+ const entries = readdirWithTypes(versionsPath);
50
+ for(let j = 0; j < entries.length; j++){
51
+ const entry = entries[j];
52
52
  if (!entry.isDirectory()) continue;
53
- var dirVersion = entry.name.replace(/^v/, '');
53
+ const dirVersion = entry.name.replace(/^v/, '');
54
54
  if (dirVersion.indexOf(`${normalizedVersion}.`) === 0) {
55
55
  matches.push(entry.name);
56
56
  }
@@ -65,9 +65,9 @@ import { readdirWithTypes } from '../compat.js';
65
65
  if (!fs.existsSync(versionsPath)) {
66
66
  return [];
67
67
  }
68
- var entries = readdirWithTypes(versionsPath);
69
- var versions = [];
70
- for(var i = 0; i < entries.length; i++){
68
+ const entries = readdirWithTypes(versionsPath);
69
+ const versions = [];
70
+ for(let i = 0; i < entries.length; i++){
71
71
  if (entries[i].isDirectory()) {
72
72
  versions.push(entries[i].name);
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/findInstalledVersions.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\n\n/**\n * Compare two semver version strings (e.g., \"20.19.0\" vs \"20.9.1\")\n * Returns: negative if a < b, positive if a > b, 0 if equal\n */\nfunction compareVersions(a: string, b: string): number {\n var aParts = a.replace(/^v/, '').split('.');\n var bParts = b.replace(/^v/, '').split('.');\n var len = Math.max(aParts.length, bParts.length);\n\n for (var i = 0; i < len; i++) {\n var aNum = parseInt(aParts[i], 10) || 0;\n var bNum = parseInt(bParts[i], 10) || 0;\n if (aNum !== bNum) {\n return aNum - bNum;\n }\n }\n return 0;\n}\n\n/**\n * Find all installed versions matching the given version string\n * Results are sorted in ascending semver order (lowest first, highest last)\n */\nexport function findInstalledVersions(versionsPath: string, version: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n var normalizedVersion = version.replace(/^v/, '');\n var matches: string[] = [];\n\n // Try exact matches first\n var exactMatches = [version, `v${normalizedVersion}`, normalizedVersion];\n for (var i = 0; i < exactMatches.length; i++) {\n var v = exactMatches[i];\n var versionPath = path.join(versionsPath, v);\n if (fs.existsSync(versionPath) && fs.statSync(versionPath).isDirectory()) {\n if (matches.indexOf(v) === -1) {\n matches.push(v);\n }\n }\n }\n\n // If we have an exact match, return just that\n if (matches.length > 0) {\n return matches;\n }\n\n // Try partial match (e.g., \"20\" matches \"v20.19.6\")\n var entries = readdirWithTypes(versionsPath);\n for (var j = 0; j < entries.length; j++) {\n var entry = entries[j];\n if (!entry.isDirectory()) continue;\n var dirVersion = entry.name.replace(/^v/, '');\n if (dirVersion.indexOf(`${normalizedVersion}.`) === 0) {\n matches.push(entry.name);\n }\n }\n\n // Sort by semver (ascending) so highest version is last\n matches.sort(compareVersions);\n\n return matches;\n}\n\n/**\n * Get all installed versions\n */\nexport function getAllInstalledVersions(versionsPath: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n var entries = readdirWithTypes(versionsPath);\n var versions: string[] = [];\n for (var i = 0; i < entries.length; i++) {\n if (entries[i].isDirectory()) {\n versions.push(entries[i].name);\n }\n }\n\n return versions;\n}\n"],"names":["fs","path","readdirWithTypes","compareVersions","a","b","aParts","replace","split","bParts","len","Math","max","length","i","aNum","parseInt","bNum","findInstalledVersions","versionsPath","version","existsSync","normalizedVersion","matches","exactMatches","v","versionPath","join","statSync","isDirectory","indexOf","push","entries","j","entry","dirVersion","name","sort","getAllInstalledVersions","versions"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,gBAAgB,QAAQ,eAAe;AAEhD;;;CAGC,GACD,SAASC,gBAAgBC,CAAS,EAAEC,CAAS;IAC3C,IAAIC,SAASF,EAAEG,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACvC,IAAIC,SAASJ,EAAEE,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACvC,IAAIE,MAAMC,KAAKC,GAAG,CAACN,OAAOO,MAAM,EAAEJ,OAAOI,MAAM;IAE/C,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,KAAKI,IAAK;QAC5B,IAAIC,OAAOC,SAASV,MAAM,CAACQ,EAAE,EAAE,OAAO;QACtC,IAAIG,OAAOD,SAASP,MAAM,CAACK,EAAE,EAAE,OAAO;QACtC,IAAIC,SAASE,MAAM;YACjB,OAAOF,OAAOE;QAChB;IACF;IACA,OAAO;AACT;AAEA;;;CAGC,GACD,OAAO,SAASC,sBAAsBC,YAAoB,EAAEC,OAAe;IACzE,IAAI,CAACpB,GAAGqB,UAAU,CAACF,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,IAAIG,oBAAoBF,QAAQb,OAAO,CAAC,MAAM;IAC9C,IAAIgB,UAAoB,EAAE;IAE1B,0BAA0B;IAC1B,IAAIC,eAAe;QAACJ;QAAS,CAAC,CAAC,EAAEE,mBAAmB;QAAEA;KAAkB;IACxE,IAAK,IAAIR,IAAI,GAAGA,IAAIU,aAAaX,MAAM,EAAEC,IAAK;QAC5C,IAAIW,IAAID,YAAY,CAACV,EAAE;QACvB,IAAIY,cAAczB,KAAK0B,IAAI,CAACR,cAAcM;QAC1C,IAAIzB,GAAGqB,UAAU,CAACK,gBAAgB1B,GAAG4B,QAAQ,CAACF,aAAaG,WAAW,IAAI;YACxE,IAAIN,QAAQO,OAAO,CAACL,OAAO,CAAC,GAAG;gBAC7BF,QAAQQ,IAAI,CAACN;YACf;QACF;IACF;IAEA,8CAA8C;IAC9C,IAAIF,QAAQV,MAAM,GAAG,GAAG;QACtB,OAAOU;IACT;IAEA,oDAAoD;IACpD,IAAIS,UAAU9B,iBAAiBiB;IAC/B,IAAK,IAAIc,IAAI,GAAGA,IAAID,QAAQnB,MAAM,EAAEoB,IAAK;QACvC,IAAIC,QAAQF,OAAO,CAACC,EAAE;QACtB,IAAI,CAACC,MAAML,WAAW,IAAI;QAC1B,IAAIM,aAAaD,MAAME,IAAI,CAAC7B,OAAO,CAAC,MAAM;QAC1C,IAAI4B,WAAWL,OAAO,CAAC,GAAGR,kBAAkB,CAAC,CAAC,MAAM,GAAG;YACrDC,QAAQQ,IAAI,CAACG,MAAME,IAAI;QACzB;IACF;IAEA,wDAAwD;IACxDb,QAAQc,IAAI,CAAClC;IAEb,OAAOoB;AACT;AAEA;;CAEC,GACD,OAAO,SAASe,wBAAwBnB,YAAoB;IAC1D,IAAI,CAACnB,GAAGqB,UAAU,CAACF,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,IAAIa,UAAU9B,iBAAiBiB;IAC/B,IAAIoB,WAAqB,EAAE;IAC3B,IAAK,IAAIzB,IAAI,GAAGA,IAAIkB,QAAQnB,MAAM,EAAEC,IAAK;QACvC,IAAIkB,OAAO,CAAClB,EAAE,CAACe,WAAW,IAAI;YAC5BU,SAASR,IAAI,CAACC,OAAO,CAAClB,EAAE,CAACsB,IAAI;QAC/B;IACF;IAEA,OAAOG;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/findInstalledVersions.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { readdirWithTypes } from '../compat.ts';\n\n/**\n * Compare two semver version strings (e.g., \"20.19.0\" vs \"20.9.1\")\n * Returns: negative if a < b, positive if a > b, 0 if equal\n */\nfunction compareVersions(a: string, b: string): number {\n const aParts = a.replace(/^v/, '').split('.');\n const bParts = b.replace(/^v/, '').split('.');\n const len = Math.max(aParts.length, bParts.length);\n\n for (let i = 0; i < len; i++) {\n const aNum = parseInt(aParts[i], 10) || 0;\n const bNum = parseInt(bParts[i], 10) || 0;\n if (aNum !== bNum) {\n return aNum - bNum;\n }\n }\n return 0;\n}\n\n/**\n * Find all installed versions matching the given version string\n * Results are sorted in ascending semver order (lowest first, highest last)\n */\nexport function findInstalledVersions(versionsPath: string, version: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n const normalizedVersion = version.replace(/^v/, '');\n const matches: string[] = [];\n\n // Try exact matches first\n const exactMatches = [version, `v${normalizedVersion}`, normalizedVersion];\n for (let i = 0; i < exactMatches.length; i++) {\n const v = exactMatches[i];\n const versionPath = path.join(versionsPath, v);\n if (fs.existsSync(versionPath) && fs.statSync(versionPath).isDirectory()) {\n if (matches.indexOf(v) === -1) {\n matches.push(v);\n }\n }\n }\n\n // If we have an exact match, return just that\n if (matches.length > 0) {\n return matches;\n }\n\n // Try partial match (e.g., \"20\" matches \"v20.19.6\")\n const entries = readdirWithTypes(versionsPath);\n for (let j = 0; j < entries.length; j++) {\n const entry = entries[j];\n if (!entry.isDirectory()) continue;\n const dirVersion = entry.name.replace(/^v/, '');\n if (dirVersion.indexOf(`${normalizedVersion}.`) === 0) {\n matches.push(entry.name);\n }\n }\n\n // Sort by semver (ascending) so highest version is last\n matches.sort(compareVersions);\n\n return matches;\n}\n\n/**\n * Get all installed versions\n */\nexport function getAllInstalledVersions(versionsPath: string): string[] {\n if (!fs.existsSync(versionsPath)) {\n return [];\n }\n\n const entries = readdirWithTypes(versionsPath);\n const versions: string[] = [];\n for (let i = 0; i < entries.length; i++) {\n if (entries[i].isDirectory()) {\n versions.push(entries[i].name);\n }\n }\n\n return versions;\n}\n"],"names":["fs","path","readdirWithTypes","compareVersions","a","b","aParts","replace","split","bParts","len","Math","max","length","i","aNum","parseInt","bNum","findInstalledVersions","versionsPath","version","existsSync","normalizedVersion","matches","exactMatches","v","versionPath","join","statSync","isDirectory","indexOf","push","entries","j","entry","dirVersion","name","sort","getAllInstalledVersions","versions"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,SAASC,gBAAgB,QAAQ,eAAe;AAEhD;;;CAGC,GACD,SAASC,gBAAgBC,CAAS,EAAEC,CAAS;IAC3C,MAAMC,SAASF,EAAEG,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACzC,MAAMC,SAASJ,EAAEE,OAAO,CAAC,MAAM,IAAIC,KAAK,CAAC;IACzC,MAAME,MAAMC,KAAKC,GAAG,CAACN,OAAOO,MAAM,EAAEJ,OAAOI,MAAM;IAEjD,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,KAAKI,IAAK;QAC5B,MAAMC,OAAOC,SAASV,MAAM,CAACQ,EAAE,EAAE,OAAO;QACxC,MAAMG,OAAOD,SAASP,MAAM,CAACK,EAAE,EAAE,OAAO;QACxC,IAAIC,SAASE,MAAM;YACjB,OAAOF,OAAOE;QAChB;IACF;IACA,OAAO;AACT;AAEA;;;CAGC,GACD,OAAO,SAASC,sBAAsBC,YAAoB,EAAEC,OAAe;IACzE,IAAI,CAACpB,GAAGqB,UAAU,CAACF,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,MAAMG,oBAAoBF,QAAQb,OAAO,CAAC,MAAM;IAChD,MAAMgB,UAAoB,EAAE;IAE5B,0BAA0B;IAC1B,MAAMC,eAAe;QAACJ;QAAS,CAAC,CAAC,EAAEE,mBAAmB;QAAEA;KAAkB;IAC1E,IAAK,IAAIR,IAAI,GAAGA,IAAIU,aAAaX,MAAM,EAAEC,IAAK;QAC5C,MAAMW,IAAID,YAAY,CAACV,EAAE;QACzB,MAAMY,cAAczB,KAAK0B,IAAI,CAACR,cAAcM;QAC5C,IAAIzB,GAAGqB,UAAU,CAACK,gBAAgB1B,GAAG4B,QAAQ,CAACF,aAAaG,WAAW,IAAI;YACxE,IAAIN,QAAQO,OAAO,CAACL,OAAO,CAAC,GAAG;gBAC7BF,QAAQQ,IAAI,CAACN;YACf;QACF;IACF;IAEA,8CAA8C;IAC9C,IAAIF,QAAQV,MAAM,GAAG,GAAG;QACtB,OAAOU;IACT;IAEA,oDAAoD;IACpD,MAAMS,UAAU9B,iBAAiBiB;IACjC,IAAK,IAAIc,IAAI,GAAGA,IAAID,QAAQnB,MAAM,EAAEoB,IAAK;QACvC,MAAMC,QAAQF,OAAO,CAACC,EAAE;QACxB,IAAI,CAACC,MAAML,WAAW,IAAI;QAC1B,MAAMM,aAAaD,MAAME,IAAI,CAAC7B,OAAO,CAAC,MAAM;QAC5C,IAAI4B,WAAWL,OAAO,CAAC,GAAGR,kBAAkB,CAAC,CAAC,MAAM,GAAG;YACrDC,QAAQQ,IAAI,CAACG,MAAME,IAAI;QACzB;IACF;IAEA,wDAAwD;IACxDb,QAAQc,IAAI,CAAClC;IAEb,OAAOoB;AACT;AAEA;;CAEC,GACD,OAAO,SAASe,wBAAwBnB,YAAoB;IAC1D,IAAI,CAACnB,GAAGqB,UAAU,CAACF,eAAe;QAChC,OAAO,EAAE;IACX;IAEA,MAAMa,UAAU9B,iBAAiBiB;IACjC,MAAMoB,WAAqB,EAAE;IAC7B,IAAK,IAAIzB,IAAI,GAAGA,IAAIkB,QAAQnB,MAAM,EAAEC,IAAK;QACvC,IAAIkB,OAAO,CAAClB,EAAE,CAACe,WAAW,IAAI;YAC5BU,SAASR,IAAI,CAACC,OAAO,CAAClB,EAAE,CAACsB,IAAI;QAC/B;IACF;IAEA,OAAOG;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-version-use",
3
- "version": "2.1.5",
3
+ "version": "2.1.6",
4
4
  "description": "Cross-platform solution for using multiple versions of node. Useful for compatibility testing",
5
5
  "keywords": [
6
6
  "node",
@@ -48,34 +48,34 @@
48
48
  "version": "tsds version"
49
49
  },
50
50
  "dependencies": {
51
- "cross-spawn-cb": "^2.4.11",
52
- "exit-compat": "^1.0.0",
53
- "fs-remove-compat": "^0.2.1",
51
+ "cross-spawn-cb": "^2.4.14",
52
+ "exit-compat": "^1.0.3",
53
+ "fs-remove-compat": "^0.2.3",
54
54
  "getopts-compat": "^2.2.6",
55
55
  "homedir-polyfill": "^1.0.3",
56
- "install-module-linked": "^1.3.13",
56
+ "install-module-linked": "^1.3.16",
57
57
  "mkdirp-classic": "^0.5.3",
58
58
  "node-resolve-versions": "^1.3.11",
59
- "node-version-utils": "^1.3.15",
60
- "queue-cb": "^1.6.1",
61
- "resolve-bin-sync": "^1.0.10",
62
- "spawn-streaming": "^1.1.13",
63
- "spawn-term": "^3.3.2"
59
+ "node-version-utils": "^1.3.17",
60
+ "queue-cb": "^1.6.3",
61
+ "resolve-bin-sync": "^1.0.12",
62
+ "spawn-streaming": "^1.1.15",
63
+ "spawn-term": "^3.3.5"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/mocha": "^10.0.10",
67
67
  "@types/node": "^25.0.1",
68
68
  "cr": "^0.1.0",
69
- "fs-copy-compat": "^0.1.3",
70
- "fs-remove-compat": "^0.2.1",
71
- "is-version": "^1.0.7",
69
+ "fs-copy-compat": "^0.1.5",
70
+ "fs-remove-compat": "^0.2.3",
71
+ "is-version": "^1.0.9",
72
72
  "mkdirp-classic": "^0.5.3",
73
- "node-version-install": "^1.5.1",
74
- "node-version-use": "^2.1.4",
73
+ "node-version-install": "^1.5.2",
74
+ "node-version-use": "^2.1.5",
75
75
  "os-shim": "^0.1.3",
76
76
  "pinkie-promise": "^2.0.1",
77
77
  "ts-dev-stack": "^1.21.3",
78
- "tsds-config": "^0.2.0"
78
+ "tsds-config": "^0.2.1"
79
79
  },
80
80
  "engines": {
81
81
  "node": ">=0.8"