diff --git a/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap b/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap index acfa5e2ed80e6af26a7fec670f9100af889c9380..b071d9868a4c09321003c9afa3f154075efd6005 100644 --- a/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap +++ b/lib/manager/npm/extract/__snapshots__/index.spec.ts.snap @@ -13,8 +13,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": undefined, @@ -135,8 +137,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": undefined, @@ -297,8 +301,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": undefined, @@ -345,8 +351,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": undefined, @@ -404,8 +412,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": undefined, @@ -457,8 +467,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": undefined, @@ -592,8 +604,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": "npm", - "lernaJsonFile": "lerna.json", "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "1.0.0", @@ -727,8 +741,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": "yarn", - "lernaJsonFile": "lerna.json", "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "1.0.0", @@ -862,8 +878,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "1.0.0", @@ -883,8 +901,10 @@ Object { "deps": Array [], "ignoreNpmrcFile": undefined, "lernaClient": "npm", - "lernaJsonFile": "lerna.json", "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "0.0.8", @@ -1020,8 +1040,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": "npm", - "lernaJsonFile": "lerna.json", "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "1.0.0", @@ -1041,8 +1063,10 @@ Object { "deps": Array [], "ignoreNpmrcFile": undefined, "lernaClient": "npm", - "lernaJsonFile": "lerna.json", "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "0.0.8", @@ -1064,8 +1088,10 @@ Object { "deps": Array [], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "0.0.8", @@ -1201,8 +1227,10 @@ Object { ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFileVersion": "1.0.0", diff --git a/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap b/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap index 9f2ae33089c893333341b6871f91e03ad11fcf38..ff40517e6df8d13d99717a6c010f5e88182c2c6e 100644 --- a/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap +++ b/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap @@ -17,10 +17,12 @@ Array [ "depName": "foo", }, ], - "lernaJsonFile": "lerna.json", "lernaPackages": Array [ "packages/*", ], + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "packageFile": "package.json", "packages": Array [ "packages/*", @@ -39,7 +41,9 @@ Array [ }, ], "lernaClient": undefined, - "lernaJsonFile": "lerna.json", + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", @@ -47,7 +51,9 @@ Array [ }, Object { "lernaClient": undefined, - "lernaJsonFile": "lerna.json", + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", @@ -75,10 +81,12 @@ Array [ "depName": "foo", }, ], - "lernaJsonFile": "lerna.json", "lernaPackages": Array [ "packages/*", ], + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "packageFile": "package.json", "packages": Array [ "packages/*", @@ -98,7 +106,9 @@ Array [ }, ], "lernaClient": undefined, - "lernaJsonFile": "lerna.json", + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", @@ -106,7 +116,9 @@ Array [ }, Object { "lernaClient": undefined, - "lernaJsonFile": "lerna.json", + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", @@ -119,10 +131,12 @@ exports[`manager/npm/extract .extractPackageFile() uses yarn workspaces package Array [ Object { "lernaClient": "yarn", - "lernaJsonFile": "lerna.json", "lernaPackages": Array [ "oldpackages/*", ], + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "packageFile": "package.json", "yarnWorkspacesPackages": Array [ "packages/*", @@ -130,7 +144,9 @@ Array [ }, Object { "lernaClient": "yarn", - "lernaJsonFile": "lerna.json", + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", @@ -138,7 +154,9 @@ Array [ }, Object { "lernaClient": "yarn", - "lernaJsonFile": "lerna.json", + "managerData": Object { + "lernaJsonFile": "lerna.json", + }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", @@ -156,7 +174,9 @@ Array [ Object { "hasYarnWorkspaces": true, "lernaClient": undefined, - "lernaJsonFile": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", @@ -164,7 +184,9 @@ Array [ }, Object { "lernaClient": undefined, - "lernaJsonFile": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts index f56f63a39a27e2534ff0faff89119eed4e69637c..33dd844c441586fa5cd49b507bdc2954ebfd9c98 100644 --- a/lib/manager/npm/extract/index.ts +++ b/lib/manager/npm/extract/index.ts @@ -366,7 +366,9 @@ export async function extractPackageFile( ignoreNpmrcFile, yarnrc, ...lockFiles, - lernaJsonFile, + managerData: { + lernaJsonFile, + }, lernaClient, lernaPackages, skipInstalls, diff --git a/lib/manager/npm/extract/monorepo.spec.ts b/lib/manager/npm/extract/monorepo.spec.ts index 0d473c6ec512b853d4d86eee7b6017ee4662f7cb..3c509980d34115818e8d874ae8f8a7aefa4f361f 100644 --- a/lib/manager/npm/extract/monorepo.spec.ts +++ b/lib/manager/npm/extract/monorepo.spec.ts @@ -6,7 +6,9 @@ describe('manager/npm/extract', () => { const packageFiles = [ { packageFile: 'package.json', - lernaJsonFile: 'lerna.json', + managerData: { + lernaJsonFile: 'lerna.json', + }, lernaPackages: ['packages/*'], packages: ['packages/*'], deps: [ @@ -46,7 +48,7 @@ describe('manager/npm/extract', () => { ] as any; detectMonorepos(packageFiles, false); expect(packageFiles).toMatchSnapshot(); - expect(packageFiles[1].lernaJsonFile).toEqual('lerna.json'); + expect(packageFiles[1].managerData.lernaJsonFile).toEqual('lerna.json'); expect( packageFiles.some((packageFile) => packageFile.deps?.some((dep) => dep.skipReason) @@ -57,7 +59,9 @@ describe('manager/npm/extract', () => { const packageFiles = [ { packageFile: 'package.json', - lernaJsonFile: 'lerna.json', + managerData: { + lernaJsonFile: 'lerna.json', + }, lernaPackages: ['packages/*'], packages: ['packages/*'], deps: [ @@ -97,7 +101,7 @@ describe('manager/npm/extract', () => { ] as any; detectMonorepos(packageFiles, true); expect(packageFiles).toMatchSnapshot(); - expect(packageFiles[1].lernaJsonFile).toEqual('lerna.json'); + expect(packageFiles[1].managerData.lernaJsonFile).toEqual('lerna.json'); expect( packageFiles.some((packageFile) => packageFile.deps?.some((dep) => dep.skipReason) @@ -108,7 +112,9 @@ describe('manager/npm/extract', () => { const packageFiles = [ { packageFile: 'package.json', - lernaJsonFile: 'lerna.json', + managerData: { + lernaJsonFile: 'lerna.json', + }, lernaPackages: ['oldpackages/*'], lernaClient: 'yarn', yarnWorkspacesPackages: ['packages/*'], @@ -124,7 +130,7 @@ describe('manager/npm/extract', () => { ]; detectMonorepos(packageFiles, false); expect(packageFiles).toMatchSnapshot(); - expect(packageFiles[1].lernaJsonFile).toEqual('lerna.json'); + expect(packageFiles[1].managerData.lernaJsonFile).toEqual('lerna.json'); }); it('uses yarn workspaces package settings without lerna', () => { const packageFiles = [ diff --git a/lib/manager/npm/extract/monorepo.ts b/lib/manager/npm/extract/monorepo.ts index 8b7b0a17ef30ad6e7245feec292426ee70bc6e3e..411255eb31117db62b21a3e3a55a7221db6f4854 100644 --- a/lib/manager/npm/extract/monorepo.ts +++ b/lib/manager/npm/extract/monorepo.ts @@ -23,11 +23,12 @@ export function detectMonorepos( packageFile, npmLock, yarnLock, - lernaJsonFile, + managerData = {}, lernaClient, lernaPackages, yarnWorkspacesPackages, } = p; + const { lernaJsonFile } = managerData; const basePath = upath.dirname(packageFile); const packages = yarnWorkspacesPackages || lernaPackages; if (packages?.length) { @@ -56,7 +57,8 @@ export function detectMonorepos( }); } for (const subPackage of internalPackageFiles) { - subPackage.lernaJsonFile = lernaJsonFile; + subPackage.managerData = subPackage.managerData || {}; + subPackage.managerData.lernaJsonFile = lernaJsonFile; subPackage.lernaClient = lernaClient; subPackage.yarnLock = subPackage.yarnLock || yarnLock; subPackage.npmLock = subPackage.npmLock || npmLock; diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts index 2479542a7e63ad75c03fd7123d914e4753ca1b89..fb03473ae10ec6e545c5332e6973765bef946c2d 100644 --- a/lib/manager/npm/post-update/index.ts +++ b/lib/manager/npm/post-update/index.ts @@ -48,8 +48,8 @@ export function determineLockFileDirs( for (const upgrade of config.upgrades) { if (upgrade.updateType === 'lockFileMaintenance' || upgrade.isRemediation) { // Return every directory that contains a lockfile - if (upgrade.lernaJsonFile && upgrade.npmLock) { - lernaJsonFiles.push(upgrade.lernaJsonFile); + if (upgrade.managerData?.lernaJsonFile && upgrade.npmLock) { + lernaJsonFiles.push(upgrade.managerData.lernaJsonFile); } else { yarnLockDirs.push(upgrade.yarnLock); npmLockDirs.push(upgrade.npmLock); @@ -93,15 +93,15 @@ export function determineLockFileDirs( logger.trace(`Checking ${String(p.name)} for lock files`); const packageFile = getPackageFile(p.name); // lerna first - if (packageFile.lernaJsonFile && packageFile.npmLock) { + if (packageFile.managerData?.lernaJsonFile && packageFile.npmLock) { logger.debug(`${packageFile.packageFile} has lerna lock file`); - lernaJsonFiles.push(packageFile.lernaJsonFile); + lernaJsonFiles.push(packageFile.managerData.lernaJsonFile); } else if ( - packageFile.lernaJsonFile && + packageFile.managerData?.lernaJsonFile && packageFile.yarnLock && !packageFile.hasYarnWorkspaces ) { - lernaJsonFiles.push(packageFile.lernaJsonFile); + lernaJsonFiles.push(packageFile.managerData.lernaJsonFile); } else { // push full lock file names and convert them later yarnLockDirs.push(packageFile.yarnLock); diff --git a/lib/manager/types.ts b/lib/manager/types.ts index b370888e9514c92080a99d83a0ec151a29db2e97..0a6deff94ebfb8eb5637b1bf8a055b3ad6d654ae 100644 --- a/lib/manager/types.ts +++ b/lib/manager/types.ts @@ -74,7 +74,6 @@ export interface NpmLockFiles { shrinkwrapJson?: string; pnpmShrinkwrap?: string; npmLock?: string; - lernaJsonFile?: string; lockFiles?: string[]; } diff --git a/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap b/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap index 0689e3fb3591a430f3063c7aeb93e4e2b2504917..7b05cb15e52b9f236495581a3a6c26835f863c16 100644 --- a/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap +++ b/lib/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap @@ -16,8 +16,10 @@ Array [ ], "ignoreNpmrcFile": undefined, "lernaClient": undefined, - "lernaJsonFile": undefined, "lernaPackages": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + }, "npmLock": undefined, "npmrc": undefined, "packageFile": "package.json",