diff --git a/jest.config.ts b/jest.config.ts index 6459ff6288ae05233a4da78947bf6f2faa001529..eef19f6292db38edf76e7999321117703add5c0d 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -26,7 +26,11 @@ const config: InitialOptionsTsJest = { }, modulePathIgnorePatterns: ['<rootDir>/dist/', '/__fixtures__/'], reporters: ci ? ['default', 'jest-github-actions-reporter'] : ['default'], - setupFilesAfterEnv: ['jest-extended', '<rootDir>/test/setup.ts'], + setupFilesAfterEnv: [ + 'jest-extended', + 'expect-more-jest', + '<rootDir>/test/setup.ts', + ], snapshotSerializers: ['<rootDir>/test/newline-snapshot-serializer.ts'], testEnvironment: 'node', testRunner: 'jest-circus/runner', diff --git a/lib/config/massage.spec.ts b/lib/config/massage.spec.ts index 3b1c7b2a777db59260b30f62e56c16de42921b44..ad95cb40417b53e66229b055dfbcbc633e37dff9 100644 --- a/lib/config/massage.spec.ts +++ b/lib/config/massage.spec.ts @@ -13,7 +13,7 @@ describe('config/massage', () => { schedule: 'before 5am' as never, }; const res = massage.massageConfig(config); - expect(Array.isArray(res.schedule)).toBe(true); + expect(Array.isArray(res.schedule)).toBeTrue(); }); it('massages npmToken', () => { const config: RenovateConfig = { diff --git a/lib/config/migration.spec.ts b/lib/config/migration.spec.ts index 198addc4a4d8a860cbb824885c97a87e3924a5dd..f0bbd8a9fead6cd4a54c38a984638acafd48e17a 100644 --- a/lib/config/migration.spec.ts +++ b/lib/config/migration.spec.ts @@ -163,7 +163,7 @@ describe('config/migration', () => { parentConfig ); expect(migratedConfig).toMatchSnapshot(); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig.depTypes).not.toBeDefined(); expect(migratedConfig.automerge).toEqual(false); expect(migratedConfig.packageRules).toHaveLength(9); @@ -184,7 +184,7 @@ describe('config/migration', () => { parentConfig ); expect(migratedConfig).toMatchSnapshot(); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig.major.schedule).toHaveLength(2); expect(migratedConfig.major.schedule[0]).toEqual('after 10pm'); expect(migratedConfig.major.schedule[1]).toEqual('before 7am'); @@ -206,7 +206,7 @@ describe('config/migration', () => { config, parentConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig.schedule).toEqual('on friday'); }); it('migrates semantic prefix with no scope', () => { @@ -218,7 +218,7 @@ describe('config/migration', () => { config, parentConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig.semanticCommitScope).toBeNull(); }); it('does not migrate every weekday', () => { @@ -230,7 +230,7 @@ describe('config/migration', () => { config, parentConfig ); - expect(isMigrated).toBe(false); + expect(isMigrated).toBeFalse(); expect(migratedConfig.schedule).toEqual(config.schedule); }); it('does not migrate multi days', () => { @@ -243,7 +243,7 @@ describe('config/migration', () => { parentConfig ); expect(migratedConfig).toMatchSnapshot(); - expect(isMigrated).toBe(false); + expect(isMigrated).toBeFalse(); expect(migratedConfig.schedule).toEqual(config.schedule); }); it('does not migrate hour range', () => { @@ -256,7 +256,7 @@ describe('config/migration', () => { parentConfig ); expect(migratedConfig.schedule).toEqual(config.schedule); - expect(isMigrated).toBe(false); + expect(isMigrated).toBeFalse(); }); it('migrates packages', () => { const config = { @@ -272,7 +272,7 @@ describe('config/migration', () => { config, parentConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toEqual({ packageRules: [ { @@ -297,9 +297,9 @@ describe('config/migration', () => { config, parentConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toMatchSnapshot(); - expect(migratedConfig.packageRules[0].minor.automerge).toBe(false); + expect(migratedConfig.packageRules[0].minor.automerge).toBeFalse(); }); it('does not migrate config', () => { const config: TestRenovateConfig = { @@ -308,7 +308,7 @@ describe('config/migration', () => { }; const { isMigrated, migratedConfig } = configMigration.migrateConfig(config); - expect(isMigrated).toBe(false); + expect(isMigrated).toBeFalse(); expect(migratedConfig).toMatchObject(config); }); it('migrates subconfig', () => { @@ -327,12 +327,12 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toMatchSnapshot(); expect(migratedConfig.lockFileMaintenance.packageRules).toHaveLength(1); expect( migratedConfig.lockFileMaintenance.packageRules[0].respectLatest - ).toBe(false); + ).toBeFalse(); }); it('migrates packageRules objects', () => { @@ -348,7 +348,7 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toMatchSnapshot(); expect(migratedConfig.packageRules).toHaveLength(1); }); @@ -364,7 +364,7 @@ describe('config/migration', () => { defaultConfig ); expect(migratedConfig).toMatchSnapshot(); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect( (migratedConfig.node as RenovateSharedConfig).enabled ).toBeUndefined(); @@ -390,7 +390,7 @@ describe('config/migration', () => { defaultConfig ); expect(migratedConfig).toMatchSnapshot(); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig.includePaths).toHaveLength(4); expect(migratedConfig.packageFiles).toBeUndefined(); expect(migratedConfig.packageRules).toHaveLength(4); @@ -420,7 +420,7 @@ describe('config/migration', () => { defaultConfig ); expect(migratedConfig).toMatchSnapshot(); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig.includePaths).toHaveLength(1); expect(migratedConfig.packageFiles).toBeUndefined(); expect(migratedConfig.packageRules).toHaveLength(2); @@ -454,7 +454,7 @@ describe('config/migration', () => { includePaths: ['test'], rebaseWhen: 'auto', }); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); }); it('it migrates semanticCommits', () => { let config: TestRenovateConfig; @@ -462,27 +462,27 @@ describe('config/migration', () => { config = { semanticCommits: true as never }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ semanticCommits: 'enabled' }); config = { semanticCommits: false as never }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ semanticCommits: 'disabled' }); config = { semanticCommits: null as never }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ semanticCommits: 'auto' }); config = { semanticCommits: 'enabled' }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(false); + expect(res.isMigrated).toBeFalse(); expect(res.migratedConfig).toMatchObject({ semanticCommits: 'enabled' }); config = { semanticCommits: 'disabled' }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(false); + expect(res.isMigrated).toBeFalse(); expect(res.migratedConfig).toMatchObject({ semanticCommits: 'disabled' }); }); @@ -492,17 +492,17 @@ describe('config/migration', () => { config = { extends: ':js-app' } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['config:js-app'] }); config = { extends: 'foo' } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo'] }); config = { extends: ['foo', ':js-app', 'bar'] } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'config:js-app', 'bar'], }); @@ -514,28 +514,28 @@ describe('config/migration', () => { config = { unpublishSafe: true }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['npm:unpublishSafe'], }); config = { unpublishSafe: true, extends: 'foo' } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'npm:unpublishSafe'], }); config = { unpublishSafe: true, extends: [] }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['npm:unpublishSafe'], }); config = { unpublishSafe: true, extends: ['foo', 'bar'] }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'bar', 'npm:unpublishSafe'], }); @@ -545,7 +545,7 @@ describe('config/migration', () => { extends: ['foo', ':unpublishSafe', 'bar'], }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'npm:unpublishSafe', 'bar'], }); @@ -555,7 +555,7 @@ describe('config/migration', () => { extends: ['foo', 'default:unpublishSafe', 'bar'], }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'npm:unpublishSafe', 'bar'], }); @@ -565,7 +565,7 @@ describe('config/migration', () => { extends: ['foo', 'bar'], }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'bar'], }); @@ -575,7 +575,7 @@ describe('config/migration', () => { extends: ['foo', 'bar'], }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: ['foo', 'bar', 'npm:unpublishSafe'], }); @@ -585,7 +585,7 @@ describe('config/migration', () => { extends: [':unpublishSafeDisabled'], }; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig).toMatchObject({ extends: [':unpublishSafeDisabled', 'npm:unpublishSafe'], }); @@ -599,7 +599,7 @@ describe('config/migration', () => { packageRules: { matchPackageNames: [] }, } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig.packageRules).toHaveLength(2); config = { @@ -607,7 +607,7 @@ describe('config/migration', () => { packages: [{ matchPackagePatterns: ['*'] }], } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig.packageRules).toHaveLength(2); }); it('it migrates packageRules', () => { @@ -633,7 +633,7 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toEqual({ packageRules: [ { @@ -681,7 +681,7 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toMatchSnapshot(); expect(migratedConfig.packageRules).toHaveLength(3); }); @@ -697,7 +697,7 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toEqual({ hostRules: [ { matchHost: 'https://some.domain.com', token: '123test' }, @@ -720,7 +720,7 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toEqual({ extends: ['local>org/renovate-config'] }); }); @@ -732,21 +732,21 @@ describe('config/migration', () => { composerIgnorePlatformReqs: true, } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig.composerIgnorePlatformReqs).toStrictEqual([]); config = { composerIgnorePlatformReqs: false, } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(true); + expect(res.isMigrated).toBeTrue(); expect(res.migratedConfig.composerIgnorePlatformReqs).toBeNull(); config = { composerIgnorePlatformReqs: [], } as never; res = configMigration.migrateConfig(config); - expect(res.isMigrated).toBe(false); + expect(res.isMigrated).toBeFalse(); expect(res.migratedConfig.composerIgnorePlatformReqs).toStrictEqual([]); }); @@ -770,7 +770,7 @@ describe('config/migration', () => { config, defaultConfig ); - expect(isMigrated).toBe(true); + expect(isMigrated).toBeTrue(); expect(migratedConfig).toMatchSnapshot(); }); it('migrates empty requiredStatusChecks', () => { diff --git a/lib/config/presets/index.spec.ts b/lib/config/presets/index.spec.ts index 73ef83ec01713ee96317cfb9e377e7a54c210e4d..64ffb67bc9b17e6e1bd6fbc4658b40f53005b1bb 100644 --- a/lib/config/presets/index.spec.ts +++ b/lib/config/presets/index.spec.ts @@ -224,7 +224,7 @@ describe('config/presets/index', () => { const res = await presets.resolveConfigPresets(config); expect(res).toMatchSnapshot(); const rule = res.packageRules[0]; - expect(rule.automerge).toBe(true); + expect(rule.automerge).toBeTrue(); expect(rule.matchPackageNames).toHaveLength(4); expect(rule.matchPackagePatterns).toHaveLength(1); expect(rule.matchPackagePrefixes).toHaveLength(4); @@ -234,7 +234,7 @@ describe('config/presets/index', () => { const res = await presets.resolveConfigPresets(config); expect(res).toMatchSnapshot(); expect(res.automerge).not.toBeDefined(); - expect(res.minor.automerge).toBe(true); + expect(res.minor.automerge).toBeTrue(); }); it('ignores presets', async () => { @@ -243,7 +243,7 @@ describe('config/presets/index', () => { 'config:base', ]); expect(config).toMatchObject(res); - expect(res).toEqual({}); + expect(res).toBeEmptyObject(); }); it('resolves self-hosted presets without baseConfig', async () => { diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts index 711db9971997802ee252355672c0e6797eccbf1c..eaa44fec3bf26d2161858701cd45373d90ad8d03 100644 --- a/lib/config/validation.spec.ts +++ b/lib/config/validation.spec.ts @@ -4,7 +4,7 @@ import * as configValidation from './validation'; describe('config/validation', () => { describe('getParentName()', () => { it('ignores encrypted in root', () => { - expect(configValidation.getParentName('encrypted')).toEqual(''); + expect(configValidation.getParentName('encrypted')).toBeEmptyString(); }); it('handles array types', () => { expect(configValidation.getParentName('hostRules[1]')).toEqual( diff --git a/lib/datasource/github-releases/index.spec.ts b/lib/datasource/github-releases/index.spec.ts index 2f03c8ed182ece69f3f9a0ec63576839ebb7b6ea..99f4a5381ebfa6cc10782c1c5330eb48df09c5bb 100644 --- a/lib/datasource/github-releases/index.spec.ts +++ b/lib/datasource/github-releases/index.spec.ts @@ -49,7 +49,7 @@ describe('datasource/github-releases/index', () => { ).toBeDefined(); expect( res.releases.find((release) => release.version === '2.0.0').isStable - ).toBe(false); + ).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('supports ghe', async () => { diff --git a/lib/datasource/index.spec.ts b/lib/datasource/index.spec.ts index 1d3f6fa3cdaa51e56a5fd3b3992fb2fa888a8f50..95a2a1b1e18db29c32ce74bca8d1d715c9bc599d 100644 --- a/lib/datasource/index.spec.ts +++ b/lib/datasource/index.spec.ts @@ -61,13 +61,13 @@ describe('datasource/index', () => { for (const dsName of dss.keys()) { const ds = dss.get(dsName); - expect(validateDatasource(ds, dsName)).toBe(true); + expect(validateDatasource(ds, dsName)).toBeTrue(); } }); it('returns if digests are supported', () => { expect( datasource.supportsDigests({ datasource: datasourceGithubTags.id }) - ).toBe(true); + ).toBeTrue(); }); it('returns null for no datasource', async () => { expect( diff --git a/lib/datasource/npm/index.spec.ts b/lib/datasource/npm/index.spec.ts index 18bab6a112cf4c7b51a2bfca70fccbdb4784db99..d685608c9c46959239532c1b47589b9028818dd7 100644 --- a/lib/datasource/npm/index.spec.ts +++ b/lib/datasource/npm/index.spec.ts @@ -312,7 +312,7 @@ describe('datasource/npm/index', () => { setNpmrc(npmrcContent); setNpmrc(npmrcContent); setNpmrc(); - expect(getNpmrc()).toEqual({}); + expect(getNpmrc()).toBeEmptyObject(); }); it('should use default registry if missing from npmrc', async () => { diff --git a/lib/datasource/npm/npmrc.spec.ts b/lib/datasource/npm/npmrc.spec.ts index a013f823bff104d77793686e55ffc63a567d998c..6e70054cc249b9814f256ad08234ab6bf8e3226f 100644 --- a/lib/datasource/npm/npmrc.spec.ts +++ b/lib/datasource/npm/npmrc.spec.ts @@ -51,6 +51,6 @@ describe('datasource/npm/npmrc', () => { it('ignores localhost', () => { setNpmrc(`registry=http://localhost`); expect(sanitize.add).toHaveBeenCalledTimes(0); - expect(getNpmrc()).toEqual({}); + expect(getNpmrc()).toBeEmptyObject(); }); }); diff --git a/lib/datasource/pypi/index.spec.ts b/lib/datasource/pypi/index.spec.ts index 2171f67a900907afc34b98b84433af508c71a6c3..7cf65b23ebaed9e59bd5b5314039cadad94a6abd 100644 --- a/lib/datasource/pypi/index.spec.ts +++ b/lib/datasource/pypi/index.spec.ts @@ -94,7 +94,7 @@ describe('datasource/pypi/index', () => { datasource, depName: 'azure-cli-monitor', }); - expect(res.isPrivate).toBe(true); + expect(res.isPrivate).toBeTrue(); }); it('supports multiple custom datasource urls', async () => { httpMock @@ -273,7 +273,7 @@ describe('datasource/pypi/index', () => { constraints: { python: '2.7' }, depName: 'dj-database-url', }); - expect(res.isPrivate).toBe(true); + expect(res.isPrivate).toBeTrue(); }); it('process data from simple endpoint with hyphens replaced with underscores', async () => { httpMock diff --git a/lib/logger/pretty-stdout.spec.ts b/lib/logger/pretty-stdout.spec.ts index 67848e4320c4e9d474476726148dc574fac335a4..66e8729fd3543f95eb6dc729945eb3e970f96e83 100644 --- a/lib/logger/pretty-stdout.spec.ts +++ b/lib/logger/pretty-stdout.spec.ts @@ -12,16 +12,16 @@ jest.mock('chalk', () => describe('logger/pretty-stdout', () => { describe('getMeta(rec)', () => { it('returns empty string if null rec', () => { - expect(prettyStdout.getMeta(null as any)).toEqual(''); + expect(prettyStdout.getMeta(null as any)).toBeEmptyString(); }); it('returns empty string if empty rec', () => { - expect(prettyStdout.getMeta({} as any)).toEqual(''); + expect(prettyStdout.getMeta({} as any)).toBeEmptyString(); }); it('returns empty string if no meta fields', () => { const rec = { foo: 'bar', }; - expect(prettyStdout.getMeta(rec as any)).toEqual(''); + expect(prettyStdout.getMeta(rec as any)).toBeEmptyString(); }); it('supports single meta', () => { const rec = { @@ -46,17 +46,17 @@ describe('logger/pretty-stdout', () => { }); describe('getDetails(rec)', () => { it('returns empty string if null rec', () => { - expect(prettyStdout.getDetails(null as any)).toEqual(''); + expect(prettyStdout.getDetails(null as any)).toBeEmptyString(); }); it('returns empty string if empty rec', () => { - expect(prettyStdout.getDetails({} as any)).toEqual(''); + expect(prettyStdout.getDetails({} as any)).toBeEmptyString(); }); it('returns empty string if all are meta fields', () => { const rec = { branch: 'bar', v: 0, }; - expect(prettyStdout.getDetails(rec as any)).toEqual(''); + expect(prettyStdout.getDetails(rec as any)).toBeEmptyString(); }); it('supports a config', () => { const rec = { diff --git a/lib/manager/bundler/extract.spec.ts b/lib/manager/bundler/extract.spec.ts index 7548328d5263a62bf9b99d572b60f881ed36996d..1eb4fef213271f0485ae8bb5de079bacbadee8a0 100644 --- a/lib/manager/bundler/extract.spec.ts +++ b/lib/manager/bundler/extract.spec.ts @@ -51,7 +51,7 @@ describe('manager/bundler/extract', () => { Object.prototype.hasOwnProperty.call(dep, 'lockedVersion') && isValid(dep.lockedVersion) ) - ).toBe(true); + ).toBeTrue(); validateGems(railsGemfile, res); }); it('parses sourceGroups', async () => { @@ -69,7 +69,7 @@ describe('manager/bundler/extract', () => { Object.prototype.hasOwnProperty.call(dep, 'lockedVersion') && isValid(dep.lockedVersion) ) - ).toBe(true); + ).toBeTrue(); validateGems(webPackerGemfile, res); }); it('parse mastodon Gemfile', async () => { @@ -86,7 +86,7 @@ describe('manager/bundler/extract', () => { Object.prototype.hasOwnProperty.call(dep, 'lockedVersion') && isValid(dep.lockedVersion) ) - ).toBe(true); + ).toBeTrue(); validateGems(mastodonGemfile, res); }); it('parse Ruby CI Gemfile', async () => { @@ -99,7 +99,7 @@ describe('manager/bundler/extract', () => { Object.prototype.hasOwnProperty.call(dep, 'lockedVersion') && isValid(dep.lockedVersion) ) - ).toBe(true); + ).toBeTrue(); validateGems(rubyCIGemfile, res); }); }); @@ -113,7 +113,7 @@ describe('manager/bundler/extract', () => { Object.prototype.hasOwnProperty.call(dep, 'lockedVersion') && isValid(dep.lockedVersion) ) - ).toBe(true); + ).toBeTrue(); validateGems(gitlabFossGemfile, res); }); diff --git a/lib/manager/bundler/host-rules.spec.ts b/lib/manager/bundler/host-rules.spec.ts index 3aa78358a31f22d57e0eb86caadada06f57b337e..3a8c85b01a4fcead21894f082c9d7b60a484f199 100644 --- a/lib/manager/bundler/host-rules.spec.ts +++ b/lib/manager/bundler/host-rules.spec.ts @@ -42,21 +42,27 @@ describe('manager/bundler/host-rules', () => { it('returns an empty array if matchHost is missing', () => { delete hostRule.matchHost; add(hostRule); - expect(findAllAuthenticatable({ hostType: 'nuget' } as any)).toEqual([]); + expect( + findAllAuthenticatable({ hostType: 'nuget' } as any) + ).toBeEmptyArray(); }); it('returns an empty array if username is missing and password is present', () => { delete hostRule.username; delete hostRule.token; add(hostRule); - expect(findAllAuthenticatable({ hostType: 'nuget' } as any)).toEqual([]); + expect( + findAllAuthenticatable({ hostType: 'nuget' } as any) + ).toBeEmptyArray(); }); it('returns an empty array if password and token are missing', () => { delete hostRule.password; delete hostRule.token; add(hostRule); - expect(findAllAuthenticatable({ hostType: 'nuget' } as any)).toEqual([]); + expect( + findAllAuthenticatable({ hostType: 'nuget' } as any) + ).toBeEmptyArray(); }); it('returns the hostRule if using matchHost and password', () => { delete hostRule.token; diff --git a/lib/manager/dockerfile/extract.spec.ts b/lib/manager/dockerfile/extract.spec.ts index c7dc176ef2c42741078c472f66b2610617c6c032..ac320fe8035819210d1d8399bbcca1f17b54969a 100644 --- a/lib/manager/dockerfile/extract.spec.ts +++ b/lib/manager/dockerfile/extract.spec.ts @@ -439,7 +439,7 @@ describe('manager/dockerfile/extract', () => { res[1].depType === 'stage', res[0].depType === 'stage', ].every(Boolean); - expect(passed).toBe(true); + expect(passed).toBeTrue(); }); it('extracts images on adjacent lines', () => { diff --git a/lib/manager/gitlabci/extract.spec.ts b/lib/manager/gitlabci/extract.spec.ts index cc911594aeee1247d013452c9e523e7af4bec2f3..04c6ec92254344b54a2b5205f8ef51ece3695419 100644 --- a/lib/manager/gitlabci/extract.spec.ts +++ b/lib/manager/gitlabci/extract.spec.ts @@ -66,7 +66,7 @@ describe('manager/gitlabci/extract', () => { }); expect(deps).toHaveLength(8); - expect(deps.some((dep) => dep.currentValue.includes("'"))).toBe(false); + expect(deps.some((dep) => dep.currentValue.includes("'"))).toBeFalse(); }); it('extracts multiple image lines with comments', async () => { diff --git a/lib/manager/gradle-wrapper/artifacts-real.spec.ts b/lib/manager/gradle-wrapper/artifacts-real.spec.ts index acb1e1debbd9eedcd8e0280bf9a058b202d91168..88fe508870ebd480442cb88e7b84cb8615e01966 100644 --- a/lib/manager/gradle-wrapper/artifacts-real.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts-real.spec.ts @@ -127,7 +127,7 @@ describe('manager/gradle-wrapper/artifacts-real', () => { config, }); - expect(res).toEqual([]); + expect(res).toBeEmptyArray(); // 5.6.4 => 5.6.4 (updates execs) // 6.3 => (5.6.4) (downgrades execs) diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts index bcd2199fa5f7313e8c0cfadcea930d178220f15d..a98cedc9d94fd3d88583979a2937865401f08b5a 100644 --- a/lib/manager/gradle-wrapper/artifacts.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts.spec.ts @@ -123,7 +123,7 @@ describe('manager/gradle-wrapper/artifacts', () => { }); expect(execSnapshots).toMatchSnapshot(); - expect(res).toEqual([]); + expect(res).toBeEmptyArray(); }); it('updates distributionSha256Sum', async () => { diff --git a/lib/manager/gradle/deep/index.spec.ts b/lib/manager/gradle/deep/index.spec.ts index 36f4ee06d5b11e4c9187d06143e25be1f9958f32..06f3ab781808c15e648a1782a6831556d2ac3820 100644 --- a/lib/manager/gradle/deep/index.spec.ts +++ b/lib/manager/gradle/deep/index.spec.ts @@ -176,7 +176,7 @@ describe('manager/gradle/deep/index', () => { const dependencies = await extractAllPackageFiles(config, [ 'build.gradle', ]); - expect(dependencies).toEqual([]); + expect(dependencies).toBeEmptyArray(); expect(execSnapshots).toMatchSnapshot(); }); @@ -185,7 +185,7 @@ describe('manager/gradle/deep/index', () => { const dependencies = await extractAllPackageFiles(config, [ 'build.gradle', ]); - expect(dependencies).toEqual([]); + expect(dependencies).toBeEmptyArray(); expect(execSnapshots).toMatchSnapshot(); }); @@ -194,7 +194,7 @@ describe('manager/gradle/deep/index', () => { const dependencies = await extractAllPackageFiles(config, [ 'build.gradle', ]); - expect(dependencies).toEqual([]); + expect(dependencies).toBeEmptyArray(); expect(execSnapshots).toMatchSnapshot(); }); diff --git a/lib/manager/gradle/shallow/utils.spec.ts b/lib/manager/gradle/shallow/utils.spec.ts index eb37b9132caa822302d4eaf39b31b01ac5070629..5dfa16dec5d2600cc5d347e0040f154e0ad8772b 100644 --- a/lib/manager/gradle/shallow/utils.spec.ts +++ b/lib/manager/gradle/shallow/utils.spec.ts @@ -33,16 +33,16 @@ describe('manager/gradle/shallow/utils', () => { }); it('isDependencyString', () => { - expect(isDependencyString('foo:bar:1.2.3')).toBe(true); - expect(isDependencyString('foo.foo:bar.bar:1.2.3')).toBe(true); - expect(isDependencyString('foo:bar:baz:qux')).toBe(false); - expect(isDependencyString('foo.bar:baz:1.2.3')).toBe(true); - expect(isDependencyString('foo.bar:baz:1.2.+')).toBe(true); - expect(isDependencyString('foo.bar:baz:qux:quux')).toBe(false); - expect(isDependencyString("foo:bar:1.2.3'")).toBe(false); - expect(isDependencyString('foo:bar:1.2.3"')).toBe(false); - expect(isDependencyString('-Xep:ParameterName:OFF')).toBe(false); - expect(isDependencyString('foo$bar:baz:1.2.+')).toBe(false); + expect(isDependencyString('foo:bar:1.2.3')).toBeTrue(); + expect(isDependencyString('foo.foo:bar.bar:1.2.3')).toBeTrue(); + expect(isDependencyString('foo:bar:baz:qux')).toBeFalse(); + expect(isDependencyString('foo.bar:baz:1.2.3')).toBeTrue(); + expect(isDependencyString('foo.bar:baz:1.2.+')).toBeTrue(); + expect(isDependencyString('foo.bar:baz:qux:quux')).toBeFalse(); + expect(isDependencyString("foo:bar:1.2.3'")).toBeFalse(); + expect(isDependencyString('foo:bar:1.2.3"')).toBeFalse(); + expect(isDependencyString('-Xep:ParameterName:OFF')).toBeFalse(); + expect(isDependencyString('foo$bar:baz:1.2.+')).toBeFalse(); }); it('parseDependencyString', () => { @@ -70,7 +70,7 @@ describe('manager/gradle/shallow/utils', () => { }); it('interpolateString', () => { - expect(interpolateString([], {})).toBe(''); + expect(interpolateString([], {})).toBeEmptyString(); expect( interpolateString( [ diff --git a/lib/manager/index.spec.ts b/lib/manager/index.spec.ts index b3eaa34b18e60f382187234bbb71688bf0bf7d48..53da1cc52719f50e4052ec115e2275aaeb10dba2 100644 --- a/lib/manager/index.spec.ts +++ b/lib/manager/index.spec.ts @@ -41,7 +41,7 @@ describe('manager/index', () => { for (const name of mgrs.keys()) { const mgr = mgrs.get(name); - expect(validate(mgr)).toBe(true); + expect(validate(mgr)).toBeTrue(); } }); diff --git a/lib/manager/leiningen/extract.spec.ts b/lib/manager/leiningen/extract.spec.ts index 9b8d48df9075cb39b879aa5a5ba1ca81ef904d74..0c4b19bff0125328f69bc98d1a601539010b404c 100644 --- a/lib/manager/leiningen/extract.spec.ts +++ b/lib/manager/leiningen/extract.spec.ts @@ -18,9 +18,9 @@ describe('manager/leiningen/extract', () => { ); }); it('extractFromVectors', () => { - expect(extractFromVectors('')).toEqual([]); - expect(extractFromVectors('[]')).toEqual([]); - expect(extractFromVectors('[[]]')).toEqual([]); + expect(extractFromVectors('')).toBeEmptyArray(); + expect(extractFromVectors('[]')).toBeEmptyArray(); + expect(extractFromVectors('[[]]')).toBeEmptyArray(); expect(extractFromVectors('[[foo/bar "1.2.3"]]')).toEqual([ { datasource: ClojureDatasource.id, diff --git a/lib/manager/maven/index.spec.ts b/lib/manager/maven/index.spec.ts index 31da0fd898b48ab94fe84133149f754e0d8ca25b..fffedd425eb14936c55970dc41f7bab8dd27740d 100644 --- a/lib/manager/maven/index.spec.ts +++ b/lib/manager/maven/index.spec.ts @@ -20,13 +20,13 @@ describe('manager/maven/index', () => { it('should return empty if package has no content', async () => { fs.readLocalFile.mockResolvedValueOnce(null); const res = await extractAllPackageFiles({}, ['random.pom.xml']); - expect(res).toEqual([]); + expect(res).toBeEmptyArray(); }); it('should return empty for packages with invalid content', async () => { fs.readLocalFile.mockResolvedValueOnce('invalid content'); const res = await extractAllPackageFiles({}, ['random.pom.xml']); - expect(res).toEqual([]); + expect(res).toBeEmptyArray(); }); it('should return package files info', async () => { diff --git a/lib/manager/metadata.spec.ts b/lib/manager/metadata.spec.ts index d5f2aaecc81d349615bcf318f41a6d5d13b755d6..3c1d271c436c8ced8c7025480909453a238ea826 100644 --- a/lib/manager/metadata.spec.ts +++ b/lib/manager/metadata.spec.ts @@ -29,6 +29,6 @@ describe('manager/metadata', () => { expect( res.some((line) => line.startsWith('# ') || line.startsWith('## ')) - ).toBe(false); + ).toBeFalse(); }); }); diff --git a/lib/manager/npm/extract/monorepo.spec.ts b/lib/manager/npm/extract/monorepo.spec.ts index 62121992b16529a118f609ea53c40f7a1705e071..19763b49b334ae37d76f1b423d6eec7b897143ab 100644 --- a/lib/manager/npm/extract/monorepo.spec.ts +++ b/lib/manager/npm/extract/monorepo.spec.ts @@ -55,7 +55,7 @@ describe('manager/npm/extract/monorepo', () => { packageFiles.some((packageFile) => packageFile.deps?.some((dep) => dep.skipReason) ) - ).toBe(true); + ).toBeTrue(); }); it('updates internal packages', async () => { @@ -109,7 +109,7 @@ describe('manager/npm/extract/monorepo', () => { packageFiles.some((packageFile) => packageFile.deps?.some((dep) => dep.skipReason) ) - ).toBe(false); + ).toBeFalse(); }); it('uses yarn workspaces package settings with lerna', async () => { diff --git a/lib/manager/npm/extract/pnpm.spec.ts b/lib/manager/npm/extract/pnpm.spec.ts index 03fb0863ad7697959902eba4e8242b1361a15fed..d27216433f47adc292cd763a767bbbe98e7fc5c5 100644 --- a/lib/manager/npm/extract/pnpm.spec.ts +++ b/lib/manager/npm/extract/pnpm.spec.ts @@ -126,7 +126,7 @@ describe('manager/npm/extract/pnpm', () => { expect(packageFiles).toMatchSnapshot(); expect( packageFiles.every((packageFile) => packageFile.pnpmShrinkwrap) - ).toBe(true); + ).toBeTrue(); }); it('skips when pnpm shrinkwrap file has already been provided', async () => { diff --git a/lib/manager/npm/extract/type.spec.ts b/lib/manager/npm/extract/type.spec.ts index 4d7901c307252e0e4c6527ce3d1ae6cf9c6b68d9..c265e5a02d340661a51b55f74b6d3198d673000a 100644 --- a/lib/manager/npm/extract/type.spec.ts +++ b/lib/manager/npm/extract/type.spec.ts @@ -4,15 +4,15 @@ describe('manager/npm/extract/type', () => { describe('.mightBeABrowserLibrary()', () => { it('is not a library if private', () => { const isLibrary = mightBeABrowserLibrary({ private: true }); - expect(isLibrary).toBe(false); + expect(isLibrary).toBeFalse(); }); it('is not a library if no main', () => { const isLibrary = mightBeABrowserLibrary({}); - expect(isLibrary).toBe(false); + expect(isLibrary).toBeFalse(); }); it('is a library if has a main', () => { const isLibrary = mightBeABrowserLibrary({ main: 'index.js ' }); - expect(isLibrary).toBe(true); + expect(isLibrary).toBeTrue(); }); }); }); diff --git a/lib/manager/npm/extract/yarn.spec.ts b/lib/manager/npm/extract/yarn.spec.ts index 76ddd005c3f027b164bd6a51d6345e49feca38ec..94ae015d7baf553b5834d2598a3039f53560f1f3 100644 --- a/lib/manager/npm/extract/yarn.spec.ts +++ b/lib/manager/npm/extract/yarn.spec.ts @@ -8,7 +8,7 @@ describe('manager/npm/extract/yarn', () => { it('returns empty if exception parsing', async () => { fs.readLocalFile.mockResolvedValueOnce('abcd'); const res = await getYarnLock('package.json'); - expect(res.isYarn1).toBe(true); + expect(res.isYarn1).toBeTrue(); expect(Object.keys(res.lockedVersions)).toHaveLength(0); }); @@ -16,7 +16,7 @@ describe('manager/npm/extract/yarn', () => { const plocktest1Lock = loadFixture('plocktest1/yarn.lock', '..'); fs.readLocalFile.mockResolvedValueOnce(plocktest1Lock); const res = await getYarnLock('package.json'); - expect(res.isYarn1).toBe(true); + expect(res.isYarn1).toBeTrue(); expect(res.lockfileVersion).toBeUndefined(); expect(res.lockedVersions).toMatchSnapshot(); expect(Object.keys(res.lockedVersions)).toHaveLength(7); @@ -26,7 +26,7 @@ describe('manager/npm/extract/yarn', () => { const plocktest1Lock = loadFixture('yarn2/yarn.lock', '..'); fs.readLocalFile.mockResolvedValueOnce(plocktest1Lock); const res = await getYarnLock('package.json'); - expect(res.isYarn1).toBe(false); + expect(res.isYarn1).toBeFalse(); expect(res.lockfileVersion).toBe(NaN); expect(res.lockedVersions).toMatchSnapshot(); expect(Object.keys(res.lockedVersions)).toHaveLength(8); @@ -36,7 +36,7 @@ describe('manager/npm/extract/yarn', () => { const plocktest1Lock = loadFixture('yarn2.2/yarn.lock', '..'); fs.readLocalFile.mockResolvedValueOnce(plocktest1Lock); const res = await getYarnLock('package.json'); - expect(res.isYarn1).toBe(false); + expect(res.isYarn1).toBeFalse(); expect(res.lockfileVersion).toBe(6); expect(res.lockedVersions).toMatchSnapshot(); expect(Object.keys(res.lockedVersions)).toHaveLength(10); diff --git a/lib/manager/npm/post-update/lerna.spec.ts b/lib/manager/npm/post-update/lerna.spec.ts index 8ce00a043f1923a77683bea1cde4bebe63719fa9..511153de43b04dcb483689fdbacb645cf288f94a 100644 --- a/lib/manager/npm/post-update/lerna.spec.ts +++ b/lib/manager/npm/post-update/lerna.spec.ts @@ -34,7 +34,7 @@ describe('manager/npm/post-update/lerna', () => { }); it('returns if no lernaClient', async () => { const res = await lernaHelper.generateLockFiles({}, 'some-dir', {}, {}); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); }); it('returns if invalid lernaClient', async () => { const res = await lernaHelper.generateLockFiles( @@ -43,7 +43,7 @@ describe('manager/npm/post-update/lerna', () => { {}, {} ); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); }); it('generates package-lock.json files', async () => { const execSnapshots = mockExecAll(exec); @@ -55,7 +55,7 @@ describe('manager/npm/post-update/lerna', () => { {}, skipInstalls ); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); expect(execSnapshots).toMatchSnapshot(); }); it('performs full npm install', async () => { @@ -68,7 +68,7 @@ describe('manager/npm/post-update/lerna', () => { {}, skipInstalls ); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); expect(execSnapshots).toMatchSnapshot(); }); it('generates yarn.lock files', async () => { @@ -80,7 +80,7 @@ describe('manager/npm/post-update/lerna', () => { {} ); expect(execSnapshots).toMatchSnapshot(); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); }); it('defaults to latest if lerna version unspecified', async () => { const execSnapshots = mockExecAll(exec); @@ -90,7 +90,7 @@ describe('manager/npm/post-update/lerna', () => { {}, {} ); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); expect(execSnapshots).toMatchSnapshot(); }); it('allows scripts for trust level high', async () => { @@ -102,7 +102,7 @@ describe('manager/npm/post-update/lerna', () => { { constraints: { npm: '^6.0.0' } }, {} ); - expect(res.error).toBe(false); + expect(res.error).toBeFalse(); expect(execSnapshots).toMatchSnapshot(); }); }); diff --git a/lib/manager/npm/post-update/npm.spec.ts b/lib/manager/npm/post-update/npm.spec.ts index 11a29496206faa8dee593fa9981cb4ae4b533161..59df6449c9dfe3fc97defb4ccbc542416611b524 100644 --- a/lib/manager/npm/post-update/npm.spec.ts +++ b/lib/manager/npm/post-update/npm.spec.ts @@ -158,7 +158,7 @@ describe('manager/npm/post-update/npm', () => { 'package-lock.json' ); expect(fs.readFile).toHaveBeenCalledTimes(1); - expect(res.error).toBe(true); + expect(res.error).toBeTrue(); expect(res.lockFile).not.toBeDefined(); expect(execSnapshots).toMatchSnapshot(); }); diff --git a/lib/manager/npm/post-update/pnpm.spec.ts b/lib/manager/npm/post-update/pnpm.spec.ts index fa9822cc634afc685e7577d826d83bc0d263fd4b..8162aff94c44fc10da8877d99427c4f56addb096 100644 --- a/lib/manager/npm/post-update/pnpm.spec.ts +++ b/lib/manager/npm/post-update/pnpm.spec.ts @@ -38,7 +38,7 @@ describe('manager/npm/post-update/pnpm', () => { }) as never; const res = await pnpmHelper.generateLockFile('some-dir', {}, config); expect(fs.readFile).toHaveBeenCalledTimes(1); - expect(res.error).toBe(true); + expect(res.error).toBeTrue(); expect(res.lockFile).not.toBeDefined(); expect(execSnapshots).toMatchSnapshot(); }); diff --git a/lib/manager/npm/post-update/yarn.spec.ts b/lib/manager/npm/post-update/yarn.spec.ts index b1a54229f28a03996318b2934df805e447754933..8383acc0ba01eb03a5a0dc7e74995c486070d4fc 100644 --- a/lib/manager/npm/post-update/yarn.spec.ts +++ b/lib/manager/npm/post-update/yarn.spec.ts @@ -216,7 +216,7 @@ describe('manager/npm/post-update/yarn', () => { }); const res = await yarnHelper.generateLockFile('some-dir', {}); expect(fs.readFile).toHaveBeenCalledTimes(2); - expect(res.error).toBe(true); + expect(res.error).toBeTrue(); expect(res.lockFile).not.toBeDefined(); expect(fixSnapshots(execSnapshots)).toMatchSnapshot(); }); diff --git a/lib/manager/poetry/extract.spec.ts b/lib/manager/poetry/extract.spec.ts index cf88773a4c931bc1cd69901abd1558ddd5d0d1a5..2b8981d29b91cea3c032f1ec70878111ecb962bb 100644 --- a/lib/manager/poetry/extract.spec.ts +++ b/lib/manager/poetry/extract.spec.ts @@ -92,7 +92,7 @@ describe('manager/poetry/extract', () => { '[tool.poetry.dependencies]\r\nflask = {git = "https://github.com/pallets/flask.git"}\r\nwerkzeug = ">=0.14"'; const res = (await extractPackageFile(content, filename)).deps; expect(res[0].depName).toBe('flask'); - expect(res[0].currentValue).toBe(''); + expect(res[0].currentValue).toBeEmptyString(); expect(res[0].skipReason).toBe('git-dependency'); expect(res).toHaveLength(2); }); diff --git a/lib/platform/azure/index.spec.ts b/lib/platform/azure/index.spec.ts index e343b700ad182e6171b8b730c9e4ef1828c32e1d..592b6d769245e97d3a9d7475d6c0bea7dcc975d5 100644 --- a/lib/platform/azure/index.spec.ts +++ b/lib/platform/azure/index.spec.ts @@ -172,7 +172,7 @@ describe('platform/azure/index', () => { describe('getRepoForceRebase', () => { it('should return false', async () => { - expect(await azure.getRepoForceRebase()).toBe(false); + expect(await azure.getRepoForceRebase()).toBeFalse(); }); }); @@ -1089,7 +1089,7 @@ describe('platform/azure/index', () => { '1', pullRequestIdMock ); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('should return false if the PR does not update successfully', async () => { await initRepo({ repository: 'some/repo' }); @@ -1116,7 +1116,7 @@ describe('platform/azure/index', () => { branchName: branchNameMock, id: pullRequestIdMock, }); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('should cache the mergeMethod for subsequent merges', async () => { @@ -1176,7 +1176,7 @@ describe('platform/azure/index', () => { }); expect(getPullRequestByIdMock).toHaveBeenCalledTimes(2); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('should log a warning after retrying if the PR has still not yet been set to completed', async () => { @@ -1212,7 +1212,7 @@ describe('platform/azure/index', () => { expectedNumRetries + 1 ); expect(logger.warn).toHaveBeenCalled(); - expect(res).toBe(true); + expect(res).toBeTrue(); }); }); diff --git a/lib/platform/bitbucket-server/index.spec.ts b/lib/platform/bitbucket-server/index.spec.ts index 07d873bf29e97ce5d16dfc0b2061901ae46db90d..8b0d036d23998bac0c543b24d6303145cf1fc94c 100644 --- a/lib/platform/bitbucket-server/index.spec.ts +++ b/lib/platform/bitbucket-server/index.spec.ts @@ -410,7 +410,7 @@ describe('platform/bitbucket-server/index', () => { mergeConfig: null, }); const actual = await bitbucket.getRepoForceRebase(); - expect(actual).toBe(false); + expect(actual).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -427,7 +427,7 @@ describe('platform/bitbucket-server/index', () => { }, }); const actual = await bitbucket.getRepoForceRebase(); - expect(actual).toBe(false); + expect(actual).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -448,7 +448,7 @@ describe('platform/bitbucket-server/index', () => { }, }); const actual = await bitbucket.getRepoForceRebase(); - expect(actual).toBe(true); + expect(actual).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); } ); @@ -470,7 +470,7 @@ describe('platform/bitbucket-server/index', () => { }, }); const actual = await bitbucket.getRepoForceRebase(); - expect(actual).toBe(false); + expect(actual).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); } ); @@ -677,7 +677,7 @@ describe('platform/bitbucket-server/index', () => { topic: 'topic', content: 'content', }); - expect(res).toBe(false); + expect(res).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -721,7 +721,7 @@ describe('platform/bitbucket-server/index', () => { topic: 'topic', content: 'content', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -765,7 +765,7 @@ describe('platform/bitbucket-server/index', () => { topic: null, content: 'content', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -815,7 +815,7 @@ describe('platform/bitbucket-server/index', () => { topic: 'some-subject', content: 'some\ncontent', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -859,7 +859,7 @@ describe('platform/bitbucket-server/index', () => { topic: null, content: 'some\ncontent', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -899,7 +899,7 @@ describe('platform/bitbucket-server/index', () => { topic: 'some-subject', content: 'blablabla', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -938,7 +938,7 @@ describe('platform/bitbucket-server/index', () => { topic: null, content: '!merge', }); - expect(res).toBe(true); + expect(res).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); @@ -1597,7 +1597,7 @@ describe('platform/bitbucket-server/index', () => { branchName: 'branch', id: 5, }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -1699,7 +1699,7 @@ describe('platform/bitbucket-server/index', () => { branchName: 'branch', id: 5, }) - ).resolves.toBe(false); + ).resolves.toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); diff --git a/lib/platform/bitbucket/comments.spec.ts b/lib/platform/bitbucket/comments.spec.ts index 8b2b5f60c38465e25b8d722afb42a9d9118169c7..db2ad35ed53cb68e8df4c01a96cf9b207b15d1f9 100644 --- a/lib/platform/bitbucket/comments.spec.ts +++ b/lib/platform/bitbucket/comments.spec.ts @@ -27,7 +27,7 @@ describe('platform/bitbucket/comments', () => { topic: 'topic', content: 'content', }) - ).toBe(false); + ).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -47,7 +47,7 @@ describe('platform/bitbucket/comments', () => { topic: 'topic', content: 'content', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -72,7 +72,7 @@ describe('platform/bitbucket/comments', () => { topic: 'some-subject', content: 'some\ncontent', }); - expect(res).toBe(true); + expect(res).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -96,7 +96,7 @@ describe('platform/bitbucket/comments', () => { topic: null, content: 'blablabla', }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); diff --git a/lib/platform/bitbucket/index.spec.ts b/lib/platform/bitbucket/index.spec.ts index 27b42e88955f9a018b7bead79bb75e3cec1dd1a8..2a59c36dedfc1dc84851990a3d70cabf81ba233c 100644 --- a/lib/platform/bitbucket/index.spec.ts +++ b/lib/platform/bitbucket/index.spec.ts @@ -151,7 +151,7 @@ describe('platform/bitbucket/index', () => { describe('getRepoForceRebase()', () => { it('always return false, since bitbucket does not support force rebase', async () => { const actual = await bitbucket.getRepoForceRebase(); - expect(actual).toBe(false); + expect(actual).toBeFalse(); }); }); @@ -906,7 +906,7 @@ describe('platform/bitbucket/index', () => { id: 5, strategy: 'rebase', }); - expect(httpMock.getTrace()).toEqual([]); + expect(httpMock.getTrace()).toBeEmptyArray(); }); it('posts Merge with fast-forward', async () => { diff --git a/lib/platform/bitbucket/utils.spec.ts b/lib/platform/bitbucket/utils.spec.ts index a110fcc34ec759b1e2794a458a187715f9540ddc..e33ead8098c9970a283faf87828baf199446738c 100644 --- a/lib/platform/bitbucket/utils.spec.ts +++ b/lib/platform/bitbucket/utils.spec.ts @@ -38,6 +38,6 @@ describe('platform/bitbucket/utils', () => { it('isConflicted', () => { expect( utils.isConflicted([{ chunks: [{ changes: [{ content: '+=======' }] }] }]) - ).toBe(true); + ).toBeTrue(); }); }); diff --git a/lib/platform/github/index.spec.ts b/lib/platform/github/index.spec.ts index 880532cf53ee4d769a0597632e412fcb93536605..7357d96f11872babec5485debe6079647f9af45f 100644 --- a/lib/platform/github/index.spec.ts +++ b/lib/platform/github/index.spec.ts @@ -427,7 +427,7 @@ describe('platform/github/index', () => { }, }); const res = await github.getRepoForceRebase(); - expect(res).toBe(true); + expect(res).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('should handle 404', async () => { @@ -436,7 +436,7 @@ describe('platform/github/index', () => { .get('/repos/undefined/branches/undefined/protection') .reply(404); const res = await github.getRepoForceRebase(); - expect(res).toBe(false); + expect(res).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('should handle 403', async () => { @@ -445,7 +445,7 @@ describe('platform/github/index', () => { .get('/repos/undefined/branches/undefined/protection') .reply(403); const res = await github.getRepoForceRebase(); - expect(res).toBe(false); + expect(res).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('should throw 401', async () => { @@ -2237,7 +2237,7 @@ describe('platform/github/index', () => { branchName: '', id: pr.number, }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('should handle merge error', async () => { @@ -2258,7 +2258,7 @@ describe('platform/github/index', () => { branchName: '', id: pr.number, }) - ).toBe(false); + ).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); @@ -2311,7 +2311,7 @@ describe('platform/github/index', () => { branchName: '', id: pr.number, }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('should try squash after rebase', async () => { @@ -2355,7 +2355,7 @@ describe('platform/github/index', () => { branchName: '', id: pr.number, }) - ).toBe(true); + ).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('should give up', async () => { @@ -2382,7 +2382,7 @@ describe('platform/github/index', () => { branchName: '', id: pr.number, }) - ).toBe(false); + ).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); diff --git a/lib/platform/gitlab/index.spec.ts b/lib/platform/gitlab/index.spec.ts index ab77b04d6f296f5f728b553045a621f8c053f897..0c553faf91dc280a80567d8a34a26768f3a5cc40 100644 --- a/lib/platform/gitlab/index.spec.ts +++ b/lib/platform/gitlab/index.spec.ts @@ -377,7 +377,7 @@ describe('platform/gitlab/index', () => { merge_method: 'merge', } ); - expect(await gitlab.getRepoForceRebase()).toBe(false); + expect(await gitlab.getRepoForceRebase()).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -392,7 +392,7 @@ describe('platform/gitlab/index', () => { merge_method: 'ff', } ); - expect(await gitlab.getRepoForceRebase()).toBe(true); + expect(await gitlab.getRepoForceRebase()).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); @@ -1633,7 +1633,7 @@ describe('platform/gitlab/index', () => { }); const pr = await gitlab.getPr(12345); expect(pr).toMatchSnapshot(); - expect(pr.hasAssignees).toBe(false); + expect(pr.hasAssignees).toBeFalse(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('removes draft prefix from returned title', async () => { @@ -1707,7 +1707,7 @@ describe('platform/gitlab/index', () => { .reply(200, [{ status: 'success' }]); const pr = await gitlab.getPr(12345); expect(pr).toMatchSnapshot(); - expect(pr.hasAssignees).toBe(true); + expect(pr.hasAssignees).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); it('returns the PR with nonexisting branch', async () => { @@ -1734,7 +1734,7 @@ describe('platform/gitlab/index', () => { }); const pr = await gitlab.getPr(12345); expect(pr).toMatchSnapshot(); - expect(pr.hasAssignees).toBe(true); + expect(pr.hasAssignees).toBeTrue(); expect(httpMock.getTrace()).toMatchSnapshot(); }); }); diff --git a/lib/platform/index.spec.ts b/lib/platform/index.spec.ts index 082622207698756be41fd2d7058d8445c84cb16a..743153328408f37fe3bc847ef5de8d058a2281e8 100644 --- a/lib/platform/index.spec.ts +++ b/lib/platform/index.spec.ts @@ -31,7 +31,7 @@ describe('platform/index', () => { for (const name of platforms.keys()) { const value = platforms.get(name); - expect(validate(value, name)).toBe(true); + expect(validate(value, name)).toBeTrue(); } }); diff --git a/lib/util/fs/index.spec.ts b/lib/util/fs/index.spec.ts index 2add18ff78231ba337417ef9b3f646090bcd15de..1a7732410c5dfd13c0cb75b4207f1cd889dc793f 100644 --- a/lib/util/fs/index.spec.ts +++ b/lib/util/fs/index.spec.ts @@ -40,10 +40,10 @@ describe('util/fs/index', () => { describe('localPathExists', () => { it('returns true for file', async () => { - expect(await localPathExists(__filename)).toBe(true); + expect(await localPathExists(__filename)).toBeTrue(); }); it('returns true for directory', async () => { - expect(await localPathExists(getSubDirectory(__filename))).toBe(true); + expect(await localPathExists(getSubDirectory(__filename))).toBeTrue(); }); it('returns false', async () => { expect(await localPathExists(__filename.replace('.ts', '.txt'))).toBe( diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 90424d68fc08c30a98c06205bf76d467b19e83d4..b2b27b4e31f8f7447c16328bb1a4dfa89c1b4415 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -124,10 +124,10 @@ describe('util/git/index', () => { }); describe('branchExists(branchName)', () => { it('should return true if found', () => { - expect(git.branchExists('renovate/future_branch')).toBe(true); + expect(git.branchExists('renovate/future_branch')).toBeTrue(); }); it('should return false if not found', () => { - expect(git.branchExists('not_found')).toBe(false); + expect(git.branchExists('not_found')).toBeFalse(); }); }); describe('getBranchList()', () => { @@ -140,32 +140,32 @@ describe('util/git/index', () => { }); describe('isBranchStale()', () => { it('should return false if same SHA as master', async () => { - expect(await git.isBranchStale('renovate/future_branch')).toBe(false); + expect(await git.isBranchStale('renovate/future_branch')).toBeFalse(); }); it('should return true if SHA different from master', async () => { - expect(await git.isBranchStale('renovate/past_branch')).toBe(true); + expect(await git.isBranchStale('renovate/past_branch')).toBeTrue(); }); it('should return result even if non-default and not under branchPrefix', async () => { - expect(await git.isBranchStale('develop')).toBe(true); - expect(await git.isBranchStale('develop')).toBe(true); // cache + expect(await git.isBranchStale('develop')).toBeTrue(); + expect(await git.isBranchStale('develop')).toBeTrue(); // cache }); }); describe('isBranchModified()', () => { it('should return false when branch is not found', async () => { - expect(await git.isBranchModified('renovate/not_found')).toBe(false); + expect(await git.isBranchModified('renovate/not_found')).toBeFalse(); }); it('should return false when author matches', async () => { - expect(await git.isBranchModified('renovate/future_branch')).toBe(false); - expect(await git.isBranchModified('renovate/future_branch')).toBe(false); + expect(await git.isBranchModified('renovate/future_branch')).toBeFalse(); + expect(await git.isBranchModified('renovate/future_branch')).toBeFalse(); }); it('should return false when author is ignored', async () => { git.setUserRepoConfig({ gitIgnoredAuthors: ['custom@example.com'], }); - expect(await git.isBranchModified('renovate/custom_author')).toBe(false); + expect(await git.isBranchModified('renovate/custom_author')).toBeFalse(); }); it('should return true when custom author is unknown', async () => { - expect(await git.isBranchModified('renovate/custom_author')).toBe(true); + expect(await git.isBranchModified('renovate/custom_author')).toBeTrue(); }); }); @@ -513,7 +513,7 @@ describe('util/git/index', () => { }); git.setUserRepoConfig({ branchPrefix: 'renovate/' }); - expect(git.branchExists('renovate/test')).toBe(true); + expect(git.branchExists('renovate/test')).toBeTrue(); await git.initRepo({ url: base.path, @@ -523,7 +523,7 @@ describe('util/git/index', () => { await repo.commit('past message3', ['--amend']); git.setUserRepoConfig({ branchPrefix: 'renovate/' }); - expect(git.branchExists('renovate/test')).toBe(true); + expect(git.branchExists('renovate/test')).toBeTrue(); }); it('should fail clone ssh submodule', async () => { diff --git a/lib/util/html.spec.ts b/lib/util/html.spec.ts index a78a70ae965554c23669f980338553db1e93afb7..6f3564f723ffd41fda5976bed9db2ca6ec738e32 100644 --- a/lib/util/html.spec.ts +++ b/lib/util/html.spec.ts @@ -7,7 +7,7 @@ describe('util/html', () => { const div = body.childNodes[0] as HTMLElement; expect(div.tagName).toBe('DIV'); expect(div.textContent).toBe('Hello, world!'); - expect(div instanceof HTMLElement).toBe(true); + expect(div instanceof HTMLElement).toBeTrue(); }); it('returns empty', () => { const body = parse(''); diff --git a/lib/util/http/index.spec.ts b/lib/util/http/index.spec.ts index c42837687d107251345e86500f286d9e0d058f64..5a9c9f47cc9f23af41edf2092ce6ada25267a44e 100644 --- a/lib/util/http/index.spec.ts +++ b/lib/util/http/index.spec.ts @@ -21,14 +21,14 @@ describe('util/http/index', () => { httpMock.scope(baseUrl).get('/test').reply(200); // FIXME: explicit assert condition expect(await http.get('http://renovate.com/test')).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('returns 429 error', async () => { httpMock.scope(baseUrl).get('/test').reply(429); await expect(http.get('http://renovate.com/test')).rejects.toThrow( 'Response code 429 (Too Many Requests)' ); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('converts 404 error to ExternalHostError', async () => { httpMock.scope(baseUrl).get('/test').reply(404); @@ -36,7 +36,7 @@ describe('util/http/index', () => { await expect(http.get('http://renovate.com/test')).rejects.toThrow( EXTERNAL_HOST_ERROR ); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('disables hosts', async () => { hostRules.add({ matchHost: 'renovate.com', enabled: false }); @@ -50,7 +50,7 @@ describe('util/http/index', () => { await expect(http.get('http://renovate.com/test')).rejects.toThrow( 'Response code 404 (Not Found)' ); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('getJson', async () => { httpMock.scope(baseUrl).get('/').reply(200, '{ "test": true }'); @@ -63,7 +63,7 @@ describe('util/http/index', () => { expect( await http.postJson('http://renovate.com', { body: {}, baseUrl }) ).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('putJson', async () => { httpMock.scope(baseUrl).put('/').reply(200, {}); @@ -71,7 +71,7 @@ describe('util/http/index', () => { expect( await http.putJson('http://renovate.com', { body: {}, baseUrl }) ).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('patchJson', async () => { httpMock.scope(baseUrl).patch('/').reply(200, {}); @@ -79,7 +79,7 @@ describe('util/http/index', () => { expect( await http.patchJson('http://renovate.com', { body: {}, baseUrl }) ).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('deleteJson', async () => { httpMock.scope(baseUrl).delete('/').reply(200, {}); @@ -87,7 +87,7 @@ describe('util/http/index', () => { expect( await http.deleteJson('http://renovate.com', { body: {}, baseUrl }) ).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('headJson', async () => { httpMock.scope(baseUrl).head('/').reply(200, {}); @@ -95,7 +95,7 @@ describe('util/http/index', () => { expect( await http.headJson('http://renovate.com', { baseUrl }) ).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('stream', async () => { @@ -120,7 +120,7 @@ describe('util/http/index', () => { await done; expect(data).toBe('{}'); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); }); it('retries', async () => { @@ -135,7 +135,7 @@ describe('util/http/index', () => { .reply(200, undefined, { 'x-some-header': 'abc' }); // FIXME: explicit assert condition expect(await http.head('http://renovate.com')).toMatchSnapshot(); - expect(httpMock.allUsed()).toBe(true); + expect(httpMock.allUsed()).toBeTrue(); } finally { process.env.NODE_ENV = NODE_ENV; } diff --git a/lib/util/index.spec.ts b/lib/util/index.spec.ts index 2f2e7e85840841be34b8d974fae0fa05b5bd19c6..5f541ec3d5fb36db00d6a0574d167dc5fcf3e81d 100644 --- a/lib/util/index.spec.ts +++ b/lib/util/index.spec.ts @@ -10,19 +10,19 @@ describe('util/index', () => { expect(sampleSize(array, undefined)).toEqual(array); }); it('returns full array for null number', () => { - expect(sampleSize(array, null)).toEqual([]); + expect(sampleSize(array, null)).toBeEmptyArray(); }); it('returns full array for 0 number', () => { - expect(sampleSize(array, 0)).toEqual([]); + expect(sampleSize(array, 0)).toBeEmptyArray(); }); it('returns empty array for null array', () => { - expect(sampleSize(null, 1)).toEqual([]); + expect(sampleSize(null, 1)).toBeEmptyArray(); }); it('returns empty array for undefined array', () => { - expect(sampleSize(undefined, 1)).toEqual([]); + expect(sampleSize(undefined, 1)).toBeEmptyArray(); }); it('returns empty array for empty array', () => { - expect(sampleSize([], 1)).toEqual([]); + expect(sampleSize([], 1)).toBeEmptyArray(); }); }); }); diff --git a/lib/util/merge-confidence/index.spec.ts b/lib/util/merge-confidence/index.spec.ts index 35374a87eb8ef7950f4d4d041e8a8cd590d4e959..4f619bb22035432b3077b6554d25e820853f1453 100644 --- a/lib/util/merge-confidence/index.spec.ts +++ b/lib/util/merge-confidence/index.spec.ts @@ -10,33 +10,33 @@ import { describe('util/merge-confidence/index', () => { describe('isActiveConfidenceLevel()', () => { it('returns false if null', () => { - expect(isActiveConfidenceLevel(null)).toBe(false); + expect(isActiveConfidenceLevel(null)).toBeFalse(); }); it('returns false if low', () => { - expect(isActiveConfidenceLevel('low')).toBe(false); + expect(isActiveConfidenceLevel('low')).toBeFalse(); }); it('returns false if nonsense', () => { - expect(isActiveConfidenceLevel('nonsense')).toBe(false); + expect(isActiveConfidenceLevel('nonsense')).toBeFalse(); }); it('returns true if valid value (high)', () => { - expect(isActiveConfidenceLevel('high')).toBe(true); + expect(isActiveConfidenceLevel('high')).toBeTrue(); }); }); describe('satisfiesConfidenceLevel()', () => { it('returns false if less', () => { - expect(satisfiesConfidenceLevel('low', 'high')).toBe(false); + expect(satisfiesConfidenceLevel('low', 'high')).toBeFalse(); }); it('returns true if equal', () => { - expect(satisfiesConfidenceLevel('high', 'high')).toBe(true); + expect(satisfiesConfidenceLevel('high', 'high')).toBeTrue(); }); it('returns true if more', () => { - expect(satisfiesConfidenceLevel('very high', 'high')).toBe(true); + expect(satisfiesConfidenceLevel('very high', 'high')).toBeTrue(); }); }); diff --git a/lib/util/package-rules.spec.ts b/lib/util/package-rules.spec.ts index baf0d0dce31fc8e0d2e8e3b4758d0abdd2f010c7..79647e1c675ab2dc69cf738bdafd32d4827c9e64 100644 --- a/lib/util/package-rules.spec.ts +++ b/lib/util/package-rules.spec.ts @@ -158,9 +158,9 @@ describe('util/package-rules', () => { ], }; const res = applyPackageRules(dep); - expect(res.enabled).toBe(true); + expect(res.enabled).toBeTrue(); const res2 = applyPackageRules({ ...dep, depName: 'anything' }); - expect(res2.enabled).toBe(false); + expect(res2.enabled).toBeFalse(); }); it('matches anything if missing inclusive rules', () => { const config: TestConfig = { diff --git a/lib/util/url.spec.ts b/lib/util/url.spec.ts index c4cabd2281111407fa2e0cefc841f68c41b92d27..a971b62713b703759bdf7fd824515614790c963c 100644 --- a/lib/util/url.spec.ts +++ b/lib/util/url.spec.ts @@ -54,12 +54,12 @@ describe('util/url', () => { }); it('validates URLs', () => { - expect(validateUrl()).toBe(false); - expect(validateUrl(null)).toBe(false); - expect(validateUrl('foo')).toBe(false); - expect(validateUrl('ssh://github.com')).toBe(false); - expect(validateUrl('http://github.com')).toBe(true); - expect(validateUrl('https://github.com')).toBe(true); + expect(validateUrl()).toBeFalse(); + expect(validateUrl(null)).toBeFalse(); + expect(validateUrl('foo')).toBeFalse(); + expect(validateUrl('ssh://github.com')).toBeFalse(); + expect(validateUrl('http://github.com')).toBeTrue(); + expect(validateUrl('https://github.com')).toBeTrue(); }); it('parses URL', () => { diff --git a/lib/versioning/index.spec.ts b/lib/versioning/index.spec.ts index 92097568612a070718263e6add0d148cb808df8f..87f63c9526bb52cba5c97ddb88cbfc85ab9adef6 100644 --- a/lib/versioning/index.spec.ts +++ b/lib/versioning/index.spec.ts @@ -37,7 +37,7 @@ describe('versioning/index', () => { for (const name of vers.keys()) { const ver = vers.get(name); - expect(validate(ver, name)).toBe(true); + expect(validate(ver, name)).toBeTrue(); } }); diff --git a/lib/versioning/node/index.spec.ts b/lib/versioning/node/index.spec.ts index 26c8929f2553e9b71170b5d743a3a4c8fcc53e22..f3fb3383717118590323a4140dd3725ff253a096 100644 --- a/lib/versioning/node/index.spec.ts +++ b/lib/versioning/node/index.spec.ts @@ -54,6 +54,6 @@ describe('versioning/node/index', () => { }); it('isValid', () => { - expect(isValid === nodever.isValid).toBe(true); + expect(isValid === nodever.isValid).toBeTrue(); }); }); diff --git a/lib/workers/branch/reuse.spec.ts b/lib/workers/branch/reuse.spec.ts index b860bbf8f90c5e975626379f5fb63535d48d0e6b..edcbd3ce94de8dbaeb68e083238866aa9b387252 100644 --- a/lib/workers/branch/reuse.spec.ts +++ b/lib/workers/branch/reuse.spec.ts @@ -26,13 +26,13 @@ describe('workers/branch/reuse', () => { it('returns false if branch does not exist', async () => { git.branchExists.mockReturnValueOnce(false); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns true if no PR', async () => { git.branchExists.mockReturnValueOnce(true); platform.getBranchPr.mockReturnValue(null); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); it('returns true if does not need rebasing', async () => { git.branchExists.mockReturnValueOnce(true); @@ -41,7 +41,7 @@ describe('workers/branch/reuse', () => { isConflicted: false, }); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); it('returns false if does not need rebasing but has upgrades that need lockfile maintenance along with upgrades that do not', async () => { @@ -96,7 +96,7 @@ describe('workers/branch/reuse', () => { }); git.isBranchModified.mockResolvedValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); it('returns true if unmergeable and can rebase, but rebaseWhen is never', async () => { config.rebaseWhen = 'never'; @@ -107,7 +107,7 @@ describe('workers/branch/reuse', () => { }); git.isBranchModified.mockResolvedValueOnce(false); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); it('returns false if PR title rebase!', async () => { git.branchExists.mockReturnValueOnce(true); @@ -116,7 +116,7 @@ describe('workers/branch/reuse', () => { title: 'rebase!Update foo to v4', }); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns false if PR body check rebase', async () => { git.branchExists.mockReturnValueOnce(true); @@ -126,7 +126,7 @@ describe('workers/branch/reuse', () => { body: 'blah\nblah\n- [x] <!-- rebase-check -->foo\n', }); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns false if manual rebase by label', async () => { git.branchExists.mockReturnValueOnce(true); @@ -135,7 +135,7 @@ describe('workers/branch/reuse', () => { labels: ['rebase'], }); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns false if unmergeable and can rebase', async () => { git.branchExists.mockReturnValueOnce(true); @@ -145,14 +145,14 @@ describe('workers/branch/reuse', () => { }); git.isBranchModified.mockResolvedValueOnce(false); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns true if automerge branch and not stale', async () => { config.automerge = true; config.automergeType = 'branch'; git.branchExists.mockReturnValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); it('returns false if automerge branch and stale', async () => { config.rebaseWhen = 'auto'; @@ -161,7 +161,7 @@ describe('workers/branch/reuse', () => { git.branchExists.mockReturnValueOnce(true); git.isBranchStale.mockResolvedValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns true if rebaseWhen=behind-base-branch but cannot rebase', async () => { config.rebaseWhen = 'behind-base-branch'; @@ -173,7 +173,7 @@ describe('workers/branch/reuse', () => { }); git.isBranchModified.mockResolvedValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); it('returns false if automerge pr and stale', async () => { @@ -183,7 +183,7 @@ describe('workers/branch/reuse', () => { git.branchExists.mockReturnValueOnce(true); git.isBranchStale.mockResolvedValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns false if getRepoForceRebase and stale', async () => { @@ -192,7 +192,7 @@ describe('workers/branch/reuse', () => { git.branchExists.mockReturnValueOnce(true); git.isBranchStale.mockResolvedValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(false); + expect(res.reuseExistingBranch).toBeFalse(); }); it('returns true if automerge, rebaseWhen=never and stale', async () => { @@ -200,7 +200,7 @@ describe('workers/branch/reuse', () => { config.automerge = true; git.branchExists.mockReturnValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); expect(git.isBranchStale).not.toHaveBeenCalled(); expect(git.isBranchModified).not.toHaveBeenCalled(); }); @@ -211,7 +211,7 @@ describe('workers/branch/reuse', () => { git.branchExists.mockReturnValueOnce(true); git.isBranchStale.mockResolvedValueOnce(true); const res = await shouldReuseExistingBranch(config); - expect(res.reuseExistingBranch).toBe(true); + expect(res.reuseExistingBranch).toBeTrue(); }); }); }); diff --git a/lib/workers/branch/schedule.spec.ts b/lib/workers/branch/schedule.spec.ts index c6f17ab03f8ee204d9d21bd7378eb75af22a276e..bfe2a4f9c77e325c68601df837c690fe364524fb 100644 --- a/lib/workers/branch/schedule.spec.ts +++ b/lib/workers/branch/schedule.spec.ts @@ -5,10 +5,10 @@ import * as schedule from './schedule'; describe('workers/branch/schedule', () => { describe('hasValidTimezone(schedule)', () => { it('returns false for invalid timezone', () => { - expect(schedule.hasValidTimezone('Asia')[0]).toBe(false); + expect(schedule.hasValidTimezone('Asia')[0]).toBeFalse(); }); it('returns true for valid timezone', () => { - expect(schedule.hasValidTimezone('Asia/Singapore')[0]).toBe(true); + expect(schedule.hasValidTimezone('Asia/Singapore')[0]).toBeTrue(); }); }); describe('hasValidSchedule(schedule)', () => { @@ -16,24 +16,24 @@ describe('workers/branch/schedule', () => { jest.resetAllMocks(); }); it('returns true for null', () => { - expect(schedule.hasValidSchedule(null)[0]).toBe(true); + expect(schedule.hasValidSchedule(null)[0]).toBeTrue(); }); it('returns true for at any time', () => { - expect(schedule.hasValidSchedule('at any time')[0]).toBe(true); + expect(schedule.hasValidSchedule('at any time')[0]).toBeTrue(); }); it('returns false for invalid schedule', () => { - expect(schedule.hasValidSchedule(['foo'])[0]).toBe(false); + expect(schedule.hasValidSchedule(['foo'])[0]).toBeFalse(); }); it('returns false if any schedule fails to parse', () => { - expect(schedule.hasValidSchedule(['after 5:00pm', 'foo'])[0]).toBe(false); + expect(schedule.hasValidSchedule(['after 5:00pm', 'foo'])[0]).toBeFalse(); }); it('returns false if using minutes', () => { expect( schedule.hasValidSchedule(['every 15 mins every weekday'])[0] - ).toBe(false); + ).toBeFalse(); }); it('returns false if schedules have no days or time range', () => { - expect(schedule.hasValidSchedule(['at 5:00pm'])[0]).toBe(false); + expect(schedule.hasValidSchedule(['at 5:00pm'])[0]).toBeFalse(); }); it('returns false if any schedule has no days or time range', () => { expect(schedule.hasValidSchedule(['at 5:00pm', 'on saturday'])[0]).toBe( @@ -41,7 +41,7 @@ describe('workers/branch/schedule', () => { ); }); it('returns false for every xday', () => { - expect(schedule.hasValidSchedule(['every friday'])[0]).toBe(false); + expect(schedule.hasValidSchedule(['every friday'])[0]).toBeFalse(); }); it('returns true if schedule has days of week', () => { expect(schedule.hasValidSchedule(['on friday and saturday'])[0]).toBe( @@ -51,43 +51,43 @@ describe('workers/branch/schedule', () => { it('returns true for multi day schedules', () => { expect( schedule.hasValidSchedule(['after 5:00pm on wednesday and thursday'])[0] - ).toBe(true); + ).toBeTrue(); }); it('returns true if schedule has a start time', () => { - expect(schedule.hasValidSchedule(['after 8:00pm'])[0]).toBe(true); + expect(schedule.hasValidSchedule(['after 8:00pm'])[0]).toBeTrue(); }); it('returns true for first day of the month', () => { expect( schedule.hasValidSchedule(['on the first day of the month'])[0] - ).toBe(true); + ).toBeTrue(); }); it('returns true for schedules longer than 1 month', () => { - expect(schedule.hasValidSchedule(['every 3 months'])[0]).toBe(true); - expect(schedule.hasValidSchedule(['every 6 months'])[0]).toBe(true); - expect(schedule.hasValidSchedule(['every 12 months'])[0]).toBe(true); + expect(schedule.hasValidSchedule(['every 3 months'])[0]).toBeTrue(); + expect(schedule.hasValidSchedule(['every 6 months'])[0]).toBeTrue(); + expect(schedule.hasValidSchedule(['every 12 months'])[0]).toBeTrue(); }); it('returns true if schedule has an end time', () => { - expect(schedule.hasValidSchedule(['before 6:00am'])[0]).toBe(true); + expect(schedule.hasValidSchedule(['before 6:00am'])[0]).toBeTrue(); }); it('returns true if schedule has a start and end time', () => { expect( schedule.hasValidSchedule(['after 11:00pm and before 6:00am'])[0] - ).toBe(true); + ).toBeTrue(); }); it('returns true if schedule has days and a start and end time', () => { expect( schedule.hasValidSchedule([ 'after 11:00pm and before 6:00am every weekday', ])[0] - ).toBe(true); + ).toBeTrue(); }); it('massages schedules', () => { expect( schedule.hasValidSchedule([ 'before 3am on the first day of the month', ])[0] - ).toBe(true); - expect(schedule.hasValidSchedule(['every month'])[0]).toBe(true); + ).toBeTrue(); + expect(schedule.hasValidSchedule(['every month'])[0]).toBeTrue(); }); it('supports hours shorthand', () => { const [res] = schedule.hasValidSchedule([ @@ -100,7 +100,7 @@ describe('workers/branch/schedule', () => { 'before 5am every weekday', 'every weekend', ]); - expect(res).toBe(true); + expect(res).toBeTrue(); }); }); describe('isScheduledNow(config)', () => { @@ -112,48 +112,48 @@ describe('workers/branch/schedule', () => { }); it('returns true if no schedule', () => { const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('returns true if at any time', () => { config.schedule = 'at any time' as never; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('returns true if at any time array', () => { config.schedule = ['at any time']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('returns true if invalid schedule', () => { config.schedule = ['every 15 minutes']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('returns true if invalid timezone', () => { config.schedule = ['after 4:00pm']; config.timezone = 'Asia'; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('supports before hours true', () => { config.schedule = ['before 4:00pm']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('supports before hours false', () => { config.schedule = ['before 4:00am']; const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('massages string', () => { config.schedule = 'before 4:00am' as never; const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('supports outside hours', () => { config.schedule = ['after 4:00pm']; const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); describe('supports timezone', () => { const cases: [string, string, string, boolean][] = [ @@ -183,96 +183,96 @@ describe('workers/branch/schedule', () => { it('supports multiple schedules', () => { config.schedule = ['after 4:00pm', 'before 11:00am']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('supports day match', () => { config.schedule = ['on friday and saturday']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('supports day mismatch', () => { config.schedule = ['on monday and tuesday']; const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('supports every weekday', () => { config.schedule = ['every weekday']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('supports every weekend', () => { config.schedule = ['every weekend']; const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('supports every weekday with time', () => { config.schedule = ['before 11:00am every weekday']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('supports o every weekday', () => { config.schedule = ['before 11:00am on inevery weekday']; const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('rejects first day of the month', () => { config.schedule = ['before 11am on the first day of the month']; const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('approves first day of the month', () => { config.schedule = ['before 11am on the first day of the month']; mockDate.set('2017-10-01T05:26:06.000'); // Locally Sunday, 1 October 2017 05:26:06 const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('approves valid weeks of year', () => { config.schedule = ['every 2 weeks of the year before 08:00 on Monday']; mockDate.set('2017-01-02T06:00:00.000'); // Locally Monday, 2 January 2017 6am (first Monday of the year) const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('rejects on weeks of year', () => { config.schedule = ['every 2 weeks of the year before 08:00 on Monday']; mockDate.set('2017-01-09T06:00:00.000'); // Locally Monday, 2 January 2017 6am (second Monday of the year) const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('approves on months of year', () => { config.schedule = ['of January']; mockDate.set('2017-01-02T06:00:00.000'); // Locally Monday, 2 January 2017 6am const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('rejects on months of year', () => { config.schedule = ['of January']; mockDate.set('2017-02-02T06:00:00.000'); // Locally Thursday, 2 February 2017 6am const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('approves schedule longer than 1 month', () => { config.schedule = ['every 3 months']; mockDate.set('2017-07-01T06:00:00.000'); // Locally Saturday, 1 July 2017 6am const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('rejects schedule longer than 1 month', () => { config.schedule = ['every 6 months']; mockDate.set('2017-02-01T06:00:00.000'); // Locally Thursday, 2 February 2017 6am const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('approves schedule longer than 1 month with day of month', () => { config.schedule = ['every 3 months on the first day of the month']; mockDate.set('2017-07-01T06:00:00.000'); // Locally Saturday, 1 July 2017 6am const res = schedule.isScheduledNow(config); - expect(res).toBe(true); + expect(res).toBeTrue(); }); it('rejects schedule longer than 1 month with day of month', () => { config.schedule = ['every 3 months on the first day of the month']; mockDate.set('2017-02-01T06:00:00.000'); // Locally Thursday, 2 February 2017 6am const res = schedule.isScheduledNow(config); - expect(res).toBe(false); + expect(res).toBeFalse(); }); it('supports weekday instances', () => { config.schedule = ['on Monday on the first day instance']; diff --git a/lib/workers/global/config/parse/env.spec.ts b/lib/workers/global/config/parse/env.spec.ts index 49ae1318c2d94edcdb1f937fbdc2893fbebae3e4..fdf3b573f78c00aea4d488a293b587656d0535dc 100644 --- a/lib/workers/global/config/parse/env.spec.ts +++ b/lib/workers/global/config/parse/env.spec.ts @@ -10,15 +10,15 @@ describe('workers/global/config/parse/env', () => { }); it('supports boolean true', () => { const envParam: NodeJS.ProcessEnv = { RENOVATE_RECREATE_CLOSED: 'true' }; - expect(env.getConfig(envParam).recreateClosed).toBe(true); + expect(env.getConfig(envParam).recreateClosed).toBeTrue(); }); it('supports boolean false', () => { const envParam: NodeJS.ProcessEnv = { RENOVATE_RECREATE_CLOSED: 'false' }; - expect(env.getConfig(envParam).recreateClosed).toBe(false); + expect(env.getConfig(envParam).recreateClosed).toBeFalse(); }); it('supports boolean nonsense as false', () => { const envParam: NodeJS.ProcessEnv = { RENOVATE_RECREATE_CLOSED: 'foo' }; - expect(env.getConfig(envParam).recreateClosed).toBe(false); + expect(env.getConfig(envParam).recreateClosed).toBeFalse(); }); delete process.env.RENOVATE_RECREATE_CLOSED; it('supports list single', () => { @@ -266,7 +266,7 @@ describe('workers/global/config/parse/env', () => { RENOVATE_TOKEN: 'a', }; const config = env.getConfig(envParam); - expect(config.enabled).toBe(false); + expect(config.enabled).toBeFalse(); expect(config.token).toBe('a'); }); describe('malformed RENOVATE_CONFIG', () => { diff --git a/lib/workers/global/limits.spec.ts b/lib/workers/global/limits.spec.ts index 70513dd4ee0b8d3ff1f0bb06ebd962448e0ac957..db6764e50301c65dcffd7e4b72e8267e93aef5db 100644 --- a/lib/workers/global/limits.spec.ts +++ b/lib/workers/global/limits.spec.ts @@ -18,41 +18,41 @@ describe('workers/global/limits', () => { it('increments limited value', () => { setMaxLimit(Limit.Commits, 3); - expect(isLimitReached(Limit.Commits)).toBe(false); + expect(isLimitReached(Limit.Commits)).toBeFalse(); incLimitedValue(Limit.Commits, 2); - expect(isLimitReached(Limit.Commits)).toBe(false); + expect(isLimitReached(Limit.Commits)).toBeFalse(); incLimitedValue(Limit.Commits); - expect(isLimitReached(Limit.Commits)).toBe(true); + expect(isLimitReached(Limit.Commits)).toBeTrue(); incLimitedValue(Limit.Commits); - expect(isLimitReached(Limit.Commits)).toBe(true); + expect(isLimitReached(Limit.Commits)).toBeTrue(); }); it('defaults to unlimited', () => { - expect(isLimitReached(Limit.Commits)).toBe(false); + expect(isLimitReached(Limit.Commits)).toBeFalse(); }); it('increments undefined', () => { incLimitedValue(Limit.Commits); - expect(isLimitReached(Limit.Commits)).toBe(false); + expect(isLimitReached(Limit.Commits)).toBeFalse(); }); it('resets counter', () => { setMaxLimit(Limit.Commits, 1); incLimitedValue(Limit.Commits); - expect(isLimitReached(Limit.Commits)).toBe(true); + expect(isLimitReached(Limit.Commits)).toBeTrue(); setMaxLimit(Limit.Commits, 1); - expect(isLimitReached(Limit.Commits)).toBe(false); + expect(isLimitReached(Limit.Commits)).toBeFalse(); }); it('resets limit', () => { setMaxLimit(Limit.Commits, 1); incLimitedValue(Limit.Commits); - expect(isLimitReached(Limit.Commits)).toBe(true); + expect(isLimitReached(Limit.Commits)).toBeTrue(); setMaxLimit(Limit.Commits, null); - expect(isLimitReached(Limit.Commits)).toBe(false); + expect(isLimitReached(Limit.Commits)).toBeFalse(); }); it('sets non-positive limit as reached', () => { diff --git a/lib/workers/pr/changelog/release-notes.spec.ts b/lib/workers/pr/changelog/release-notes.spec.ts index 9967a40d7936ac1268081fab4f401716ee083ff2..fbb145bc4c7122da3ab4527bb6914ac27b95b0e4 100644 --- a/lib/workers/pr/changelog/release-notes.spec.ts +++ b/lib/workers/pr/changelog/release-notes.spec.ts @@ -125,7 +125,7 @@ describe('workers/pr/changelog/release-notes', () => { describe('getReleaseList()', () => { it('should return empty array if no apiBaseUrl', async () => { const res = await getReleaseList({} as ChangeLogProject); - expect(res).toEqual([]); + expect(res).toBeEmptyArray(); }); it('should return release list for github repo', async () => { diff --git a/lib/workers/pr/code-owners.spec.ts b/lib/workers/pr/code-owners.spec.ts index 8832dfddbd9f4ddae4f24217cced4e86bd47c453..5c33cb228c0d953b3ea6abac202f38cf8a8e1c2a 100644 --- a/lib/workers/pr/code-owners.spec.ts +++ b/lib/workers/pr/code-owners.spec.ts @@ -45,7 +45,7 @@ describe('workers/pr/code-owners', () => { fs.readLocalFile.mockResolvedValueOnce(null); git.getBranchFiles.mockResolvedValueOnce(['package.json']); const codeOwners = await codeOwnersForPr(pr); - expect(codeOwners).toEqual([]); + expect(codeOwners).toBeEmptyArray(); }); it('returns empty array when no code owners match', async () => { fs.readLocalFile.mockResolvedValueOnce( @@ -60,7 +60,7 @@ describe('workers/pr/code-owners', () => { throw new Error(); }); const codeOwners = await codeOwnersForPr(pr); - expect(codeOwners).toEqual([]); + expect(codeOwners).toBeEmptyArray(); }); const codeOwnerFilePaths = [ 'CODEOWNERS', diff --git a/lib/workers/repository/onboarding/branch/index.spec.ts b/lib/workers/repository/onboarding/branch/index.spec.ts index 035718e18022ffc326f34bc3fdd64d5e6b2e132a..a3c45516a9ae7739c15cf9f7c3fcab8d07631e3d 100644 --- a/lib/workers/repository/onboarding/branch/index.spec.ts +++ b/lib/workers/repository/onboarding/branch/index.spec.ts @@ -95,14 +95,14 @@ describe('workers/repository/onboarding/branch/index', () => { config.requireConfig = false; config.onboarding = false; const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('handles skipped onboarding, requireConfig=true, and a config file', async () => { config.requireConfig = true; config.onboarding = false; git.getFileList.mockResolvedValueOnce(['renovate.json']); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('handles skipped onboarding, requireConfig=true, and no config file', async () => { config.requireConfig = true; @@ -115,21 +115,21 @@ describe('workers/repository/onboarding/branch/index', () => { it('detects repo is onboarded via file', async () => { git.getFileList.mockResolvedValueOnce(['renovate.json']); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('handles removed cached file name', async () => { cache.getCache.mockReturnValue({ configFileName: '.renovaterc' }); git.getFileList.mockResolvedValueOnce(['renovate.json']); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('handles cached file name', async () => { cache.getCache.mockReturnValue({ configFileName: '.renovaterc' }); platform.getJsonFile.mockResolvedValueOnce({}); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('handles cached package.json', async () => { @@ -137,20 +137,20 @@ describe('workers/repository/onboarding/branch/index', () => { platform.getJsonFile.mockResolvedValueOnce({ renovate: {} }); fs.readLocalFile.mockResolvedValueOnce('{}'); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('detects repo is onboarded via package.json config', async () => { git.getFileList.mockResolvedValueOnce(['package.json']); fs.readLocalFile.mockResolvedValueOnce('{"renovate":{}}'); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('detects repo is onboarded via PR', async () => { config.requireConfig = false; platform.findPr.mockResolvedValueOnce(mock<Pr>()); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(true); + expect(res.repoIsOnboarded).toBeTrue(); }); it('throws if no required config', async () => { config.requireConfig = true; @@ -170,7 +170,7 @@ describe('workers/repository/onboarding/branch/index', () => { platform.getBranchPr.mockResolvedValueOnce(mock<Pr>()); rebase.rebaseOnboardingBranch.mockResolvedValueOnce('123test'); const res = await checkOnboardingBranch(config); - expect(res.repoIsOnboarded).toBe(false); + expect(res.repoIsOnboarded).toBeFalse(); expect(res.branchList).toEqual(['renovate/configure']); expect(git.checkoutBranch).toHaveBeenCalledTimes(1); expect(git.commitFiles).toHaveBeenCalledTimes(0); diff --git a/lib/workers/repository/onboarding/pr/base-branch.spec.ts b/lib/workers/repository/onboarding/pr/base-branch.spec.ts index bd0993b32d895f4c7476721dbfdf3db700af0e28..220da0b7c7731f0fab19cc70548a24daa4362b2c 100644 --- a/lib/workers/repository/onboarding/pr/base-branch.spec.ts +++ b/lib/workers/repository/onboarding/pr/base-branch.spec.ts @@ -11,7 +11,7 @@ describe('workers/repository/onboarding/pr/base-branch', () => { }); it('returns empty if no baseBranch', () => { const res = getBaseBranchDesc(config); - expect(res).toEqual(''); + expect(res).toBeEmptyString(); }); it('describes baseBranch', () => { config.baseBranches = ['some-branch']; diff --git a/lib/workers/repository/process/lookup/filter-checks.spec.ts b/lib/workers/repository/process/lookup/filter-checks.spec.ts index 7ab19a7a28573c42cd26e4064b0870fb3f6384d9..d9898d6204b79ed538691275bf78b0700686bfca 100644 --- a/lib/workers/repository/process/lookup/filter-checks.spec.ts +++ b/lib/workers/repository/process/lookup/filter-checks.spec.ts @@ -58,7 +58,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(0); expect(res.release.version).toEqual('1.0.4'); }); @@ -73,7 +73,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(0); expect(res.release.version).toEqual('1.0.4'); }); @@ -88,7 +88,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(true); + expect(res.pendingChecks).toBeTrue(); expect(res.pendingReleases).toHaveLength(0); expect(res.release.version).toEqual('1.0.4'); }); @@ -103,7 +103,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(2); expect(res.release.version).toEqual('1.0.2'); }); @@ -118,7 +118,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(2); expect(res.release.version).toEqual('1.0.2'); }); @@ -134,7 +134,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(0); expect(res.release.version).toEqual('1.0.4'); }); @@ -149,7 +149,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(1); expect(res.release.version).toEqual('1.0.3'); }); @@ -169,7 +169,7 @@ describe('workers/repository/process/lookup/filter-checks', () => { sortedReleases ); expect(res).toMatchSnapshot(); - expect(res.pendingChecks).toBe(false); + expect(res.pendingChecks).toBeFalse(); expect(res.pendingReleases).toHaveLength(3); expect(res.release.version).toEqual('1.0.1'); }); diff --git a/lib/workers/repository/process/lookup/index.spec.ts b/lib/workers/repository/process/lookup/index.spec.ts index 52547b1c3252c63685bc01a1d768a0eef7a03b7c..b1db1cba7cc65bb99775370b3d3933a5fc6cd0c6 100644 --- a/lib/workers/repository/process/lookup/index.spec.ts +++ b/lib/workers/repository/process/lookup/index.spec.ts @@ -747,7 +747,7 @@ describe('workers/repository/process/lookup/index', () => { const res = await lookup.lookupUpdates(config); expect(res.updates).toHaveLength(1); expect(res.updates[0].newVersion).toEqual('1.4.6'); - expect(res.updates[0].pendingChecks).toBe(true); + expect(res.updates[0].pendingChecks).toBeTrue(); }); it('should return pendingVersions', async () => { diff --git a/lib/workers/repository/updates/branchify.spec.ts b/lib/workers/repository/updates/branchify.spec.ts index 37ec32683888e4c4d7c01648c5f3fbf3a3516fda..fff5fe18cd7974ab2a3cd540cf7eac69e684c5de 100644 --- a/lib/workers/repository/updates/branchify.spec.ts +++ b/lib/workers/repository/updates/branchify.spec.ts @@ -23,7 +23,7 @@ describe('workers/repository/updates/branchify', () => { it('returns empty', async () => { flattenUpdates.mockResolvedValueOnce([]); const res = await branchifyUpgrades(config, {}); - expect(res.branches).toEqual([]); + expect(res.branches).toBeEmptyArray(); }); it('returns one branch if one input', async () => { flattenUpdates.mockResolvedValueOnce([ diff --git a/lib/workers/repository/updates/generate.spec.ts b/lib/workers/repository/updates/generate.spec.ts index bc6cdbd97f55d5b0d783955f87de71e908d11b4a..0a767cec1fc6f48cdbd20d7514461548fe867082 100644 --- a/lib/workers/repository/updates/generate.spec.ts +++ b/lib/workers/repository/updates/generate.spec.ts @@ -147,7 +147,7 @@ describe('workers/repository/updates/generate', () => { expect(res.foo).toBe(2); expect(res.groupName).toBeDefined(); expect(res.releaseTimestamp).toEqual('2017-02-07T20:01:41+00:00'); - expect(res.automerge).toBe(false); + expect(res.automerge).toBeFalse(); expect(res.constraints).toEqual({ foo: '1.0.0', bar: '2.0.0', @@ -189,7 +189,7 @@ describe('workers/repository/updates/generate', () => { const res = generateBranchConfig(branch); expect(res.foo).toBe(2); expect(res.singleVersion).toBeUndefined(); - expect(res.recreateClosed).toBe(true); + expect(res.recreateClosed).toBeTrue(); expect(res.groupName).toBeDefined(); expect(res.releaseTimestamp).toEqual('2017-02-08T20:01:41+00:00'); }); @@ -227,7 +227,7 @@ describe('workers/repository/updates/generate', () => { const res = generateBranchConfig(branch); expect(res.foo).toBe(2); expect(res.singleVersion).toBeUndefined(); - expect(res.recreateClosed).toBe(true); + expect(res.recreateClosed).toBeTrue(); expect(res.groupName).toBeDefined(); }); it('fixes different messages', () => { @@ -427,7 +427,7 @@ describe('workers/repository/updates/generate', () => { }, ]; const res = generateBranchConfig(branch); - expect(res.recreateClosed).toBe(false); + expect(res.recreateClosed).toBeFalse(); expect(res.groupName).toBeUndefined(); // FIXME: explicit assert condition expect(generateBranchConfig(branch)).toMatchSnapshot(); @@ -570,7 +570,7 @@ describe('workers/repository/updates/generate', () => { }, ]; const res = generateBranchConfig(branch); - expect(res.pendingChecks).toBe(true); + expect(res.pendingChecks).toBeTrue(); expect(res.upgrades).toHaveLength(2); }); it('filters pendingChecks', () => { diff --git a/package.json b/package.json index a34b366e4e241eacdf62f382a98de77250714709..4242c6840d8453a131085f67198da2772b39e542 100644 --- a/package.json +++ b/package.json @@ -250,6 +250,7 @@ "eslint-plugin-import": "2.25.2", "eslint-plugin-jest": "24.7.0", "eslint-plugin-promise": "5.1.0", + "expect-more-jest": "5.4.0", "glob": "7.2.0", "graphql": "15.6.1", "husky": "7.0.2", diff --git a/test/setup.ts b/test/setup.ts index 2db5c830f2249dc40ec3c58c9de8a6da24dc0599..c08c2d79e468d870c686c73c0f1906e158e24905 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,5 +1,6 @@ // Check for missing or pending http mocks import './http-mock'; +import 'expect-more-jest'; jest.mock('../lib/platform', () => ({ platform: jest.createMockFromModule('../lib/platform/github'), diff --git a/yarn.lock b/yarn.lock index cb60fda245b8c84ed17245332a59dcca28fdbae2..df2bed22bfb6fd4f96f275ae21293df72b13f767 100644 --- a/yarn.lock +++ b/yarn.lock @@ -988,7 +988,7 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== -"@isaacs/string-locale-compare@*", "@isaacs/string-locale-compare@^1.0.1": +"@isaacs/string-locale-compare@^1.0.1", "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== @@ -1214,7 +1214,7 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.2.5": +"@jest/types@^27.0.6", "@jest/types@^27.2.5": version "27.2.5" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ== @@ -1263,20 +1263,20 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/arborist@*", "@npmcli/arborist@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-3.0.0.tgz#fcd2416dc153aefa1e3ca5436eacbf4de5f09662" - integrity sha512-zAmy3LwjQ81HKYA8Z4Uao8Re+ydiad2sDKI+PKe2loqDXnFolm69LIGmHp8+7BPWX1CAJCs1/XRNTLdXmuMZZw== +"@npmcli/arborist@^2.3.0", "@npmcli/arborist@^2.5.0", "@npmcli/arborist@^2.9.0": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.10.0.tgz#424c2d73a7ae59c960b0cc7f74fed043e4316c2c" + integrity sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA== dependencies: "@isaacs/string-locale-compare" "^1.0.1" "@npmcli/installed-package-contents" "^1.0.7" "@npmcli/map-workspaces" "^1.0.2" - "@npmcli/metavuln-calculator" "^2.0.0" + "@npmcli/metavuln-calculator" "^1.1.0" "@npmcli/move-file" "^1.1.0" "@npmcli/name-from-folder" "^1.0.1" "@npmcli/node-gyp" "^1.0.1" "@npmcli/package-json" "^1.0.1" - "@npmcli/run-script" "^2.0.0" + "@npmcli/run-script" "^1.8.2" bin-links "^2.2.1" cacache "^15.0.3" common-ancestor-path "^1.0.1" @@ -1288,7 +1288,7 @@ npm-package-arg "^8.1.5" npm-pick-manifest "^6.1.0" npm-registry-fetch "^11.0.0" - pacote "^12.0.0" + pacote "^11.3.5" parse-conflict-json "^1.1.1" proc-log "^1.0.0" promise-all-reject-late "^1.0.0" @@ -1301,12 +1301,17 @@ treeverse "^1.0.4" walk-up-path "^1.0.0" -"@npmcli/ci-detect@*", "@npmcli/ci-detect@^1.3.0": +"@npmcli/ci-detect@^1.2.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" + integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== + +"@npmcli/ci-detect@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== -"@npmcli/config@*": +"@npmcli/config@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-2.3.0.tgz#364fbe942037e562a832a113206e14ccb651f7bc" integrity sha512-yjiC1xv7KTmUTqfRwN2ZL7BHV160ctGF0fLXmKkkMXj40UOvBe45Apwvt5JsFRtXSoHkUYy1ouzscziuWNzklg== @@ -1354,7 +1359,7 @@ npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -"@npmcli/map-workspaces@*", "@npmcli/map-workspaces@^1.0.2": +"@npmcli/map-workspaces@^1.0.2", "@npmcli/map-workspaces@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz#915708b55afa25e20bc2c14a766c124c2c5d4cab" integrity sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q== @@ -1364,14 +1369,13 @@ minimatch "^3.0.4" read-package-json-fast "^2.0.1" -"@npmcli/metavuln-calculator@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz#70937b8b5a5cad5c588c8a7b38c4a8bd6f62c84c" - integrity sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg== +"@npmcli/metavuln-calculator@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz#2f95ff3c6d88b366dd70de1c3f304267c631b458" + integrity sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ== dependencies: cacache "^15.0.5" - json-parse-even-better-errors "^2.3.1" - pacote "^12.0.0" + pacote "^11.1.11" semver "^7.3.2" "@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": @@ -1392,7 +1396,7 @@ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== -"@npmcli/package-json@*", "@npmcli/package-json@^1.0.1": +"@npmcli/package-json@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" integrity sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg== @@ -1406,17 +1410,7 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@*", "@npmcli/run-script@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" - integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== - dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^8.2.0" - read-package-json-fast "^2.0.1" - -"@npmcli/run-script@^1.8.2": +"@npmcli/run-script@^1.8.2", "@npmcli/run-script@^1.8.3", "@npmcli/run-script@^1.8.4", "@npmcli/run-script@^1.8.6": version "1.8.6" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== @@ -1529,7 +1523,6 @@ "@renovate/eslint-plugin@https://github.com/renovatebot/eslint-plugin#v0.0.3": version "0.0.1" - uid c88253170ce9e9248bc0653197ed2ff1ecf41ac1 resolved "https://github.com/renovatebot/eslint-plugin#c88253170ce9e9248bc0653197ed2ff1ecf41ac1" "@renovate/pep440@1.0.0": @@ -2295,7 +2288,7 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -abbrev@*, abbrev@1: +abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -2428,12 +2421,12 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansicolors@*, ansicolors@~0.3.2: +ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -ansistyles@*: +ansistyles@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= @@ -2461,7 +2454,7 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -archy@*: +archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= @@ -2895,7 +2888,7 @@ bunyan@1.8.15: mv "~2" safe-json-stringify "~1" -cacache@*, cacache@15.3.0, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: +cacache@15.3.0, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -3002,7 +2995,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@*, chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0: +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3052,7 +3045,7 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -chownr@*, chownr@^2.0.0: +chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== @@ -3099,15 +3092,15 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-columns@*: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" - integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== +cli-columns@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" + integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= dependencies: - string-width "^4.2.3" - strip-ansi "^6.0.1" + string-width "^2.0.0" + strip-ansi "^3.0.1" -cli-table3@*, cli-table3@^0.6.0: +cli-table3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== @@ -3207,7 +3200,7 @@ colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -columnify@*: +columnify@~1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= @@ -4207,6 +4200,32 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect-more-jest@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/expect-more-jest/-/expect-more-jest-5.4.0.tgz#643c7518d30593fa1639d51509a9faa34013de97" + integrity sha512-mbipCcBE5ryzcsuF3sIghMgcNfI9DXtlfoi0Ah0zRMFkKwH2WxUgp93YorQRMIusMohcfy9jR65GrzR6tVb2IQ== + dependencies: + expect "27.0.6" + expect-more "1.2.0" + jest-matcher-utils "27.0.6" + +expect-more@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/expect-more/-/expect-more-1.2.0.tgz#cc7b3b6ad194ee54deaf601cf5c80449ed7a276d" + integrity sha512-AVnjc5oh2jgiJjOrjbiKxbwLlNA/zsl2044Nbd09H4+2KwThtSLYKhdOusLYOrcToFAa2uBOWR1ExCN4kOWgbQ== + +expect@27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" + integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw== + dependencies: + "@jest/types" "^27.0.6" + ansi-styles "^5.0.0" + jest-get-type "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-regex-util "^27.0.6" + expect@^24.1.0: version "24.9.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" @@ -4322,7 +4341,7 @@ fast-xml-parser@3.19.0: resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== -fastest-levenshtein@*: +fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== @@ -4653,7 +4672,7 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob@*, glob@7.2.0, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.2.0, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -4737,7 +4756,7 @@ got@11.8.2, got@^11.7.0: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@*, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.8: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -4877,18 +4896,18 @@ hook-std@^2.0.0: resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== -hosted-git-info@*, hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1, hosted-git-info@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== dependencies: lru-cache "^6.0.0" -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -5056,7 +5075,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@*, ini@2.0.0, ini@^2.0.0: +ini@2.0.0, ini@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== @@ -5066,7 +5085,7 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@*: +init-package-json@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== @@ -5187,7 +5206,7 @@ is-ci@^3.0.0: dependencies: ci-info "^3.1.1" -is-cidr@*: +is-cidr@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814" integrity sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA== @@ -5625,7 +5644,7 @@ jest-diff@^27.0.0: jest-get-type "^27.0.6" pretty-format "^27.2.5" -jest-diff@^27.3.1: +jest-diff@^27.0.6, jest-diff@^27.3.1: version "27.3.1" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.3.1.tgz#d2775fea15411f5f5aeda2a5e02c2f36440f6d55" integrity sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ== @@ -5776,6 +5795,16 @@ jest-leak-detector@^27.3.1: jest-get-type "^27.3.1" pretty-format "^27.3.1" +jest-matcher-utils@27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" + integrity sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA== + dependencies: + chalk "^4.0.0" + jest-diff "^27.0.6" + jest-get-type "^27.0.6" + pretty-format "^27.0.6" + jest-matcher-utils@^22.0.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" @@ -5795,7 +5824,7 @@ jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-matcher-utils@^27.3.1: +jest-matcher-utils@^27.0.6, jest-matcher-utils@^27.3.1: version "27.3.1" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz#257ad61e54a6d4044e080d85dbdc4a08811e9c1c" integrity sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w== @@ -5819,7 +5848,7 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^27.3.1: +jest-message-util@^27.0.6, jest-message-util@^27.3.1: version "27.3.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.3.1.tgz#f7c25688ad3410ab10bcb862bcfe3152345c6436" integrity sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg== @@ -6165,7 +6194,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@*, json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -6291,7 +6320,7 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libnpmaccess@*: +libnpmaccess@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== @@ -6301,7 +6330,7 @@ libnpmaccess@*: npm-package-arg "^8.1.2" npm-registry-fetch "^11.0.0" -libnpmdiff@*: +libnpmdiff@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-2.0.4.tgz#bb1687992b1a97a8ea4a32f58ad7c7f92de53b74" integrity sha512-q3zWePOJLHwsLEUjZw3Kyu/MJMYfl4tWCg78Vl6QGSfm4aXBUSVzMzjJ6jGiyarsT4d+1NH4B1gxfs62/+y9iQ== @@ -6315,31 +6344,31 @@ libnpmdiff@*: pacote "^11.3.0" tar "^6.1.0" -libnpmexec@*: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-3.0.0.tgz#ab1a32403363d837df97807cf142e6d1c768db3b" - integrity sha512-qyt0gSMSHeHIqb/a+vcryfw3VXfNNgle8jK9QVnrNQAyoDvyVQ6auyoB3ycqWPIl2swTEXPEVremSUaDzOiEgw== +libnpmexec@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-2.0.1.tgz#729ae3e15a3ba225964ccf248117a75d311eeb73" + integrity sha512-4SqBB7eJvJWmUKNF42Q5qTOn20DRjEE4TgvEh2yneKlAiRlwlhuS9MNR45juWwmoURJlf2K43bozlVt7OZiIOw== dependencies: - "@npmcli/arborist" "^3.0.0" + "@npmcli/arborist" "^2.3.0" "@npmcli/ci-detect" "^1.3.0" - "@npmcli/run-script" "^2.0.0" + "@npmcli/run-script" "^1.8.4" chalk "^4.1.0" mkdirp-infer-owner "^2.0.0" npm-package-arg "^8.1.2" - pacote "^12.0.0" + pacote "^11.3.1" proc-log "^1.0.0" read "^1.0.7" read-package-json-fast "^2.0.2" walk-up-path "^1.0.0" -libnpmfund@*: - version "2.0.0" - resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-2.0.0.tgz#2e9f683d6456604e57d83f8cda7db02cfda5b7df" - integrity sha512-A89Mp+VcbVS2IzXlTJxcAEJEulVX7pvCB+NFqWKRIaqIncwGku1u8b0h8Qp9IUHrvzzzJiJxJmMYCXmlf6xFxw== +libnpmfund@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-1.1.0.tgz#ee91313905b3194b900530efa339bc3f9fc4e5c4" + integrity sha512-Kfmh3pLS5/RGKG5WXEig8mjahPVOxkik6lsbH4iX0si1xxNi6eeUh/+nF1MD+2cgalsQif3O5qyr6mNz2ryJrQ== dependencies: - "@npmcli/arborist" "^3.0.0" + "@npmcli/arborist" "^2.5.0" -libnpmhook@*: +libnpmhook@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-6.0.3.tgz#1d7f0d7e6a7932fbf7ce0881fdb0ed8bf8748a30" integrity sha512-3fmkZJibIybzmAvxJ65PeV3NzRc0m4xmYt6scui5msocThbEp4sKFT80FhgrCERYDjlUuFahU6zFNbJDHbQ++g== @@ -6347,7 +6376,7 @@ libnpmhook@*: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmorg@*: +libnpmorg@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-2.0.3.tgz#4e605d4113dfa16792d75343824a0625c76703bc" integrity sha512-JSGl3HFeiRFUZOUlGdiNcUZOsUqkSYrg6KMzvPZ1WVZ478i47OnKSS0vkPmX45Pai5mTKuwIqBMcGWG7O8HfdA== @@ -6355,16 +6384,16 @@ libnpmorg@*: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmpack@*: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-3.0.0.tgz#b1cdf182106bc0d25910e79bb5c9b6c23cd71670" - integrity sha512-W6lt4blkR9YXu/qOrFknfnKBajz/1GvAc5q1XcWTGuBJn2DYKDWHtA7x1fuMQdn7hKDBOPlZ/Aqll+ZvAnrM6g== +libnpmpack@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-2.0.1.tgz#d3eac25cc8612f4e7cdeed4730eee339ba51c643" + integrity sha512-He4/jxOwlaQ7YG7sIC1+yNeXeUDQt8RLBvpI68R3RzPMZPa4/VpxhlDo8GtBOBDYoU8eq6v1wKL38sq58u4ibQ== dependencies: - "@npmcli/run-script" "^2.0.0" + "@npmcli/run-script" "^1.8.3" npm-package-arg "^8.1.0" - pacote "^12.0.0" + pacote "^11.2.6" -libnpmpublish@*: +libnpmpublish@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== @@ -6375,14 +6404,14 @@ libnpmpublish@*: semver "^7.1.3" ssri "^8.0.1" -libnpmsearch@*: +libnpmsearch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-3.1.2.tgz#aee81b9e4768750d842b627a3051abc89fdc15f3" integrity sha512-BaQHBjMNnsPYk3Bl6AiOeVuFgp72jviShNBw5aHaHNKWqZxNi38iVNoXbo6bG/Ccc/m1To8s0GtMdtn6xZ1HAw== dependencies: npm-registry-fetch "^11.0.0" -libnpmteam@*: +libnpmteam@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-2.0.4.tgz#9dbe2e18ae3cb97551ec07d2a2daf9944f3edc4c" integrity sha512-FPrVJWv820FZFXaflAEVTLRWZrerCvfe7ZHSMzJ/62EBlho2KFlYKjyNEsPW3JiV7TLSXi3vo8u0gMwIkXSMTw== @@ -6390,13 +6419,13 @@ libnpmteam@*: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmversion@*: - version "2.0.1" - resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-2.0.1.tgz#20b1425d88cd99c66806a54b458d2d654066b550" - integrity sha512-uFGtNTe/m0GOIBQCE4ryIsgGNJdeShW+qvYtKNLCCuiG7JY3YEslL/maFFZbaO4wlQa/oj1t0Bm9TyjahvtgQQ== +libnpmversion@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-1.2.1.tgz#689aa7fe0159939b3cbbf323741d34976f4289e9" + integrity sha512-AA7x5CFgBFN+L4/JWobnY5t4OAHjQuPbAwUYJ7/NtHuyLut5meb+ne/aj0n7PWNiTGCJcRw/W6Zd2LoLT7EZuQ== dependencies: "@npmcli/git" "^2.0.7" - "@npmcli/run-script" "^2.0.0" + "@npmcli/run-script" "^1.8.4" json-parse-even-better-errors "^2.3.1" semver "^7.3.5" stringify-package "^1.0.1" @@ -6539,13 +6568,13 @@ make-error@1.x, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@*, make-fetch-happen@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== +make-fetch-happen@^8.0.14: + version "8.0.14" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" + integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== dependencies: agentkeepalive "^4.1.3" - cacache "^15.2.0" + cacache "^15.0.5" http-cache-semantics "^4.1.0" http-proxy-agent "^4.0.1" https-proxy-agent "^5.0.0" @@ -6556,18 +6585,17 @@ make-fetch-happen@*, make-fetch-happen@^9.0.1: minipass-fetch "^1.3.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" - negotiator "^0.6.2" promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" + socks-proxy-agent "^5.0.0" ssri "^8.0.0" -make-fetch-happen@^8.0.14: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" - cacache "^15.0.5" + cacache "^15.2.0" http-cache-semantics "^4.1.0" http-proxy-agent "^4.0.1" https-proxy-agent "^5.0.0" @@ -6578,8 +6606,9 @@ make-fetch-happen@^8.0.14: minipass-fetch "^1.3.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" + negotiator "^0.6.2" promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" + socks-proxy-agent "^6.0.0" ssri "^8.0.0" makeerror@1.0.x: @@ -6917,7 +6946,7 @@ minipass-json-stream@^1.0.1: jsonparse "^1.3.1" minipass "^3.0.0" -minipass-pipeline@*, minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -6931,7 +6960,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@*, minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.1.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== @@ -6954,7 +6983,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-infer-owner@*, mkdirp-infer-owner@^2.0.0: +mkdirp-infer-owner@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== @@ -6963,11 +6992,6 @@ mkdirp-infer-owner@*, mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -6975,6 +6999,11 @@ mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mockdate@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-3.0.5.tgz#789be686deb3149e7df2b663d2bc4392bc3284fb" @@ -7000,11 +7029,6 @@ mri@^1.1.5: resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== -ms@*, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -7015,6 +7039,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multimatch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -7121,36 +7150,36 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-gyp@*, node-gyp@^8.0.0, node-gyp@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.2.0.tgz#ef509ccdf5cef3b4d93df0690b90aa55ff8c7977" - integrity sha512-KG8SdcoAnw2d6augGwl1kOayALUrXW/P2uOAm2J2+nmW/HjZo7y+8TDg7LejxbekOOSv3kzhq+NSUYkIDAX8eA== +node-gyp@^7.1.0, node-gyp@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== dependencies: env-paths "^2.2.0" glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^8.0.14" + graceful-fs "^4.2.3" nopt "^5.0.0" npmlog "^4.1.2" + request "^2.88.2" rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" + semver "^7.3.2" + tar "^6.0.2" which "^2.0.2" -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== +node-gyp@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.2.0.tgz#ef509ccdf5cef3b4d93df0690b90aa55ff8c7977" + integrity sha512-KG8SdcoAnw2d6augGwl1kOayALUrXW/P2uOAm2J2+nmW/HjZo7y+8TDg7LejxbekOOSv3kzhq+NSUYkIDAX8eA== dependencies: env-paths "^2.2.0" glob "^7.1.4" - graceful-fs "^4.2.3" + graceful-fs "^4.2.6" + make-fetch-happen "^8.0.14" nopt "^5.0.0" npmlog "^4.1.2" - request "^2.88.2" rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" + semver "^7.3.5" + tar "^6.1.2" which "^2.0.2" node-html-parser@3.3.6: @@ -7184,7 +7213,7 @@ node.extend@^2.0.0: has "^1.0.3" is "^3.2.1" -nopt@*, nopt@^5.0.0: +nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== @@ -7221,7 +7250,7 @@ normalize-url@^6.0.0, normalize-url@^6.0.1, normalize-url@^6.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-audit-report@*: +npm-audit-report@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-2.1.5.tgz#a5b8850abe2e8452fce976c8960dd432981737b5" integrity sha512-YB8qOoEmBhUH1UJgh1xFAv7Jg1d+xoNhsDYiFQlEFThEBui0W1vIz2ZK6FVg4WZjwEdl7uBQlm1jy3MUfyHeEw== @@ -7235,7 +7264,7 @@ npm-bundled@^1.1.1: dependencies: npm-normalize-package-bin "^1.0.1" -npm-install-checks@*, npm-install-checks@^4.0.0: +npm-install-checks@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== @@ -7247,7 +7276,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@*, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -7266,7 +7295,7 @@ npm-packlist@^2.1.4: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@*, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -7276,14 +7305,14 @@ npm-pick-manifest@*, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pic npm-package-arg "^8.1.2" semver "^7.3.4" -npm-profile@*: +npm-profile@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-5.0.4.tgz#73e5bd1d808edc2c382d7139049cc367ac43161b" integrity sha512-OKtU7yoAEBOnc8zJ+/uo5E4ugPp09sopo+6y1njPp+W99P8DvQon3BJYmpvyK2Bf1+3YV5LN1bvgXRoZ1LUJBA== dependencies: npm-registry-fetch "^11.0.0" -npm-registry-fetch@*, npm-registry-fetch@^11.0.0: +npm-registry-fetch@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== @@ -7317,7 +7346,7 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npm-user-validate@*: +npm-user-validate@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.1.tgz#31428fc5475fe8416023f178c0ab47935ad8c561" integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw== @@ -7327,86 +7356,76 @@ npm@^7.0.0: resolved "https://registry.yarnpkg.com/npm/-/npm-7.24.2.tgz#861117af8241bea592289f22407230e5300e59ca" integrity sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ== dependencies: - "@isaacs/string-locale-compare" "*" - "@npmcli/arborist" "*" - "@npmcli/ci-detect" "*" - "@npmcli/config" "*" - "@npmcli/map-workspaces" "*" - "@npmcli/package-json" "*" - "@npmcli/run-script" "*" - abbrev "*" - ansicolors "*" - ansistyles "*" - archy "*" - cacache "*" - chalk "*" - chownr "*" - cli-columns "*" - cli-table3 "*" - columnify "*" - fastest-levenshtein "*" - glob "*" - graceful-fs "*" - hosted-git-info "*" - ini "*" - init-package-json "*" - is-cidr "*" - json-parse-even-better-errors "*" - libnpmaccess "*" - libnpmdiff "*" - libnpmexec "*" - libnpmfund "*" - libnpmhook "*" - libnpmorg "*" - libnpmpack "*" - libnpmpublish "*" - libnpmsearch "*" - libnpmteam "*" - libnpmversion "*" - make-fetch-happen "*" - minipass "*" - minipass-pipeline "*" - mkdirp "*" - mkdirp-infer-owner "*" - ms "*" - node-gyp "*" - nopt "*" - npm-audit-report "*" - npm-install-checks "*" - npm-package-arg "*" - npm-pick-manifest "*" - npm-profile "*" - npm-registry-fetch "*" - npm-user-validate "*" - npmlog "*" - opener "*" - pacote "*" - parse-conflict-json "*" - qrcode-terminal "*" - read "*" - read-package-json "*" - read-package-json-fast "*" - readdir-scoped-modules "*" - rimraf "*" - semver "*" - ssri "*" - tar "*" - text-table "*" - tiny-relative-date "*" - treeverse "*" - validate-npm-package-name "*" - which "*" - write-file-atomic "*" - -npmlog@*: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/arborist" "^2.9.0" + "@npmcli/ci-detect" "^1.2.0" + "@npmcli/config" "^2.3.0" + "@npmcli/map-workspaces" "^1.0.4" + "@npmcli/package-json" "^1.0.1" + "@npmcli/run-script" "^1.8.6" + abbrev "~1.1.1" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + archy "~1.0.0" + cacache "^15.3.0" + chalk "^4.1.2" + chownr "^2.0.0" + cli-columns "^3.1.2" + cli-table3 "^0.6.0" + columnify "~1.5.4" + fastest-levenshtein "^1.0.12" + glob "^7.2.0" + graceful-fs "^4.2.8" + hosted-git-info "^4.0.2" + ini "^2.0.0" + init-package-json "^2.0.5" + is-cidr "^4.0.2" + json-parse-even-better-errors "^2.3.1" + libnpmaccess "^4.0.2" + libnpmdiff "^2.0.4" + libnpmexec "^2.0.1" + libnpmfund "^1.1.0" + libnpmhook "^6.0.2" + libnpmorg "^2.0.2" + libnpmpack "^2.0.1" + libnpmpublish "^4.0.1" + libnpmsearch "^3.1.1" + libnpmteam "^2.0.3" + libnpmversion "^1.2.1" + make-fetch-happen "^9.1.0" + minipass "^3.1.3" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + mkdirp-infer-owner "^2.0.0" + ms "^2.1.2" + node-gyp "^7.1.2" + nopt "^5.0.0" + npm-audit-report "^2.1.5" + npm-install-checks "^4.0.0" + npm-package-arg "^8.1.5" + npm-pick-manifest "^6.1.1" + npm-profile "^5.0.3" + npm-registry-fetch "^11.0.0" + npm-user-validate "^1.0.1" + npmlog "^5.0.1" + opener "^1.5.2" + pacote "^11.3.5" + parse-conflict-json "^1.1.1" + qrcode-terminal "^0.12.0" + read "~1.0.7" + read-package-json "^4.1.1" + read-package-json-fast "^2.0.3" + readdir-scoped-modules "^1.1.0" + rimraf "^3.0.2" + semver "^7.3.5" + ssri "^8.0.1" + tar "^6.1.11" + text-table "~0.2.0" + tiny-relative-date "^1.3.0" + treeverse "^1.0.4" + validate-npm-package-name "~3.0.0" + which "^2.0.2" + write-file-atomic "^3.0.3" npmlog@^4.1.2: version "4.1.2" @@ -7418,6 +7437,16 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + nth-check@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -7527,7 +7556,7 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -opener@*: +opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== @@ -7689,32 +7718,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pacote@*, pacote@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.0.tgz#5bf4491f3301ffe459290b26a518bf536e8bcc52" - integrity sha512-5DnYqZU0w7GIskuc5yXii1kKpQS2fsaxCaI0FXRsMULXB06lXnZpRdV7JC1TTcQN5uy62h4VWS4WMPYGWu3MYg== - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^2.0.0" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" - promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" - -pacote@^11.3.0: +pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1, pacote@^11.3.5: version "11.3.5" resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== @@ -7746,7 +7750,7 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-conflict-json@*, parse-conflict-json@^1.1.1: +parse-conflict-json@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz#54ec175bde0f2d70abf6be79e0e042290b86701b" integrity sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw== @@ -7986,7 +7990,7 @@ pretty-format@^27.0.0, pretty-format@^27.2.5: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^27.3.1: +pretty-format@^27.0.6, pretty-format@^27.3.1: version "27.3.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA== @@ -8116,7 +8120,7 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qrcode-terminal@*: +qrcode-terminal@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== @@ -8192,7 +8196,7 @@ read-cmd-shim@^2.0.0: resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -8200,7 +8204,7 @@ read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@ json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-package-json@*, read-package-json@^4.1.1: +read-package-json@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== @@ -8238,7 +8242,7 @@ read-pkg@^5.0.0, read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@*, read@1, read@^1.0.7, read@~1.0.1: +read@1, read@^1.0.7, read@~1.0.1, read@~1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= @@ -8267,7 +8271,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdir-scoped-modules@*, readdir-scoped-modules@^1.1.0: +readdir-scoped-modules@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -8496,7 +8500,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@*, rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -8631,18 +8635,18 @@ semver-utils@1.1.4: resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== -semver@*, semver@7.3.5, semver@7.x, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +"semver@2 || 3 || 4 || 5", semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.3.5, semver@7.x, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -8970,7 +8974,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@*, ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== @@ -9050,7 +9054,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2": +"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2", string-width@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -9228,7 +9232,7 @@ tar-stream@^2.0.1: inherits "^2.0.3" readable-stream "^3.1.1" -tar@*, tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -9278,7 +9282,7 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@*, text-table@^0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -9315,7 +9319,7 @@ through@2, "through@>=2.2.7 <3": resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tiny-relative-date@*: +tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== @@ -9415,7 +9419,7 @@ treeify@^1.1.0: resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== -treeverse@*, treeverse@^1.0.4: +treeverse@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== @@ -9780,7 +9784,7 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@*, validate-npm-package-name@3.0.0, validate-npm-package-name@^3.0.0: +validate-npm-package-name@3.0.0, validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= @@ -9902,13 +9906,6 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which@*, which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -9916,6 +9913,13 @@ which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0, wide-align@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -9947,7 +9951,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@*, write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==