@rushstack/npm-check-fork 0.1.0

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.
Files changed (70) hide show
  1. package/CHANGELOG.json +17 -0
  2. package/CHANGELOG.md +11 -0
  3. package/LICENSE +21 -0
  4. package/README.md +31 -0
  5. package/lib/BestGuessHomepage.d.ts +4 -0
  6. package/lib/BestGuessHomepage.d.ts.map +1 -0
  7. package/lib/BestGuessHomepage.js +25 -0
  8. package/lib/BestGuessHomepage.js.map +1 -0
  9. package/lib/CreatePackageSummary.d.ts +4 -0
  10. package/lib/CreatePackageSummary.d.ts.map +1 -0
  11. package/lib/CreatePackageSummary.js +84 -0
  12. package/lib/CreatePackageSummary.js.map +1 -0
  13. package/lib/FindModulePath.d.ts +7 -0
  14. package/lib/FindModulePath.d.ts.map +1 -0
  15. package/lib/FindModulePath.js +27 -0
  16. package/lib/FindModulePath.js.map +1 -0
  17. package/lib/GetLatestFromRegistry.d.ts +3 -0
  18. package/lib/GetLatestFromRegistry.d.ts.map +1 -0
  19. package/lib/GetLatestFromRegistry.js +43 -0
  20. package/lib/GetLatestFromRegistry.js.map +1 -0
  21. package/lib/NpmCheck.d.ts +3 -0
  22. package/lib/NpmCheck.d.ts.map +1 -0
  23. package/lib/NpmCheck.js +29 -0
  24. package/lib/NpmCheck.js.map +1 -0
  25. package/lib/NpmCheckState.d.ts +3 -0
  26. package/lib/NpmCheckState.d.ts.map +1 -0
  27. package/lib/NpmCheckState.js +25 -0
  28. package/lib/NpmCheckState.js.map +1 -0
  29. package/lib/ReadPackageJson.d.ts +3 -0
  30. package/lib/ReadPackageJson.d.ts.map +1 -0
  31. package/lib/ReadPackageJson.js +24 -0
  32. package/lib/ReadPackageJson.js.map +1 -0
  33. package/lib/index.d.ts +4 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +9 -0
  36. package/lib/index.js.map +1 -0
  37. package/lib/interfaces/INpmCheck.d.ts +17 -0
  38. package/lib/interfaces/INpmCheck.d.ts.map +1 -0
  39. package/lib/interfaces/INpmCheck.js +9 -0
  40. package/lib/interfaces/INpmCheck.js.map +1 -0
  41. package/lib/interfaces/INpmCheckPackageSummary.d.ts +15 -0
  42. package/lib/interfaces/INpmCheckPackageSummary.d.ts.map +1 -0
  43. package/lib/interfaces/INpmCheckPackageSummary.js +3 -0
  44. package/lib/interfaces/INpmCheckPackageSummary.js.map +1 -0
  45. package/lib/interfaces/INpmCheckRegistry.d.ts +26 -0
  46. package/lib/interfaces/INpmCheckRegistry.d.ts.map +1 -0
  47. package/lib/interfaces/INpmCheckRegistry.js +3 -0
  48. package/lib/interfaces/INpmCheckRegistry.js.map +1 -0
  49. package/lib/tests/BestGuessHomepage.test.d.ts +2 -0
  50. package/lib/tests/BestGuessHomepage.test.d.ts.map +1 -0
  51. package/lib/tests/BestGuessHomepage.test.js.map +1 -0
  52. package/lib/tests/CreatePackageSummary.test.d.ts +2 -0
  53. package/lib/tests/CreatePackageSummary.test.d.ts.map +1 -0
  54. package/lib/tests/CreatePackageSummary.test.js.map +1 -0
  55. package/lib/tests/FindModulePath.test.d.ts +2 -0
  56. package/lib/tests/FindModulePath.test.d.ts.map +1 -0
  57. package/lib/tests/FindModulePath.test.js.map +1 -0
  58. package/lib/tests/GetLatestFromRegistry.test.d.ts +2 -0
  59. package/lib/tests/GetLatestFromRegistry.test.d.ts.map +1 -0
  60. package/lib/tests/GetLatestFromRegistry.test.js.map +1 -0
  61. package/lib/tests/NpmCheck.test.d.ts +2 -0
  62. package/lib/tests/NpmCheck.test.d.ts.map +1 -0
  63. package/lib/tests/NpmCheck.test.js.map +1 -0
  64. package/lib/tests/NpmCheckState.test.d.ts +2 -0
  65. package/lib/tests/NpmCheckState.test.d.ts.map +1 -0
  66. package/lib/tests/NpmCheckState.test.js.map +1 -0
  67. package/lib/tests/ReadPackageJson.test.d.ts +2 -0
  68. package/lib/tests/ReadPackageJson.test.d.ts.map +1 -0
  69. package/lib/tests/ReadPackageJson.test.js.map +1 -0
  70. package/package.json +34 -0
package/CHANGELOG.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@rushstack/npm-check-fork",
3
+ "entries": [
4
+ {
5
+ "version": "0.1.0",
6
+ "tag": "@rushstack/npm-check-fork_v0.1.0",
7
+ "date": "Sat, 18 Oct 2025 00:06:19 GMT",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "comment": "Initial fork of npm-check"
12
+ }
13
+ ]
14
+ }
15
+ }
16
+ ]
17
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # Change Log - @rushstack/npm-check-fork
2
+
3
+ This log was last generated on Sat, 18 Oct 2025 00:06:19 GMT and should not be manually modified.
4
+
5
+ ## 0.1.0
6
+ Sat, 18 Oct 2025 00:06:19 GMT
7
+
8
+ ### Minor changes
9
+
10
+ - Initial fork of npm-check
11
+
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) Dylan Greene <dylang@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # @rushstack/npm-check-fork
2
+
3
+ This package is a temporary rushstack maintained fork of [`npm-check`](https://github.com/dylang/npm-check), used internally by `rush upgrade-interactive`. It exists to address security vulnerabilities and compatibility issues present in the latest upstream version.
4
+
5
+ **Origin:**
6
+ - Forked from [`npm-check`](https://github.com/dylang/npm-check)
7
+ - Original copyright:
8
+ ```
9
+ Copyright (c) 2015 Dylan Greene
10
+ Licensed under the MIT license.
11
+ ```
12
+
13
+ **Purpose:**
14
+ This fork is expected to be temporary and will be removed once upstream issues are resolved.
15
+
16
+ ## Changes from Upstream
17
+
18
+ - **Removed unused state properties:**
19
+ Properties from the state object that were never set or used have been removed (see `INpmCheckState`).
20
+ - **Removed `peerDependencies` from `INpmCheckPackageSummary`:**
21
+ This property was deprecated in `npm-check` and was never set.
22
+ - **Removed emoji support:**
23
+ Emoji output was never used in rushstack/rush-lib and has been stripped out.
24
+ - **Downgraded `path-exists` dependency:**
25
+ The latest version of `path-exists` is ESM-only; this fork uses a compatible CommonJS version.
26
+ - **Removed `semverDiff` dependency:**
27
+ This was deprecated and its functionality has been replaced by direct usage of `semver`.
28
+
29
+ ## License
30
+
31
+ This fork retains the original MIT license from `npm-check`.
@@ -0,0 +1,4 @@
1
+ /// <reference path="../src/types/giturl-typings.d.ts" preserve="true" />
2
+ import type { INpmCheckRegistryData } from './interfaces/INpmCheckRegistry';
3
+ export default function bestGuessHomepage(data: INpmCheckRegistryData | undefined): string | false;
4
+ //# sourceMappingURL=BestGuessHomepage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BestGuessHomepage.d.ts","sourceRoot":"","sources":["../src/BestGuessHomepage.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAA2B,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAErG,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAgBjG"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /// <reference path="./types/giturl-typings.d.ts" preserve="true" />
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.default = bestGuessHomepage;
8
+ const giturl_1 = __importDefault(require("giturl"));
9
+ function bestGuessHomepage(data) {
10
+ if (!data) {
11
+ return false;
12
+ }
13
+ const packageDataForLatest = data.versions[data['dist-tags'].latest];
14
+ return packageDataForLatest
15
+ ? packageDataForLatest.homepage ||
16
+ (packageDataForLatest.bugs &&
17
+ packageDataForLatest.bugs.url &&
18
+ giturl_1.default.parse(packageDataForLatest.bugs.url.trim())) ||
19
+ (packageDataForLatest.repository &&
20
+ packageDataForLatest.repository.url &&
21
+ giturl_1.default.parse(packageDataForLatest.repository.url.trim())) ||
22
+ false
23
+ : false;
24
+ }
25
+ //# sourceMappingURL=BestGuessHomepage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BestGuessHomepage.js","sourceRoot":"","sources":["../src/BestGuessHomepage.ts"],"names":[],"mappings":";AAAA,oEAAoE;;;;;AAMpE,oCAgBC;AApBD,oDAA4B;AAI5B,SAAwB,iBAAiB,CAAC,IAAuC;IAC/E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,oBAAoB,GAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IAE9F,OAAO,oBAAoB;QACzB,CAAC,CAAC,oBAAoB,CAAC,QAAQ;YAC3B,CAAC,oBAAoB,CAAC,IAAI;gBACxB,oBAAoB,CAAC,IAAI,CAAC,GAAG;gBAC7B,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC,oBAAoB,CAAC,UAAU;gBAC9B,oBAAoB,CAAC,UAAU,CAAC,GAAG;gBACnC,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK;QACT,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC","sourcesContent":["/// <reference path=\"./types/giturl-typings.d.ts\" preserve=\"true\" />\n\nimport gitUrl from 'giturl';\n\nimport type { INpmCheckPackageVersion, INpmCheckRegistryData } from './interfaces/INpmCheckRegistry';\n\nexport default function bestGuessHomepage(data: INpmCheckRegistryData | undefined): string | false {\n if (!data) {\n return false;\n }\n const packageDataForLatest: INpmCheckPackageVersion = data.versions[data['dist-tags'].latest];\n\n return packageDataForLatest\n ? packageDataForLatest.homepage ||\n (packageDataForLatest.bugs &&\n packageDataForLatest.bugs.url &&\n gitUrl.parse(packageDataForLatest.bugs.url.trim())) ||\n (packageDataForLatest.repository &&\n packageDataForLatest.repository.url &&\n gitUrl.parse(packageDataForLatest.repository.url.trim())) ||\n false\n : false;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { INpmCheckState } from './interfaces/INpmCheck.ts';
2
+ import type { INpmCheckPackageSummary } from './interfaces/INpmCheckPackageSummary';
3
+ export default function createPackageSummary(moduleName: string, state: INpmCheckState): Promise<INpmCheckPackageSummary | false>;
4
+ //# sourceMappingURL=CreatePackageSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreatePackageSummary.d.ts","sourceRoot":"","sources":["../src/CreatePackageSummary.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,2BAA2B,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAA4B,MAAM,sCAAsC,CAAC;AAM9G,wBAA8B,oBAAoB,CAChD,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC,CAgF1C"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = createPackageSummary;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const semver_1 = __importDefault(require("semver"));
11
+ const FindModulePath_1 = __importDefault(require("./FindModulePath"));
12
+ const GetLatestFromRegistry_1 = __importDefault(require("./GetLatestFromRegistry"));
13
+ const ReadPackageJson_1 = __importDefault(require("./ReadPackageJson"));
14
+ async function createPackageSummary(moduleName, state) {
15
+ const cwdPackageJson = state.cwdPackageJson;
16
+ const modulePath = (0, FindModulePath_1.default)(moduleName, state);
17
+ const packageIsInstalled = (0, node_fs_1.existsSync)(modulePath);
18
+ const modulePackageJson = (0, ReadPackageJson_1.default)(node_path_1.default.join(modulePath, 'package.json'));
19
+ // Ignore private packages
20
+ const isPrivate = Boolean(modulePackageJson.private);
21
+ if (isPrivate) {
22
+ return false;
23
+ }
24
+ // Ignore packages that are using github or file urls
25
+ const packageJsonVersion = (cwdPackageJson === null || cwdPackageJson === void 0 ? void 0 : cwdPackageJson.dependencies[moduleName]) || (cwdPackageJson === null || cwdPackageJson === void 0 ? void 0 : cwdPackageJson.devDependencies[moduleName]);
26
+ if (packageJsonVersion && !semver_1.default.validRange(packageJsonVersion)) {
27
+ return false;
28
+ }
29
+ return (0, GetLatestFromRegistry_1.default)(moduleName).then((fromRegistry) => {
30
+ var _a;
31
+ const installedVersion = modulePackageJson.version;
32
+ const latest = installedVersion &&
33
+ fromRegistry.latest &&
34
+ fromRegistry.next &&
35
+ semver_1.default.gt(installedVersion, fromRegistry.latest)
36
+ ? fromRegistry.next
37
+ : fromRegistry.latest;
38
+ const versions = fromRegistry.versions || [];
39
+ let versionWanted = null;
40
+ if (packageJsonVersion) {
41
+ versionWanted = semver_1.default.maxSatisfying(versions, packageJsonVersion);
42
+ }
43
+ const versionToUse = installedVersion || versionWanted;
44
+ const usingNonSemver = latest !== undefined && semver_1.default.valid(latest) && semver_1.default.lt(latest, '1.0.0-pre');
45
+ let bump;
46
+ const bumpRaw = semver_1.default.valid(latest) &&
47
+ semver_1.default.valid(versionToUse) &&
48
+ (usingNonSemver && versionToUse && latest
49
+ ? semver_1.default.diff(versionToUse, latest)
50
+ ? 'nonSemver'
51
+ : semver_1.default.diff(versionToUse, latest)
52
+ : versionToUse && latest
53
+ ? semver_1.default.diff(versionToUse, latest)
54
+ : undefined);
55
+ if (bumpRaw && bumpRaw !== null) {
56
+ bump = bumpRaw;
57
+ }
58
+ else {
59
+ bump = undefined;
60
+ }
61
+ return {
62
+ // info
63
+ moduleName: moduleName,
64
+ homepage: (_a = fromRegistry.homepage) !== null && _a !== void 0 ? _a : '',
65
+ regError: new Error(fromRegistry.error),
66
+ pkgError: modulePackageJson.error,
67
+ // versions
68
+ latest: latest !== null && latest !== void 0 ? latest : '',
69
+ installed: versionToUse === null ? '' : versionToUse,
70
+ notInstalled: !packageIsInstalled,
71
+ packageJson: packageJsonVersion !== null && packageJsonVersion !== void 0 ? packageJsonVersion : '',
72
+ // meta
73
+ devDependency: lodash_1.default.has(cwdPackageJson === null || cwdPackageJson === void 0 ? void 0 : cwdPackageJson.devDependencies, moduleName),
74
+ mismatch: packageJsonVersion !== undefined &&
75
+ versionToUse !== null &&
76
+ semver_1.default.validRange(packageJsonVersion) &&
77
+ semver_1.default.valid(versionToUse)
78
+ ? !semver_1.default.satisfies(versionToUse, packageJsonVersion)
79
+ : false,
80
+ bump: bump
81
+ };
82
+ });
83
+ }
84
+ //# sourceMappingURL=CreatePackageSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreatePackageSummary.js","sourceRoot":"","sources":["../src/CreatePackageSummary.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from 'node:fs';\nimport path from 'node:path';\n\nimport _ from 'lodash';\nimport semver from 'semver';\n\nimport type { INpmCheckState, INpmCheckPackageJson } from './interfaces/INpmCheck.ts';\nimport type { INpmCheckPackageSummary, INpmCheckVersionBumpType } from './interfaces/INpmCheckPackageSummary';\nimport type { INpmRegistryInfo } from './interfaces/INpmCheckRegistry';\nimport findModulePath from './FindModulePath';\nimport getLatestFromRegistry from './GetLatestFromRegistry';\nimport readPackageJson from './ReadPackageJson';\n\nexport default async function createPackageSummary(\n moduleName: string,\n state: INpmCheckState\n): Promise<INpmCheckPackageSummary | false> {\n const cwdPackageJson: INpmCheckPackageJson | undefined = state.cwdPackageJson;\n\n const modulePath: string = findModulePath(moduleName, state);\n const packageIsInstalled: boolean = existsSync(modulePath);\n const modulePackageJson: INpmCheckPackageJson = readPackageJson(path.join(modulePath, 'package.json'));\n\n // Ignore private packages\n const isPrivate: boolean = Boolean(modulePackageJson.private);\n if (isPrivate) {\n return false;\n }\n\n // Ignore packages that are using github or file urls\n const packageJsonVersion: string | undefined =\n cwdPackageJson?.dependencies[moduleName] || cwdPackageJson?.devDependencies[moduleName];\n if (packageJsonVersion && !semver.validRange(packageJsonVersion)) {\n return false;\n }\n\n return getLatestFromRegistry(moduleName).then((fromRegistry: INpmRegistryInfo) => {\n const installedVersion: string | undefined = modulePackageJson.version;\n const latest: string | undefined =\n installedVersion &&\n fromRegistry.latest &&\n fromRegistry.next &&\n semver.gt(installedVersion, fromRegistry.latest)\n ? fromRegistry.next\n : fromRegistry.latest;\n const versions: string[] = fromRegistry.versions || [];\n let versionWanted: string | null = null;\n if (packageJsonVersion) {\n versionWanted = semver.maxSatisfying(versions, packageJsonVersion);\n }\n const versionToUse: string | undefined | null = installedVersion || versionWanted;\n const usingNonSemver: boolean | '' | null =\n latest !== undefined && semver.valid(latest) && semver.lt(latest, '1.0.0-pre');\n\n let bump: INpmCheckVersionBumpType;\n const bumpRaw: INpmCheckVersionBumpType =\n semver.valid(latest) &&\n semver.valid(versionToUse) &&\n (usingNonSemver && versionToUse && latest\n ? semver.diff(versionToUse, latest)\n ? 'nonSemver'\n : semver.diff(versionToUse, latest)\n : versionToUse && latest\n ? semver.diff(versionToUse, latest)\n : undefined);\n if (bumpRaw && bumpRaw !== null) {\n bump = bumpRaw as INpmCheckVersionBumpType;\n } else {\n bump = undefined;\n }\n\n return {\n // info\n moduleName: moduleName,\n homepage: fromRegistry.homepage ?? '',\n regError: new Error(fromRegistry.error),\n pkgError: modulePackageJson.error,\n\n // versions\n latest: latest ?? '',\n installed: versionToUse === null ? '' : versionToUse,\n notInstalled: !packageIsInstalled,\n packageJson: packageJsonVersion ?? '',\n\n // meta\n devDependency: _.has(cwdPackageJson?.devDependencies, moduleName),\n mismatch:\n packageJsonVersion !== undefined &&\n versionToUse !== null &&\n semver.validRange(packageJsonVersion) &&\n semver.valid(versionToUse)\n ? !semver.satisfies(versionToUse, packageJsonVersion)\n : false,\n bump: bump\n };\n });\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { INpmCheckState } from './interfaces/INpmCheck.ts';
2
+ /**
3
+ * Searches the directory hierarchy to return the path to the requested node module.
4
+ * If the module can't be found, returns the initial (deepest) tried path.
5
+ */
6
+ export default function findModulePath(moduleName: string, currentState: INpmCheckState): string;
7
+ //# sourceMappingURL=FindModulePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindModulePath.d.ts","sourceRoot":"","sources":["../src/FindModulePath.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,GAAG,MAAM,CAa/F"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = findModulePath;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_module_1 = __importDefault(require("node:module"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ /**
11
+ * Searches the directory hierarchy to return the path to the requested node module.
12
+ * If the module can't be found, returns the initial (deepest) tried path.
13
+ */
14
+ function findModulePath(moduleName, currentState) {
15
+ const cwd = currentState.cwd;
16
+ // Module._nodeModulePaths does not include some places the node module resolver searches, such as
17
+ // the global prefix or other special directories. This is desirable because if a module is missing
18
+ // in the project directory we want to be sure to report it as missing.
19
+ // We can't use require.resolve because it fails if the module doesn't have an entry point.
20
+ // @ts-ignore
21
+ const nodeModulesPaths = node_module_1.default._nodeModulePaths(cwd);
22
+ const possibleModulePaths = nodeModulesPaths.map((x) => node_path_1.default.join(x, moduleName));
23
+ const modulePath = possibleModulePaths.find((p) => (0, node_fs_1.existsSync)(p));
24
+ // if no existing path was found, return the first tried path anyway
25
+ return modulePath || node_path_1.default.join(cwd, moduleName);
26
+ }
27
+ //# sourceMappingURL=FindModulePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindModulePath.js","sourceRoot":"","sources":["../src/FindModulePath.ts"],"names":[],"mappings":";;;;;AAUA,iCAaC;AAvBD,qCAAqC;AACrC,8DAAiC;AACjC,0DAA6B;AAI7B;;;GAGG;AACH,SAAwB,cAAc,CAAC,UAAkB,EAAE,YAA4B;IACrF,MAAM,GAAG,GAAW,YAAY,CAAC,GAAG,CAAC;IAErC,kGAAkG;IAClG,mGAAmG;IACnG,uEAAuE;IACvE,2FAA2F;IAC3F,aAAa;IACb,MAAM,gBAAgB,GAAa,qBAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,mBAAmB,GAAa,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAuB,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAU,EAAC,CAAC,CAAC,CAAC,CAAC;IACtF,oEAAoE;IACpE,OAAO,UAAU,IAAI,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC","sourcesContent":["import { existsSync } from 'node:fs';\nimport Module from 'node:module';\nimport path from 'node:path';\n\nimport type { INpmCheckState } from './interfaces/INpmCheck.ts';\n\n/**\n * Searches the directory hierarchy to return the path to the requested node module.\n * If the module can't be found, returns the initial (deepest) tried path.\n */\nexport default function findModulePath(moduleName: string, currentState: INpmCheckState): string {\n const cwd: string = currentState.cwd;\n\n // Module._nodeModulePaths does not include some places the node module resolver searches, such as\n // the global prefix or other special directories. This is desirable because if a module is missing\n // in the project directory we want to be sure to report it as missing.\n // We can't use require.resolve because it fails if the module doesn't have an entry point.\n // @ts-ignore\n const nodeModulesPaths: string[] = Module._nodeModulePaths(cwd);\n const possibleModulePaths: string[] = nodeModulesPaths.map((x) => path.join(x, moduleName));\n const modulePath: string | undefined = possibleModulePaths.find((p) => existsSync(p));\n // if no existing path was found, return the first tried path anyway\n return modulePath || path.join(cwd, moduleName);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { INpmRegistryInfo } from './interfaces/INpmCheckRegistry';
2
+ export default function getNpmInfo(packageName: string): Promise<INpmRegistryInfo>;
3
+ //# sourceMappingURL=GetLatestFromRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetLatestFromRegistry.d.ts","sourceRoot":"","sources":["../src/GetLatestFromRegistry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE,wBAA8B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgCvF"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = getNpmInfo;
7
+ const node_os_1 = __importDefault(require("node:os"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const semver_1 = __importDefault(require("semver"));
10
+ const package_json_1 = __importDefault(require("package-json"));
11
+ const throat_1 = __importDefault(require("throat"));
12
+ const BestGuessHomepage_1 = __importDefault(require("./BestGuessHomepage"));
13
+ const cpuCount = node_os_1.default.cpus().length;
14
+ async function getNpmInfo(packageName) {
15
+ const limit = (0, throat_1.default)(cpuCount, () => (0, package_json_1.default)(packageName, { fullMetadata: true, allVersions: true }));
16
+ return limit()
17
+ .then((rawData) => {
18
+ const CRAZY_HIGH_SEMVER = '8000.0.0';
19
+ const sortedVersions = (0, lodash_1.default)(rawData.versions)
20
+ .keys()
21
+ .remove(lodash_1.default.partial(semver_1.default.gt, CRAZY_HIGH_SEMVER))
22
+ .sort(semver_1.default.compare)
23
+ .valueOf();
24
+ const latest = rawData['dist-tags'].latest;
25
+ const next = rawData['dist-tags'].next;
26
+ const latestStableRelease = semver_1.default.satisfies(latest, '*')
27
+ ? latest
28
+ : semver_1.default.maxSatisfying(sortedVersions, '*') || '';
29
+ return {
30
+ latest: latestStableRelease,
31
+ next: next,
32
+ versions: sortedVersions,
33
+ homepage: (0, BestGuessHomepage_1.default)(rawData) || ''
34
+ };
35
+ })
36
+ .catch((error) => {
37
+ const errorMessage = `Registry error ${error.message}`;
38
+ return {
39
+ error: errorMessage
40
+ };
41
+ });
42
+ }
43
+ //# sourceMappingURL=GetLatestFromRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetLatestFromRegistry.js","sourceRoot":"","sources":["../src/GetLatestFromRegistry.ts"],"names":[],"mappings":";;;;;AAYA,6BAgCC;AA5CD,sDAAyB;AAEzB,oDAAuB;AACvB,oDAA4B;AAC5B,gEAAuC;AACvC,oDAA4B;AAE5B,4EAAoD;AAGpD,MAAM,QAAQ,GAAW,iBAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;AAE3B,KAAK,UAAU,UAAU,CAAC,WAAmB;IAC1D,MAAM,KAAK,GAA4C,IAAA,gBAAM,EAAC,QAAQ,EAAE,GAAG,EAAE,CAC3E,IAAA,sBAAW,EAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CACpE,CAAC;IACF,OAAO,KAAK,EAAE;SACX,IAAI,CAAC,CAAC,OAAiC,EAAE,EAAE;QAC1C,MAAM,iBAAiB,GAAW,UAAU,CAAC;QAC7C,MAAM,cAAc,GAAa,IAAA,gBAAC,EAAC,OAAO,CAAC,QAAQ,CAAC;aACjD,IAAI,EAAE;aACN,MAAM,CAAC,gBAAC,CAAC,OAAO,CAAC,gBAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;aAC/C,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC;aACpB,OAAO,EAAE,CAAC;QAEb,MAAM,MAAM,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QACnD,MAAM,IAAI,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;QAC/C,MAAM,mBAAmB,GAAuB,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;YAC3E,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,gBAAM,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAEpD,OAAO;YACL,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,IAAA,2BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE;SAC3C,CAAC;IACJ,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,YAAY,GAAW,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,YAAY;SACpB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import os from 'node:os';\n\nimport _ from 'lodash';\nimport semver from 'semver';\nimport packageJson from 'package-json';\nimport throat from 'throat';\n\nimport bestGuessHomepage from './BestGuessHomepage';\nimport type { INpmRegistryInfo } from './interfaces/INpmCheckRegistry';\n\nconst cpuCount: number = os.cpus().length;\n\nexport default async function getNpmInfo(packageName: string): Promise<INpmRegistryInfo> {\n const limit: () => Promise<packageJson.FullMetadata> = throat(cpuCount, () =>\n packageJson(packageName, { fullMetadata: true, allVersions: true })\n );\n return limit()\n .then((rawData: packageJson.FullMetadata) => {\n const CRAZY_HIGH_SEMVER: string = '8000.0.0';\n const sortedVersions: string[] = _(rawData.versions)\n .keys()\n .remove(_.partial(semver.gt, CRAZY_HIGH_SEMVER))\n .sort(semver.compare)\n .valueOf();\n\n const latest: string = rawData['dist-tags'].latest;\n const next: string = rawData['dist-tags'].next;\n const latestStableRelease: string | undefined = semver.satisfies(latest, '*')\n ? latest\n : semver.maxSatisfying(sortedVersions, '*') || '';\n\n return {\n latest: latestStableRelease,\n next: next,\n versions: sortedVersions,\n homepage: bestGuessHomepage(rawData) || ''\n };\n })\n .catch((error) => {\n const errorMessage: string = `Registry error ${error.message}`;\n return {\n error: errorMessage\n };\n });\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { INpmCheckState } from './interfaces/INpmCheck.ts';
2
+ export default function NpmCheck(initialOptions?: INpmCheckState): Promise<INpmCheckState>;
3
+ //# sourceMappingURL=NpmCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheck.d.ts","sourceRoot":"","sources":["../src/NpmCheck.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKtF,wBAA8B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAkB/F"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = NpmCheck;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const CreatePackageSummary_1 = __importDefault(require("./CreatePackageSummary"));
9
+ const NpmCheckState_1 = __importDefault(require("./NpmCheckState"));
10
+ async function NpmCheck(initialOptions) {
11
+ const state = await (0, NpmCheckState_1.default)(initialOptions);
12
+ const cwdPackageJson = state.cwdPackageJson;
13
+ const allDependencies = getDependencies(cwdPackageJson);
14
+ let packages = [];
15
+ if (allDependencies) {
16
+ const packageSummaryPromises = Object.keys(allDependencies).map((moduleName) => (0, CreatePackageSummary_1.default)(moduleName, state));
17
+ packages = await Promise.all(packageSummaryPromises).then((results) => {
18
+ return results.filter((pkg) => pkg !== false);
19
+ });
20
+ }
21
+ return { ...state, packages };
22
+ }
23
+ function getDependencies(pkg) {
24
+ if (!pkg) {
25
+ return undefined;
26
+ }
27
+ return lodash_1.default.extend(pkg.dependencies, pkg.devDependencies);
28
+ }
29
+ //# sourceMappingURL=NpmCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheck.js","sourceRoot":"","sources":["../src/NpmCheck.ts"],"names":[],"mappings":";;;;;AAOA,2BAkBC;AAzBD,oDAAuB;AAIvB,kFAA0D;AAC1D,oEAA8C;AAE/B,KAAK,UAAU,QAAQ,CAAC,cAA+B;IACpE,MAAM,KAAK,GAAmB,MAAM,IAAA,uBAAe,EAAC,cAAc,CAAC,CAAC;IACpE,MAAM,cAAc,GAAqC,KAAK,CAAC,cAAc,CAAC;IAC9E,MAAM,eAAe,GAAuC,eAAe,CAAC,cAAc,CAAC,CAAC;IAE5F,IAAI,QAAQ,GAA8B,EAAE,CAAC;IAC7C,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,sBAAsB,GAA+C,MAAM,CAAC,IAAI,CACpF,eAAe,CAChB,CAAC,GAAG,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAA,8BAAoB,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACvE,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CACvD,CAAC,OAA4C,EAAE,EAAE;YAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAkC,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAChF,CAAC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,GAAqC;IAC5D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;AACzD,CAAC","sourcesContent":["import _ from 'lodash';\n\nimport type { INpmCheckPackageJson, INpmCheckState } from './interfaces/INpmCheck.ts';\nimport type { INpmCheckPackageSummary } from './interfaces/INpmCheckPackageSummary';\nimport createPackageSummary from './CreatePackageSummary';\nimport initializeState from './NpmCheckState';\n\nexport default async function NpmCheck(initialOptions?: INpmCheckState): Promise<INpmCheckState> {\n const state: INpmCheckState = await initializeState(initialOptions);\n const cwdPackageJson: INpmCheckPackageJson | undefined = state.cwdPackageJson;\n const allDependencies: Record<string, string> | undefined = getDependencies(cwdPackageJson);\n\n let packages: INpmCheckPackageSummary[] = [];\n if (allDependencies) {\n const packageSummaryPromises: Promise<INpmCheckPackageSummary | false>[] = Object.keys(\n allDependencies\n ).map((moduleName: string) => createPackageSummary(moduleName, state));\n packages = await Promise.all(packageSummaryPromises).then(\n (results: (INpmCheckPackageSummary | false)[]) => {\n return results.filter((pkg): pkg is INpmCheckPackageSummary => pkg !== false);\n }\n );\n }\n\n return { ...state, packages };\n}\n\nfunction getDependencies(pkg: INpmCheckPackageJson | undefined): Record<string, string> | undefined {\n if (!pkg) {\n return undefined;\n }\n\n return _.extend(pkg.dependencies, pkg.devDependencies);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { type INpmCheckState } from './interfaces/INpmCheck';
2
+ export default function initializeState(initialOptions?: INpmCheckState): Promise<INpmCheckState>;
3
+ //# sourceMappingURL=NpmCheckState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheckState.d.ts","sourceRoot":"","sources":["../src/NpmCheckState.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAGhC,wBAA8B,eAAe,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAetG"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = initializeState;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const INpmCheck_1 = require("./interfaces/INpmCheck");
10
+ const ReadPackageJson_1 = __importDefault(require("./ReadPackageJson"));
11
+ async function initializeState(initialOptions) {
12
+ var _a;
13
+ const state = lodash_1.default.extend(INpmCheck_1.DefaultNpmCheckOptions, initialOptions);
14
+ if (state.cwd) {
15
+ const cwd = node_path_1.default.resolve(state.cwd);
16
+ const pkg = (0, ReadPackageJson_1.default)(node_path_1.default.join(cwd, 'package.json'));
17
+ state.cwdPackageJson = pkg;
18
+ state.cwd = cwd;
19
+ }
20
+ if ((_a = state.cwdPackageJson) === null || _a === void 0 ? void 0 : _a.error) {
21
+ return Promise.reject(state.cwdPackageJson.error);
22
+ }
23
+ return Promise.resolve(state);
24
+ }
25
+ //# sourceMappingURL=NpmCheckState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheckState.js","sourceRoot":"","sources":["../src/NpmCheckState.ts"],"names":[],"mappings":";;;;;AAWA,kCAeC;AA1BD,0DAA6B;AAE7B,oDAAuB;AAEvB,sDAIgC;AAChC,wEAAgD;AAEjC,KAAK,UAAU,eAAe,CAAC,cAA+B;;IAC3E,MAAM,KAAK,GAAmB,gBAAC,CAAC,MAAM,CAAC,kCAAsB,EAAE,cAAc,CAAC,CAAC;IAE/E,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,GAAG,GAAW,mBAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAyB,IAAA,yBAAe,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC3B,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,MAAA,KAAK,CAAC,cAAc,0CAAE,KAAK,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import path from 'node:path';\n\nimport _ from 'lodash';\n\nimport {\n DefaultNpmCheckOptions,\n type INpmCheckPackageJson,\n type INpmCheckState\n} from './interfaces/INpmCheck';\nimport readPackageJson from './ReadPackageJson';\n\nexport default async function initializeState(initialOptions?: INpmCheckState): Promise<INpmCheckState> {\n const state: INpmCheckState = _.extend(DefaultNpmCheckOptions, initialOptions);\n\n if (state.cwd) {\n const cwd: string = path.resolve(state.cwd);\n const pkg: INpmCheckPackageJson = readPackageJson(path.join(cwd, 'package.json'));\n state.cwdPackageJson = pkg;\n state.cwd = cwd;\n }\n\n if (state.cwdPackageJson?.error) {\n return Promise.reject(state.cwdPackageJson.error);\n }\n\n return Promise.resolve(state);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { INpmCheckPackageJson } from './interfaces/INpmCheck.ts';
2
+ export default function readPackageJson(filename: string): INpmCheckPackageJson;
3
+ //# sourceMappingURL=ReadPackageJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadPackageJson.d.ts","sourceRoot":"","sources":["../src/ReadPackageJson.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAa9E"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = readPackageJson;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ function readPackageJson(filename) {
9
+ let pkg = undefined;
10
+ let error = undefined;
11
+ try {
12
+ pkg = require(filename);
13
+ }
14
+ catch (e) {
15
+ if (e && typeof e === 'object' && 'code' in e && e.code === 'MODULE_NOT_FOUND') {
16
+ error = new Error(`A package.json was not found at ${filename}`);
17
+ }
18
+ else {
19
+ error = new Error(`A package.json was found at ${filename}, but it is not valid.`);
20
+ }
21
+ }
22
+ return lodash_1.default.extend({ devDependencies: {}, dependencies: {}, error: error }, pkg);
23
+ }
24
+ //# sourceMappingURL=ReadPackageJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadPackageJson.js","sourceRoot":"","sources":["../src/ReadPackageJson.ts"],"names":[],"mappings":";;;;;AAIA,kCAaC;AAjBD,oDAAuB;AAIvB,SAAwB,eAAe,CAAC,QAAgB;IACtD,IAAI,GAAG,GAAqC,SAAS,CAAC;IACtD,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC/E,KAAK,GAAG,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,IAAI,KAAK,CAAC,+BAA+B,QAAQ,wBAAwB,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,gBAAC,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC","sourcesContent":["import _ from 'lodash';\n\nimport type { INpmCheckPackageJson } from './interfaces/INpmCheck.ts';\n\nexport default function readPackageJson(filename: string): INpmCheckPackageJson {\n let pkg: INpmCheckPackageJson | undefined = undefined;\n let error: Error | undefined = undefined;\n try {\n pkg = require(filename);\n } catch (e: unknown) {\n if (e && typeof e === 'object' && 'code' in e && e.code === 'MODULE_NOT_FOUND') {\n error = new Error(`A package.json was not found at ${filename}`);\n } else {\n error = new Error(`A package.json was found at ${filename}, but it is not valid.`);\n }\n }\n return _.extend({ devDependencies: {}, dependencies: {}, error: error }, pkg);\n}\n"]}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { default as NpmCheck } from './NpmCheck';
2
+ export type { INpmCheckPackageSummary } from './interfaces/INpmCheckPackageSummary';
3
+ export type { INpmCheckState } from './interfaces/INpmCheck';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACpF,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NpmCheck = void 0;
7
+ var NpmCheck_1 = require("./NpmCheck");
8
+ Object.defineProperty(exports, "NpmCheck", { enumerable: true, get: function () { return __importDefault(NpmCheck_1).default; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAiD;AAAxC,qHAAA,OAAO,OAAY","sourcesContent":["export { default as NpmCheck } from './NpmCheck';\nexport type { INpmCheckPackageSummary } from './interfaces/INpmCheckPackageSummary';\nexport type { INpmCheckState } from './interfaces/INpmCheck';\n"]}
@@ -0,0 +1,17 @@
1
+ import type { INpmCheckPackageSummary } from './INpmCheckPackageSummary';
2
+ export interface INpmCheckPackageJson {
3
+ name?: string;
4
+ version?: string;
5
+ devDependencies: Record<string, string>;
6
+ dependencies: Record<string, string>;
7
+ error?: Error;
8
+ scripts?: Record<string, string>;
9
+ [key: string]: any;
10
+ }
11
+ export interface INpmCheckState {
12
+ cwd: string;
13
+ cwdPackageJson?: INpmCheckPackageJson;
14
+ packages?: INpmCheckPackageSummary[];
15
+ }
16
+ export declare const DefaultNpmCheckOptions: INpmCheckState;
17
+ //# sourceMappingURL=INpmCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INpmCheck.d.ts","sourceRoot":"","sources":["../../src/interfaces/INpmCheck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACtC;AAED,eAAO,MAAM,sBAAsB,EAAE,cAIpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultNpmCheckOptions = void 0;
4
+ exports.DefaultNpmCheckOptions = {
5
+ cwd: process.cwd(),
6
+ cwdPackageJson: { devDependencies: {}, dependencies: {} },
7
+ packages: undefined
8
+ };
9
+ //# sourceMappingURL=INpmCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INpmCheck.js","sourceRoot":"","sources":["../../src/interfaces/INpmCheck.ts"],"names":[],"mappings":";;;AAmBa,QAAA,sBAAsB,GAAmB;IACpD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;IACzD,QAAQ,EAAE,SAAS;CACpB,CAAC","sourcesContent":["import type { INpmCheckPackageSummary } from './INpmCheckPackageSummary';\n\nexport interface INpmCheckPackageJson {\n name?: string;\n version?: string;\n devDependencies: Record<string, string>;\n dependencies: Record<string, string>;\n error?: Error;\n scripts?: Record<string, string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport interface INpmCheckState {\n cwd: string;\n cwdPackageJson?: INpmCheckPackageJson;\n packages?: INpmCheckPackageSummary[];\n}\n\nexport const DefaultNpmCheckOptions: INpmCheckState = {\n cwd: process.cwd(),\n cwdPackageJson: { devDependencies: {}, dependencies: {} },\n packages: undefined\n};\n"]}
@@ -0,0 +1,15 @@
1
+ export type INpmCheckVersionBumpType = '' | 'build' | 'major' | 'premajor' | 'minor' | 'preminor' | 'patch' | 'prepatch' | 'prerelease' | 'nonSemver' | undefined | null;
2
+ export interface INpmCheckPackageSummary {
3
+ moduleName: string;
4
+ homepage: string;
5
+ regError?: Error;
6
+ pkgError?: Error;
7
+ latest: string;
8
+ installed: string;
9
+ notInstalled: boolean;
10
+ packageJson: string;
11
+ devDependency: boolean;
12
+ mismatch: boolean;
13
+ bump?: INpmCheckVersionBumpType;
14
+ }
15
+ //# sourceMappingURL=INpmCheckPackageSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INpmCheckPackageSummary.d.ts","sourceRoot":"","sources":["../../src/interfaces/INpmCheckPackageSummary.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,EAAE,GACF,OAAO,GACP,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,YAAY,GACZ,WAAW,GACX,SAAS,GAET,IAAI,CAAC;AAET,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACjC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=INpmCheckPackageSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INpmCheckPackageSummary.js","sourceRoot":"","sources":["../../src/interfaces/INpmCheckPackageSummary.ts"],"names":[],"mappings":"","sourcesContent":["export type INpmCheckVersionBumpType =\n | ''\n | 'build'\n | 'major'\n | 'premajor'\n | 'minor'\n | 'preminor'\n | 'patch'\n | 'prepatch'\n | 'prerelease'\n | 'nonSemver'\n | undefined\n // eslint-disable-next-line @rushstack/no-new-null\n | null;\n\nexport interface INpmCheckPackageSummary {\n moduleName: string; // name of the module.\n homepage: string; // url to the home page.\n regError?: Error; // error communicating with the registry\n pkgError?: Error; // error reading the package.json\n latest: string; // latest according to the registry.\n installed: string; // version installed\n notInstalled: boolean; // Is it installed?\n packageJson: string; // Version or range requested in the parent package.json.\n devDependency: boolean; // Is this a devDependency?\n mismatch: boolean; // Does the version installed not match the range in package.json?\n bump?: INpmCheckVersionBumpType; // What kind of bump is required to get the latest\n}\n"]}
@@ -0,0 +1,26 @@
1
+ export interface INpmRegistryInfo {
2
+ latest?: string;
3
+ next?: string;
4
+ versions?: string[];
5
+ homepage?: string;
6
+ error?: string;
7
+ }
8
+ interface INpmCheckRegistryInfoBugs {
9
+ url?: string;
10
+ }
11
+ interface INpmCheckRepository {
12
+ url?: string;
13
+ }
14
+ export interface INpmCheckPackageVersion {
15
+ homepage?: string;
16
+ bugs?: INpmCheckRegistryInfoBugs;
17
+ repository?: INpmCheckRepository;
18
+ }
19
+ export interface INpmCheckRegistryData {
20
+ versions: Record<string, INpmCheckPackageVersion>;
21
+ ['dist-tags']: {
22
+ latest: string;
23
+ };
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=INpmCheckRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INpmCheckRegistry.d.ts","sourceRoot":"","sources":["../../src/interfaces/INpmCheckRegistry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AACD,UAAU,mBAAmB;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,yBAAyB,CAAC;IACjC,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAClD,CAAC,WAAW,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=INpmCheckRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INpmCheckRegistry.js","sourceRoot":"","sources":["../../src/interfaces/INpmCheckRegistry.ts"],"names":[],"mappings":"","sourcesContent":["export interface INpmRegistryInfo {\n latest?: string;\n next?: string;\n versions?: string[];\n homepage?: string;\n error?: string;\n}\n\ninterface INpmCheckRegistryInfoBugs {\n url?: string;\n}\ninterface INpmCheckRepository {\n url?: string;\n}\nexport interface INpmCheckPackageVersion {\n homepage?: string;\n bugs?: INpmCheckRegistryInfoBugs;\n repository?: INpmCheckRepository;\n}\nexport interface INpmCheckRegistryData {\n versions: Record<string, INpmCheckPackageVersion>;\n ['dist-tags']: { latest: string };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BestGuessHomepage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BestGuessHomepage.test.d.ts","sourceRoot":"","sources":["../../src/tests/BestGuessHomepage.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BestGuessHomepage.test.js","sourceRoot":"","sources":["../../src/tests/BestGuessHomepage.test.ts"],"names":[],"mappings":";;;;;AAAA,oBAAoB;AACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAE7D,6EAAqD;AAGrD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,IAAA,2BAAiB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAA0B;YAClC,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,QAAQ,EAAE,sBAAsB;iBACjC;aACF;YACD,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClC,CAAC;QACF,MAAM,CAAC,IAAA,2BAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAA0B;YAClC,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE;iBAClC;aACF;YACD,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClC,CAAC;QACF,MAAM,CAAC,IAAA,2BAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAA0B;YAClC,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,UAAU,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE;iBACxC;aACF;YACD,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClC,CAAC;QACF,MAAM,CAAC,IAAA,2BAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,IAAI,GAA0B;YAClC,QAAQ,EAAE;gBACR,MAAM,EAAE,EAAE;aACX;YACD,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClC,CAAC;QACF,MAAM,CAAC,IAAA,2BAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Mock gitUrl.parse\njest.mock('giturl', () => ({ parse: (url: string) => url }));\n\nimport bestGuessHomepage from '../BestGuessHomepage';\nimport type { INpmCheckRegistryData } from '../interfaces/INpmCheckRegistry';\n\ndescribe('bestGuessHomepage', () => {\n it('returns false if data is undefined', () => {\n expect(bestGuessHomepage(undefined)).toBe(false);\n });\n\n it('returns homepage if present', () => {\n const data: INpmCheckRegistryData = {\n versions: {\n latest: {\n homepage: 'https://homepage.com'\n }\n },\n 'dist-tags': { latest: 'latest' }\n };\n expect(bestGuessHomepage(data)).toBe('https://homepage.com');\n });\n\n it('returns bugs.url if homepage is missing', () => {\n const data: INpmCheckRegistryData = {\n versions: {\n latest: {\n bugs: { url: 'https://bugs.com' }\n }\n },\n 'dist-tags': { latest: 'latest' }\n };\n expect(bestGuessHomepage(data)).toBe('https://bugs.com');\n });\n\n it('returns repository.url if homepage and bugs.url are missing', () => {\n const data: INpmCheckRegistryData = {\n versions: {\n latest: {\n repository: { url: 'https://repo.com' }\n }\n },\n 'dist-tags': { latest: 'latest' }\n };\n expect(bestGuessHomepage(data)).toBe('https://repo.com');\n });\n\n it('returns false if no homepage, bugs.url, or repository.url', () => {\n const data: INpmCheckRegistryData = {\n versions: {\n latest: {}\n },\n 'dist-tags': { latest: 'latest' }\n };\n expect(bestGuessHomepage(data)).toBe(false);\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CreatePackageSummary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreatePackageSummary.test.d.ts","sourceRoot":"","sources":["../../src/tests/CreatePackageSummary.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreatePackageSummary.test.js","sourceRoot":"","sources":["../../src/tests/CreatePackageSummary.test.ts"],"names":[],"mappings":"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","sourcesContent":["jest.mock('../GetLatestFromRegistry');\njest.mock('../ReadPackageJson');\njest.mock('../FindModulePath');\n\nimport createPackageSummary from '../CreatePackageSummary';\nimport getLatestFromRegistry from '../GetLatestFromRegistry';\nimport readPackageJson from '../ReadPackageJson';\nimport findModulePath from '../FindModulePath';\nimport type { INpmCheckState, INpmCheckPackageJson } from '../interfaces/INpmCheck';\nimport type { INpmRegistryInfo } from '../interfaces/INpmCheckRegistry';\nimport type { INpmCheckPackageSummary } from '../interfaces/INpmCheckPackageSummary';\n\nconst mockGetLatestFromRegistry = getLatestFromRegistry as jest.MockedFunction<typeof getLatestFromRegistry>;\nconst mockReadPackageJson = readPackageJson as jest.MockedFunction<typeof readPackageJson>;\nconst mockFindModulePath = findModulePath as jest.MockedFunction<typeof findModulePath>;\n\ndescribe('createPackageSummary', () => {\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n it('returns false for private package', async () => {\n mockFindModulePath.mockReturnValue('/mock/path/private-pkg');\n mockReadPackageJson.mockReturnValue({\n dependencies: {},\n devDependencies: {},\n private: true\n } as INpmCheckPackageJson);\n const state: INpmCheckState = {\n cwd: process.cwd(),\n cwdPackageJson: { dependencies: {}, devDependencies: {} }\n };\n const result: INpmCheckPackageSummary | boolean = await createPackageSummary('private-pkg', state);\n expect(result).toBe(false);\n });\n\n it('returns false for invalid semver range', async () => {\n mockFindModulePath.mockReturnValue('/mock/path');\n mockReadPackageJson.mockReturnValue({\n dependencies: {},\n devDependencies: {}\n } as INpmCheckPackageJson);\n const state: INpmCheckState = {\n cwd: process.cwd(),\n cwdPackageJson: {\n dependencies: { 'bad-pkg': 'github:foo/bar' },\n devDependencies: {}\n }\n };\n const result: INpmCheckPackageSummary | boolean = await createPackageSummary('bad-pkg', state);\n expect(result).toBe(false);\n });\n\n it('returns summary for valid package', async () => {\n mockFindModulePath.mockReturnValue('/mock/path');\n mockReadPackageJson.mockReturnValue({\n dependencies: {},\n devDependencies: {}\n } as INpmCheckPackageJson);\n mockGetLatestFromRegistry.mockResolvedValue({\n latest: '2.0.0',\n next: '3.0.0',\n versions: ['1.0.0', '2.0.0', '3.0.0'],\n homepage: 'https://homepage.com'\n } as INpmRegistryInfo);\n const state: INpmCheckState = {\n cwd: process.cwd(),\n cwdPackageJson: { dependencies: { 'good-pkg': '1.0.0' }, devDependencies: {} },\n unusedDependencies: ['good-pkg'],\n missingFromPackageJson: {}\n } as INpmCheckState;\n const result: INpmCheckPackageSummary | boolean = await createPackageSummary('good-pkg', state);\n expect(result).toBeTruthy();\n expect(result).toHaveProperty('moduleName', 'good-pkg');\n expect(result).toHaveProperty('homepage', 'https://homepage.com');\n expect(result).toHaveProperty('latest', '2.0.0');\n expect(result).toHaveProperty('installed', '1.0.0');\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FindModulePath.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindModulePath.test.d.ts","sourceRoot":"","sources":["../../src/tests/FindModulePath.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindModulePath.test.js","sourceRoot":"","sources":["../../src/tests/FindModulePath.test.ts"],"names":[],"mappings":";;;;;AAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,mCAAmC;CACpC,CAAC,CAAC,CAAC;AAEJ,uEAA+C;AAE/C,0DAA6B;AAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEtC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI;aACD,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC;aACjC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB,EAAE,iCAAiC,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,KAAK,GAAmB,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAoB,CAAC;QACpF,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,KAAK,GAAmB,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAoB,CAAC;QACpF,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["jest.mock('path', () => ({\n join: jest.fn((...args) => args.join('/'))\n // Add other path methods as needed\n}));\n\nimport findModulePath from '../FindModulePath';\nimport type { INpmCheckState } from '../interfaces/INpmCheck';\nimport path from 'node:path';\n\nconst Module = require('node:module');\n\ndescribe('findModulePath', () => {\n beforeAll(() => {\n jest\n .spyOn(Module, '_nodeModulePaths')\n .mockImplementation(() => ['/mock/path/node_modules', '/another/mock/path/node_modules']);\n });\n\n afterAll(() => {\n jest.restoreAllMocks();\n });\n\n it('returns found path', () => {\n const state: INpmCheckState = { cwd: '/test/cwd', global: false } as INpmCheckState;\n const result = findModulePath('my-module', state);\n expect(result).toBe(path.join('/test/cwd', 'my-module'));\n });\n\n it('returns first tried path', () => {\n const state: INpmCheckState = { cwd: '/test/cwd', global: false } as INpmCheckState;\n const result = findModulePath('missing-module', state);\n expect(result).toBe(path.join('/test/cwd', 'missing-module'));\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GetLatestFromRegistry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetLatestFromRegistry.test.d.ts","sourceRoot":"","sources":["../../src/tests/GetLatestFromRegistry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetLatestFromRegistry.test.js","sourceRoot":"","sources":["../../src/tests/GetLatestFromRegistry.test.ts"],"names":[],"mappings":";;;;;AAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1B,qFAAkD;AAClD,gEAAuC;AAGvC,MAAM,eAAe,GAAG,sBAAsD,CAAC;AAE/E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,eAAe,CAAC,iBAAiB,CAAC;YAChC,QAAQ,EAAE;gBACR,OAAO,EAAE;oBACP,QAAQ,EAAE,sBAAsB;iBACjC;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE;iBAClC;aACF;YACD,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;SACT,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAqB,MAAM,IAAA,+BAAU,EAAC,cAAc,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,eAAe,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAqB,MAAM,IAAA,+BAAU,EAAC,cAAc,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,eAAe,CAAC,iBAAiB,CAAC;YAChC,QAAQ,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;YACD,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;SACT,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAqB,MAAM,IAAA,+BAAU,EAAC,cAAc,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["jest.mock('package-json');\n\nimport getNpmInfo from '../GetLatestFromRegistry';\nimport packageJson from 'package-json';\nimport type { INpmRegistryInfo } from '../interfaces/INpmCheckRegistry';\n\nconst mockPackageJson = packageJson as jest.MockedFunction<typeof packageJson>;\n\ndescribe('getNpmInfo', () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('returns registry info with homepage', async () => {\n mockPackageJson.mockResolvedValue({\n versions: {\n '1.0.0': {\n homepage: 'https://homepage.com'\n },\n '2.0.0': {\n bugs: { url: 'https://bugs.com' }\n }\n },\n 'dist-tags': { latest: '1.0.0', next: '2.0.0' }\n } as unknown as packageJson.FullMetadata);\n const result: INpmRegistryInfo = await getNpmInfo('test-package');\n expect(result).toHaveProperty('latest', '1.0.0');\n expect(result).toHaveProperty('next', '2.0.0');\n expect(result).toHaveProperty('versions', ['1.0.0', '2.0.0']);\n expect(result).toHaveProperty('homepage', 'https://homepage.com');\n });\n\n it('returns error if packageJson throws', async () => {\n mockPackageJson.mockRejectedValue(new Error('Registry down'));\n const result: INpmRegistryInfo = await getNpmInfo('test-package');\n expect(result).toHaveProperty('error');\n expect(result.error).toBe('Registry error Registry down');\n });\n\n it('returns \"\" homepage if not present', async () => {\n mockPackageJson.mockResolvedValue({\n versions: {\n '1.0.0': {},\n '2.0.0': {}\n },\n 'dist-tags': { latest: '1.0.0', next: '2.0.0' }\n } as unknown as packageJson.FullMetadata);\n const result: INpmRegistryInfo = await getNpmInfo('test-package');\n expect(result).toHaveProperty('homepage', '');\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NpmCheck.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheck.test.d.ts","sourceRoot":"","sources":["../../src/tests/NpmCheck.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheck.test.js","sourceRoot":"","sources":["../../src/tests/NpmCheck.test.ts"],"names":[],"mappings":";;;;;AAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACnC,CAAC,CAAC,CAAC;AAEJ,mFAA2D;AAC3D,MAAM,wBAAwB,GAAG,8BAAwE,CAAC;AAG1G,2DAAmC;AAEnC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,wBAAwB,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACjE,UAAU;YACV,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,EAAE;YACf,gBAAgB,EAAE,SAAS;YAC3B,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,KAAK;YACrB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,GAAmB,MAAM,IAAA,kBAAQ,EAAC;YAC5C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["jest.mock('../CreatePackageSummary', () => ({\n __esModule: true,\n default: jest.fn(async () => ({}))\n}));\n\nimport createPackageSummary from '../CreatePackageSummary';\nconst mockCreatePackageSummary = createPackageSummary as jest.MockedFunction<typeof createPackageSummary>;\n\nimport type { INpmCheckState } from '../interfaces/INpmCheck';\nimport NpmCheck from '../NpmCheck';\n\ndescribe('NpmCheck', () => {\n it('should mimic rush initial options', async () => {\n mockCreatePackageSummary.mockImplementation(async (moduleName) => ({\n moduleName,\n homepage: '',\n latest: '',\n installed: '',\n notInstalled: true,\n packageWanted: '',\n packageJson: '',\n notInPackageJson: undefined,\n devDependency: false,\n peerDependency: false,\n mismatch: false,\n bump: undefined\n }));\n const result: INpmCheckState = await NpmCheck({\n cwd: process.cwd()\n });\n expect(result.packages).toBeDefined();\n if (result.packages && result.packages.length > 0) {\n expect(result.packages[0]).toHaveProperty('moduleName');\n }\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NpmCheckState.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheckState.test.d.ts","sourceRoot":"","sources":["../../src/tests/NpmCheckState.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmCheckState.test.js","sourceRoot":"","sources":["../../src/tests/NpmCheckState.test.ts"],"names":[],"mappings":";;;;;AACA,qEAA+C;AAE/C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAmB,MAAM,IAAA,uBAAe,GAAE,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { INpmCheckState } from '../interfaces/INpmCheck';\nimport initializeState from '../NpmCheckState';\n\ndescribe('NpmCheckState', () => {\n it('should create with default options', async () => {\n const state: INpmCheckState = await initializeState();\n expect(state).toBeDefined();\n expect(state.cwd).toBe(process.cwd());\n expect(state.cwdPackageJson).toHaveProperty('name');\n expect(state.cwdPackageJson).toHaveProperty('version');\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ReadPackageJson.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadPackageJson.test.d.ts","sourceRoot":"","sources":["../../src/tests/ReadPackageJson.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadPackageJson.test.js","sourceRoot":"","sources":["../../src/tests/ReadPackageJson.test.ts"],"names":[],"mappings":";;;;;AAAA,0DAA6B;AAE7B,yEAAiD;AAGjD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAW,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,MAAM,GAAyB,MAAM,IAAA,yBAAe,EAAC,QAAQ,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import path from 'node:path';\n\nimport readPackageJson from '../ReadPackageJson';\nimport type { INpmCheckPackageJson } from '../interfaces/INpmCheck';\n\ndescribe('readPackageJson', () => {\n it('should return valid packageJson if it exists', async () => {\n const fileName: string = path.join(process.cwd(), 'package.json');\n const result: INpmCheckPackageJson = await readPackageJson(fileName);\n\n expect(result).toBeDefined();\n expect(result).toHaveProperty('name');\n });\n});\n"]}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@rushstack/npm-check-fork",
3
+ "version": "0.1.0",
4
+ "description": "A fork of npm-check.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/microsoft/rushstack.git",
8
+ "directory": "libraries/npm-check-fork"
9
+ },
10
+ "homepage": "https://github.com/dylang/npm-check",
11
+ "main": "lib/index.js",
12
+ "typings": "lib/index.d.ts",
13
+ "license": "MIT",
14
+ "dependencies": {
15
+ "giturl": "^2.0.0",
16
+ "lodash": "~4.17.15",
17
+ "package-json": "^10.0.1",
18
+ "semver": "~7.5.4",
19
+ "throat": "^6.0.2"
20
+ },
21
+ "devDependencies": {
22
+ "@types/lodash": "4.14.116",
23
+ "@types/semver": "7.5.0",
24
+ "eslint": "~9.37.0",
25
+ "local-node-rig": "1.0.0",
26
+ "@rushstack/heft": "1.1.1"
27
+ },
28
+ "scripts": {
29
+ "build": "heft build --clean",
30
+ "test": "heft test --clean",
31
+ "_phase:build": "heft run --only build -- --clean",
32
+ "_phase:test": "heft run --only test -- --clean"
33
+ }
34
+ }