@rushstack/npm-check-fork 0.1.13 → 0.1.14

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.
package/CHANGELOG.json CHANGED
@@ -1,6 +1,23 @@
1
1
  {
2
2
  "name": "@rushstack/npm-check-fork",
3
3
  "entries": [
4
+ {
5
+ "version": "0.1.14",
6
+ "tag": "@rushstack/npm-check-fork_v0.1.14",
7
+ "date": "Sat, 07 Feb 2026 01:13:26 GMT",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "comment": "Upgrade `lodash` dependency from `~4.17.15` to `~4.17.23`."
12
+ }
13
+ ],
14
+ "dependency": [
15
+ {
16
+ "comment": "Updating dependency \"@rushstack/heft\" to `1.1.14`"
17
+ }
18
+ ]
19
+ }
20
+ },
4
21
  {
5
22
  "version": "0.1.13",
6
23
  "tag": "@rushstack/npm-check-fork_v0.1.13",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @rushstack/npm-check-fork
2
2
 
3
- This log was last generated on Wed, 04 Feb 2026 20:42:47 GMT and should not be manually modified.
3
+ This log was last generated on Sat, 07 Feb 2026 01:13:26 GMT and should not be manually modified.
4
+
5
+ ## 0.1.14
6
+ Sat, 07 Feb 2026 01:13:26 GMT
7
+
8
+ ### Patches
9
+
10
+ - Upgrade `lodash` dependency from `~4.17.15` to `~4.17.23`.
4
11
 
5
12
  ## 0.1.13
6
13
  Wed, 04 Feb 2026 20:42:47 GMT
@@ -42,7 +42,7 @@ async function getNpmInfo(packageName) {
42
42
  const CRAZY_HIGH_SEMVER = '8000.0.0';
43
43
  const sortedVersions = (0, lodash_1.default)(rawData.versions)
44
44
  .keys()
45
- .remove(lodash_1.default.partial(semver_1.default.gt, CRAZY_HIGH_SEMVER))
45
+ .remove((version) => semver_1.default.gt(CRAZY_HIGH_SEMVER, version))
46
46
  .sort(semver_1.default.compare)
47
47
  .valueOf();
48
48
  const latest = rawData['dist-tags'].latest;
@@ -1 +1 @@
1
- {"version":3,"file":"GetLatestFromRegistry.js","sourceRoot":"","sources":["../src/GetLatestFromRegistry.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;AAoC3D,6BAkCC;AASD,0CAgBC;AA7FD,sDAAyB;AAEzB,oDAAuB;AACvB,oDAA4B;AAE5B,oEAAqD;AAErD,4EAAoD;AACpD,2DAAuF;AAOvF,2DAA2D;AAC3D,IAAI,eAA8C,CAAC;AAEnD;;GAEG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,qCAAiB,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACY,KAAK,UAAU,UAAU,CAAC,WAAmB;IAC1D,MAAM,MAAM,GAAsB,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,GAA6B,MAAM,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAE7F,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAgC,MAAM,CAAC,IAAK,CAAC;IAC1D,MAAM,iBAAiB,GAAW,UAAU,CAAC;IAC7C,MAAM,cAAc,GAAa,IAAA,gBAAC,EAAC,OAAO,CAAC,QAAQ,CAAC;SACjD,IAAI,EAAE;SACN,MAAM,CAAC,gBAAC,CAAC,OAAO,CAAC,gBAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;SAC/C,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC;SACpB,OAAO,EAAE,CAAC;IAEb,MAAM,MAAM,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,IAAI,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;IAC/C,MAAM,mBAAmB,GAAuB,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;QAC3E,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,gBAAM,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAEpD,oEAAoE;IACpE,qEAAqE;IACrE,MAAM,YAAY,GAA0B,OAA2C,CAAC;IAExF,OAAO;QACL,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,IAAA,2BAAiB,EAAC,YAAY,CAAC,IAAI,EAAE;KAChD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,YAAsB,EACtB,cAAsB,iBAAE,CAAC,IAAI,EAAE,CAAC,MAAM;IAEtC,MAAM,OAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;IAEzD,6FAA6F;IAC7F,MAAM,yBAAK,CAAC,YAAY,CACtB,YAAY,EACZ,KAAK,EAAE,WAAmB,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,CAAC,EACD,EAAE,WAAW,EAAE,CAChB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport os from 'node:os';\n\nimport _ from 'lodash';\nimport semver from 'semver';\n\nimport { Async } from '@rushstack/node-core-library';\n\nimport bestGuessHomepage from './BestGuessHomepage';\nimport { NpmRegistryClient, type INpmRegistryClientResult } from './NpmRegistryClient';\nimport type {\n INpmRegistryInfo,\n INpmCheckRegistryData,\n INpmRegistryPackageResponse\n} from './interfaces/INpmCheckRegistry';\n\n// Module-level registry client instance (lazy initialized)\nlet _registryClient: NpmRegistryClient | undefined;\n\n/**\n * Gets or creates the shared registry client instance.\n */\nfunction getRegistryClient(): NpmRegistryClient {\n if (!_registryClient) {\n _registryClient = new NpmRegistryClient();\n }\n return _registryClient;\n}\n\n/**\n * Fetches package information from the npm registry.\n *\n * @param packageName - The name of the package to fetch\n * @returns A promise that resolves to the package registry info\n */\nexport default async function getNpmInfo(packageName: string): Promise<INpmRegistryInfo> {\n const client: NpmRegistryClient = getRegistryClient();\n const result: INpmRegistryClientResult = await client.fetchPackageMetadataAsync(packageName);\n\n if (result.error) {\n return {\n error: `Registry error ${result.error}`\n };\n }\n\n const rawData: INpmRegistryPackageResponse = result.data!;\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 // Cast to INpmCheckRegistryData for bestGuessHomepage compatibility\n // INpmRegistryPackageResponse is a superset of INpmCheckRegistryData\n const registryData: INpmCheckRegistryData = rawData as unknown as INpmCheckRegistryData;\n\n return {\n latest: latestStableRelease,\n next: next,\n versions: sortedVersions,\n homepage: bestGuessHomepage(registryData) || ''\n };\n}\n\n/**\n * Fetches package information for multiple packages concurrently.\n *\n * @param packageNames - Array of package names to fetch\n * @param concurrency - Maximum number of concurrent requests (defaults to CPU count)\n * @returns A promise that resolves to a Map of package name to registry info\n */\nexport async function getNpmInfoBatch(\n packageNames: string[],\n concurrency: number = os.cpus().length\n): Promise<Map<string, INpmRegistryInfo>> {\n const results: Map<string, INpmRegistryInfo> = new Map();\n\n // TODO: Refactor createPackageSummary to use this batch function to reduce registry requests\n await Async.forEachAsync(\n packageNames,\n async (packageName: string) => {\n results.set(packageName, await getNpmInfo(packageName));\n },\n { concurrency }\n );\n\n return results;\n}\n"]}
1
+ {"version":3,"file":"GetLatestFromRegistry.js","sourceRoot":"","sources":["../src/GetLatestFromRegistry.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;AAoC3D,6BAkCC;AASD,0CAgBC;AA7FD,sDAAyB;AAEzB,oDAAuB;AACvB,oDAA4B;AAE5B,oEAAqD;AAErD,4EAAoD;AACpD,2DAAuF;AAOvF,2DAA2D;AAC3D,IAAI,eAA8C,CAAC;AAEnD;;GAEG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,qCAAiB,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACY,KAAK,UAAU,UAAU,CAAC,WAAmB;IAC1D,MAAM,MAAM,GAAsB,iBAAiB,EAAE,CAAC;IACtD,MAAM,MAAM,GAA6B,MAAM,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAE7F,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAgC,MAAM,CAAC,IAAK,CAAC;IAC1D,MAAM,iBAAiB,GAAW,UAAU,CAAC;IAC7C,MAAM,cAAc,GAAa,IAAA,gBAAC,EAAC,OAAO,CAAC,QAAQ,CAAC;SACjD,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,gBAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;SAClE,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC;SACpB,OAAO,EAAE,CAAC;IAEb,MAAM,MAAM,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,IAAI,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;IAC/C,MAAM,mBAAmB,GAAuB,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;QAC3E,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,gBAAM,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAEpD,oEAAoE;IACpE,qEAAqE;IACrE,MAAM,YAAY,GAA0B,OAA2C,CAAC;IAExF,OAAO;QACL,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,IAAA,2BAAiB,EAAC,YAAY,CAAC,IAAI,EAAE;KAChD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,YAAsB,EACtB,cAAsB,iBAAE,CAAC,IAAI,EAAE,CAAC,MAAM;IAEtC,MAAM,OAAO,GAAkC,IAAI,GAAG,EAAE,CAAC;IAEzD,6FAA6F;IAC7F,MAAM,yBAAK,CAAC,YAAY,CACtB,YAAY,EACZ,KAAK,EAAE,WAAmB,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,CAAC,EACD,EAAE,WAAW,EAAE,CAChB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport os from 'node:os';\n\nimport _ from 'lodash';\nimport semver from 'semver';\n\nimport { Async } from '@rushstack/node-core-library';\n\nimport bestGuessHomepage from './BestGuessHomepage';\nimport { NpmRegistryClient, type INpmRegistryClientResult } from './NpmRegistryClient';\nimport type {\n INpmRegistryInfo,\n INpmCheckRegistryData,\n INpmRegistryPackageResponse\n} from './interfaces/INpmCheckRegistry';\n\n// Module-level registry client instance (lazy initialized)\nlet _registryClient: NpmRegistryClient | undefined;\n\n/**\n * Gets or creates the shared registry client instance.\n */\nfunction getRegistryClient(): NpmRegistryClient {\n if (!_registryClient) {\n _registryClient = new NpmRegistryClient();\n }\n return _registryClient;\n}\n\n/**\n * Fetches package information from the npm registry.\n *\n * @param packageName - The name of the package to fetch\n * @returns A promise that resolves to the package registry info\n */\nexport default async function getNpmInfo(packageName: string): Promise<INpmRegistryInfo> {\n const client: NpmRegistryClient = getRegistryClient();\n const result: INpmRegistryClientResult = await client.fetchPackageMetadataAsync(packageName);\n\n if (result.error) {\n return {\n error: `Registry error ${result.error}`\n };\n }\n\n const rawData: INpmRegistryPackageResponse = result.data!;\n const CRAZY_HIGH_SEMVER: string = '8000.0.0';\n const sortedVersions: string[] = _(rawData.versions)\n .keys()\n .remove((version: string) => semver.gt(CRAZY_HIGH_SEMVER, version))\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 // Cast to INpmCheckRegistryData for bestGuessHomepage compatibility\n // INpmRegistryPackageResponse is a superset of INpmCheckRegistryData\n const registryData: INpmCheckRegistryData = rawData as unknown as INpmCheckRegistryData;\n\n return {\n latest: latestStableRelease,\n next: next,\n versions: sortedVersions,\n homepage: bestGuessHomepage(registryData) || ''\n };\n}\n\n/**\n * Fetches package information for multiple packages concurrently.\n *\n * @param packageNames - Array of package names to fetch\n * @param concurrency - Maximum number of concurrent requests (defaults to CPU count)\n * @returns A promise that resolves to a Map of package name to registry info\n */\nexport async function getNpmInfoBatch(\n packageNames: string[],\n concurrency: number = os.cpus().length\n): Promise<Map<string, INpmRegistryInfo>> {\n const results: Map<string, INpmRegistryInfo> = new Map();\n\n // TODO: Refactor createPackageSummary to use this batch function to reduce registry requests\n await Async.forEachAsync(\n packageNames,\n async (packageName: string) => {\n results.set(packageName, await getNpmInfo(packageName));\n },\n { concurrency }\n );\n\n return results;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GetLatestFromRegistry.test.js","sourceRoot":"","sources":["../../src/tests/GetLatestFromRegistry.test.ts"],"names":[],"mappings":"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","sourcesContent":["// Mock the NpmRegistryClient before imports\njest.mock('../NpmRegistryClient');\n\nimport type { INpmRegistryInfo, INpmRegistryPackageResponse } from '../interfaces/INpmCheckRegistry';\n\ndescribe('getNpmInfo', () => {\n let getNpmInfo: (packageName: string) => Promise<INpmRegistryInfo>;\n let mockFetchPackageMetadataAsync: jest.Mock;\n\n beforeEach(() => {\n jest.resetModules();\n jest.clearAllMocks();\n\n // Re-require to get fresh module instances\n mockFetchPackageMetadataAsync = jest.fn();\n\n // Set up the mock implementation before importing getNpmInfo\n const mockNpmRegistryClient = jest.requireMock('../NpmRegistryClient');\n mockNpmRegistryClient.NpmRegistryClient.mockImplementation(() => ({\n fetchPackageMetadataAsync: mockFetchPackageMetadataAsync\n }));\n\n // Import the module under test\n const module = jest.requireActual('../GetLatestFromRegistry');\n getNpmInfo = module.default;\n });\n\n it('returns registry info with homepage', async () => {\n const mockData: INpmRegistryPackageResponse = {\n name: 'test-package',\n versions: {\n '1.0.0': {\n name: 'test-package',\n version: '1.0.0',\n homepage: 'https://homepage.com'\n },\n '2.0.0': {\n name: 'test-package',\n version: '2.0.0',\n bugs: { url: 'https://bugs.com' }\n }\n },\n 'dist-tags': { latest: '1.0.0', next: '2.0.0' }\n };\n mockFetchPackageMetadataAsync.mockResolvedValue({ data: mockData });\n\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 fetch fails', async () => {\n mockFetchPackageMetadataAsync.mockResolvedValue({ error: 'Registry down' });\n\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 const mockData: INpmRegistryPackageResponse = {\n name: 'test-package',\n versions: {\n '1.0.0': {\n name: 'test-package',\n version: '1.0.0'\n },\n '2.0.0': {\n name: 'test-package',\n version: '2.0.0'\n }\n },\n 'dist-tags': { latest: '1.0.0', next: '2.0.0' }\n };\n mockFetchPackageMetadataAsync.mockResolvedValue({ data: mockData });\n\n const result: INpmRegistryInfo = await getNpmInfo('test-package');\n expect(result).toHaveProperty('homepage', '');\n });\n});\n"]}
1
+ {"version":3,"file":"GetLatestFromRegistry.test.js","sourceRoot":"","sources":["../../src/tests/GetLatestFromRegistry.test.ts"],"names":[],"mappings":"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","sourcesContent":["// Mock the NpmRegistryClient before imports\njest.mock('../NpmRegistryClient');\n\nimport type { INpmRegistryInfo, INpmRegistryPackageResponse } from '../interfaces/INpmCheckRegistry';\n\ndescribe('getNpmInfo', () => {\n let getNpmInfo: (packageName: string) => Promise<INpmRegistryInfo>;\n let mockFetchPackageMetadataAsync: jest.Mock;\n\n beforeEach(() => {\n jest.resetModules();\n jest.clearAllMocks();\n\n // Re-require to get fresh module instances\n mockFetchPackageMetadataAsync = jest.fn();\n\n // Set up the mock implementation before importing getNpmInfo\n const mockNpmRegistryClient = jest.requireMock('../NpmRegistryClient');\n mockNpmRegistryClient.NpmRegistryClient.mockImplementation(() => ({\n fetchPackageMetadataAsync: mockFetchPackageMetadataAsync\n }));\n\n // Import the module under test\n const module = jest.requireActual('../GetLatestFromRegistry');\n getNpmInfo = module.default;\n });\n\n it('returns registry info with homepage', async () => {\n const mockData: INpmRegistryPackageResponse = {\n name: 'test-package',\n versions: {\n '1.0.0': {\n name: 'test-package',\n version: '1.0.0',\n homepage: 'https://homepage.com'\n },\n '2.0.0': {\n name: 'test-package',\n version: '2.0.0',\n bugs: { url: 'https://bugs.com' }\n }\n },\n 'dist-tags': { latest: '1.0.0', next: '2.0.0' }\n };\n mockFetchPackageMetadataAsync.mockResolvedValue({ data: mockData });\n\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 fetch fails', async () => {\n mockFetchPackageMetadataAsync.mockResolvedValue({ error: 'Registry down' });\n\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 const mockData: INpmRegistryPackageResponse = {\n name: 'test-package',\n versions: {\n '1.0.0': {\n name: 'test-package',\n version: '1.0.0'\n },\n '2.0.0': {\n name: 'test-package',\n version: '2.0.0'\n }\n },\n 'dist-tags': { latest: '1.0.0', next: '2.0.0' }\n };\n mockFetchPackageMetadataAsync.mockResolvedValue({ data: mockData });\n\n const result: INpmRegistryInfo = await getNpmInfo('test-package');\n expect(result).toHaveProperty('homepage', '');\n });\n\n it('filters out versions exceeding CRAZY_HIGH_SEMVER threshold', async () => {\n const mockData: INpmRegistryPackageResponse = {\n name: 'test-package',\n versions: {\n '1.0.0': {\n name: 'test-package',\n version: '1.0.0'\n },\n '2.0.0': {\n name: 'test-package',\n version: '2.0.0'\n },\n '9000.0.0': {\n name: 'test-package',\n version: '9000.0.0'\n }\n },\n 'dist-tags': { latest: '2.0.0', next: '2.0.0' }\n };\n mockFetchPackageMetadataAsync.mockResolvedValue({ data: mockData });\n\n const result: INpmRegistryInfo = await getNpmInfo('test-package');\n // Versions exceeding 8000.0.0 should be filtered out\n expect(result.versions).toEqual(['1.0.0', '2.0.0']);\n expect(result.versions).not.toContain('9000.0.0');\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/npm-check-fork",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "A fork of npm-check.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,16 +13,16 @@
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
15
  "giturl": "^2.0.0",
16
- "lodash": "~4.17.15",
16
+ "lodash": "~4.17.23",
17
17
  "semver": "~7.5.4",
18
18
  "@rushstack/node-core-library": "5.19.1"
19
19
  },
20
20
  "devDependencies": {
21
- "@types/lodash": "4.14.116",
21
+ "@types/lodash": "4.17.23",
22
22
  "@types/semver": "7.5.0",
23
23
  "eslint": "~9.37.0",
24
- "@rushstack/heft": "1.1.13",
25
- "local-node-rig": "1.0.0"
24
+ "local-node-rig": "1.0.0",
25
+ "@rushstack/heft": "1.1.14"
26
26
  },
27
27
  "scripts": {
28
28
  "build": "heft build --clean",