node-version-use 2.1.1 → 2.1.3

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.
@@ -0,0 +1,76 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { readdirWithTypes } from '../compat.js';
4
+ /**
5
+ * Compare two semver version strings (e.g., "20.19.0" vs "20.9.1")
6
+ * Returns: negative if a < b, positive if a > b, 0 if equal
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;
14
+ if (aNum !== bNum) {
15
+ return aNum - bNum;
16
+ }
17
+ }
18
+ return 0;
19
+ }
20
+ /**
21
+ * Find all installed versions matching the given version string
22
+ * Results are sorted in ascending semver order (lowest first, highest last)
23
+ */ export function findInstalledVersions(versionsPath, version) {
24
+ if (!fs.existsSync(versionsPath)) {
25
+ return [];
26
+ }
27
+ var normalizedVersion = version.replace(/^v/, '');
28
+ var matches = [];
29
+ // Try exact matches first
30
+ var exactMatches = [
31
+ version,
32
+ `v${normalizedVersion}`,
33
+ normalizedVersion
34
+ ];
35
+ for(var i = 0; i < exactMatches.length; i++){
36
+ var v = exactMatches[i];
37
+ var versionPath = path.join(versionsPath, v);
38
+ if (fs.existsSync(versionPath) && fs.statSync(versionPath).isDirectory()) {
39
+ if (matches.indexOf(v) === -1) {
40
+ matches.push(v);
41
+ }
42
+ }
43
+ }
44
+ // If we have an exact match, return just that
45
+ if (matches.length > 0) {
46
+ return matches;
47
+ }
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];
52
+ if (!entry.isDirectory()) continue;
53
+ var dirVersion = entry.name.replace(/^v/, '');
54
+ if (dirVersion.indexOf(`${normalizedVersion}.`) === 0) {
55
+ matches.push(entry.name);
56
+ }
57
+ }
58
+ // Sort by semver (ascending) so highest version is last
59
+ matches.sort(compareVersions);
60
+ return matches;
61
+ }
62
+ /**
63
+ * Get all installed versions
64
+ */ export function getAllInstalledVersions(versionsPath) {
65
+ if (!fs.existsSync(versionsPath)) {
66
+ return [];
67
+ }
68
+ var entries = readdirWithTypes(versionsPath);
69
+ var versions = [];
70
+ for(var i = 0; i < entries.length; i++){
71
+ if (entries[i].isDirectory()) {
72
+ versions.push(entries[i].name);
73
+ }
74
+ }
75
+ return versions;
76
+ }
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-version-use",
3
- "version": "2.1.1",
3
+ "version": "2.1.3",
4
4
  "description": "Cross-platform solution for using multiple versions of node. Useful for compatibility testing",
5
5
  "keywords": [
6
6
  "node",
@@ -70,11 +70,11 @@
70
70
  "fs-remove-compat": "^0.2.1",
71
71
  "is-version": "^1.0.7",
72
72
  "mkdirp-classic": "^0.5.3",
73
- "node-version-install": "^1.4.18",
74
- "node-version-use": "^2.1.0",
73
+ "node-version-install": "^1.5.0",
74
+ "node-version-use": "^2.1.1",
75
75
  "os-shim": "^0.1.3",
76
76
  "pinkie-promise": "^2.0.1",
77
- "ts-dev-stack": "^1.21.2",
77
+ "ts-dev-stack": "^1.21.3",
78
78
  "tsds-config": "^0.2.0"
79
79
  },
80
80
  "engines": {
@@ -258,7 +258,7 @@ function extractAndInstall(archivePath, destDir, binaryName, callback) {
258
258
  }
259
259
 
260
260
  // Binary names to install
261
- var binaries = ['node', 'npm', 'npx'];
261
+ var binaries = ['node', 'npm', 'npx', 'corepack'];
262
262
  var timestamp = Date.now();
263
263
  var _pending = binaries.length;
264
264
  var installError = null;